1、关于温控风扇的设计摘要:现代社会都讲究绿色,节能环保。在满足人们的基本要求上,能够尽可能的节约、环保。而电扇在某些场合是必不可少的。那么我们就可以设计一种可以保持环境温度一定的情况下,尽可能减少能量的消耗,降低风扇的转速。实现实时的随温度的变化来调节风扇的的转速。我们可以根据温度传感器采集环境温度,通过单片机显示出来。并且调用函数,调节占空比控制风扇的转速。这样的话,既满足了人们的需求,也大量节约了能源。关键词:节能 智能 控制 风扇1 设计要求1.根据温度传感器检测外部环境温度来控制风扇的转速。2.利用 light 点亮的数目来显示当前转速的等级(高、中、低)。3.显示当前检测的环境温度。4
2、.显示当前转速级数(0-99) 。2 总体设计2.1 系统组成及工作原理整体思路是:利用温度传感器 DS18B20 检测环境温度并直接输出数字温度信号给单片机mc9s08aw60 进行处理,在 LED 数码管上显示当前环境温度值。并且用小灯点亮的数量来显示当前转速的等级。其中预设温度值只能为整数形式,检测到的当前环境温度可精确到小数点后一位。主要功能是采用 PWM 脉宽调制方式来改变直流风扇电机的转速。原理框图如图所示M C 9 S 0 8 A W 6 0D S 1 8 B 2 0直流电机P w m显示温度L i g h t小灯晶振复位2.2 温度传感器的测量原理DS18B20 测温原理如图所
3、示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器 1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存器被预置在55所对应的一个基数值。计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 的预置值减到 0 时,温度寄存器的值将加 1,计数器 1 的预置将重新被装入,计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正
4、计数器 1 的预置值。主要特点(1)适应电压范围宽,电压范围:3.05.5V。(2)DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(3)温范围55125,在-10+85时精度为0.5。(4)可编程的分辨率为 912 位,对应的可分辨温度分别为 0.5、0.25、0.125和 0.0625,可实现高精度测温。(5)在 9 位分辨率时最多在 93.75ms 内把温度转换为数字,12 位分辨率时最多在 750ms 内把温度值转换为数字,速度更快。斜率累加器预置 比较低温度系数晶振 计数器 1 预置为零 温度寄存器高温度系数晶振 计数器 2为零停止
5、加 1置位 / 清零3 硬件设计3.1 硬件组成本设计要用到感测外部环境温度的数字型温度传感器、显示用的数码管、电风扇、小灯,当然了还有主要的大脑单片机 aw60。他们之间的关系如图所示。温度传感器数码管单片机 A W 6 0小灯 ( 3 个 )电风扇 ( 直流电机 )驱动电路3.2 单片机核心模块1、MC9S08 系列 MCU 的特点1)8-bit HCS08 内核 CPU;2)CPU 频率可达 40MHz;3)内部总线频率可达 20MHz; 4)支持多达 32 种中断/复位源;5)片内多达 60KB 的在电路可编程 Flash 存储器,支持块保护,还具有安全加密特性;6)ADC:16 通道
6、 10 位 ADC,自动比较功能;7)SCI:2 个串行通信接口模块;8)Timers: 1 个 6 通道和 1 个 2 通道的 16 位定时器/脉冲宽度调制器模块(TPM)。具有输入捕捉、输出比较、脉宽调制功能。2、单片机的最小系统图:最小系统3.3 温度传感器电路数字式集成温度传感器 DS18B20 的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强。
7、因此,不但能够大大简化我们的工作量,同时使系统更加稳定、精确。3.4 lED 驱动、显示电路 J7LED4PTB012356abcdefghCSKR983.6 小灯电路 LS1amp23GNDQ904KR6es857+VPTF3.7 驱动电路单片机输出的电流太小不足以支持电机的正常工作。所以我们要在电机的前面加一个驱动电路。电机的驱动电路我用的是 H 桥。图:H 桥示意图要使电机运转,必须使对角线上的一对三极管导通。例如,如图所示,当Q1 管和 Q4 管导通时,电流就从电源正极经 Q1 从左至右穿过电机,然后再经 Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管
8、 Q1 和 Q4 导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动。Q?2N39046Diode1KRsGVCM图:软件连接的 H 桥4 程序设计1.1 主程序设计程序设计部分主要用到了我们学过的 pwm 构件、light 构件、LED 构件和 TPM 构件。 首先对温度传感器初始化;通过 DS18B20 温度转换的函数实现对环境温度的实时采集;温度读取完成之后,单片机温度传感器的数据进行换算,然后进行显示输出。与此同时,温度处理函数对采集到的温度进行分析处理,是否开启电机如果达到预置值要求的话,控制 PWM 的占空比从而控制电机的转速。同时控制小灯点亮的数目;4.2 子程序设计开始
9、程序初始化温度传感器初始化温度转换函数显示温度控制风扇P W M结束1)温度显示如果当前环境温度为 C 摄氏度,拆分为个位和十位。然后显示在数码管上。十位=C/10;各位=C- 十位 *10; 2)利用温度数据调节当前 PWM 的占空比各参数之间的对应关系温度(摄氏度) 占空比(%) 转速等级(0-99) 档位(高中低)35 100 100 高收温度信号EnableInterrupts();sw=temp/10; /获取温度参数的个位和十位,然后显示在数码上gw=temp-sw*10;ledbuf1=gw;ledbuf0=sw; if (temp35) /如果温度参数大于 35 度,按35 度
10、处理;temp=35;if(temp=27ledbuf2=0; /例如第一种情况 27 度。 显示当前的转速 40 将温度转换为占空比参数level= 40;Light_Control(Light_Run_PORT,Light_Run,Light_OFF); /并且控制一个小灯亮,表示当前档位为低档。break;case 28: ledbuf1=5;ledbuf2=0; level= 50;Light_Control(Light_Run_PORT,Light_Run,Light_ON);break;case 29: ledbuf1=6;ledbuf2=0; level= 60;Light_Co
11、ntrol(Light_Run_PORT,Light_Run,Light_ON);break;case 30: ledbuf1=7;ledbuf2=0; level= 70;Light_Control(Light_Run_PORT,Light_Run,Light_ON);Light_Control(Light_Run_PORT,Light_Run1,Light_ON); break;case 31: ledbuf1=7;ledbuf2=5; level=75;Light_Control(Light_Run_PORT,Light_Run,Light_ON);Light_Control(Light
12、_Run_PORT,Light_Run1,Light_ON); break; case 32: ledbuf1=8;ledbuf2=0; level= 80;Light_Control(Light_Run_PORT,Light_Run,Light_ON);Light_Control(Light_Run_PORT,Light_Run1,Light_ON); Light_Control(Light_Run_PORT,Light_Run2,Light_ON); break;case 33: ledbuf1=8;ledbuf2=5; level= 85;Light_Control(Light_Run_
13、PORT,Light_Run,Light_ON);Light_Control(Light_Run_PORT,Light_Run1,Light_ON); Light_Control(Light_Run_PORT,Light_Run2,Light_ON); break; case 34: ledbuf1=9;ledbuf2=0; level=90;Light_Init(Light_Run_PORT,Light_Run,Light_ON);Light_Init(Light_Run_PORT,Light_Run1,Light_ON); Light_Init(Light_Run_PORT,Light_R
14、un2,Light_ON); break;case 35: ledbuf1=9;ledbuf2=9 ; level=100Light_Init(Light_Run_PORT,Light_Run,Light_ON);Light_Init(Light_Run_PORT,Light_Run1,Light_ON); Light_Init(Light_Run_PORT,Light_Run2,Light_ON); break;PWM(TPM_NUM_1,TPM1_CH_3,0x0138, level); /输出占空比来控制直流电机的转速LEDshow(ledbuf);EnableTPM1ChInInt()
15、; EnableInterrupt() ; 4 调试及结果电路仿真能够实现部分功能。本系统能够实现单片机系统检测环境温度的变化,然后根据环境温度变化来控制风扇直流电机输入占空比的变化,从而产生不同的转动速度。当环境温度低于设置温度 27 摄氏度时,电机停止转动;当环境温度高于设置温度时,单片机对应输出口输出不同占空比的 PWM 信号,控制电机开始转动,并随着环境温度增加电机的转速逐渐升高。 系统还能动态的显示当前温度和设置温度。附录(电路原理图下面的电路图的具体功能分别是第一行 单片机系统 单片机最小系统 电源第二行 执行单元 温度传感器 数码管 小灯第三行 驱动电路 74ls138 H 桥 锁存器PTD0/A184293KBI567GMCLSxRQE OVFXW+.uNpY-最 小 系 统 UinJv*小 灯 模 块fecbagd?显 示 模 块 os电 机 驱 动 模 块 m温 度 传 感 器 模 块小 灯 驱 动 模 块 数 码 管 驱 动 模 块