ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:150.16KB ,
资源ID:20969850      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20969850.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国大学生电子设计竞赛设计报告B题风力摆控制系统精编版Word格式.docx

1、自制单片机印刷电路板自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。不宜采用该方案。方案三:采用单片机最小系统。单片机最小系统包含了显示、矩阵键盘、A/D、D/A等模块,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。综合以上三种方案,选择方案三。2、角度测量模块的论证与选择采用MPU-6050模块MPU-6000(6050)为整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。该芯片内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并可利用自带的数字运动处理器(DMP: Digital M

2、otion Processor)硬件加速引擎,通过主 IIC 接口,向应用端输出姿态解算后的数据。采用ADXL345倾角传感器ADXL345是超低功耗3轴加速度计,分辨率高(13位),测量范围达 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I 2 C数字接口访问。综合以上两种方案,选择方案一。3、风扇驱动模块的论证与选择采用L298N驱动模块L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。一般情况下,功率部分的电压应大于6V否则芯片可能不能正常工作。自己设计驱动模块

3、自己设计的大电流驱动模块可以完全符合系统要求,真正做到完美适配。综合考虑采用方案二4、电源方案的论证与选择使用大功率开关电源接模块和单片机单独直流电源。大功率开关电源接模块给风机供电,单片机单独由直流电源供电。方案简单易可靠,双电源还可保证单片机系统和电机系统的完全隔离,提高系统可靠性。采用双电源供电。风机驱动电源和控制电源分开,控制电机部分通过光耦隔离。电机使用12V锂电池供电,此方案可确保系统的稳定性,但由于我们选择了12V 3.2A的大功率轴流风机,锂电池无法提供足够的功率。综合上述比较,考虑系统的安全性、稳定性以,本系统采用方案一。二、系统理论分析与计算1、风力摆状态的测量与计算的分析

4、 (1)姿态采集分析本系统采用高精度的陀螺加速度计MPU6050不断采集风力摆姿态角数据。MPU6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。MPU6050和所有设备寄存器之间的通信采用400kHz的I2C接口,实现高速通信。且内置的可编程卡尔曼滤波器,采用最优化自回归数据处理算法精确测量风力摆当前姿态角。MPU6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量,通过DMP处理器读取测量数据然后通过串口输出。(2)控制算法分析本系统采用PID算法来控制风机转动的速度。风机开始工作后,姿态采集模块不断采集当前

5、风力摆姿态角状态,并与之前的状态比较,使得风力摆的运动状态逐渐趋向于平稳。PID算法控制器由舵机转动角度比例P、角度误差积分I和角度微分D组成。 其输入e(t)与输出U(t)的关系为:它的传递函数为:风力摆转动角度比例P:对风力摆角速度进行比例调整,即对舵机转动速度调整。比例越大,调节速度越快。但不能过大,过大可能造成四风机因工作状态突变而是摆杆不稳定。 角度误差积分I:使系统消除稳态误差,提高无差度。加入积分调节可使系统稳定性下降,动态响应变慢。本系统追求更快更稳完成对风力摆的控制,因此,本系统对积分调节的需要就非常弱。即保证在不需要时系统不会受到影响。 角度微分D:微分作用反映风力摆角度的

6、变化率,即角速度。具有预见性,能预见偏差变化的趋势因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,减少调节时间。2、角速度的计算 根据三角函数知识,已知某一轴的角加速度可以求得对应的角速度。三、电路与程序设计1、电路的设计(1)系统总体框图系统包括STM32f103单片机;轴流风机和电机驱动模块;MPU-6050传感器。由四台成九十度放置的轴流机来控制旋转臂转动从而来使摆杆摆动,在摆杆和风机平台相结合处加MPU-6050传感器.使摆杆一开始能快速得沿一条直线摆动,并且能保持画出长度偏差不大于2.5cm 的直线段,并且

7、具有较好的重复性。系统总体框图如图3.1所示图3.1 系统总体框图(2)MPU-6050子系统框图与电路原理图1、MPU-6050子系统框图图3.2 MPU-6050子系统框图2、MPU-6050子系统电路图3.3 MPU-6050子系统电路(3)电机驱动模块子系统框图与电路原理图1、电机驱动模块子系统框图图3.4 电机驱动模块子系统框图2、电机驱动模块子系统电路图3.5 电机驱动模块子系统电路(4)电源电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或者12V电压,确保电路的正常稳定工作。这部分电路比较简单,都采用三端稳压管实现,故不作详述。2、程序的设计(1)程序功能描述与设计思

8、路1、程序功能描述根据题目要求软件部分主要实现键盘的设置和显示。1)键盘实现功能:2)显示部分:2、程序设计思路(2)程序流程图1、主程序流程图四、测试方案与测试结果1、测试方案(1)电路功能测试每块电路板分开进行功能测试,进行逐项功能的测试。(2)机械结构测试 搭建好机械结构后,利用等重负载进行负载承重和摇摆震动测试。(3)硬件软件联调驱动风力摆工作,使激光稳定地在地面画出一条长度不短于50cm 的直线段,来回五次,记录其由静止至开始自由摆时间及最大偏差距离。测试结果如表1所示。2、测试条件与仪器测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊

9、。机械结构通过负载测试和电机振动测试。测试仪器:数字示波器,数字万用表,卷尺,量角器,方向角度图纸3、测试结果及分析(1)测试结果(数据)(2)测试分析与结论根据上述测试数据,由此可以得出以下结论:1、2、3、综上所述,本设计达到设计要求。五、结论与心得本次电子设计竞赛,通过对此系统前期的方案设计、方案的选择、方案论证,中期的机械结构的的搭建,硬件的设计和具体程序的实现和后期系统的测试,最终基本能达到要求,通过这次课程设计小组成员之间的分工和合作,交流配合,各项工作有序的进行,完成这次的设计,我没每个人都有很多的收获,但最大的收获不是这个结果,而是在这个过程中,每个人都学到了很多的新知识,提升

10、了解决问题的能力和如何与他人很好的合作。无论最终测评的结果如何,我们都该为此次比赛感到高兴和满足。六、参考文献1童诗白,华程英.模拟电子技术基础(第四版)M.北京:高等教育出版社,2009. 2阎石. 数字电子技术基础(第五版)M.北京:高等教育出版社,2009.3黄智伟,王彦,陈文光等.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社,2007. 4高吉祥,唐朝京.全国大学生电子设计竞赛培训系列教程(电子仪器仪表设计)M.北京:5张友德、赵志英、涂时亮.单片微型机原理、应用与实践(第五版)M.上海:复旦大学出版社,2009. 6郭天祥.新概念51单片机C语言教程.入门、提高、开发M.北

11、京:电子工业出版社,2009. 7梁明理.电子线路(第五版)M.北京:高等教育出版社,2008.8谭浩强.C语言程序设计M.北京:清华大学出版社,2012附录1:电路原理图附图 1.1 MCU 部分原理图附图 1.2 MPU-6050 模块原理图附图 1.3 驱动模块原理图附录2:源程序#include sys.husart.h delay.hled.hlcd.hkey.hmpu6050.husmart.hinv_mpu.hinv_mpu_dmp_motion_driver.h#include static float Error=0; / Errorstatic float LastErro

12、r=0; / Error-1 static float PrevError=0; / Error-2 static float d_Error=0,dd_Error=0;int Kp = 10;int Ki = 0;int Kd = 0; u8 t=0,report=1; /a u8 key; double stand_len=1.055,l1=0.75;/ ¥? float pitch,roll,yaw; /- short aacx,aacy,aacz; /D-yY short gyrox,gyroy,gyroz; /Y short temp; / float first_yaw=0; fl

13、oat current_yaw=0; float x=0.15;/11/c:avoid usart1_send_char(u8 c) while(USART1-SR&0X40)=0);/y USART1-DR=c; /yYt(V2.6)/fun:1|. 0XA00XAF/data:yYo,28!/len:dataDDyYyvoid usart1_niming_report(u8 fun,u8*data,u8 len) u8 send_buf32; u8 i; if(len28)return; /yY send_buflen+3=0; /Dy send_buf0=0X88; send_buf1=

14、fun; /1| send_buf2=len; /yY3 for(i=0;i8)&0XFF; tbuf1=aacx& tbuf2=(aacy tbuf3=aacy& tbuf4=(aacz tbuf5=aacz& tbuf6=(gyrox tbuf7=gyrox& tbuf8=(gyroy tbuf9=gyroy& tbuf10=(gyroz tbuf11=gyroz& usart1_niming_report(0XA1,tbuf,12);/,0XA1/1y1oyY/roll:o1.¥0.01 -18000 - 18000 | -180.00 - 180.00/pitch:.¥ 0.01-90

15、00 - 9000 | -90.00 - 90.00 /yaw:o.¥a0.1 0 - 3600 | 0 - 360.0void usart1_report_imu(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz,short roll,short pitch,short yaw) u8 tbuf28;28;i+)tbufi=0;/0 tbuf18=(roll tbuf19=roll& tbuf20=(pitch tbuf21=pitch& tbuf22=(yaw tbuf23=yaw& usart1_ni

16、ming_report(0XAF,tbuf,28);,0XAF/void TIM2_PWM_Init(u16 arr,u16 psc) /IO RCC-APB1ENR|=10; /TIM2 APB2ENR|=1CRL&=0XFF0FFFFF; /PB5 GPIOB-=0XFFFF0FFF; /PB3 CRH&=0XFFFF00FF; /PB10/PB11 GPIOA-=0X0FFFFFFF; /PA15 CRL|=0X00B00000; /PB5 CRL|=0X0000B000;CRH|=0X0000BB00;CRH|=0XB0000000; / / AFIO-MAPR&=0XFFFFF3FF

17、; /MAPR11:10 AFIO-=0XFFFFFCFF; /MAPR9:8 MAPR|=1PB5 MAPR|=0X02000300; /JTAG-DPSW-DP TIM2-ARR=arr;PSC=psc;/ TIM2-CCMR1|=712; /CH2 PWM2 CCMR1|=0X7070;CCMR1|=1 /CH2 CCMR1|=0X0808;CCMR2|=0X7878; /*,PB10/PB11PWM*/ CCER|=14; /OC2 CCER|=0X1111; /OC2 CR1=0x0080; /ARPE CR1|=0x01; /3 /CH1 PA15 /CH2 PB3 /CH3 PB

18、10 /CH4 9B11/short get_gyrox( float first_yaw, double point, short current_gyrox,short current_gyroy) double p;/D double pd;/D double p1; 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)0)gyrox=fabs(gyrox); else gyrox=-fabs(gyrox); else gyrox=-asin(sin(p)*cos(yaw); return gyrox;short get_gyroy( float first_yaw, double point,short current_gyroy,short curren

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1