Inhaltsverzeichnis:

12V LED PWM Dimmer mit ESP8266 - Gunook
12V LED PWM Dimmer mit ESP8266 - Gunook

Video: 12V LED PWM Dimmer mit ESP8266 - Gunook

Video: 12V LED PWM Dimmer mit ESP8266 - Gunook
Video: 12v PWM LED dimmer circuit with Arduino | How to make a 12v PWM LED DIMMER CIRCUIT using Arduino 2024, November
Anonim
12V LED PWM Dimmer mit ESP8266
12V LED PWM Dimmer mit ESP8266

Als ich versuchte, meinen Haushalt nachhaltiger zu machen, tauschte ich Halogenlampen gegen LED-Leuchten aus. Es gibt viele Alternativen, um jede Art von Glühbirne zu ersetzen. Dabei stieß ich auf folgendes Problem: Ich hatte eine Leuchte mit 7 12-Volt-Halogenlampen mit je 10 Watt. Dieses Licht wurde durch einen Dimmer gesteuert, der gut funktionierte. Als ich die Glühbirnen gegen 12 Volt LED-Leuchten à 1 Watt austauschte, funktionierte der Dimmer schlecht: Das Licht flackerte und das Dimmen etwas unregelmäßig. Dies ist ein Problem bei vielen klassischen Dimmern: Sie haben eine minimale Nennleistung, die sie benötigen, um zu funktionieren.

Aufgrund meines Domotik-Systems habe ich mich daher entschieden, diesen manuellen Dimmer durch einen neuen zu ersetzen, der den zusätzlichen Vorteil hätte, dass er ferngesteuert werden kann. Ich hatte bereits einen Dimmer mit einem N-Kanal-MOSFET (IRF540) gebaut, der perfekt für so etwas ist: Er kann über ein PWM-Signal gesteuert werden und ist mit einer maximalen Nennspannung von 100 Volt und 33 Ampere praktisch unverwüstlich. ausreichend für diesen Zweck (Schnelltest: 7 x 1 Watt = 7 Watt geteilt durch 12 Volt ergibt einen maximalen Strom von ca. 0,58 Ampere). Ich möchte diesen Dimmer für eine andere Leuchte verwenden, die 12 Glühbirnen mit je 2 Watt hat, was maximal 2 Ampere liefert, so dass auch das ausreichend ist. Einzig die Frequenz des PWM-Signals ist darauf zu achten, aber die üblichen Werte für Arduino oder ESP8266 (500 Hz oder 1kHz) sind kein Problem.

Schritt 1: Schritt 1: die Komponenten

Schritt 1: die Komponenten
Schritt 1: die Komponenten
  1. LED-Treiber (230 Volt AC auf 12 Volt DC Wandler) Für meinen Zweck möchte ich maximal 24 Watt verwenden, also habe ich mit einem LED-Treiber von 12 Volt und 2 Ampere angefangen. Ich habe einen bei einem chinesischen Händler gefunden. Dieser Treiber hatte eine Nennleistung von 12 Volt, 28 Watt, so dass er ausreichte, um das Gerät alleine zu betreiben. Für Ihre eigene Situation können Sie je nach Gerät eine leichtere oder schwerere Version verwenden.
  2. IRF540 n-Kanal-MOSFET
  3. Adafruit Huzzah ESP8266 BreakoutWeil ich WLAN nutzen wollte und die Produkte von Adafruit absolut liebe, habe ich mich für dieses Board entschieden: Es gibt mir ein ESP8266 mit einer praktischen Programmier-Pinbelegung, einem integrierten Leistungsregler und einem eleganten Formfaktor. Es ist ein wenig übertrieben für dieses Projekt, aber es macht das Testen und Debuggen viel einfacher.
  4. LM2596-basierter DC-DC-Wandler Um den Strom für die ESP-Platine aus den 12 Volt abzuleiten, brauchte ich einen Regler; diese kleinen Konverter sind sehr effizient und sehr billig.
  5. Drehgeber mit Tastenfunktion, mit eingebautem LED-Licht:

    www.sparkfun.com/products/10596

    Jeder Drehgeber würde ausreichen, aber ich mochte die nette zusätzliche Funktion einer eingebauten LED.

  6. Durchsichtiger Kunststoffknopf

    www.sparkfun.com/products/10597

  7. Widerstand 4k7
  8. Widerstand 1k

Schritt 2: Schritt 2: die Schaltung

Schritt 2: die Schaltung
Schritt 2: die Schaltung

Dies ist die Schaltung, die ich verwendet habe: Ich habe die Pins 4 und 5 als Eingänge für den Drehgeber und Pin 0 für die Taste verwendet. Pin 0 ist auch mit der roten LED auf der Platine verbunden, so dass ich die Funktion der Taste auf der Codierung überprüfen kann, indem ich diese LED beobachte.

Pin 16 wird für den PWM-Ausgang verwendet, und ich habe diesen direkt mit der grünen LED am Sparkfun-Encoder verbunden. Der ESP8266 hat 3, 3 Volt und selbst bei 100% habe ich nur 2, 9 Volt Ausgang gemessen, also habe ich ihn direkt ohne Vorwiderstand angeschlossen. Derselbe Ausgang geht über einen 1-kOhm-Widerstand zum Gate des n-Kanal-MOSFET. Dieses Gate wird von einem 4,7-kOhm-Widerstand auf 12 Volt hochgezogen.

Ich habe den DC-DC-Wandler verwendet, um die 12 Volt auf 5,5 Volt umzuwandeln, dieser ist mit dem V+-Eingang des Adafruit-Breakouts verbunden. Ich hätte 3,3 Volt verwenden und direkt anschließen können, aber das ist etwas sicherer.

Die 12-V-LED-Lampe im Stromkreis ist meine Befestigung.

Schritt 3: Schritt 3: der Code

Schritt 3: der Code
Schritt 3: der Code

Ich habe den Code auf GitHub gestellt:

Skizze für ESP8266 LED PWM Dimmer

Es basiert auf einer anderen anweisbaren Idee:

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

Aber dies war eine reine lokale Kontrolle, also fügte ich meine eigene MQTT-basierte Domotik-Lösung hinzu. Es macht im Grunde dasselbe, aber die Hauptunterschiede sind:

  • Die Standardanzahl der PWM-Schritte bei einem Arduino ist 255, beim ESP8266 sind es 1023 (wie ich später herausfand, versuchte ich herauszufinden, warum mein LED-Gerät nicht auf 100% Helligkeit gestiegen ist …)
  • Ich habe die 'Totempole' -Schaltung mit den 2 Transistoren nicht verwendet, da die PWM sowieso DC war und mit dem IRF 540 gut funktionierte.
  • Ich habe die 10k-Pull-Up-Widerstände für den Encoder nicht verwendet, ich habe den eingebauten Pullups des ESP8266 vertraut.
  • Der ESP8266 verwendet eine 3,3-Volt-Logik anstelle von 5 Volt für den Arduino, was sich für den IRF540 als kein Problem erwies

Die Software hat folgende Funktionen:

  • Durch Drehen des Encoders wird das Licht in 1023 Schritten von 0 bis 100 % nach oben (CW) oder herunter (CCW) gedimmt, wobei in den unteren Stufen etwas beschleunigt wird.
  • Durch Drücken der Taste wird das Licht im ausgeschalteten Zustand mit der zuletzt gespeicherten Helligkeitsstufe eingeschaltet oder ausgeschaltet, wenn es eingeschaltet ist.
  • Durch längeres Drücken der Taste bei eingeschaltetem Licht wird die aktuelle Helligkeit als Standardstufe gespeichert.
  • Durch längeres Drücken der Taste bei ausgeschaltetem Licht wird das Licht auf 100% Helligkeit eingeschaltet, ohne die Standardstufe zu ändern.
  • Es wird eine Verbindung zu den WiFi-Einstellungen hergestellt, die durch die Strings 'SECRET_SSID' und 'SECRET_PASS' definiert sind, die in einer separaten Datei in meiner Skizze namens 'secrets.h' gespeichert sind.
  • Es stellt eine Verbindung zu einem MQTT-Server im WLAN-Netzwerk her, wobei die Zeichenfolgen 'MQTTSERVER' und 'MQTTPORT' in derselben Datei verwendet werden.
  • Sie können das eingehende MQTT-Thema 'domus/esp/in' verwenden, um Befehle zu erteilen: 'ON' oder 'OFF', um das Licht ein- oder auszuschalten, oder einen Wert von 0 bis 1023, um die Helligkeit zu ändern.
  • Es meldet den Zustand zu den MQTT-Themen 'domus/esp/uit' (ON- oder OFF-Status) und 'domus/esp/uit/brightness' (der Helligkeitswert).

Empfohlen: