您的当前位置:首页关于温控风扇的设计报告_

关于温控风扇的设计报告_

2021-03-13 来源:爱问旅游网
关于温控风扇的设计

摘要:

现代社会都讲究绿色,节能环保。在满足人们的基本要求上,能够尽可能的节约、环保。而电扇在某些场合是必不可少的。那么我们就可以设计一种可以保持环境温度一定的情况下,尽可能减少能量的消耗,降低风扇的转速。实现实时的随温度的变化来调节风扇的的转速。我们可以根据温度传感器采集环境温度,通过单片机显示出来。并且调用函数,调节占空比控制风扇的转速。这样的话,既满足了人们的需求,也大量节约了能源。

关键词:节能 智能 控制 风扇 1 设计要求

1.根据温度传感器检测外部环境温度来控制风扇的转速。 2.利用light点亮的数目来显示当前转速的等级(高、中、低)。 3.显示当前检测的环境温度。 4.显示当前转速级数(0-99)。

2 总体设计

2.1 系统组成及工作原理 整体思路是:

利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机mc9s08aw60进行处理,在LED数码管上显示当前环境温度值。并且用小灯点亮的数量来显示当前转速的等级。其中预设温度值只能为整数形式,检测到的当前环境温度可精确到小数点后一位。主要功能是采用PWM脉宽调制方式来改变直流风扇电机的转速。 原理框图如图所示

DS18B20显示温度Pwm直流电机MC9S08AW60Light小灯复位晶振 2.2 温度传感器的测量原理

DS18B20测温原理如图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

主要特点

(1)适应电压范围宽,电压范围:3.0~5.5V。

(2)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

(3)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

(4)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

(5)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。

斜率累加器预置比较低温度系数晶振计数器1预置置位/清零加1为零温度寄存器高温度系数晶振计数器2停止为零

3 硬件设计

3.1 硬件组成

本设计要用到感测外部环境温度的数字型温度传感器、显示用的数码管、电风扇、小灯,当然了还有主要的大脑单片机aw60。他们之间的关系如图所示。

温度传感器数码管电风扇(直流电机)单片机AW60驱动电路小灯(3个)

3.2 单片机核心模块

1、MC9S08系列MCU的特点 1)8-bit HCS08内核CPU; 2)CPU频率可达40MHz; 3)内部总线频率可达20MHz; 4)支持多达32种中断/复位源;

5)片内多达60KB的在电路可编程Flash存储器,支持块保护,还具有安全加密特性;

6)ADC:16通道10位ADC,自动比较功能; 7)SCI:2个串行通信接口模块;

8)Timers: 1个6通道和1个2通道的16位定时器/脉冲宽度调制器模块(TPM)。具有输入捕捉、输出比较、脉宽调制功能。 2、单片机的最小系统

图:最小系统 3.3 温度传感器电路

数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强。因此,不但能够大大简化我们的工作量,同时使系统更加稳定、精确。

3.6 小灯电路

3.4 lED驱动、显示电路

3.7 驱动电路

单片机输出的电流太小不足以支持电机的正常工作。所以我们要在电机的前面加一个驱动电路。电机的驱动电路我用的是H桥。

图:H桥示意图

要使电机运转,必须使对角线上的一对三极管导通。例如,如图所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动。

图:软件连接的H桥

4 程序设计

1.1 主程序设计

程序设计部分主要用到了我们学过的pwm构件、light构件、LED构件和

TPM构件。

首先对温度传感器初始化;通过DS18B20温度转换的函数实现对环境温度的实时采集;温度读取完成之后,单片机温度传感器的数据进行换算,然后进行显示输出。与此同时,温度处理函数对采集到的温度进行分析处理,是否开启电机如果达到预置值要求的话,控制PWM的占空比从而控制电机的转速。同时控制小灯点亮的数目;

开始程序初始化温度传感器初始化温度转换函数显示温度PWM控制风扇结束4.2 子程序设计 1)温度显示

如果当前环境温度为C摄氏度,拆分为个位和十位。然后显示在数码管上。 十位=C/10; 各位=C-十位*10;

2)利用温度数据调节当前PWM的占空比

各参数之间的对应关系

温度(摄氏度) <=27 28 29 30 31 32 33 34 占空比(%) 40 50 60 70 75 80 85 90 100 100 转速等级(0-99) 档位(高中低) 40 50 60 70 75 80 85 90 100 100 低 低 低 中 中 高 高 高 高 高 35 >35 程序界面

主要程序代码

interrupt void isrT1Ch0In(void) {

unit8 temp ,sw,gw,level;

DisableInterrupts(); DisableTPM1ChInInt(0); Delay(1);

temp=AW60_TPM1_CHSCSTR(0) &=~AW60_TPM_CHSCSTR_CHF; //输入捕捉功能接收温度信号

EnableInterrupts(); }

sw=temp/10; //获取温度参数的个位和十位,然后显示在数码上 gw=temp-sw*10; ledbuf[1]=gw; ledbuf[0]=sw;

if (temp>35) //如果温度参数大于 35度,按35度处理; {

temp=35; }

if(temp>=27&&temp<36) //小于27度 不做处理 也就是说处理范围是大于27度 {

switch(temp) //分为各种温度参数下的九种情况来做不同的操作 {

case 27: ledbuf[1]='4';ledbuf[2]='0'; //例如第一种情况 27度。 显示当前的转速40 将温度转换为占空比参数 level= 40;

Light_Control(Light_Run_PORT,Light_Run,Light_OFF); //并且控制一个小灯亮,表示当前档位为低档。

break;

case 28: ledbuf[1]='5';ledbuf[2]='0'; level= 50;

Light_Control(Light_Run_PORT,Light_Run,Light_ON); break;

case 29: ledbuf[1]='6';ledbuf[2]='0';

level= 60;

Light_Control(Light_Run_PORT,Light_Run,Light_ON); break; case 30: ledbuf[1]='7';ledbuf[2]='0'; level= 70;

Light_Control(Light_Run_PORT,Light_Run,Light_ON); Light_Control(Light_Run_PORT,Light_Run1,Light_ON); break;

case 31: ledbuf[1]='7';ledbuf[2]='5'; level=75;

Light_Control(Light_Run_PORT,Light_Run,Light_ON); Light_Control(Light_Run_PORT,Light_Run1,Light_ON); break; case 32: ledbuf[1]='8';ledbuf[2]='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: ledbuf[1]='8';ledbuf[2]='5'; level= 85;

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 34: ledbuf[1]='9';ledbuf[2]='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_Run2,Light_ON); break;

case 35: ledbuf[1]='9';ledbuf[2]='9' ; level=100

Light_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(); EnableInterrupt() ;

4 调试及结果

电路仿真能够实现部分功能。

本系统能够实现单片机系统检测环境温度的变化,然后根据环境温度变化来控制风扇直流电机输入占空比的变化,从而产生不同的转动速度。当环境温度低于设置温度27摄氏度时,电机停止转动;当环境温度高于设置温度时,单片机对应输出口输出不同占空比的PWM信号,控制电机开始转动,并随着环境温度增加电机的转速逐渐升高。 系统还能动态的显示当前温度和设置温度。 。

第三行 第二行 第一行 驱动电路 执行单元 单片机系统 下面的电路图的具体功能分别是

74ls138 温度传感器 附录

单片机最小系统 (电路原理图

H桥 数码管 小灯 锁存器 电源

因篇幅问题不能全部显示,请点此查看更多更全内容