基于单片机的红外遥控智能小车的设计

【摘要】本设计采用AT89S52单片机加电机驱动电路和红外遥控及液晶实时显示小车运行状态还有红外接收一体化传感器设计而成,采用模块化的设计方案,运用红外遥控器控制小车的启动和停止,并对设计的电路进行了实际测试。实现了用红外遥控控制小车的启动停止左转右转的同时可以实时显示小车的运行状态。

【关键词】单片机;红外遥控;电机驱动;LCD1602

1.引言

利用单片机最小系统加红外遥控器及红外接收模块及电机驱动模块通过编程来实现小车的启动和停止,左转右转和前进后退等功能,本设计采用模块化设计结构,各个功能相互不受影响,具有较高的智能化、人性化。

2.红外遥控小车的系统组成

红外遥控小车的实现主要由遥控发射器、红外接收头、电机驱动模块及可扩展接口电路及液晶显示模块组成,如图1所示。红外遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,此串行码输入到单片机,由单片机完成对遥控指令解码,并执行相应的遥控功能。使用红外遥控器作为控制系统的输入,然后单片机一方面根据接收到的遥控码来驱动电机模块控制小车的运行,同时控制液晶实时显示小车的运行状态。为了实现此功能,首先需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、驱动电机运行及液晶显示的程序设计。

2.1 红外遥控的实现原理

遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

(1)采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。

(2)UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六位;后16位为8位操作码(功能码)及其反码。UPD6121G最多可支持128种不同组合的编码。

(3)遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间。

(4)当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。

2.2 红外接收器及解码

一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。其外形图如图2所示。

红外一开始发送一段13.5ms的引导码,引导码由9ms的高电平和4.5ms的低电平组成,跟着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由9ms的高电平,4.5ms的低电平,跟着是一个短脉冲。经过红外接收头后,所有的码都经过反码,然后单片机通过中断及定时器定时加算法把这些码接收到后进行相应的处理。单片机接收到的红外码如图3所示。

遥控端发出以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图4。

红外接收头将38K载波信号过滤,得到与发射代码反向接收代码。

注意:解码的关键是如何识别“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左右均可。

红外接收模块外形如图2所示,使用一体化红外接收头1838,其电路原理图如下图6所示。瓷片电容104为去耦电容,1端即解调信号的输出端,直接与单片机的P3.2口相连。有红外编码信号发射时,输出为检波整形后的方波信号,并直接提供给单片机。

2.3 红外遥控的软件设计流程及思路

按遥控器的按键,遥控器发出的码通过红外接收模块1838解码后送入单片机,单片机通过定时器和中断对接收到的码进行高电平与低电平的测量,最后把遥控器的码解出后,根据不同的码进行不同的码操作,具体解码操作流程图如图7所示。

3.直流电机的驱动

用单片机控制直流电机时,需要加驱动电路,为直流电机提供足够大的驱动电流,如图8所示:我们选择了达林顿驱动器,它实际上是一块集成芯片,单块芯片同时可驱动多个电机,每个电机由单片机的一个I/O口控制,当需要调节直流电机转速时,使单片机的相应I/O口输出不同占空比的PWM波形即可。占空比是指高电平持续时间在一个周期时间内的百分比。控制电机的转速时,占空比越大,速度越快,如果全为高电平,占空比为100%时,速度达到最快。

当用单片机I/O口输出PWM信号时,可采用以下两种方法:

1)利用软件延时。当高电平延时时间到时,对I/O口电平取反变成低电平,然后再延时;当低电平延时时间到时,再对I/O口电平取反,如此循环就可得到PWM信号。

2)利用定时器。控制方法同上,只是在这里利用单片机的定时器来定时进行高、低电平的翻转,而不用软件延时。

电机驱动还可以用图9方式。该电路工作的原理为:当Q5与Q8同时导通时,电机会顺时针的转动,当Q6与Q7同时导通时电机会逆时针的旋转,这样我们就可以实现电机的正传与反转的控制了,单片机的控制引脚只用了两个,一个接Q5和Q8的基级这样可以实现电机的正转,另一个接Q6与Q7的基级实现电机的反转。如果用PWM波控制该电机,那PWM波就可以从基级直接输入,但是对于三极管的选型特别要注意。第一,要看管子的耐压特性,第二,要看管子的频率特性,如果频率特性不太好,那PWM控制电机就失去了意义。

4.LCD1602实时显示功能

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或5X11点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形(用自定义CGRAM,显示效果也不好)

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),和单片机连接的原理图如图10所示。

由于LCD1602的用法简单明了,硬件只要上图连接,软件只要根据红外接收码判断出是前进还是后退,然后用英文字母显示出前进或后退或左转或右转等字样。软件实现起来不难。如果小车还想拓展,可以加一块语音芯片,提前把声音录下来,根据红外遥控发出不同的命令,然后报出相应的运行状态。

5.结束语

本文设计的红外遥控小车具有操作简单,稳定可靠,易扩展升级,在小车的主板上预留了多个扩展端口,比如还可以再增加超声波避障模块,可以增加语音播报模块及巡线模块等等,对于我们中学生的创新思维及动手能力都很有提高的实用价值。

参考文献

[1]郭天祥.新概念51单片机C语言教程:入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2009.

[2]孙贤安,等.基于51单片机的小车蔽障电路实现[M].电气技术与自动化,2006.

[3]裴彦纯,陈志超.基于单片机系统的红外遥控器应用[J].现代仪器,2004.

推荐访问:单片机 小车 遥控 智能 设计