(2)单片机多机通讯
在舵控系统设计中,各部分间的通讯是设计的重要内容,其中主要包括单片机与上位PC机间的通讯和单片机与单片机之间的通讯。在舵控系统中,主单片机1与上位PC机通讯是通过单片机自带的一路异步串行通讯接口完成的;而主单片机1通过其P1口向主单片机2传输数据,这里不再赘述,重点介绍主单片机2如何通过其一路串口分别向下位的多个舵控单片机传送指令。
此系统中,主单片机2作为主机,m个舵控单片机作为从机,在主机与从机的通讯过程中,串口控制寄存器中SCON中的SM2位发挥了重要作用。当其中一个舵控单片机(89C2051)的SM2位为1时,该单片机只接收地址帧,对数据帧不理睬;而当SM2位为0时,该单片机接收所有发来的消息。具体通信过程如下:
①首先将主、从单片机工作方式选为模式3,所有从机的SM2位开始置1,处于只接收地址帧状态。
②主机接收主单片机1发来的数据帧,从中提出数据部分(m个字节的指令对应m个舵控单片机),根据序号在控制指令字节前加上一个字节的地址信息。然后主机依次通过串口向下发送各舵控单片机的地址字节和数据字节。发送一帧地址信息,包含8位地址,第9位为1,表示发送的帧为地址帧。
③从机接收地址帧后,进入中断,将发来的地址与自身比较;地址一致的从机就是被寻址的从机,它清除SM2位,接收主机发来的所有后续帧信息(数据信息)。未寻址的所有其他从机仍维持SM2=1,对主机发来的数据帧不理睬,直到发来新地址帧;之后在下一次中断时被寻址的从机接收主机发来的数据信息(第9位为0)。
需要注意的是,如果对已经寻址的从机再发送地址帧,则该从机SM2=1,恢复初始状态,和其他从机竞争。
(3)舵控信号PWM波的产生
对飞艇舵机的控制最终是通过舵控单片机产生PWM波来实现的。通常,产生PWM波不外乎硬件和软件两种方法。考虑到舵控单片机计算任务不大,本系统中采用软件产生PWM波的方法。下面以定时器0产生PWM波为例,说明通过软件产生PWM波舵控信号的实现方法。
void timer0(void) interrupt 1 using 1
{
/*PWM波通过单片机P37口输出,定时取反*/
P37=!P37;
/*Length代表一个周期的时间*/
c=Length-c;
/*重新定义计数初值*/
TH0=-(c/256);
TL0=-(c%256);
/*判断脉宽是否在正常范围之内*/
if(c>=border1&&c<=border2)
c=a;
else
c=Length-a;
}
在程序中,由串口中断接收上位机发送的脉宽指令,继而通过改变入口参数a来调整PWM波的脉宽,并确保脉宽输出在正常范围之内。通过该方法产生PWM波切实可行,简单有效,可以广泛应用于舵机控制信号的产生中。
4 实验结果
实验中以FUTABA 3003舵机作为被控对象,由计算机模拟向舵控系统发送数据帧,通过示波器观察舵控信号的变化。实验结果表明,该舵控系统工作稳定,输出PWM波脉宽准确可靠,被控舵机转角线性度良好。
本文给出了小型自控飞艇舵控系统的主要设计方法,并详细阐述了在软件设计中几个关键问题的具体解决方案。实验结果证明,该系统能够很好地完成预定功能,根据上位机发送的指令准确地对艇上舵机进行控制。
参考文献
[1] 甘晓华,郭 颍.飞艇技术概论[M].北京:国防工业出版社,2005.
[2] P89C51RA2/RB2/RC2/RD2xx中文器件手册.
[3] 王明顺.基于LM2576的高可靠MCU电源设计[J].国外电子元器件,2004,11:12-14.
[4] 刘歌群,刘卫国,卢京潮.无人机强实时性串行通讯程序设计[J].计算机应用,2005,25(1):210-212.
[5] 张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:电子工业出版社,2003.