论文摘要:本文介绍一款红外线遥控小车,以AT89S51单片机为核心控制器,用L289驱动直流电机工作,控制小车的运行。本款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。本系统采用模块化设计,软件用C语言编写。一、设计任务和要求以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶,手动驾驶和循迹前进等功能。自动驾驶时,前进过程中可以避障。手动驾驶时,遥控控制小车前进、后退、左转、右转、加速等操作。寻迹前进时小车还可以按照预先设计好的轨迹前进。二、系统组成及工作原理本系统由硬件和软件两部分组成。硬件部分主要完成红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行的发生等功能。软件主要完成信号的检测和处理、设备的驱动及控制等功能。AT89S51单片机查询红外信号并解码,查询各个检测部分输入的信号,并进行相应处理,包括电机的正反转,判断是否遇到障碍物,判断是否小车其那金中有出轨等。系统结构框图如图1所示。三、主要硬件电路1、遥控发射器电路该电路的主要控制器件为遥控器芯片HT6221,如图2所示。HT6221将红外码调制成38KHZ的脉冲信号通过红外发射二极管发出红外编码。图2中D1是红外发射二极管,D2是按键指示灯,当有按键按下时D2点亮.HT6221的编码规则是:当一个键按下超过36ms,振荡器使芯片激活,如果这个按键按下且延迟大约108ms,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9~18ms),8位数据码(9~18ms)和这8位数据码的反码(9~18ms)组成,如果按键按下超过108ms仍未松开,接下来发射的代码将仅由起始码(9ms)和结束码(2.5ms)组成。按照上图的接法,K1~K8的数据码分别为:0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07。图2遥控发射器电路原理图2、红外线接收模块该模块使用一体化红外接收头1838,其电路如图3所示。瓷片电容104为去耦电容,DOUT即是解调信号的输出端,直接与单片机的P3.2口相连。有红外编码信号发射时,输出为检波整形后的方波信号,并直接提供给单片机。图3红外接收原理图3、电机驱动模块该模块主要由芯片L298控制两个电机的正反转,以及改变电机的转速,其电路如图4所示。L298芯片是一种高压、大电流双全桥式驱动器。其中SENSEA、SENSEB分别为两个H桥的电流反馈脚,不用时可以直接接地。VCC,VS是接电源引脚,电压范围分别是4.5~7V、2.5~46V,设计中VCC端与单片机电源端共用5V工作电源,VS端独立接9V电源。ENA,ENB为使能端,低电平禁止输出。IN1,IN2,IN3,IN4为数据输入引脚,OUT1,OUT2,OUT3,OUT4为数据输出引脚。D1~D8是保护二极管(IN5819),用于释放掉电机停车时产生的反响尖峰电势,否则会击坏L298。图4电机驱动原理图4、障碍物检测和寻迹模块障碍物检测和轨迹检测原理是相同的。从经济的角度考虑,该模块选用了反射式光耦,其电路如图5所示。反射式光耦由一个红外发射管和一个光敏三极管组成。LM324是电压比较器,当3脚的电平大于2脚时,输出端1脚输出高电平,反之输出低电平。高低电平的值取决于LM324的2脚电平,调整电位器R23使LM324的2脚电压为3V。避障电路安装在小车的头部的左右两边,分别用于检测左右障碍物。工作过程是:当无障碍物时,不反射红外线,光敏三极管截止,LM324的3脚在R16的上拉作用下为高电平(5V),大于2脚电压(3V),输出高电平;当遇到障碍物时,反射红外线,光敏三极管导通,比较器3脚接地,小于2脚电压(3V),输出低电平。单片机根据电平的变化判断有无障碍物,当左边遇到障碍物时小车右转,当右边遇到障碍物时小车左转。循迹电路安装在小车的底部的左右两边,循迹是通过辨别黑白色来行走。工作过程是:红外发射管发出红外光,当遇到黑色,不反射红外光,比较器输出为高电平;当遇到白线,红外光反射回来,比较器输出为低电平。当左边检测到白色时小车右转,当右边检测到白色时小车左转,当两边检测到的都是黑色时小车前进,当两边检测到的都是白色时小车停止。图5障碍物检测、轨迹检测原理图四、软件设计本系统的软件用C语言编写,分为主程序,外部中断解码子程序、自动驾驶子程序、手动驾驶子程序、障碍物检测子程序、轨迹检测子程序、定时器1中断调速子程序等。主程序完成系统硬件的初始化、子程序调用等功能。主程序、解码子程序如图6、图7所示。