编程快闪存储器、256字节只读存储器(RAM)、多通道脉宽调制?PWM?计时器、看门狗计时器和USART通讯模块等,采用28脚TSSOP封装,因此易于进行小型化设计。MSP430F1232主要用来产生两路PWM信号,以对传感器信息进行处理。同时,笔者还选用电机驱动芯片L293D来驱动直流电机,并利用霍尔元件来检测电机速度;此外还安装了红外避障和光敏传感器以获取环境信息,并利用语音电路ISD25120来进行交互,而通过微控制器的UART经232接口芯片后利用无线模块PTR2000可与PC机端的无线模块进行通讯。图1所示为其系统框图。
图1 系统框图
2.1 PWM脉宽调制
MSP430单片机的Timer_A是一个非常有用的定时器,它可支持同时进行的多种时序控制、多个捕获/比较功能以及多种输出波形,也可以支持上述功能的组合。这里用Timer_A来产生两路PWM信号,并分别接L293D的12EN和34EN,以用来控制两个电机的起停、转向及速度。定时器工作在增计数模式时,可由捕获/比较寄存器CCR0确定周期T,而由CCR1和CCR2产生两路PWM信号。输出单元选择模式2。改变CCR1和CCR2的值,即可改变PWM信号的占空比,从而改变电机转速。
L293D的芯片电压为5V,电机驱动电压VCC2为11.4V?可通过3节3.8V的锂电池提供,5V电压经整流桥后可由稳压器LDO7805提供,MSP430F1232的3.3V供电电压可由LM33稳压输出。L293D与单片机的连接图如图2所示。
图2 MSP430F1232与L293D的接口
2.2 语音电路
语音电路采用120秒的语音芯片ISD25120来实现,该芯片有多种封装,本设计采用小巧的28SOIC封装,它控制简单,其P/T引脚为录放控制端,CE引脚为放音/暂停控制端,PD为RESET信号,这些RE-SET信号端可接单片机的I/O口P2.0、P2.1、P2.2,地址位的最高两位A8和A9均为高时,地址/模式输入端为模式选择,否则为地址输入。在与MSP430F1232连接时,A6、A8、A9接P3.6,A0接P3.7,其余地址引脚接地,这样就可方便地对ISD25120进行地址选段选择或模式控制。
2.3 充电电路
充电电路采用无需控制器的智能快速充电器MAX1758来实现,MAX1758可对1~4节锂电池进行充电,输入电压范围在4~28V,电池充电电压可通过VADJ引脚进行设置,并通过外接电容设置预充和快充的充电时间,同时可通过LED来指示当前的充电状态。充电电源采用24V直流电源。
2.4 无线通信模块
考虑到自主机器人的特点,计算机与机器人的通信采用无线通信方式较为适宜。笔者选用微小型、低功耗、高速率、19.2K无线收发数传MODEM芯片PRT2000来完成计算机与机器的无线通信,该MODEM的工作频率为国际通用的数传频段433MHz,采用FSK调制,可连接到计算机RS232接口。因为没有信号时,PTR2000的串口会输出随机数据,因此需要定义一个简单的指令协议,设计时可加开始字符、校验位、结束标志等,校验采用CRC校验。传输协议定义为:
[开始字符][数据1][数据2][8位校验][结束字符]
在各种校验方法中,奇偶校验容易实现,但不太可靠,因其只能发现奇数个错误;校验和不能发现次序错误,相比之下,CRC更可靠些。系统首先生成多项式G(X)=X8+X6+X2+1?然后生成8位CRC校验数据。
MSP430F1232中集成的高速通用同步-异步收发器(USART)可设置成用于UART或串行外设接口(SPI)中的任一模式,本例采用UART异步模式。 MSP430的USART与PTR2000连接时,PTR2000的DO和DI直接与单片机的URXD0和UTXD0连接,计算机串口的RXD和TXD需经电平转换?MAX232?与PTR2000相连。计算机端可采用Visual Basic编写程序,以实现对机器人的前进、后退、左转、右转、暂停及速度调节等基本控制。对于收发状态的控制,单片机端可直接通过将一输出口置1或置0来将无线收发模块置于发射或接收状态,而对计算机串口的控制则可通过VB内MSComm控件的RTSEnable属性来实现。
3 软件设计
系统软件根据任务不同一般会有所差别。本系统软件在启动后先初始化,然后通过红外传感器以及霍尔元件等传感器将环境循环扫描一周。需指出的是,完成一周需要有传感器信号来指示,然后才能遍历实验环境,遍历环境采用先横向走遍整个环境,再纵向遍历的方法。在无线控制信息时,系统将通过中断进行相应处理。机器人还可以通过传感器实现循迹(黑线)行走和寻找光源等功能。在PC端,用VB编的一个简单的机器人控制界面可非常方便的设定机器人的平移速度和旋转速度,实时控制机器人前行、后退、左转、右转以及运动停止等。
图3 给出了单片机端的程序流程图以及串行中断子程序。
4 结束语
本文介绍了一种轮式移动机器人的设计方案,该系统的程序和PC端的无线控制相对独立,无线控制只是完成一些简单的动作控制。在此基础上,可进一步研究移动机器人在未知环境中如何感知、学习、分析及处理周围环境信息,并运用神经网络及遗传算法等进行规划来实现自学习功能的方法。这样,人为指令就可以完全由计算机在分析、处理后自动发出,从而实现真正意义上的机器人自主行为。