Ebben a cikkben felépítünk néhány egyszerű Arduino alapú, automatikus hőmérséklet-szabályozású egyenáramú ventilátor áramkört, amelyek bekapcsolják a ventilátort vagy bármely más hozzá csatlakoztatott eszközt, amikor a környezeti hőmérséklet eléri az előre meghatározott küszöbszintet. A DHT11 érzékelőt és az arduino-t fogjuk felhasználni ehhez a projekthez.
Áttekintés
A mikrovezérlők szépsége az, hogy nagyon pontos irányítást kapunk a hozzá kapcsolódó perifériák felett. Ebben a projektben a felhasználónak csak meg kell adnia a küszöbhőmérsékletet a programban, a mikrovezérlő gondoskodik a többi funkcióról.
Rengeteg nem mikrovezérlő alapú automatikus hőmérséklet-szabályozó projekt érhető el az interneten, például komparátor és tranzisztorok használatával.
Nagyon egyszerűek és jól működnek, de a probléma felmerül a küszöbszint kalibrálása során egy előre beállított ellenállással vagy potenciométerrel.
Vak kalkulációnk van a kalibrálás során, és előfordulhat, hogy a felhasználónak próba és hiba módszerrel kell eljárnia az édes pont megtalálásához.
Ezeket a problémákat a mikrovezérlők leküzdik, a felhasználónak csak meg kell adnia a hőmérsékletet Celsius-ban ebben a projektben, így nincs szükség kalibrálásra.
Ez a projekt akkor használható, ahol az áramkör belső hőmérsékletét stabilizálni kell, vagy meg kell menteni azt a túlmelegedéstől.
Az 1. ábrán kimenetként CPU ventilátort csatlakoztatunk. Ez a beállítás használható a zárt áramkör belső környezeti hőmérsékletének szabályozására.
A küszöbérték elérésekor a ventilátor bekapcsol. Amikor a hőmérséklet a küszöbérték alá süllyed, a ventilátor kikapcsol. Tehát alapvetően automatizált folyamatról van szó.
A 2. ábrán egy olyan relét csatlakoztattunk az eszközök vezérléséhez, amelyek hálózati feszültségen működnek, például asztali ventilátorral.
Amikor a helyiség hőmérséklete eléri a küszöbértéket, a ventilátor bekapcsol és kikapcsol, amikor a helyiség lehűl.
Ez lehet a legjobb módja az energiatakarékosságnak, és mennyország lehet a lusta emberek számára, akik azt szeretnék, ha mások meleg állapotban bekapcsolnák a ventilátort.
Áramkör, amely egy egyenáramú ventilátor vezérlést mutat
Ez a beállítás egy dobozba zárt áramkörök számára telepíthető. A LED bekapcsol, amikor eléri az előre beállított küszöbszintet, és bekapcsolja a ventilátort is.
Relé csatlakoztatása nagyobb ventilátorok vezérléséhez
Ez az áramkör az előző áramkör hasonló funkcióját látja el, most a ventilátort relé váltja fel.
Ez az áramkör vezérelheti az asztali ventilátort vagy a mennyezeti ventilátort, vagy bármilyen más eszközt, amely lehűtheti a környezeti hőmérsékletet.
A csatlakoztatott eszköz kikapcsol, amint a hőmérséklet eléri az előre beállított küszöbértéket.
Az itt bemutatott hőmérséklet-szabályozott egyenáramú ventilátor kapcsolási diagramja csak néhány a sok közül. Az áramkört és a programot saját céljaira szabhatja testre.
1. MEGJEGYZÉS: A # 7-es tű kimenet.
2. MEGJEGYZÉS: Ez a program csak a DHT11 érzékelővel kompatibilis.
Program a fent ismertetett automatikus hőmérséklet-szabályozó áramkörhöz Arduino segítségével:
Programkód
Megjegyzés: A programban int th = 30 // állítsa be a küszöbértéket Celsiusban. Cserélje ki a „30” értéket a kívánt értékre. Második tervezés Az alábbiakban tárgyalt második hőmérséklet-vezérelt egyenáramú ventilátor áramkör projekt automatikusan érzékeli a környezeti hőmérsékletet, és úgy állítja be a ventilátor motor fordulatszámát, hogy a környezeti hőmérsékletet szabályozni tudja. Ez az automatikus feldolgozás egy Arduino és egy IC LM35 hőmérséklet-érzékelőn keresztül történik. Által:Ankit Negi 1). Amint a környezet hőmérséklete meghaladja a 25 Celsius-fokot (ezt az értéket a programban megváltoztathatja az igényeinek megfelelően, a munka szakaszban kifejtve), a motor elindul. 2). A hőmérséklet emelkedésének minden fokával a motor sebessége is növekszik. 3). A motor a legnagyobb fordulatszámon jár, amint a hőmérséklet 40 Celsius-fokra emelkedik (ez az érték a programban megváltoztatható). A fent említett feladat eléréséhez a temp. Az LM35 érzékelő, mivel széles körben és könnyen elérhető. Az LM35-nek 3 csapja van, amint az az ábrán látható. 1. Vin - ez a csap 4 - 20 V közötti egyenáramú tápegységhez van csatlakoztatva. Az LM35 tápegységhez csatlakoztatva érzékeli a a környezet hőmérséklete és a kimeneti csapon keresztül egyenértékű feszültséget küld a hőmérséklet fokának emelkedése szerint. Az LM35 bármilyen hőmérsékletet képes érzékelni. -50 fok és +150 Celsius fok között, és 10 millivolttal növeli a kibocsátást 1 fokos hőmérséklet-emelkedéssel. Így a maximális kimeneti feszültség 1,5 volt. Arduino-nak meg kell változtatnia az LM35 kimeneti tűjéből kapott analóg értéket digitális értékre, és elküldi a megfelelő digitális kimenetet (PWM) a mosfet bázisára. Mi is használni fogjuk az arduino parancsot ad a hőmérséklet nyomtatására, megfelelő analóg érték és digitális kimenet a mosfet-hez az ARDUINO IDE soros monitorán. Ez az áramkör nem lesz hasznára, ha nem képes nagy áramú motort működtetni. Ezért ilyen motorok futtatásához a mosfet áramot használják. A diódát a mosfet védelmére használják a motor által futás közben keletkező hátsó E.M.F 1. LM35 2. ARDUINO 3. POWER MOSFET (IRF1010E) 4. DIÓD (1N4007) 5. VENTILÁTOR (motor) 6. VENTILÁTOR TÁPELLÁTÁSA Csatlakoztassa a kapcsolási rajz szerint. a) Csatlakoztassa az lm358 vin tűjét az 5du arduino-hoz A). VÁLTOZHATÓ X- Ez egyszerűen az analóg érték, amelyet a pin sz. A0 az LM35 kimeneti csapjáról. B). VÁLTOZÓ ÉS Csak e változó miatt a ventilátor motorunk a megfelelő hőmérsékletnek megfelelően működik. Ez a változó az, hogy megváltoztatja az analóg értéket, azaz az x változót a környezet megfelelő hőmérsékletére. Y = (500 * x) / 1023 C). VÁLTOZHATÓ Z- z = térkép (x, 0, 1023, 0,255) JEGYZET :: Tudjuk, hogy az lm35 maximum 1,5 volt feszültséget képes biztosítani, és hőmérséklet esetén is. 150 fokos. ami nem praktikus. Ez azt jelenti, hogy 40 Celsius-fok esetén 0,40 V-ot, 25 fok esetén pedig 0,25 V-ot kapunk. Mivel ezek az értékek nagyon alacsonyak a mosfet megfelelő pwm-jéhez, meg kell szorozni egy tényezővel. Ezért megszorozzuk 10-vel, és ehelyett ezt az értéket adjuk analóg kimenetként a PWM 10-es érintkezőhöz, azaz ** analogWrite (10, z * 10) .25 voltért a mosfet 0,25 * 10 = 2,5 voltot kap 0,40 voltért a mosfet 0,40 * 10 = 4 voltot kap, amelynél a motor szinte teljes sebességével jár ESET 1. Amikor a hőm. Kevesebb mint 25 fok Ebben az esetben az arduino 0 PWM feszültséget küld a 10 tűre, mint a kód utolsó sorában ** más Mivel a mosfet alapján a pwm feszültség 0, kikapcsolt állapotban marad, és a motor lekapcsolódik az áramkörről. Ebben az esetben lásd a szimulált áramkört. Mint látható, a hőmérséklet így 20 fok Analóg érték = 41 De mivel a hőmérséklet kevesebb, mint 25 fok, a mosfet 0 voltot kap, amint az az ábrán látható (kék ponttal jelezve). Amikor a hőmérséklet eléri a 25 fokot, akkor a kódban előírtak szerint pwm jelet küld a mosfet bázisára, és minden hőmérsékleti fok emelkedésével ez a PWM feszültség is növekszik, azaz Ebben az esetben lásd a szimulált áramkört. Amint láthatja, ahogy a hőmérséklet 20 fokról 40 fokra emelkedik, mindhárom érték megváltozik és 40 Celsius fokon Analóg érték = 82 Mivel a hőmérséklet meghaladja a 25 fokot, ezért a mosfet megkapja a megfelelő PWM feszültséget, amint az az ábrán látható (piros ponttal jelölve). Ezért a motor 25 fokon kezd működni, és a hőmérsékletenkénti hőmérsékleti emelkedésnek megfelelően a pwm feszültség is nő a 10 tűtől a mosfet alapjáig. Ennélfogva a motor sebessége lineárisan növekszik a hőmérséklet növekedésével, és 40 Celsius-fokon szinte maximális lesz. Ha bármilyen további kérdése van a fentiekben ismertetett automatikus hőmérséklet-szabályozású egyenáramú ventilátor áramkörrel a ventilátor és az Arduino használatával, akkor bármikor használhatja az alábbi megjegyzésmezőt, és elküldheti nekünk gondolatait. Legkorábban megpróbálunk visszatérni.//--------------------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---------------------// CÉLUNK:
LM35 HŐMÉRSÉKLET-ÉRZÉKELŐ:
2. Vout - ez a tű feszültség formájában adja a kimenetet.
3. GND - ez a tüske csatlakozik az áramkör második kapcsaihoz. MIÉRT ARDUINO EZT A FAN VENTILÁTOR VEZÉRLŐ PROJEKTJÉHEZ?
MI A POWER MOSFET SZEREPE?
MIÉRT HASZNÁLJÁK A DIODÁT?
A PROJEKT ALKALMAZÁSA:
KÖRDIAGRAMM:
b) Csatlakoztassa az lm358 vout tűjét az arduino A0-jához
c) Csatlakoztassa az lm358 földelőcsapját az Arduino GND-jéhez
d) Csatlakoztassa a mosfet alapját az arduino PWM 10. tűjéhez KÓD:
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
}
} MUNKÁK (kód megértése):
1. Az első analóg értéket meg kell változtatni a megfelelő feszültségre, azaz
1023: 5v
Ezért (5000 millivolt * x) / 1023 V
2. Most már tudjuk, hogy a hőmérséklet minden fokának emelkedése esetén a megfelelő feszültség kimenet 10 mv-mal nő, azaz
1 Celsius-fok: 10 millivolt
Ezért (5000 millivolt * x) / (1023 * 10) FOK
ez a változó a 10. érintkező pwm kimenetének analóg értékét digitális értékre változtatja.
{analWrite (10,0) // minden más esetben a PWM-nek a 10. tűn 0-nak kell lennie
} **
Hőmérséklet = 20 ° C
Feltérképezett érték = 100
ESET 2. Amikor a hőm. 25 foknál nagyobbif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Hőmérséklet = 40 ° C
Feltérképezett érték = 200
Előző: Egyszerű hűtőszekrény védő áramkör Következő: Hogyan tervezzünk szünetmentes tápegységet (UPS)