简易风洞及控制系统分解Word下载.docx
《简易风洞及控制系统分解Word下载.docx》由会员分享,可在线阅读,更多相关《简易风洞及控制系统分解Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
1.1.1主要任务
设计制作一简易风洞及其控制系统。
风洞由圆管、连接部与直流风机构成,如图所示。
圆管竖直放置,长度约40cm,内径大于4cm且内壁平滑,小球(直径4cm黄色乒乓球)可在其中上下运动;
管体外壁应有A、B、C、D等长标志线,BC段有1cm间隔的短标志线;
可从圆管外部观察管内小球的位置;
连接部实现风机与圆管的气密性连接,圆管底部应有防止小球落入连接部的格栅。
控制系统通过调节风机的转速,实现小球在风洞中的位置控制。
1.1.2基本要求
(1)小球置于圆管底部,启动后5s内控制小球向上到达BC段,并维持5s以上。
(2)当小球维持在BC段时,用长形纸板(宽度为风机直径的三分之一)遮挡风机的进风口,小球继续维持在BC段。
(3)以C点的坐标为0cm、B点的坐标为10cm;
用键盘设定小球的高度位置(单位:
cm),启动后使小球稳定地处于指定的高度3s以上,上下波动不超过±
1cm。
(4)以适当的方式实时显示小球的高度位置及小球维持状态的计时。
(5)小球置于圆管底部,启动后5s内控制小球向上到达圆管顶部处A端,且不跳离,维持5s以上。
(6)小球置于圆管底部,启动后30s内控制小球完成如下运动:
向上到达AB段并维持3~5s,再向下到达CD段并维持3~5s;
再向上到达AB段并维持3~5s,再向下到达CD段并维持3~5s;
再向上冲出圆管(可以落到管外)。
(7)风机停止时用手将小球从A端放入风洞,小球进入风洞后系统自动启动,控制小球的下落不超过D点,然后维持在BC段5s以上。
(8)其他自主发挥设计。
1.1.3说明
(1)题中“到达XX段”是指,小球的整体全部进入该段内;
(2)题中“维持”是指,在维持过程中小球整体全部不越过该段的端线;
(3)小球的位置以其中心点为准(即小球的上沿切线向下移2cm,或下沿切线向上移2cm);
(4)直流风机的供电电压不得超过24V,注意防止风机叶片旋转可能造成的伤害;
可在圆管及其周围设置传感器检测管内小球的位置;
可将圆管、连接部与直流风机安装在硬质板或支架上,以便于使圆管保持竖直状态,并保持风洞气流通畅。
(5)每一个项目最多进行三次测试;
对于任何测试项目,测试专家可要求进行重复测试。
(6)风洞制作方法参考:
圆管长度约40cm,可以选用透明的有机玻璃(或亚克力材料)圆管,也可以选用不透明的PVC圆管。
圆管的内直径必须大于40mm,保证小球(直径为40mm的乒乓球)在管内能够自由运动。
如果选用不透明的PVC圆管,为了能够方便直观地观察管内小球的位置,可以在管臂上沿轴线方向开凿宽度约5mm的长条形槽孔,再用宽的透明胶带贴在槽孔上,保证圆管的气密性。
开凿长条形槽孔后,应清除管壁内的残屑,以免影响小球的运动。
为了防止小球落入连接部,可将一根细铁丝或导线,用AB胶或透明胶带粘在圆管下端口处。
连接部的材料可以采用冰箱保鲜袋。
剪去袋底封口部分,得到一个两端开口的塑料薄膜“软管”。
将“软管”的一端包住圆管的下端口,并用透明胶带将重叠部分缠紧;
将软管的另一端包住直流风机出风口的外沿,并用透明胶带将重叠部分缠紧。
注意直流风机的风向,应向连接部方向吹风。
可将风洞的圆管、直流风机部分固定在一块硬质板上,再固定硬质板,使圆管保持竖直状态;
也可做一个三脚支架,将风洞的圆管部分固定在支架上并保持竖直状态,直流风机垂挂在圆管下方。
直流风机的进风口处应留有足够的空间,保证气流通畅。
1.2总体设计方案
1.2.1设计思路
题目要求设计一个翻版控制系统,通过对风扇转速的控制,调节风力的大小,改变帆板转角θ。
设计中采用单片机PWM波电机控制方式,使得控制风扇风力的大小,帆板受到风力的大小从而改变帆板偏转的角度θ,角度传感器把检测到帆板的偏转角度传给ATMEGA48单片机进行处理达到设计所需的要求再用键盘进行调整,用液晶显示屏进行显示。
1.电源的设计方案论证与选择
系统需要多个电源,ATMEGA328、L298、MMA7455都使用5V的稳压电源,电
机驱动需要24V电压。
方案一、采用LM2596开关电压调节器,能够输出3A的输出电流,同时具有很好的线性和负载调节特性,固定输出3.3V、5V、12V经过调整可输出小于37V的电压。
方案二、采用升压型稳压电路。
用两片MC34063芯片分别将3V的电池电压进行直流斩波调压,得到5V和12V的稳压输出。
只需使用两节电池,既节省了电池,又减小了系统体积重量,但该电路供电电流小,供电时间短,无法是相对庞大的系统稳定运作。
方案三、采用三端稳压集成7805与7824分别得到5V与24V的稳压电压。
利用该方法方便简单,工作稳定可靠。
综上所述,选择方案三,采用三端稳压电路。
2.角度传感器的设计方案论证与选择
方案一、采用WDS35D4精密导电塑料角位移传感器,利用该传感器的输入端加上一个直流电压,在输出端得到一个直流电压信号,把角度位移的机械位移量转化成电压信号,用输出电压进行角度位移的控制。
用此传感器只要测量导轨电阻两端的直流电压,不同的角度有不同的电阻值,通过电阻来算出角度,计算不方便。
电刷在导轨上移动获得输出,数值越小,精度越高。
该传感器的优点:
对环境条件要求低,线性精度高、分辨率高、动态的噪声小等优点,由于该传感器的各项精度都比较精细使其价格过高。
方案二、采用电位器进行调角:
帆板转动时电位器跟着转动,电压随之发生变化,通过电压的值转换成角度值。
但扭力过大,而且精度也不高。
方案三、采用MMA7455三轴加速度传感器,利用物体运动和方向改变输出信号的电压值,把检测到的信号传送给ATMEGA328的AD转化器进行转化与读取此输出信号。
通过不同的角度,X、Y、Z三个方向的加速度输出不同,将电容值的变化转化为电压值,电容值的计算公式是:
C=Ae/D,其中A是极板的面积,D是极板间的距离,e是电介质常数,再用反正弦函数把角度算出来,计算比较方便。
线性精度高、体积小、工作可靠、标识清晰、扩展性好等优点。
综上所述,选择方案三,用MMA7455三轴加速传感器。
3.显示方式的选择
方案一、采用LED数码管显示。
使用数码管动态显示,由于显示的内容较少,给人的视觉冲击不怎么的舒适,具有亮度高、工作电压低功耗小、易于集成、驱动简单等优点。
但在此次设计中需要设定的参数种类多,使用LED数码管不能完成设计任务,不宜采用。
方案二、采用字符型LCD显示。
可以显示英文及数字,利用程序去驱动液晶
显示模块,设计简单,且界面美观舒适,耗电小。
综上所述,选择方案二,用字符型LCD进行显示。
4.帆板的设计方案论证与选择
方案一、采用电路板作为帆板。
根据设计需要的要求,电路板需做成宽:
10cm,长:
15cm;
在所拥有的风扇下采取电路板作为帆板,很难满足设计所需达到的角度。
考虑风力的大小和自身重力,不宜采用。
方案二、采用泡沫作为帆板。
泡沫的体积太轻,很容易满足设计所需要的角度,缺点:
泡沫的稳定性不高,干扰成分太多。
考虑不稳定性的因素太多此方案不宜采用。
方案三、采用铝板作为帆板。
经过多次实验:
铝板可以作为帆板使用,能过达到设计所需要的要求,而且铝板的稳定性比较好,抗干扰能力强,受干扰的成分比较小。
综上所述,选择方案三,用铝板作为帆板使用。
1.2.3系统的组成
经过方案比较与论证,最终确定的系统组成框图如图1.1.1所示。
其中的集成电路ATMEGA328单片机驱动液晶显示模块、控制电机驱动改变风扇风力的大小从而改变帆板的角度,角度传感器把接收到的输出信号传送给ATMEGA328单片机进行处理再更新显示。
图1.1.1系统组成框图
PID算法:
由于单片机的处理速度和RAM资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。
遇限消弱积分:
一旦控制变量进入饱和区,将只执行削弱积分项的运算而停止进行增大积分项的运算。
具体地说,在计算Ui时,将判断上一个时刻的控制量Ui-1是否已经超出限制范围,如果已经超出,那么将根据偏差的符号,判断系统是否在超调区域,由此决定是否将相应偏差计入积分项
积分分离法:
在基本PID控制中,当有较大幅度的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。
特别是对于温度、成份等变化缓慢的过程,这一现象将更严重。
为此可以采用积分分离措施,即偏差较大的时,取消积分作用;
当偏差较小时才将积分作用投入。
离散化公式:
Δu(t)=q0e(t)+q1e(t-1)+q2e(t-2)
当|e(t)|≤β时
q0=Kp(1+T/Ti+Td/T)
q1=-Kp(1+2Td/T)
q2=KpTd/T
当|e(t)|>β时
q0=Kp(1+Td/T)
q2=KpTd/T
u(t)=u(t-1)+Δu(t)
微分控制对系统性能的影响:
微分作用可以改善动态特性,Td偏大时,超调量较大,调节时间较短。
Td偏小时,超调量也较大,调节时间也较长。
只有Td合适,才能使超调量较小,减短调节时间。
由于快速傅立叶变换FFT算法设计大量的浮点运算,由于一个浮点占用四个字节,所以要占用大量的内存,同时浮点运算时间很慢,所以采用普通的8位MCU一般难以在一定的时间内完成运算,所以综合内存的大小以及运算速度,采用32位的单片机ATMEGA328,它拥有较大的RAM,并且时钟频率高达16M,所以对于浮点运算不论是在速度上还是在内存上都能够很快的处理。
2.1风扇控制电路
风扇控制电路主要是由ATMEGA328、L298电机驱动模块组成。
L298电机驱动模块主要由放大电路、OPAMP运算放大电路、电机驱动组成。
用电阻和电容组成高通滤波电路,用单片机控制达林顿管使之工作在开关状态,通过调整输入脉冲的占空比,调整电机转速。
用L298驱动两台直流减速电机的电路引脚A,B分别用PWM控制。
如果电机运动则可将IN1,IN2和IN3,IN4两对引脚分别接高低电平,仅用单片机的两个端口给出PWM信号控制A,B即可。
特点:
工作电压高,可以达到46V;
输出电流大,瞬间峰值可达3A,持续工作电流2A;
额定功率25W。
当步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转的越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速,从而控制了风扇的风力的大小。
L298电机驱动的特点:
可以实现电机正反转及调速、启动转矩大。
图1.1.2L298电机控制电路
2.2角度测量原理
MMA7455三轴加速传感器是检测物体运动和方向的传感器,它根据帆板运动和方向改变输出信号的电压值。
当帆板受到风扇风力运动时,三轴加速传感器检测到帆板运动的输出信号,把该输出的电压值用三角函数数出来在把结果送往ATMEGA328单片机进行处理,通过按键控制与液晶显示屏进行显示。
MMA7455三轴加速传感器:
如图1.1.3所示
由ATMEGA328单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。
ATMEGA328单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。
从而实现对系统的伺服控制。
图1.1.4位置式PID控制算法的简化示意图A、图B。
图1.1.4(A)
图1.1.4(B)
传递函数为:
时域的传递函数表达式
对上式中的微分和积分进行近似
式中n是离散点的个数。
于是传递函数可以简化为:
其中
3.1风扇控制电路设计计算
由单片机ATMEGA328的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。
图1.1.5PID算法流程图
由PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。
三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。
但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。
现在一般采用的是临界比例法。
利用该方法进行PID控制器参数的整定步骤如下:
(1)首先预选择一个足够短的采样周期让系统工作;
(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;
(3)在一定的控制度下通过公式计算得到PID控制器的参数。
将采样值PID通过算法转化为PWM的占空比输出。
按键模块一共5个按键,其中一个是单片机复位按键(PC6),还有4个功能键,分别为:
1号键(对3个功能进行切换)、2号键(确定功能并且确定微调值)、3号键(减号键)、4号键(加号键)。
0号功能(通过3号键和4号键控制风力,使帆板角度变化);
1号功能(控制帆板角度在45°
);
2号功能(设定帆板角度);
3号功能(长按2号键进行自校准)。
相关程序:
structPID_DATApidData;
volatileunsignedcharFunction_is_done=0;
//系统功能编号
staticvolatileunsignedcharSystem_Function=0;
//5号功能:
校准角度传感器,长按2号按键开始校准
//0号功能:
通过键盘控制操作风力,使帆板转角变化
//1号功能:
控制帆板在45°
//2号功能:
10cm时通过键盘设定帆板角度
//3号功能:
7~15cm时通过键盘任意设定帆板角度
//角度设定功能用PID算法调节,PID达到稳态时,声光提示
//4号功能:
未用
//数码管使用安排
//位0:
功能编号
//位5、6:
实时显示角度
//位2、3:
按键设定角度时显示设置值,调整中闪烁显示,执行后停止闪烁。
3
.3程序流程图
图1.1.6风扇控制系统程序流程图
风扇控制系统程序流程图如图1.1.6所示。
首先系统开始初始化,然后再把
MMA7444所读取风扇的角度值分别送给单片机进行处理,然后通过按键进行控制,然后用LED进行显示,蜂鸣器叫鸣。
4系统测试
4、1调试使用的仪器与方法
序号
名称、型号、规格
数量
备注
1
YB4363双踪示波器
江苏扬中电子仪器厂
2
爱使牌AS1051S函数信号发生器
1
上海爱使电子仪器厂
游标米尺
文雅文化用品厂
4
角度测量计
上海测量仪器厂
用函数信号发生器给电机驱动模块加上12V以上的电压,用双踪示波器查看单片机的PWM波的脉冲信号,查看电机输出的占空比的大小。
用游标米尺去测量风扇与帆板的距离,风扇吹起帆板的角度用角度测量计去测量角度的大小,并记录相关的数据。
4.2测试数据完整性
距离
实际角度
理论角度
误差
稳定时间
7cm
40°
±
1°
10s
10cm
45°
7s
70°
65°
3°
6s
15cm
50°
5s
经过系统的测试发现该设计存在着误差,在帆板受到风扇风力转动时,帆板受力发生转动,帆板的角度表现的很不稳定,实际值与理论值相差1~3°
的误差。
从而得出帆板的偏转角值可能受到外部环境的干扰或者是电路硬件出现的导致的问题。
指针和转轴由于不同心而出现了一些小误差。
还有角度传感器上的一些细软线导致帆板的中心发生改变。
①d=10cm时,帆板转角θ=0~60°
。
②d=10cm时,帆板转角θ=45°
③d=15cm时,帆板转角θ=78°
由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。
5.总结
本系统以单片机ATMEGA328芯片为核心部件,用MMA7455三轴加速度传感器来检测L298电机驱动风扇改变帆板的偏转角度,把这输出的信号传送给单片机进行处理,利用了角度传感技术并配合独特的软件算法实现了用按键控制风力的大小使帆板转角能够在0~60度范围内变化,并在液晶屏上进行了显示。
在系统设计过程中,力求硬件线路简单,充分发挥软件编程的灵活方便的特点,来满足设计的要求。
因为时间有限,该系统还有许多值得改进的地方:
三轴加速度传感
器对帆板偏转角检测不精确,帆板有可能还受外部环境的影响。
在本次设计的过程中,遇到了很多突发事件和各种困难,设计制作中一度中断,但通过仔细分析和自我状态的调整解决了很多问题。
在这个过程中我们深深地体会到共同协作和团队精神的重要性,提高了自己解决问题的能力。
参考文献:
《晶体管电路设计上》,铃木雅臣著,北京:
科学出版社,1997年;
《模拟电子线路基础》,吴运昌著,广州:
华南理工大学出版社,2004年;
《数字电子技术基础》,阎石著,北京:
高等教育出版社,1997年;
《单片机原理及应用》,李晓峰著,北京:
北京理工大学出版社,2010年;
附录:
附1:
元器件明细表:
元器件名称
型号
个数
单片机
ATMEGA328
三轴加速度传感器
MMA7455
1个
电机驱动模块
L298
风扇
24V0.25A
液晶显示
OCMJ4X8C
发光二极管
LED
3个
电阻
10K
4个
47K
电容
贴片104
5个
附2:
电路图图纸
附3:
程序清单
unsignedcharFunction_is_begin=0;
unsignedcharSettingAngle=0;
staticvolatileunsignedcharTempAngle=0;
staticvolatileunsignedintOpenloop_PWM=100;
staticvolatileunsignedcharOpenloop_Step=5;
voidKey1_Press(unsignedcharktype)
{
Function_is_begin=0;
PWM_Off();
if(++System_Function>
5)
System_Function=0;
switch(System_Function){
case0:
Openloop_Step=5;
Openloop_PWM=100;
PWM_OutPut(Openloop_PWM);
//Digit_Set(STEP_POS,2);
LCD12864_SetXY(0,2);
LCD12864_PutNumber
(2);
////Digit_Number(1,Openloop_PWM);
break;
case1:
//Digit_Off(STEP_POS);
TempAngle=45;
SettingAngle=45;
case2:
case3:
LCD12864_SetXY(0,4);
LCD12864_PutNumber(TempAngle/10);
LCD12864_SetXY(0,5);
LCD12864_PutNumber(TempAngle%10);
//Digit_Set(SETTING_POS0,TempAngle/10);
//Digit_Set(SETTING_POS1,TempAngle%10);
//Digit_FlashMode(SETTING_POS0);
//Digit_FlashMode(SETTING_POS1);
case4:
case5:
//Digit_Off(SETTING_POS0);
//Digit_Off(SETTING_POS1);
}
//Digit_Set(0,System_Function);
//显示系统功能编号
LCD12864_SetXY(0,0);
LCD12864_PutNumber(System_Function);
}
voidKey2_Press(unsignedcharktype)
switch(Openloop_Step){
case1:
Openloop_Step=5;
//Digit_Set(STE.
//P_POS,2);
break;
case5:
Openloop_Step=