V tem članku bomo izdelali nekaj preprostih tokokrogov ventilatorjev enosmernega toka, ki temeljijo na Arduinu, ki bodo vklopili ventilator ali druge pripomočke, povezane z njim, ko temperatura okolice doseže vnaprej določeno mejno vrednost. Za ta projekt bomo uporabili senzor DHT11 in arduino.
Pregled
Lepota mikrokrmilnikov je v tem, da imamo zelo natančen nadzor nad zunanjimi napravami, ki so nanj povezane. Pri tem projektu mora uporabnik v program vnesti samo pražno temperaturo, mikrokontroler bo poskrbel za preostanek funkcije.
Po internetu je na voljo ogromno projektov samodejnih regulatorjev temperature, ki ne temeljijo na mikrokrmilniku, na primer z uporabo primerjalnika in tranzistorjev.
So zelo preprosti in delujejo dobro, vendar se težava pojavi med kalibriranjem ravni praga z vnaprej nastavljenim uporom ali potenciometrom.
Med umerjanjem imamo slepo idejo in uporabnik bo morda moral uporabiti metodo poskusov in napak, da bo našel sladko točko.
Te težave odpravljajo mikrokrmilniki, uporabnik mora v tem projektu samo vnesti temperaturo v Celziju, zato ni potrebe po kalibraciji.
Ta projekt se lahko uporablja tam, kjer je treba stabilizirati notranjo temperaturo vezja ali ga prihraniti pred pregrevanjem.
V diagramu 1 kot izhod priključimo ventilator CPU. Ta nastavitev se lahko uporablja za nadzor notranje temperature okolice zaprtega kroga.
Ko je mejna temperatura dosežena, se ventilator vklopi. Ko temperatura pade pod prag temperature, se ventilator izklopi. Torej gre v bistvu za avtomatiziran postopek.
V diagramu 2 smo povezali rele za krmiljenje naprav, ki deluje na omrežno napetost, kot je namizni ventilator.
Ko sobna temperatura doseže mejno temperaturo, se ventilator vklopi in izklopi, ko se prostor ohladi.
To je morda najboljši način za varčevanje z energijo in to je lahko raj za lenuhe, ki želijo, da drugi vklopijo ventilator, ko se počutijo toplo.
Shema vezja, ki prikazuje krmiljenje enosmernega ventilatorja
Ta nastavitev se lahko uporabi za vezja, ki so zaprta v škatli. LED se vklopi, ko doseže prednastavljeni prag, in vklopi tudi ventilator.
Priključitev releja za nadzor večjih ventilatorjev
To vezje deluje podobno kot prejšnje vezje, zdaj je ventilator nadomeščen z relejem.
To vezje lahko krmili namizni ventilator ali stropni ventilator ali kateri koli drug pripomoček, ki lahko ohladi temperaturo okolice.
Priključena naprava se izklopi takoj, ko temperatura doseže pod prednastavljeno mejno vrednostjo.
Shema vezja ventilatorja z enosmernim tokom, prikazana tukaj, je le nekaj številnih možnosti. Vezje in program lahko prilagodite za svoj namen.
OPOMBA 1: #Pin 7 je izhod.
OPOMBA 2: Ta program je združljiv samo s senzorjem DHT11.
Program za zgoraj razloženo vezje samodejnega regulatorja temperature z uporabo Arduina:
Programska koda
Opomba: V programu int th = 30 // nastavimo pražno temperaturo v Celzijah. Zamenjajte '30' z želeno vrednostjo. Drugi dizajn Drugi spodaj obravnavani projekt krogotočnega ventilatorja enosmernega toka samodejno zazna temperaturo okolice in prilagodi hitrost motorja ventilatorja, da ohranja temperaturo okolice pod nadzorom. Ta samodejna obdelava poteka prek Arduina in temperaturnega senzorja IC LM35. Avtor:Ankit Negi 1). Takoj, ko se temperatura okolice poveča nad 25 stopinj Celzija (to vrednost lahko v programu spremenite glede na vaše potrebe, razloženo v delovnem poglavju), motor začne delovati. 2). In z vsako stopnjo dviga temperature se poveča tudi hitrost motorja. 3). Motor zažene pri svoji najvišji hitrosti takoj, ko se temperatura dvigne na 40 stopinj Celzija (to vrednost lahko spremenite v programu). Da bi dosegli zgoraj omenjeno nalogo, bomo uporabili temp. Senzor LM35, saj se uporablja široko in lahko dostopno. LM35 ima 3 nožice, kot lahko vidite na sliki. 1. Vin - ta zatič je povezan z enosmernim napajanjem med 4 in 20 v. LM35, ko je priključen na napajanje, zazna temperatura okolice in pošlje enakovredno napetost v skladu z dvigom temperature na stopinjo skozi svoj izhodni zatič. LM35 lahko zazna katero koli temperaturo. med -50 stopinjami do +150 stopinjami Celzija in poveča moč za 10 milivoltov z 1 stopinjo dviga temperature. Tako je največja napetost, ki jo lahko odda kot izhod, 1,5 volta. Arduino mora spremeniti analogno vrednost, prejeto z izhodnega zatiča LM35, na digitalno vrednost in pošlje ustrezen digitalni izhod (PWM) na bazo MOSFET-a. Uporabili bomo tudi ukazi arduino za tiskanje temperature, ustrezna analogna vrednost in digitalni izhod v MOSFET na serijskem monitorju ARDUINO IDE. To vezje ne bo koristilo, če ne bo mogel zagnati motorja z visokim tokom. Za pogon takšnih motorjev se uporablja močnostni MOSFET. Dioda se uporablja za zaščito MOSFET-a pred zadnjim EMF, ki ga ustvarja motor med tekom. 1. LM35 2. ARDUINO 3. MOČNI MOSFET (IRF1010E) 4. DIODA (1N4007) 5. VENTILATOR (motor) 6. NAPAJANJE VENTILATORJA Vzpostavite povezave, kot je prikazano na vezju a) Priključite vin pin lm358 na 5v arduino A). SPREMENLJIVO X- To je preprosto analogna vrednost, ki jo prejme pin št. A0 z izhodnega zatiča LM35. B). SPREMENLJIVO IN- Samo zaradi te spremenljivke naš motor ventilatorja deluje v skladu z ustrezno temperaturo. Ta spremenljivka naredi tako, da spremeni analogno vrednost, tj. Spremenljivko x, na ustrezno temperaturo okolice. Y = (500 * x) / 1023 C). SPREMENLJIVO Z- z = zemljevid (x, 0, 1023, 0,255) OPOMBA :: Vemo, da lahko lm35 zagotavlja največ 1,5 volta in to tudi pri temp. Je 150 stopinj. kar ni praktično. To pomeni, da za 40 stopinj Celzija dobimo 0,40 volta, za 25 stopinj pa 0,25 volta. Ker so te vrednosti za pravilno pwm na mosfetu zelo nizke, jo moramo pomnožiti s faktorjem. Zato ga pomnožimo z 10 in namesto tega damo to vrednost kot analogni izhod na PWM pin 10, tj. ** analogWrite (10, z * 10) Zdaj za .25 voltov dobi mosfet 0,25 * 10 = 2,5 voltov Za .40 voltov mosfet dobi 0,40 * 10 = 4 volte, pri katerih motor skoraj deluje s polno hitrostjo ZADEVA 1. Ko je temp. Je manj kot 25 stopinj V tem primeru arduino pošlje 0 PWM napetosti na pin 10 kot v zadnji vrstici kode ** sicer Ker je pwm napetost na dnu MOSFET 0, ostane izklopljena in motor se odklopi iz vezja. Glej simulirano vezje v tem primeru. Kot lahko vidite, je temperatura torej 20 stopinj Analogna vrednost = 41 Ker pa je temperatura manjša od 25 stopinj, dobi mosfet 0 voltov, kot je prikazano na sliki (označena z modro piko). Ko temperatura doseže 25 stopinj, se potem, kot je določeno v kodi, signal pwm pošlje na dno mosfet-a in z vsakim dvigom temperature se ta napetost PWM tudi poveča, tj. Glej simulirano vezje v tem primeru. Kot lahko vidite, ko se temperatura poveča od 20 stopinj na vse do 40 stopinj, se vse tri vrednosti spremenijo in pri 40 stopinjah Celzija Analogna vrednost = 82 Ker je temperatura večja od 25 stopinj, dobi mosfet ustrezno napetost PWM, kot je prikazano na sliki (označena z rdečo piko). Zato motor začne delovati pri 25 stopinjah in z ustreznim dvigom temperature na stopinjo se poveča tudi napetost pwm od zatiča 10 do osnove MOSFET-a. Zato se hitrost motorja s povečanjem temperature linearno poveča in postane skoraj največja za 40 stopinj Celzija. Če imate dodatna vprašanja glede zgoraj pojasnjenega avtomatskega vezja enosmernega ventilatorja z regulacijo temperature z uporabo ventilatorja in Arduina, lahko vedno uporabite spodnje polje za komentar in nam pošljete svoje misli. Poskusili se bomo vrniti čim prej.//--------------------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---------------------// NAŠ CILJ:
SENZOR TEMPERATURE LM35:
2. Vout - ta zatič daje izhod v obliki napetosti.
3. GND - ta zatič je povezan z gnd terminalom vezja. ZAKAJ ARDUINO ZA TAJ PROJEKT KRMILNIKA VENTILATORJA DC?
KAKŠNA JE VLOGA MOČNEGA MOSFETA?
ZAKAJ SE UPORABLJA DIODA?
SEZNAM DELOV ZA PROJEKT:
KROG DIAGRAM:
b) Priključite vout pin lm358 na A0 arduino
c) Priključite ozemljitveni zatič lm358 na GND arduina
d) Priključite osnovo MOSFET-a na PWM zatič 10 arduina KODA:
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
}
} DELO (razumevanje kode):
1. Prvo analogno vrednost je treba spremeniti v ustrezno napetost, tj.
1023: 5v
Torej, (5000 milivolt * x) / 1023 V
2. Zdaj vemo, da se za vsako stopnjo povišanja temperature ustrezna izhodna napetost poveča za 10 mv, tj.
1 stopinja Celzija: 10 milivoltov
Torej, (5000 milivolt * x) / (1023 * 10) STOPNJA
ta spremenljivka spremeni analogno vrednost v digitalno vrednost za pwm izhod na pin 10.
{analogWrite (10,0) // v vsakem drugem primeru mora biti PWM na zatiču 10 0
} **
Temperatura = 20
Preslikana vrednost = 100
ZADEVA 2. Ko je temp. Je večja od 25 stopinjif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Temperatura = 40
Preslikana vrednost = 200
Prejšnja: Enostavno zaščitno vezje hladilnika Naprej: Kako oblikovati vezje neprekinjenega napajanja (UPS)