基于单片机的多功能智能小车机器人
2014-01-17申江江齐银鹏陈方超
申江江,齐银鹏, 陈方超,陈 毓,梁 浩
(1.海军航空工程学院 航空训练基地,山东 青岛 266109;2.海军航空工程学院 青岛校区,山东 青岛 266041)
随着科学技术的日新月异及传感器技术的不断发展,各国对智能移动机器人的研制和开发力度也不断加大,各式各样的机器人进入社会生活的方方面面。机器人可以代替人力进行许多具有一定危险性的活动,进入一些人类难以涉足的空间,比如不久前成功在月球登陆的“玉兔”号月球车。本文设计的小车可以应用于无人驾驶机动车、无人工厂、仓库等领域,有实际应用推广价值[1]。
1 系统总体设计
本文设计的小车采用51单片机作为控制核心,使用光电传感器检测小车的运动状态,进行循迹和避障,并由LCD实时显示小车的运动状态。金属传感器检测到铁片后小车由循迹状态进入到避障状态,按下遥控器可使小车进入遥控状态,每次状态转换都有报警指示。智能小车实物照片及功能示意图如图1所示。
2 系统硬件设计
2.1 硬件总体设计
根据设计任务要求及功能实现的分析,画出系统的总体电路图,如图2所示。整个系统为模块化设计,实现简单。
图1 智能小车实物照片及功能示意图Fig.1 Car and description of car function
系统主要以单片机最小控制系统为核心,包括电源模块接口、外围传感器接口、LCD显示器接口、遥控模块接口、电机驱动模块接口、报警模块接口等,各部分共同构成了智能小车的整体。
图2 系统的总体电路图Fig.2 Circuit diagram of whole program
2.2 分系统硬件设计
2.2.1 循迹、避障模块
机器人要实现自动循迹功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。自动寻迹是基于自动导引小车 (AGV—auto-guided vehicle)系统,选择正确的路线行进。采用与地面颜色有较大差别的线条作引导,使用传感器感知导引线和障碍判断。为了简单起见,系统中使用了五个红外反射式光电传感器进行循迹和避障,其中三个ST178H型红外传感器用于寻迹,两个E18型用于障碍判断,传感器实物如图3所示。
图3 ST178H和E18型红外传感器Fig.3 ST178H and E18 infrared sensor
2.2.2 金属检测模块
当小车行进到黑线的尽头时,需要检测终点,由控制器发出指令,进入相应的程序。只要在运行轨迹的终点放置一块铁片,再用金属传感器检测金属片就可以实现,电路简单,不会占用很多CPU资源。本文选用了LJ12A3-Z-4/BX型电感式金属接近开关传感器,该传感器体积小,功耗低,工作电流只有0.5~3 mA,应用方便,输出信号可直接接单片机。
2.2.3 遥控模块
无线数据传输被广泛应用在车辆监控、遥控、遥测、小型无线网络、无线数据通信、机器人控制、数字音频、数字图像的传输等领域中[2]。为了实现对小车的遥控,需要一个无线遥控模块。本文采用DF无线数据收发模块,其工作频率为315MHz,为全球通用的ISM频段,发射频率<500mW。DF无线收发模块结合编解码芯片PT2262/2272可以将单片机发出的数据经过编解码之后发射出去。DF无线收发模块具有发射距离远,抗干扰性强的特点。无线发射/接收模块的实物图如图4所示。
图4 无线接收及发射模块Fig.4 Wireless receiving and transmitter module
2.2.4 显示模块
在小车行进时,需要显示当前的工作状态,显示装置就必不可少了。考虑到需要显示大量的字母,系统选择使用1602型LCD显示。1602的意思是每行显示16个字符,可以显示两行,为字符型液晶,即只能显示ASCII码字符,如数字、大小写字母、各种符号等。系统采用的1602为5 V电压驱动,16针接口,带背光,内置含128个字符的ASCII码字符集字库,只有并行接口,没有串行接口。
2.2.5 测速模块
系统中使用两个TCR5000型红外反射传感器对车轮转速进行测量,车轮上有黑白间隔的码盘,单片机对传感器输出的脉冲进行计数,通过计算一定时间内的脉冲数计算出小车的速度。TCR5000型红外反射传感器及码盘如图5所示。
图5 TCR5000型红外反射传感器和码盘Fig.5 TCR5000 infrared reflection sensor and Counting wheel
3 软件设计
系统软件设计采用C语言编程[3],并采用模块化设计,将各功能软件编写为一个个子函数,各个函数模块之间独立性强,需要时只要进行调用即可,具有很好的可移植性。系统软件设计主要包括外部中断0[4]的初始化,小车传感器初始化,LCD初始化及实时显示工作状态,小车启动,循迹程序,金属检测程序,声音报警程序,中断服务函数,避障程序,检测遥控指令,声音报警,遥控程序等。主程序流程图如图6所示。
图6 系统主程序软件流程图Fig.6 Flow chart of main program
将电源打开后,单片机上电复位,对外部中断0进行初始化,然后调用传感器初始化函数,LCD初始化函数,启动小车,LCD显示小车当前状态,开始调用循迹函数,对黑线进行检测,根据传感器信号判断小车与黑线的位置关系,由单片机输出相应的驱动信号,控制左右两轮的转速,使小车时刻保持沿黑线行走。当小车行驶到黑线的终点时,金属传感器检测到铁片,小车发出声音报警,同时进入中断服务函数,调用避障子函数,开始避障,并更新LCD显示内容。当遇到障碍时,小车会改变方向,绕过障碍物行驶。当按下遥控按键时,小车收到指令,发出声音报警,跳出避障程序,进入遥控程序,并更新LCD显示内容。此时,可以对小车进行遥控回收,完成整个测试任务。C51语言主程序如下所示:
int main(void)
{
TCON=0x05;
TMOD=0x11; //定时/计数器初始化
IE=0xAA; //外部中断0初始化
sensor_init(); //传感器初始化
car_ahead(); //小车启动
while(1)
{
car_follow(); //循迹子函数
}
}
void service_int0 ()interrupt 0 using 1 //外部中断 0服
务函数
{
car_ringing(); //报警子函数
while((P1&0x0f) ==0x00)
{
car_prevent(); //避障子函数
}
car_ringing();
while(1)
{
car_remotecontrol(); // 遥控子函数
}
}
4 结束语
对智能小车的高级开发可对它加装GPS(全球卫星定位系统)或加装基于Internet的接口电路、摄像头等,使它具备全球机动能力和远程控制功能。其典型应用为远程侦察机器人,智能探测机器人[5]等。随着不断地开发及产品的投入使用,智能寻迹、避障小车在无轨列车、无人驾驶方面将具有更广泛的应用前景和使用价值[6]。
[1]吴建平,殷战国,曹思榕,等.红外反射式传感器在自主式寻迹小车中的应用[J].中国测试技术,2004,30(6):33-35.WU Jian-ping,YIN Zhan-guo,CAO Si-rong,et al.Aplication of infared sensor in auto-guided motor[J].China Measurement Test,2004,30(6):33-35
[2]方建军,何广平.智能机器人[M].北京:化学工业出版社,2004.
[3]谭浩强.C程序设计[M].北京:清华大学出版社,2009.
[4]刘文涛.单片机C51语言应用设计[M].北京:人民邮电出版社,2007.
[5]张炜.网络机器人研究与发展分析[J].机器人应用,2009(3):6-7.ZHANG Wei.Reaseach and development analysis of internet robot[J].Robot Application,2009(3):6-7.
[6]刘凤然,田红芳,王侃.基于单片机的移动机器人自动避障控制系统[J].中国仪器仪表,2001(3):27-29.LIUFeng-ran,TIANHong-fang,WANGKan.Automatic obstacle avoidance control system of moving robot basing on SCM[J].China Instrument,2001(3):27-29.