Circuite ventilator DC controlate de temperatură Arduino

Circuite ventilator DC controlate de temperatură Arduino

În acest articol vom construi câteva circuite simple de ventilator de curent continuu cu control automat de temperatură bazate pe Arduino, care vor porni un ventilator sau orice alte gadgeturi conectate la acesta, când temperatura ambiantă atinge un nivel prag predeterminat. Vom folosi senzorul DHT11 și arduino pentru acest proiect.



Prezentare generală

Frumusețea microcontrolerelor este că obținem un control foarte precis asupra perifericelor conectate la acesta. În acest proiect, utilizatorul trebuie doar să introducă temperatura pragului în program, microcontrolerul se va ocupa de restul funcției.

Există o mulțime de proiecte de control automat de temperatură care nu sunt bazate pe microcontrolere, disponibile pe internet, cum ar fi utilizarea comparatorului și a tranzistoarelor.





Sunt foarte simple și funcționează bine, dar problema apare în timp ce calibrăm nivelul pragului folosind rezistor presetat sau potențiometru.

Avem o idee oarbă în timp ce o calibrăm și este posibil ca utilizatorul să fie nevoit să facă o metodă de încercare și eroare pentru a găsi locul dulce.



Aceste probleme sunt depășite de microcontrolere, utilizatorul trebuie doar să introducă temperatura în grade Celsius în acest proiect, deci nu este nevoie de calibrare.

Acest proiect poate fi utilizat în cazul în care temperatura internă a circuitului trebuie stabilizată sau salvându-l de la supraîncălzire.

În diagrama 1, conectăm un ventilator CPU ca ieșire. Această configurare poate fi utilizată pentru a controla temperatura ambientală internă a unui circuit închis.

Când temperatura pragului este atinsă, ventilatorul pornește. Când temperatura scade sub prag, temperatura ventilatorului se oprește. Deci, este practic un proces automat.

În diagrama 2, am conectat un releu pentru controlul dispozitivelor care funcționează pe tensiune de rețea, cum ar fi ventilatorul de masă.

Când temperatura camerei atinge pragul de temperatură, ventilatorul pornește și se oprește când camera se răcește.

Acesta poate fi cel mai bun mod de a economisi energie și acesta poate fi un paradis pentru persoanele leneșe care doresc ca alții să pornească ventilatorul atunci când se simt calde.

Diagrama circuitului care arată un control al ventilatorului DC

Control ventilator DC pentru reglarea automată a temperaturii

Această configurare poate fi implementată pentru circuite care sunt închise într-o cutie. LED-ul se aprinde la atingerea nivelului pragului presetat și, de asemenea, pornește ventilatorul.

Conectarea unui releu pentru controlul ventilatoarelor mai mari

Comutator releu control ventilator folosind senzorul de temperatură Arduino

Acest circuit îndeplinește funcția similară a circuitului anterior, acum ventilatorul este înlocuit cu releu.

Acest circuit poate controla un ventilator de masă sau un ventilator de tavan sau orice alt dispozitiv care poate răci temperatura ambiantă.

Dispozitivul conectat se oprește imediat ce temperatura a atins sub nivelul pragului prestabilit.

Diagrama circuitului ventilatorului continuu cu temperatură controlată ilustrată aici sunt doar câteva dintre multele posibilități. Puteți personaliza circuitul și programul pentru propriul scop.

NOTĂ 1: #Pin 7 este afișat.

NOTĂ 2: Acest program este compatibil numai cu senzorul DHT11.

Program pentru circuitul automat de reglare a temperaturii explicat mai sus folosind Arduino:

Codul programului

//--------------------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---------------------//

Notă: În program

int th = 30 // setați temperatura pragului în Celsius.

Înlocuiți „30” cu valoarea dorită.

Al doilea design

Al doilea proiect al circuitului ventilatorului de curent continuu controlat de temperatură, discutat mai jos, detectează automat temperatura ambiantă și reglează viteza motorului ventilatorului pentru a menține temperatura înconjurătoare sub control. Această procesare automată se face printr-un Arduino și un senzor de temperatură IC LM35.

De:Ankit Negi

OBIECTIVUL NOSTRU:

1). De îndată ce temperatura mediului înconjurător crește peste 25 de grade Celsius (puteți modifica această valoare în program în funcție de nevoile dvs., explicate în secțiunea de lucru) motorul pornește să funcționeze.

2). Și cu fiecare grad de creștere a temperaturii, viteza motorului crește, de asemenea.

3). Motorul funcționează la viteza maximă de îndată ce temperatura crește la 40 de grade Celsius (această valoare poate fi modificată în program).

SENZOR DE TEMPERATURĂ LM35:

Pentru a îndeplini sarcina menționată mai sus, vom folosi temp. Senzorul LM35, deoarece este utilizat pe scară largă și ușor disponibil.

LM35 are 3 pini, după cum puteți vedea în figură.

Pinout IC LM35

1. Vin - acest pin este conectat la sursa de curent continuu între 4 și 20 v.
2. Vout - acest pin dă ieșire sub formă de tensiune.
3. GND - acest pin este conectat la terminalul gnd al circuitului.

LM35, atunci când este conectat la sursa de alimentare detectează temperatura mediului înconjurător și trimite o tensiune echivalentă în conformitate cu creșterea temperaturii pe grad prin pinul de ieșire.

LM35 poate simți orice temperatură. între -50 grade până la +150 grade Celsius și crește puterea cu 10 milivolți cu creșterea temperaturii cu 1 grad. Astfel tensiunea maximă pe care o poate da ca ieșire este de 1,5 volți.

DE CE ARDUINO PENTRU ACEST PROIECT DC CONTROLER FAN?

Arduino este obligat să schimbe valoarea analogică primită de la pinul de ieșire al LM35 la valoarea digitală și trimite ieșirea digitală corespunzătoare (PWM) la baza Mosfet.

Vom folosi, de asemenea comenzi arduino pentru a imprima temperatura, valoarea analogică corespunzătoare și ieșirea digitală la MOSFET pe monitorul serial al IDE ARDUINO.

CARE ESTE ROLUL MOSFETULUI DE PUTERE?

Acest circuit nu va fi util dacă nu poate funcționa cu motor cu curent mare. Prin urmare, pentru a rula astfel de motoare se folosește mosfet.

DE CE SE UTILIZEAZĂ DIODA?

Dioda este utilizată pentru a proteja mosfet-ul de spatele E.M.F generat de motor în timpul funcționării.

LISTA PIESELOR PENTRU PROIECT:

1. LM35

2. ARDUINO

3. MOSFET DE PUTERE (IRF1010E)

MOSFET PUTERE (IRF1010E)

4. DIODĂ (1N4007)

DIODĂ (1N4007)

5. VENTILATOR (motor)

6. SURSA DE ALIMENTARE A VENTILATORULUI

DIAGRAMA CIRCUITULUI:

Controlul ventilatorului DC dependent de temperatura Arduino

Efectuați conexiunile așa cum se arată în schema de circuit.

a) Conectați pinul vin de lm358 la 5v de arduino
b) Conectați pinul vout al lm358 la A0 al arduino
c) Conectați pinul de masă al lm358 la GND al arduino
d) Conectați baza Mosfet la pinul PWM 10 al arduino

COD:

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
}
}

FUNCȚIONARE (înțelegerea codului):

A). VARIABLE X-

Aceasta este pur și simplu valoarea analogică primită de pinul nr. A0 de la pinul de ieșire al LM35.

B). VARIABILĂ ȘI-

Datorită numai acestei variabile, motorul ventilatorului nostru funcționează în conformitate cu temperatura corespunzătoare. Ceea ce face această variabilă este că schimbă valoarea analogică, adică variabila x la temperatura corespunzătoare a mediului înconjurător.

Y = (500 * x) / 1023
1. Prima valoare analogică trebuie schimbată la tensiunea corespunzătoare, adică
1023: 5v
Prin urmare, (5000 milivolți * x) / 1023 V
2. Acum știm că pentru fiecare grad de creștere a temperaturii ieșirea tensiunii corespunzătoare crește cu 10 mv adică
1 grad Celsius: 10 milivolți
Prin urmare, (5000 milivolți * x) / (1023 * 10) GRAD

C). VARIABILĂ Z-

z = hartă (x, 0, 1023, 0,255)
această variabilă modifică valoarea analogică la valoarea digitală pentru ieșirea pwm pe pinul 10.

NOTĂ :: Știm că lm35 poate oferi maxim 1,5 volți și că și atunci când temperatura. Are 150 de grade. ceea ce nu este practic.

Aceasta înseamnă că pentru 40 de grade Celsius obținem 0,40 volți și pentru 25 de grade obținem 0,25 volți. Deoarece aceste valori sunt foarte scăzute pentru un pwm adecvat pe mosfet, trebuie să-l înmulțim cu un factor.

Prin urmare, o înmulțim cu 10 și, în schimb, dăm această valoare ca ieșire analogică pinului PWM 10, adică

** analogWrite (10, z * 10)

Acum, pentru .25 volți, Mosfet obține 0,25 * 10 = 2,5 volți

Pentru .40 volți, Mosfet obține 0,40 * 10 = 4 volți la care motorul funcționează aproape la viteza maximă

CAZ 1. Când temp. Are mai puțin de 25 de grade

În acest caz, arduino trimite 0 tensiune PWM la pinul 10 ca în ultima linie de cod

** altfel
{analogWrite (10,0) // în orice alt caz PWM pe pinul 10 trebuie să fie 0
} **

Deoarece tensiunea PWM pe baza Mosfet este 0, aceasta rămâne oprită și motorul se deconectează de la circuit.

Vezi circuitul simulat în acest caz.

Simularea controlului ventilatorului Arduino

După cum puteți vedea, temperatura este de 20 de grade, prin urmare

Valoare analogică = 41
Temperatura = 20
Valoare mapată = 100

Dar, din moment ce temperatura este mai mică de 25 de grade, prin urmare, Mosfet devine 0 volți, așa cum se arată în fig (indicat prin punct albastru).
CAZUL 2. Când temp. Este mai mare de 25 de grade

Când temperatura atinge 25 de grade, atunci așa cum se specifică în cod, semnalul pwm este trimis la baza mosfetului și cu fiecare creștere a temperaturii de grad, această tensiune PWM crește, de asemenea, adică

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

Vezi circuitul simulat în acest caz.

După cum puteți vedea, pe măsură ce temperatura crește de la 20 de grade până la 40 de grade, toate cele trei valori se schimbă și la 40 de grade Celsius

Valoare analogică = 82
Temperatura = 40
Valoare mapată = 200

Deoarece temperatura este mai mare de 25 de grade, prin urmare, Mosfet obține tensiunea PWM corespunzătoare, așa cum se arată în fig (indicat prin punct roșu).

Prin urmare, motorul începe să funcționeze la 25 de grade și cu creșterea corespunzătoare a temperaturii pe grad de tensiune pwm de la pinul 10 la baza mosfetului crește, de asemenea. Prin urmare, viteza motorului crește liniar odată cu creșterea temperaturii și devine aproape maximă pentru 40 de grade Celsius.

Dacă aveți orice întrebări suplimentare cu privire la circuitul automat al ventilatorului de curent continuu explicat mai sus, utilizând ventilatorul și Arduino, puteți folosi întotdeauna caseta de comentarii de mai jos și ne puteți trimite gândurile. Vom încerca să revenim cât mai devreme.




Precedent: Circuit simplu de protecție a frigiderului Următorul: Cum să proiectați un circuit de alimentare neîntreruptibilă (UPS)