Obwody prądu stałego wentylatora sterowane temperaturą Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





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

Sterowanie wentylatorem DC do automatycznej regulacji temperatury

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

Sterowanie wentylatorem za pomocą przekaźnika za pomocą czujnika temperatury Arduino

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

//--------------------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---------------------//

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

NASZ CEL:

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).

CZUJNIK TEMPERATURY LM35:

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.

Układ pinów LM35 IC

1. Vin - ten pin jest podłączony do zasilania prądem stałym o napięciu od 4 do 20 V.
2. Vout - ten pin daje wyjście w postaci napięcia.
3. GND - ten pin jest podłączony do zacisku masy obwodu.

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.

DLACZEGO ARDUINO DLA TEGO PROJEKTU STEROWNIKA WENTYLATORÓW DC?

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.

JAKA JEST ROLA MOSFETU MOCY?

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.

DLACZEGO STOSUJE SIĘ DIODĘ?

Dioda służy do ochrony mosfetu z tylnej części E.M.F generowanej przez silnik podczas pracy.

LISTA CZĘŚCI DO PROJEKTU:

1. LM35

2. ARDUINO

3. MOSFET MOCY (IRF1010E)

MOSFET MOCY (IRF1010E)

4. DIODA (1N4007)

DIODA (1N4007)

5. WENTYLATOR (silnik)

6. ZASILANIE WENTYLATORA

SCHEMAT OBWODU:

Sterowanie wentylatorem DC zależne od temperatury Arduino

Wykonaj połączenia zgodnie ze schematem połączeń.

a) Podłącz pin vin lm358 do 5v arduino
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):

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
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Ń

DO). ZMIENNA Z-

z = mapa (x, 0, 1023, 0,255)
ta zmienna zmienia wartość analogową na cyfrową dla wyjścia pwm na pinie 10.

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
{analogWrite (10,0) // w każdym innym przypadku PWM na pinie 10 musi wynosić 0
} **

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.

Symulacja sterowania wentylatorem Arduino

Jak widać, temperatura wynosi więc 20 stopni

Wartość analogowa = 41
Temperatura = 20
Zmapowana wartość = 100

Ale ponieważ temperatura jest mniejsza niż 25 stopni, stąd mosfet dostaje 0 woltów, jak pokazano na rys. (Wskazywany przez niebieską kropkę).
PRZYPADEK 2. Gdy temp. Jest większy niż 25 stopni

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.

if(y>25)
{analogWrite(10,z*10)
} which is z* 10.

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
Temperatura = 40
Zmapowana wartość = 200

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ć.




Poprzedni: Prosty obwód ochraniacza lodówki Dalej: Jak zaprojektować obwód zasilacza bezprzerwowego (UPS)