- Działanie regulatora wentylatora sufitowego opartego na IoT
- Materiały wymagane w obwodzie sterowania prędkością wentylatora AC
- Obwód sterowania regulatora wentylatora AC
- Projekt PCB dla regulatora wentylatora sufitowego sterowanego IoT
- Konfigurowanie konta Firebase
- Kod Arduino do sterowania regulatorem wentylatora za pomocą NodeMCU
- Tworzenie aplikacji Fan Regulator za pomocą aplikacji MIT Inventor
- Testowanie obwodu czujnika dotyku opartego na ESP32
- Dalsze ulepszenia
W tym artykule budujemy obwód regulatora wentylatora AC, który jest w stanie kontrolować prędkość wentylatora poprzez ograniczenie przepływu prądu do wentylatora. Określenie AC Ceiling Fan Regulator to kęs, dlatego od teraz będziemy go po prostu nazywać regulatorem wentylatora. Obwód regulator wentylatora jest kluczowym elementem, który jest używany, aby zwiększyć lub zmniejszyć prędkość o AC wentylatora / silnika w zależności od potrzeb. Kilka lat temu można było wybierać między konwencjonalnym rezystancyjnym regulatorem wentylatora a regulatorem elektronicznym, ale obecnie wszystko to zostało zastąpione elektronicznym obwodem regulatora wentylatora.
W poprzednim artykule pokazaliśmy, jak można zbudować obwód kontroli kąta fazowego prądu przemiennego za pomocą Arduino, który był w stanie kontrolować jasność żarowej żarówki, a także kontrolować prędkość wentylatora, aby podnieść go o jeden stopień W tym artykule zamierzamy zbudować obwód regulatora wentylatora sufitowego AC opartego na IoT. Który będzie w stanie kontrolować prędkość wentylatora sufitowego za pomocą aplikacji na Androida.
Działanie regulatora wentylatora sufitowego opartego na IoT
Obwód regulatora wentylatora jest prostym obwodem, który jest w stanie kontrolować prędkość wentylatora sufitowego AC poprzez zmianę kąta fazowego fali sinusoidalnej AC lub, mówiąc prosto, precyzyjne sterowanie TRIAC. Jak wspomniałem o wszystkich podstawowych funkcjach obwodu regulatora wentylatora AC w artykule AC Phase Angle Control with 555 Timer and PWM, skoncentrujemy się na rzeczywistym budowaniu obwodu. I znowu, jeśli chcesz dowiedzieć się więcej na ten temat, zapoznaj się również z artykułem o ściemniaczu AC Light z wykorzystaniem Arduino i TRIAC Project.
Podstawowy schemat blokowy powyżej pokazuje, jak faktycznie działa obwód. Jak powiedziałem wcześniej, wygenerujemy sygnał PWM za pomocą Firebase IoT i NodeMCU, a następnie sygnał PWM zostanie przepuszczony przez filtr dolnoprzepustowy, który będzie sterował bramką MOSFET-a, po czym steruje zegarem 555 rzeczywisty TRIAC za pomocą transoptora.
W tym przypadku aplikacja na Androida zmienia wartość w firebaseDB, a ESP stale sprawdza, czy nie ma zmian w tej bazie danych, jeśli wystąpi jakakolwiek zmiana, która zostanie ściągnięta, a wartość jest konwertowana na sygnał PWM
Materiały wymagane w obwodzie sterowania prędkością wentylatora AC
Poniższy obrazek przedstawia materiał użyty do budowy tego obwodu, ponieważ jest on wykonany z bardzo ogólnych komponentów, więc wszystkie wymienione materiały powinny być w stanie znaleźć w lokalnym sklepie hobbystycznym.
Wymieniłem również komponenty w poniższej tabeli z typem i ilością, ponieważ jest to projekt demonstracyjny, używam do tego jednego kanału. Ale obwód można łatwo skalować zgodnie z wymaganiami.
- Złącze śrubowe 5,04 mm - 2
- Złącze męskie 2,54 mm - 1
- Rezystor 56K, 1W - 2
- Dioda 1N4007 - 4
- Kondensator 0,1 uF, 25 V - 2
- Regulator napięcia AMS1117 - 1
- Kondensator 1000 uF, 25 V - 1
- Gniazdo zasilania DC - 1
- Rezystor 1K - 1
- Rezystor 470R - 2
- Rezystor 47R - 2
- Rezystory 82 K - 1
- Rezystory 10 K - 5
- Transoptor PC817 - 1
- NE7555 IC - 1
- MOC3021 Opto TriacDrive - 1
- MOSFET IRF9540 - 1
- Kondensator 3,3 uF - 1
- Przewody łączące - 5
- Kondensator 0.1uF, 1KV - 1
- Mikrokontroler ESP8266 (ESP-12E) - 1
Obwód sterowania regulatora wentylatora AC
Schemat obwodu regulatora wentylatora IoT jest pokazany poniżej, obwód ten jest bardzo prosty i wykorzystuje ogólne komponenty do uzyskania kontroli kąta fazowego.
Ten obwód składa się z bardzo starannie zaprojektowanych komponentów. Omówię każdy z nich i wyjaśnię każdy blok.
Układ Wi-Fi ESP8266 (ESP-12E):
To jest pierwsza część naszego obwodu i jest to część, w której zmieniliśmy wiele rzeczy, inne części pozostają dokładnie takie same, tj. Jeśli śledziłeś poprzedni artykuł.
W tej sekcji wyciągnęliśmy piny Enable, Reset i GPIO0, a także wyciągnęliśmy GPIO15 i Pin Ground, które są zalecane w arkuszu danych chipa. Jeśli chodzi o programowanie, umieściliśmy 3-pinowe złącze odsłaniające TX, RX i pin uziemienia, przez które możemy bardzo łatwo zaprogramować chip. Ponadto umieściliśmy dotykowy przełącznik, aby przełączyć GPIO0 do masy, jest to niezbędny krok, aby ustawić ESP w trybie programowania. Jako wyjście, przez które generowany jest sygnał PWM, wybraliśmy pin GPIO14.
Uwaga! W momencie programowania musimy wcisnąć przycisk i zasilić urządzenie za pomocą gniazda DC baryłkowego.
Obwód wykrywania przejścia przez zero:
Najpierw na naszej liście znajduje się obwód wykrywania przejścia przez zero wykonany z dwóch rezystorów 56K, 1W w połączeniu z czterema diodami 1n4007 i transoptorem PC817. Ten obwód jest odpowiedzialny za dostarczanie sygnału przejścia przez zero do układu scalonego zegara 555. Odkleiliśmy również fazę i sygnał neutralny, aby dalej używać go w sekcji TRIAC.
Regulator napięcia AMS1117-3.3V:
Do zasilania obwodu służy regulator napięcia AMS1117, obwód jest odpowiedzialny za zasilanie całego obwodu. Dodatkowo zastosowaliśmy dwa kondensatory 1000uF i kondensator 0,1uF jako kondensator odsprzęgający dla układu AMS1117-3.3.
Obwód sterowania z zegarem NE555:
Powyższy obraz przedstawia obwód sterujący timera 555, 555 jest skonfigurowany w konfiguracji monostabilnej, więc gdy sygnał wyzwalający z obwodu wykrywania przejścia przez zero trafi w wyzwalacz, timer 555 zaczyna ładować kondensator za pomocą rezystora (generalnie), ale nasz układ ma MOSFET zamiast rezystora i sterując bramką MOSFET-a sterujemy prądem płynącym do kondensatora, dlatego kontrolujemy czas ładowania stąd sterujemy wyjściem timerów 555.
TRIAC i obwód sterownika TRIAC:
TRIAC działa jako główny wyłącznik, który faktycznie włącza się i wyłącza, kontrolując w ten sposób wyjście sygnału AC. Sterując TRIAC za pomocą napędu optycznego triaka MOC3021, nie tylko napędza TRIAC, ale zapewnia również izolację optyczną, kondensator wysokiego napięcia 0,01 uF 2KV, a rezystor 47R tworzy obwód tłumiący, który chroni nasz obwód przed skoki wysokiego napięcia, które występują, gdy jest on podłączony do obciążenia indukcyjnego. Za skoki odpowiada niesinusoidalny charakter przełączanego sygnału AC. Odpowiada również za problemy ze współczynnikiem mocy, ale to temat na inny artykuł.
Filtr dolnoprzepustowy i MOSFET z kanałem P (działający jako rezystor w obwodzie):
Rezystor 82K i kondensator 3,3uF tworzą filtr dolnoprzepustowy, który odpowiada za wygładzenie sygnału PWM wysokiej częstotliwości generowanego przez Arduino. Jak wspomniano wcześniej, tranzystor MOSFET z kanałem P działa jako rezystor zmienny, który kontroluje czas ładowania kondensatora. Kontroluje go sygnał PWM, który jest wygładzany przez filtr dolnoprzepustowy.
Projekt PCB dla regulatora wentylatora sufitowego sterowanego IoT
Płytka drukowana naszego obwodu regulatora wentylatora sufitowego IoT została zaprojektowana w postaci jednostronnej płytki. Użyłem oprogramowania Eagle PCB do projektowania mojej płytki PCB, ale możesz użyć dowolnego oprogramowania do projektowania, które wybierzesz. Obraz 2D mojego projektu płyty jest pokazany poniżej.
Wystarczające wypełnienie ziemią służy do prawidłowego podłączenia uziemienia między wszystkimi komponentami. Wejście 3,3 V DC i wejście 220 V AC znajduje się po lewej stronie, wyjście znajduje się po prawej stronie płytki drukowanej. Pełny plik projektowy dla Eagle wraz z Gerber można pobrać z linku poniżej.
- Projekt PCB, pliki GERBER i PDF dla obwodu regulatora wentylatora sufitowego
Ręcznie robiona płytka drukowana:
Dla wygody wykonałem ręcznie wykonaną wersję PCB i pokazano ją poniżej.
Dzięki temu nasz sprzęt jest gotowy zgodnie z naszym schematem obwodu, teraz musimy przygotować naszą aplikację na Androida i Google Firebase.
Konfigurowanie konta Firebase
W następnym kroku musimy skonfigurować konto Firebase. Cała komunikacja będzie przechodzić przez konto Firebase. Aby skonfigurować konto Firebase, przejdź do witryny Firebase i kliknij „Rozpocznij”.
Po kliknięciu musisz zalogować się na swoje konto Google i
Po zalogowaniu się musisz utworzyć projekt, klikając przycisk Utwórz projekt.
Spowoduje to przekierowanie do strony, która wygląda jak na powyższym obrazku. Wpisz nazwę swojego projektu i kliknij Kontynuuj.
Ponownie kliknij Kontynuuj.
Gdy to zrobisz, musisz zaakceptować niektóre warunki, klikając pole wyboru, a następnie kliknij przycisk Utwórz projekt.
Jeśli wszystko wykonałeś poprawnie, po jakimś czasie otrzymasz taką wiadomość. Po zakończeniu konsola Firebase powinna wyglądać jak na poniższym obrazku.
Teraz musimy zebrać stąd dwie rzeczy. Aby to zrobić, musisz kliknąć nazwę projektu, który właśnie utworzyłeś. Dla mnie jest to CelingFanRegulator, po kliknięciu na niego otrzymasz dashboard podobny do poniższego obrazka.
Kliknij ustawienia, a następnie ustawienia projektu, strona, którą otrzymasz, będzie wyglądać jak na poniższych obrazkach.
Kliknij konto usługi -> sekret bazy danych.
Skopiuj bazę danych w tajemnicy i zachowaj ją w innym miejscu do późniejszego wykorzystania.
Następnie kliknij bazę danych czasu rzeczywistego i skopiuj adres URL. zachowaj to również do późniejszego wykorzystania.
I to wszystko, jest po stronie Firebase.
Kod Arduino do sterowania regulatorem wentylatora za pomocą NodeMCU
Prosty kod Arduino dba o komunikację pomiędzy firebase a modułem ESP-12E, poniżej opis obwodu i kodu, najpierw definiujemy wszystkie potrzebne biblioteki wymagane, można pobrać poniższe biblioteki z podanych linków Biblioteka Arduino JSON i bibliotekę FirebaseArduino
#zawierać
Będziemy używać biblioteki FirebaseArduino do nawiązywania komunikacji z firebase.
// Ustaw je, aby uruchamiać przykłady. #define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" # zdefiniuj WIFI_SSID "twój identyfikator SSID" # zdefiniuj "WIFI_PASS"
Następnie mamy zdefiniowane Firebase gospodarz, Firebase uwierzytelniający, który mieliśmy wcześniej zapisany kiedy robiliśmy rachunek Firebase. Następnie zdefiniowaliśmy SSID i hasło naszego routera.
String Resivedata; # zdefiniować PWM_PIN 14;
Następnie zdefiniowaliśmy zmienną typu string, Resivedata, w której będą przechowywane wszystkie dane, a także zdefiniowaliśmy PWM_PIN, gdzie otrzymamy wyjście PWM.
Następnie w sekcji void setup () wykonujemy niezbędne czynności,
Serial.begin (9600); pinMode (PWM_PIN, OUTPUT); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print („łączenie”); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); opóźnienie (500); } Serial.println (); Serial.print ("connected:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.setString ("Variable / Value", "FirstTestStrig");
Najpierw włączamy serial, wywołując funkcję Serial.begin () . Następnie ustawiliśmy pin PWM jako OUTPUT. Rozpoczynamy połączenie Wi-Fi za pomocą funkcji WiFi.begin () i przekazujemy w funkcji SSID i Hasło. Stan połączenia sprawdzamy w pętli while i po podłączeniu przerywamy pętlę i kontynuujemy. Następnie drukujemy połączoną wiadomość z adresem IP.
Na koniec rozpoczynamy komunikację z firebase za pomocą funkcji Firebase.begin () i przekazujemy zdefiniowane wcześniej parametry FIREBASE_HOST i FIREBASE_AUTH . Ciąg znaków ustawiamy za pomocą funkcji setString () , która oznacza koniec funkcji setup. W nieważne pętli () sekcji
Resivedata = Firebase.getString ("Zmienna / Wartość"); Serial.println (Resivedata); analogWrite (PWM_PIN, map (Resivedata.toInt (), 0, 80, 80, 0)); Serial.println (Resivedata); opóźnienie (100);
Wywołujemy funkcję getString () ze zmienną / wartością, w której dane są przechowywane w firebase, przykład wyglądałby tak, jak na poniższym obrazku:
Następnie drukujemy wartość tylko do debugowania. Następnie używamy funkcji map do mapowania wartości, używana jest 80, ponieważ w zakresie 0 - 80 jesteśmy w stanie dokładnie sterować bramką MOSFET-a, a filtr dolnoprzepustowy RC jest w pewnym stopniu odpowiedzialny za tę wartość. W tym zakresie obwód sterowania kątem fazowym działa dokładnie, wartość tę można nazwać optymalnym punktem sprzętowo-programowym. Jeśli wykonujesz ten projekt i napotykasz problemy, musisz bawić się wartością i samemu określać wyniki.
Następnie używamy funkcji analogWrite () do dostarczania danych i włączania PWM, po czym ponownie używamy funkcji Serial.println (), aby przejrzeć wynik, a na koniec używamy funkcji opóźnienia, aby zmniejszyć liczba trafień do interfejsu API Firebase, co oznacza koniec naszego programu.
Tworzenie aplikacji Fan Regulator za pomocą aplikacji MIT Inventor
Z pomocą AppInventor stworzymy aplikację na Androida, która będzie komunikować się z firebase i będzie miała uprawnienia do zmiany danych przechowywanych w bazie danych firebase.
Aby to zrobić, wejdź na stronę appInventors, zaloguj się na swoje konto Google i zaakceptuj regulamin. Gdy to zrobisz, zostanie wyświetlony ekran wyglądający jak na poniższym obrazku.
Kliknij ikonę rozpoczęcia nowego projektu i nadaj jej nazwę, a następnie naciśnij OK, gdy to zrobisz, zostanie wyświetlony ekran podobny do poniższego obrazu.
Gdy już tam będziesz, musisz najpierw umieścić dwie etykiety, gdzie należy trochę przesunąć suwak, następnie musisz wciągnąć kilka modułów i są to moduł FirebaseDB i moduł sieciowy.
W firebaseDB modułu łączy się z Firebase The moduł internetowej jest stosowany do h andle żądania. Który wygląda jak na poniższym obrazku.
Gdy to zrobisz, musisz pociągnąć suwak i etykietę, którą nazwaliśmy PWM, jeśli w tym momencie jesteś zdezorientowany, możesz zapoznać się z innymi samouczkami dotyczącymi tworzenia aplikacji z twórcą aplikacji.
Po zakończeniu procesu kliknij ikonę Firebase DB i wprowadź token Firebase oraz adres URL Firebase, które zapisaliśmy podczas tworzenia konta Firebase.
Skończyliśmy z sekcją projektowania i musimy skonfigurować sekcję blokową. Aby to zrobić, musimy kliknąć przycisk bloku w prawym górnym rogu obok projektanta.
Po kliknięciu suwaka zostanie wyświetlona długa lista modułów, wyciągnij pierwszy moduł i najedź myszą na przycisk pozycji kciuka, zostaniesz przywitany dwoma kolejnymi modułami, wyciągnij oba z nich. Użyjemy ich później.
Teraz możemy przymocować thumbposition zmienną, możemy zaokrąglić go i otrzymujemy wartość pozycji kciuka. Następnie klikamy firebasedb i wyciągamy wartość tagu wywołania FirebaseDB.storeValue, aby zapisać, moduł i dołączyć ją do dolnej części wartości pozycji kciuka.
Po zakończeniu wyciągamy puste pole tekstowe, klikając blok tekstu i dołączamy go do tagu, jest to tag, który ustawiliśmy w Arduino IDE do odczytu i zapisu danych w firebase. Teraz dołącz zmienną wartości kciuka do wartości do przechowywania tagu. Jeśli zrobiłeś wszystko poprawnie, przesuwając suwak, będziesz mógł zmienić wartości w firebaseDB.
- .Aia (zapisany plik) i.apk (skompilowany plik)
Oznacza to koniec procesu tworzenia naszej aplikacji. Migawka aplikacji na Androida, którą właśnie utworzyliśmy, pokazana poniżej.
Testowanie obwodu czujnika dotyku opartego na ESP32
Aby przetestować obwód podłączyłem żarówkę równolegle do wentylatora sufitowego, a obwód zasiliłem adapterem 5V DC, jak widać na powyższym obrazku suwak aplikacji jest ustawiony na niski, dlatego żarówka świeci z małą jasnością. Wentylator również powoli się obraca.
Dalsze ulepszenia
W tej demonstracji obwód jest wykonany na ręcznie robionej płytce drukowanej, ale obwód można łatwo zbudować na dobrej jakości PCB, w moich eksperymentach rozmiar PCB jest naprawdę niewielki ze względu na rozmiar komponentu, ale w środowisku produkcyjnym to można zmniejszyć za pomocą tanich komponentów SMD, odkryłem, że użycie timera 7555 zamiast timera 555 znacznie zwiększa kontrolę, a ponadto zwiększa się również stabilność obwodu.