基于单片机的红外遥控智能小车的设计
2011-03-15
(张家港沙洲工学院,江苏 张家港 215600)
1.引言
利用红外遥控器代替开关按键控制小车的启动和停止,能够轻松自如的实现小车的启动停止、左转右转和前进后退等功能,假如我们希望小车运行到黑线上来检测是否有循迹功能,就可以用遥控器控制小车行驶到有黑线的地方,当小车遇到有黑线时,会自动启动循迹功能模块,让小车沿着黑线跑,当遇到障碍物时会自动启动超声波蔽障测距并报警模块,每个模块都是相互独立又相互协调配合,真正实现了小车的智能控制:本设计采用模块化设计结构,各个功能相互不受影响,具有较高的智能化、人性化。
2.红外遥控模块的组成
红外遥控模块主要由遥控发射器、红外接收头、接口电路组成,如图1所示。红外遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,此串行码输入到单片机,由其内部CPU完成对遥控指令解码,并执行相应的遥控功能。使用红外遥控器作为控制系统的输入,需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、控制程序的设计。
图1 红外遥控系统组成方框图
2.1 红外遥控的实现原理
红外遥控的实现主要是如何用程序去分析位0和位1。位0和位1所不同之处就是在高电平脉冲后的低电平脉宽不一样,采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图3所示。
图2 遥控码的“0”和“1”
这里有一点要注意的是,遥控芯片输出的波形,接收端在接收到信号时是取反的,如上图所示,也就是说接收端输出波形正好和遥控芯片输出的相反。图2就是其中一段引导码和自定义码发射端和接收端的波形[3]。
图3和图4就是其中一段引导码和自定义码遥控信号的编码波形图。
遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。芯片厂商把用户识别码固定为十六进制的一组数;后16位为8位操作码(功能码)及其反码。
解码的关键也是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。 根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。
图5 红外接收硬件图
2.2 红外接收模块
该模块使用红外接收头1838,其电路如图5所示。瓷片电容104为去耦电容,1端即解调信号的输出端,直接与单片机的P3.2口相连。有红外编码信号发射时,输出为检波整形后的方波信号,并直接提供给单片机。
2.3 红外遥控的软件设计流程及思路
解码方法如下:
·设外部中断0(或者1)为下降沿中断,定时器0(或者1)为16位计时器.初始值均为O。
·第一次进入遥控中断后,开始计时。
·从第二次进入遥控中断起,先停止计时。并将计时值保存后,再重新计时。如果计时值等于前导码的时间,设立前导码标志。准备接收下面的一帧遥控数据,如果计时值不等于前导码的时间,但前面已接收到前导码,则判断是遥控数据的O还是1。
·继续接收下面的地址码、数据码、数据反码。
·当接收到32位数据时,说明一帧数据接收完毕。此时可停止定时器的计时,并判断本次接收是否有效,如果两次地址码相同且等于本系统的地址,数据码与数据反码之和等于0FFH,则接收的本帧数据码有效。否则丢弃本次接收到的数据。
·接收完毕,初始化本次接收的数据,准备下一次遥控接收。
图6 主程序流程图
3.直流电机的驱动
用单片机控制直流电机时,需要加驱动电路,为直流电机提供足够大的驱动电流,如图7所示:本次设计我们选择了达林顿驱动器,它实际上是一块集成芯片,单块芯片同时可驱动多个电机,每个电机由单片机的一个I/O口控制,当需要调节直流电机转速时,使单片机的相应I/O口输出不同占空比的PWM波形即可。占空比是指高电平持续时间在一个周期时间内的百分比。控制电机的转速时,占空比越大,速度越快,如果全为高电平,占空比为100%时,速度达到最快。
当用单片机I/O口输出PWM信号时,可采用以下两种方法:[7]
·利用软件延时。当高电平延时时间到时,对I/O口电平取反变成低电平,然后再延时;当低电平延时时间到时,再对I/O口电平取反,如此循环就可得到PWM信号。
图7 直流电机的驱动电路
图8 直流电机的H桥控制图
图9 超声波蔽障流程图
·利用定时器。控制方法同上,只是在这里利用单片机的定时器来定时进行高、低电平的翻转,而不用软件延时。
电机驱动还可以用如图8方式。该电路工作的原理为:当Q5与Q8同时导通时,电机会顺时针的转动,当Q6与Q7同时导通时电机会逆时针的旋转,这样我们就可以实现电机的正传与反转的控制了,单片机的控制引脚只用了两个,一个接Q5和Q8的基级这样可以实现电机的正传,另一个接Q6与Q7的基级实现电机的反转。如果用PWM波控制该电机,那PWM波就可以从基级直接输入,但是对于三极管的选型特别要注意,第一,要看管子的耐压特性,第二,要看管子的频率特性,如果频率特性不太好,那PWM控制电机就失去了意义。
4.小车的寻线功能
小车的寻线功能采用的是GP2A25传感器,该传感器检测黑线的灵敏度非常的高,一般在工业上用来探测纸张比较多,利用此功能,我们也可以用他来检测黑线,只是取的电平刚好和测纸张的电平相反。GP2A25探测的距离有一个要求,一般在1.5厘米的空度是最为灵敏的,所以在小车上安装此传感器比较有精度要求。
在小车的左边和右边各安装一个GP2A25传感器。当小车左边检测到黑线,证明小车尾部向右歪了,这时候单片机输出相应的代码来纠正小车的位置,左电机转动右电机静止,这样小车就能摆正位置,同理,当右边传感器检测到黑线,小车尾部向左倾斜,右电机转动,左电机静止。这样小车就能在黑线上稳定的前进了。
5.超声波测距原理 (40KHZ)
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。
测距的公式表示为:L=C×T
式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)[10]。
·用户通过从TX脚输出40KH的方波信号,即就是从单片机的IO口连续发出高低电平,产生方波,方波的个数一般为10个左右,发出后启动定时器,开始计时,此时,超声波发射头开始发出超声波,当发出的超声波被前方的障碍物返射回来,返射回来的超声波被接收探头接收到,此时,模块的RX引脚会产生一个从高电平到低电平的跳变,此时,停止计时,通过计时的时间,根据以下公式计算测量距离
测量距离=[时间×声速(340M/S)]/2具体流程图如图9。
6.结束语
本文设计的红外遥控小车具有操作简单,稳定可靠,易扩展升级,在小车的主板上预留了多个扩展端口,比如还可以再增加金属传感器TL-Q5MC来检测路上感应到的铁片,从而来来测量小车在行进的过程中所遇到的铁片数量,通过霍尔元件感应磁铁来产生脉冲,计算一秒所得的脉冲数,从而计算出一秒小车轮子转动圈数,再测量出小车车轮周长即可计算出小车当前速度,累加可得到当前路程;或者通过语音芯片来控制小车的运行等等。
[1]郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009,1.
[2]孙贤安,等.基于51单片机的小车蔽障电路实现[J].电气技术与自动化,2006,1
[3]裴彦纯,陈志超.基于单片机系统的红外遥控器应用[J].现代仪器,2004.
[4]赖麒文.8051单片机C 语言彻底应用[M].科学出版社,2002.
[5]彭伟.单片机C语言程序设计实训100例[M].北京:电子工业出版社,2010.
[6]曹开田.基于单片机的红外遥控密码锁的设计与实现[J].应用研究,2010.
[7]刘海伟.步进电机和光电传感器实现小车循迹[J].实用电子制作,2008.
[8]张燕,曾光宇.光电式传感器的应用与发展[J].科技情报开发与经济,2007.
[9]俞龙,黄家能,孙道宗.基于双单片机的悬挂物体寻迹控制系统[J].单片机与嵌入式系统应用,2006,8.
[10]赵广涛,程荫杭.基于超声波传感器的测距系统设计[J].传感器与仪器仪表,2006.