Spisu treści:

Ściemniacz LED PWM 12 V z ESP8266: 3 kroki
Ściemniacz LED PWM 12 V z ESP8266: 3 kroki

Wideo: Ściemniacz LED PWM 12 V z ESP8266: 3 kroki

Wideo: Ściemniacz LED PWM 12 V z ESP8266: 3 kroki
Wideo: Диммер на ESP32 в ESPHomeИ Home Assistantиз модуля AC Light Dimmer module от RobotDyn 2024, Listopad
Anonim
Ściemniacz LED PWM 12V z ESP8266
Ściemniacz LED PWM 12V z ESP8266

Starając się, aby moje gospodarstwo domowe było bardziej zrównoważone, wymieniałem żarówki halogenowe na światła ledowe. Dostępnych jest wiele alternatyw, które mogą zastąpić każdy rodzaj żarówki. Robiąc to, natknąłem się na następujący problem: miałem oprawę oświetleniową, która używała 7 12-woltowych żarówek halogenowych, każda o mocy 10 watów. To światło było sterowane ściemniaczem, który działał dobrze. Kiedy wymieniłem żarówki na 12-woltowe diody LED, każdy 1 Wat, ściemniacz działał źle: światło migotało, a ściemnianie było nieco chaotyczne. Jest to problem z wieloma klasycznymi ściemniaczami: mają one minimalną moc znamionową, której potrzebują do pracy.

Tak więc, bazując na moim systemie domotyki, postanowiłem wymienić ten ściemniacz ręczny na nowy, który miałby tę dodatkową zaletę, że mógłby być sterowany zdalnie. Zbudowałem już ściemniacz za pomocą N-kanałowego MOSFET-u (IRF540), który jest idealny do tego typu rzeczy: może być sterowany sygnałem PWM i jest praktycznie niezniszczalny, z maksymalnymi wartościami znamionowymi 100 woltów i 33 amperów, wystarczająco dużo do tego celu (szybkie sprawdzenie: 7 x 1 wat = 7 watów, podzielone przez 12 woltów daje maksymalny prąd około 0,58 ampera). Chcę użyć tego ściemniacza do innego urządzenia, które ma 12 żarówek, każda 2 waty, co daje maksymalnie 2 Ampery, więc to również jest wystarczające. Jedyne na co uważać to częstotliwość sygnału PWM, ale zwykłe wartości dla Arduino czy ESP8266 (500 Hz lub 1kHz) nie stanowią problemu.

Krok 1: Krok 1: Składniki

Krok 1: Komponenty
Krok 1: Komponenty
  1. Sterownik LED (przetwornica 230 V AC na 12 V DC) W moim celu chcę użyć maksymalnie 24 W, więc zacząłem od sterownika LED 12 V i 2 A. Znalazłem jeden u chińskiego dystrybutora. Ten sterownik miał napięcie 12 woltów, 28 watów, więc wystarczyło do samodzielnego napędzania urządzenia. We własnej sytuacji możesz użyć lżejszej lub cięższej wersji, w zależności od urządzenia.
  2. IRF540 n-kanałowy MOSFET
  3. Adafruit Huzzah ESP8266 Breakout Ponieważ chciałem korzystać z WiFi i absolutnie uwielbiam produkty Adafruit, wybrałem tę płytkę: daje mi ESP8266 z wygodnym pinoutem do programowania, wbudowanym regulatorem mocy i elegancką obudową. To trochę przesada dla tego projektu, ale znacznie ułatwia testowanie i debugowanie.
  4. Przetwornica DC-DC oparta na LM2596 Aby uzyskać moc dla płyty ESP z 12 woltów, potrzebowałem regulatora; te małe konwertery są bardzo wydajne i bardzo tanie.
  5. Enkoder obrotowy z funkcją przycisku, z wbudowaną diodą LED:

    www.sparkfun.com/products/10596

    Zrobiłby to każdy enkoder obrotowy, ale podobała mi się przyjemna dodatkowa funkcja wbudowanej diody LED.

  6. Przezroczyste plastikowe pokrętło

    www.sparkfun.com/products/10597

  7. Rezystor 4k7
  8. Rezystor 1k

Krok 2: Krok 2: Obwód

Krok 2: obwód
Krok 2: obwód

To jest obwód, którego użyłem: użyłem pinów 4 i 5 jako wejść dla enkodera obrotowego i pinu 0 dla przycisku. Pin 0 jest również podłączony do wbudowanej czerwonej diody, więc mogłem sprawdzić działanie przycisku na kodowaniu obserwując tę diodę.

Pin 16 służy do wyjścia PWM i podłączyłem go bezpośrednio do zielonej diody LED na enkoderze Sparkfun. ESP8266 ma 3,3 V, a nawet przy 100% zmierzyłem tylko 2,9 V na wyjściu, więc podłączyłem go bezpośrednio bez rezystora szeregowego. To samo wyjście trafia do bramki n-kanałowego MOSFET-u za pomocą rezystora 1 kOhm. Ta bramka jest podnoszona do poziomu 12 woltów przez rezystor 4,7 kOhm.

Użyłem konwertera DC-DC do konwersji 12 woltów na 5,5 woltów, który jest podłączony do wejścia V+ breakoutu Adafruit. Mogłem użyć 3,3 V i podłączyć go bezpośrednio, ale jest to nieco bezpieczniejsze.

Lampa LED 12 V w obwodzie to moje urządzenie.

Krok 3: Krok 3: Kodeks

Krok 3: Kodeks
Krok 3: Kodeks

Umieściłem kod na GitHub:

Szkic do ściemniacza LED PWM ESP8266

Opiera się na pomyśle innej instrukcji:

www.instructables.com/id/Arduino-PWM-LED-D…

Ale to była czysto lokalna kontrola, więc dodałem własne rozwiązanie domotyki oparte na MQTT. Zasadniczo robi to samo, ale główne różnice to:

  • domyślna liczba kroków PWM z Arduino to 255, z ESP8266 to 1023 (jak się później dowiedziałem, cała próba zorientowania się, dlaczego moja oprawa LED nie osiągnęła 100% jasności…)
  • Nie używałem obwodu „Totempole” z 2 tranzystorami, ponieważ PWM i tak był DC i działał dobrze z IRF 540.
  • Nie używałem rezystorów podciągających 10k dla enkodera, zaufałem wbudowanym podciąganiom ESP8266.
  • ESP8266 wykorzystuje logikę 3,3 V zamiast 5 V dla Arduino, co nie okazało się problemem dla IRF540

Oprogramowanie posiada następujące funkcje:

  • przekręcenie enkodera przyciemni światło w górę (CW) lub w dół (CCW), od 0 do 100%, w 1023 krokach, z pewnym przyspieszeniem na niższych poziomach.
  • naciśnięcie przycisku spowoduje włączenie światła, gdy jest wyłączone, na ostatnio zapisany poziom jasności lub wyłączenie go, gdy jest włączone.
  • dłuższe naciśnięcie przycisku przy włączonym świetle spowoduje zapisanie aktualnej jasności jako poziomu domyślnego.
  • dłuższe wciśnięcie przycisku przy zgaszonym świetle spowoduje włączenie światła do 100% jasności, bez zmiany domyślnego poziomu.
  • Połączy się z ustawieniami Wi-Fi zdefiniowanymi przez ciągi „SECRET_SSID” i „SECRET_PASS”, które są zapisane w osobnym pliku w moim szkicu o nazwie „secrets.h”
  • Łączy się z serwerem MQTT w sieci Wi-Fi, używając ciągów „MQTTSERVER” i „MQTTPORT” w tym samym pliku.
  • Możesz użyć przychodzącego tematu MQTT 'domus/esp/in' do wydawania poleceń: 'ON' lub 'OFF', aby włączyć lub wyłączyć światło, lub wartości od 0 do 1023, aby zmienić jasność.
  • Zgłosi stan w tematach MQTT „domus/esp/uit” (stan włączenia lub wyłączenia) oraz „domus/esp/uit/jasność” (wartość jasności).

Zalecana: