基于C51高级语言程序控制的智能循迹小车设计与实现
2015-02-21吕云芳陈帅帅郝兴森
吕云芳, 陈帅帅, 郝兴森, 张 浩
(承德医学院 生物医学工程系,河北 承德 067000)
基于C51高级语言程序控制的智能循迹小车设计与实现
吕云芳, 陈帅帅, 郝兴森, 张 浩
(承德医学院 生物医学工程系,河北 承德 067000)
针对智能小车自动循迹的要求,提出由车体模块、电源模块、单片机控制模块、电机驱动控制模块、电机模块、传感器模块等构成智能小车硬件系统,利用Keil uVision2集成开发工具进行C51高级语言程序设计,开发出控制软件。利用红外传感器检测小车的循迹轨道,并以STC89C52RC单片机为控制芯片根据接收的轨迹信息发出相应的控制指令,通过L298N驱动控制模块来驱动小车以实现循迹的系统总体设计方案,并采用了“反转式转向模式”和“反转式刹车模式”。实验结果表明,该智能小车硬件系统各模块选择合理,控制软件高效可行,小车整体性能优良,成功实现了自动循迹的功能,且采用“反转式转向模式” 和“反转式刹车模式”实现了极好的转向及刹车效果。
C51高级语言; STC89C52RC单片机; 智能循迹小车
0 引 言
智能小车,可以通过计算机编程来控制其行驶,可以按照预先设定的模式在一个特定的环境里自动的运行,无需人工干预,便可以完成预期所要达到的目标,是一个集环境感知、规划决策、自动行驶等功能于一体的综合系统[1-4];它集中地运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体[5,6]。
国外很多高校和科研机构较早进行了智能车的研究,已有许多技术成熟的产品。国外智能小车的研究始于20世纪50年代初[7],当时美国Barret Electronics公司开发出了世界上第一台自动引导车辆系统(Automated Guided Vehicle System,AGVS )。瑞典、德国、英国、日本、韩国等许多国家也相继开展了智能小车的研究并取得了很大的成果[8-9]。
我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。大多数研究处于针对某个单项技术研究的阶段,研究总体上落后于发达国家,并且存在一定的技术差距,但是我们也取得了一系列的成果[10-11],主要有:①中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。②南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车。我国飞速发展的经济实力必将为智能车辆的研究提供一个更加广阔的前景。关于智能小车的研究越来越受人关注。
该项目在设计智能小车硬件系统的基础上,用C51语言编程,研制出智能循迹小车系统。指导大学生从事此项科研,可以锻炼并提高其理论转化为实际运用的能力,为将来从事相关领域的科研工作打下坚实的基础。
1 硬件系统设计
由车体模块、电源模块、单片机控制模块、电机驱动控制模块、电机模块、传感器模块等构成智能循迹小车硬件系统。系统总体结构如图1所示
图1 系统总体结构
电源模块向电机驱动控制模块供电,电机驱动控制模块向单片机控制模块供电并接受来自单片机控制模块的指令以驱动电机模块,单片机控制模块向传感器模块供电并接受来自传感器模块的检测信息。
1.1 车体模块
选用亚克力板作为小车底盘。亚克力即特殊处理有机玻璃,具有优异的强韧性,抗冲击力强,抗老化性能好;自重轻,可有效减少驱动电源能耗;绝缘性能优良,适合各种电器设备;加工性能良好,易于加工制作。
选用2个65 mm优质轮胎与直流减速电机轴相连作为后轮——驱动轮;一个33 mm万向轮固定于车体正前端作为前轮——从动轮,既简单又灵活。三个车轮构成稳定的等边三角形结构。
1.2 电源模块
考虑到小车运行过程中,需要给单片机、电机、传感器等各模块供电,选用7.2 V/1 300 mAh大容量Ni-MH充电电池组,为整个系统提供强大的动力支持。
1.3 单片机控制模块
选用STC89C52RC单片机开发板,支持USB供电和外部供电两种供电方式。STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的增强型8051单片机,晶振:11.059 2 MHz,8KB用户应用程序空间,支持ISP/IAP编程,工作电压:5.5~3.3 V,具有EEPROM功能及看门狗功能[12-13]。开发板的GND、P31、P30、VCC引脚分别与PL-2303 USB下载器的GND 、RXD、TXD、5 V口相连,可接受电脑USB供电并下载程序到单片机。开发板载有3.3 V电源芯片,实现3.3 V电压输出,可为红外传感器供电。开发板上有32个I/O接口,满足各种连接需求。
1.4 电机驱动控制模块
采用L298N双H桥电机驱动控制模块[14]。该模块采用SMT工艺及高质量铝电解电容,稳定性高,当电池电压逐渐下降时,依然能提供稳定的电压输出,自身热消耗小,使用效率高。模块输入电压为5~12 V,自带稳压芯片,可以为直流电机、外部单片机或其它模块提供稳定5 V电源(稳定的电源是智能小车系统稳定工作的前提和必要条件)。L298N驱动芯片接受单片机的控制信号,对电机进行正反转、停止的操作。
L298N模块可以直接驱动两路5~30 V直流电机,模块L298N模块的VDD、GND端口分别连接电池组的正、负极;模块的输出端口OUT1、OUT2连接左电机的正、负极,OUT3、OUT4连接右电机的正、负极;模块的IN1、 IN2、 IN3 、IN4端口分别与单片机控制端IO口P10、P11、P12、P13相连。
1.5 电机模块
采用性能优越的2个130直流减速电机作为后轮驱动。直流减速电机的控制方法比较简单[15],只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。直流减速电机具有可靠性高、转矩大、能耗低、振动小等优点。
1.6 传感器模块
选择载有LM393比较器的红外线传感器模块[16]。车体前部装有左、中、右三个红外传感器。该传感器对环境光线适应能力强且可方便地调节检测距离。传感器的OUT、GND、VCC口分别与单片机开发板上相应的IO、 GND、VCC口相连。该传感器有对红外发射和接收管,发射管发射出一定频率的红外线,红外线反射回来被接收管接收,接收管的电阻会发生变化(电阻的变化取决于接收管所接收的红外线强度,常表现在反射面的颜色和反射面离接收管的距离两个方面),导致电路上的电压也相应变化,经过LM393比较器电路处理之后,经OUT接口输出数字信号给单片机,单片机对接收到的信号进行分析处理,发出相应的控制指令来控制电机转动以调整行进方向,完成循迹任务。
2 软件系统开发与设计
2.1 软件系统开发工具的选择
选择Keil uVision2集成开发工具。uVision2 IDE是一个基于Window的开发平台,非常适合嵌入式系统的开发。
2.2 程序设计语言的选择
选择C51高级语言来进行程序设计[17]。C51高级语言是由C语言继承而来的,兼备高级语言与低级语言的优点。C51语言运行于单片机平台,支持的微处理器种类繁多,可移植性好。与汇编语言相比,用C51语言可大大缩短编写、调试程序的时间。
2.3 软件开发流程
使用Keil uVision2,开发流程如下:
(1) 创建一个项目,从器件库中选择目标器件。
(2) 增加并配置目标器件的启动代码。
(3) 用C51语言创建源程序文件并把它加入到项目中。
(4) 针对目标器件设置工具选项
(5) 用MAKE工具对源程序文件进行编译和连接,生成嵌入式应用HEX文件。
(6) 用STC_ISP_V480下载软件通过PL-2303 USB下载器将HEX文件下载到单片机中。
(7) 测试,修改源程序。
2.4 主程序设计
智能循迹小车采用后轮驱动,通过调制后面两个轮子的转向和转速而达到控制小车转向的目的。在车体前部分别装有左、中、右三个红外传感器。小车行进过程中,单片机不停地扫描传感器接口,根据接收到的传感器信息进行判断和处理。当小车左边的传感器检测到黑色轨迹时,说明小车车头向右边偏移,这时单片机调用左转控制函数控制小车左转,车体向左边修正;当小车右边的传感器检测到黑色轨迹时,说明小车车头向左边偏移,单片机调用右转控制函数控制小车右转,车体向右边修正;当左、右两边的传感器均未检测到黑色轨迹,只有中间的传感器检测到黑色轨迹时,说明轨迹在车体的中间、不需修正车体,单片机调用直行前进控制函数控制小车正常行驶,小车就会沿着黑色轨迹一直行走而达到循迹的目的。左右传感器同时检测到黑线而中间的传感器未检测到黑线时停止行驶。
主程序流程图如图2所示:
图2 主程序流程图
主程序部分代码如下:
/********************************************/
/* 程序名:自动循迹 */
/* MPU型号:STC89C52RC 晶振:11.0592 MHz */
/********************************************/
#include〈reg52.h〉
sbit Right1=P1^0;//定义单片机控制右电机的引脚
sbit Right2=P1^1;//定义单片机控制右电机的引脚
sbit Left1=P1^2;//定义单片机控制左电机的引脚
sbit Left2=P1^3;//定义单片机控制左电机的引脚
sbit L=P0^0;//定义单片机连接左传感器的引脚
sbit R=P0^2;//定义单片机连接右传感器的引脚
sbit M=P0^1;//定义单片机连接中传感器的引脚
/********************************************/
void delay(int z)//延时函数
{
int i,j;
for(i=2;i>0;i--)
for(j=z;j>0;j--);
}
/*********************************************/
void main()//主函数
{
while(1)//无限循环
{
Go();//直行函数
while((L==1)&&(R==0)&&(M==0))/*仅左传感器检测到黑线时左转*/
{
TurnLeft();//左转函数
}
while((L==0)&&(R==1)&&(M==0))/*仅右传感器检测到黑线时右转*/
{
TurnRight();//右转函数
}
while((L==1)&&(R==1)&&(M==0))/*左右传感器同
时检测到黑线而中传感器未检测到黑线时停止*/
{
Stop();//停止函数
}
}
}
3 实验结果
实验场地选择室内干净平整浅粉红色瓷砖地面,循迹轨道为宽1 cm的黑色胶带。轨道分为圆形、矩形和S型。环境光线为一般强度的漫射自然光。
采用左、中、右三个红外传感器进行轨道检测。中传感器置于车体前端中央(相对于轨道中间),左、右传感器分别置于两侧(相对于轨道外侧),与中传感器间隔大约3.5 cm。当小车脱离轨道时,即当中传感器脱离轨道时,等待外侧任一个传感器检测到黑线后,做出相应的转向调整,直到中传感器重新检测到黑线(即回到轨道上来),再恢复正向行驶。
经反复调整红外传感器离地面的距离及红外发射功率地大小,达到了精准检测的目的;通过延时函数——delay函数调整占空比来控制直行、左转、右转的速度,经多次修改delay函数的参数并测试表明,占空比为75%时可得到理想的行驶速度与循迹效果。左、右转向时分别采用“左轮反转+右轮正转”与“右轮反转+左轮正转”的“反转式转向模式”,利用轮胎与跑道的摩擦力抵消惯性效应。
通过对智能小车系统的多次整体调试,实验取得圆满成功。实验结果如表1所示。
表1 智能循迹小车实验结果
实验表明,智能小车循迹成功的关键因素有两个:一是红外传感器离地面的距离及红外发射功率的高低,二是小车直行、左转、右转的速度。前者决定了红外传感器检测轨迹的准确性和灵敏度,后者与小车循迹的准确性和成功率有关。“反转式转向模式”缩短了转向的时间,提高了转向的灵敏度,同时控制好行驶速度,就可保证小车在循迹过程中左右摇摆幅度很小、紧贴轨道行驶。同理,采用“反转式刹车模式”取得了瞬时刹车的效果。
4 结 语
设计的智能循迹小车系统的硬件系统各模块选择合理,经济实用,基于C51高级语言开发的控制软件高效可行,小车整体性能优良,成功实现了自动循迹的功能。该科研项目为大学生进行机器人竞赛和毕业设计建立了实物平台,同时改变了学生学习模式,激发了学生的学习兴趣,提高了学生的实际动手能力、思考问题能力以及科学知识的综合应用能力,也是验证学生学习效果的有力工具。
[1] 李 明.先进制造技术与应用前沿——机器人[M].上海:上海科学技术出版社,2012.
[2] 王绍坤.基于ARMS的无线遥控车系统设计与实现[D].长春:吉林大学,2011.
[3] 陈 松,宋晓琳.基于DSP的智能小车路径跟随系统设计[J].工程设计学报,2012,19(4):312-317.
[4] 李 波,杨 卫,张文栋,等.一种智能小车自主寻/循迹系统设计[J]. 计算机测量与控制,2012,20(10):2798-2801.
[5] 朱思敏.自循迹智能小车控制系统的设计与实现[D].杭州:浙江工业大学,2013.
[6] 宋永献,马娟丽,贺乃宝,等.基于TMS320F2812的智能循迹小车控制系统设计[J].计算机测量与控制,2011,19(9):2128-2130.
[7] 易礼智.基于机器视觉的避障智能小车系统研究[D]. 长沙:中南大学,2012.
[8] 谢 敏.基于MC9S12XS128智能小车控制系统的研究与应用[D].南昌:南昌航空大学,2012.
[9] 吴斌华,黄卫华,程 磊,等.基于路径识别的智能车系统设计[J],电子技术应用,2007(3):80-82.
[10] 卢卫娜.车辆视觉导航方法研究[D].西安:西北工业大学,2006.
[11] 石 亿.嵌入式智能小车运动控制系统的研制[D]. 湘潭:湘潭大学,2012.
[12] 陈贵银.单片机原理及接口技术[M].北京:电子工业出版社,2011.
[13] 殷 巧.无人工作站可移动环境监控系统设计[D].成都:西华大学,2013.
[14] 朱利洋.基于单片机的智能寻迹系统设计[D].杭州:浙江工业大学,2013.
[15] 颜增显,闫秀燕.基于单片机STC89C52智能小车设计[J].火力与指挥控制,2011,36(12):198-201.
[16] 卢 威.智能小车避障系统的设计与实现[D]. 南昌:南昌大学,2012.
[17] 徐爱钧.8051单片机实践教程——asm汇编语言与c51高级语言应用[M].北京:电子工业出版社,2005.
Design and Implementation of Intelligent Tracking Car Based on C51 Advanced Language Program Control
LVYun-fang,CHENShuai-shuai,HAOXing-sen,ZHANGHao
(Biomedical Engineering Department, Chengde Medical University, Chengde 067000, China)
For the purpose of intelligent car automatic tracking, we put forward that an intelligent car’s hardware system which is composed of a vehicle body module, power supply module, MCU control module, motor drive control module, motor module and sensor module. The Keil uVision2 integrated development tool C51 programming to is used to develop control software. Infrared sensors is used to detect car tracking trajectory. STC89C52RC MCU sends the corresponding control command according to the track information received. L298N drive control module is used to drive the car in order to achieve the overall design of the system tracking, and the “reversal type steering mode” and “reverse brake mode” are also used. Experimental results show that the intelligent car hardware modules selection is reasonable, control software is feasible and efficient, overall performance of the car is excellent. It successfully implements the automatic tracking function, and the application of “reversal type steering mode” and “reverse brake mode” achieves excellent steering and braking effect.
C51 advanced language; STC89C52RC single chip microcomputer; intelligent tracking car
2014-06-23
承德医学院大学生科研基金项目(201471)。
吕云芳(1970-),男,河北内丘人,硕士,讲师,主要研究方向为人工智能、计算机应用。
Tel.:13091336156;E-mail:health2002@163.com
TP 273.5/391
A
1006-7167(2015)03-0142-04