Arduino温度控制 您所在的位置:网站首页 风扇旋转角度调节 Arduino温度控制

Arduino温度控制

2024-07-10 02:17| 来源: 网络整理| 查看: 265

原文:https://circuitdigest.com/microcontroller-projects/automatic-temperature-controlled-fan-project

参考资料 Arduino关于DHT11和DHT22湿度和温度传感器的完整指南Arduino操控1602 LCD液晶屏 https://blog.csdn.net/acktomas/article/details/1170745311602-LiquidCrystal库https://blog.csdn.net/acktomas/article/details/117075021 Arduino温度控制-根据温度调整风扇速度

ARDUINO的

经过**萨达姆** 2015年8月3日99 在这里插入图片描述

在这个基于arduino的项目中,我们将使用Arduino构建 **温度控制风扇。**借助此电路,我们将能够根据室温来调节家庭或办公室中的风扇速度,并在16x2 LCD显示屏上显示温度和风扇速度的变化。为此,我们将使用Arduino UNO板,LCD,DHT11传感器模块和可通过PWM控制的DC风扇。让我们讨论更多有关此操作的信息,以便您可以自己构建一个。我们还建立了一个执行交流温度自动控制的项目 ,您也可以检查一下是否感兴趣。

所需组件

以下是使用Arduino执行基于温度的风扇速度控制所需的材料**。** 大多数组件应该可以在本地硬件商店轻松获得

Arduino UNODHT11传感器直流风扇2N2222晶体管9伏电池16x2液晶屏1K电阻连接线 使用温度传感器进行Arduino风扇速度控制

该项目包括三个部分。人们通过使用湿度和温度传感器即DHT11来感测温度。第二 部分读取dht11传感器模块的输出,并将温度值提取为以摄氏度为单位的合适数值,并使用PWM控制风扇速度。系统的最后一部分在LCD和风扇驱动器上显示湿度和温度。

在此项目中,我们使用了传感器模块DHT11,该模块已经讨论了我们先前的项目“使用Arduino进行湿度和温度测量”。在这里,我们仅使用该DHT传感器来感测温度,然后根据要求对arduino进行编程。

这个项目的工作非常简单。我们在arduino的pwm引脚上创建了PWM,并将其应用于晶体管的基极端子。然后,晶体管根据PWM输入产生电压。 在这里插入图片描述 风扇速度和PWM值以及占空比值在给定表中显示

温度占空比PWM值风扇转速29100%255100%

什么是PWM? PWM是一种通过使用我们可以控制电压或功率的技术。为了更简单地理解它,如果您施加5伏电压来驱动电动机,那么电动机将以一定速度运动,现在,如果我们将施加的电压减小2表示我们将3伏电压施加给电动机,那么电动机速度也会降低。该概念在项目中用于通过PWM控制电压。(要了解有关PWM的更多信息,请检查以下电路:1瓦LED调光器) 在这里插入图片描述 PWM的主要功能是具有一定占空比的数字脉冲,该占空比负责控制速度或电压。

假设我们有一个占空比为50%的电池,这意味着它将提供我们施加电压的一半。

占空比的公式如下:

占空比(Duty Cycle)= Ton/T

其中 T= (total time) or (Ton+Toff) Ton =脉冲的导通时间(means 1) Toff =脉冲关闭时间(means 0)

50%占空比

10%占空比

90%占空比 在这里插入图片描述

Arduino温度控制风扇电路图

该温度控制风扇电路的连接非常简单,此处使用液晶显示器显示温度和风扇速度状态。LCD以4位模式直接连接到Arduino(有关更多详细信息,请参阅本教程:LCD与Arduino Uno的接口)。LCD的引脚(即RS,EN,D4,D5,D6和D7)连接至Arduino数字引脚编号2、3、4、5、6、7。DHT11传感器模块连接至Arduino的数字引脚12。数字引脚9用于控制通过晶体管的风扇速度。 在这里插入图片描述 如果您正在寻找简单且更具成本效益的产品,则可以使用LM35和温控自动交流开关项目来检查 温控LED,它们都很容易构建并且不需要微控制器。

用于温控风扇的Arduino代码

首先,我们包括用于LCD和DHT传感器的库,然后为LCD,DHT传感器和风扇定义引脚。

#include // Including library for dht #include LiquidCrystal lcd(2,3,4,5,6,7);//连接的引脚需要按“ RS,En,D4,D5,D6,D7”的顺序表示 #define dht_dpin 12 dht DHT; #define pwm 9

然后在设置循环中初始化所有内容。然后通过使用dht功能读取DHT传感器,然后使用一些dht功能循环提取温度并将其显示在LCD上。

DHT.read11(dht_dpin); int temp = DHT.temperature; lcd.setCursor(0, 0); lcd.print("Temperature:"); lcd.print(temp); // Printing temperature on LCD lcd.write(1); lcd.print("C"); lcd.setCursor(0, 1);

此后,我们将温度与预定义的温度数字进行比较,然后根据温度值生成PWM。 在这里插入图片描述

为了生成PWM,我们在8位中使用了“ analogWrite(pin,PWM value)”功能。如果PWM值等于模拟值,则表示平均值。因此,如果我们需要产生20%的占空比,则在“ analogWrite”函数中将255/5值作为PWM传递。

Code #include // Including library for dht #include LiquidCrystal lcd(2,3,4,5,6,7);//连接的引脚需要按“ RS,En,D4,D5,D6,D7”的顺序表示 #define dht_dpin 12 dht DHT; #define pwm 9 byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { lcd.begin(16, 2); lcd.createChar(1, degree); lcd.clear(); lcd.print(" Fan Speed "); lcd.setCursor(0, 1); lcd.print(" Controlling "); delay(2000); analogWrite(pwm, 255); lcd.clear(); lcd.print("Circuit Digest "); delay(2000); } void loop() { DHT.read11(dht_dpin); int temp = DHT.temperature; lcd.setCursor(0, 0); lcd.print("Temperature:"); lcd.print(temp); // Printing temperature on LCD lcd.write(1); lcd.print("C"); lcd.setCursor(0, 1); if (temp analogWrite(pwm, 51); lcd.print("Fan Speed: 20% "); delay(100); } else if (temp == 27) { analogWrite(pwm, 102); lcd.print("Fan Speed: 40% "); delay(100); } else if (temp == 28) { analogWrite(pwm, 153); lcd.print("Fan Speed: 60% "); delay(100); } else if (temp == 29) { analogWrite(pwm, 204); lcd.print("Fan Speed: 80% "); delay(100); } else if (temp > 29) { analogWrite(pwm, 255); lcd.print("Fan Speed: 100% "); delay(100); } delay(3000); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有