W tym artykule zamierzamy zbudować kilka prostych obwodów wentylatorów prądu stałego z automatyczną regulacją temperatury, opartych na Arduino, które włączą wentylator lub inne podłączone do niego gadżety, gdy temperatura otoczenia osiągnie ustalony poziom progowy. W tym projekcie wykorzystamy czujnik DHT11 i arduino.
Przegląd
Piękno mikrokontrolerów polega na tym, że uzyskujemy bardzo precyzyjną kontrolę nad podłączonymi do niego urządzeniami peryferyjnymi. W tym projekcie wystarczy wpisać w programie temperaturę progową, resztą funkcji zajmie się mikrokontroler.
W Internecie dostępnych jest mnóstwo projektów automatycznych regulatorów temperatury innych niż mikrokontrolery, takich jak komparator i tranzystory.
Są bardzo proste i działają dobrze, ale problem pojawia się podczas kalibracji poziomu progu za pomocą wstępnie ustawionego rezystora lub potencjometru.
Podczas kalibracji mamy ślepy pomysł, a użytkownik może potrzebować metody prób i błędów, aby znaleźć optymalny punkt.
Te problemy są przezwyciężane przez mikrokontrolery, wystarczy w tym projekcie wprowadzić temperaturę w stopniach Celsjusza, więc nie ma potrzeby kalibracji.
Projekt ten można wykorzystać tam, gdzie konieczna jest stabilizacja temperatury wewnętrznej obwodu lub uchronienie go przed przegrzaniem.
Na schemacie 1 podłączamy wentylator procesora jako wyjście. Ta konfiguracja może być używana do kontrolowania wewnętrznej temperatury otoczenia zamkniętego obwodu.
Po osiągnięciu temperatury progowej włącza się wentylator. Gdy temperatura spadnie poniżej temperatury progowej, wentylator wyłącza się. Jest to więc zasadniczo zautomatyzowany proces.
Na schemacie 2 podłączyliśmy przekaźnik do sterowania urządzeniami zasilanymi napięciem sieciowym, takim jak wentylator stołowy.
Kiedy temperatura w pomieszczeniu osiągnie temperaturę progową, wentylator włącza się i wyłącza po ochłodzeniu pomieszczenia.
To może być najlepszy sposób na oszczędzanie energii i może to być raj dla leniwych ludzi, którzy chcą, aby inni włączali wentylator, gdy jest im ciepło.
Schemat obwodu pokazujący sterowanie wentylatorem na prąd stały
Ta konfiguracja może być zastosowana dla obwodów, które są zamknięte w pudełku. Dioda zapala się, gdy osiągnięty zostanie ustawiony poziom progowy, a także WŁĄCZA wentylator.
Podłączanie przekaźnika do sterowania większymi wentylatorami
Ten obwód spełnia podobną funkcję co poprzedni obwód, teraz wentylator jest zastąpiony przekaźnikiem.
Ten obwód może sterować wentylatorem stołowym lub sufitowym lub innym gadżetem, który może obniżyć temperaturę otoczenia.
Podłączone urządzenie wyłącza się, gdy temperatura spadnie poniżej ustawionego progu.
Przedstawiony tutaj schemat obwodu wentylatora prądu stałego z regulacją temperatury to tylko kilka z wielu możliwości. Możesz dostosować obwód i program do własnych celów.
UWAGA 1: wyprowadzany jest #Pin 7.
UWAGA 2: Ten program jest kompatybilny tylko z czujnikiem DHT11.
Program dla opisanego powyżej obwodu automatycznego regulatora temperatury z wykorzystaniem Arduino:
Kod programu
Uwaga: w programie int th = 30 // ustaw temperaturę progową w stopniach Celsjusza. Zastąp „30” żądaną wartością. Drugi projekt Drugi projekt obwodu wentylatora prądu stałego z regulacją temperatury, omówiony poniżej, automatycznie wykrywa temperaturę otoczenia i dostosowuje prędkość silnika wentylatora, aby utrzymać temperaturę otoczenia pod kontrolą. To automatyczne przetwarzanie odbywa się za pośrednictwem Arduino i czujnika temperatury IC LM35. Przez:Ankit Negi 1). Gdy tylko temperatura otoczenia wzrośnie powyżej 25 stopni Celsjusza (można zmienić tę wartość w programie według potrzeb, wyjaśnione w części dotyczącej pracy) silnik zaczyna pracować. 2). Z każdym stopniem wzrostu temperatury wzrasta również prędkość silnika. 3). Silnik pracuje z maksymalną prędkością, gdy temperatura wzrośnie do 40 stopni Celsjusza (wartość tę można zmienić w programie). Aby wykonać powyższe zadanie, użyjemy temp. Czujnik LM35, ponieważ jest szeroko stosowany i łatwo dostępny. LM35 ma 3 piny, jak widać na rysunku. 1. Vin - ten pin jest podłączony do zasilania prądem stałym o napięciu od 4 do 20 V. LM35 po podłączeniu do zasilania wykrywa temperatura otoczenia i wysyła równoważne napięcie zgodnie ze wzrostem temperatury na stopień przez swój pin wyjściowy. LM35 może wykryć dowolną temp. od -50 stopni do +150 stopni Celsjusza i zwiększa moc wyjściową o 10 miliwoltów przy wzroście temperatury o 1 stopień. Zatem maksymalne napięcie, jakie może dać na wyjściu, wynosi 1,5 wolta. Arduino jest wymagane, aby zmienić wartość analogową otrzymaną z pinu wyjściowego LM35 na wartość cyfrową i wysłać odpowiednie wyjście cyfrowe (PWM) do bazy mosfet. Użyjemy również polecenia arduino do drukowania temperatury, odpowiednia wartość analogowa i wyjście cyfrowe do mosfetu na monitorze szeregowym ARDUINO IDE. Obwód ten będzie bezużyteczny, jeśli nie będzie mógł uruchomić silnika wysokoprądowego. Stąd do uruchamiania takich silników stosowany jest mosfet mocy. Dioda służy do ochrony mosfetu z tylnej części E.M.F generowanej przez silnik podczas pracy. 1. LM35 2. ARDUINO 3. MOSFET MOCY (IRF1010E) 4. DIODA (1N4007) 5. WENTYLATOR (silnik) 6. ZASILANIE WENTYLATORA Wykonaj połączenia zgodnie ze schematem połączeń. a) Podłącz pin vin lm358 do 5v arduino ZA). ZMIENNA X- To jest po prostu wartość analogowa, którą otrzymuje pin nr. A0 z pinu wyjściowego LM35. B). ZMIENNE I- Tylko z powodu tej zmiennej nasz silnik wentylatora pracuje zgodnie z odpowiednią temperaturą. Zmienna ta zmienia wartość analogową, tj. Zmienną x, na odpowiednią temperaturę otoczenia. Y = (500 * x) / 1023 DO). ZMIENNA Z- z = mapa (x, 0, 1023, 0,255) UWAGA :: Wiemy, że lm35 może zapewnić maksymalnie 1,5 V i to również, gdy temp. Wynosi 150 st. co nie jest praktyczne. Oznacza to, że dla 40 stopni Celsjusza otrzymujemy 0,40 V, a dla 25 stopni 0,25 V. Ponieważ te wartości są bardzo niskie dla prawidłowego pwm na mosfecie, musimy pomnożyć je przez współczynnik. Dlatego mnożymy go przez 10 i zamiast tego podajemy tę wartość jako wyjście analogowe na pin 10 PWM, tj. ** analogWrite(10,z*10) Teraz dla 0,25 wolta mosfet dostaje 0,25 * 10 = 2,5 wolta Dla 0,40 wolta mosfet otrzymuje 0,40 * 10 = 4 wolty, przy których silnik prawie pracuje z pełną prędkością PRZYPADEK 1. Gdy temp. Ma mniej niż 25 stopni W tym przypadku arduino wysyła napięcie 0 PWM do pinu 10 jak w ostatnim wierszu kodu ** else Ponieważ napięcie pwm na bazie mosfetu wynosi 0, pozostaje on wyłączony, a silnik zostaje odłączony od obwodu. Zobacz symulowany obwód w tym przypadku. Jak widać, temperatura wynosi więc 20 stopni Wartość analogowa = 41 Ale ponieważ temperatura jest mniejsza niż 25 stopni, stąd mosfet dostaje 0 woltów, jak pokazano na rys. (Wskazywany przez niebieską kropkę). Gdy temperatura osiągnie 25 stopni, to zgodnie z kodem pwm do podstawy mosfetu wysyłany jest sygnał iz każdym stopniem wzrostu temperatury to napięcie PWM również wzrasta tj. Zobacz symulowany obwód w tym przypadku. Jak widać, gdy temperatura wzrasta od 20 stopni do 40 stopni, wszystkie trzy wartości zmieniają się i przy 40 stopniach Celsjusza Wartość analogowa = 82 Ponieważ temperatura jest większa niż 25 stopni, mosfet otrzymuje odpowiednie napięcie PWM, jak pokazano na rys. (Zaznaczone czerwoną kropką). W związku z tym silnik zaczyna pracować przy 25 stopniach, a wraz ze wzrostem temperatury na stopień napięcie pwm z pinu 10 do podstawy mosfetu również wzrasta. Stąd prędkość silnika rośnie liniowo wraz ze wzrostem temperatury i osiąga prawie maksimum dla 40 stopni Celsjusza. Jeśli masz dodatkowe pytania dotyczące wyżej wyjaśnionego obwodu wentylatora prądu stałego z automatyczną regulacją temperatury za pomocą wentylatora i Arduino, zawsze możesz skorzystać z pola komentarza poniżej i przesłać nam swoje przemyślenia. Postaramy się jak najszybciej wrócić.//--------------------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---------------------// NASZ CEL:
CZUJNIK TEMPERATURY LM35:
2. Vout - ten pin daje wyjście w postaci napięcia.
3. GND - ten pin jest podłączony do zacisku masy obwodu. DLACZEGO ARDUINO DLA TEGO PROJEKTU STEROWNIKA WENTYLATORÓW DC?
JAKA JEST ROLA MOSFETU MOCY?
DLACZEGO STOSUJE SIĘ DIODĘ?
LISTA CZĘŚCI DO PROJEKTU:
SCHEMAT OBWODU:
b) Podłącz pin Vout Lm358 do A0 Arduino
c) Podłącz pin uziemienia lm358 do GND arduino
d) Podłącz podstawę mosfetu do pinu 10 PWM arduino KOD:
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
}
} WORKING (kod zrozumienia):
1. Pierwszą wartość analogową należy zmienić na odpowiednie napięcie tj.
1023: 5v
Stąd (5000 miliwoltów * x) / 1023 V.
2. Teraz wiemy, że dla każdego stopnia wzrostu temperatury odpowiednie napięcie wyjściowe wzrasta o 10 mv, tj.
1 stopień Celsjusza: 10 miliwoltów
Stąd (5000 miliwoltów * x) / (1023 * 10) STOPIEŃ
ta zmienna zmienia wartość analogową na cyfrową dla wyjścia pwm na pinie 10.
{analogWrite (10,0) // w każdym innym przypadku PWM na pinie 10 musi wynosić 0
} **
Temperatura = 20
Zmapowana wartość = 100
PRZYPADEK 2. Gdy temp. Jest większy niż 25 stopniif(y>25)
{analogWrite(10,z*10)
} which is z* 10.
Temperatura = 40
Zmapowana wartość = 200
Poprzedni: Prosty obwód ochraniacza lodówki Dalej: Jak zaprojektować obwód zasilacza bezprzerwowego (UPS)