2.3 红外避障模块设计
在小车行进过程中遇到障碍物,无法正常通过时,采用红外线检测器检测障碍物,并设计算法控制小车绕开障碍物继续寻迹前进。在小车前端两侧分别安装1个红外发射二极管(如东芝TLN110)进行红外信号的发射,红外线光源发出的信号调制到38kHz,使用2407A的PWM输出产生精确的信号。红外接收器由安装在车头中央的专用红外接收模块(如CRVPl738)对红外信号进行接收。小车前进路线中障碍物的判断原则:a.左边红外发射二极管发射信号,检测中央接收端,判断是否接收到信号;b.右边红外发射二极管发射信号,检测中央接收端,判断是否接收到信号;c.若左边发射时,有信号接收则小车左边有障碍物;若右边发射时,有信号接收则小车右边有障碍物;若左边和右边发射时,都有信号接收则小车正前方有障碍物。
在小车前进过程中有三种避障算法:沿左边行走,沿右边行走,左右相结合行走。本设计要实现在多种环境下都能避障,所以选择左右结合行走的算法。在小车左、右侧两侧等比例安装若干红外测距传感器(GP2D12),用于防止小车在避障过程中与障碍物发生碰撞,由于GP2-D12输出为0.4~2.4V的模拟信号,对应80~10cm距离,输出与距离成反比关系,且为非线性,可直接利用2407A集成的A/D转换功能,进行A/D转换得到相应参数,根据参数由 DSP进行相应处理,进行避障前进。在避障过程中,采用接近式控制策略,维持障碍物和传感器之间的距离为一固定常数,当两者距离偏小时,机器人向远离障碍物的方向旋转;当两者距离偏大时,向靠近障碍物的方向旋转。小车沿障碍物行进过程中,在车头底部光电传感器检测到黑线时,小车开始调整行进姿势,远离障碍物,继续寻迹。另外在小车无法成功绕过障碍物继续寻迹时,可以通过无线通信模块控制小车绕过障碍物使其继续寻迹。
2.4 无线通信模块设计
在机器人无法成功避障的情况下,可通过DSP与上位机(PC机)之间的通信协作来完成避障任务。DSP与PC机之间的通信方式分为有线和无线两种,多数采用串行通信。在本设计中采用无线通信方式,可以克服有线通信造成的操作不便。PTR2000是基于nRF401器件的无线数据传输模块,具有低频发射、灵敏度高的特点,使其在嵌入式短程无线产品中得到广泛的应用。要实现DSP与PC机之间的无线通信,需在DSP与小车车体分别安装一个 PTR2000器件,其系统硬件结构框图如图4所示。通过2407A的RXD和TXD引脚与PTR2000的DO和DI引脚直接相连,2407A的控制引脚与PTR2000模式控制引脚相连完成PTR2000于DSP之间的连接,通过采用MAX232器件在PTR2000和计算机串口进行RS-232和 TTL电平之间的转换后,完成PTR2000和PC机串口的连接。在DSP和PC机端软件配合设置PTR2000的状态(发射或接收),选择固定的通信频道,并让PTR2000一直处于正常工作状态,再通过设计软件系统实现无线通信的功能。
电源模块可由16V交流电压充电器通过电源充电电路为6节车载镍镉电池(约7.2V)充电,为各模块提供工作电压。电源电路模块如图5所示。由于各模块所需工作电压不同,可先通过使用78(L)05稳压器得到5V直流电压,2407A所需3.3V电源由带集成延时复位功能的低压差稳压器TPS733Q实现,同时具有复位功能。如图5所示。
2.6 电机驱动模块设计
本轮式机器人平台采用左、右直流电机驱动的方式,中间有一起支撑作用的万向轮。电机驱动模块可以实现两电机在任何方向旋转从而达到小车前进、倒退和转向的目的。电机发生转向与否是由提供给电机驱动电路的高、低电压信号次序决定的,它们来自前端的数字逻辑门定序电路。数字逻辑定序电路的输入信号由 2407A 产生的方向信号和PWM信号实现机器人的方向和速度的控制分为方向端和使能端,该电路同时可以避免产生电源短路对电子器件造成的损害。此小车电机驱动电路是H桥驱动电路,该电路通过控制电机电流流向达到控制转向的目的。当Q1和04导通时,电机电流从左流向右,电机正转;当Q2和Q3导通时,电机电流从右流向左,电机反转。如图7所示。
3 系统整体实现
以TMS320LF2407A为核心的教育机器人硬件系统整体功能可在软件开发工具CCS和硬件开发工具XDS的支持下采用C语言和汇编语言混合编程进行程序仿真调试,再通过JTAG接口下载到DSP内实现,给DSP学习者带来了极大的方便。同时,得益于2407A外部资源的丰富性,系统中未使用部分有利于学习者做进一步的功能开发和应用。
4 结语
该整体硬件系统结构简单,具有很好的扩展性,而且通过软件编程控制机器人完成一定的功能,很好地锻炼了学生的逻辑思维能力和编程能力,有助于培养学生的实践能.
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |