还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2015年全国大学生电子设计竞赛风力摆控制系统(B题)【本科组】2015年8月15日
1.摘要本设计由MC9S12XS128__L单片机控制模块、角度检测模块、人机交互系统以及风力摆机械结构组成的闭环控制系统由BTN7971驱动12V、
1.2A的直流风机作为风力摆的动力源,M__7361采集风力状态角,单片机处理状态角数据后通过PID调节直流风机控制风力摆,实现在直流风机作为动力控制下快速起摆、画线、恢复静止,画圆的功能为了使测控系统控制更为精确,在采集数据的过程中采用了非线性误差校正以及卡尔曼滤波等数据处理方法同时设计中考虑到可能存在的各种干扰因素,采用软硬件结合的抗干扰方法提高系统控制的稳定性经过反复的测验,该方案完全能够实现题目要求!关键字单片机闭环风力摆控制系统卡尔曼滤波目录TOC\o1-2\h\uHYPERLINK\l_Toc
83461.方案论证与比较
11.
1.系统主控芯片选择
11.
2.风力摆动力系统方案选择
11.
3.角度检测方案的选择与论证
21.
4.电机驱动模块的选择与论证
21.
5.算法选择
22.系统设计
32.
1.系统总体设计
32.
2.模块电路设计
33.系统理论分析与计算
53.
1.风力摆的运动控制分析
53.
2.系统算法的分析
54.软件设计
64.
1.程序功能描述与设计思路
64.
2.程序流程图
65.系统调试与测试
75.
1.系统调试
75.
2.系统测试
76.结束语
87.附录
97.
1.附录1____
97.
2.附录2主要元器件清单
97.
3.附录3电路原理图
107.
4.附录4部分源程序
112.
3.方案论证与比较
3.
1.系统主控芯片选择方案一采用AT__C51系列单片机作为控制的核心51单片机__便宜,应用广泛,I/O口的设置和使用操作简单但是51单片机的运行速度过慢,抗静电抗干扰能力弱,内部资源和存储器功能较少,而且无ADC,还需要用外接电路实现AD转换,使硬件电路变得复杂另外,51单片机完成系统功能较为困难方案二采用MC9S12XS128__L作为控制核心MC9S12XS128__L是Freescale公司生产的16位单片机,储存功能强大,具有丰富的输入/输出端口资源,具有多种寄存器功能,而且端口引脚大多为复用口,具有多功能,所有端口都具有通用I/O口功能内部本身自带PWM、A/D转换功能,可以直接用,省去了单独做PWM模块和A/D转换模块,节省大量时间完全能够实现本系统的所有功能综合考虑,本系统选择方案二
3.
2.风力摆动力系统方案选择根据题目要求,用2~4只直流风机,共有一下三种方案选择!方案一采用两只风机作为系统动力系统两只风机并排同向而立,分别固定摆杆两侧,通过控制两个风机转速产生不同风力控装置摆动是激光笔划线画圆此方案遂犯负载亲,但是在很难控制风力摆的状态修正和制动方案二采用三只风机作为动力系统三只风机成等边三角形相背而立,互成120度夹角(外角)此方案相对于方案一在控制风力摆转动过程中状态修正方面有提升,而且对于画圆有一定优势,但是不好掌握相邻风机的推力,在控制系统运动方向难度很大方案三采用四只直流风机作为动力系统四只风机两两背靠背而立,中间用碳纤维棒将四只风机固定成十字架形状综合上述比较分析,考虑到系统的快速工作以及精确控制,本系统采用方案三
3.
3.角度检测方案的选择与论证方案一角位移电位器角位移电位器属于二位平面内角位移传感器测量摆动时关于静止状态时的偏转角,通过该偏转角控制流风机的状态但是角位移电位器只能检测出二维平面内的角度变化,不利于检测风力摆的空间位置方案二选用三轴加速度传感器三周加速度传感器具有体积小和重量轻的特点,可以测得空间加速度,能够全面准确反映物体的运动的空间位置此方案课精确测量风力摆的当前状态,实现对风力摆的精确控制综合考虑,本系统选择方案二
3.
4.电机驱动模块的选择与论证方案一使用L298芯片实现电机驱动L298N内部包含4通道逻辑驱动电路,及内部含两个H桥的双全桥驱动器,接受TTL逻辑电平__通过PWM实现直流风机调速但是L298驱动大功率电机时发热严重易烧毁芯片方案二使用英飞凌的BTN7971驱动芯片BTN7971是大功率集成半桥驱动芯片,在单一封装中集成了PMOS和__OS高低侧功率开关以及门驱动器,还集成了逻辑控制电路和一些保护检测功能,能够防止过热、过压、欠压、过流和短路综合考虑,本系统选择方案二
3.
5.算法选择算法有很多种,它的选择很重要,它决定处理系统的性能质量和可行性方案一自适应算法自适应过程是一个不断逼近目标的过程单片机读取传感器采集来的风力摆空间位置来控制风力摆的运动,但是由于该系统变化太快,自适应算法调节方式难以达到系统要求方案二PID算法在过程控制中,按比例、积分和微分的函数关系,对系统模型进行运算分析,将其运算结果用以输出控制控制精度高,且算法简单明了
4.系统设计
4.
1.系统总体设计根据上述方案论证,我们最终确定了以MC9S12XS128__L单片机作为__处理器,采用型号为M__7361的模拟加速度陀螺仪检测风力摆的空间位置,使用BTN7971芯片驱动4个大功率直流风机总体框图如下图
2.1所示图
2.1设计总体框图
4.
2.模块电路设计
1、角度传感器角度传感器选用蓝宙电子生产的3轴陀螺仪+3轴模拟加速度传感器M__7361模块该模块具有ENC-03M(全新包装)三轴陀螺仪传感器、M__7361三轴模拟量输出
2、电机驱动模块BTN7971驱动芯片电路图如图
2.2所示,BTN7971属于半桥驱动芯片,所以用两个芯片组成一个完整的全桥驱动芯片,如图2(b)所示由于直流风机无法反转,将风机地端连载一起,将电源端接入驱动电路中的OUT
1、OUT
2、OUT
3、OUT4,将驱动电路的输入口接单片机PWM
1、
3、
5、7口,通过个给驱动输入PWM值台阶风机速度达到对风机控制目的图
2.
23、拨码开关在单片机的PB口接一个拨码开关,实现人机交互功能当拨动一个值后,系统会切换一个系统模式,完成本系统的全部功能操作该模块方便选择各种模式
5.系统理论分析与计算
5.
1.
5.
2.风力摆的运动控制分析风力摆采用4只功率为12V、
1.2A的大功率直流风机为动力驱动系统模拟加速度陀螺仪采集风力摆的当前的角度,单片机处理角度信息输出PWM占空比,控制4只风机的工作状态,从而实现对风力摆的控制图
3.1风力摆结构示意图
5.
3.系统算法的分析本系统采用PID算法来控制流风机的转动速度,流风机开始工作后,姿态采集模块不断采集当前风力摆的空间位置角度,并与之前的状态比较,是的风力摆的运动状态逐渐趋向于平稳PID算法由风力摆转动角度比例P、角度误差积分I和角度微分D组成其输入e(t)与输出U(t)的关系为U(t)=P*[et+1/I∫etdt+D*det/dt]它的传递函数为G(s)=US/ES=P*[1+1/I*s+D*s]风力摆转动角度比例P对风力摆角速度进行比例调节,即对风机转动速度调整比例越大,调节速度越快,但不能过大,过大可能造成__机因工作状态的突变而使摆杆不稳定角度误差积分I使系统消除稳态误差计入微分调节使系统稳定系数下降,动态相应变慢根据本系统要更快更稳完成风力摆的控制,本系统对积分调节的需要就非常弱即保证在不需要时系统不会受到影响角度微分D微分反映风力摆角度的变化率,具有可预见性,能预见偏差变化的趋势因此产生超前的控制作用,在偏差还没有形成之前,已被微分作用调节消除因此,可以改善系统的动态性能在为分时间选择合适情况下,减少调节时间
6.软件设计
6.
1.程序功能描述与设计思路系统软件实现的功能如下
1、读取陀螺仪数据,将数据反馈给单片机;
2、单片机将读取数据的模拟量AD转换为数字量后,将相对应的PWM波发送给轴流风机;
3、控制平衡板;
4、拨码开关控制;
5、数据汇总做出判断
6.
2.程序流程图系统主程序流程图如下图所示,进入主程序并初始化后,等待拨码开关的状态执行相应程序,每个程序能完成一项要求,各子模块是__模块,结构清楚图
4.1系统程序流程图
7.系统调试与测试
7.
1.系统调试为了便于系统调试,本系统使用CodeWarriorIDE进行原程序的编写、编译和链接,并最终生成可执行文件该编译器具有高度可视化界面操作及自动创建复杂嵌入式系统应用的功能,包括集成__环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、连接器以及调试器,可支持在线调试,为使用嵌入式产品__提供了便利
7.
2.系统测试
1、测试工具刻度尺、秒表、量角器
2、测试指标及方法1基本要求
(1)驱动风力摆工作,使激光笔稳定地在地面划出的直线段,来回五次,记录七由静止只开始自由摆时间及最大偏差距离(15s内完成,线性误差大于±
2.5cm),经测验,满足题目要求2基本要求
(2)设置风力摆划线长度,驱动风力摆工作,记录其由静止开始自由摆时间及在华不同长度直线时的最大偏差距离(15s内完成,线性误差大于±
2.5cm)经测验,满足题目要求3基本要求
(3)设置风力摆自由摆时的角度,驱动风力摆工作,记录其由静止只开始自由摆时间及在画不同角度直线时的最大偏差距离经测验,满足题目要求4基本要求
(4)将风力摆拉起任意角度(30度~45度),5s内使风力摆制动达到静止将风力摆拉起一定角度放开,测试风力摆制动所需的时间经测验,满足规定的5s内静止5发挥部分以风力摆静止时的光电为圆心,设置风力摆画圆半径,区东风里摆动激光笔在地面画圆,记录其画三次圆所用的时间以及最大偏差距离,重复测试三次改变原半径再次测验,重复以上操作四次,经测验,误差在规定的30s、±
2.5cm的线性误差内
8.结束语通过紧张的四天三夜的奋力拼搏,与小组其他成员的通力协作,团结互助,终于完成了设计项目通过不断地测试调试,本系统达到了设计的四个基本要求和发挥部分,在本次设计的过程中,我们遇到了很多突发__和各种困难尤其是向如何在摆动过程中如何保持激光轨迹的线性度一度陷入困难但通过团队的仔细分析和自我调整状态后我们终于解决了问题,取得了比较满意的结果经过本次电子设计竞赛让我们对电路的设计、调试有了深刻的印象,加深了对测控技术的理解,同时也深刻体会到了共同协作和团队精神的重要性,提高了我们动手解决问题的能力,设计中还有欠缺的地方,今后的学习工作中会加以注意同时感谢竞赛的主办方让我们得到了很好的锻炼机会,由于时间紧迫我们未能将系统方案调整到最优,但是我们会利用课余时间继续深入研究找出更好的的方案!
9.附录
9.
1.附录1____
[1]黄智伟.大学生全国电子设计竞赛训练教程.北京电子工业出版社,2005
[2]谭浩强.C语言程序设计第二版.北京清华大学出版社,2000
[3]郭天祥.新概念51单片机C语言教程.入门、提高、__[M].北京电子工业出版社,2009
[4]__、吴晔、滕勤.MC9S12XS单片机原理及嵌入式系统__.北京电子工业出版社
9.
2.附录2主要元器件清单元件名称数量(个)模拟加速度陀螺仪112V、
1.2A轴流风机4MC9S12XS128__L单片机1BTN7971驱动芯片412V大功率电源1激光笔
19.
3.附录3电路原理图图
7.1主板原理图图
7.2驱动模块整体电路图
9.
4.附录4部分源程序voidKal__n_Filter_Yfloatac__lfloatgyro//range-1000-2g{floatPHt_0PHt_1EK_0K_1Y_0Y_1;//K_0含有卡尔曼增益的另外一个函数,用于计算最优估计值//K_1含有卡尔曼增益的函数,用于计算最优估计值的偏差//先验估计//角度更新angle_y+=gyro-gyro_bias*dt;//由角速度积分得到的角度//计算过程协方差矩阵的微分矩阵//关于dt的调整,增加dt可使kal__nfilter的输出相位滞后Pdot
[0]=Q_ac__-PP
[0]
[1]-PP
[1]
[0];//派生协方差矩阵计算Pk-00先验估计误差协方差的微分Pdot
[1]=-PP
[1]
[1];//01Pdot
[2]=-PP
[1]
[1];//10Pdot
[3]=Q_gyro;//11Pdot=A*P+P*A导+QPP
[0]
[0]+=Pdot
[0]*dt;//计算协方差矩阵//协方差矩阵更新PP
[0]
[1]+=Pdot
[1]*dt;//Pk-先验估计误差协方差微分的积分=先验估计误差协方差PP
[1]
[0]+=Pdot
[2]*dt;PP
[1]
[1]+=Pdot
[3]*dt;PHt_0=H_0*PP
[0]
[0];PHt_1=H_0*PP
[1]
[0];E=R_angle+H_0*PHt_0;//估计偏差//计算的过程量//误差估计计算K_0=PHt_0/E;//计算卡尔曼增益//卡尔曼增益,E越大,K越小K_1=PHt_1/E;//后验估计//更新状态估计//计算测量角度和估计角度的偏差angle_error=ac__l-angle_y;//计算角度偏差//zk-先验估计angle_y+=K_0*angle_error;//更新角度最优估计值//融合后的角度gyro_bias+=K_1*angle_error;//更新最优估计值偏差rotate_y=gyro-gyro_bias;//更新角速度最优估计值//输出值(angle_y)的微分=角速度//融合后角速度//更新协方差矩阵//后验估计,更新协方差阵Y_0=PHt_0;Y_1=H_0*PP
[0]
[1];PP
[0]
[0]-=K_0*Y_0;//后验估计误差协方差PP
[0]
[1]-=K_0*Y_1;PP
[1]
[0]-=K_1*Y_0;//P(K|K)E越大,P越大PP
[1]
[1]-=K_1*Y_1;}/*voidKal__n_Filter_Y1floatac__l1floatgyro1//range-1000-2g{floatPHt_0PHt_1EK_0K_1Y_0Y_1;//K_0含有卡尔曼增益的另外一个函数,用于计算最优估计值//K_1含有卡尔曼增益的函数,用于计算最优估计值的偏差//先验估计//角度更新angle_y1+=gyro1-gyro_bias1*dt1;//由角速度积分得到的角度//计算过程协方差矩阵的微分矩阵//关于dt的调整,增加dt可使kal__nfilter的输出相位滞后Pdot1
[0]=Q_ac__1-PP1
[0]
[1]-PP1
[1]
[0];//派生协方差矩阵计算Pk-00先验估计误差协方差的微分Pdot1
[1]=-PP1
[1]
[1];//01Pdot1
[2]=-PP1
[1]
[1];//10Pdot1
[3]=Q_gyro1;//11Pdot=A*P+P*A导+QPP1
[0]
[0]+=Pdot1
[0]*dt1;//计算协方差矩阵//协方差矩阵更新PP1
[0]
[1]+=Pdot1
[1]*dt1;//Pk-先验估计误差协方差微分的积分=先验估计误差协方差PP1
[1]
[0]+=Pdot1
[2]*dt1;PP1
[1]
[1]+=Pdot1
[3]*dt1;PHt_0=H_1*PP1
[0]
[0];PHt_1=H_1*PP1
[1]
[0];E=R_angle1+H_1*PHt_0;//估计偏差//计算的过程量//误差估计计算K_0=PHt_0/E;//计算卡尔曼增益//卡尔曼增益,E越大,K越小K_1=PHt_1/E;//后验估计//更新状态估计//计算测量角度和估计角度的偏差angle_error1=ac__l1-angle_y1;//计算角度偏差//zk-先验估计//融合后的角度angle_y1+=K_0*angle_error1;//更新角度最优估计值gyro_bias1+=K_1*angle_error1;//更新最优估计值偏差//融合后角速度rotate_y1=gyro1-gyro_bias1;//更新角速度最优估计值//输出值(angle_y)的微分=角速度//更新协方差矩阵//后验估计,更新协方差阵Y_0=PHt_0;Y_1=H_1*PP1
[0]
[1];PP1
[0]
[0]-=K_0*Y_0;//后验估计误差协方差PP1
[0]
[1]-=K_0*Y_1;PP1
[1]
[0]-=K_1*Y_0;//P(K|K)E越大,P越大PP1
[1]
[1]-=K_1*Y_1;}*/voidAngleCalculatevoid{uinti;fori=0;i3;i++{gyro_temp[i]=ad_on__0;//y陀螺仪ac___temp1[i]=ad_on__1;//z加速度计}GyroY=Midgyro_temp
[0]gyro_temp
[1]gyro_temp
[2];//求中值Ac__Z=Midac___temp1
[0]ac___temp1
[1]ac___temp1
[2];//陀螺仪处理GyroY_=GyroY-GYROSCOPE_OFFSET;//求陀螺仪偏差angular_y=-GyroY_*GYROSCOPE_ANGLE_RATIO;//陀螺仪角速度//加速度处理Ac__Z=Ac__Z-GR__ITZ_OFFSET;//加速度计偏差ac__l_y=Ac__Z*GR__ITY_ANGLE_RATIO;//加速度计角度Kal__n_Filter_Yac__l_yangular_y;}人机交互S12XS128单片机角度传感器模块__处理LED灯光提示直流风机电机驱动开始初始化否功能键按下是基本要求1发挥部分2发挥部分1基本要求3基本要求2基本要求4PAGE。