I denne artikel skal vi konstruere et par enkle Arduino-baserede automatiske temperaturstyrede jævnstrømsventilatorkredsløb, der tænder for en ventilator eller andre gadgets, der er forbundet til den, når den omgivende temperatur når et forudbestemt tærskelniveau. Vi skal bruge DHT11-sensor og arduino til dette projekt.
Oversigt
Skønheden ved mikrokontrollere er, at vi får meget præcis kontrol over de perifere enheder, der er forbundet til den. I dette projekt skal brugeren bare indtaste tærskeltemperaturen i programmet, mikrocontrolleren tager sig af resten af funktionen.
Der er masser af ikke-mikrocontroller-baserede automatiske temperaturregulatorprojekter tilgængelige over internettet, såsom brug af komparator og transistorer.
De er meget enkle, og de fungerer godt, men problemet opstår under kalibrering af tærskelniveauet ved hjælp af forudindstillet modstand eller potentiometer.
Vi har en blind idé, mens vi kalibrerer den, og brugeren skal muligvis udføre prøve- og fejlmetode for at finde den søde plet.
Disse problemer overvindes af mikrokontroller, brugeren skal bare indtaste temperaturen i Celsius i dette projekt, så der er ikke behov for kalibrering.
Dette projekt kan bruges, hvor den interne temperatur i kredsløbet skal stabiliseres eller redde den fra overophedning.
I diagram 1 forbinder vi en CPU-blæser som output. Denne opsætning kan bruges til at kontrollere den interne omgivelsestemperatur i et lukket kredsløb.
Når tærskelstemperaturen er nået, tænder blæseren. Når temperaturen går under tærskelværdien, slukkes ventilatoren. Så det er dybest set en automatiseret proces.
I diagram 2 tilsluttede vi et relæ til styring af enheder, der kører på netspænding såsom bordvifte.
Når stuetemperaturen når tærskelværdien, tænder ventilatoren og slukker, når rummet køler af.
Dette kan være den bedste måde at spare strøm på, og dette kan være himlen for dovne mennesker, der ønsker andre at tænde for blæseren, når de føler sig varme.
Kredsløbsdiagram, der viser en DC-ventilatorstyring
Denne opsætning kan implementeres til kredsløb, der er lukket i en kasse. LED'en tændes, når det forudindstillede tærskelniveau er nået, og tænder også for blæseren.
Tilslutning af et relæ til styring af større ventilatorer
Dette kredsløb har den samme funktion som det tidligere kredsløb, nu udskiftes blæseren med relæ.
Dette kredsløb kan styre en bordventilator eller loftsventilator eller enhver anden gadget, der kan afkøle den omgivende temperatur.
Den tilsluttede enhed slukkes, så snart temperaturen er nået under det forudindstillede tærskelniveau.
Det temperaturstyrede DC-blæserkredsløbsdiagram, der er illustreret her, er kun få af mange muligheder. Du kan tilpasse kredsløbet og programmet til dit eget formål.
BEMÆRK 1: #Pin 7 er output.
BEMÆRK 2: Dette program er kun kompatibelt med DHT11-sensoren.
Program til ovenstående forklarede automatiske temperaturregulator kredsløb ved hjælp af Arduino:
Programkode
Bemærk: I programmet int th = 30 // indstil tærskeltemperaturen i Celsius. Udskift “30” med den ønskede værdi. Andet design Det andet temperaturstyrede jævnstrømsventilator kredsløbsprojekt beskrevet nedenfor registrerer automatisk omgivelsestemperaturen og justerer blæsermotorens hastighed for at holde den omgivende temperatur under kontrol. Denne automatiske behandling sker gennem en Arduino og en temperaturføler IC LM35. Ved:Ankit Negi 1). Så snart temperaturen i omgivelserne stiger ud over 25 grader Celsius (du kan ændre denne værdi i programmet efter dit behov, forklaret i arbejdssektionen), starter motoren. 2). Og med hver grad af temperaturstigning øges motorens hastighed også. 3). Motoren kører med sin maksimale hastighed, så snart temperaturen stiger til 40 grader Celsius (denne værdi kan ændres i programmet). For at opnå den ovennævnte opgave skal vi bruge temp. Sensor LM35, da den bruges bredt og let tilgængelig. LM35 har 3 ben som du kan se på figuren. 1. Vin - denne pin er tilsluttet jævnstrømforsyning mellem 4 og 20 v. LM35, når den er tilsluttet strømforsyningen, registrerer omgivelsernes temperatur og sender ækvivalent spænding i overensstemmelse med temperaturstigningen pr. grad gennem sin udgangsstift. LM35 kan mærke ethvert temp. mellem -50 grader til +150 grader Celsius og øger produktionen med 10 millivolt med 1 grad temperaturstigning. Den maksimale spænding, den kan give, da output er 1,5 volt. Arduino er påkrævet for at ændre den analoge værdi, der modtages fra output pin på LM35 til digital værdi og sender den tilsvarende digitale output (PWM) til basen af mosfet. Vi vil også bruge arduino kommandoer til udskrivningstemperatur, tilsvarende analog værdi og digital output til mosfet på seriel skærm af ARDUINO IDE. Dette kredsløb er til ingen nytte, hvis det ikke kan køre motor med høj strøm. Derfor bruges strøm til mosfet til at køre sådanne motorer. Diode bruges til at beskytte mosfet mod den bageste E.M.F genereret af motoren under kørsel. 1. LM35 2. ARDUINO 3. POWER MOSFET (IRF1010E) 4. DIODE (1N4007) 5. FAN (motor) 6. FORSYNING MED VENTILATORER Foretag forbindelser som vist i kredsløbsdiagrammet. a) Tilslut vin-stift af lm358 til 5v af arduino EN). VARIABEL X- Dette er simpelthen den analoge værdi, der modtages med pin nr. A0 fra udgangsstiften på LM35. B). VARIABEL OG- Kun på grund af denne variabel kører vores blæsermotor i overensstemmelse med den tilsvarende temperatur. Hvad denne variabel gør, er at den ændrer den analoge værdi, dvs. variabel x til den tilsvarende temperatur i omgivelserne. Y = (500 * x) / 1023 C). VARIABEL Z- z = kort (x, 0, 1023, 0,255) BEMÆRK :: Vi ved, at lm35 kan levere maksimalt 1,5 volt, og det også når temp. Er 150 grader. hvilket ikke er praktisk. Dette betyder, at for 40 grader Celsius får vi 0,40 volt og for 25 grader får vi 0,25 volt. Da disse værdier er meget lave for korrekt pwm på mosfet, er vi nødt til at gange det med en faktor. Derfor multiplicerer vi det med 10 og giver i stedet denne værdi som analog udgang til PWM pin 10, dvs. ** analogWrite (10, z * 10) Nu, for .25 volt får mosfet 0,25 * 10 = 2,5 volt For .40 volt får mosfet 0,40 * 10 = 4 volt, hvor motoren næsten kører med sin fulde hastighed SAG 1. Når temp. Er mindre end 25 grader I dette tilfælde sender arduino 0 PWM spænding til pin 10 som i den sidste linje kode ** ellers Da pwm-spænding på bunden af mosfet er 0, forbliver den slukket, og motoren kobles fra kredsløbet. Se simuleret kredsløb i dette tilfælde. Som du kan se, er temperaturen 20 grader Analog værdi = 41 Men da temp er mindre end 25 grader, får mosfet 0 volt som vist i fig (angivet med blå prik). Når temperaturen når 25 grader, sendes som specificeret i koden pwm-signal til basen af mosfet, og med hver grad stigning i temperatur stiger også denne PWM-spænding, dvs. Se simuleret kredsløb i dette tilfælde. Som du kan se, når temperaturen stiger fra 20 grader til hele 40 grader, ændres alle tre værdier og ved 40 grader Celsius Analog værdi = 82 Da temp er større end 25 grader, får mosfet tilsvarende PWM-spænding som vist i fig (angivet med rød prik). Derfor begynder motoren at køre ved 25 grader, og med tilsvarende stigning i temperaturen pr. Grad øges pwm spænding fra ben 10 til bunden af mosfet også. Derfor øges motorhastigheden lineært med temperaturstigningen og bliver næsten maksimal i 40 grader Celsius. Hvis du har yderligere spørgsmål vedrørende ovennævnte forklarede automatiske temperaturstyrede jævnstrømsventilator kredsløb ved hjælp af blæser og Arduino, kan du altid bruge kommentarfeltet nedenfor og sende dine tanker til os. Vi vil tidligst prøve at komme tilbage.//--------------------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---------------------// VORES MÅL:
TEMPERATURSENSOR LM35:
2. Vout - denne pin giver output i form af spænding.
3. GND - denne pin er forbundet til GND terminal på kredsløbet. HVORFOR ARDUINO TIL DETTE DC-VENTILATORPROJEKT?
HVAD ER ROLEN FOR STRØMMOSFET?
HVORFOR ANVENDES DIODE?
DELELISTE TIL PROJEKTET:
KREDSLØBSDIAGRAM:
b) Tilslut vout-stift på lm358 til A0 i arduino
c) Tilslut jordstiften på lm358 til GND på arduino
d) Forbind mosfets bund til PWM-pin 10 i arduino KODE:
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
}
} ARBEJDE (forståelse af kode):
1. Første analoge værdi skal ændres til tilsvarende spænding, dvs.
1023: 5v
Derfor (5000 millivolt * x) / 1023 V.
2. Nu ved vi, at for hver grad stigning i temperatur stiger den tilsvarende spændingsoutput med 10 mv, dvs.
1 grad Celsius: 10 millivolt
Derfor (5000 millivolt * x) / (1023 * 10) GRAD
denne variabel ændrer den analoge værdi til digital værdi for pwm-output på pin 10.
{analogWrite (10,0) // i ethvert andet tilfælde skal PWM på pin 10 være 0
} **
Temperatur = 20
Kortlagt værdi = 100
SAG 2. Når temp. Er større end 25 graderif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Temperatur = 40
Kortlagt værdi = 200
Forrige: Enkel køleskabsbeskyttelseskreds Næste: Sådan designer du et UPS-kredsløb uden afbrydelig strømforsyning