找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1774|回复: 5
收起左侧

单片机温控风扇设计制作 程序edraw流程图 Proteus仿真原理图资料

[复制链接]
ID:1053299 发表于 2022-11-22 10:34 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
本次设计是运用STC89C52单片机技术与温度传感器DS18B20测量外界温度的设计原理设计的一款温控风扇系统。系统主要通过温度传感器控制不同的PWM占空比输出来控制风扇的档位。此系统通过液晶显示器1602来显示温度,配备4个温度设定按键,由DS18B20读取外界温度,可通过按键调节预设的温度,再配合程序来调节风速。经过调试,风扇可以按照温度智能变速,无人自动关闭,实现了智能温控的目标。

(1) 传统电风扇不能随着环境温度的变化自动调节风速,这对那些昼夜温差大的地区是致命的缺点,尤其是人们在熟睡时,不但浪费资源,还很容易使人感冒生病;
(2) 传统电风扇机械的定时方式常常会伴随着机械运动的声音,特别是夜间影响人们的睡眠,而且定时范围有限,不能满足人们的需求。鉴于这些缺点,我们设计了一款智能温控风扇来解决。
(3) 传统电风扇大部分只有手动调速,功能单一。长时间在高负荷工作容易损坏电器,并且造成电量的损失。
因此,鉴于这些缺点,我们设计了一款智能温控风扇来解决这些问题,它特别适宜于家庭老人与孩子用,其风力更加柔和,很符合人们的身体特性。
2.1 系统整体设计
系统流程图如图2-1所示,其系统的整体思路是:利用温度传感器DS18B20来测量环境温度,并直接输出数字温度给STC89C52单片机进行处理,并将实时温度、设置温度显示在液晶显示屏1602上,通过温度传感器控制不同的PWM占空比输出来控制风扇的档位。设置温度辅以4个可调按键,一个提高最高温度,一个降低最高温度,一个提高最低温度,一个降低最低温度。设置温度只能是整数型式,检测到的环境温度可以精确到小数点后一位。单片机根据,温度采集模块采集到的温度并做出相应处理,当温度高于10°C时,风扇电路导通,风扇转动并随温度改变转速。当温度低于10°C时,风扇电路不通电,风扇不转。实现风扇自动停止并随温度变化自动调速,同时显示当前温度。
系统实现的功能是:上电复位时检测温度传感器DS18B20是否存在或它工作是否正常,当不存在或工作不正常时从蜂鸣器发出报警声,提示用户检查DS18B20,安装或者更换。这部分功能由DS18B20复位与检测子程序RESET完成。当检测到传感器工作正常后,发出温度转换命令及读取温度值命令,将从DS18B20读取的二进制温度值转换,在LED1602上显示出来。显示功能由温度显示子程序实现。
图2-1 系统流程图
2.2 单片机方案设计
方案一:采用两片STC89C516RD单片机、液晶1602和DS18B20,进行设计,让单片机1进行温度读取操作,另外的单片机2通过定时器,产生占空比不同的PWM。两单片机通过串口进行通信,这样单片机1可以通过读取外界的温度,然后对单片机2进行控制。这样就可以在不同的温度区间内,单片机2控制直流5V小风扇不同的转速,从而实现温度自动控制风扇。
方案二:采用STC89C52单片机、液晶1602和DS18B20。这也是一款51单片机,但是它的性能比STC89C516RD单片机更强大,而且有独立的双路PWM输出。这样,采用一片STC89C52单片机就能实现温度读取和直流5V小风扇的转速控制。
方案三:采用STM8S105系列单片机、液晶1602和DS18B20,同样可以实现温度读取和直流5V小风扇的转速控制。
方案比较:
方案一,需要耗费更多的硬件资源。因此我们直接排除方案一。
方案三,如果采用44脚贴片封装的STM8S105系列单片机,可以在很小的镍铝铜板上把硬件做出来,这样可以节省一些硬件资源。但是,因为温度传感器DS18B20的读取是通过I/O端口读取的,STM8S105的I/O操作需要设置,尤其是处于输入或者输出方式。操作非常麻烦。
方案二,需要的硬件资源相对较少,而且I/O兼容8051单片机,可以实现I/O口双向操作,且编程也相对简单。
综上所述,我么们选择方案二。
2.3 显示器件方案设计
方案一:LED共阴极数码显示管。
方案二:LCD液晶显示屏1602。
对于方案一,成本相对低廉,功耗也低,在黑暗空间也可以看的清楚,可视距离较远,同时显示温度的程序也相对而言简单,所以这种显示方式也得到了广泛应用。但是它采用的显示方式是动态扫描,各个LED逐个点亮,会产生闪烁,在这个温度实时变化的环境中闪烁可能太快,数据可能不能很好的展示出来,故此方案不采用。
对于方案二,液晶显示屏显示字符清晰,自带背光,还能显示符号,并且不会不断闪烁,显示性能一流,并且考虑到此设计不只是要显示温度,还要显示电机和红外的状态,所以从设计完善的角度来考虑,选择此方案更有优势。
2.4 调速方案设计
方案一:采用数模转化芯片DAC0832来控制,有单片机根据当前环境温度输出数值到DAC0832中,再由DAC0832产生相应的模拟信号控制晶闸管的导通脚,从而采用无级调速电路实现电扇电机转速的调节。
方案二:采用单片机软件模拟PWM调速的方法。PWM是一种按照一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是矩形波PWM信号,在控制时调节PWM波的占空比。占空比是指高电平在一个周期时间内的百分比。在控制电机的转速时,占空比越大,转速就越快,若全为高电平时占空比为100%,此时转速达到最大。用单片机的I/O口输出PWM信号时,有如下三种方法:
(1)利用软件延时。当高电平延时时间到时,对I/O口电平取反,使其变成低电平,再延时一定时间,反之在低电平延时到时,对I/O口电平取反,如此循环即可得到PWM信号。
(2)利用定时器。控制方法与(1)相同,只是在该方法中利用单片机的定时器来进行高低电平的转变,而不是利用软件的延时。本设计就是采用了这种方法。
(3)利用单片机自带的PWM控制器。STC系列单片机自带PWM控制器,但本系统使用的AT89系列单片机没有此功能,所以不能使用。
对于方案一,该方案能实现对直流电机的无级调速,速度变化灵敏,但是D/A转换芯片价格较高,性价比不高,不采用。对于方案二,相对于其他方案来说,采用软件模拟PWM实现调速的过程,具有个高的性价比与灵活性,充分的发挥了单片机自身的性能,对本系统的实现又提供了一条有效的途径。所以综合考虑还是选择方案二的第二种。
图3-1 温度传感器DS18B20
DS18B20的引脚图如图3-2所示。
引脚1:接地;
引脚2:数字输入输出,接单片机3.3端口;
引脚3:可选的5V电源。
图3-2 温度传感器DS18B20引脚图
第四章系统硬件设计
4.1 系统原理图
如图4-1所示,它为我们的系统原理图,下面是我们的设计原理:
(1) 电源开关,控制系统处于工作还是停止状态。
(2) 当系统上电之后,通过DS18B20感应外界温度,通过单片机读取外界温度,然后通过液晶显示屏1602来显示出来。通过判断温度的范围,控制风扇的停止与转不同的速度,即:当按下开关键时,系统初始化默认的设定最低温度为10°,最高温度为30°。如果外界温度高于设定温度,则电风扇进行运转,如果外界温度低于设定温度,则风扇不转动,反之,处于两者之间,风扇半速转动,同时显示外界的温度和液晶显示屏1602给出档位显示。
(3) 温度控制的范围可以通过按键进行设置。配备4个温度设定按键,由DS18B20读取外界温度,通过设定的温度配合程序来调节风速。
图4-1 系统原理图
4.2 单片机最小系统
在单片机最小系统中,有两个非常重要的电路,一个是开关复位电路,用来对单片机本身和其外部扩展I/O接口电路进行复位,还有一个是晶振电路,用于产生谐振,使单片机得以工作。如图4-2所示,为单片机引脚图,单片机的XTAL1和XTAL2用来外界石英晶体和微调电容,连接单片机内OSC的定时反馈电路。本设计中开关复位与晶振电路如图4-3所示,当按下按键开关是,系统复位一次。其中电容C1、C2为20pF,C3为1uF,电阻R1为100,晶振为12MHz。
4.3 温度采集电路
DS18B20数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55℃相对应的一个基权值。如果计数器计数到0时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55℃,被预置在-55℃的温度寄存器中的就增加1℃,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以16位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿。DS18B20由于直接可以输出数字信号,
图4-2 STC89C52RC单片机引脚图
图4-3 开关复位与晶振电路
所以可以直接输出给单片机,但是需要在输出口上接一个上拉电阻来确保工作,连接图如图4-4所示。
图4-4 温度采集电路
4.4 LCD1602显示电路
图4-5 LCD1602显示电路
如图4-5所示为LCD1602显示电路,在显示屏上,显示设定的最高温度30°,最低温度10°,目前外界温度33°,占空比为100,此时风扇全速转动。
4.5 按键控制电路
图4-6 按键控制电路
如图4-6所示,有四个按键,可调设定的最高温度和最低温度,从而对风扇进行调控,从上到下依次是最高温度加、最高温度减、最低温度加、最低温度减。
4.6 风扇调速电路
图4-7 风扇调速电路
如图4-7所示,我闷设计采用的是由5V直流供电的小型风扇,在设计当中,我们只预置了三档速度档位,一档的PWM占空比为0%,此时风扇不转动;二档的的PWM占空比为0%-100%之间,此时风扇半速转动;三档的PWM占空比为100%,此时风扇全速转动。这样可以看到速度又非常明显的变化,可根据液晶显示屏上的占空比来判断风扇处于什么档位。
在这次设计实践中,我们还用了继电器,其中,当温度较低时,此时数据输入端口P0^1灯灭,输出电压为5V,继电器处于断开状态,风扇不转;当温度处于预设最高温度与最低温度之间,此时单片机使继电器处于断开与吸合的重复循环状态,则风扇半速转动;当温度高于预设最高温度,则数据输入端口P0^1灯亮,输出电压为0V,继电器处于吸合状态,风扇全速转动。
第五章系统软件设计
5.1 主函数流程图
如图5-1所示,为主程序流程图:
图5-1 主函数流程图
5.2 温度控制风扇程序流程图
如图5-2所示,为温度控制风扇程序流程图:
图5-2 温度控制风扇程序流程图
第六章系统调试
单片机复位后,进行初始化工作,然后进入按键功能模块,最后完成工作。初始化中,将DS18B20,内部RAM,包括按键,默认为控制状态,温度设定为15°C。加减按键同时按下进入温度设定状态,然后按加或减按键进行温度设定,然后再次同时按加减键退出。硬件调试:硬件电路的调试相对来说比较简单。调试的功能包括按键电路,DS18B20和电机电路。
按键电路的调试:按键电路实现的功能是在按键按下后能执行设定温度的改变,这项采用实物调试,按键按下之后,温度随之改变。
温度传感器电路的调试:温度传感器DS18B20的调试在实物上进行,当用手指去加热温度传感器DS18B20的时候,LCD示数开始随温度的上升而改变,变化明显而且刷新频率适中,可以清晰的看到所显示的温度。
电路的调试:电机电路进行调试,不断的将设定温度降低,观察电机转速的变化。电机随设定温度与实际温度差值的改变而改变,转速变化较为平滑,达到了预期的效果。
实物硬件图如图7-1所示:
图7-1 实物硬件图

压缩包内容

压缩包内容

参考:http://www.51hei.com/bbs/dpj-124878-1.html
附件包涵设计说明书,proteus仿真,edraw流程图,keil源文件,C语言程序等。均为自己原创,请大家多多指教!

下载: 资料.7z (3.91 MB, 下载次数: 75)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1053722 发表于 2022-11-24 14:09 | 显示全部楼层
Proteus仿真是8.8版本的
回复

使用道具 举报

ID:1068245 发表于 2023-3-25 02:00 | 显示全部楼层
可以分多个档调速吗

回复

使用道具 举报

ID:871828 发表于 2023-3-25 13:44 | 显示全部楼层
仿真不行
回复

使用道具 举报

ID:1068245 发表于 2023-3-27 18:45 | 显示全部楼层
miragen 发表于 2022-11-24 14:09
Proteus仿真是8.8版本的

应该都行吧
回复

使用道具 举报

ID:1068434 发表于 2023-3-29 07:39 来自手机 | 显示全部楼层
一直想搞一个类似这样的程序,今天看到这篇,明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表