参考文献/References:
参考文献[1]中,选用单片机STC89C52作为智能电风扇的主控制器,该智能风扇可以模拟3种不同的风速,且利用红外感应模块自动开启或关闭风扇等功能,对电风扇的原有功能有很大改进。
参考文献[2]中,同样选用单片机STC89C52作为风扇的控制核心,采用温度传感器检测环境温度,可根据环境温度调节风扇的转动速度,LED灯显示风扇的挡位,另外,风扇可以设置定时功能。
参考文献[3]中,设计了一种轻量级的自动识别温控调速风扇控制器,主要设计模块有人体红外检测模块、温度检测模块及风扇调速模块,该设计解决了风扇随昼夜不同、温度不同的自动控制问题。在此,采用89C52单片机和温度传感器DS18B20,结合增量式PID算法,实现电风扇根据温度变化调节转速的功能,除此之外,设置了显示模块和按键模块。
1 硬件设计
1.1 系统的组成
系统硬件主要包括电源模块、单片机89C52、温度传感器DS18B20、按键模块和数码管显示模块等。89C52单片机作为系统核心,处理系统所需信息并传送给其他模块。系统结构如图1所示。
图1 系统结构
1.2 电源模块
系统采用风扇电压为12 V,通过适配器将220 V的家用交流电转换为所需电压。但是单片机模块、传感器模块以及控制模块采用的电源都为5 V。因此,需要采用降压模块将12 V将为5 V。由于12 V电源适配器一般为开关适配器,12 V电压纹波较多,所以5 V电源降压模块可采用线性稳压器件LM7805芯片,同时在LM7805的输入端增加了10 μF的极性电容,可以达到很好的滤波目的,输出端增加了10 μF的电容,保证了输出电压的稳定性[4-5]。另外,系统模块之间信息传递时引起电源电压微小变化,可以在添加的2个电容两端并联100 μF的去耦电容[6],从而保证了电源电压的稳定性。
1.3 单片机89C52
系统中,单片机作为主控制器主要完成以下功能:
a.接收温度传感器采集的环境温度,并通过数码管显示温度。
b.结合PID算法,控制风扇电机转速。
c.接收键盘的数据。
d.控制时钟模块采集时间。
单片机89C52采用DIP-40封装,共有40个引脚。本设计中采用89C52单片机的最小系统电路,其中P1口采用了8个1 kΩ的上拉电阻,P3.0和P3.1实现单片机与外围器件的串口通信。P3.2和P3.3为外部中断引脚,可以迅速处理突发事故,提高程序执行率。P3.4和P3.5为定时器/计数器引脚,本设计主要用计数器实现对电机转速的测量。
单片机89C52需要通过XTAL1和XTAL2提供外部时钟,其中采用了12 MHz的晶振以及相应的电容构成外部振荡电路。为了保证电源供电稳定,在单片机的VCC和GND之间添加了100 μF无极性去耦电容,且在PCB布线时以最短距离布线为佳,这样可以减少电压产生的纹波,避免单片机出现程序“跑飞”等故障[7]。当系统出现故障时可以按复位按钮RESET重新运行。
1.4 DS18B20传感器
温度采集模块的采集精度和速度直接影响整个系统的运行速度和精度,本设计采用了DS18B20数字温度传感器[8],采集范围为-55~125 ℃,分辨率为9~12位。单片机按照相应通信协议,可以直接通过DS18B20的数据引脚DQ读取环境温度, DS18B20采用5 V电源供电,DQ端与单片机的P2.4引脚连接。
采集的温度信息经单片机处理通过数码管显示[2]。数码管采用动态显示的连接方式,即单片机的P1口分别连接了8个1 kΩ的限流电阻,然后与4位的数码管相连接,采用片选信号选择所需要显示的位,利用扫描的方式来依次点亮的每一位,从而实现了数码管的分时选通。
1.5 风扇运行模式
系统中共设置了4个按键,1个用于系统复位,其他3个按键主要用于选择风扇模式。风扇运行模式主要包括2种,一种是在设定挡位模式下运行,用户通过按键1选择3种不同的挡位,按键1连接单片机P2.0,根据按键次数决定选择的是一挡、二挡或者三挡。按键2连接单片机P2.1,选择另一种风扇模式,即自动模式。当温度传感器检测的环境温度(设为Tt)大于25 ℃时,按照(Tt-25)×200所得到的转速运行(最高额度为2 000 r/min)。例如,如果检测环境温度为30 ℃,那么电机目标转速为1 000 r/min,即根据所得转速设定PID控制中的参考转速,再根据单片机计算出电机的当前转速可以自动调节风扇。按键3则为确认按键。
2 PID控制器
为了能够对电风扇的转速实现更加精确地控制,使其在电源电压波动或者有负载变化时转速保持不变,从而引入了PID控制算法。通过设定的调节温度计算出风扇电机转速,送入PID控制器进行运算,得到使误差最快减为零的PWM占空比,单片机采用定时器中断产生相应的PWM脉冲实现对电机转速的控制,达到电机转速与给定转速误差为零的目的。
在控制过程中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器,是应用最为广泛的一种自动控制器[9]。目前,主要包括3种比较简单的PID控制算法,分别是增量式算法、位置式算法及微分先行算法[10],结合本设计特点采用增量式PID算法。数字增量式PID控制器的公式为:Δu=KP[e(k)-e(k-1)]+KIe(k)+
KD[e(k)-2e(k-1)+e(k-2)]KP、KI、KD分别为PID控制器的比例项、积分项、微分项; e为转速误差[11]。其中,比例项可以使转速误差迅速做出反应,积分项可以使风扇电机转速达到设定转速,消除风扇转速的静差,微分项根据误差率预测下个周期的输出情况,从而可以提高系统动态响应的速度[12]。PID控制的MATLAB仿真图如图2所示。
图2 PID控制仿真
在图2中,主要包括直流电机、可控电源、PID控制器以及示波器等。其中,根据PWM大小自动调整可控电压源输出电压大小,从而模拟PWM调节电机两端平均电压; 电机的4个引脚中,A+、A-分别为电枢绕组的正负极,F+、F-分别为磁力绕组的正负极; 电机TL端加入了一阶跃模块(Step),用于模拟负载转矩的大小以及加载时间; m为电机总线输出端,可以输出电机的角速度、输出转矩、电枢电流及励磁电流等状态量。仿真中示波器2观察的是电机转速,是通过m端输出的角速度除以30/π(π为圆周率)得到的[13]。可控电压源采用的是直流电压12 V。负载转矩仿真如图3所示。
PID控制器参数选择的方法有试凑法、临界比例度法和扩充临界比例度法等[14]。但是,在PID控制参数的选择是非常烦琐和复杂的任务,需要经过不断的调整才能得到较为满意的控制效果,本设计中,KP=0.15、KI=1.4、KD=0.15。为观察示波器step的阶跃信号,在2 s处加入负载,如果设定转速为500 r/min,通过PID控制可以得到电机转速的变化曲线如图4所示。
图3 负载转矩仿真从图4可以看到10 s内电机转速的变化曲线,电机转速在0.5 s左右基本趋于稳定,当在2 s处加入负载,转速出现了微小波动,从而可以说明整个系统添加负载时,电机较为稳定,抗干扰能力强,利用PID控制效果较好。
图4 电机转速的变化曲线
3 电机转速的确定
在系统中,风扇选用的是额定转速为2 000 r/min,电压为12 V。系统使用自带测速码盘ASLONG RF371,电机每转1周可以产生334个脉冲[8],那么在额定转速下,电机可以产生2 000×334=6.68×105 个脉冲。
因此,可以采用89C52单片机中定时器T0(16为计数器)作为脉冲计数,T1用来产生PWM脉冲,T2用来计时,工作在16位自动重载定时器状态下。设定T2每隔50 ms产生1次定时器中断,其目的是为了读取此刻T0的计数值,就得到风扇电机在50 ms内产生的脉冲个数并保持在rot_sp中,从而计算出电机的当前转速为:rot_sp×20×334rot_sp×20为1 s内电机的脉冲数,可以达到对风扇的电机转速实时检测的目的。
4 软件整体设计
根据流程图编写程序框图如图5所示,当检测按键1按下后,代表选择方式1挡位方式下启动风扇,电机只需要接收单片机发送的信号就可以进行不同的控制,即第1次按下按键1默认选择1挡,电机转速设定为800 r/min,当连续2次按下按键1时选择2挡,电机转速设定为1 200 r/min,当连续3次按下按键1时选择3挡,电机转速设定为2 000 r/min。当检测到按键2按下,代表选择方式二自动模式,利用单片机的定时器/计数器对电机转速进行实时监测,将检测的电机速度与设定转速送入PID控制器中,电机可以快速达到预定转速。每种模式的选择需要按键3来确认。
图5 系统流程
利用Proteus软件画电路图,并结合Keil软件将编写的C程序生成.hex文件下载到单片机中,仿真结果基本达到预计目标,即可以完成挡位的选择,又可以根据环境温度自动调速。之后,加工制作电路板,购置一块电压12 V,额定转速为2 000 r/min的小风扇,经调试与测试后,结果如图6所示。数码管、按键、温度传感器等器件工作正常,风扇可以正常工作。当采集温度为27.4 ℃时,风扇转速较慢,另外,测试温度37.2 ℃时,风扇转速明显增大。
图6 仿真与实物对比
5 结束语
设计了一款自动调温风扇系统,该系统可以在2种方式下工作,即设定挡位模式和自动调速模式。采用单片机89C52作为主控制器件,使得电风扇具有体积小、重量轻、成本低廉、节约电能和稳定工作等优点。在自动调速时,加入增量PID控制,利用单片机中断控制电机,达到电机转速与给定转速误差为零的目的。
[1] 熊娇娇,赵方伟,李小龙.基于STC89C52单片机的智能电风扇设计[J].机电产品开发与创新,2011,24(1):53-55.
[2] 宰文姣,汪华章.基于步进电动机的智能电风扇设计与实现[J].微特电机,2014,42(11):88-92.
[3] 王小辉,李玮瑶,李阳,等.一种轻量级智能温控风扇调速控制器的设计[J].信息技术,2015(8):44-46.
[4] 吴健,侯文,郑宾.基于STC89C52单片机的温度控制系统[J].电脑知识与技术,2011,7(4):902-903.
[5] 戴伏生.基础电子电路设计与实践[M].北京:国防工业出版社,2002.
[6] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2002.
[7] 林俊亭,张玉峰.单片机电机转速控制器设计[J].现代电子技术,1994(2):34-38.
[8] 王蕊.基于单片机的多功能自动调温风扇系统设计[D].郑州:郑州大学,2014.
[9] 罗光明,黄晓宇,周建林.基于MATLAB的模糊自整定PID参数控制器计算机仿真[J].机械与电子,2001(2):23-26.
[10] 刘金琨.先进PID控制及其MATLAB仿真[M].北京:电子工业出版社,2003.
[11] 陶永华.新型PID控制及其应用[M].北京:机械工业出版社,2002.
[12] 邵桂荣.基于MATLAB的模糊控制系统的设计与仿真[J].重庆工学院学报(自然科学版),2007,21(5):51-54.
[13] 张敏,余纯.基于MATLAB的PID参数模糊控制自整定控制器设计及仿真[J].自动化技术与应用,2005,24(7):22-25.
[14] 李娣娜,王洋.一种简易温控智能风扇控制系统的设计[J].现代电子技术,2012,35(21):119-120.