„Arduino“ temperatūros valdomos nuolatinės srovės ventiliatorių grandinės

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame straipsnyje sukursime keletą paprastų „Arduino“ pagrindu veikiančių automatinių temperatūros reguliuojamų nuolatinių ventiliatorių grandinių, kurios įjungs ventiliatorių ar bet kokius kitus prie jo prijungtus dalykėlius, kai aplinkos temperatūra pasieks iš anksto nustatytą slenksčio lygį. Šiam projektui panaudosime DHT11 jutiklį ir „arduino“.

Apžvalga

Mikrovaldiklių grožis yra tas, kad mes labai tiksliai kontroliuojame prie jo prijungtus periferinius įrenginius. Šiame projekte vartotojui tereikia programoje įvesti slenkstinę temperatūrą, mikrovaldiklis pasirūpins likusia funkcija.



Internete yra daugybė ne mikrovaldikliais pagrįstų automatinių temperatūros reguliatorių projektų, tokių kaip komparatoriaus ir tranzistorių naudojimas.

Jie yra labai paprasti ir veikia gerai, tačiau problema iškyla kalibruojant slenksčio lygį naudojant iš anksto nustatytą rezistorių ar potenciometrą.



Kalibruodami turime aklą idėją ir vartotojui gali tekti atlikti bandymų ir klaidų metodą, kad surastų gerą vietą.

Šias problemas įveikia mikrovaldikliai, vartotojui tereikia šiame projekte įvesti temperatūrą Celsijaus laipsniu, todėl nereikia kalibruoti.

Šis projektas gali būti naudojamas ten, kur reikia stabilizuoti kontūro vidinę temperatūrą arba išsaugoti ją nuo perkaitimo.

1 diagramoje kaip išėjimą jungiame procesoriaus ventiliatorių. Ši sąranka gali būti naudojama uždarosios grandinės vidinei aplinkos temperatūrai valdyti.

Pasiekus ribinę temperatūrą, ventiliatorius įsijungia. Kai temperatūra nukrenta žemiau ribinės temperatūros, ventiliatorius išsijungia. Taigi tai iš esmės yra automatizuotas procesas.

2 diagramoje mes prijungėme prietaisų valdymo relę, veikiančią tinklo įtampa, pavyzdžiui, stalo ventiliatoriumi.

Kai kambario temperatūra pasiekia slenkstinę temperatūrą, ventiliatorius įsijungia ir išsijungia, kai kambarys atvėsta.

Tai gali būti geriausias būdas taupyti energiją, o tingiems žmonėms, norintiems, kad kiti įsijungtų ventiliatorių, kai jie jaučiasi šilti, tai gali būti dangus.

Grandinės schema, rodanti nuolatinės srovės ventiliatoriaus valdymą

DC ventiliatoriaus valdymas temperatūros reguliavimui automatiškai

Ši sąranka gali būti naudojama grandinėms, kurios yra uždarytos dėžutėje. Šviesos diodas įsijungia pasiekus nustatytą slenksčio lygį, taip pat įjungia ventiliatorių.

Didesnių ventiliatorių valdymo relės prijungimas

Relės jungiklio ventiliatoriaus valdymas naudojant „Arduino“ temperatūros jutiklį

Ši grandinė atlieka panašią ankstesnės grandinės funkciją, dabar ventiliatorius pakeičiamas relė.

Ši grandinė gali valdyti stalo ventiliatorių, lubų ventiliatorių ar bet kurią kitą įtaisą, kuris gali atvėsinti aplinkos temperatūrą.

Prijungtas prietaisas išsijungia, kai tik temperatūra pasiekia žemiau nustatyto ribinio lygio.

Čia pavaizduota reguliuojamos temperatūros nuolatinės srovės ventiliatoriaus grandinės schema yra tik keletas iš daugelio galimybių. Jūs galite pritaikyti grandinę ir programą savo tikslams.

1 PASTABA: Išvedamas # smeigtukas 7.

2 PASTABA: Ši programa suderinama tik su DHT11 jutikliu.

Pirmiau paaiškintos automatinės temperatūros reguliatoriaus grandinės programa naudojant „Arduino“:

Programos kodas

//--------------------Program developed by R.Girish---------------------//
#include
dht DHT
#define DHTxxPIN A1
int p = A0
int n = A2
int ack
int op = 7
int th = 30 // set thershold tempertaure in Celsius
void setup(){
Serial.begin(9600) // May be removed after testing
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
pinMode(op,OUTPUT)
digitalWrite(op,LOW)
}
void loop()
{
digitalWrite(p,1)
digitalWrite(n,0)
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
// you may remove these lines after testing, from here
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.print(' ')
// To here
if (DHT.temperature>=th)
{
delay(3000)
if(DHT.temperature>=th) digitalWrite(op,HIGH)
}
if(DHT.temperature {
delay(3000)
if(DHT.temperature }
}
if(ack==1)
{
// may be removed after testing from here
Serial.print('NO DATA')
Serial.print(' ')
// To here
digitalWrite(op,LOW)
delay(500)
}
}
//-------------------------Program developed by R.Girish---------------------//

Pastaba: Programoje

int th = 30 // nustatykite slenkstinę temperatūrą Celsijaus laipsniais.

Pakeiskite „30“ norima verte.

Antrasis dizainas

Antrasis žemiau aptartas kontroliuojamos temperatūros nuolatinės srovės ventiliatoriaus grandinės projektas automatiškai pajunta aplinkos temperatūrą ir reguliuoja ventiliatoriaus variklio greitį, kad aplinkos temperatūra būtų kontroliuojama. Šis automatinis apdorojimas atliekamas per „Arduino“ ir temperatūros jutiklį IC LM35.

Autorius:Ankit Negi

MŪSŲ TIKSLAS:

1). Kai tik aplinkos temperatūra pakyla virš 25 laipsnių Celsijaus (šią vertę galite pakeisti programoje pagal savo poreikį, paaiškintą darbo skyriuje), variklis pradeda veikti.

2). Kiekvienu temperatūros pakilimo laipsniu padidėja ir variklio greitis.

3). Variklis dirba didžiausiu greičiu, kai tik temperatūra pakyla iki 40 laipsnių Celsijaus (šią vertę galima pakeisti programoje).

TEMPERATŪROS JUTIKLIS LM35:

Norėdami pasiekti aukščiau paminėtą užduotį, mes naudosime temp. Jutiklis LM35, nes jis naudojamas plačiai ir lengvai prieinamas.

LM35 turi 3 kaiščius, kaip matote paveikslėlyje.

LM35 IC kištukas

1. Vin - šis kaištis yra prijungtas prie nuolatinės srovės maitinimo šaltinio nuo 4 iki 20 V.
2. Vout - šis kaištis suteikia išėjimą įtampos pavidalu.
3. GND - šis kaištis yra prijungtas prie grandinės gndto gnybto.

LM35, kai jis prijungtas prie maitinimo šaltinio, jaučia aplinkos temperatūra ir per savo išvesties kaištį siunčia lygiavertę įtampą pagal temperatūros pakilimą laipsniu.

LM35 gali pajusti bet kokią temp. nuo -50 laipsnių iki +150 laipsnių Celsijaus ir padidina išeigą 10 milivoltų, pakilus 1 laipsnio temperatūrai. Taigi maksimali įtampa, kurią ji gali suteikti, kai išėjimas yra 1,5 voltai.

KODĖL ARDUINO ŠIAM DC ventiliatorių valdiklio projektui?

„Arduino“ turi pakeisti analoginę vertę, gautą iš LM35 išvesties kaiščio, į skaitmeninę ir siunčia atitinkamą skaitmeninę išvestį (PWM) į „mosfet“ pagrindą.

Mes taip pat naudosime arduino komandos spausdinti temperatūrą, atitinkamą analoginę vertę ir skaitmeninę išvestį „mosfet“ serijos „ARDUINO IDE“ monitoriuje.

KOKIA JĖGOS MOSFETO VAIDMUO?

Ši grandinė nebus naudinga, jei ji negalės paleisti didelės srovės variklio. Taigi tokiems varikliams paleisti naudojama „mosfet“ galia.

KODĖL VARTOJAMA DIODA?

Diodas naudojamas apsaugoti „mosfet“ nuo galinės E.M.F, kurią generuoja variklis važiuojant.

PROJEKTO DALYS SĄRAŠAS:

1. LM35

2. ARDUINO

3. MAITINIMO MOSFETAS (IRF1010E)

MAITINIMO MOSFETAS (IRF1010E)

4. DIODAS (1N4007)

DIODA (1N4007)

5. VENTILIATORIUS (variklis)

6. VENTILIATORIŲ MAITINIMAS

APTRAUKIMO DIAGRAMA:

„Arduino“ nuo temperatūros priklausantis nuolatinės srovės ventiliatoriaus valdymas

Prijunkite jungtis, kaip parodyta schemoje.

a) Prijunkite „lm358“ kištuką su „5du“ arduino
b) Prijunkite „lm358“ matavimo kaištį prie „Arduino“ A0
c) Prijunkite lm358 įžeminimo kaištį su „Arduino“ GND
d) Prijunkite „mosfet“ pagrindą prie „Arduino“ PWM kaiščio 10

KODAS:

float x// initialise variables
int y
int z
void setup()
{
pinMode(A0,INPUT) // initialize analog pin A0 as input pin
Serial.begin(9600) // begin serial communication
pinMode(10,OUTPUT) // initialize digital pin 10 as output pin
}
void loop()
{
x=analogRead(A0) // read analog value from sensor's output pin connected to A0 pin
y=(500*x)/1023// conversion of analog value received from sensor to corresponding degree Celsius (*formula explained in working section)
z=map(x,0,1023,0,255) // conversion of analog value to digital value
Serial.print('analog value ')
Serial.print( x) // print analog value from sensor's output pin connected to A0 pin on serial monitor( called 'analog value')
Serial.print(' temperature ')
Serial.print( y) // print the temprature on serial monitor( called 'temprature')
Serial.print(' mapped value ')
Serial.print( z*10) // multiply mapped value by 10 and print it ( called ' mapped value ' )
Serial.println()
delay(1000) // 1 sec delay between each print.
if(y>25)
{analogWrite(10,z*10) // when temp. rises above 25 deg, multiply digital value by 10 and write it on PWM pin 10 ( ** explained in working section)
}
else
{analogWrite(10,0) // in any other case PWM on pin 10 must be 0
}
}

DARBAS (supratimo kodas):

A). KINTAMAS X-

Tai tiesiog analoginė vertė, kurią gauna kaištis Nr. A0 iš LM35 išvesties kaiščio.

B). KINTAMOS IR

Tik dėl šio kintamojo mūsų ventiliatoriaus variklis veikia pagal atitinkamą temperatūrą. Šis kintamasis keičia analoginę vertę, ty kintamąjį x į atitinkamą aplinkos temperatūrą.

Y = (500 * x) / 1023
1. Pirmoji analoginė vertė turi būti pakeista į atitinkamą įtampą, t.y.
1023: 5v
Vadinasi, (5000 milivoltų * x) / 1023 V
2. Dabar mes žinome, kad kiekvienam temperatūros pakilimo laipsniui atitinkama įtampos išvestis padidėja 10 mv, t.
1 laipsnis Celsijaus: 10 milivoltų
Taigi, (5000 milivoltų * x) / (1023 * 10) Laipsnis

C). KINTAMAS Z-

z = žemėlapis (x, 0, 1023, 0,255)
šis kintamasis pakeičia analoginę vertę į skaitmeninę pwm išvesties vertę 10 kaištyje.

PASTABA :: Mes žinome, kad lm35 gali suteikti maksimalią 1,5 voltų įtampą ir tą patį, kai temp. Ar 150 laipsnių. kas nėra praktiška.

Tai reiškia, kad 40 laipsnių Celsijaus atveju gauname 0,40 voltą, o už 25 laipsnius - 0,25 voltus. Kadangi šios „mosfet“ tinkamos pwm vertės yra labai mažos, turime ją padauginti iš koeficiento.

Taigi mes padauginame jį iš 10 ir vietoj šios vertės suteikiame analoginę išvestį PWM kaiščiui 10, t.

** analogWrite (10, z * 10)

Dabar už .25 voltų „mosfet“ gauna 0,25 * 10 = 2,5 voltai

Už 0,40 voltų „mosfet“ gauna 0,40 * 10 = 4 voltus, kai variklis beveik veikia visu greičiu

ATVEJIS 1. Kai temp. Yra mažiau nei 25 laipsnių

Šiuo atveju „arduino“ siunčia 0 PWM įtampą 10 kontaktui, kaip paskutinėje kodo eilutėje

** Kitas
{analogWrite (10,0) // bet kokiu kitu atveju PWM 10 kaištyje turi būti 0
} **

Kadangi pwm įtampa ant „mosfet“ pagrindo yra 0, ji lieka išjungta ir variklis atjungiamas nuo grandinės.

Šiuo atveju žiūrėkite imituotą grandinę.

„Arduino“ ventiliatoriaus valdymo modeliavimas

Kaip matote, temperatūra yra 20 laipsnių

Analoginė vertė = 41
Temperatūra = 20
Susieta vertė = 100

Bet kadangi temperatūra yra mažesnė nei 25 laipsnių, „mosfet“ gauna 0 voltų, kaip parodyta fig. (Nurodytas mėlynu tašku).
ATVEJIS 2. Kai temp. Yra didesnis nei 25 laipsnių

Kai temperatūra pasiekia 25 laipsnius, tada, kaip nurodyta kode, pwm signalas siunčiamas į „mosfet“ pagrindą ir kiekvienam laipsniui pakilus temperatūrai ši PWM įtampa taip pat didėja, t.y.

if(y>25)
{analogWrite(10,z*10)
} which is z* 10.

Šiuo atveju žiūrėkite imituotą grandinę.

Kaip matote, kai temperatūra pakyla nuo 20 laipsnių iki 40 laipsnių, visos trys vertės keičiasi ir esant 40 laipsnių Celsijaus

Analoginė vertė = 82
Temperatūra = 40
Susieta vertė = 200

Kadangi temperatūra yra didesnė nei 25 laipsnių, „mosfet“ gauna atitinkamą PWM įtampą, kaip parodyta paveiksle (pažymėta raudonu tašku).

Taigi variklis pradeda veikti esant 25 laipsniams ir atitinkamai padidėjus temperatūrai laipsniu, pwm įtampa nuo 10 kaiščio iki mosfeto pagrindo taip pat didėja. Taigi variklio greitis didėja tiesiai didėjant temperatūrai ir tampa beveik didžiausias 40 laipsnių Celsijaus metu.

Jei turite daugiau klausimų dėl pirmiau paaiškintos automatinės reguliuojamos temperatūros nuolatinės srovės ventiliatoriaus grandinės, naudojant ventiliatorių ir „Arduino“, visada galite naudoti žemiau esantį komentarų laukelį ir nusiųsti savo mintis mums. Mes bandysime grįžti anksčiausiai.




Pora: Paprasta šaldytuvo apsaugos grandinė Kitas: Kaip suprojektuoti nepertraukiamo maitinimo šaltinio (UPS) grandinę