全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版.docx
- 文档编号:7840741
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:20
- 大小:150.16KB
全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版.docx
《全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版.docx(20页珍藏版)》请在冰豆网上搜索。
全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版
公司内部编号:
(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-9018)
全国大学生电子设计竞赛设计报告B题风力摆控制系统
2015年全国大学生电子设计竞赛
风力摆控制系统(B题)
参赛学校:
长安大学
队伍编号:
XZ015
参赛队员:
崔曜东、马若斯、李宝才
指导教师:
2015年8月15日
摘要
本系统为由STM32单片机控制模块、姿态采集模块、风力摆模块、人及交互系统以及风力摆机械结构组成的闭环控制系统。
MPU-6050陀螺仪传感器实时采集风力摆的姿态角及角速度,STM32f103单片机通过PID算法调节轴流电机转速以控制风力摆。
风力摆能够实现快速起摆、画线、恢复静止的功能,并能准确画圆。
同时系统可以通过键盘设定运行模式和相关角度值,风力摆的角度和运行时间由液晶显示,具有较好人机界面。
系统设计结构简单,制作成本低,控制精度高。
关键词:
STM32f103、MPU-6050模块、PWM调速
Abstract
ThissystemiscomposedofSTM32controlmodule,attitudeacquisitionmodule,windforcemodel,humanandinteractivesystem,andtheclosed-loopcontrolsystemcomposedofwindforce.TheattitudeandangularvelocityoftheMPU-6050gyroscopesensorareacquiredinrealtime,andthespeedofthemotoriscontrolledbythePIDalgorithm,andthespeedofthemotoriscontrolledbytheSTM32f103algorithm.Windpowercanbeachievedquickly,drawlines,restorethefunctionofstatic,andcanaccuratelydrawcircle.Atthesametime,thesystemcansetuptheoperatingmodeandtherelevantanglevalue,andtheangleofthewindforceandtherunningtimeofthesystemaredisplayedbytheLCD.Thesystemhastheadvantagesofsimplestructure,lowcostandhighcontrolprecision.
Keywords:
MPU-6050,STM32f103module,PWMspeedcontrol
风力摆控制系统(B题)
【本科组】
一、系统方案
本风力摆控制系统主要包括控制模块、电源模块、姿态采集模块、轴流风机及驱动模块、LCD显示模块、人机交互系统以及风力摆机械结构组成。
风力摆由万向节连接碳杆再连接风机组成。
位于碳素杆下方的姿态采集模块不断采集风力摆当前姿态角,并返回单片机。
单片机控制LCD显示姿态角数据并处理数据后通过控制PWM波占空比控制风机转速,实现对风力摆的控制。
本系统结构框图如图1所示。
图1.1系统方案框图
1、主控制器件的论证与选择
1.1控制器选用
单片机比较
方案一:
采用传统的51系列单片机
传统的51单片机为8位机,价格便宜,控制简单,但是运算速度慢,片内资源少,存储容量小,难以存储大体积的程序和实现快速精准的反应控制。
并且受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。
方案二:
采用32位的ARM微控制器
意法半导体(ST)公司出品的STM32f103RCT6,其内核是Cortex-M3,其片内集成了256K程序存储器,2个12位模数转换器(多达16个输入通道)、多达8个定时器等资源。
通过比较,我们选择方案二,采用32位的STM32f103RCT6作为控制器。
方案一:
采用在面包板上搭建简易单片机系统
在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低,不适合本系统使用。
方案二:
自制单片机印刷电路板
自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。
不宜采用该方案。
方案三:
采用单片机最小系统。
单片机最小系统包含了显示、矩阵键盘、A/D、D/A等模块,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。
综合以上三种方案,选择方案三。
2、角度测量模块的论证与选择
方案一:
采用MPU-6050模块
MPU-6000(6050)为整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。
该芯片内部整合了3轴陀螺仪和3轴加速度传感器,并可利用自带的数字运动处理器(DMP:
DigitalMotionProcessor)硬件加速引擎,通过主IIC接口,向应用端输出姿态解算后的数据。
方案二:
采用ADXL345倾角传感器
ADXL345是超低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。
数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。
综合以上两种方案,选择方案一。
3、风扇驱动模块的论证与选择
方案一:
采用L298N驱动模块
L298N是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。
一般情况下,功率部分的电压应大于6V否则芯片可能不能正常工作。
方案二:
自己设计驱动模块
自己设计的大电流驱动模块可以完全符合系统要求,真正做到完美适配。
综合考虑采用方案二
4、电源方案的论证与选择
方案一:
使用大功率开关电源接模块和单片机单独直流电源。
大功率开关电源接模块给风机供电,单片机单独由直流电源供电。
方案简单易可靠,双电源还可保证单片机系统和电机系统的完全隔离,提高系统可靠性。
方案二:
采用双电源供电。
风机驱动电源和控制电源分开,控制电机部分通过光耦隔离。
电机使用12V锂电池供电,此方案可确保系统的稳定性,但由于我们选择了12V3.2A的大功率轴流风机,锂电池无法提供足够的功率。
综合上述比较,考虑系统的安全性、稳定性以,本系统采用方案一。
二、系统理论分析与计算
1、风力摆状态的测量与计算的分析
(1)姿态采集分析
本系统采用高精度的陀螺加速度计MPU6050不断采集风力摆姿态角数据。
MPU6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。
MPU6050和所有设备寄存器之间的通信采用400kHz的I2C接口,实现高速通信。
且内置的可编程卡尔曼滤波器,采用最优化自回归数据处理算法精确测量风力摆当前姿态角。
MPU6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量,通过DMP处理器读取测量数据然后通过串口输出。
(2)控制算法分析
本系统采用PID算法来控制风机转动的速度。
风机开始工作后,姿态采集模块不断采集当前风力摆姿态角状态,并与之前的状态比较,使得风力摆的运动状态逐渐趋向于平稳。
PID算法控制器由舵机转动角度比例P、角度误差积分I和角度微分D组成。
其输入e(t)与输出U(t)的关系为:
它的传递函数为:
风力摆转动角度比例P:
对风力摆角速度进行比例调整,即对舵机转动速度调整。
比例越大,调节速度越快。
但不能过大,过大可能造成四风机因工作状态突变而是摆杆不稳定。
角度误差积分I:
使系统消除稳态误差,提高无差度。
加入积分调节可使系统稳定性下降,动态响应变慢。
本系统追求更快更稳完成对风力摆的控制,因此,本系统对积分调节的需要就非常弱。
即保证在不需要时系统不会受到影响。
角度微分D:
微分作用反映风力摆角度的变化率,即角速度。
具有预见性,能预见偏差变化的趋势因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。
因此,可以改善系统的动态性能。
在微分时间选择合适情况下,减少调节时间。
2、角速度的计算
根据三角函数知识,已知某一轴的角加速度可以求得对应的角速度。
三、电路与程序设计
1、电路的设计
(1)系统总体框图
系统包括STM32f103单片机;轴流风机和电机驱动模块;MPU-6050传感器。
由四台成九十度放置的轴流机来控制旋转臂转动从而来使摆杆摆动,在摆杆和风机平台相结合处加MPU-6050传感器.使摆杆一开始能快速得沿一条直线摆动,并且能保持画出长度偏差不大于±2.5cm的直线段,并且具有较好的重复性。
系统总体框图如图3.1所示
图3.1系统总体框图
(2)MPU-6050子系统框图与电路原理图
1、MPU-6050子系统框图
图3.2MPU-6050子系统框图
2、MPU-6050子系统电路
图3.3MPU-6050子系统电路
(3)电机驱动模块子系统框图与电路原理图
1、电机驱动模块子系统框图
图3.4电机驱动模块子系统框图
2、电机驱动模块子系统电路
图3.5电机驱动模块子系统电路
(4)电源
电源由变压部分、滤波部分、稳压部分组成。
为整个系统提供
5V或者
12V电压,确保电路的正常稳定工作。
这部分电路比较简单,都采用三端稳压管实现,故不作详述。
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现键盘的设置和显示。
1)键盘实现功能:
2)显示部分:
2、程序设计思路
(2)程序流程图
1、主程序流程图
四、测试方案与测试结果
1、测试方案
(1)电路功能测试
每块电路板分开进行功能测试,进行逐项功能的测试。
(2)机械结构测试
搭建好机械结构后,利用等重负载进行负载承重和摇摆震动测试。
(3)硬件软件联调
驱动风力摆工作,使激光稳定地在地面画出一条长度不短于50cm的直线段,来回五次,记录其由静止至开始自由摆时间及最大偏差距离。
测试结果如表1所示。
2、测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
机械结构通过负载测试和电机振动测试。
测试仪器:
数字示波器,数字万用表,卷尺,量角器,方向角度图纸
3、测试结果及分析
(1)测试结果(数据)
(2)测试分析与结论
根据上述测试数据,由此可以得出以下结论:
1、
2、
3、
综上所述,本设计达到设计要求。
五、结论与心得
本次电子设计竞赛,通过对此系统前期的方案设计、方案的选择、方案论证,中期的机械结构的的搭建,硬件的设计和具体程序的实现和后期系统的测试,最终基本能达到要求,通过这次课程设计小组成员之间的分工和合作,交流配合,各项工作有序的进行,完成这次的设计,我没每个人都有很多的收获,但最大的收获不是这个结果,而是在这个过程中,每个人都学到了很多的新知识,提升了解决问题的能力和如何与他人很好的合作。
无论最终测评的结果如何,我们都该为此次比赛感到高兴和满足。
六、参考文献
[1]童诗白,华程英.模拟电子技术基础(第四版)[M].北京:
高等教育出版社,2009.
[2]阎石.数字电子技术基础(第五版)[M].北京:
高等教育出版社,2009.
[3]黄智伟,王彦,陈文光等.全国大学生电子设计竞赛训练教程[M].北京:
电子工业出版社,2007.
[4]高吉祥,唐朝京.全国大学生电子设计竞赛培训系列教程(电子仪器仪表设计)[M].北京:
电子工业出版社,2007.
[5]张友德、赵志英、涂时亮.单片微型机原理、应用与实践(第五版)[M].上海:
复旦大学出版社,2009.
[6]郭天祥.新概念51单片机C语言教程.入门、提高、开发[M].北京:
电子工业出版社,2009.
[7]梁明理.电子线路(第五版)[M].北京:
高等教育出版社,2008.
[8]谭浩强.C语言程序设计[M].北京:
清华大学出版社,2012
附录1:
电路原理图
附图1.1MCU部分原理图
附图1.2MPU-6050模块原理图
附图1.3驱动模块原理图
附录2:
源程序
#include"sys.h"
#include"usart.h"
#include"delay.h"
#include"led.h"
#include"lcd.h"
#include"key.h"
#include"mpu6050.h"
#include"usmart.h"
#include"inv_mpu.h"
#include"inv_mpu_dmp_motion_driver.h"
#include
staticfloatError=0;//Error
staticfloatLastError=0;//Error[-1]
staticfloatPrevError=0;//Error[-2]
staticfloatd_Error=0,dd_Error=0;
intKp=10;
intKi=0;
intKd=0;
u8t=0,report=1;//èa鱨
u8key;
doublestand_len=1.055,l1=0.75;//μ¥?
×
floatpitch,roll,yaw;//·à-
shortaacx,aacy,aacz;//óùè′D÷-êêyY
shortgyrox,gyroy,gyroz;//íóYò-êêyY
shorttemp;//è
floatfirst_yaw=0;
floatcurrent_yaw=0;
floatx=0.15;
//′ú1·¢í1×·
//c:
òa·¢íμ×·
voidusart1_send_char(u8c)
{
while((USART1->SR&0X40)==0);//μè′yéò′·¢ííê±
USART1->DR=c;
}
//′íêyYáéúèít(V2.6°±)
//fun:
1|ü×.0XA0~0XAF
//data:
êyYo′,×à28×ú!
!
//len:
dataóDD§êyYêy
voidusart1_niming_report(u8fun,u8*data,u8len)
{
u8send_buf[32];
u8i;
if(len>28)return;//×à28×úêyY
send_buf[len+3]=0;//D£éêyá
send_buf[0]=0X88;//í·
send_buf[1]=fun;//1|ü×
send_buf[2]=len;//êyY3¤è
for(i=0;i for(i=0;i for(i=0;i } //·¢íóùè′D÷êyYoííóYòêyY //aacx,aacy,aacz: x,y,zèy·òéμóùèμ //gyrox,gyroy,gyroz: x,y,zèy·òéμíóYòμ voidmpu6050_send_data(shortaacx,shortaacy,shortaacz,shortgyrox,shortgyroy,shortgyroz) { u8tbuf[12]; tbuf[0]=(aacx>>8)&0XFF; tbuf[1]=aacx&0XFF; tbuf[2]=(aacy>>8)&0XFF; tbuf[3]=aacy&0XFF; tbuf[4]=(aacz>>8)&0XFF; tbuf[5]=aacz&0XFF; tbuf[6]=(gyrox>>8)&0XFF; tbuf[7]=gyrox&0XFF; tbuf[8]=(gyroy>>8)&0XFF; tbuf[9]=gyroy&0XFF; tbuf[10]=(gyroz>>8)&0XFF; tbuf[11]=gyroz&0XFF; usart1_niming_report(0XA1,tbuf,12);//רò,0XA1 } //í¨1y′ú1鱨áoóμ×ìêyYμ //aacx,aacy,aacz: x,y,zèy·òéμóùèμ //gyrox,gyroy,gyroz: x,y,zèy·òéμíóYòμ //roll: oá1.μ¥0.01è£-18000->18000ó|-180.00->180.00è //pitch: .μ¥0.01è£-9000-9000ó|-90.00->90.00è //yaw: oò.μ¥a0.1è0->3600ó|0->360.0è voidusart1_report_imu(shortaacx,shortaacy,shortaacz,shortgyrox,shortgyroy,shortgyroz,shortroll,shortpitch,shortyaw) { u8tbuf[28]; u8i; for(i=0;i<28;i++)tbuf[i]=0;//0 tbuf[0]=(aacx>>8)&0XFF; tbuf[1]=aacx&0XFF; tbuf[2]=(aacy>>8)&0XFF; tbuf[3]=aacy&0XFF; tbuf[4]=(aacz>>8)&0XFF; tbuf[5]=aacz&0XFF; tbuf[6]=(gyrox>>8)&0XFF; tbuf[7]=gyrox&0XFF; tbuf[8]=(gyroy>>8)&0XFF; tbuf[9]=gyroy&0XFF; tbuf[10]=(gyroz>>8)&0XFF; tbuf[11]=gyroz&0XFF; tbuf[18]=(roll>>8)&0XFF; tbuf[19]=roll&0XFF; tbuf[20]=(pitch>>8)&0XFF; tbuf[21]=pitch&0XFF; tbuf[22]=(yaw>>8)&0XFF; tbuf[23]=yaw&0XFF; usart1_niming_report(0XAF,tbuf,28);//·éê,0XAF } ////////////////////////////////////////////////////// voidTIM2_PWM_Init(u16arr,u16psc) { //IO RCC->APB1ENR|=1<<0;//TIM2 RCC->APB2ENR|=1<<2;//PORTA RCC->APB2ENR|=1<<3;//PORTB //GPIOB->CRL&=0XFF0FFFFF;//PB5 GPIOB->CRL&=0XFFFF0FFF;//PB3 GPIOB->CRH&=0XFFFF00FF;//PB10/PB11 GPIOA->CRH&=0X0FFFFFFF;//PA15 //GPIOB->CRL|=0X00B00000;//PB5 GPIOB->CRL|=0X0000B000;//PB3 GPIOB->CRH|=0X0000BB00;//PB10/PB11 GPIOA->CRH|=0XB0000000;//PA15 RCC->APB2ENR|=1<<0;// //AFIO->MAPR&=0XFFFFF3FF;//MAPR[11: 10] AFIO->MAPR&=0XFFFFFCFF;//MAPR[9: 8] //AFIO->MAPR|=1<<11;//,TIM3_CH2->PB5 AFIO->MAPR|=0X02000300;//JTAG-DPSW-DP TIM2->ARR=arr;// TIM2->PSC=psc;// //TIM2->CCMR1|=7<<12;//CH2PWM2 TIM2->CCMR1|=0X7070;//CH2PWM2 //TIM2->CCMR1|=1<<11;//CH2 TIM2->CCMR1|=0X0808;//CH2 TIM2->CCMR2|=0X7878;/*,PB10/PB11PWM*/ //TIM2->CCER|=1<<4;//OC2 TIM2->CCER|=0X1111;//OC2 TIM2->CR1=0x0080;//ARPE TIM2->CR1|=0x01;//3 }//CH1PA15 //CH2PB3 //CH3PB10 //CH49B11 /////////////////////////////////////////////////////////////////////////// shortget_gyrox(floatfirst_yaw,doublepoint,shortcurrent_gyrox,shortcurrent_gyroy) { doublep;//μ±°D doublepd;//úíμD doublep1;//úíùè current_gyrox=current_gyrox/(16.384);//μμùè pd=atan(point/stand_len);//úíè p=asin(sqrt(sin(current_gyrox)*sin(current_gyrox)+sin(current_gyroy)*sin(current_gyroy)));//μ±°è p1=sqrt(19.6/l1*(cos(p)-cos(pd))); if(fabs(p) { gyrox=asin(sin(p1)*cos(yaw));//úíμXùè if(current_gyrox>0)gyrox=fabs(gyrox); else { gyrox=-fabs(gyrox); } } else { gyrox=-asin(sin(p)*cos(yaw)); } returngyrox; } shortget_gyroy(floatfirst_yaw,doublepoint,shortcurrent_gyroy,shortcurren
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国大学生 电子设计 竞赛 设计 报告 风力 控制系统 精编