摘要
本设计由MC9S12XS128MAL单片机控制模块、角度检测模块、人机交互系统以及风力摆机械结构组成的闭环控制系统。由BTN7971驱动12V、1.2A的直流风机作为风力摆的动力源,MMA7361采集风力状态角,单片机处理状态角数据后通过PID调节直流风机控制风力摆,实现在直流风机作为动力控制下快速起摆、画线、恢复静止,画圆的功能。为了使测控系统控制更为精确,在采集数据的过程中采用了非线性误差校正以及卡尔曼滤波等数据处理方法。同时设计中考虑到可能存在的各种干扰因素,采用软硬件结合的抗干扰方法提高系统控制的稳定性。经过反复的测验,该方案完全能够实现题目要求!
关键字:单片机 闭环 风力摆控制系统 卡尔曼滤波
1. 方案论证与比较
1.1. 系统主控芯片选择
方案一:采用AT89C51系列单片机作为控制的核心。51单片机价格便宜,应用广泛,I/O口的设置和使用操作简单。但是51单片机的运行速度过慢,抗静电抗干扰能力弱,内部资源和存储器功能较少,而且无ADC,还需要用外接电路实现AD转换,使硬件电路变得复杂。另外,51单片机完成系统功能较为困难。
方案二:采用MC9S12XS128MAL作为控制核心。MC9S12XS128MAL是Freescale公司生产的16位单片机,储存功能强大,具有丰富的输入/输出端口资源,具有多种寄存器功能,而且端口引脚大多为复用口,具有多功能,所有端口都具有通用I/O口功能。内部本身自带PWM、A/D转换功能,可以直接用,省去了单独做PWM模块和A/D转换模块,节省大量时间。完全能够实现本系统的所有功能。
综合考虑,本系统选择方案二
1.2. 风力摆动力系统方案选择
根据题目要求,用2~4只直流风机,共有一下三种方案选择:
方案一:采用两只风机作为系统动力系统。两只风机并排同向而立,分别固定摆杆两侧,通过控制两个风机转速产生不同风力控装置摆动是激光笔划线画圆。此方案遂犯负载亲,但是在很难控制风力摆的状态修正和制动。
方案二:采用三只风机作为动力系统。三只风机成等边三角形相背而立,互成120度夹角(外角)。此方案相对于方案一在控制风力摆转动过程中状态修正方面有提升,而且对于画圆有一定优势,但是不好掌握相邻风机的推力,在控制系统运动方向难度很大。
方案三:采用四只直流风机作为动力系统。四只风机两两背靠背而立,中间用碳纤维棒将四只风机固定成十字架形状。
综合上述比较分析,考虑到系统的快速工作以及精确控制,本系统采用方案三。
1.3. 角度检测方案的选择与论证
方案一:角位移电位器。角位移电位器属于二位平面内角位移传感器测量摆动时关于静止状态时的偏转角,通过该偏转角控制流风机的状态。但是角位移电位器只能检测出二维平面内的角度变化,不利于检测风力摆的空间位置。
方案二:选用三轴加速度传感器。三周加速度传感器具有体积小和重量轻的特点,可以测得空间加速度,能够全面准确反映物体的运动的空间位置。此方案课精确测量风力摆的当前状态,实现对风力摆的精确控制。
综合考虑,本系统选择方案二。
1.4. 电机驱动模块的选择与论证
方案一:使用L298芯片实现电机驱动。L298N内部包含4通道逻辑驱动电路,及内部含两个H桥的双全桥驱动器,接受TTL逻辑电平信号通过PWM实现直流风机调速。但是L298驱动大功率电机时发热严重易烧毁芯片。
方案二:使用英飞凌的BTN7971驱动芯片。BTN7971是大功率集成半桥驱动芯片,在单一封装中集成了PMOS和NMOS高低侧功率开关以及门驱动器,还集成了逻辑控制电路和一些保护检测功能,能够防止过热、过压、欠压、过流和短路。
综合考虑,本系统选择方案二。
1.5. 算法选择
算法有很多种,它的选择很重要,它决定处理系统的性能质量和可行性。
方案一:自适应算法。自适应过程是一个不断逼近目标的过程。单片机读取传感器采集来的风力摆空间位置来控制风力摆的运动,但是由于该系统变化太快,自适应算法调节方式难以达到系统要求。
方案二:PID算法。在过程控制中,按比例、积分和微分的函数关系,对系统模型进行运算分析,将其运算结果用以输出控制。控制精度高,且算法简单明了。
2. 系统设计
2.1. 系统总体设计
根据上述方案论证,我们最终确定了以MC9S12XS128MAL单片机作为中央处理器,采用型号为MMA7361的模拟加速度陀螺仪检测风力摆的空间位置,使用BTN7971芯片驱动4个大功率直流风机。总体框图如下图2.1所示。
2.2. 模块电路设计
1、 角度传感器
角度传感器选用蓝宙电子生产的3轴陀螺仪+3轴模拟加速度传感器MMA7361模块。该模块具有ENC-03M(全新包装)三轴陀螺仪传感器、MMA7361三轴模拟量输出。
2、 电机驱动模块
BTN7971驱动芯片电路图如图2.2所示,BTN7971属于半桥驱动芯片,所以用两个芯片组成一个完整的全桥驱动芯片,如图2(b)所示。由于直流风机无法反转,将风机地端连载一起,将电源端接入驱动电路中的OUT1、OUT2、OUT3、OUT4,将驱动电路的输入口接单片机PWM1、3、5、7口,通过个给驱动输入PWM值台阶风机速度达到对风机控制目的。
3、 拨码开关
在单片机的PB口接一个拨码开关,实现人机交互功能。当拨动一个值后,系统会切换一个系统模式,完成本系统的全部功能操作。该模块方便选择各种模式。
3. 系统理论分析与计算
3.1. 风力摆的运动控制分析
风力摆采用4只功率为12V、1.2A的大功率直流风机为动力驱动系统。模拟加速度陀螺仪采集风力摆的当前的角度,单片机处理角度信息输出PWM占空比,控制4只风机的工作状态,从而实现对风力摆的控制。
3.2. 系统算法的分析
本系统采用PID算法来控制流风机的转动速度,流风机开始工作后,姿态采集模块不断采集当前风力摆的空间位置角度,并与之前的状态比较,是的风力摆的运动状态逐渐趋向于平稳。PID算法由风力摆转动角度比例P、角度误差积分I和角度微分D组成。
其输入e(t)与输出U(t)的关系为:U(t)=P*[e(t)+1/I∫e(t)dt+D*de(t)/dt]
它的传递函数为:G(s) = U(S) / E(S) = P * [ 1 + 1 / ( I * s ) + D * s ]
风力摆转动角度比例P:对风力摆角速度进行比例调节,即对风机转动速度调整。比例越大,调节速度越快,但不能过大,过大可能造成四风机因工作状态的突变而使摆杆不稳定。
角度误差积分I:使系统消除稳态误差。计入微分调节使系统稳定系数下降,动态相应变慢。根据本系统要更快更稳完成风力摆的控制,本系统对积分调节的需要就非常弱。即保证在不需要时系统不会受到影响。
角度微分D:微分反映风力摆角度的变化率,具有可预见性,能预见偏差变化的趋势因此产生超前的控制作用,在偏差还没有形成之前,已被微分作用调节消除。因此,可以改善系统的动态性能。在为分时间选择合适情况下,减少调节时间。
4. 软件设计
4.1. 程序功能描述与设计思路
系统软件实现的功能如下:
1、读取陀螺仪数据,将数据反馈给单片机;
2、单片机将读取数据的模拟量AD转换为数字量后,将相对应的PWM波发送给轴流风机;
3、控制平衡板;
4、拨码开关控制;
5、数据汇总做出判断。
4.2. 程序流程图
系统主程序流程图如下图所示,进入主程序并初始化后,等待拨码开关的状态执行相应程序,每个程序能完成一项要求,各子模块是独立模块,结构清楚。
5. 电路原理图