摘 要:教育机器人有其灵活性和精确的优点,并且易用、易学和扩展性强,因而在社会有其广大的市场和发展前途。介绍了红外测距模块犹如机器人的眼睛,实现机器人的避障功能,并且通过液晶显示使人们知道机器人离障碍物的精确距离,从而更加灵活控制机器人。
关键词: 教育机器人;凌阳单片机;红外测距;液晶显示;A/D转换
0 引言
针对目前市场上教育机器人存在的不足,研究更加灵活、易用、易学和扩展性强的教学机器人,服务于小学的机器人技术教育、信息技术教育、电子技术教育、小学生创新设计。本文主要针对机器人的红外测距和液晶显示两个模块的硬软件设计以及A/D转换的过程进行了较详细的论述。本文所设计的系统的核心是一个基于凌阳SPACE061A微控制器的可扩展的控制平台[1]。
此教育机器人利用具有强大扩展功能的凌阳单片机与模拟输出的Sharp GP2D12红外测距传感器模块硬件相连并通过C语言程序的软件支持来实现机器人的测距,从而实现机器人的避障功能。同样采用SMC1602C液晶显示模块来实现对测量距离的精确显示,从而使人们很直观地知道机器人(车)与障碍物的距离,从而更加灵活地控制机器人。同时利用凌阳单片机的8通道10位精度的A/D转换模块的其中一个通道(其中一个通道专为声音模数转换器,有声音录放功能)把来自红外测距模块的距离转化的电压模拟输出量转换成数字量。此机器人体积小,功耗低,并且测量转换精度高,能够在线下载程序;其图形化C语言编译器基于流程图的图形化交互式C语言,简单直观,易于小学生学习和使用,适合小学生的思维方式[2]。
1 系统的硬件设计及实现
教育机器人硬件系统主要由SPCE061A单片机、红外测距模块、液晶显示模块、电源、下载口、晶振和复位电路组成,如图1所示。其中,凌阳单片机是机器人的心脏和核心部分,与外接功能模块相连,实现数据的转化、输入输出和处理功能,从而使各模块能够正常运行和实现各模块的协调工作。红外测距模块:采用模拟输出的Sharp GP2D12距离传感器,测量机器人与外界障碍物的距离,并把数据经A/D转换后传输给单片机处理,从而实现机器人的避障功能。液晶显示模块:采用SMC1602C液晶显示模块,单片机把输入的距离信号传输给液晶显示模块,从而实现对测量距离的精确显示,使人们很直观地知道机器人(车)与障碍物的距离,从而更加灵活地控制机器人[3]。电源模块:由带锁开关、电压调整器SPY0029芯片、三端稳压器7805模块、发光二极管、稳压管、电容电阻等器件组成,为单片机和各模块提供12 V、 5 V、3.3 V的电压,保证单片机和各模块能够正常工作。外部上电复位:通过某种方式,使单片机内存各寄存器的值变为初始的操作称为复位,由复位键、电容电阻、LED指示灯组成,其目的是为了通过对系统的电源电压进行监控,而使系统运行在一个正常、可靠的工作环境,并在一旦出现电源异常的情况下能立即采取相应的措施,使系统及时恢复正常。晶振模块:由32 768 Hz的晶振和两个电容构成,作为单片机的时钟信号,为单片机提供系统时钟、实时时钟和时间基准信号,从而保证单片机正常运行和程序的执行。下载口:由数据缓冲器74HC244和电容、电阻、稳压管等组成。用随机带有的一根连接电缆与计算机打印机端口连接,即在线调试或把写好的程序直接下载到机器人控制器中。
2 红外测距模块原理
图2反映了红外测距的原理,如图知道了距离L和角度?兹,根据简单的数学方法即可求出障碍物与机器人(车)的距离Z。图3为GP2D12的输入输出关系曲线。
从图3可以看出电压与距离的变化关系不是成线性的,其关系曲线为下降抛物线,距离测量范围为10~80 cm,电压范围是0.4~2.5 V。
因为GP2D12输出的距离信号是电压模拟信号,所以要经过A/D转换后,才能够被单片机接收和处理,因此A/D转换至关重要,但因为凌阳单片机内置7通道10位电压模-数转换器(ADC),所以GP2D12可以直接与凌阳单片机相连。SPCE061A有8路可复用10位ADC通道,其中一路通道(MIC_In)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行A/D转换。其余7路通道(Line_In)和IOA[0~6]管脚复用,可以直接通过引线(IOA[0~6])输入,用于将输入的模拟信号(如电压信号)转换为数字信号。它由DAC0和逐次逼近寄存器SAR(Successive Approximation Register)组成。所以其A/D转换的原理是逐次逼近式,即:首先将SAR中数据的最高有效位试设为‘1’,而其他位则全设为‘0’,即10 0000 0000B。这时,DAC0输出电压VDAC0(1/2满量程)就会与输入电压Vin进行比较。如果Vin>VDAC0,则保持原先设置为‘1’的位(最高有效位)仍为‘1’;否则,该位会被清‘0’。接着,逐次逼近式控制又将下一位试设为‘1’,其余低位依旧设为‘0’,即110000 0000B,VDAC0与Vin进行比较,若Vin>VDAC0,则仍保持原先设置位的值,否则便清‘0’该位。这个逐次逼近的过程一直会延续到10位中的所有位都被测试之后,A/D转换的结果保存在SAR内。这种转换具有精度高、速度快、转换时间固定的优点,从而保证了液晶显示的及时性、精确性[4]。
3 系统的软件设计及实现
软件的编程主要是实现红外测距模拟电压量的A/D转换处理、避障功能的实现和液晶显示。程序采用C语言编辑,并在凌阳单片机支持的Suplus IDE集成环境下运行和执行。程序思路如下[5]:
(1)定义地址端口;
(2)液晶模块和凌阳单片机I/O口初始化;
(3)从GP2D12红外测距模块的电压与距离的关系曲线中采集15个参考点(并且对应A/D转换后的数据);
(4)进行A/D转换操作的准备工作;
(5)开始进行A/D转换;
(6)根据15个参考点,计算出采集到的距离;
(7)使液晶作好接收数据的准备,并发送数据;
(8)液晶显示。
机器人(车)从远处过来,红外测距模块GP2D12不停地对外测量机器人(车)与障碍物的距离,经A/D转换为数字信号后输入到凌阳单片机的Flash中,数据经单片机处理后经I/O口输出给液晶显示模块显示,显示范围为10~80 cm。在程序中设好一个数值为拐弯阈值,GP2D12每测一个数据都与设定值相比较,如果不相等,则继续前进,不发生拐弯;如果相等,使机器人(车)拐弯,从而自动躲避障碍物[6]。
程序流程如图4所示。从图4可以看出取了15个参考点,并且包括GP2D12红外测距范围的起始点和终点。当测距数据超出了10~80 cm的范围时,设置fRet=0,即液晶显示为零。当所测数据等于这15个参考点时,则直接输出数据,并且程序跳出子程序。当所测数据非15个参考点时,此时要经过流程图中提到的一种数学方法计算求出。此计算方法的详细步骤如下:测到的非15个参考点的距离,从第一个参考点依次循环向后比较,若此点A/D转换的数据小于某一个参考点的A/D转换值,则这个点位于此点与上一个参考点之间,测出这个点横坐标与两个参考点横坐标的距离比,此时可以确定出此点在两个参考点的横坐标的位置,此时再加上上一个参考点的横坐标,就可以确定出此点的横坐标。同理得此点纵坐标在两个参考点的位置,此时在加上相邻的下一个参考点的纵坐标,即可得到此点的纵坐标,横坐标纵坐标都知道了,即可确定此点的位置,然后跳出子程序,最后返回[7]。
4 结论
在上述设计方案的基础上研制出了样机。样机的整体性能已经达到了预期要求。但在以下方面有待改进:
(1)电机驱动方式方面:目前所使用的逻辑驱动是开环控制,只能利用PWM实现电机的控制,远远不能满足精确度的要求。若能给电机加上码盘和用PID方式对电机进行精确控制,在比赛中将会有更大的主动权。
(2)测距方面:目前所使用的红外传感器只能实现简单的比较。精确地计算差值并利用差值对转向进行精确的控制,这也是改进的方向之一[8]。
(3)在具体的硬件和软件设计方面要注意以下问题:①AD转换口IOA0-6要设置为悬浮式输入口;②外部接的电阻不能太小,否则就能把电压拉下来;③液晶显示有锁存功能,液晶的数据口和AD转换口不能重复。
参考文献
[1] 薛钧义,张彦斌.凌阳十六位单片机原理及应用[M].北京:北京航空航天大学出版社,2003.
[2] 李晶皎.嵌入式语音技术及凌阳16位单片机应用[M].北京:北京航空航天大学出版社,2003.
[3] 李正军.计算机控制系统(第一版)[M].北京:机械工业出版社,2005.
[4] 王齐浩.模拟电子技术基础(第二版)[M].济南:山东科学技术出版社,2003.
[5] 严钟豪,谭祖根.非电量电测技术(第2版)[M].北京:机械工业出版社,2003.
[6] 张广军.光电测试技术(第一版)[M].北京:中国计量出版社,2003.
[7] 周旭,严玉龙,王珊珊,等.基于CANopen协议的轮式机器人控制系统实现[J].微型机与应用,2013,32(23):20-23.
[8] 李欢,魏衡华.基于仿人机器人的无线视频监控系统设计[J].微型机与应用,2014,33(10):88-91,94.