《红外自动循迹小车讲解22810.pdf》由会员分享,可在线阅读,更多相关《红外自动循迹小车讲解22810.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录 目 录.0 摘 要:.1 1.任务及要求.2 1.1 任务.2 2.系统设计方案.2 2.1 小车循迹原理.2 2.2 控制系统总体设计.2 3.系统方案.3 3.1 寻迹传感器模块.3 3.1.1 红外传感器 ST188 简介.3 3.1.2 比较器 LM324 简介.4 3.1.3 具体电路.4 3.1.4 传感器安装.5 3.2 控制器模块.6 3.3 电源模块.6 3.4 电机及驱动模块.7 3.4.1 电机.7 3.4.2 驱动.8 3.5 自动循迹小车总体设计.9 3.5.1 总体电路图.9 3.5.2 系统总体说明.11 4.软件设计.11 4.1 PWM 控制.11 4
2、.2 总体软件流程图.12 4.3 小车循迹流程图.12 4.4 中断程序流程图.13 4.5 单片机测序.14 5参考资料.17 自动循迹小车 1 自动循迹小车 摘 要:本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法。小车以 AT89C51 为控制核心,用单片机产生 PWM 波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。关键词:单片机 AT89C51 光电传感器 直流电机 自动循迹小车 Ab
3、stract:This design is a Simple Design of a smart auto-tracking vehicle which based on MSC control.The construction of the car,and methods of hardware and software design are included.The car use AT89C51 as heart of centrol in this system.Then using PWM waves Produced by MCU to control car speed.By u
4、sing infraraed sensor to detect the information of black track.The smart vehicle acquires the information and sends t hem to the MSC.Then the MSC analyzes the signals and controls the movements of t he motors.Which make the smart vehicle move along the given black line antomaticly.Keywords:infrared
5、sensor;MSC;auto-tracking 自动循迹小车 2 1.任务及要求 1.1 任务 设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶。系统方案方框图如图 1-1 所示。图 1-1 系统方案方框图 2.系统设计方案 2.1 小车循迹原理 这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断“道路”。通常采取的方法是红外探测法。红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被
6、装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,2.2 控制系统总体设计 自动循迹小车控制系统由主控制电路模块、稳压电源模块、红外检测模块、电机及驱动模块等部分组成,控制系统的结构框图如图2-1 所示。检测(黑线)驱动电机 软件控制 控制小车 自动循迹小车 3 1、主控制电路模块:用 AT89C51 单片机、复位电路,时钟电路 2、红外检测模块:光电传感器ST188,比较器 LM324 3、电机及驱动模块:电机驱动芯片 L298N、两个直流电机 4、电源模块:双路开
7、关电源 3.系统方案 3.1 寻迹传感器模块 ST系列反射式光电传感器是经常使用的传感器。这个系列的传感器种类齐全、价格便宜、体积小、使用方便、质量可靠、用途广泛。我们采用ST188作为红外检测传感器。在黑线检测的测试中,若检测到白色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压为48V,若检测到黑色区域,接收管接受到发射管发射的红外线,电阻发生变化,所分得的电压也就随之发生变化,测的接收管的电压为05V,测试基本满足要求。判断有无黑线我们用的一块比较器LM324,比较基准电压由30K的变阻器调节,各个接收管的参数都不一致,每个传感器的比较基准电压也不尽相同,我们为每个传感器配备了
8、一个变阻器。3.1.1 红外传感器 ST188 简介 含一个反射模块(发光二极管)和一个接收模块(光敏三极管)。通过发射红外信号,看接收信号变化判断检测物体状态的变化。A、K之间接发光二极管,C、E之间接光敏三极管(二者在电路中均正接,但要串联一定阻值的电阻)稳压电 源模块 主控芯片 AT89C51 L298 减速电机 光电传感器 电压比较器 图 2-1控制系统的结构框图自动循迹小车 4 图 3-1 ST188实物图 图 3-2 ST188管脚图及内部电路 3.1.2 比较器 LM324 简介 LM324为四运放集成电路,采用14脚双列直插塑料封装。内部有四个运算放大器,有相位补偿电路。电路功
9、耗很小,工作电压范围宽,可用正电源330V,或正负双电源15V15V工作。在黑线检测电路中用来确定红外接收信号电平的高低,以电平高低判定黑线有无。在电路中,LM324的一个输入端需接滑动变阻器,通过改变滑动变阻器的阻值来提供合适的比较电压。图 3-3 LM324 内部电路 图 3-4 集成运放的管脚图 3.1.3 具体电路 通过ST188检测黑线,输出接收到的信号给LM324,接收电压与比较电压比较后,输出信号变为高低电平,再输入到单片机中,用以判定是否检测到黑线。自动循迹小车 5 图3-5 传感器模块电路图 3.1.4 传感器安装 在小车具体的循迹行走过程中,为了能精确测定黑线位置并确定小车
10、行走的方向,需要同时在底盘装设4个红外探测头,进行两级方向纠正控制,提高其循迹的可靠性。这4个红外探头的具体位置如图3-6所示。图3-6 传感器安装图 图中循迹传感器全部在一条直线上。其中X1与Y1为第一级方向控制传感器,X2与Y2为第二级方向控制传感器,并且黑线同一边的两个传感器之间的宽度不得大于黑线的宽度。小车前进时,始终保持(如图3-6中所示的行走轨迹黑线)在X1和Y1这两个第一级传感器之间,当小车偏离黑线时,第一级传感器就能检测到黑线,把检测的信号送给小车的处理、控制系统,控制系统发出信号对小车轨迹予以纠正。若小车回到了轨道上,即4个探测器都只检测到白纸,则小车会继续行走;若小车由于惯
11、性过大依旧偏离轨道,越出了第一级两个探测器的探测范围,自动循迹小车 6 这时第二级探测器动作,再次对小车的运动进行纠正,使之回到正确轨道上去。可以看出,第二级方向探测器实际是第一级的后备保护,从而提高了小车循迹的可靠性。3.2 控制器模块 采用 Atmel 公司的 AT89C51 单片机作为主控制器。它是一个低功耗,高性能的 8 位单片机,片内含 32k 空间的可反复擦写 100,000 次 Flash 只读存储器,具有 4K 的随机存取数据存储器(RAM),32 个 I/O 口,2 个 8 位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试。时钟电路和复位电路 如图 3
12、-7(与单片机构成最小系统)1)采用外部时钟,晶振频率为 12MHZ 2)采用按键复位 图 3-7 时钟电路和复位电路 3.3 电源模块 电源采用双路开关电源。明伟牌D-30W 双路开关电源。输出(5V、12V)。自动循迹小车 7 实物图如图 3-8 所示。图 3-8 双路开关电源 该开关电源尺寸为 129X98X38mm,交流输入转换由开关选择,具有过流短路保护功能,能自冷散热。低价位、高可靠。输入电压范围-85132VAC/175264VAC,4763Hz 开关选择;冲击电流-冷起动电流 15A/115V 30A/230V;直流电压可调范围-额定输出电压的 10%;启动、上升、保持时间-2
13、00ms,100ms,30ms;耐压性-输入输出间;输入与外壳 1.5KVAC,输出与外壳,0.5KVAC,历时一分钟;工作温度、湿度-10+60,20%90%RH;安全标准-符合 CE 标准;EMC 标准-符合 CE 标准;连接方法-7 位 9.5mm 接线端子;质量/包装-0.41Kg,45PCS/19.5Kg/1.2CUFT 表 1 型号 输出 差值 范围 效率 D-30A 5V,0.5V 4.04A 2%50mV 72%12V,0.1 1.0A 3,-7%100mV 3.4 电机及驱动模块 3.4.1 电机 电机采用直流减速电机,直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方
14、便。由于其内部由高速电动机提供原始动力,带动变速(减速)自动循迹小车 8 齿轮组,可以产生较大扭力。可选用减速比为 1:74 的直流电机,减速后电机的转速为 100r/min。若车轮直径为 6cm,则小车的最大速度可以达到 V=2rv=2*3.14*0.03*100/60=0.314m/s 能够较好的满足系统的要求。3.4.2 驱动 驱动模块采用专用芯片 L298N 作为电机驱动芯片,L298N 是一个具有高电压大电流的全桥驱动芯片,其响应频率高,一片 L298N 可以分别控制两个直流电机。以下为 L298N 的引脚图和输入输出关系表。图 3-9 L298N外部引脚 表 2 L298N输入输出
15、关系 驱动电路的设计如图3-10 所示:自动循迹小车 9 图 3-10 L298N 电机驱动电路 L298N 的 5、7、10、12 四个引脚接到单片机上,通过对单片机的编程就可实现两个直流电机的 PWM 调速控制。3.5 自动循迹小车总体设计 3.5.1 总体电路图 自动循迹小车 10 图 3-11 总体电路图 P1.0P1.1P1.2P1.3C133uFC233uFC31uFXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/A
16、D732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALR11kIN15IN27ENA6OUT12OUT23ENB11OUT313OUT414IN310IN412SENSA1SENSB15GND8VS4VCC9U2L29
17、8+12VC40.1uFC50.1uFC61nFD5LED-REDD8LED-RED4312U5ST188R2220R310k321411U6:ALM3244312U9ST188R4220R510k567411U6:BLM3244312U7ST188R6220R710k1098411U6:CLM3244312U8ST188R8220R910k121314411U6:DLM324RSEN1RSEN2LSEN1LSEN2左车轮右车轮自动循迹小车 11 3.5.2 系统总体说明 如图 3-11 所示,当光电传感器开始接受信号,通过比较器将信号传如单片机中。小车进入寻迹模式,即开始不停地扫描与探测器连
18、接的单片 I/O 口,一旦检测到某个 I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。单片机采用 T0 定时计数器,通过来产生 PWM 波,控制电机转速。4.软件设计 4.1 PWM 控制 本系统采用PWM来调节直流电机的速度。PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电
19、压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。本系统中通过控制51单片机的定时器T0的初值,从而可以实现P0.4和P0.5输出口输出不同占空比的脉冲波形。定时计数器若干时间(比如 0.1ms)中断一次,就使 P0.4 或 P0.5 产生一个高电平或低电平。将直流电机的速度分为 100个等级,因此一个周期就有个 100 脉冲,周期为 100 个脉冲的时间。速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个
20、周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大,加在电机两端的电压越大,电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。精确地讲,平均速度与占空比并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。自动循迹小车 12 4.2 总体软件流程图 小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片 I/O 口,一旦检测到某个 I/O 口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。软件的主程序流程图如图4-1 所示:4.3 小车循迹流程图 小车进
21、入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O 口,一旦检测到某个 I/O 口有信号,即进入判断处理程序,先确定 4 个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左系统初始化 任务计数器归零 是否完成全部 任务?循迹子函数 是否完成本次 任务?结束 开始 N Y N Y 图 4-1 主程序流程图 自动循迹小车 13 偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述
22、动作。循迹流程图如图 4-2 所示 由于第二级方向控制为第一级的后备,则两个等级间的转向力度必须相互配合。第二级通常是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,所以它必须要保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级,即Turn_left2 Turn_left1,Turn_right2 Turn_right1(其中Turn_left2,Turn_left1,Turn_right2,Turn_right1 为小车转向力度,其大小通过改变单片机输出的占空比的大小来改变),具体数值在实地实验中得到。4.4 中断程序流程图 这里利用的是 51 单片机的 T0 定时计数器
23、,从而让单片机 P0 口的 P0.4 和P0.5 引脚输出占空比不同的方波,然后经驱动芯片放大后控制直流电机。定时图 4-2 循迹流程图 启动循迹模式 探测黑线 是否检测到黑线 判断处理程序 向左转 Turn _left2 向左转 Turn _left1 向右转 Turn_ right1 向右转 Turn_ Lright2 继续前进 N Y 自动循迹小车 14 计数器若干时间(比如 0.1ms)比如中断一次,就使 P0.4 或 P0.5 产生一个高电平或低电平。中断程序流程图如图 4-3 所示 4.5 单片机测序#include#define uchar unsigned char#defin
24、e uint unsigned int unsigned char zkb1=0;/*左边电机的占空比*/unsigned char zkb2=0;/*右边电机的占空比*/unsigned char t=0;/*定时器中断计数器*/sbit RSEN1=P10;sbit RSEN2=P11;sbit LSEN1=P12;sbit LSEN2=P13;sbit IN1=P00;sbit IN2=P01;sbit IN3=P02;定时器赋初值 技术变量赋值 t=0 计数值 t占空比?P0.4 和 P0.5 输出高电平 P0.4 和 P0.5 输出低电平 计数变量 t 加 1 开始 结束 Y N 图
25、 4-3 中断程序流程图 自动循迹小车 15 sbit IN4=P03;sbit ENA=P04;sbit ENB=P05;/*延时函数*/void delay(int z)while(z-);/*初始化定时器,中断*/void init()TMOD=0 x01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;/*中断函数+脉宽调制*/void timer0()interrupt 1 if(tzkb1)ENA=1;else ENA=0;if(t=100)t=0;/*直行*/void qianjin()zkb1=30;zkb2=3
26、0;/*左转函数 1*/void turn_left1()zkb1=0;zkb2=50;/*左转函数 2*/void turn_left2()zkb1=0;zkb2=60;自动循迹小车 16/*右转函数 1*/void turn_right1()zkb1=50;zkb2=0;/*右转函数 2*/void turn_right2()zkb1=60;zkb2=0;/*循迹函数*/void xunji()uchar flag;if(RSEN1=1)&(RSEN2=1)&(LSEN1=1)&(LSEN2=1)flag=0;/*直行*/else if(RSEN1=0)&(RSEN2=1)&(LSEN1=
27、1)&(LSEN2=1)flag=1;/*左偏 1,右转 1*/else if(RSEN1=0)&(RSEN2=0)&(LSEN1=1)&(LSEN2=1)flag=2;/*左偏 2,右转 2*/else if(RSEN1=1)&(RSEN2=1)&(LSEN1=0)&(LSEN2=1)flag=3;/*右偏 1,左转 1*/else if(RSEN1=1)&(RSEN2=1)&(LSEN1=0)&(LSEN2=0)flag=4;/*右偏 2,左转 2*/switch(flag)case 0:qianjin();break;case 1:turn_right1();break;case 2:t
28、urn_right2();break;case 3:turn_left1();break;case 4:turn_left2();break;default:break;/*主程序*/void main()init();zkb1=30;zkb2=30;while(1)IN1=1;/*给电机加电启动*/自动循迹小车 17 IN2=0;IN3=1;IN4=0;ENA=1;ENB=1;while(1)xunji();/*寻迹*/5参考资料 1 宋健,姜军生,赵文亮.基于单片机的直流电动机 PWM 调速系统J .农机化研究,2006,(1):102-103.2 边春元 李文涛 江杰 杜平等;C51 单片机典型模块设计与应用;机械工业出版社;2008.4 3 李华.MCS-51 系列单片机实用接口技术M.北京:航空航天大学出版社,2003 4 楼然苗.51 单片机设计实例M.北京:航空航天大学出版社,2005.8 5 王晶,翁显耀,梁业宗 自动寻迹小车的传感器模块设计.武汉理工大学自动化学院 湖北武汉 6 刘迎春.传感器原理设计与应用M.长沙:国防科技大学出版社,1992.