全国大学生电子设计竞赛论文B题风力摆 完整版.docx
- 文档编号:11270594
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:31
- 大小:148.87KB
全国大学生电子设计竞赛论文B题风力摆 完整版.docx
《全国大学生电子设计竞赛论文B题风力摆 完整版.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞赛论文B题风力摆 完整版.docx(31页珍藏版)》请在冰豆网上搜索。
全国大学生电子设计竞赛论文B题风力摆完整版
此处贴密封纸,然后掀起并折向报告背面,最后用胶水在后面粘牢。
2013年全国大学生电子设计竞赛
风力摆控制系统(B题)
2015年8月15日
摘要
本系统采用IAP15F2K61S2增强型51单片机作为主控制芯片,经过充分比较、论证,我们最终选用MPU6050进行摆动数据的采集。
单片机控制风力摆动作,6050实时采集摆动的速度和加速度,PID算法对其处理后反馈给单片机。
整个系统由单片机、陀螺仪、PID算法一起构成完整的闭环控制器。
通过实验测试,本系统可基本完成题设要求。
本设计优点在于:
利用PWM波设计闭环控制器,稳定精确的控制风力摆的运动姿态。
关键词:
PWM波;PID算法;风力摆;单片机;陀螺仪
风力摆控制系统(B题)
【本科组】
1系统方案
本系统主要由显示模块、动力模块、数据采集模块、中央处理模块和电源模块组成,下面分别论证这几个模块的选择。
1.1处理器的论证与选择
方案一:
采用可编程逻辑器件CPLD作为控制器。
CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。
采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。
但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,从使用要求及经济的角度考虑我们放弃了此方案。
方案二:
采用凌阳公司的16位单片机,它是16位控制器,具有体积小、驱动能力高、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点。
处理速度高,尤其适用于语音处理和识别等领域。
但是当凌阳单片机应用语音处理和辨识时,由于其占用的CPU资源较多而使得凌阳单片机同时处理其它任务的速度和能力降低。
方案三:
采用比较普及的IAP15F2K61S2增强型51处理器,其价格低廉,学习资料比较多,易于自主的学习与掌握,而且这方面的图书和教材比较多,学习资料易于获取。
综合考虑采用该方案。
在风力摆摆动过程中处理的数据量51的IO口完全可以满足。
综合以上三种方案,选择方案三。
1.2轴流风机的论证与选择
方案一:
采用步进电机。
步进电机具有动态响应快、易于起停,易于正反转及变速的优点。
但缺点是它以步进式跟进,角度小于一个步距角时是系统响应盲区,而且经过测试步进电机在控制旋转臂时,抖动性大并且容易出现卡顿现象,所以不适合风力摆的控制。
方案二:
采用小型轴流风机,风速稳定,产生的推力方向稳定。
但是由于自身体积较大,电流要求较高,而市场上电流高于1A的轴流风机往往难以采集。
方案三:
采用自制流风机。
不受材料的限制,制定满足要求并且适用的流风机,扭矩大,体积小,驱动电路简单,稳定强,负载能力强。
综合以上三种方案,选择方案三。
1.3陀螺仪的论证与选择
方案一:
L3G4200D模块(三轴陀螺仪模块)使用L3G4200D芯片,采用3-5v供电通信方式:
IIC/SPI通信协议,测量范围为250/500/2000DPS。
方案二:
MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。
MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器
综合以上二种方案,选择方案二。
1.4控制系统的论证与选择
方案一:
采用经验控制。
根据多次实验,获取实验数据,然后人为制定控制规律。
优点在于可以实际知道,在多次试验后呈现出的运动规则。
缺点在于操作过程繁琐,不易找出真实可信的规律,并且系统鲁棒性较差,易受外界变化而差生控制上的不可控抖动。
方案二:
按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。
它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。
PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、…)。
综合以上二种方案,选择方案二。
2系统理论分析与计算
2.1状态的分析
采用高精度的陀螺加速度计MPU6050不断采集风力摆姿态角数据。
MPU6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。
MPU6050和所有设备寄存器之间的通信采用400kHz的I2C接口,实现高速通信。
且内置的可编程卡尔曼滤波器,采用最优化自回归数据处理算法精确测量风力摆当前姿态角。
MPU6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量,通过DMP处理器读取测量数据然后通过串口输出。
2.2算法的分析
本系统采用PID算法来控制风机转动的速度。
风机开始工作后,姿态采集模块不断采集当前风力摆姿态角状态,并与之前的状态比较,使得风力摆的运动状态逐渐趋向于平稳。
PID算法控制器由舵机转动角度比例P、角度误差积分I和角度微分D组成。
其输入e(t)与输出U(t)的关系为:
它的传递函数为:
风力摆转动角度比例P:
对风力摆角速度进行比例调整,即对舵机转动速度调整。
比例越大,调节速度越快。
但不能过大,过大可能造成四风机因工作状态突变而是摆杆不稳定。
角度误差积分I:
使系统消除稳态误差,提高无差度。
加入积分调节可使系统稳定性下降,动态响应变慢。
本系统追求更快更稳完成对风力摆的控制,因此,本系统对积分调节的需要就非常弱。
即保证在不需要时系统不会受到影响。
角度微分D:
微分作用反映风力摆角度的变化率,即角速度。
具有预见性,能预见偏差变化的趋势因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。
因此,可以改善系统的动态性能。
在微分时间选择合适情况下,减少调节时间。
2.3运动规律的计算
1、v(线速度)=ΔS/Δt=2πr/T=ωr=2πrn(S代表弧长,t代表时间,r代表半径,n代表转速)
2、ω(角速度)=Δθ/Δt=2π/T=2πn(θ表示角度或者弧度)
3、T(周期)=2πr/v=2π/ω
4、n(转速)=1/T=v/2πr=ω/2π
5、Fn(向心力)=mrω^2=mv^2/r=mr4π^2/T^2=mr4π^2n^2
6、an(向心加速度)=rω^2=v^2/r=r4π^2/T^2=r4π^2n^2
7、vmin=√gr(过最高点时的条件)
8、fmin(过最高点时的对杆的压力)=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个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于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主程序流程图
3.2.1子程序流程图
图4基础要求1子程序流程图
4测试方案与测试结果
4.1测试方案
1、硬件测试
常温下,系统满负荷运行,测试产品各芯片管脚、电源芯片或模块输出的电压值、纹波噪声;满足产品及芯片要求。
系统满负荷持续运行,测试产品所有复位信号质量,满足各芯片要求。
系统满负荷持续运行,测试产品所有晶体/晶振时钟、接口时钟输出特性,满足芯片要求。
2、软件仿真测试
LM7809稳压模块仿真图5为三端稳压集成电路LM7809稳压模块的仿真结果,C3、C4分别为输入端和输出端滤波电容,R4、R5分别为输入输出端保护电阻。
当输出电流较大时,LM7809产热较大,应加散热片。
以LM7809三端稳压电路来实现稳压电源所需的外围元件极少,电路内部设有过流、过热及调整管的保护电路,使用可靠、方便。
由于该三端固定集成稳压电路使用方便,因此,广泛应用在电子电路中经常采用。
当三端稳压集成电路LM7809输入电压略大于9V时,通过LM7809稳压模块可输出稳定的9V电压。
图5LM7809稳压模块仿真图
4.2测试条件与仪器
秒表,自制风力摆,台扇,量角器,长直尺。
4.3测试结果及分析
4.3.1测试结果(数据)
①驱动风力摆工作,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,来回五次,记录其由静止至开始自由摆时间及最大偏差距离。
测试结果如表1所示。
时间(s)
误差1(cm)
误差2(cm)
误差3(cm)
误差4(cm)
误差5(cm)
第一次测试
4.2
2.0
-1.6
1.4
1.6
-1.5
第二次测试
4.0
-1.8
1.5
1.8
-2.0
1.7
第三次测试
4.3
2.0
-2.2
2.1
1.9
-2.2
表1风力摆画长于50cm直线测试
②设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画不同长度直线时的最大偏差距离。
测试结果如表2所示。
时间(s)
误差1(cm)
误差2(cm)
误差3(cm)
误差4(cm)
误差5(cm)
画30cm直线
10
2.2
1.6
1.5
-1.7
1.8
画40cm直线
11
2.3
-2.1
2.0
1.8
1.9
画50cm直线
12
1.4
-1.6
-1.4
1.8
-1.3
画60cm直线
14
-2.3
2.1
-1.9
1.7
1.9
表2风力摆画不同长度直线测试
③设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画不同角度直线时的最大偏差。
测试结果如表3所示。
角度选择
误差类型
时间(s)
误差1
误差2
误差3
误差4
画0º或180º直线
角度(º)
11
5
3
-4
4
画45º或225º直线
角度(º)
13
2
-4
5
3
画90º或270º直线
角度(º)
15
-4
6
-5
3
画135º或315º直线
角度(º)
12
-1
5
-2
4
表3风力摆画不同角度直线测试
④将风力摆拉起一定角度放开,驱动风力摆工作,测试风力摆制动达静止状态所用时间。
测试结果如表4所示,
角度
时间1(s)
时间2(s)
时间3(s)
时间4(s)
时间5(s)
拉起30º
15
17
14
20
19
拉起45º
37
40
47
43
42
表4风力摆恢复静止测试
⑤以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。
改变圆半径再次测试,重复以上操作四次。
测试结果如表5所示。
半径15cm
半径20cm
半径25cm
半径30cm
半径35cm
第一次
时间(s)
48
51
52
54
59
偏差距离(cm)
2.0
2.2
1.6
2.0
1.8
第二次
时间(s)
45
44
49
50
53
偏差距离(cm)
1.5
1.8
2.0
1.7
1.5
第三次
时间(s)
46
50
51
55
56
偏差距离(cm)
1.9
1.4
1.7
1.9
1.8
表5风力摆画圆测试
⑥在⑤的基础上,使用一台60W台扇在距离风力摆1m距离处向其吹5s后静止,记录风力摆恢复画圆状态时间及偏差测试结果如表5所示。
半径15cm
半径20cm
半径25cm
半径30cm
半径35cm
第一次
恢复时间(s)
2
4
5
4
5
偏差距离(cm)
2.0
1.6
1.4
1.4
1.7
第二次
恢复时间(s)
3
4
4
5
6
偏差距离(cm)
2.0
1.6
2.0
1.8
1.8
第三次
恢复时间(s)
3
4
5
5
5
偏差距离(cm)
1.8
1.6
1.4
1.8
2.0
表6风力摆抗干扰测试
4.3.2测试分析与结论
根据上述测试数据,可以得出以下结论:
1、驱动风力摆工作,激光笔稳定地在地面画出一条长度不短于50cm的直线段,来回五次,满足时间要求及最大偏差距离。
实现基本要求第一部分。
2、设置风力摆画线长度,驱动风力摆工作,其由静止至稳定摆动的时间及在画不同长度直线时的最大偏差距离小于2.5cm。
实现基本要求第二部分。
3、设置风力摆画线长度,驱动风力摆工作,其由静止至稳定摆动的时间符合要求,时间和最大偏差角度基本达标。
基本实现第三部分。
4、将风力摆拉起一定角度放开,驱动风力摆工作,系统在规定事件内不能达到完全静止,未能实现基础要求第四部分。
5、以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。
改变圆半径再次测试,重复以上操作四次。
实现发挥部分第一部分。
6、使用一台60W台扇在距离风力摆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]王述彦,师宇,冯忠绪.基于模糊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
#include
#include
typedefunsignedcharuchar;
typedefunsignedshortushort;
typedefunsignedintuint;
#defineDataPortP0//LCD1602数据端口
sbitSCL=P1^0;//IIC时钟引脚定义
sbitSDA=P1^1;//IIC数据引脚定义
sbitLCM_RS=P4^2;//LCD1602命令端口
sbitLCM_RW=P4^1;//LCD1602命令端口
sbitLCM_EN=P3^7;//LCD1602命令端口
sbitSTEP0=P2^0;
sbitSTEP1=P2^1;
sbitSTEP2=P2^2;
sbitSTEP3=P2^3;
sbitSTEP4=P2^4;//学习班自带驱动·
sbitSTEP5=P2^5;
sbitSTEP6=P2^6;
sbitSTEP7=P2^7;
#defineSMPLRT_DIV0x19//陀螺仪采样率,典型值:
0x07(125Hz)
#defineCONFIG0x1A//低通滤波频率,典型值:
0x06(5Hz)
#defineGYRO_CONFIG0x1B//陀螺仪自检及测量范围,典型值:
0x18(不自检,2000deg/s)
#defineACCEL_CONFIG0x1C//加速计自检、测量范围及高通滤波频率,典型值:
0x01(不自检,2G,5Hz)
#defineACCEL_XOUT_H0x3B
#defineACCEL_XOUT_L0x3C
#defineACCEL_YOUT_H0x3D
#defineACCEL_YOUT_L0x3E
#defineACCEL_ZOUT_H0x3F
#defineACCEL_ZOUT_L0x40
#defineTEMP_OUT_H0x41
#defineTEMP_OUT_L0x42
#defineGYRO_XOUT_H0x43
#defineGYRO_XOUT_L0x44
#defineGYRO_YOUT_H0x45
#defineGYRO_YOUT_L0x46
#defineGYRO_ZOUT_H0x47
#defineGYRO_ZOUT_L0x48
#definePWR_MGMT_10x6B//电源管理,典型值:
0x00(正常启用)
#defineWHO_AM_I0x75//IIC地址寄存器(默认数值0x68,只读)
#defineSlaveAddress0xD0//IIC写入时的地址字节数据,+1为读取
uchardis[4];//显示数字(-511至512)的字符数组
intdis_data;//变量
intzs;
intp_wm;
voiddelay(unsignedintk);//延时
voidInitLcd();//初始化lcd1602
voidlcd_printf(uchar*s,inttemp_data);
voidWriteDataLCM(uchardataW);//LCD数据
voidWriteCommandLCM(ucharCMD,ucharAttribc);//LCD指令
voidDisplayOneChar(ucharX,ucharY,ucharDData);//显示一个字符
voidDisplayListChar(ucharX,ucharY,uchar*DData,L);//显示字符串
voidInitMPU6050();//初始化MPU6050
voidDelay5us();
voidI2C_Start();
voidI2C_Stop();
voidI2C_SendACK(bitack);
bitI2C_RecvACK();
voidI2C_SendByte(uchardat);
ucharI2C_RecvByte();
voidI2C_ReadPage();
voidI2C_WritePage();
voiddisplay_ACCEL_x();
voiddisplay_ACCEL_y();
voiddisplay_ACCEL_z();
ucharSingle_ReadI2C(ucharREG_Address);//读取I2C数据
voidSingle_WriteI2C(ucharREG_Address,ucharREG_data);//向I2C写入数据
voidlcd_printf(uchar*s,inttemp_data)
{
if(temp_data<0)
{
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;
}
voiddelay(unsignedintk)
{
unsignedinti,j;
for(i=0;i { for(j=0;j<121;j++); } } voidInitLcd() { WriteCommandLCM(0x38,1); WriteCommandLCM(0x08,1); WriteCommandLCM(0x01,1); WriteCommandLCM(0x06,1); WriteCommandLCM(0x0c,1); DisplayOneChar(0,0,'A'); DisplayOneChar(0,1,'G'); } //LCD1602写允许 voidWaitForEnable(void) { DataPort=0xff; LCM_RS=0;LCM_RW=1;_nop_(); LCM_EN=1;_nop_();_nop_(); while(DataPort&0x80); LCM_EN=0; } //LCD1602写入命令 voidWriteCommandLCM(ucharCMD,ucharAttribc) { if(Attribc)WaitForEnable(); LCM_RS=0;LCM_RW=0;_nop_(); DataPort=CMD;_nop_(); LCM_EN=1;_nop_();_nop_();LCM_E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国大学生电子设计竞赛论文B题风力摆 完整版 全国大学生 电子设计 竞赛 论文 风力