硬件描述
编码、红外发射和红外接收电路不是本次讨论的重点,不做描述。重点描述飞行姿态传感器电路、ADC电路、解码电路、XYZ轴输出电路。图2所示为其原理图。
飞行姿态传感器电路
该部分电路由MMA7260QT、R1、R2、R3、C1、C2、C3、C5组成。
MMA7260QT是一个三轴小量程加速度传感器模块。它的灵敏度可通过g-Select1和g-Select2来选择。最高灵敏度可达800mV/g。工作电压低、可工作电压范围宽(2.2~3.6V),功耗小(0.5mA,在睡眠状态只有3μA)。非常适合电池供电的应用。另外,小尺寸封装,使其重量也很轻。g-Select1和g-Select2分别接到PTA2和PTA3上。可以根据需要选择灵敏度。
XYZ轴的输出经过电阻R1、R2、R3和电容C1、C2、C3滤波后分别接到了MCU的ADC输入。 因为在这项应用中MMA7260QT 保持在工作状态,所以Sleep Mode脚接到了VDD。C5是为了减小电源波动对传感器的影响加的去耦电容。
XYZ轴输出电路
XYZ轴输出电路由电机Mz、Mx、My、MOSFET管T1、T2、T3、二极管D1、D2、D3和电阻R6、R7、8组成。XYZ轴电机控制信号分别通过普通的B口输出脚PTB5、PTB4、PTB6输出。这里PTB5、PTB4、TB6已经通过软件将其做成PWM输出口。它们输出的是电压PWM信号,通过PWM信号控制电机的转速。
这个PWM信号通过电阻R6(R7、R8)送到MOSFET管的控制极,控制MOSFET管的通/断,带动电机工作。因为MOSFET是电压控制器件,是不需要限流电阻的。这里的R6、R7、R8是为减小电机的脉冲干扰信号通过T1、T2、T3耦合对MCU的影响而设。
D1、D2、D3是在T1、T2、T3关断时为电机提供电流通路。
Mz是主旋翼电机,带动直升机的主旋翼,控制着直升机的升/降。
Mx是尾翼电机,带动直升机的尾翼螺旋桨,控制着直升机的方向。
My是进/退电机,控制着直升机的前进/后退。
系统软件
软件流程
软件流程如图3所示。
软件描述
飞行姿态信号和电池电压AD转换程序
实现飞行姿态信号测量的方法是:首先用准确的时间间隔来测飞行姿态信号;将测得的数据进行比较,大于最大限制值时放弃;对于在规定范围内的数据求代数和,同时记录求和的次数;经过一段规定的时间后,将求得的代数和除以求和的次数,就得到了在这段规定时间的平均值。用计时器设一个定期的时间中断就可实现测量时间的准确间隔。
实现飞行姿态信号测量的程序简略如下:
在初始化程序中:设置ADC在CH4上,ADC关中断连续转换。在CH4上是X轴数据设置,MTIM计时模块T_n时间中断一次。
电池电压监控程序
当检测到电压低到某一值时,程序会通过LED显示,向操纵人员报警。如没有及时控制直升机停止飞行,电压会继续降低。当电压低到不能允许再低的时候,程序将强制直升机停止飞行。这个'强制停止'不是立刻将电机停止,那样会使直升机坠落,而是平衡地减小PWM输出,使直升机缓慢的降落。
|