基于直流电机控制的智能寻迹小车
2018-11-16
北京信息科技大学,北京 100192
一、引言
目前,交通事故作为最危害人类的灾祸之一,已被联合国列为需要重点解决的问题之一。根据世界卫生组织2015年发布的报告,2010年至2013年,每年约有125万人死于道路交通事故,平均25s便有1人死于车祸。[1]。有效减少交通事故、降低伤亡人数及财产损失已经刻不容缓,而自动驾驶技术的成熟也为这一问题的解决提供了有力支持。近几年来自动驾驶技术受到了越来越多的关注,国内外专家也将它视为技术热点。
聚焦于实际道路中的自动驾驶研究,本文设计了一种基于光电传感器的自动避障寻迹小车。根据光电传感器的检测,单片机判断信号,并且把信号输入到驱动芯片,通过PWM实现对电机的启停、方向、加减速的控制。小车具有自动寻迹、起始点检测以及自动声光报警等功能[2-3]。
本方案的优势如下:首先是选择功能强大的STC12C5A单片机,该单片机处理速度快,是普通51单片机的10倍,适合于智能车的研究,并且外设功能齐全,特别是集成2路PWM[4],很好的解决研究内容;其次,通过PWM控制直流电机的速度,控制方法控制性能好。
二、系统方案
本设计采用STC12C5A单片机作为整机的控制单元。以STC12C5A单片机为核心的控制电路,采用模块化的设计方案,运用光电传感器组成检测电路,实现小车在行驶中自动寻黑线的功能,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动小车的智能化控制[5]。
在本系统中,反射式红外光电传感器检测黑线,然后将信号传送到单片机系统进行处理,使小车沿轨道自主行走[6],采用H型脉冲宽度调制(PWM)全桥式驱动电路控制电机的转向,实现电动小车的正反向行驶、快慢速行驶及转弯[7]。此系统比较灵活,采用软件方法来解决复杂的硬件电路部分,使系统硬件简洁化,各类功能易于实现,具有高度的智能化、人性化,一定程度体现了智能,能满足系统的要求[8]。
本次设计的系统有如下优点:
1、数据采集系统以单片机为控制核心,用户可以与之进行交互工作,完成数据的采集、存储、计算、分析等功能;
2、系统具有低功耗、小型化、高性价比等特点;
3、软件系统采用C语言编写,便于用户的开发以及扩展功能。
三、系统的硬件设计
系统总体设计如图1所示。该系统的硬件设计具体如下:
1、循迹传感模块电路
循迹传感模块电路根据反射接收原理配置了一对红外线发射、接收传感器。该电路包括一个红外发光二极管、一个红外光敏三极管及其上拉电阻。如图2所示。红外发光二极管发射一定强度的红外线照射物体,红外光敏三极管在接收到反射回来的红外线后导通,发出一个电平跳变信号[9]。
当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,那么图2中光敏三极管将导通,输出低电平,当小车行驶到黑色引导线时,红外线信号被黑色吸收后,光敏三极管截止,输出高电平,从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机I/O口,当I/O口检测到的信号为高电平时[10],表明红外光被地上的黑色引导线吸收了,表明小车处在黑色的引导线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。即当小车底部的某边红外线收发对管遇到黑带时输入电平为高电平,反之为低电平。
2、电机驱动模块
采用电机驱动芯片L298N。L298N为单块集成电路,高电压,高电流,4通道驱动,可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,既可以非常方便地对电机进行正反转、停止的操作,亦能满足直流减速电机的大电流要求[11]。图3为L298N电机驱动模块电路,表1是其使能、输入引脚和输出引脚的逻辑关系。调试时依照表1,用程序输入对应的码值,能够实现对应的动作。
3、电机模块
表1 L298N的引脚和输出引脚的逻辑关系
选用直流电机作为驱动电机。直流电机的控制方法比较简单,只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。PWM调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比实现对电机转速的调节。
4、控制模块电路
单片机是整个智能循迹小车的核心,控制系统的所有模块工作。本系统中,考虑到小车的控制系统需要用到两路的PWM脉冲调制、较大的Flash存储空间和较快的数据处理能力,所以采用的是STC12C5A单片机。STC12C5A单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8倍~12倍。内部集成MAX810专用复位电路、2路PWM、8路高速10位A/D转换(250K/s)、双串口[12],特别适用强干扰场合。片上具有可编程 Flash 存储器,Flash允许程序存储器在系统可编程,亦适于常规编程器。外部中断I/O口7路,传统的下降沿中断或电平触发中断,并新增支持上升沿中断的PCA模块,3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟[13],独立波特率发生器可以在P1.0口输出时钟,使得STC12C5A为众多嵌入式控制应用系统提供高灵活超有效的解决方案。图4为STC12C5A主要连线图。
5、电源模块
在本系统中,需要用到的电源有单片机的5V,L298N芯片的电源5V和电机的电源7V~15V。所以需要电源的提供必须正确、稳定、可靠。
采用双电源。为了确保单片机控制部分和后轮电机驱动的部分的电压不会互相影响,要把单片机的供电和驱动电路分开来,即用6节干电池7.2V来驱动电机芯片,然后用7805稳压管来稳成5V供给单片机,后轮电机的电源用LM1117-3V供电,这样有助于消除电机干扰,提高系统的稳定性。
四、系统的软件设计
1、程序功能描述
根据题目要求软件部分主要实现躲避轨道边缘黑线和调速。
(1)躲避边缘黑线:实现小车沿轨道行驶不会偏离跑道;
(2)调速:调节小车在转弯区和超车去车速快慢的调节。
2、程序设计思路
通过判断左边和右边传感器送过来的信号进行判断是否进行左右转动调节,由前方传感器判断是否进行转弯,通过单片机送来的指令使小车行驶。图5为软件流程图。
软件的编写是在KEIL4编译环境下,使用C语言开发,编程思想在于单片机对光电传感器传来数据的判断以及对于电机控制时使用的PWM输出。PWM信号是利用单片机编程实现的,使用定频调宽法,即脉冲信号的频率(周期)是固定的,通过调节脉冲的宽度即电压为高电平状态的时间来改变脉冲信号的占空比(在一个周期中,电压值为高电平状态的时间占一个周期的百分比),从而改变电机电枢两端的平均电压值,这样就实现了直流电机的调速目的。
五、测试方案与测试结果
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:自制跑道、秒表
自制跑道测试:测试数据如表2所示
测试结果:自制跑道上的成功率为60%,测试表明在电量偏小时成功率最高
表 2 测试数据
六、测试分析与结论
根据上述测试数据,由此可以得出以下结论:自动沿预设轨道行驶小车在行驶过程中,能够自动检测预先设好的轨道,实现直道和弧形轨道的前进。若有偏离,能够自动纠正,返回到预设轨道上来。本设计利用单片机输出的PWM波经L298N实现对电机转速的控制,从而实现小车的智能化。该小车具有自动寻迹,起始点检测以及自动声光报警等功能,基于稳定的硬件电路设计以及精确可靠的软件算法,小车能够实现预期功能。