Istosmjerni krugovi ventilatora s kontrolom temperature Arduino

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom ćemo članku izraditi nekoliko jednostavnih krugova automatskog dc ventilatora temeljenih na Arduinu koji će uključiti ventilator ili bilo koji drugi uređaj povezan s njim, kada temperatura okoline dosegne unaprijed određenu razinu praga. Za ovaj ćemo projekt upotrijebiti DHT11 senzor i arduino.

Pregled

Ljepota mikrokontrolera je u tome što dobivamo vrlo preciznu kontrolu nad perifernim uređajima koji su na njega povezani. U ovom projektu korisnik samo treba unijeti prag temperature u program, mikrokontroler će se pobrinuti za ostatak funkcije.



Na internetu je dostupno mnoštvo projekata automatskih regulatora temperature koji se ne temelje na mikrokontroleru, poput upotrebe komparatora i tranzistora.

Vrlo su jednostavni i dobro rade, ali problem nastaje tijekom kalibriranja razine praga pomoću unaprijed postavljenog otpornika ili potenciometra.



Tijekom slijedeće kalibracije imamo slijepu ideju i korisnik će možda morati primijeniti metodu pokušaja i pogrešaka kako bi pronašao slatko mjesto.

Te probleme prevladavaju mikrokontroleri, korisnik samo treba unijeti temperaturu u Celzijusu u ovom projektu, tako da nema potrebe za kalibracijom.

Ovaj se projekt može koristiti tamo gdje treba stabilizirati unutarnju temperaturu kruga ili ga spasiti od pregrijavanja.

U dijagramu 1 povezujemo CPU ventilator kao izlaz. Ova postavka može se koristiti za kontrolu unutarnje temperature okoline zatvorenog kruga.

Kada se dosegne prag temperature, ventilator se uključuje. Kad temperatura padne ispod praga temperature, ventilator se isključuje. Dakle, to je u osnovi automatizirani postupak.

Na dijagramu 2 povezali smo relej za upravljanje uređajima koji rade na mrežnom naponu kao što je stolni ventilator.

Kad sobna temperatura dosegne prag temperature, ventilator se uključuje i isključuje kad se soba ohladi.

Ovo je možda najbolji način za uštedu energije, a ovo može biti raj za lijene ljude koji žele da drugi UKLJUČE ventilator kad im je toplo.

Kružna shema koja prikazuje kontrolu istosmjernog ventilatora

DC kontrola ventilatora za automatsko podešavanje temperature

Ova se postavka može primijeniti za krugove koji su zatvoreni u kutiju. LED se uključuje kad dostigne zadanu razinu praga, a uključuje i ventilator.

Spajanje releja za kontrolu većih ventilatora

Upravljanje ventilatorom prekidača releja pomoću Arduino osjetnika temperature

Ovaj krug radi sličnu funkciju prethodnog kruga, sada je ventilator zamijenjen relejem.

Ovaj krug može kontrolirati stolni ventilator ili stropni ventilator ili bilo koji drugi uređaj koji može ohladiti temperaturu okoline.

Povezani uređaj isključuje se čim temperatura dosegne ispod unaprijed zadane razine praga.

Dijagram kruga istosmjernog ventilatora s regulacijom temperature samo je nekoliko mnogih mogućnosti. Strujni krug i program možete prilagoditi za vlastitu svrhu.

NAPOMENA 1: Izlazi #pin 7.

NAPOMENA 2: Ovaj program kompatibilan je samo s DHT11 senzorom.

Program za gore objašnjeni krug automatskog regulatora temperature pomoću Arduina:

Programski kod

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

Napomena: U programu

int th = 30 // postaviti graničnu temperaturu u Celzijusu.

Zamijenite '30' željenom vrijednošću.

Drugi dizajn

Drugi projekt dc kruga ventilatora s kontroliranom temperaturom o kojem se govori u nastavku automatski prepoznaje temperaturu okoline i prilagođava brzinu motora ventilatora kako bi održavao okolnu temperaturu pod kontrolom. Ova automatska obrada vrši se putem Arduina i temperaturnog senzora IC LM35.

Po:Ankit Negi

NAŠ CILJ:

1). Čim se temperatura okoline poveća iznad 25 Celzijevih stupnjeva (ovu vrijednost možete promijeniti u programu prema svojim potrebama, objašnjeno u radnom odjeljku), motor počinje raditi.

2). I sa svakim stupnjem porasta temperature, povećava se i brzina motora.

3). Motor radi najvećom brzinom čim temperatura poraste na 40 Celzijevih stupnjeva (ovu vrijednost možete promijeniti u programu).

SENZOR TEMPERATURE LM35:

Za postizanje gore spomenutog zadatka koristit ćemo temp. Senzor LM35 jer se koristi široko i lako dostupan.

LM35 ima 3 igle kao što možete vidjeti na slici.

LM35 IC pinout

1. Vin - ovaj je pin priključen na napajanje istosmjerne struje između 4 do 20 v.
2. Vout - ovaj pin daje izlaz u obliku napona.
3. GND - ovaj je pin spojen na gnd stezaljku kruga.

LM35, kad je spojen na napajanje, osjeti temperatura okoline i šalje ekvivalentni napon u skladu s porastom temperature po stupnju kroz svoj izlazni pin.

LM35 može osjetiti bilo koju temperaturu. između -50 stupnjeva do +150 Celzijevih stupnjeva i povećava izlaz za 10 milivolti uz porast temperature za 1 stupanj. Stoga je maksimalni napon koji može dati kao izlaz 1,5 volti.

ZAŠTO ARDUINO ZA OVAJ PROJEKT KONTROLA VENTILATORA DC?

Arduino je potreban za promjenu analogne vrijednosti primljene s izlaznog pina LM35 u digitalnu vrijednost i šalje odgovarajući digitalni izlaz (PWM) na bazu MOSFET-a.

Također ćemo koristiti arduino naredbe za ispis temperature, odgovarajuća analogna vrijednost i digitalni izlaz na MOSFET na serijskom monitoru ARDUINO IDE.

KOJA JE ULOGA SNAGE MOSFET-a?

Ovaj krug neće biti od koristi ako ne može pokretati motor velike jačine struje. Stoga se za pogon takvih motora koristi mrežni mosfet.

ZAŠTO SE KORISTI DIODA?

Dioda se koristi za zaštitu MOSFET-a od stražnjeg E.M.F koje generira motor tijekom rada.

POPIS DIJELOVA ZA PROJEKT:

1. LM35

2. ARDUINO

3. SNAGNI MOSFET (IRF1010E)

SNAGNI MOSFET (IRF1010E)

4. DIODA (1N4007)

DIODA (1N4007)

5. VENTILATOR (motor)

6. NAPAJANJE VENTILATORA

KRUŽNI DIJAGRAM:

Arduino regulacija istosmjernog ventilatora ovisna o temperaturi

Spojite kako je prikazano na shemi spojeva.

a) Spojite vin pin lm358 na 5v arduina
b) Spojite izlazni klin lm358 na A0 arduina
c) Spojite pin za uzemljenje lm358 na GND arduina
d) Spojite bazu MOSFET-a na PWM pin 10 arduina

KODIRATI:

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

RAD (razumijevanje koda):

A). PROMJENJIVO X-

Ovo je jednostavno analogna vrijednost koju prima pin br. A0 s izlaznog pina LM35.

B). PROMJENJIVO I-

Samo zbog ove varijable, naš motor ventilatora radi u skladu s odgovarajućom temperaturom. Ono što ova varijabla čini jest da mijenja analognu vrijednost, tj. Varijablu x na odgovarajuću temperaturu okoline.

Y = (500 * x) / 1023
1. Prva analogna vrijednost mora se promijeniti u odgovarajući napon, tj.
1023: 5v
Dakle, (5000 milivolt * x) / 1023 V
2. Sada znamo da se za svaki stupanj porasta temperature odgovarajući napon povećava za 10 mv, tj.
1 Celzijev stupanj: 10 milivolta
Dakle, (5000 milivolt * x) / (1023 * 10) STEPEN

C). PROMJENJIVO Z-

z = karta (x, 0, 1023, 0,255)
ova varijabla mijenja analognu vrijednost u digitalnu vrijednost za pwm izlaz na pin 10.

BILJEŠKA :: Znamo da lm35 može pružiti maksimalno 1,5 volta i to previše pri temperaturi. Je 150 stupnjeva. što nije praktično.

To znači da za 40 Celzijevih stupnjeva dobivamo 0,40 volta, a za 25 stupnjeva 0,25 volta. Budući da su ove vrijednosti vrlo niske za pravilan pwm na MOSFET-u, moramo ga pomnožiti s faktorom.

Stoga ga množimo s 10 i umjesto toga dajemo tu vrijednost kao analogni izlaz na PWM pin 10 tj.

** analogWrite (10, z * 10)

Sada za 0,25 volta mosfet dobiva 0,25 * 10 = 2,5 volta

Za .40 volti mosfet dobiva 0,40 * 10 = 4 volta pri kojima motor gotovo radi punom brzinom

SLUČAJ 1. Kada je temp. Niži je od 25 stupnjeva

U ovom slučaju arduino šalje 0 PWM napona na pin 10 kao u zadnjem retku koda

** ostalo
{analogWrite (10,0) // u svakom drugom slučaju PWM na pinu 10 mora biti 0
} **

Budući da je napon na bazi MOSF-a 0, on ostaje isključen i motor se odvaja od kruga.

Pogledajte simulirani krug u ovom slučaju.

Simulacija upravljanja ventilatorom Arduino

Kao što vidite, temperatura je dakle 20 stupnjeva

Analogna vrijednost = 41
Temperatura = 20
Mapirana vrijednost = 100

Ali budući da je temperatura manja od 25 stupnjeva, mosfet dobiva 0 volti kao što je prikazano na slici (označeno plavom točkom).
SLUČAJ 2. Kada je temp. Veći je od 25 stupnjeva

Kada temperatura dosegne 25 stupnjeva, tada se, kako je navedeno u kodu, pwm signal šalje na bazu MOSFET-a i sa svakim porastom temperature ovaj PWM napon također raste tj.

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

Pogledajte simulirani krug u ovom slučaju.

Kao što vidite kako se temperatura povećava s 20 stupnjeva na sve do 40 stupnjeva, sve tri vrijednosti se mijenjaju i na 40 Celzijevih stupnjeva

Analogna vrijednost = 82
Temperatura = 40
Mapirana vrijednost = 200

Budući da je temperatura veća od 25 stupnjeva, mosfet dobiva odgovarajući PWM napon kao što je prikazano na slici (označeno crvenom točkom).

Stoga motor počinje raditi na 25 stupnjeva, a s odgovarajućim porastom temperature po stupnju napon pwm od pin 10 do baze MOSFET-a također se povećava. Stoga se brzina motora linearno povećava s porastom temperature i postaje gotovo maksimalna za 40 Celzijevih stupnjeva.

Ako imate dodatnih pitanja u vezi s gore objašnjenim automatskim krugom ventilatora s automatskim nadzorom temperature pomoću ventilatora i Arduina, uvijek možete upotrijebiti polje za komentare u nastavku i svoje nam mišljenje poslati. Pokušat ćemo se vratiti najranije.




Prethodno: Jednostavni zaštitni krug hladnjaka Dalje: Kako dizajnirati krug za neprekidno napajanje (UPS)