电赛 风力摆 论文.docx
《电赛 风力摆 论文.docx》由会员分享,可在线阅读,更多相关《电赛 风力摆 论文.docx(13页珍藏版)》请在冰点文库上搜索。
电赛风力摆论文
2015年全国大学生电子设计竞赛
风力摆控制系统(B题)
2015年8月15日
摘要
该设计采用STM32F103VCT6芯片为风力摆控制核心,实行模块化设计,由控制系统模块、电机驱动模块、角度传感器模块、电源模块等模块组成。
通过四元数法对MPU6050回传数据进行处理,并通过闭环PID算法控制轴流风机转动以控制风力摆运动。
实现了风力摆15s内做可控幅度及方向的摆动并用激光笔在地上画出稳定直线,风力摆在一定角度放开后快速静止,风力摆可做可控半径的圆周运动,并在受外力干扰后快速恢复运动。
经测试,该设计系统性能良好,所有基本要求都已达到,部分指标或超出题目发挥部分要求。
关键词:
风力摆;模块化;MPU6050;PID算法
目录
一、系统方案1
1、电机驱动的论证与选择1
2、角度传感器的论证与选择1
3、控制系统的论证与选择1
二、系统理论分析与计算2
1、风力摆状态的分析2
2、四元数与姿态的计算2
(1)四元数2
(2)四元数与旋转2
3、PID的计算4
三、电路与程序设计4
1、电路的设计4
(1)系统总体框图4
(2)电机驱动模块框图与电路原理图4
(3)角度传感器模块框图与电路原理图5
2、程序的设计6
(1)程序功能描述与设计思路6
(2)程序流程图6
四、测试方案与测试结果6
1、测试仪器6
2、功能测试6
(1)测试过程6
(2)测试结果(数据)7
3、测试结论与分析7
五、结论与心得7
六、参考文献7
附录1:
原理图8
附录2:
测试数据9
风力摆控制系统(B题)
【本科组】
一、系统方案
本系统主要由控制系统模块、电机驱动模块、角度传感器模块、电源模块组成,下面分别论证这几个模块的选择。
1、电机驱动的论证与选择
方案一:
采用继电器对电动机的开或关进行控制,通过开关的切换对轴流风机的速度进行调整。
这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。
方案二:
以N沟道增强型场效应管为核心,基于H桥PWM控制的驱动控制电路,对直流电机的正反转控制及速度的调节具有良好的工作性能。
并且直流电机控制电路的运行稳定可靠,电机调节响应速度快,满足大功率直流电机的驱动控制,结构简单、驱动力强、功耗低。
综合以上二种方案,选择方案二。
2、角度传感器的论证与选择
方案一:
采用WDD35D5角度传感器。
其原理相当于可调电位器,根据风力摆倾斜角度产生相应的阻值,通过AD转换处理后从而算出相应的角度,但是该方案需要AD转换、不易放置、仅能直接得到角度等问题。
方案二:
采用MPU-6050加速度陀螺仪。
该模块整合了3轴陀螺仪和3轴加速度器,输出六轴旋转矩阵、四元数、Euler角的融合演算数据,通过处理后可检测到风力摆倾斜角度及其加速度,以便于对摆杆的控制。
综合以上二种方案,选择方案二。
3、控制系统的论证与选择
方案一:
采用STC89C52单片机作为主控芯片,STC89C52单片机是STC89C51单片机的增强板,是STC公司生产的一种低功耗、高性能8位微控制器,具有8k可编程Flash存储器,总共有32 位I/O 口线, 3个16 位定时器/计数器,4个外部中断,全双工串行口等资源。
虽然最小系统简单,编程较易,但是工作频率过低无法满足该设计的高速运算要求。
方案二:
采用STM32F103VCT6作为主控芯片,STM32系列单片机是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。
它具有512K 片内FLASH,64K片内RAM ,片内FLASH 支持在线编程(IAP),多达80个IO(大部分兼容5V逻辑),4个通用定时器,2个高级定时器,2个基本定时器,3路SPI接口,2路I2S 接口,2路I2C接口,5路USART等丰富的资源,较高的工作频率可满足该设计所需的高速运算及数据处理。
综合以上二种方案,选择方案二。
二、系统理论分析与计算
1、风力摆状态的分析
从陀螺仪DMP直接读出四元数,然后计算出欧拉角,最后通过欧拉角确定陀螺仪的姿态。
通过风摆姿态变化可以分析出风摆实时的位置还有速度信息,再由主控系统通过PID算法分析后控制轴流风机转动控制风力摆运动。
2、四元数与姿态的计算
(1)四元数
四元数是简单的超复数。
复数是由实数加上虚数单位i组成,其中i^2=-1。
相似地,四元数都是由实数加上三个虚数单位i、j、k组成,而且它们有如下的关系:
i^2=j^2=k^2=-1,i^0=j^0=k^0=1,每个四元数都是1、i、j和k的线性组合,即是四元数一般可表示为a+bk+cj+di,其中a、b、c、d是实数。
对于i、j、k本身的几何意义可以理解为一种旋转,其中i旋转代表X轴与Y轴相交平面中X轴正向向Y轴正向的旋转,j旋转代表Z轴与X轴相交平面中Z轴正向向X轴正向的旋转,k旋转代表Y轴与Z轴相交平面中Y轴正向向Z轴正向的旋转,-i、-j、-k分别代表i、j、k旋转的反向旋转。
(如图2-1)
图2-1
(2)四元数与旋转
姿态解算的核心在于旋转,一般旋转有4种表示方式:
矩阵表示、欧拉角表示、轴角表示和四元数表示。
矩阵表示适合变换向量,欧拉角最直观,轴角表示则适合几何推导,而在组合旋转方面,四元数表示最佳。
因为姿态解算需要频繁组合旋转和用旋转变换向量,所以采用四元数保存组合姿态、辅以矩阵来变换向量的方案。
下面介绍一下四元数,然后给出几种旋转表示的转换。
四元数可以理解为一个实数和一个向量的组合,也可以理解为四维的向量。
这里用一个圈表示q是一个四元数(很可能不是规范的表示方式)。
四元数的长度(模)与普通向量相似。
下面是对四元数的单位化,单位化的四元数可以表示一个旋转。
四元数相乘,旋转的组合就靠它了。
旋转的“轴角表示”转“四元数表示”。
这里创造一个运算q(w,θ),用于把绕单位向量w转θ角的旋转表示为四元数。
通过q(w,θ),引伸出一个更方便的运算q(f,t)。
有时需要把向量f的方向转到向量t的方向,这个运算就是生成表示对应旋转的四元数的(后面会用到)。
然后是“四元数表示”转“矩阵表示”。
再次创造运算,用R(q)表示四元数q对应的矩阵(后面用到)。
多个旋转的组合可以用四元数的乘法来实现。
“四元数表示”转“欧拉角表示”。
3、PID的计算
PID计算方式如图2-1所示
图2-1PID计算方式
PID计算公式:
该风力摆上,经调试PID参数设置为:
K=1,P=1600,I=2,D=165。
三、电路与程序设计
1、电路的设计
(1)系统总体框图
该风力摆控制系统由stm32最小系统、mpu6050传感模块、电机驱动模块、电源模块组成,由stm32用PID算法处理传感器回传的数据,用处理后的数据来控制轴流风机的转动进而控制风力摆运动。
系统总体框图如图3-1所示
激光笔
轴流风机
电机驱动
STM32
MPU6050
电源
图3-1系统总体框图
(2)电机驱动模块框图与电路原理图
1、电机驱动框图
直流电机驱动电路由电机驱动逻辑电路、光电隔离电路、驱动信号放大电路、H桥功率驱动电路等4部分组成,如图3-2所示。
电机驱动电路的主要控制信号有电机转向控制信号Dir、电机转速控制信号PWM。
Uc1为驱动逻辑电路电源,Uc2为电机驱动电源。
设计的电路中,逻辑电路与驱动放大电路进行电气隔离,消除了驱动电路对前级电路的干扰,逻辑运算后的控制信号通过光电隔离和放大后,驱动H桥上下桥臂,实现对电机的控制。
图3-2电机驱动框图
2、电机驱动电路
图3-3电机驱动电路
(3)角度传感器模块框图与电路原理图
MPU6050整合了三轴陀螺仪、三轴加速度计,并含I2C端口连接其他厂家的加速器、磁力传感器或其他传感器的数位运动处理(DMP)硬件加速引擎等,由主I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术InvenSense的运动处理资料库。
MPU60X0对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。
为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250、±500、±1000与±2000°/sec(dps),加速度计可测范围为±2g、±4g±8g与±16g。
电路图如图3-4所示:
图3-4MPU6050电路图
2、程序的设计
(1)程序功能描述与设计思路
该程序首先初始化,根据风力摆运动要求开启轴流风机,控制系统读取陀螺仪回传数据,进行PID处理后调节PWM出给电机驱动模块,修正轴流风机转动,实现风力摆按要求运动。
(2)程序流程图
1、主程序流程图见附录1
四、测试方案与测试结果
1、测试仪器
仪器
型号
用途
数量
示波器
TEKTRONIXDOP2024
显示电路波形
1
卷尺
WEY-100
测量画线长度
1
量角器
无
测量画线角度
1
电风扇
格力
吹风影响风力摆
1
2、功能测试
(1)测试过程
测试基本要求部分时,初始化系统,将风力摆从静止开始做可控制幅度及方向的摆动,使激光笔在地面稳定地画出直线。
测试发挥部分,初始化程序,风力摆将按照要求,做可控半径的圆周运动,并且在受外力影响时,快速回复圆周运动。
(2)测试结果(数据)
见附录2
3、测试结论与分析
根据上述测试数据,由此可以得出以下结论:
1、风力摆可在规定时间内做可控幅度及方向的直线运动。
2、风力摆再拉起一定角度放开时,可快速恢复静止状态。
3、风力摆可在规定时间内做可设半径的圆周运动,并在受外力作用下快速恢复圆周运动。
综上所述,本设计达到设计要求。
五、结论与心得
该系统采用STM32F103VCT6单片机控制,采用模块化设计,多模块协调工作。
经过四天三夜的不懈努力,完成了题目基本要求和发挥部分。
在此系统设计制作中多次陷入困境,尤其是四元数与姿态计算时的理论分析的确不是我们的强项,但是大家靠现查资料、恶补物理和高数方面的不足,最后得以把误差控制在可接受的范围内,比较圆满完成风力摆可控运动。
在最后的多模块联合调试过程中,由于大家分工不同,代码组合起来的难度超出我们的意料。
最终我们三人通过一个通宵的奋斗还是圆满地完成了任务。
此次比赛,我们深刻体会到队员之间交流的重要性,自己的任务完成得再好,代码联合不起来也是无用功。
六、参考文献
【1】谭浩强.C语言程序设计[M].北京:
清华大学出版社,2012
【2】童诗白、华成英.模拟电子技术基础(第四版)[M].北京:
高等教育出版社,1980.
【3】黄智伟.全国大学生电子设计竞赛电路设计[M].北京:
北京航空航天大学出版社,2006
附录1:
原理图
1、主程序流程图
附录2:
测试数据
1、15s画45cm与基准夹角60度直线
测试次数
直线长度/cm
直线角度/度
用时/s
1
47.0
57.0
14
2
43.5
59.3
15
3
44.3
60.2
16
4
46.4
60.0
15
5
47.4
61.1
13
2、风力摆有35°放开,5s内使风力摆静止
测试次数
1
2
3
4
5
时间/s
6.2
4.9
5.0
4.3
4.8
3、30s内重复3次做半径为30的圆周运动
测试次数
1
2
3
4
5
时间/s
35
25
27
20
33
4、被风扇影响后5s内恢复圆周运动
测试次数
1
2
3
4
5
时间/s
6
6
5
4
5