Šajā rakstā mēs izveidosim dažas vienkāršas Arduino bāzes automātiskas temperatūras kontrolētas līdzstrāvas ventilatoru shēmas, kas ieslēdz ventilatoru vai citus tam pievienotus sīkrīkus, kad apkārtējā temperatūra sasniegs iepriekš noteiktu sliekšņa līmeni. Šajā projektā mēs izmantosim DHT11 sensoru un arduino.
Pārskats
Mikrokontrolleru skaistums ir tāds, ka mēs iegūstam ļoti precīzu kontroli pār tiem pievienotajām perifērijas ierīcēm. Šajā projektā lietotājam vienkārši jāievada sliekšņa temperatūra programmā, mikrokontrolleris rūpēsies par pārējo funkciju.
Internetā ir pieejami daudzi tādi automātisko temperatūras regulatoru projekti, kuru pamatā nav mikrokontrolleri, piemēram, izmantojot salīdzinātāju un tranzistorus.
Tie ir ļoti vienkārši, un tie darbojas labi, bet problēma rodas, kalibrējot sliekšņa līmeni, izmantojot iepriekš iestatītu rezistoru vai potenciometru.
Mums ir akla ideja, kalibrējot to, un lietotājam, iespējams, būs jāizdara izmēģinājumu un kļūdu metode, lai atrastu saldo vietu.
Šīs problēmas pārvar mikrokontrolleri, lietotājam šajā projektā vienkārši jāievada temperatūra pēc Celsija, tāpēc nav nepieciešama kalibrēšana.
Šo projektu var izmantot, ja ķēdes iekšējā temperatūra ir jāstabilizē vai jāglābj tā no pārkaršanas.
1. diagrammā mēs pievienojam CPU ventilatoru kā izvadi. Šo iestatījumu var izmantot, lai kontrolētu slēgtas ķēdes iekšējo apkārtējās vides temperatūru.
Kad ir sasniegta sliekšņa temperatūra, ventilators ieslēdzas. Kad temperatūra nokrītas zem sliekšņa, ventilators izslēdzas. Tātad tas būtībā ir automatizēts process.
2. diagrammā mēs pievienojām releju ierīču kontrolei, kas darbojas no tīkla sprieguma, piemēram, galda ventilatora.
Kad telpas temperatūra sasniedz sliekšņa temperatūru, ventilators ieslēdzas un izslēdzas, kad istaba atdziest.
Tas var būt labākais enerģijas taupīšanas veids, un tas var būt debess slinkiem cilvēkiem, kuri vēlas citiem ieslēgt ventilatoru, kad viņiem ir silts.
Shēmas shēma, kurā parādīta līdzstrāvas ventilatora vadība
Šo iestatījumu var izvietot ķēdēm, kas ir ievietotas kastē. Gaismas diode ieslēdzas, kad sasniegts iepriekš iestatītais sliekšņa līmenis, un ieslēdz arī ventilatoru.
Releja pievienošana lielāku ventilatoru kontrolei
Šī shēma veic līdzīgu iepriekšējās ķēdes funkciju, tagad ventilators tiek aizstāts ar releju.
Šī shēma var kontrolēt galda vai griestu ventilatoru vai jebkuru citu sīkrīku, kas var atdzist apkārtējās vides temperatūru.
Pievienotā ierīce izslēdzas, tiklīdz temperatūra ir sasniegusi iepriekš iestatīto sliekšņa līmeni.
Šeit ilustrētā līdzstrāvas ventilatora ķēdes shēma ar ierobežotu temperatūru ir tikai dažas no daudzajām iespējām. Jūs varat pielāgot shēmu un programmu saviem mērķiem.
1. PIEZĪME. Tiek izvadīta # piespraude 7.
2. PIEZĪME: Šī programma ir saderīga tikai ar DHT11 sensoru.
Programma iepriekš izskaidrotajai automātiskās temperatūras regulatora ķēdei, izmantojot Arduino:
Programmas kods
Piezīme: Programmā int th = 30 // iestatiet sliekšņa temperatūru pēc Celsija. Nomainiet “30” ar vēlamo vērtību. Otrais dizains Otrais zemāk aplūkotais līdzstrāvas ar regulējamu līdzstrāvas ventilatora ķēdes projekts automātiski nosaka apkārtējās vides temperatūru un pielāgo ventilatora motora ātrumu, lai apkārtējā temperatūra tiktu kontrolēta. Šī automātiskā apstrāde tiek veikta, izmantojot Arduino un temperatūras sensoru IC LM35. Autors:Ankits Negi 1). Tiklīdz apkārtējās vides temperatūra paaugstinās virs 25 grādiem pēc Celsija (šo vērtību programmā varat mainīt atbilstoši savām vajadzībām, kas paskaidrots darba sadaļā), motors sāk darboties. 2). Ar katru temperatūras paaugstināšanās pakāpi palielinās arī motora ātrums. 3). Motors darbojas ar maksimālo ātrumu, tiklīdz temperatūra paaugstinās līdz 40 grādiem pēc Celsija (šo vērtību var mainīt programmā). Lai sasniegtu iepriekš minēto uzdevumu, mēs izmantosim temp. Sensors LM35, jo tas tiek izmantots plaši un viegli pieejams. LM35 ir 3 tapas, kā redzams attēlā. 1. Vin - šī tapa ir pievienota līdzstrāvas avotam no 4 līdz 20 v. LM35, kad tas ir pievienots barošanas avotam, uztver apkārtējās vides temperatūra un caur izejas tapu nosūta līdzvērtīgu spriegumu atbilstoši temperatūras paaugstināšanās pakāpei. LM35 var sajust jebkuru temp. no -50 grādiem līdz +150 grādiem pēc Celsija un palielina jaudu par 10 milivoltiem ar temperatūras paaugstināšanos par 1 grādu. Tādējādi maksimālais spriegums, ko tas var dot kā izeja, ir 1,5 volti. Arduino ir jāmaina analogā vērtība, kas saņemta no LM35 izejas tapas, uz digitālo vērtību un nosūta atbilstošo digitālo izvadi (PWM) uz mosfet bāzi. Mēs arī izmantosim arduino komandas drukāt temperatūru, atbilstoša analogā vērtība un digitālā izeja uz mosfet ARDUINO IDE sērijveida monitorā. Šī ķēde nebūs noderīga, ja tā nevar darbināt lielu strāvas motoru. Tāpēc, lai palaistu šādus motorus, tiek izmantots jauda MOSFET. Diodi izmanto, lai aizsargātu mosfetu no aizmugures E.M.F, ko rada motors, darbojoties. 1. LM35 2. ARDUINO 3. POWER MOSFET (IRF1010E) 4. DIODE (1N4007) 5. FAN (motors) 6. Ventilatora strāvas padeve Veiciet savienojumus, kā parādīts shēmā. a) Pievienojiet lm358 vin tapu ar 5du arduino A). Mainīgais X- Tā ir vienkārši analogā vērtība, kuru saņem pin nr. A0 no LM35 izejas tapas. B). MAINĪGS UN Tikai šī mainīgā lieluma dēļ mūsu ventilatora motors darbojas atbilstoši attiecīgajai temperatūrai. Tas, ko šis mainīgais dara, ir tas, ka tas maina analogo vērtību, t.i., mainīgo x uz atbilstošo apkārtējās vides temperatūru. Y = (500 * x) / 1023 C). Mainīgais Z- z = karte (x, 0, 1023, 0,255) PIEZĪME :: Mēs zinām, ka lm35 var nodrošināt ne vairāk kā 1,5 voltus un arī tad, ja temp. Ir 150 grādi. kas nav praktiski. Tas nozīmē, ka 40 grādiem pēc Celsija mēs iegūstam 0,40 voltus un par 25 grādiem 0,25 voltiem. Tā kā pareizai pwm uz mosfet šīs vērtības ir ļoti zemas, mums tas ir jāreizina ar koeficientu. Tādējādi mēs to reizinām ar 10 un tā vietā piešķiram šo vērtību kā analogo izeju PWM tapai 10, t.i. ** analogWrite (10, z * 10) Tagad par 0,25 voltiem MOSFET saņem 0,25 * 10 = 2,5 volti Par 0,40 voltu mosfet saņem 0,40 * 10 = 4 volti, pie kuriem motors gandrīz darbojas ar pilnu ātrumu LIETA 1. Kad temp. Ir mazāks par 25 grādiem Šajā gadījumā arduino nosūta 0 PWM spriegumu kontaktligzdai 10 tāpat kā pēdējā koda rindā ** cits Tā kā pwm spriegums uz mosfet bāzes ir 0, tas paliek izslēgts un motors tiek atvienots no ķēdes. Šajā gadījumā skatiet simulēto shēmu. Kā redzat, temperatūra ir 20 grādi Analogā vērtība = 41 Bet, tā kā temperatūra ir mazāka par 25 grādiem, mosfet iegūst 0 voltu, kā parādīts attēlā (norādīts ar zilu punktu). Kad temperatūra sasniedz 25 grādus, tad, kā norādīts kodā, pwm signāls tiek nosūtīts uz mosfeta pamatni, un ar katru temperatūras pakāpes pakāpi palielinās arī šis PWM spriegums, t.i. Šajā gadījumā skatiet simulēto shēmu. Kā redzat, temperatūrai paaugstinoties no 20 grādiem līdz 40 grādiem, visas trīs vērtības mainās un pie 40 grādiem pēc Celsija Analogā vērtība = 82 Tā kā temperatūra ir lielāka par 25 grādiem, mosfet iegūst atbilstošu PWM spriegumu, kā parādīts attēlā (norādīts ar sarkanu punktu). Tādējādi motors sāk darboties 25 grādos, un ar atbilstošu temperatūras grādu pieaugumu palielinās arī pwm spriegums no 10. kontakta līdz musfeta pamatnei. Tādējādi motora ātrums palielinās lineāri ar temperatūras paaugstināšanos un kļūst gandrīz maksimāls 40 grādiem pēc Celsija. Ja jums ir kādi jautājumi par iepriekš izskaidroto automātiskās temperatūras kontrolētas līdzstrāvas ventilatora ķēdi, izmantojot ventilatoru un Arduino, jūs vienmēr varat izmantot zemāk esošo komentāru lodziņu un nosūtīt savas domas mums. Mēs centīsimies atgriezties ātrāk.//--------------------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---------------------// MŪSU MĒRĶIS:
TEMPERATŪRAS SENSORS LM35:
2. Vout - šī tapa dod izeju sprieguma formā.
3. GND - šī tapa ir savienota ar ķēdes otro spaili. KĀPĒC ARDUINO ŠAM DC FAN CONTROLLER PROJEKTAM?
KĀDA IR POWER MOSFET LOMA?
KĀPĒC DIODE LIETO?
PROJEKTA DAĻAS:
“ko dara mux
”
APKURES DIAGRAMMA:
b) Pievienojiet lm358 vout tapu ar Arduino A0
c) Pievienojiet lm358 zemes tapu ar Arduino GND
d) Pievienojiet MOSFET pamatni PWM 10. tapai no Arduino KODS:
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
}
} DARBS (izpratnes kods):
1. Pirmā analogā vērtība jāmaina uz atbilstošo spriegumu, t.i.
1023: 5v
Tādējādi (5000 milivolti * x) / 1023 V
2. Tagad mēs zinām, ka katrai temperatūras paaugstināšanās pakāpei atbilstošā sprieguma izeja palielinās par 10 mv, t.i.
1 grāds pēc Celsija: 10 milivolti
Tādējādi (5000 milivoltu * x) / (1023 * 10) GRĀDA
šis mainīgais maina pwm izejas analogo vērtību uz digitālo vērtību 10. tapā.
{analogWrite (10,0) // jebkurā citā gadījumā PWM uz 10. tapas jābūt 0
} **
Temperatūra = 20
Kartētā vērtība = 100
LIETA 2. Kad temp. Ir lielāks par 25 grādiemif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Temperatūra = 40 ° C
Kartētā vērtība = 200
Pāri: Vienkārša ledusskapja aizsargu ķēde Nākamais: Kā izveidot nepārtrauktas barošanas avota (UPS) ķēdi