0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Arduino的自动风扇速度控制电路设计

CHANBAEK 来源:网络整理 作者:网络整理 2024-06-22 16:39 次阅读

利用Arduino的自动风扇速度控制电路设计(一)

自动风扇速度控制电路Arduino LM35编程非常容易实验,可用于根据温度水平通过继电器控制任何目标设备。对于这里的温度测量,我们使用 LM35,这是一种精密集成电路温度器件,其输出电压与摄氏度温度成线性比例。由于其输出特性,我们在输出值计算中不需要采用开尔文。该LM35温度传感器无需任何外部元件即可工作,只需要4 V至30 V稳压直流电源作为偏置。在此电路中,我们使用 Arduino 开发板的 +5V DC。该传感器在室温下提供±1/4°C的温度输出,在-55°C至150°C的整个温度范围内提供±3/4°C的温度输出。

由于该 LM35 提供模拟输出(线性 + 10-mV/°C 比例因子),因此我们可以将 LM35 的输出引脚直接连接到 Arduino 板的任何模拟输入引脚。 LM35 可以采用单电源或双电源供电,其自身运行功耗仅为 60 μA。它有不同的封装,如 TO-CAN (3)、TO-92 (3)。这里我们使用德州仪器 (TI) 的 LM35 TO-92。

image.png

直流风扇控制电路图

image.png

继电器(交流风扇)控制电路图

image.png

该电路可以构建在面包板或普通 PCB 板上,具有额外的 12V 直流电源用于风扇或继电器。如前所述,LM35 只需要 5V,因此 Arduino 的 5V 引脚和 Gnd 引脚与 LM35 连接,输出引脚直接连接到模拟输入引脚 A0,并在以下程序中提到。指示 LED 与数字引脚 D8 连接并声明为输出引脚。 D3 PWM引脚声明为输出引脚,连接至开关晶体管 2N2219A 的基极。这里我们必须根据 LM35 感测到的温度水平来更改输出脉冲宽度。顺便说一下,我们可以达到不同的速度级别。每当温度传感器检测到 Arduino 外部的温度变化时,D3 引脚的 PWM 输出就会发生变化,因此风扇的速度也会发生变化。

为了控制继电器,使用 D3 引脚作为数字输出引脚并在 Arduino 代码中声明它。这样我们只能根据温度水平来打开和关闭交流风扇。根据温度水平使用任何目标负载来打开和关闭。每当温度传感器检测到温度变化超过 30°C 时,Arduino 就会改变 D3 引脚的数字输出(高电平),从而风扇速度发生变化。低于 25°C 时,D3 引脚的数字输出变为(低)。

自动风扇速度控制电路Arduino LM35编程

int tempPin = A0;   // connect Sensor output pin
int fan = 3;       // Output drive for fan
int led = 8;        // fan status led pin
int temp;
int tempMin = 25;   // Minimum temperature to start the fan
int tempMax = 75;   // Maximum temperature to turn fan at 100% speed
int fanSpeed;
 
void setup() {
  pinMode(fan, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(tempPin, INPUT);
  Serial.begin(9600);  // Initialize serial communication at 9600 baud rate
}
 
void loop() {  
   temp = readTemp();     // read temperature
   Serial.print("Temperature: ");
   Serial.print(temp);
   Serial.println(" °C");
   
   if(temp < tempMin) {   // if temp is lower than minimum temperature
       fanSpeed = 0;      // fan is off
       digitalWrite(fan, LOW);
       Serial.println("Fan Speed: OFF");
   } 
   if((temp >= tempMin) && (temp <= tempMax)) {  // if temperature is higher than minimum temperature
       fanSpeed = map(temp, tempMin, tempMax, 32, 255); 
       analogWrite(fan, fanSpeed);  // spin the fan at the fanSpeed speed
       Serial.print("Fan Speed: ");
       Serial.println(fanSpeed);
   } 
   
   if(temp > tempMax) {        // if temp is higher than tempMax
     digitalWrite(led, HIGH);  // turn on led 
     Serial.println("Fan Status: Overheating!");
   } else {                    // else turn off led
     digitalWrite(led, LOW); 
     Serial.println("Fan Status: Normal");
   }
   delay(1000); // Delay for 1 second before reading temperature again
 }
 
int readTemp() {  // get temperature and convert it to celsius
  temp = analogRead(tempPin);
  return temp * 0.48828125;
}

自动继电器控制电路Arduino LM35编程

const int tempPin = A0;    // LM35 temperature sensor connected to analog pin A0
const int relayPin = 3;    // Relay control pin connected to digital pin 2

const int tempThresholdHigh = 30;  // Temperature threshold to turn on the relay (in Celsius)
const int tempThresholdLow = 25;   // Temperature threshold to turn off the relay (in Celsius)

void setup() {
  pinMode(tempPin, INPUT);
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW);  // Ensure the relay is initially off
  Serial.begin(9600);
}

void loop() {
  int tempValue = analogRead(tempPin);  // Read temperature value from LM35 sensor
  float temperature = (tempValue * 0.48828125);  // Convert analog reading to Celsius
  
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °C");
  
  // Check temperature and control the relay
  if (temperature >= tempThresholdHigh) {
    digitalWrite(relayPin, HIGH);  // Turn on the relay
    Serial.println("Relay Status: ON");
  } else if (temperature <= tempThresholdLow) {
    digitalWrite(relayPin, LOW);  // Turn off the relay
    Serial.println("Relay Status: OFF");
  }
  
  delay(1000);  // Delay for 1 second before reading temperature again
}

在上面的两个程序中,我们使用以下方法将模拟输出电压从 LM35 转换为摄氏度

int readTemp() {

temp = analogRead(tempPin);

return temp * 0.48828125;

}

利用Arduino的自动风扇速度控制电路设计(二)

大多数时候,人们在离开房间时仍然开着风扇,因为他们忘记将其关闭。他们甚至将风扇设置为最高速度,无论外面的天气如何。所有这些习惯每天都会消耗和浪费越来越多的电力。为此,我们需要制作一个风扇可以自动打开和关闭的风扇。

这里风扇的速度可以通过改变输入电源来改变,但是如果我们需要根据温度变化来改变风扇速度。然后我们必须在系统中实现微控制器(Arduino)和温度传感器 LM 35。现在风扇可以根据房间内的温度变化来改变速度。所有这些都将节省大量电力。

电路原理

image.png

如图电路图所示,电路的主要部分是Arduino Uno板和LM35温度传感器。这里传感器的输出直接与Arduino板的模拟输入A0引脚连接,LED1与数字引脚D8连接。输出取自Arduino的D11引脚。现在您可以选择任何具有 PWM 功能的数字引脚作为输出引脚,为此,我们也必须在 Arduino 程序代码中进行这些更改。这里给出的代码基于 D11 引脚作为输出。每当温度传感器检测到 Arduino 外部的温度变化时,D11 引脚的 PWM 输出就会发生变化,因此风扇的速度也会发生变化。此外,在该电路中,SL100 晶体管充当开关晶体管。我们需要一个12V电源来偏置电路。

Arduino代码

#include < LiquidCrystal.h >
LiquidCrystal lcd(7,6,5,4,3,2);
int tempPin = A0;   // connect Sensor output pin
int fan = 11;       // Output drive for fan
int led = 8;        // fan status led pin
int temp;
int tempMin = 25;   // Minimum temperature to start the fan
int tempMax = 75;   // Maximum temperature to turn fan at 100% speed
int fanSpeed;
int fanLCD;
 
void setup() {
  pinMode(fan, OUTPUT);
  pinMode(led, OUTPUT);
  pinMode(tempPin, INPUT);
  lcd.begin(16,2);  
}
 
void loop() {  
   temp = readTemp();     // read temperature
   if(temp < tempMin) {   // if temp is lower than minimum temperature
       fanSpeed = 0;      // fan is off
       digitalWrite(fan, LOW);       
   } 
   if((temp >= tempMin) && (temp <= tempMax)) {  // if temperature is higher than minimum temperature
       fanSpeed = map(temp, tempMin, tempMax, 32, 255); 
       fanLCD = map(temp, tempMin, tempMax, 0, 100);  // speed of fan to display on LCD
       analogWrite(fan, fanSpeed);  // spin the fan at the fanSpeed speed
   } 
   
   if(temp > tempMax) {        // if temp is higher than tempMax
     digitalWrite(led, HIGH);  // turn on led 
   } else {                    // else turn off led
     digitalWrite(led, LOW); 
   }
   
   lcd.print("TEMP: ");
   lcd.print(temp);      // display the temperature
   lcd.print("C ");
   lcd.setCursor(0,1);   
   lcd.print("FANS: ");
   lcd.print(fanLCD);    // display the fan speed
   lcd.print("%");
   delay(200);
   lcd.clear();   
}
 
int readTemp() {  // get temperature and convert it to celsius
  temp = analogRead(tempPin);
  return temp * 0.48828125;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路图
    +关注

    关注

    10259

    文章

    10674

    浏览量

    517882
  • 控制电路
    +关注

    关注

    81

    文章

    1648

    浏览量

    135296
  • 自动风扇
    +关注

    关注

    0

    文章

    2

    浏览量

    5924
  • Arduino
    +关注

    关注

    186

    文章

    6439

    浏览量

    185429
  • 速度控制
    +关注

    关注

    0

    文章

    34

    浏览量

    7908
收藏 人收藏

    评论

    相关推荐

    求助!设计一个热风传送系统的风扇电机运转控制电路

    1.采用74LS系列集成电路设计能够实现以下功能的电路系统并模拟运行。2.设计一个热风传送系统的风扇电机运转控制电路,共有8种速率,采用电路设计
    发表于 12-18 22:08

    设计一个热风传送系统的风扇电机运转控制电路

    设计一个热风传送系统的风扇电机运转控制电路,共有8种速率,采用电路设计8个不同占空比的PWM来控制电机转速,周期均为1s。电路通过ADC获取
    发表于 09-08 07:42

    新型风扇速度自动控制集成电路及其应用

    介绍两种新型风扇速度自动控制集成电路使用简单远程二极管温度传感器的四逹风扇控制集成
    发表于 07-18 15:53 40次下载

    风扇自然风控制电路

    风扇自然风控制电路图 本文推荐一种不会产生射频干扰的电风扇自然风自控电路。    2.5.1 原理电路&n
    发表于 04-24 09:46 9021次阅读
    电<b class='flag-5'>风扇</b>自然风<b class='flag-5'>控制电路</b>图

    组合机床顺序控制电路设计

    组合机床顺序控制电路设计 一、 实验目的;1、 熟悉常用低压电器元件的使用。2、 掌握控制电路设计的方法
    发表于 09-23 08:18 3363次阅读
    组合机床顺序<b class='flag-5'>控制电路设计</b>

    风扇阵风控制电路

    风扇阵风控制电路 分析与检修:该型电风扇的阵风控制电路原理如附图所示。由时基集成电路NE555等元器件组成
    发表于 05-26 14:20 3335次阅读
    电<b class='flag-5'>风扇</b>阵风<b class='flag-5'>控制电路</b>

    高效率的风扇控制电路

    高效率的风扇控制电路 最简单的风扇控制方案是采用一个开关控制风扇,这种方案虽然简单,但效率非常
    发表于 09-25 10:23 7890次阅读
    高效率的<b class='flag-5'>风扇</b><b class='flag-5'>控制电路</b>

    电子式风扇控制电路的组成及按键原理分析

    灯和风扇是单独控制的,只是把两种不同功能的电器组合到一起。电子式风扇控制电路由电源、发射电路、接收电路
    的头像 发表于 07-08 15:08 1.7w次阅读
    电子式<b class='flag-5'>风扇</b><b class='flag-5'>控制电路</b>的组成及按键原理分析

    基于实用基电风扇模拟的自然控制电路

    基于实用基电风扇模拟的自然控制电路
    发表于 06-27 10:05 9次下载

    流截止负反馈自动调速控制电路设计与实现

    流截止负反馈自动调速控制电路设计与实现
    发表于 07-18 09:23 1次下载

    直流脉宽H桥控制电路设计

    直流脉宽H桥控制电路设计(电源技术指标包括哪些)-直流脉宽H桥控制电路设计               
    发表于 09-15 10:23 19次下载
    直流脉宽H桥<b class='flag-5'>控制电路设计</b>

    数字风扇速度控制电路如何工作的

    这是数字风扇速度控制电路设计,可用于使用感应电机控制220V风扇速度
    的头像 发表于 05-10 16:49 1704次阅读
    数字<b class='flag-5'>风扇</b><b class='flag-5'>速度</b><b class='flag-5'>控制电路</b>如何工作的

    如何使用Arduino生成的PWM来控制交流风扇速度

    在这个项目中,我们将演示使用 TRIAC 的 Arduino 交流风扇速度控制。这里使用交流信号的相位控制方法来
    的头像 发表于 08-18 16:26 1w次阅读
    如何使用<b class='flag-5'>Arduino</b>生成的PWM来<b class='flag-5'>控制</b>交流<b class='flag-5'>风扇</b>的<b class='flag-5'>速度</b>

    使用Arduino和晶闸管(TRIAC)控制交流风扇速度

    在许多基于Arduino自动化项目中,使用开关或使用某种控制很容易打开或关断家用电器。但是在很多应用中,我们需要控 制交流电源,例如,控制风扇
    发表于 03-06 14:57 3次下载
    使用<b class='flag-5'>Arduino</b>和晶闸管(TRIAC)<b class='flag-5'>控制</b>交流<b class='flag-5'>风扇</b>的<b class='flag-5'>速度</b>

    风扇控制电路速度控制指南

    风扇控制电路的范围从在特定温度下提高风扇速度的简单开关到具有连续可变速度的数字控制
    的头像 发表于 05-17 11:51 3999次阅读
    <b class='flag-5'>风扇</b><b class='flag-5'>控制电路</b>和<b class='flag-5'>速度</b><b class='flag-5'>控制</b>指南