0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用Arduino的自動(dòng)風(fēng)扇速度控制電路設(shè)計(jì)

CHANBAEK ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2024-06-22 16:39 ? 次閱讀

利用Arduino的自動(dòng)風(fēng)扇速度控制電路設(shè)計(jì)(一)

自動(dòng)風(fēng)扇速度控制電路Arduino LM35編程非常容易實(shí)驗(yàn),可用于根據(jù)溫度水平通過繼電器控制任何目標(biāo)設(shè)備。對(duì)于這里的溫度測(cè)量,我們使用 LM35,這是一種精密集成電路溫度器件,其輸出電壓與攝氏度溫度成線性比例。由于其輸出特性,我們?cè)谳敵鲋涤?jì)算中不需要采用開爾文。該LM35溫度傳感器無需任何外部元件即可工作,只需要4 V至30 V穩(wěn)壓直流電源作為偏置。在此電路中,我們使用 Arduino 開發(fā)板的 +5V DC。該傳感器在室溫下提供±1/4°C的溫度輸出,在-55°C至150°C的整個(gè)溫度范圍內(nèi)提供±3/4°C的溫度輸出。

由于該 LM35 提供模擬輸出(線性 + 10-mV/°C 比例因子),因此我們可以將 LM35 的輸出引腳直接連接到 Arduino 板的任何模擬輸入引腳。 LM35 可以采用單電源或雙電源供電,其自身運(yùn)行功耗僅為 60 μA。它有不同的封裝,如 TO-CAN (3)、TO-92 (3)。這里我們使用德州儀器 (TI) 的 LM35 TO-92。

image.png

直流風(fēng)扇控制電路圖

image.png

繼電器(交流風(fēng)扇)控制電路圖

image.png

該電路可以構(gòu)建在面包板或普通 PCB 板上,具有額外的 12V 直流電源用于風(fēng)扇或繼電器。如前所述,LM35 只需要 5V,因此 Arduino 的 5V 引腳和 Gnd 引腳與 LM35 連接,輸出引腳直接連接到模擬輸入引腳 A0,并在以下程序中提到。指示 LED 與數(shù)字引腳 D8 連接并聲明為輸出引腳。 D3 PWM引腳聲明為輸出引腳,連接至開關(guān)晶體管 2N2219A 的基極。這里我們必須根據(jù) LM35 感測(cè)到的溫度水平來更改輸出脈沖寬度。順便說一下,我們可以達(dá)到不同的速度級(jí)別。每當(dāng)溫度傳感器檢測(cè)到 Arduino 外部的溫度變化時(shí),D3 引腳的 PWM 輸出就會(huì)發(fā)生變化,因此風(fēng)扇的速度也會(huì)發(fā)生變化。

為了控制繼電器,使用 D3 引腳作為數(shù)字輸出引腳并在 Arduino 代碼中聲明它。這樣我們只能根據(jù)溫度水平來打開和關(guān)閉交流風(fēng)扇。根據(jù)溫度水平使用任何目標(biāo)負(fù)載來打開和關(guān)閉。每當(dāng)溫度傳感器檢測(cè)到溫度變化超過 30°C 時(shí),Arduino 就會(huì)改變 D3 引腳的數(shù)字輸出(高電平),從而風(fēng)扇速度發(fā)生變化。低于 25°C 時(shí),D3 引腳的數(shù)字輸出變?yōu)椋ǖ停?/p>

自動(dòng)風(fēng)扇速度控制電路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;
}

自動(dòng)繼電器控制電路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
}

在上面的兩個(gè)程序中,我們使用以下方法將模擬輸出電壓從 LM35 轉(zhuǎn)換為攝氏度

int readTemp() {

temp = analogRead(tempPin);

return temp * 0.48828125;

}

利用Arduino的自動(dòng)風(fēng)扇速度控制電路設(shè)計(jì)(二)

大多數(shù)時(shí)候,人們?cè)陔x開房間時(shí)仍然開著風(fēng)扇,因?yàn)樗麄兺泴⑵潢P(guān)閉。他們甚至將風(fēng)扇設(shè)置為最高速度,無論外面的天氣如何。所有這些習(xí)慣每天都會(huì)消耗和浪費(fèi)越來越多的電力。為此,我們需要制作一個(gè)風(fēng)扇可以自動(dòng)打開和關(guān)閉的風(fēng)扇。

這里風(fēng)扇的速度可以通過改變輸入電源來改變,但是如果我們需要根據(jù)溫度變化來改變風(fēng)扇速度。然后我們必須在系統(tǒng)中實(shí)現(xiàn)微控制器(Arduino)和溫度傳感器 LM 35?,F(xiàn)在風(fēng)扇可以根據(jù)房間內(nèi)的溫度變化來改變速度。所有這些都將節(jié)省大量電力。

電路原理

image.png

如圖電路圖所示,電路的主要部分是Arduino Uno板和LM35溫度傳感器。這里傳感器的輸出直接與Arduino板的模擬輸入A0引腳連接,LED1與數(shù)字引腳D8連接。輸出取自Arduino的D11引腳。現(xiàn)在您可以選擇任何具有 PWM 功能的數(shù)字引腳作為輸出引腳,為此,我們也必須在 Arduino 程序代碼中進(jìn)行這些更改。這里給出的代碼基于 D11 引腳作為輸出。每當(dāng)溫度傳感器檢測(cè)到 Arduino 外部的溫度變化時(shí),D11 引腳的 PWM 輸出就會(huì)發(fā)生變化,因此風(fēng)扇的速度也會(huì)發(fā)生變化。此外,在該電路中,SL100 晶體管充當(dāng)開關(guān)晶體管。我們需要一個(gè)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;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電路圖
    +關(guān)注

    關(guān)注

    10380

    文章

    10728

    瀏覽量

    537239
  • 控制電路
    +關(guān)注

    關(guān)注

    82

    文章

    1722

    瀏覽量

    136589
  • 自動(dòng)風(fēng)扇

    關(guān)注

    0

    文章

    2

    瀏覽量

    5976
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6481

    瀏覽量

    189295
  • 速度控制
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    8055
收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    求助!設(shè)計(jì)一個(gè)熱風(fēng)傳送系統(tǒng)的風(fēng)扇電機(jī)運(yùn)轉(zhuǎn)控制電路

    1.采用74LS系列集成電路設(shè)計(jì)能夠?qū)崿F(xiàn)以下功能的電路系統(tǒng)并模擬運(yùn)行。2.設(shè)計(jì)一個(gè)熱風(fēng)傳送系統(tǒng)的風(fēng)扇電機(jī)運(yùn)轉(zhuǎn)控制電路,共有8種速率,采用電路設(shè)計(jì)
    發(fā)表于 12-18 22:08

    新型風(fēng)扇速度自動(dòng)控制集成電路及其應(yīng)用

    介紹兩種新型風(fēng)扇速度自動(dòng)控制集成電路使用簡(jiǎn)單遠(yuǎn)程二極管溫度傳感器的四逹風(fēng)扇控制集成
    發(fā)表于 07-18 15:53 ?40次下載

    家用電風(fēng)扇微風(fēng)控制電路

    家用電風(fēng)扇微風(fēng)控制電路
    發(fā)表于 10-14 22:35 ?4828次閱讀
    家用電<b class='flag-5'>風(fēng)扇</b>微風(fēng)<b class='flag-5'>控制電路</b>圖

    組合機(jī)床順序控制電路設(shè)計(jì)

    組合機(jī)床順序控制電路設(shè)計(jì) 一、 實(shí)驗(yàn)?zāi)康模?、 熟悉常用低壓電器元件的使用。2、 掌握控制電路設(shè)計(jì)的方法
    發(fā)表于 09-23 08:18 ?3561次閱讀
    組合機(jī)床順序<b class='flag-5'>控制電路設(shè)計(jì)</b>

    儀器用風(fēng)扇調(diào)速控制電路

    儀器用風(fēng)扇調(diào)速控制電路
    發(fā)表于 12-30 18:00 ?1361次閱讀
    儀器用<b class='flag-5'>風(fēng)扇</b>調(diào)速<b class='flag-5'>控制電路</b>圖

    風(fēng)扇陣風(fēng)控制電路

    風(fēng)扇陣風(fēng)控制電路 分析與檢修:該型電風(fēng)扇的陣風(fēng)控制電路原理如附圖所示。由時(shí)基集成電路NE555等元器件組成
    發(fā)表于 05-26 14:20 ?3536次閱讀
    電<b class='flag-5'>風(fēng)扇</b>陣風(fēng)<b class='flag-5'>控制電路</b>

    高效率的風(fēng)扇控制電路

    高效率的風(fēng)扇控制電路 最簡(jiǎn)單的風(fēng)扇控制方案是采用一個(gè)開關(guān)控制風(fēng)扇,這種方案雖然簡(jiǎn)單,但效率非常
    發(fā)表于 09-25 10:23 ?8669次閱讀
    高效率的<b class='flag-5'>風(fēng)扇</b><b class='flag-5'>控制電路</b>

    電子式風(fēng)扇控制電路的組成及按鍵原理分析

    燈和風(fēng)扇是單獨(dú)控制的,只是把兩種不同功能的電器組合到一起。電子式風(fēng)扇控制電路由電源、發(fā)射電路、接收電路
    的頭像 發(fā)表于 07-08 15:08 ?1.8w次閱讀
    電子式<b class='flag-5'>風(fēng)扇</b><b class='flag-5'>控制電路</b>的組成及按鍵原理分析

    基于實(shí)用基電風(fēng)扇模擬的自然控制電路

    基于實(shí)用基電風(fēng)扇模擬的自然控制電路
    發(fā)表于 06-27 10:05 ?9次下載

    流截止負(fù)反饋自動(dòng)調(diào)速控制電路設(shè)計(jì)與實(shí)現(xiàn)

    流截止負(fù)反饋自動(dòng)調(diào)速控制電路設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 07-18 09:23 ?1次下載

    基于AD603放大器的自動(dòng)增益控制電路設(shè)計(jì)

    基于AD603放大器的自動(dòng)增益控制電路設(shè)計(jì)
    發(fā)表于 08-18 14:30 ?103次下載

    數(shù)字風(fēng)扇速度控制電路如何工作的

    這是數(shù)字風(fēng)扇速度控制電路設(shè)計(jì),可用于使用感應(yīng)電機(jī)控制220V風(fēng)扇速度
    的頭像 發(fā)表于 05-10 16:49 ?2113次閱讀
    數(shù)字<b class='flag-5'>風(fēng)扇</b><b class='flag-5'>速度</b><b class='flag-5'>控制電路</b>如何工作的

    如何使用Arduino生成的PWM來控制交流風(fēng)扇速度

    在這個(gè)項(xiàng)目中,我們將演示使用 TRIAC 的 Arduino 交流風(fēng)扇速度控制。這里使用交流信號(hào)的相位控制方法來
    的頭像 發(fā)表于 08-18 16:26 ?1.2w次閱讀
    如何使用<b class='flag-5'>Arduino</b>生成的PWM來<b class='flag-5'>控制</b>交流<b class='flag-5'>風(fēng)扇</b>的<b class='flag-5'>速度</b>

    使用Arduino和晶閘管(TRIAC)控制交流風(fēng)扇速度

    在許多基于Arduino自動(dòng)化項(xiàng)目中,使用開關(guān)或使用某種控制很容易打開或關(guān)斷家用電器。但是在很多應(yīng)用中,我們需要控 制交流電源,例如,控制風(fēng)扇
    發(fā)表于 03-06 14:57 ?3次下載
    使用<b class='flag-5'>Arduino</b>和晶閘管(TRIAC)<b class='flag-5'>控制</b>交流<b class='flag-5'>風(fēng)扇</b>的<b class='flag-5'>速度</b>

    風(fēng)扇控制電路速度控制指南

    風(fēng)扇控制電路的范圍從在特定溫度下提高風(fēng)扇速度的簡(jiǎn)單開關(guān)到具有連續(xù)可變速度的數(shù)字控制
    的頭像 發(fā)表于 05-17 11:51 ?5945次閱讀
    <b class='flag-5'>風(fēng)扇</b><b class='flag-5'>控制電路</b>和<b class='flag-5'>速度</b><b class='flag-5'>控制</b>指南

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品