摘 要
本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统STC89C52单片机作为控制平台对风扇转速进行控制。可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。所设高低温值保存在温度传感器DS18B20内部E2ROM中,掉电后仍然能保存上次设定值,性能稳定,控制准确。
关键词:单片机;温度传感器;智能控制
目录
一、系统概述
1.1 本设计任务和主要内容
本设计以STC89C51单片机为核心,通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。
主要设计内容如下:
(1)风速设为从低到高共2个档位,可由用户通过键盘设定。
(2)每当温度低于下限值时,则电风扇风速关闭。
(3)每当温度在下限和上限之间时,则电风扇转速缓慢。
(4)每当温度高于上限值时,则电风扇风速全速运转。
1.2 系统硬件设计
基于单片机的风扇温控仪采用DS18B20传感器,将检测到的温度转化为数字信号,单片机对输入的数字信号进行分析处理,当温度高于上限值时,风扇全速旋转;当温度低于下限时,风扇停转;当温度处于上限值与下限之间时,风扇转速越慢。下图所示为系统设计结构框图。
图1-1 系统设计结构框图
1.3 系统软件设计
基于51单片机的风扇温控仪软件主要包括温度信息采集、硬件驱动,数码显示等部分。程序中将采取分块编程的思想,先将各个模块编写调试,最后进行整机连调。系统的整体流程如图2所示:
图1-2 软件系统流程图
二、系统原理
2.1 控制装置原理
传统电风扇供电采用的是220V交流电,电机转速分为几个档位,通过人工手动调整电机转速达到改变风速的目的,亦即,每改变一次风力,必然有人参与操作,这样就会带来诸多不便。
本文介绍了一种基于STC89C51单片机的智能电风扇调速器的设计,该设计巧妙利用红外线遥控技术、单片机控制技术、无级调速技术和温度传感技术,把智能控制技术应用于家用电器的控制中,将电风扇的电机转速作为被控制量,由单片机分析采集到的数字温度信号,再通过三极管对风扇电机进行调速。从而达到无须人为控制便可自动调整风速的效果。
2.2 温度检测和显示电路
可以选用LM324A运算放大器作为温度传感器,将其设计成比例控制调节器,输出电压与热敏电阻的阻值成正比,但这种方案需要多次检测后方可使采样精确,过于烦琐。所以我采用更为优秀的DS18B20数字温度传感器,它可以直接将模拟温度信号转化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。
2.2.1 DS18B20的温度处理方法
DS18B20是一种改进型智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因而使用DS18B20可使系统结构更趋简单可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
DS18B20简介:
(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:+3.0~ +5.5 V。
(4)测温范围:-55 ~+125 ℃。固有测温分辨率为0.5 ℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
单线(1—wire)技术:
该技术采用单根信号线,既可传输时钟,也能传输数据,而且是双向传输。适用于单主机系统,主机能够控制一个或多个从机设备,通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能释放该线,而让其他设备使用。单线通常要求外接一个5K的上拉电阻,这样当该线空闲时,其状态为高电平。
主机和从机之间的通讯分成三个步骤:初始化单线器件、识别单线器件和单线数据传输。
单线1—wire协议由复位脉冲、应答脉冲、写0、写1、读0、读1,这几种信号类型实现,这些信号中除了应答脉冲其他都由主机发起,并且所有指令和数据字节都是低位在前。
DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器件的工作时序。
表1 部分温度值与DS18B20输出的数字量对照表
2.2.2 温度传感器和显示电路组成
本模块用更为优秀的DS18B20作为温度传感器,STC89C52单片机作为处理器,配以温度显示作为温度控制输出单元。系统工作原理为:DS18B20数字温度传感器采集现场温度,将测量到的数据送入STC89C51单片机的P3.6口,经过单片机处理后显示当前温度值,并与设定温度值的上下限值作比较,若高于设定上限值或低于设定下限值则控制电机转速进行自动调整。
整个系统力求结构简单,功能完善。电路图如下图所示。
图2-1 DS18B20温度计原理图
2.3 电机调速电路
本模块电路中充分利用了三极管的开关特性, 简化了驱动电路的结构。所设计的三极管触发电路原理图见图3。其中RL即为电机负载,其工作原理是:单片机响应用户的参数设置, 在I/ O 口输出一个高电平, 经反向器反向后, 送出一个低电平,使三极管导通, 使工作电路导通工作。给定时间内,负载得到的功率为:
(1)
式(1)中: P 为负载得到的功率( kW); n 为给定时间内可控硅导通的正弦波个数; N 为给定时间内交流正弦波的总个数; U为三极管在一个电源周期全导通时所对应的电压有效值(V); I 为三极管在一个电源周期全导通时所对应的电流有效值(A)。由式(1) 可知,当U , I , N 为定值时, 只要改变n 值的大小即可控制功率的输出,从而达到调节电机转速的目的。
图2-2 电机控制原理图
三、控制器软件设计
本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和显示、键盘扫描、红外线接收以及电机控制等子程序模块组成。
3.1 主程序
在主程序进行初始化后,开始反复检测各模块相关部分的缓冲区的标志,如果缓冲区置位,说明相应的数据需要处理,然后主程序调用相应的处理子模块,如下图所示。
图3-1 主程序模块流程图
3.2 数字温度传感器模块和显示子模块
主机控制DS18B20数字温度传感器完成温度转换工作必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。单片机所用的系统频率为12MHz。
根据DS18B20数字温度传感器进行初始化时序、读时序和写时序分别可编写3个子程序:初始化子程序、写子程序、读子程序。程序流程图如下图所示:
图3-2 数字温度传感器模块程序流程图
DS18B20芯片功能命令表如下:
表2 DS18B20功能命令表
3.3 电机调速与控制子模块
本模块采用三极管过零触发方式,由单片机控制三极管的通断,通过改变每个控制周期内三极管导通和关断交流完整全波信号的个数来调节负载功率,进而达到调速的目的。因为INT0信号反映工频电压过零时刻,所以只要在外中断0的中断服务程序中完成控制门的开启与关闭,并利用中断服务次数对控制量n进行计数和判断,即每中断一次,对n进行减1计数,如果n不等于0,保持控制电平为“1”,继续打开控制门;如n=0,则使控制电平复位为“0”,关闭控制门,使三极管过零触发脉冲不再通过。这样就可以按照控制处理得到的控制量的要求,实现三极管的过零控制,从而达到按控制量控制的效果,实现速度可调。
(1)中断服务程序:执行中断服务程序时,首先保护现场,INT0中断标志置位,禁止主程序修改工作参数,然后开始减1计数,判断是否关断三极管,最后INT0中断标志位清零,还原初始化数据,恢复现场,中断返回。(设1秒钟通过波形数N=100)
(2)回路控制执行程序:主回路控制执行程序的任务是初始化数据存储单元,确定电机工作参数nmin/nmax,并将其换算成“有效过零脉冲”的个数;确定中断优先级、开中断,为了保证正弦波的完整,工频过零同步中断INT0确定为高一级的中断源。
图7 电机控制模块中断响应流程图
附录
附录1 原件清单
Comment | Description | Designator | Quantity |
10uF | 电容 | C1 | 1 |
30pf | 电容 | C2, C3 | 2 |
SMG04_1 | 数码管 | DS1 | 1 |
9012 | 三极管 | Q1, Q2, Q3 | 5 |
2.2K | 电阻 | R2, R3, R4, R5, | 4 |
10K | 电阻 | R1 | 2 |
SW-PB | 按键 | S1, S2, S3, | 3 |
sw-灰色 | 电源开关 | SW1 | 1 |
STC89C51 | 单片机 | U1 | 1 |
DS18B20 | 温度传感器 | U2 | 1 |
11.0592M | 晶振 | Y1 | 1 |