详情

基于单片机的智能风扇设计方案

发布时间:2023-01-28 发布时间:
|

自古以来,随着人类现代社会和科技的飞速进步、电子信息技术、控制技术等技术的不断增加,社会信息逐渐加速,它使人们的生活、工作、学习和交流变得越来越相互关联与密切。信息以及大数据的社会正在改变人们的种种生活习惯和各种工作方法。与此同时我们发现,它也挑战了我们传统的许多家用电器,经过调查,我们知道了如今人们对家用电器的需求不再只是一个简单的物质需求与简单的功能,更多关注和需求的是一种高度安全,令人感到舒适、美观、并且易于操作的智能家电。因此,智能家电已成为一种令人向往的发展趋势。

我们也知道:在炎热的夏天,常见普通的风扇为人们的生活带来了很多便利,并且一般的电风扇只有手动去调速和机械档的手动开关来调速。在夏季和夜晚温度下降后,人们有时候会因熟睡而忘记关闭电风扇,当温度缓慢降低时,普通风扇却不能依据温度的变化而改变其转速,然而智能温控电风扇可以做到这一点,根据室内环境温度自动控制风扇转速。为了让风扇更贴近人们的生活,开发一种以柔和的声音和新型智能电风扇控制系统是非常迫切的。通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。

1系统总体设计

1.1功能介绍

(1)风速设为从低到高共2个档位,可由用户通过键盘设定。

(2)每当温度低于下限值时,则电风扇风速关闭。

(3)每当温度在下限和上限之间时,则电风扇转速缓慢。

(4)每当温度高于上限值时,则电风扇风速全速运转。

1.2整体设计思路

利用温度传感器DSI8B20检测环境温度并直接输出数字温度信号给树莓派单片机进行处理,在LED数码管上显示当前环境温度值以及预设温度值。其中预设温度值只能为整数形式,检测到的当前环境温度可精确到小数点后一位。同时采用PWM脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值。

1.3可行性分析

传统电风扇以及其转机最致命的缺陷是不能依据外界环境温度的变化来实施自动调节风机的转速。所以说智能风扇的发展将有效解决传统风机的不足,真正实现风机的运行受外部环境的控制,实现低耗能、高性能的智能风机,节约了很多的电力等资源,减少了许多人工消耗。这款智能风扇适合所有家庭,特别适合老人和儿童,当室内温度低于系统设定的一个阈值时,它会强制并且自动关闭此功能,从而实现保护老人和儿童的健康。智能风扇控制系统开发的成本低,开发时间短,好上手。简单地说,它不仅可以弥补传统风扇的缺点和不足,还可以在某些方面上增添新思路,新方向。如果可以大量投产,将大大提高人们的生活质量。因此,智能风扇将具有非常良好的发展空间和前景,如果实现了这个技术,将是一个很大的进步。这个系统总的来说,主要从技术可行性和经济可行性的角度分析设计,这确实可行。因此,该程序被开发用于根据室温的温度控制风扇的旋转,并且还根据固定的温度值与没有温度传感器的风扇旋转调节方案兼容。

传统电风扇的直流风让人感到十分僵硬,人们很容易因长时间地吹而感冒,而自然风又软又宽,变化无常,让人感到十分舒适,是既凉爽又舒适,人们很容易接受。与人工DC风不同,自然风速舒适,不规则变化,它不会让人体表面的湿热状态一直处于加速流失状态,在经过长时间对自然风数字数据的采集,可以用一些脚本语言模拟自然风的这种无规律变化,吹出让人心旷神怡的徐徐清风。

2系统硬件设计

2.1实施计划

使用自动识别温度传感器DS18B20的位置可以获取温度。

根据温差控制风扇转动等的功能。

日志文件(temperature_log)保存在python文件相同的目录下。

raspberrypie的操作系统以及我们熟悉的2012年12月之后产生的Raspbian系统已经能够非常完美的支持DS18B20单总线(1-wire)温度传感器。该传感器由一个半导体封装头装置和三个ping(引脚)组成,现在是一个非常精确并且成熟的数字设备。众所周知,由于RaspberryPi没有ADC模数转换器),所以说我们无法直接读取TMP36等模拟信号温度传感器。因此,DS18B20是非常适合这个场景的。

2.2硬件材料

数字温度传感器加上一根延长线,它们也可以是湿度或高温型号的其中一种。4.7K或10K欧姆电阻,一小块面包板,一把跳线,扩展板。

DS18B20单线传感器可通过非并联连接进行访问,这与其他市售传感器几乎完全相同!所有传感器共用相同的ping,所以说一个4.7K的电阻十分适合这里。

这里的电阻我们来做的功能:拉出数据输出线(数据线)和保持数据传输过程中的稳定。

如果我们必须要使用DS18B20的防水版,则需要连接3个ping,它们分别是:红色,黑色,黄色,并且未连接下一个ping(也就是引脚)。

如果可以的话,利用高温版本的防水版,需要橙色针脚(ping)连接到3.3V上面,白色接地线,蓝色针脚连接到针脚4(4ping)。

在3.3V和数据引脚之间也需要4.7K-10K的电阻。

虽然DS18B20看起来像一般市面上的普通传感器,但它却有许多复杂的内部组件。

它的芯片包括这块板专用的单总线串行接口、逻辑控制部分单元和核心部分温度传感器。

它的输出针脚输出数字信息,以便Raspbian/ococentalis可以在某一个针上。在运行项目之前,使用SSH工具来进行一次测试是最稳妥的。

sudomodprobew1-gpio

sudomodprobew1-thermcd/sys/bus/w1/devices

cd28-xxxx(changethistomatchwhatserialnumberpopsup)

catw1_slave

系统会告诉我们有一个可供读取的温度数据。它也许像一个文个个文件,所以我们需要将这个数据读取出来。

在返回消息的第一行的结尾,将出现True或者是False,如果是,则第二行后面我们需要跟着温度数据来结尾。

如果主板连接了多个传感器单元,我们将可以了解并看到多个28-xxxfile(文件),插入传感器,校检新生成的文件名,然后标记,将他们一一对应给传感器。这样,我们就可以区分每一个传感器对应于的确定文件。

3系统软件设计

下面的Python脚本处理一些异常或者错误信息并且反馈给用户界面,同时还会返回每秒的华氏和摄氏温度数据。

importos

importglobimporttime

os.system(‘modprobew1-gpio’)os.system(‘modprobew1-therm’)base_dir=‘/sys/bus/w1/devices/’

device_folder=glob.glob(base_dir+‘28*’)[0]device_file=device_folder+‘/w1_slave’

Defread_temp_raw():

f=open(device_file,‘r’)lines=f.readlines()f.close()

returnlines

defread_temp():

lines=read_temp_raw()

whilelines[0].strip()[-3:]!=‘YES’:TIme.sleep(0.2)

lines=read_temp_raw()equals_pos=lines.find(‘t=’)ifequals_pos!=-1:

temp_string=lines[equals_pos+2:]temp_c=float(temp_string)/1000.0temp_f=temp_c*9.0/5.0+32.0returntemp_c,temp_f

whileTrue:

print(read_temp())TIme.sleep(1)

在开始运行脚本时,需要先运行modprobe命令以使得api运行。

接下来的脚本用于查找可以从哪些文件中读取消息。

现在有一个问题是有时候温度会在在树莓派下读取。可以用以下代码替换read-temp-ray方法。然后在程序开始时添加一行“导入子进程”。

defread_temp_raw():

catdata=subprocess.Popen([‘cat’,device_file],stdout=subprocess.PIPE,stderr=subprocess.PIPE)

out,err=catdata.communicate()out_decode=out.decode(‘utf-8’)lines=out_decode.split(‘\n’)returnlines

读取温度有两种不同的方式。read_temp_ray通过接口交检message的前两行。read_temp封装它并添加error消息检测和重试,直到出现“True”为止。在第一行的末尾此方法返回两个值,第一个是Celsius,第二个是Fahrenheit。

可以像下面这样把两个值分开

deg_c,deg_f=read_temp()

主要的funcTIon只是一个循环体,用来读取温度数据,(print)打印出来,然后sleep一秒钟。然后继续一次循环。

要把这个程序传到树莓派上,你可以通过SSH

在命令行里打开一个文本编辑器运行thermometer.py

测试与配置

运行这个程序需要超级用户权限,所以在命令行里运行下面的命令

sudopythonthermometer.py

设置项:

T_HIGH=48

温度^48度开始转动,在温度传感器失效/没有传感器时使用

T_LOW=42

温度^42度停止转动,在温度传感器失效/没有传感器时使用

T_DIFF_HIGH=24

温差^24度开始转动

T_DIFF_LOW=18

温差^18度停止转动

T_SENOR_DIFF=0

温度传感器和真实环境温度矫正值,真实环境温度传感器实测温度+校正值

fan_pin=12

控制风扇IO针脚BOARD编号

NPN=真

控制风扇用的是NPN三极管,PNP三极管时改为假

IS_LOG_FILE=True

是否输出温度信息到文件

IS_LOG_CONSOLE=True

是否输出温度信息到控制台

TIme_interval=5

检测温度间隔时间单位秒

log_file_duration=12

日志记录保留时间长度,单位小时

4结束语

本系统最大的优点是解决了传统风扇不能实时根据外界温度变化自动调节风扇转速的缺点,智能风扇将有效改变传统风扇高功耗,低性能的缺点。该智能风扇适用于所有家庭,尤其针对老人小孩设计的当室内温度低于系统设置的阈值时自动关闭这一功能,保护了老人和小孩的身体健康,更贴近于人们生活。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于DSP芯片TMS320F240实现PWM整流器控制系统的应用设计