基于51单片机光电对管智能小车从入门到精通全教程分解
- 格式:doc
- 大小:3.19 MB
- 文档页数:18
基于51单片机红外无线遥控智能小车控制设计摘要:本文利用51单片机设计了一款具有红外无线遥控功能的智能小车控制系统。
该系统基于红外技术,实现了对智能小车的远程控制。
通过建立遥控信号传输模型和小车控制模块,实现了智能小车的实时运动控制,包括前进、后退、左转、右转等操作。
本文详细介绍了系统设计方案、硬件设计和软件设计,通过实验验证,证明该系统能够稳定地实现智能小车的远程控制,具有一定的应用价值和推广前景。
关键词:51单片机;红外无线遥控;智能小车控制;遥控信号传输模型Abstract:In this paper, a smart car control system with infrared wireless remote control function based on 51 single-chip microcomputer is designed. The system is based on infrared technology, which realizes the remote control of the smart car. By establishing the remote control signal transmission model and the car control module, real-time motion control of the smart car, including forward, backward, turning left and turning right, is realized. This paper introduces the system design scheme, hardware design and software design in detail. Through experiments, it is proved that the system can stably realize the remote control of the smart car, and has certain application value and promotion prospects.Keywords:51 single-chip microcomputer; infrared wireless remote control; smart car control; remote control signaltransmission model1. 引言智能小车控制系统是一种目前比较受关注的智能化系统,在智能出行和智慧交通中有着广泛的应用。
12技术应用卫星电视与宽带多媒体基于51单片机的智能循迹避障遥控小车■空军预警学院 :谢菁【摘要】随着现代科技的迅速发展,智能化小车逐渐被应用到更多领域。
本设计的智能小车采用STC12C5A60S2单片机为主控芯片,以Keil μVision4软件为开发平台,经过软、硬件综合设计,小车可以实现红外遥控、红外循迹和超声波避障等功能。
【关键词】STC12C5A60S2单片机;红外遥控;直流电机;Keil μVision4引言目前,智能车发展速度迅猛,是融合了计算机、造型技术、传感技术、电子、机械、控制、人工智能等多个学科交叉的科技创新技术,在各个领域扮演着重要角色。
同时,在国家级、省级电子设计竞赛以及其它创新设计竞赛中几乎每次都能找到智能车类型题目的踪影,并且全国各类高校对该方向的题目研究也非常重视。
因此,具有广阔的应用前景和较大的研究意义。
在实践过程中,熟悉以单片机为核心控制芯片,采用智能控制算法实现小车的遥控、循迹和避障等功能。
一、总体方案设计本次设计采取的主控芯片是宏晶科技公司生产的STC12C5A60S2单片机。
硬件电路主要由五部分组成,分别为:单片机主控模块,电源模块、电机驱动模块、红外遥控模块、循迹检测模块和超声波避障模块。
如图1所示。
通过红外遥控系统的编/解码专用集成电路芯片来进行遥控操作;利用红外收发管,根据红外信号对不同颜色产生不同反射系数的原理,根据接收管输出电压的变化,单片机驱动直流电机来确定小车行走方向,进而实现循迹功能;利用超声波测量小车与障碍物之间的距离,再通过舵机控制超声波模块对不同方向的障碍物进行探测,将测试数据传送给单片机,单片机就可以根据传感器发来的信号发出命令让小车开始改变原始的方向,从而实现避障功能。
二、系统硬件部分(1)单片机控制模块由STC12C5A60S2单片机构成的最小应用系统如图2所示,主要由电源电路、复位电路、振荡电路和单片机4图1 系统总框图图2 单片机最小系统原理图13技术应用卫星电视与宽带多媒体个部分组成。
基于80C51的电动智能单片机摘要80C51单片机是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。
这里介绍的是如何用80C51单片机来实现长春工业大学的毕业设计,该设计是结合科研项目而确定的设计类课题。
本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。
整个系统的电路结构简单,可靠性能高。
实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。
采用的技术主要有:(1)通过编程来控制小车的速度;(2)传感器的有效应用;(3)新型显示芯片的采用.关键词80C51单片机、智能、光电检测器、PWM调速、电动小车Design and create an intelligence electricity motive small carAbstract80C51 is a 8 bit single chip computer. Its easily using and multi-function suffer large users. This article introduces the CCUT graduation design with the 80C51 single chip computer. This design combines with scientific research object. This system regards the request of the topic, adopting 80C51 for controlling core, super sonic sensor for test the hinder. It can run in a high and a low speed or stop automatically. It also can record the time, distance and the speed or searching light and mark automatically the electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyze.The adoption of technique as:(1)Reduce the speed by program the engine;(2)Efficient application of the sensor;(3)The adoption of the new display chip.Keywords 80C51 single chip computer, light electricity detector, PWM speed adjusting, Electricity motive small car目录第一章前言 (1)第二章方案设计与论证 (3)一直流调速系统 (3)二检测系统 (4)三显示电路 (9)四系统原理图 (9)第三章硬件设计 (10)一 80C51单片机硬件结构 (10)二最小应用系统设计 (11)三前向通道设计 (12)四后向通道设计 (15)五显示电路设计 (17)第四章软件设计 (20)一主程序设计 (20)二显示子程序设计 (24)三避障子程序设计 (25)四软件抗干扰技术 (26)五“看门狗”技术 (28)六可编程逻辑器件 (29)第五章测试数据、测试结果分析及结论 (30)致谢 (31)参考文献 (32)附录A 程序清单 (33)附录B 硬件原理图 (41)第一章前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
基于单片机的智能玩具小车的设计基于单片机的智能玩具小车的设计1. 引言随着科技的进步和人们对智能化产品的需求增加,智能玩具小车成为了孩子们喜爱的玩具之一。
本文介绍了一种基于单片机的智能玩具小车的设计方案,旨在提供给孩子们一种有趣且具有教育意义的玩具。
2. 系统组成该智能玩具小车由四个主要组成部分构成:单片机控制模块、传感器模块、执行模块和通信模块。
2.1 单片机控制模块单片机控制模块采用高性能的单片机芯片,如STC89C52,作为主控制器。
该芯片具有丰富的IO接口和强大的计算能力,能够准确控制玩具小车的各个功能。
2.2 传感器模块传感器模块采用多种传感器,如红外感应传感器、超声波传感器和灰度传感器等。
红外感应传感器用于检测前方障碍物,超声波传感器用于测量距离,灰度传感器用于检测地面颜色等。
2.3 执行模块执行模块包括直流电机和舵机等。
直流电机用于驱动车轮,控制小车前进、后退和转向;舵机用于控制小车的转向角度。
2.4 通信模块通信模块采用无线通信模块,如蓝牙模块或WIFI模块,用于与智能手机或电脑等设备进行通信。
通过手机上的APP或电脑上的软件,用户可以实现对智能玩具小车的远程控制和交互。
3. 系统功能设计3.1 遥控功能智能玩具小车可以通过手机APP或电脑软件进行远程遥控。
用户可以通过手指在屏幕上滑动或按钮操作来控制小车的方向和速度。
3.2 避障功能利用红外感应传感器和超声波传感器,智能玩具小车可以实现自动避障功能。
当传感器探测到前方有障碍物时,小车会自动停下或转向避开。
3.3 跟随功能通过将传感器模块安装在小车底部,可以实现小车对地面颜色的感知。
小车可以自动跟随一条黑线或白线行驶,增加趣味性和游戏性。
3.4 音乐播放功能智能玩具小车可以配备一个音乐模块,能够播放各种儿童歌曲和故事,使玩车过程更加有趣和生动。
4. 系统实现在搭建智能玩具小车的硬件平台后,需要进行相应的软件开发。
通过编写相应的程序,定义不同的传感器输入信号和执行器控制信号,实现小车的各项功能。
基于51单片机的循迹小车系统设计摘要80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。
在生活中但凡涉及到自动控制的地方都会出现单片机的身影,单片机的应用有利于产品的小型化、智能化,并且能够提高生产效率.这里介绍的是如何用AT89C52单片机来实现小车的循迹功能,该设计是结合科研项目而确定的设计类课题。
本系统以设计题目的要求为目的,采用AT89C52单片机为控制核心,利用红外传感器检测道路上的黑线,控制电动小汽车的自动循迹,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,和寻光功能。
整个系统的电路结构非常简单,可靠性能很高。
实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。
关键词:80C51单片机;电动小车;pwm调速;光电检测;自动调速系统Car tracking system based on microcontrollerAbstract80C51 is a 8 bit single chip computer。
Its easily using and multi—function suffer large users。
In life,whenever it comes to automatic control of the local microcontroller will appear figure, microcontroller applications in favor of product miniaturization,intelligent,and can improve productivity. Here is how to use AT89C52 microcontroller to achieve the car tracking feature, which is designed to determine the combination of scientific research and design class topic.This system design requirements of the subject for the purpose of using AT89C52 microcontroller core,the use of infrared sensors to detect the black line on the road,the automatic tracking control of electric cars,fast low traffic speeds,as well as automatic parking, and can automatically record time ,mileage and speed, and look for the light function.The circuit structureof the entire system is very simple, very high reliability. The test results meet the requirements,the paper focuses on the hardware design and test results of the system analysis.Keywords:80C51 microcontroller;Electric car Pwm speed; A photodetector;Automatic Speed Control System。
开放实验室实验报告题目智能小车指定花式动作院(系)光电工程学院专业测控技术与仪器班级120102姓名张立学号120102121导师蔡荣立2014年12 月16 日一、实验目的1.学习和掌握51系列单片机的基本原理及设计方法;2.了解并大概掌握了51系列单片机智能小车底板的基本原理以及51单片机与底板的线路连接、零部件装配原理;3.熟悉掌握使用keil软件编程控制智能小车的方法,以及用proteus软件对智能小车部分线路功能的调试与仿真优化。
二、实验原理51单片机在执行教程中C语言编好的程序时,通过给芯片L293D 使能端EN1,EN2输入相应的高低电平,使左右电机使能;同时给IN1、IN2输入高低电平,使左电机正反转;给IN3、IN4输入高低电平,使右电机正反转;这样就使左右轮的状态不同,从而通过需要相应的来实现智能车的不同花式动作。
图2.1,其中J1为电源插座,它与电池槽相连接;S1为电源开关;7805图2.1 BST-V51智能小车底板供电模块原理图为稳压IC(小车供电为两节3.7V供电,即Vcc为7.4V,因为小车上面很多元器件都是5V供电的,所以用7805把电压稳定在5V);电源指示灯LED,当输出为5V时点亮。
图2.2,其中左边1、3、5、7脚连接Vcc,右边2、4、6、8脚连接GND。
图2.2 供电口原理图图2.3,L293D为电机驱动芯片,其中EN1,EN2为左右电机使能端,当输入为高电平时,才能控制电机,通过P1.4和P1.5接到单片机开发板上,通过51单片机芯片为EN1,EN2加使能或者使不能信号(当EN1,EN2悬空时,默认为高电平,即使能);IN1,IN2分别对应左电图2.3 BST-V51智能小车底板电机模块原理图机的正转和反转,分别接到单片机的P1.2和P1.3;IN3,IN4分别对应右电机的正转和反转;分别接到单片机P1.6和P1.7;OUT1、OUT2控制左电机,接在P5的ML1,ML2;OUT3、OUT4控制右电机,接在P6的MR1,MR2;GND接地。
沈阳理工大学课程名称:基于单片机智能循迹小车姓名:魏玉柱指导教师:程磊催宁海摘要本文论述了基于单片机的智能循迹小车的控制过程。
智能循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。
智能循迹小车是一个运用传感器、单片机、电机驱动及自动控制等技术来实现按照预先设定的模式下,不受人为管理时能够自动实现循迹导航的高新科技。
该技术已经应用于无人驾驶机动车,无人工厂,仓库,服务机器人等多种领域。
本设计采用STC89C52单片机作为小车的控制核心;采用TCRT5000红外反射式开关传感器作为小车的循迹模块来识别白色路面中央的黑色引导线,采集信号并将信号转换为能被单片机识别的数字信号;采用驱动芯片L298N构成双H桥控制直流电机,其中软件系统采用C程序,本设计的电路结构简单,容易实现,可靠性高。
关键词:STC89C52 智能循迹小车TCRT5000传感器电机驱动目录1引言 (4)2 需求分析 (4)2.2 循迹小车的发展历程回顾 (5)2.3智能循迹小车的应用 (5)2.4 智能循迹小车研究中的关键技术 (8)3系统设计 (9)4详细设计 (8)4.1 硬件设计 (8)4.1.1电路原理图 (9)4.1.2 器件选择 (10)4.1.2.1 智能循迹小车的主控芯片的选择 (10)4.1.2.2 智能循迹小车电源模块的选择 (10)4.1.2.3 智能循迹小车电机驱动电路的选择 (11)4.1.2.4 智能小车循迹模块的选择 (11)4.1.3 模块设计 (12)4.1.3.1电机驱动模块电路 (12)4.1.3.2光电传感器模块 (12)4.2 软件设计 (14)4.2.1程序流程图 (14)4.2.2实现主要代码 (14)5 实验结果 (16)5.1设计实现 (16)5.2出现的问题和解决的方法 (17)6 结束语 (18)7.参考文献 (19)1引言随着控制技术及计算机技术的发展,寻迹小车系统将在未来工业生产和日常生活中扮演重要的角色。
基于51单片机智能巡线避障小车1系统方案确定及主要元件的选择1.1 系统方案确定本次设计的智能小车实现的基本功能如下:❖实时检测路径,并按照指定路线行驶;❖实时检测障碍物,并躲过继续行驶;❖实时显示当前速度,并显示在lcd1602上为此以AT89C52为主控芯片,主要包括避障模块、电源模块、声控模块、电机驱动模块等,系统框图如图2.3所示。
通过寻迹及避障传感器来采集周围环境信息来反馈给CPU,通过主控的处理,来控制电机的运转,从而实现寻迹与避障,达到智能行驶。
且本设计添加了声控效果,通过声音传感器来对小车发出指令,让其行驶与停止。
为了能够更好地完成本次设计任务,我们采用三轮车,其前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万象轮,起支撑的作用,并通过软件程序控制,与硬件架构相结合,从而实线自动寻迹、避障的功能。
1.2 主要元件的选择1.2.1 主控器按照题目要求,控制器主要用于控制电机,通过相关传感器对路面的轨迹信息进行处理,并将处理信号传输给控制器,然后控制器做出相应的处理,实现电机的前进和后退,保证在允许范围内实线寻迹避障。
方案一:可以采用ARM为系统的控制器,优点是该系统功能强大,片上外设集成度搞密度高,提高了稳定性,系统的处理速度也很高,适合作为大规模实时系统的控制核心。
而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高。
若采用该方案,必将在控制上遇到许许多多不必要增加的难题。
方案二:使用51单片机作为整个智能车系统的核心。
用其控制智能小车,既可以实现预期的性能指标,又能很好的操作改善小车的运行环境,且简单易上手。
对于我们的控制系统,核心主要在于如何实现小车的自动控制,对于这点,单片机就拥有很强的优势——控制简单、方便、快捷,单片机足以应对我们设计需求[5]。
51单片机算术运算功能强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,且价格低廉。
51单片机智能小车前后左右综合运动程序源代码、电路原理图、电路器件表我们控制智能小车运动时:要让智能小车前进只需要让智能小车的4个轮子以同样的速度向前转动;要让智能小车后退只需要让智能小车的4个轮子以同样的速度向后转动;要让智能小车向左转只需要智能小车右侧的2个轮子以同样的速度向前转动而左侧的2个轮子停止转动;要让智能小车向右转只需要智能小车左侧的2个轮子以同样的速度向前转动而右侧的2个轮子停止转动;要让智能小车顺时针转只需要智能小车左侧的2个轮子以同样的速度向前转动而右侧的2个轮子以同样的速度向后转动;要让智能小车逆时针转只需要智能小车右侧的2个轮子以同样的速度向前转动而右侧的2个轮子以同样的速度向后转动。
要让智能小车停车只需要智能小车左侧和右侧的轮子都停止转动。
相关函数如下:void CAR_FORWARD(void){ZUO_MOTOR_ZZ();YOU_MOTOR_ZZ();} //小车前进void CAR_BACK(void){ZUO_MOTOR_FZ();YOU_MOTOR_FZ();} //小车后退void CAR_LEFT(void){ZUO_MOTOR_TZ();YOU_MOTOR_ZZ();} //小车左转void CAR_RIGHT(void){ZUO_MOTOR_ZZ();YOU_MOTOR_TZ();} //小车右转void CAR_CLOCKWISE(void){ZUO_MOTOR_ZZ();YOU_MOTOR_FZ();} //小车顺时针转void CAR_ANTICLOCKWISE(void){ZUO_MOTOR_FZ();YOU_MOTOR_ZZ();} //小车逆时针转void CAR_STOP(void){ZUO_MOTOR_TZ();YOU_MOTOR_TZ();} //小车停止void ZUO_MOTOR_ZZ(void){U6_L293D_In1_In3=1;U6_L293D_In2_In4=0;}//左侧电机正转void ZUO_MOTOR_TZ(void){U6_L293D_In1_In3=0;U6_L293D_In2_In4=0;}//左侧电机停转void ZUO_MOTOR_FZ(void){U6_L293D_In1_In3=0;U6_L293D_In2_In4=1;}//左侧电机反转void YOU_MOTOR_ZZ(void){U7_L293D_In1_In3=0;U7_L293D_In2_In4=1;}//右侧电机正转void YOU_MOTOR_TZ(void){U7_L293D_In1_In3=0;U7_L293D_In2_In4=0;}//右侧电机停转void YOU_MOTOR_FZ(void){U7_L293D_In1_In3=1;U7_L293D_In2_In4=0;}//右侧电机反转接下来,我们看主函数相关的语句,如下:void main(void){while(1){。
基于51单片机的手机蓝牙遥控小车设计(程序元件清单实物图)本人一直想做一个遥控车,终于今天实现了,跟大家分享一下。
一、元件清单1、某宝购买一个智能小车底盘(本人车是四驱的,因此有四个电机,两块亚克力板和一些配件螺丝)2、L298n模块两个(一个298控制两个电机)3、HC-06蓝牙模块4、电池盒跟18650电池3个5、单片机最小系统6、杜邦线至少12根,当然越多越好7、若干根导线(连接电机用的,以及电池盒连到L298N跟单片机)二、制作过程首先,先去了解一下L298N的接线,我当时也是懵逼了好久,反正摸索着也会了,一般店家都有资料。
然后是蓝牙模块的使用,拿到蓝牙模块后,有开发板的话(没有就用单片机的烧录器),先按照TXD接TXD,RXD接RXD,打开电脑的串口助手与蓝牙构建通信,打开AT,发送AT指令集,比如设设波特率,改个名字,改个配对的密码。
但通过蓝牙与单片机连接通信的时候,就是TXD接RXD了。
最后一个就是,本人在接线的时候经常碰壁。
比如,你以为接好的线他其实没接好,根本没通,还是拿万用表B了才知道。
因为本人忘了买电池盒,所以我是用12V的直流电接着的,导致遥控车拖着跟电线。
三、实物图(拖着跟电线以及充电宝供电的车不过我没通电)资料内包括L298N的部分资料,以及蓝牙的说明书(看AT指令集就好)和源程序。
app:单片机源程序如下:1./*手机蓝牙遥控小车 APP可以在应用市场搜蓝牙串口助手2.左转右转大概是90度我的是四驱的,如果是只有一个l298N 的话就把带2的删了3.pwm有十级变速*/4.5.6.#include <reg52.h>7.8.#define Left_moto2_pwm P0_4 //接驱动模块ENA 使能端,输入PWM信号调节速度左后轮9.#define Right_moto2_pwm P0_5 //接驱动模块ENB 右后轮10.#define Left_moto_pwm P1_4 //接驱动模块ENA 使能端,输入PWM信号调节速度左前轮11.#define Right_moto_pwm P1_5 //接驱动模块ENB 右前轮12.#define uchar unsigned char13.#define uint unsigned int14.15.sbit P0_4=P0^4; //定义P0_416.sbit P0_5=P0^5; //定义P0_517.sbit P1_4=P1^4; //定义P1_418.sbit P1_5=P1^5; //定义P1_519.20./*电机驱动IO定义*/21.sbit IN1 = P1^2; //为1 左电机反转前轮22.sbit IN2 = P1^3; //为1 左电机正转前轮23.sbit IN3 = P1^6; //为1 右电机正转前轮24.sbit IN4 = P1^7; //为1 右电机反转前轮25./*sbit EN1 = P1^4; //为1 左电机使能26.sbit EN2 = P1^5; //为1 右电机使能 */27.28.sbit IN5 = P0^2; //为1 左电机反转后轮29.sbit IN6 = P0^3; //为1 左电机正转后轮30.sbit IN7 = P0^6; //为1 右电机正转后轮31.sbit IN8 = P0^7; //为1 右电机反转后轮32./*sbit EN3 = P0^4; //为1 左电机使能后轮33.sbit EN4 = P0^5; //为1 右电机使能后轮 */34.35.bit Right_moto_stop=1;36.bit Left_moto_stop =1;37.unsigned int time=0;38.int pwm=1;39.40.#define left_motor_en EN1 = 1 //左电机使能41.#define left_motor_stops EN1 = 0 //左电机停止42.#define right_motor_en EN2 = 1 //右电机使能43.#define right_motor_stops EN2 = 0 //右电机停止44.45.#define left_motor2_en EN3 = 1 //左电机使能后46.#define left_motor2_stops EN3 = 0 //左电机停止后47.#define right_motor2_en EN4 = 1 //右电机使能后48.#define right_motor2_stops EN4 = 0 //右电机停止后49.50.51.#define left_motor_go IN1 = 0, IN2 = 1//左电机正传52.#define left_motor_back IN1 = 1, IN2 = 0//左电机反转53.#define right_motor_go IN3 = 1, IN4 = 0//右电机正传54.#define right_motor_back IN3 = 0, IN4 = 1//右电机反转55.56.#define left_motor2_go IN5 = 0, IN6 = 1//左电机正传57.#define left_motor2_back IN5 = 1, IN6 = 0//左电机反转58.#define right_motor2_go IN7 = 1, IN8 = 0//右电机正传59.#define right_motor2_back IN7 = 0, IN8 = 1//右电机反转60.61.unsigned char pwm_val_left =0;//变量定义62.unsigned char push_val_left =0;// 左电机占空比N/1063.unsigned char pwm_val_right =0;64.unsigned char push_val_right=0;// 右电机占空比N/1065.66.67.void delay(uint z)68.{69.uint x,y;70.for(x = z; x > 0; x--)71.for(y = 114; y > 0 ; y--);72.}73.74.75.76.//蓝牙初始化77.void UART_INIT()78.{79.SM0 = 0;80.SM1 = 1;//串口工作方式181.REN = 1;//允许串口接收82.EA = 1;//开总中断83.ES = 1;//开串口中断84.TMOD = 0x20;//8位自动重装模式85.TH1 = 0xfd;86.TL1 = 0xfd;//9600波特率87.TR1 = 1;//启动定时器188.}89.90./************************************************************************/91.void run(void) //pwm调速函数92.{93.push_val_left =pwm; //PWM 调节参数1-10 1为最慢,10是最快改这个值可以改变其速度94.push_val_right =pwm; //PWM 调节参数1-10 1为最慢,10是最快改这个值可以改变其速度95.if(pwm==10) pwm=0;96.if(pwm==0&&pwm<0) pwm=0;97.98.}99.100.101./******************************************************** ****************/102./* PWM调制电机转速 */ 103./******************************************************** ****************/104.105.106./* 左侧电机调速 */107./*调节push_val_left的值改变电机转速,占空比 */108.void pwm_out_left_moto(void)109.{110.if(Left_moto_stop)111.{112.if(pwm_val_left<=push_val_left)113.{ Left_moto_pwm=1;114.Left_moto2_pwm=1; }115.else116.{ Left_moto_pwm=0;Left_moto2_pwm=0; }117.118.if(pwm_val_left>=10)119.pwm_val_left=0;120.}121.else { Left_moto_pwm=0;Left_moto2_pwm=0; }122.}123./******************************************************** **********/124./* 右侧电机调速 */125.void pwm_out_right_moto(void)126.{127.if(Right_moto_stop)128.{129.if(pwm_val_right<=push_val_right)130.{ Right_moto_pwm=1;131.Right_moto2_pwm=1; }132.else133.{Right_moto_pwm=0;134.Right_moto2_pwm=0;}135.if(pwm_val_right>=10)136.pwm_val_right=0;137.}138.else {Right_moto_pwm=0;Right_moto2_pwm=0; } 139.}140./***************************************************/141.///*TIMER0中断服务子函数产生PWM信号*/142.void timer0()interrupt 1 using 2143.{144.TH0=0XF8; //1Ms定时145.TL0=0X30;146.time++;147.pwm_val_left++;148.pwm_val_right++;149.pwm_out_left_moto();150.pwm_out_right_moto();151.}152.153.//小车前进154.void forward()155.{156.ET0 = 1;157.run(); //pwm 程序158.left_motor_go; //左电机前进159.right_motor_go; //右电机前进160.left_motor2_go; //左电机前进后轮161.right_motor2_go; //右电机前进后轮162.}163.164.void left_go() //左转165.{166.ET0 = 1;167.run();168.left_motor_back;169.right_motor_go;170.left_motor2_back;171.right_motor2_go;172.delay(700);173.forward();174.}175.//右转176.void right_go()177.{178.ET0 = 1;179.run();180.delay(50);181.right_motor_back;182.left_motor_go;183.right_motor2_back;184.left_motor2_go;185.delay(700);186.forward();187.}188.//小车左转圈189.void left()190.{191.ET0 = 1;192.run();193.delay(50);194.right_motor_go; // 右电机前进195.left_motor_back; // 左电机后退196.right_motor2_go; // 右电机前进197.left_motor2_back; // 左电机后退198.}199.200.//小车右转圈201.void right()202.{203.ET0 = 1;204.run();205.left_motor_go;206.right_motor_back;207.left_motor2_go;208.right_motor2_back; 209.}210.211.//小车后退212.void back()213.{214.ET0 = 1;215.run();216.left_motor_back;217.right_motor_back; 218.left_motor2_back;219.right_motor2_back; 220.}221.222.//小车停止223.void stop()224.{225.ET0 = 0;226.P1=0;227.P0=0;228.}229.230.231.//串口中断232.void UART_SER() interrupt 4 233.{234.if(RI)236.RI = 0;//清除接收标志237.switch(SBUF)238.{239.case 'g': forward(); break;//前进240.case 'b': back(); break;//后退241.case 'l': left(); break;//左转圈242.case 'r': right(); break;//右转圈243.case 's': stop(); break;//停止244.case 'z': left_go(); break;//左转行驶245.case 'y': right_go(); break;//右转行驶246.case 'p': pwm++;break; //加速247.case 'c': pwm--;break; //减速248.}249.250.}251.}252.253.void main()254.{255.TMOD=0X01;256.TH0= 0XF8; //1ms定时257.TL0= 0X30;258.TR0= 1;259.ET0= 1;260.EA = 1;261.UART_INIT();//串口初始化262.while(1);263.}264.。
基于51单片机的金属探测全方位移动智能小车西北民族大学 徐启明随着电子技术、计算机技术和制造技术的飞速发展,智能化产品在现代社会显得日趋重要,它是今后发展的方向,可以在事先预定的程序下执行一系列的命令,无需人为进行管理,便可以完成预期所要达到的目标。
金属探测全方位智能小车的设想在此情况下便应用而生。
它以智能小车为载体代替人工,在某一区域自动进行循迹避障或遥控并智能的检测出金属物质然后作出反应。
1 引言智能小车,也称轮式机器人。
此项目是基于51单片机,采用STC89C52芯片制作的一辆集红外遥控,蓝牙遥控,自动循迹,躲避障碍,全方位移动,金属探测等为一体的智能小车。
2 系统组成此车由51单片机,电机驱动,稳压,电源,红外,蓝牙,超声波,电机,LCD1602,金属探测器,遥控器等模块组成。
稳压模块为单片机提供稳定的5V 电压,驱动模块为使能驱动电机,红外循迹模块可使小车智能循迹,红外遥控、蓝牙遥控为小车的两种控制方式,超声波可测距避免障碍,而金属探测器可探测金属让1602显示并报警。
本设计采用STC 公司生产的STC89C52芯片,它是一种低功耗、高性能的8位微型控制器,它的存储器有8K 字节,对于处理一般不太复杂功能的能力足够,从而使得STC89C52芯片为许多嵌入式控制系统提供灵活有效的解决办法。
(陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010)图1 系统组成3 金属探测器原理如图1,由线圈L1、L2,三极管Q1,电阻R1,电容C2、C3,电位器W 组成了一个高频振荡电路,通过调节可调电阻W ,就可以改变振荡级的放大倍数,使得振荡器振荡状态处于临界状态,也就是说在未检测到金属前刚好未使振荡器起振。
Q2、Q3两个三极管组成一个检测电路,未检测到金属时,此时振荡电压会大于0.5V ,C4就会由于Q2三极管在负半周导通而短路,从而使Q3三极管截止;当线圈L1有金属物体靠近时,在金属导体中就会有涡电流产生,此时振荡回路中的能量损耗就会增大,使得正反馈减弱,振荡器振荡减弱,Q2三极管截止,电阻R2给C4电容充电,使得Q3三极管导通,蜂鸣器两端电压增大,从而使蜂鸣器发出声音。
基于51单片机寻迹小车的设计摘要:本寻迹小车采用铝合金为车架,STC89C52单片机为控制核心,加以直流电机、光电传感器和电源电路以及其他电路的设计思路。
系统由STC89C52通过I/O口控制小车的前进后退以及转向。
寻迹由ST188型光电对管完成。
关键词:STC89C52 直流电机光电传感器自动寻迹电动车Abstract: The smart car use aluminum alloy for the chassis, STC89C52 MCU as its core, including motor and servo, plus photoelectric sensors, as well as other flame sensor and power circuit. MCU controls the car turning back forward or running on the black line. ST188 reflective photo sensor seeks the trace. Far infrared flame sensor tracks the flame.Keywords: ATmaga32L、Motor、Servo、Photo、sensor、Electrical、fire engines目录一、绪论 (2)1.1立项背景及课题研究的目的及意义 (2)1.1.1 立项背景 (2)1.1.2 课题研究的目的和意义 (3)1.2设计任务与设计要求 (3)1.2.1设计任务 (3)1.2.2设计要求 (3)1.3设计思路 (4)二、总体方案设计 (5)2.1模块方案比较与论证 (5)2.1.2 控制器模块设计 (5)2.1.3 电源模块设计 (5)2.1.4 稳压模块设计 (6)2.1.5 寻迹传感器模块设计 (6)2.1.6 电机模块设计 (6)2.1.7 电机驱动模块设计 (7)2.2最终选取方案 (7)三、硬件实现及单元电路设计 (8)3.1微控制器模块 (8)3.2光电对管电路 (8)3.3电机驱动电路的设计 (9)3.4电源模块设计 (9)3.4.1 12V稳压电源设计 (9)3.4.2 5V稳压电源设计 (10)3.5原理图整合图 (10)3.6整合电路板(PCB)图 (11)3.6.1 顶层图 (11)3.6.2 底层图 (11)3.6.3 整体图 (12)四、软件实现 (13)4.1主程序流程图 (13)4.2软件实现主程序(C语言) (13)五、结论 (16)六、结束语 (16)七、参考文献 (16)一、绪论1.1立项背景及课题研究的目的及意义1.1.1 立项背景目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。
一、引言智能光电小车是一种基于光电传感技术的智能移动装置,利用光敏元件和电动机等组件实现对光信号的检测与响应。
本文将介绍智能光电小车的工作原理、设计方案以及应用场景等相关内容。
二、工作原理智能光电小车的工作原理主要包括光信号检测和运动控制两个部分。
1.光信号检测:光敏元件负责对周围的光信号进行感应,如光电二极管、光敏电阻等。
当环境的光强度发生变化时,光敏元件会产生相应的电信号。
2.运动控制:通过对光敏元件输出信号进行处理,智能光电小车可以根据光信号的强弱来判断光源的相对位置和运动方向。
根据预设的运动策略,小车可以自动调整电机的转速和方向,以实现对运动轨迹的控制。
三、设计方案智能光电小车的设计方案主要涉及到硬件组件和软件算法两个方面。
1. 硬件组件智能光电小车的硬件组件包括以下部分:•光敏元件:选用光电二极管和光敏电阻等光敏元件,具有高灵敏度和快速响应的特点。
•电动机:采用直流电动机作为小车的动力来源,通过控制电机的转速和方向,实现运动控制。
•电源模块:提供小车的电源供给,可以采用电池组或者外部电源适配器等。
•控制模块:利用单片机或者微处理器控制光敏元件和电动机,实现对光信号和运动的处理。
•通信模块:可选的,用于实现小车与其他设备之间的数据传输和远程控制。
2. 软件算法智能光电小车的软件算法主要包括以下几个方面:•光信号处理:通过采集光敏元件输出的电信号,利用滤波、放大和数字转换等技术,将光信号转化为数字信号,方便后续的处理和分析。
•光源定位:根据光信号的强弱和分布情况,利用数学模型和算法来计算光源的相对位置,以确定小车的运动策略。
•运动控制:根据光源的位置和预设的运动策略,利用控制算法对电动机的转速和方向进行调整,以实现对小车运动轨迹的控制。
•数据传输和远程控制:可选的,通过通信模块实现小车与其他设备之间的数据传输和远程控制功能,提高小车的智能化和可操作性。
四、应用场景智能光电小车的应用场景非常广泛,可以应用于以下领域:1.环境监测:将光敏元件安装在小车上,通过对环境光强度的感知,可以实现对光照不良区域的自动巡检和报警功能。
范文范例指导参考基于 STC89C51 单片机智能小车控制项目名称:基于单片机 STC89C51 智能小车控制 小组成员:xx 班级:xx 指导教师:xx 开发结束时间:2011 年 7 月 10 日 星期日学习资料整理范文范例指导参考目录1.1 项目概述................................................................. 3 1.2 项目要求................................................................. 3 1.3 系统设计................................................................. 31.3.1 框图设计 ........................................................... 3 1.3.2 知识点 ............................................................. 4 1.4 硬件设计................................................................. 4 1.4.1 电路原理图 ......................................................... 4 1.4.2 原件清单........................................................... 6 1.4.3 L293D 驱动单片机的原理简介 ......................................... 7 1.4.4 STC89C51 单片机管脚图及其功能 ...................................... 7 1.5 软件设计................................................................. 9 1.5.1 程序流程图......................................................... 9 1.5.2 L293D 驱动器管脚赋值表 ............................................ 10 1.5.3 程序清单.......................................................... 10 1.6 软件仿真及硬件调试...................................................... 21 1.6.2 硬件调试.......................................................... 21 1.6.1 软件仿真.......................................................... 22 1.7 总结.................................................................... 23 1.8 文献参考................................................................ 23学习资料整理范文范例指导参考1.1 项目概述随着单片机技术的不断发展和完善已经大量的运用在工业的控制、数据的采集、智能化 仪表、机电一体化、家用电器等领域,极大地提高了这些领域的技术水平和自动化控制水平。
目录第九章、基于51单片机的红外循迹小车 (2)1、制作要求 (2)2、制作目的 (2)3、制作方案(硬件方面) (2)3.1 系统概述 (2)3.2 单片机模块 (3)3.3 指示灯原理图 (4)3.4 红外对管原理图 (4)3.5 电机驱动模块 (5)4、制作方案(软件方面) (7)4、附录 (9)5.1 实物和效果展示 (9)5.2 参考程序: (9)5.3 基于C51控制红外循迹小车原理图 (17)第九章、基于51单片机的红外循迹小车随着电子科技的迅猛发展,人们对技术也提出了更高的要求。
汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要。
智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势。
本次红外寻迹小车采用了C51单片机作为控制核心,利用红外对管传感器检测黑线达到循迹目的,自动寻迹,整体系统的电路结构简单,可靠性能高。
1、制作要求使用51单片机作为控制芯片,自制一台可自行检测道路并行驶的简易智能小车。
在这一次的制作活动中将会接触到51单片机、红外对管、电机驱动模块、简单的C语言编程,要求学会使用51单片机进行编程,入门单片机,能够独立的搭出单片机最小系统;了解红外对管的工作原理、电路图,掌握电压比较器的使用方法,学会调试红外对管;了解电机驱动的作用、工作原理;能够进行简单的C语言编程,给单片机编写程序使其能够正常工作。
2、制作目的1、入门51单片机,进行简单的C语言编程;2、掌握51单片机最小系统,中断,定时器/计数器等;3、了解传感器的种类和原理,掌握红外传感器并学会调试;4、学习C语言的基本语句,用C语言编写程序。
3、制作方案(硬件方面)3.1 系统概述智能循迹小车主要由单片机模块、红外检测模块、电机驱动模块组成。
单片机为主控模块,接受并判断各种信号,控制电机驱动。
在智能循迹小车系统设计过程中,用L293驱动两个电机,产生信号驱动小车前进时,是通过循迹模块里的红外对管ST188是否检测到黑线产生的电平信号通过LM339在返回到单片机,单片机再根据程序设计的要求作出相应的判断送给电机驱动模块,以实现小车自动循迹的功能(可对应附录里的系统原理图)。
图9-3-1 小车工作图3.2 单片机模块单片机模块为此次小车系统的核心,是作为系统信号采集和输出控制的重要部分。
51单片机的种类繁多,通常使用的是AT51单片机和STC51单片机,其中STC12单片机自带PWM,可以直接使用。
单片机模块为核心模块,其它由时钟、电源、串口MAX232与程序烧录、I/O 接口等组成。
通过各结构的工作加上丰富的I/O接口,实现数据处理,进而对外部模块进行控制。
我们队设计方案主要分为两种:设计一个包含电源、串口与程序烧录、外接I/O口组成,实现现场的小车调试程序烧录。
本次制作智能循迹小车所需提供9V电源,一方面9V电源直接供给电机驱动,驱动电机直接转停,另一方面9V经过稳压芯片,将9V电压稳压到5V直接给单片机模块、红外、指示灯工作,才能使小车正常工作。
稳压芯片7805输出为+5V稳定电压,最高输入极限电压36,最低输入电压7V,集成稳压块的最佳工作状态是输入电压与输出电压间的压差在3~4V左右。
压差太大可在输入前端串联几个二极管降压,这样稳压块就不会很烫了。
图9-3-2 电源供应图9-3-3 程序下载口图9-3-4 单片机最小模块单片机系统作为循迹小车的核心控制器,起着控制小车所有运行状态的作用。
控制方法有许多,大部分采用单片机来控制。
单片机将红外对管采集的道路信息进行处理。
小车进入循迹模式后,即不停的扫描与循迹模块相连接的I/O口,一旦检测到某个I/O口有信号变化,程序进入判断程序,把相应的信号传给减速电机控制器L293从而纠正小车的状态。
单片机最小系统调试步骤:方法一:1.用万用表确定是否正常供电。
2.用示波器确定晶振是否起振。
3.单片机是否工作。
比如,单片机一上电,它的有些管脚ALE引脚会输出脉冲,可以通过示波器查看。
方法二:1.查看是否可以烧录程序。
2.可以结合图上的指示灯电路点亮一个发光二级管。
参考程序在右边。
3.3 指示灯原理图本模块是用4个发光二极管作为指示灯显示模块,通过红外对管对道路进行检测后传输信号给单片机,由单片机处理信号后,控制P2口的LED1、LED2、LED3、LED4(小车总原理图上)的输出高、低电平,控制NPN三极管的通断,来控制指示灯的亮、灭。
即以此来显示小车对道路的检测情况。
图9-3-5 指示灯电路3.4 红外对管原理图能够用来采集赛道数据的传感器有很多种,比如红外传感器、黑白线检测传感器、光电传感器和摄像头等;但综合价格、性能、使用三方面来看,红外传感器是较为理想的。
黑白线传感器如tk-20虽然性能优秀,但价格较高;光电传感器则受环境的影响太大,摄像头能很好的采集赛道数据,但使用起来不如前面几种传感器简单,且价格较贵;因此这次的小车采用的是ST188红外传感器,其检测距离可调整的范围大,4-10mm均可使用。
如图所示为st188红外传感器。
图9-3-6 红外对管外型图9-3-7 红外对管电路图在焊接st188时应该注意其引脚的位置,不要弄错了;同时在使用时也要小心,因为st188很容易烧掉,其价格在2-3元不等。
焊接完成后,检测st188是否正常工作可以使用手机的照相功能,若通过手机的照相功能能够观察到红光,则说明st188已经可以正常工作了。
接下来要调整可调电阻以达到一个合适的比较电压,可以使用示波器进行调整。
如图9-3-7所示,当有电流经过R4时,红外发射管发射红外线到轨道上,光线经过道路反射,红外接收管接收到红外线C和E引脚就有电流通过,此时C引脚的电压近似为0V。
若发射管发射的红外被黑线吸收,接收管接收不到,此时C和E之间可视为断开,此时C 脚的电压为5V。
红外对管的道路的检测越清楚,传输给单片机的信息越稳定,小车就能更好地循迹。
而红外循迹模块的调试首先要判定自己的红外对管用没有用,而红外对管的检测方案有:1):通过测量红外发光二极管的正反向电阻,还可以在很大程度上推测其性能的优劣。
把万用表拨在R×100或R×1K挡,黑表笔接红外发光二极管正极,红表笔接负极,测得正向电阻应在20≈40K;黑表笔接红外发光二极管负极,红表笔接正极,测得反向电阻应大于500K以上。
2):先给红外对管通电,采用手机摄像功能查看红外发射管是否是好的。
图9-3-8 LM339内部结构图LM339电压比较器芯片内部装有四个独立的电压比较器,如图7所示当同相输入端的电压大于反相输入端时,输出正最大,此时7脚输出为5v;若反相输入端的电压大于同相输入端。
3.5 电机驱动模块本次循迹小车的制作采用直流减速电机,直流减速电机转动力矩大,体积小、重量轻、装配简单、使用方便。
其内部由高速电机提供原动力,带动变速(减速)此轮组,产生较大扭力。
驱动模块采用芯片L293为电机驱动芯片,L293是一个具有高电压高电流的全桥驱动芯片,响应频率很高。
可以直流带动两个12V的直流电机。
L293内部的原理图如下:6V动力电源图9-3-9 L293内部原理图OUT1与OUT2与小车的一个电机的正负极相连,OUT3与OUT4与小车的另一个电机的正负极相连,单片机通过控制IN1与IN2,IN3与IN4分别控制电机的正反转。
ENA与ENB分别控制两个电机的使能(控制电机停转)。
图9-3-10 L293N引脚图图9-3-11 电机驱动电路L293有两路电源分别为逻辑电源和动力电源,上图中6V为逻辑电源,12V为动力电源。
J4接入逻辑电源,J6接入动力电源,J1与J2分别为单片机控制两个电机的输入端,J3与J5分别与两个电极的正负极相连。
ENA与ENB直接接入6V逻辑电源也就是说两个电机时刻都工作在使能状态,控制电机的运行状态只有通过J1与J2两个接口。
由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。
4、制作方案(软件方面)本次小车制作系统主控芯片为AT89S52,程序主要分为以下几个模块:1、主函数;作为整个程序的开始,与结束。
Check_Load()、Deal_Message_of_Load()作为子程序可在后调用。
例:void main(void){Timer_Init();while(1){Check_Load();Deal_Message_of_Load();}}2、赛道信息采集函数;对地面信号进行一个采集后,具体地对Load_Size进行赋值,以便赛道处理按函数,对信号进行处理。
例:void Deal_Message_of_Load(void){switch(Load&0X0F){case 0X01: Load_Size = 0X01; break; //0001case 0x02: Load_Size = 0X02; break; //0010case 0X03: Load_Size = 0X03; break; //0011case 0x04: Load_Size = 0X04; break; //0100case 0X06: Load_Size = 0X05; break; //0110case 0x08: Load_Size = 0X06; break; //1000case 0X0C: Load_Size = 0X07; break; //1100case 0X00: Load_Size = 0X08; break; //0000case 0x0f: Load_Size = 0X09; break; //1111default: break;}P2 = Load&0X0F; //点亮指示灯}3、赛道处理函数;通过对赛道信息采集后,进行判断,并做出相应的指令控制电机转动。
例:void Control_Wheels(void){if(Load_Size == 0x01){IN1 = !IN1;Time_Count1++;if(Time_Count1/20 == 0){IN3 = 1;}else{IN3 = 0;}if(Time_Count1 == 255){Time_Count1 = 0;}}4、定时器初始化函数;顾名思义就是对时间进行计数,以方便中断的执行。
void Timer_Init(void){TMOD = 0x11; //设定定时器T0和T1为工作方式1,为16位定时器/计数器TH0 = (65536-60000)/256;TL0 = (65536-60000)%256;TR0 = 1;IE = 0X8A;IN1 = 1;IN2 = 0;IN3 = 1;ENA = 1;ENB = 1;}5、延时函数;对时间进行控制,使在一定时间后执行需要执行的指令。