Sterownik pracy wentylatora DIY

Reading Time: 3 minutes

Prezentowany sterownik pracuje u mnie obecnie jako sterownik pracy wentylatora (12V) chłodzącego tranzystor zasilacza warsztatowego, który to zasilacz wykonałem jakiś czas temu. Sterownik powstał jako rozwiązanie problemu dość irytującego dźwięku jaki ten wentylator wydaje, działa to obecnie tak, że wentylator załączany jest, gdy temperatura tranzystora mocy zasilacza osiągnie zamierzoną wartość (55st.), a wyłączany, gdy temperatura spadnie poniżej określonej wartości (40st.).

Dodatkowo, gdy temperatura z jakiegoś powodu wzrośnie do pułapu wartości niebezpiecznej (70st.), włącza się buzzer, który informuje, że urządzenie należało by jak najszybciej wyłączyć, aby zapobiec jego uszkodzeniu. Całość działa bardzo dobrze i w sumie niewielkim nakładem pracy, sterownik ten można przerobić, aby współpracował z każdym innym wentylatorem, np. pokojowym 🙂 Całość dopełnia duży i czytelny wyświetlacz 7seg, dzięki któremu możemy zobaczyć, czy cał​ość pracuje poprawnie i na bieżąco śledzić jakie temperatury osiąga nasz układ z którym ten sterownik współpracuje.

Prezentowany sterownik pracy wentylatora został zaprojektowany w oparciu o mikrokontroler Atmega168, jednak nic nie stoi na przeszkodzie, aby użyć jakiegokolwiek innego mikrokontrolera firmy Atmel, przekompilowując pod niego dostarczone oprogramowanie. Projekt w zamierzeniu miał być jak najprostszy i jak najtańszy w wykonaniu (z użyciem już posiadanych przeze mnie elementów elektronicznych) oraz jak najbardziej funkcjonalny, także mieć możliwość jego ewentualnej dalszej rozbudowy.

Część elektroniczna

Jak już wspomniałem, sterownik powstał w oparciu o mikrokontroler Atmega168, do którego podłączonych zostało kilka dodatkowych elementów takich jak kondensatory filtrujące, rezystory odciągające, kwarc oraz dławik według zaleceń datashit tego mikrokontrolera. Do mikrokontrolera za pomocą około 30cm przewodu, podłączony został czujnik temperatury DS18B20 zabezpieczony dodatkowo koszulką termokurczliwą, który co 1sek pobiera wartości panującej temperatury w układzie, buzzer, który służy jako dodatkowe zabezpieczenie dźwiękowe oraz 7segmentowe 4 wyświetlacze ze wspólną anodą (połączone z mikrokontrolerem za pośrednictwem czterech rejestrów przesuwnych 74HC595), które wskazują aktualną temperaturę. Atmega steruje tranzystorem MOSFET IRL540, do którego podłącza się wentylator. Działa to tak, że po osiągnięciu odpowiedniej temperatury pobranej za pośrednictwem czujnika, zmienia się stan na pinie do którego podłączona jet bramka tranzystora MOSFET i zaczyna on przewodzić, co w efekcie powoduje załączenie wentylatora. Po spadku temeratury do zadanej wartości, znowu zmienia się stan na pinie i tranzystor przestaje przewodzić, co powoduje zatrzymanie pracy wentylatora. Całość układu zasilana jest napięciem 14V, które podawane jest na stabilizator napięcia 7812 (brak go na schemacie), z którego poprzez MOSFET IRL540 zasilany jest wentylator oraz drugi stabilizator 7805, z którego zasilana jest atmega. Jak widać konstrukcja i działanie układu jest bardzo proste 🙂

Część programowa

Program dla mikrokontrolera Atmega powstał z wykorzystaniem biblioteki Arduino w języku C++, w środowisku PlatformIO Atom, całość napisana została w parciu o programowanie obiektowe. Tak wiem, że w tym przypadku jest to trochę przerost formy nad treścią ale pozwala to na dalszą rozbudowę programu bez zmiany napisanego już kodu, oraz poprawia czytelność tego kodu. Kod skompilowany został pod mikrokontroler Atmega168 w środowisku Linux Mint19.

Sterownik pracy wentylatora, pracujący z zasilaczem warsztatowym

Wykaz użytych elementów

Płytka wyświetlacza

DIS1, DIS2, DIS3, DIS4 – Wyświetlacz 7seg HD-H101
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33 – Rezystor 10k
T1, T2, T3, T4 – Tranzystor BC327

Płytka sterownika

C1, C2 – Kondensator 22pF
C4, C5, C6 – Kondensator 100nF
C7 – Kondensator 22uF
D1, D2 – Dioda 1N4148
IC1 – ATMEGA168
IC2, IC3, IC4, IC5 – Rejestr przesuwny 74HC595
IC7 – Stabilizator 7805 do zasilenia atmegi + 7812 (nie ma na schemacie) do zasilenia wentylatora
Quartz – 16Mz
Q3 – Tranzystor MOSFET IRL540
R1, R34 – Rezystor 10k
R35 – Rezystor 4k7
SP1 – BUZZER
U$1 – Czujnik temperatury DS18B20
X1, X2 – Złącze AK500/2

Poniżej zamieszczam zarówno skompilowany plik .HEX jak i kod źródłowy do samodzielnej kompilacji, przebudowy, rozbudowy itp. Wszelkie uwagi, propozycje do układu i wsadu oraz pytania proszę zgłaszać w komentarzach do niniejszego artykułu.

Paczka do pobrania z oprogramowaniem .HEX i kodami źródłowymi oraz schematami i projektem płytek w Eagle.

4 komentarze

  1. Pisze Pan, że układ w prosty sposób można przystosować do pracy z wentylatorem pokojowym. W jaki sposób można to zrobić? Jakoś nie mam pomysłu jak tam podłączyć wentylator na 220V.

    1. Obecnie w sieci jest 230V. Wentylator pokojowy może pracować z tym układem za pośrednictwem stycznika załączanego napięciem 12V. Musiałby kolega jednak też zmienić w samym programie wartości przy jakich miałby on być załączany i wyłączany. Kolejna sprawa, to usunięcie buzzera, który stałby się w tym przypadku zbędny.

        1. Nie nada. Seria IRL jest specjalnie przeznaczona do pracy z mikrokontrolerami, na których występują stany logiczne o niskim napięciu. Do odetkania tranzystorów z serii IRF potrzeba dużo wyższego napięcia i układ nie będzie pracował poprawnie.

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

13 + 16 =