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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

全国大学生电子设计竞赛论文B题风力摆 完整版.docx

1、全国大学生电子设计竞赛论文B题风力摆 完整版此处贴密封纸,然后掀起并折向报告背面,最后用胶水在后面粘牢。2013年全国大学生电子设计竞赛风力摆控制系统(B题)2015年8月15日摘 要 本系统采用IAP15F2K61S2 增强型 51 单片机作为主控制芯片,经过充分比较、论证,我们最终选用MPU6050进行摆动数据的采集。单片机控制风力摆动作,6050实时采集摆动的速度和加速度,PID算法对其处理后反馈给单片机。整个系统由单片机、陀螺仪、PID算法一起构成完整的闭环控制器。通过实验测试,本系统可基本完成题设要求。本设计优点在于:利用PWM波设计闭环控制器,稳定精确的控制风力摆的运动姿态。关键词

2、:PWM波;PID算法;风力摆;单片机;陀螺仪风力摆控制系统(B题)【本科组】1系统方案本系统主要由显示模块、动力模块、数据采集模块、中央处理模块和电源模块组成,下面分别论证这几个模块的选择。1.1 处理器的论证与选择方案一:采用可编程逻辑器件CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,从使用要求及经济的角度考虑我们放弃了此方案。方案二:采用凌阳公司的16位单片机,它是1

3、6位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。处理速度高,尤其适用于语音处理和识别等领域。但是当凌阳单片机应用语音处理和辨识时,由于其占用的CPU资源较多而使得凌阳单片机同时处理其它任务的速度和能力降低。方案三:采用比较普及的IAP15F2K61S2 增强型 51 处理器,其价格低廉,学习资料比较多,易于自主的学习与掌握,而且这方面的图书和教材比较多,学习资料易于获取。综合考虑采用该方案。在风力摆摆动过程中处理的数据量51 的IO口完全可以满足。综合以上三种方案,选择方案三。1.2 轴流风机的论证与选择方案一:采用步进电机。步进电机具有

4、动态响应快、易于起停,易于正反转 及变速的优点。但缺点是它以步进式跟进,角度小于一个步距角时是系统响应盲区,而且经过测试步进电机在控制旋转臂时,抖动性大并且容易出现卡顿现象,所以不适合风力摆的控制。 方案二:采用小型轴流风机,风速稳定,产生的推力方向稳定。但是由于自身体积较大,电流要求较高,而市场上电流高于1A的轴流风机往往难以采集。方案三:采用自制流风机。不受材料的限制,制定满足要求并且适用的流风机,扭矩大,体积小,驱动电路简单,稳定强,负载能力强。 综合以上三种方案,选择方案三。1.3 陀螺仪的论证与选择方案一:L3G4200D模块(三轴陀螺仪模块)使用L3G4200D芯片,采用3-5v供

5、电通信方式:IIC/SPI通信协议,测量范围为250/500/2000 DPS。方案二:MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、其他的特征包含内建的温度感测器、包含在运作环境中仅有1%变动的振荡器 综合以上二种方案,选择方案二。1.4 控制系统的论证与选择方案一:采用经验控制。根据多次实验,获取实验数据,然后人为制定控制规律。优点在于可以实际知道,在多次试验后呈现出的运动规则。缺点在于操作过程繁琐,

6、不易找出真实可信的规律,并且系统鲁棒性较差,易受外界变化而差生控制上的不可控抖动。 方案二:按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、)。 综合以上二种方案,选择方案二。2系统理论分析与计算2.1 状态的分析 采用高精度

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

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

9、差变化的趋势因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,减少调节时间。2.3 运动规律的计算1、v(线速度)=S/t=2r/T=r=2rn (S代表弧长,t代表时间,r代表半径,n代表转速)2、(角速度)=/t=2/T=2n (表示角度或者弧度)3、T(周期)=2r/v=2/4、n(转速)=1/T=v/2r=/25、Fn(向心力)=mr2=mv2/r=mr42/T2=mr42n26、an(向心加速度)=r2=v2/r=r42/T2=r42n27、vmin=gr (过最高点时的条件)8、fmin (过最高点时的对杆

10、的压力)=mg-gr (有杆支撑)9、fmax (过最低点时的对杆的拉力)=mg+gr (有杆) 3电路与程序设计3.1电路的设计3.1.1系统总体框图系统总体框图如图1所示:图1 系统总体框图3.1.2显示模块1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字

11、符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。图2 显示模块连接图 3.1.3 驱动电路原理图驱动模块是以L293D驱动芯片构成的双H桥电路,如图15所示,本驱动模块对称电路,可以分别驱动小型水泵电机和补光灯设备,其中4、5和6、7端口为单片机信号连接端口,2、3和8、9端口为小型水泵电机和补光灯连接端口。原理是4、5端口或6、7端口一旦产生电压差,L293D芯片将把这个电压差按照比例放大功率输出。图3 端口驱动电路3.2程序的设计3.2.1主程序流程图图4

12、主程序流程图3.2.1子程序流程图图4 基础要求1子程序流程图4测试方案与测试结果4.1测试方案1、硬件测试常温下,系统满负荷运行,测试产品各芯片管脚、电源芯片或模块输出的电压值、纹波噪声;满足产品及芯片要求。系统满负荷持续运行,测试产品所有复位信号质量,满足各芯片要求。系统满负荷持续运行,测试产品所有晶体/晶振时钟、接口时钟输出特性,满足芯片要求。2、软件仿真测试LM7809稳压模块仿真图5为三端稳压集成电路LM7809稳压模块的仿真结果,C3、C4分别为输入端和输出端滤波电容,R4、R5分别为输入输出端保护电阻。当输出电流较大时,LM7809产热较大,应加散热片。以LM7809三端稳压电路

13、来实现稳压电源所需的外围元件极少,电路内部设有过流、过热及调整管的保护电路,使用可靠、方便。由于该三端固定集成稳压电路使用方便,因此,广泛应用在电子电路中经常采用。当三端稳压集成电路LM7809输入电压略大于9V时,通过LM7809稳压模块可输出稳定的9V电压。图5 LM7809稳压模块仿真图4.2 测试条件与仪器 秒表,自制风力摆,台扇,量角器,长直尺。4.3 测试结果及分析4.3.1测试结果(数据)驱动风力摆工作,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,来回五次,记录其由静止至开始自由摆时间及最大偏差距离。测试结果如表1所示。时间(s)误差1(cm)误差2(cm)误差3(c

14、m)误差4(cm)误差5(cm)第一次测试4.22.0-1.61.41.6-1.5第二次测试4.0-1.81.51.8-2.01.7第三次测试4.32.0-2.22.11.9-2.2表1 风力摆画长于50cm直线测试设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画不同长度直线时的最大偏差距离。测试结果如表2所示。时间(s)误差1(cm)误差2(cm)误差3(cm)误差4(cm)误差5(cm)画30cm直线102.21.61.5-1.71.8画40cm直线112.3-2.12.01.81.9画50cm直线121.4-1.6-1.41.8-1.3画60cm直线14-2.32.

15、1-1.91.71.9表2 风力摆画不同长度直线测试 设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画不同角度直线时的最大偏差。测试结果如表3所示。角度选择误差类型时间(s)误差1误差2误差3误差4画0或180直线角度()1153-44画45或225直线角度()132-453画90或270直线角度()15-46-53画135或315直线角度()12-15-24表3 风力摆画不同角度直线测试将风力摆拉起一定角度放开,驱动风力摆工作,测试风力摆制动达静止状态所用时间。测试结果如表4所示,角度时间1(s)时间2(s)时间3(s)时间4(s)时间5(s)拉起30151714201

16、9拉起453740474342表4 风力摆恢复静止测试以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。改变圆半径再次测试,重复以上操作四次。测试结果如表5所示。半径15cm半径20cm半径25cm半径30cm半径35cm第一次时间(s)4851525459偏差距离(cm)2.02.21.62.01.8第二次时间(s)4544495053偏差距离(cm)1.51.82.01.71.5第三次时间(s)4650515556偏差距离(cm)1.91.41.71.91.8表5 风力摆画圆测试在的基础上,使用一台60

17、W台扇在距离风力摆1m距离处向其吹5s后静止,记录风力摆恢复画圆状态时间及偏差测试结果如表5所示。半径15cm半径20cm半径25cm半径30cm半径35cm第一次恢复时间(s)24545偏差距离(cm)2.01.61.41.41.7第二次恢复时间(s)34456偏差距离(cm)2.01.62.01.81.8第三次恢复时间(s)34555偏差距离(cm)1.81.61.41.82.0表6 风力摆抗干扰测试4.3.2测试分析与结论根据上述测试数据,可以得出以下结论:1、驱动风力摆工作,激光笔稳定地在地面画出一条长度不短于50cm的直线段,来回五次,满足时间要求及最大偏差距离。实现基本要求第一部分

18、。2、设置风力摆画线长度,驱动风力摆工作,其由静止至稳定摆动的时间及在画不同长度直线时的最大偏差距离小于2.5cm。实现基本要求第二部分。3、设置风力摆画线长度,驱动风力摆工作,其由静止至稳定摆动的时间符合要求,时间和最大偏差角度基本达标。基本实现第三部分。4、将风力摆拉起一定角度放开,驱动风力摆工作,系统在规定事件内不能达到完全静止,未能实现基础要求第四部分。5、以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。改变圆半径再次测试,重复以上操作四次。实现发挥部分第一部分。6、使用一台60W台扇在距离风力摆

19、1m距离处向其吹5s后静止,符合标准,实现发挥部分第二部分。5、参考文献1李硕,赵彤帆,李根全,宋海珍. Matlab软件在单摆自由振动中的应用J. 实验室研究与探索,2013,11:65-68.2陈文涛,龚善初. 单摆振动分析J. 湖南理工学院学报(自然科学版),2008,01:66-70.3侯祥林,丛德宏,徐心和. 倒立单摆摆起开环控制律的最优化算法J. 东北大学学报,2004,01:9-12.4龚善初. 影响单摆振动周期的参数研究J. 大学物理,2006,06:12-15.5郭鹏. 模糊前馈与模糊PID结合的风力发电机组变桨距控制J. 中国电机工程学报,2010,08:123-128.6

20、王述彦,师宇,冯忠绪. 基于模糊PID控制器的控制方法研究J. 机械科学与技术,2011,01:166-172.7何芝强. PID控制器参数整定方法及其应用研究D.浙江大学,2005.8张卫政. 基于模糊控制的风机盘管空调系统应用研究D.广东工业大学,2005.9张才华. 轴流风机模块化设计的若干技术研究D.浙江大学,2014.10王冀龙. 智能新风机控制系统设计D.燕山大学,2014.附录1:源程序 #include stc15f2k60s2.h /#include lcd1602.h #include /Keil library #include /Keil library #includ

21、e typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;#define DataPort P0 /LCD1602数据端口sbit SCL=P10; /IIC时钟引脚定义sbit SDA=P11; /IIC数据引脚定义sbit LCM_RS=P42; /LCD1602命令端口 sbit LCM_RW=P41; /LCD1602命令端口 sbit LCM_EN=P37; /LCD1602命令端口 sbit STEP0 =P20;sbit STEP1 =P21;sbit STEP2 =

22、P22;sbit STEP3 =P23; sbit STEP4 =P24; /学习班自带驱动sbit STEP5 =P25;sbit STEP6 =P26;sbit STEP7 =P27; #define SMPLRT_DIV 0x19 /陀螺仪采样率,典型值:0x07(125Hz)#define CONFIG 0x1A /低通滤波频率,典型值:0x06(5Hz)#define GYRO_CONFIG 0x1B /陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)#define ACCEL_CONFIG 0x1C /加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检

23、,2G,5Hz)#define ACCEL_XOUT_H 0x3B#define ACCEL_XOUT_L 0x3C#define ACCEL_YOUT_H 0x3D#define ACCEL_YOUT_L 0x3E#define ACCEL_ZOUT_H 0x3F#define ACCEL_ZOUT_L 0x40#define TEMP_OUT_H 0x41#define TEMP_OUT_L 0x42#define GYRO_XOUT_H 0x43#define GYRO_XOUT_L 0x44 #define GYRO_YOUT_H 0x45#define GYRO_YOUT_L 0x4

24、6#define GYRO_ZOUT_H 0x47#define GYRO_ZOUT_L 0x48#define PWR_MGMT_1 0x6B /电源管理,典型值:0x00(正常启用)#define WHO_AM_I 0x75 /IIC地址寄存器(默认数值0x68,只读)#define SlaveAddress 0xD0 /IIC写入时的地址字节数据,+1为读取uchar dis4; /显示数字(-511至512)的字符数组int dis_data; /变量int zs;int p_wm;void delay(unsigned int k); /延时void InitLcd(); /初始化l

25、cd1602void lcd_printf(uchar *s,int temp_data);void WriteDataLCM(uchar dataW); /LCD数据void WriteCommandLCM(uchar CMD,uchar Attribc); /LCD指令void DisplayOneChar(uchar X,uchar Y,uchar DData); /显示一个字符void DisplayListChar(uchar X,uchar Y,uchar *DData,L); /显示字符串void InitMPU6050(); /初始化MPU6050void Delay5us()

26、;void I2C_Start();void I2C_Stop();void I2C_SendACK(bit ack);bit I2C_RecvACK();void I2C_SendByte(uchar dat);uchar I2C_RecvByte();void I2C_ReadPage();void I2C_WritePage();void display_ACCEL_x();void display_ACCEL_y();void display_ACCEL_z();uchar Single_ReadI2C(uchar REG_Address); /读取I2C数据void Single_W

27、riteI2C(uchar REG_Address,uchar REG_data); /向I2C写入数据void lcd_printf(uchar *s,int temp_data) if(temp_data0) temp_data=-temp_data; *s=-; else *s= ; *+s =temp_data/100+0x30; temp_data=temp_data%100; /取余运算 *+s =temp_data/10+0x30; temp_data=temp_data%10; /取余运算 *+s =temp_data+0x30; void delay(unsigned int

28、 k) unsigned int i,j; for(i=0;ik;i+) for(j=0;j121;j+); void InitLcd() WriteCommandLCM(0x38,1); WriteCommandLCM(0x08,1); WriteCommandLCM(0x01,1); WriteCommandLCM(0x06,1); WriteCommandLCM(0x0c,1); DisplayOneChar(0,0,A); DisplayOneChar(0,1,G); /LCD1602写允许void WaitForEnable(void) DataPort=0xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1;_nop_();_nop_(); while(DataPort&0x80); LCM_EN=0; /LCD1602写入命令void WriteCommandLCM(uchar CMD,uchar Attribc) if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0;_nop_(); DataPort=CMD;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_E

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

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