2001年全国大学生电子设计竞赛中的C题,要求设计一个以单片机为核心器件实现对行驶中的电动模型汽车自动控制系统,控制过程是利用反射式光电检测器采集数据,通过软件完成对电动模型汽车在不同路段的行驶速度实时控制,用数码管对指定行程和所用的时间进行显示,同时利用红外数传方式将在限速区、终点区和返回到起点区后的时间和距离数据向手持显示装置单向传送。系统将键盘设在小汽车中对其速度的控制调整更加方便、更加精确。
方案论证
根据题目的基本要求,设计任务主要是完成电动小汽车在规定行驶路线中的速度控制,根据不同的行驶路段采用变速行进,对行程中的有关数据进行处理显示。为了使汽车与固定点保持联络,本系统加装了红外数码传感器装置,以实现对汽车的行驶过程定位。下面对系统的实现方案进行论证。
1.数据采集方案的选择数据采集一般可采用以下几种方案:(1)使用发光二极管和光敏三极管组合;(2)使用红外发光二极管和接收管组合;(3)利用激光。
通过对比,在本设计中由于是近距离探测,我们采用方案二来完成数据的采集。由于红外光的波长比可见光长,因此受可见光的影响较小。同时红外系统还具有尺寸小、重量轻、能有效防止可见光波的干扰、对辅助装置要求最少、对人眼无伤害等优点。当然红外光也有一定的缺点,如在潮湿的大气、雾和云中传播时会衰减,所以只适合于室内通信。我们选用的反射式光电检测器具有体积小、灵敏度高、线性好等特点,外围电路及电路设计简单、安装方便、电源要求不高、性能稳定可靠,用它作为近距离传感器是较理想的选择。
2.显示装置的选择车载显示我们采用了数码管,对时间和路程通过按键选择显示内容。
3.通信方式的选择可用无线电或红外光方式,无线电方式通信距离较远,但电路较复杂;而红外光方式适合于近距离通信,电路较简单。目前只考虑单向传输,所以我们选择了红外光作为载波来传送信息。
4.电源供电及车载重量的选择考虑电动车马力和车载重量及摩擦阻力等问题,电路器件应从功耗小、体积小和重量轻三方面进行选择,所以电源采用6节5号电池组成9伏直流电源。
系统框图及工作原理
上图给出系统组成框图,数据采集通过光电传感器完成对不同标志的检测,并以电信号脉冲的形式送人单片机的INTO和Tl口。单片机对送来的信号进行分析、运算、处理,从Pl.1口输出信号控制马达的转速,使电动车的行驶速度得以调整;电动车返回起点后,立即从单片机的串行通信口输出数据显示已行驶的距离和所用时间。另外,单片机从Pl.7口输出数据通过红外方式在指定位置向手持接收系统发送,手持接收系统也是由一单片机进行数据处理,这样我们可以随时知道电动车运行的时间和位置情况。键盘是便于在调试时参数的设置,使小车的速度和位置更精确。
硬件原理分析及设计
由于跑道是白色的,在某些规定区域贴有黑色线条标志,根据颜色对光的吸收和反射特性,光接收管在黑白区域的导通状态不相同。当小车在规定的跑道行驶时,贴在小车底部的反射式光电检测器就会作出不同的反应。小车前端贴有一片光电传感器,对线区的数据进行采集,把变化的光信号转换为电信号,此信号经施密特触发电路整形后,送入单片机的中断端(INTO)。在小车的后轮上贴一白纸及轮框上也贴有一片光电传感器,对车轮的转数进行采集,送进计数器端口(Tl)。经单片机处理以后,用P1.0、P1.1分别控制电机的转向以及脉宽,车载显示器在运行过程中显示通过地面标志的数量。在车停止后,显示小车通过全程的时间及里程,显示部分设置两个按键,一个用来重启单片机,另一个用来翻页查看小车运行过程中的各种参数。手持显示部分是由一体化红外接收头将发送过来的串行数据送入单片机,采取软件上的模拟串行通信的手法,对指定位置的里程和运行时间进行显示。
1.数据采集部分利用红外反射式检测器对黑色或白色有敏感反应的特性,可完成数据的采集,上图为数据采集电路原理图。图中1、2端为光发射,3、4端为光接收。当光电反射器在黑白面上移动时,4端便得到一个变化的脉冲电压。在对不同介质材料进行综合比较后,我们选择光电反射器离地面为0.5cm的数据为基准,此电压经过一个施密特电路整形后得到一TTL电平送单片机。
我们利用NE555定时器来构成施密特电路,输入输出之间的迟滞回线特性关系如上图所示。当电压由低向高变化时:0<Vi<l/3VCC,Vo=“1”:l/3Vcc<Vi<2/3Vcc,Vo保持不变;Vi>2/3Vcc,Vo翻转为“0”。当电压由高向低变化时:2/3Vcc<Vi<Vcc,Vo=“0”;l/3Vcc<Vi<2/3Vcc,Vo保持不变;Vi<1/3Vcc,Vo翻转为“l”。当输入低电平ViL为0.49V,高电平ViH为4.19V,压差为3.70V。若Vcc=5V,有l/3Vcc=1.67V,2/3Vcc=3.33V,能满足要求。但为了适应实际情况,采取可变参考电压,改变NE555第⑤脚电压,可取得不同的回差电压(1/3Vcc),此电压越大,电路抗干扰性越强,但触发灵敏度越低。综合考虑,我们取⑤脚电压为3.60V,则l/3Vcc=1.2V,2/3Vcc=2.4V。参考图2,当光电传感器检测到黑线时,第4端电压为高电平4.19V,NE555的第②脚也为高电平,③脚输出低电平“0”;反之,在白纸上时,NE555的③脚输出高电平“1”。利用下降沿可触发AT89C51的中断“0”。同样,在黑色车轮上贴一白纸,转动时也有高低电平的变化,触发AT89C51的定时器T1进行计数,对轮子转过的圈数计数,从而可得到小车的行驶速度和距离。
2.电机转速控制小车运行速度的测量是通过在后轮加上反光片,当轮子转动时,光电反射器会检测到脉冲,利用单片机的一个计数器对车轮所转的圈数进行计数,同时通过另一个计数器对时间进行测量,结合两个计数器的值,由单片机计算出小车运行的速度,而里程则是由车轮的周长和所转的圈数计算得出。
本系统在小车电机的控制部分利用8050、8550等不同三极管的组合,构造一座“桥”,实现了对驱动电机的轻松控制,电机驱动电路如下图,其控制过程如下:Pl.0为正反转控制端,Pl.1为启停控制端。
(1)Pl.1为高电平时:当Pl.0为低电平时,则“向后”端为低电平,由Q51构成的反相器使向前端为高电平。于是,Q52、Q53、Q54导通,Q55、Q56、Q57截止。其中Q52为激励级,Q53、Q54为功放级。电流从+9V经Q53到电机“+”端再到“-”端最后经Q54人地端,电机正转;当Pl.0为高电平时,则反之,Q55、Q56、Q57导通,Q52、Q53、Q54截止,电机反转。
(2)Pl.1为低电平时,“向前”和“向后”端均为低电平,电机停转。
该“桥”的优点是原理简单、易控制、带负载能力强。在单片机的配合下,通过调脉宽的方法,实现了对驱动电机的轻松调速,通过键盘对具体参数的修改,可以使小车适应各种不同的电源。正因为采取了该项技术,使我们完成基本要求的过程变得简单易行。
在速度控制方面,一般是通过改变加在电机两端的电压来实现的,可以是连续改变(加直流电压),也可以是断续改变(加脉冲电压)。为了简单实用我们采用了脉宽调速,脉冲宽度的变化可以通过硬件或软件来实现。硬件实现是通过改变振荡电路中RC参数来调整充放电时间;而软件的做法是通过设置高电平及低电平的保持时间来达到。比较而言,软件调整量化指标更高、调整更可靠、更方便、更准确。于是,键盘成了人机交流必不可少的器件。
脉冲频率对电机转速也有影响,脉冲频率高连续性好,但带负载能力差,频率低则反之。经实验发现,脉冲频率在15~20Hz效果最佳。
脉宽调速实质上是调节加在电机两端的平均功率,通过计算可发现汽车的速度与脉宽成正比。
软件编程时的考虑是设置脉宽这个变量,在P1.1的启停控制端产生20Hz可调脉宽方波。
3.显示与键盘显示部分采取独具创新的软件技术,仅使用三根线完成,即数据线、时钟线及输入输出控制线,通过对单片机串口的编程,创造性地实现了键盘显示与单片机之间的串行接口技术。外部硬件只使用两片74LS164和一片74LS166完成,通过该接口,我们使用了8个LED管,可继续扩展,也可以与键盘接口,其原理图见下图。
同时我们还有另一套方案,就是当单片机的串口被其他硬件占用时,我们同样可以仅使用一个I/O口,实现模拟串口功能,使硬件的应用更灵活、更方便。我们已在本系统中使用了模拟串口技术,实现了车载系统与手持显示系统的数据传递。这正符合了当今时代所追求的“尽量使用软件实现硬件”的原则,大大降低了外设硬件的成本。