Sommario:

Dimmer LED PWM 12V con ESP8266: 3 passaggi
Dimmer LED PWM 12V con ESP8266: 3 passaggi

Video: Dimmer LED PWM 12V con ESP8266: 3 passaggi

Video: Dimmer LED PWM 12V con ESP8266: 3 passaggi
Video: LED Dimmer PWM Controller ESP Web Server ESP32 PWM with Arduino IDE ESP8622 2024, Luglio
Anonim
Dimmer PWM LED 12V con ESP8266
Dimmer PWM LED 12V con ESP8266

Mentre cercavo di rendere la mia casa più sostenibile, scambiavo lampadine alogene con luci a led. Le alternative disponibili sono tantissime, per sostituire qualsiasi tipo di lampadina. Mentre facevo questo, mi sono imbattuto nel seguente problema: avevo una lampada che utilizzava 7 lampadine alogene da 12 volt, ciascuna da 10 Watt. Questa luce era controllata da un dimmer, che funzionava bene. Quando ho sostituito le lampadine con luci a led da 12 volt, ciascuna da 1 Watt, il dimmer ha funzionato male: la luce tremolava e l'attenuazione era alquanto irregolare. Questo è un problema con molti dimmer classici: hanno una potenza minima, di cui hanno bisogno per funzionare.

Quindi, in base al mio impianto domotico, ho deciso di sostituire questo dimmer manuale con uno nuovo, che avrebbe il vantaggio in più di poter essere comandato da remoto. Avevo già costruito un dimmer utilizzando un MOSFET a canale N (IRF540), che è perfetto per questo genere di cose: può essere controllato da un segnale PWM, ed è praticamente indistruttibile, con valori massimi di 100 Volt e 33 Ampere, sufficientemente ampia per questo scopo (verifica rapida: 7 x 1 Watt = 7 Watt, diviso per 12 volt fornisce una corrente massima di circa 0,58 Ampere). Voglio usare questo dimmer per un altro apparecchio che ha 12 lampadine, ciascuna da 2 watt, che fornisce un massimo di 2 Ampere, quindi anche questo è sufficiente. L'unica cosa a cui prestare attenzione è la frequenza del segnale PWM, ma i soliti valori per Arduino o ESP8266 (500 Hz o 1kHz) non sono un problema.

Passaggio 1: Passaggio 1: i componenti

Passaggio 1: i componenti
Passaggio 1: i componenti
  1. Driver LED (convertitore da 230 volt CA a 12 volt CC) Per il mio scopo, voglio utilizzare un massimo di 24 Watt, quindi ho iniziato con un driver LED da 12 volt e 2 Ampere. Ne ho trovato uno in un sito di distributori cinesi. Questo driver è stato valutato 12 volt, 28 Watt, quindi era sufficiente per guidare l'apparecchio da solo. Per la tua situazione, potresti usare una versione più leggera o più pesante, a seconda del tuo dispositivo.
  2. MOSFET a canale n IRF540
  3. Adafruit Huzzah ESP8266 Breakout Poiché volevo usare il WiFi e adoro i prodotti Adafruit, ho scelto questa scheda: mi dà un ESP8266 con un comodo pinout di programmazione, un regolatore di potenza integrato e un fattore di forma elegante. È un po' eccessivo per questo progetto, ma rende i test e il debug molto più semplici.
  4. Convertitore DC-DC basato su LM2596 Per ricavare l'alimentazione per la scheda ESP dai 12 volt, avevo bisogno di un regolatore; questi piccoli convertitori sono molto efficienti e molto economici.
  5. Encoder rotativo con funzione pulsante, con luce led incorporata:

    www.sparkfun.com/products/10596

    Qualsiasi encoder rotativo andrebbe bene, ma mi è piaciuta la bella caratteristica aggiunta di un LED integrato.

  6. Pomello in plastica trasparente

    www.sparkfun.com/products/10597

  7. Resistenza 4k7
  8. Resistenza 1k

Fase 2: Fase 2: il circuito

Fase 2: il circuito
Fase 2: il circuito

Questo è il circuito che ho usato: ho usato i pin 4 e 5 come ingressi per l'encoder rotativo e il pin 0 per il pulsante. Il pin 0 è collegato anche al led rosso di bordo, quindi ho potuto verificare la funzione del pulsante sull'encode guardando questo led.

Il pin 16 è utilizzato per l'uscita PWM e l'ho collegato direttamente al led verde sull'encoder Sparkfun. L'ESP8266 è a 3, 3 volt e, anche con il 100%, ho misurato solo un'uscita di 2, 9 volt, quindi l'ho collegato direttamente senza un resistore in serie. Questa stessa uscita va al gate del MOSFET a canale n, tramite un resistore da 1 kOhm. Questo gate viene portato a 12 volt da un resistore da 4,7 kOhm.

Ho usato il convertitore DC-DC per convertire i 12 volt in 5,5 volt, questo è collegato all'ingresso V+ del breakout Adafruit. Avrei potuto usare 3,3 volt e collegarlo direttamente, ma questo è un po' più sicuro.

La lampada a LED da 12 V nel circuito è il mio apparecchio.

Passaggio 3: Passaggio 3: il codice

Passaggio 3: il codice
Passaggio 3: il codice

Ho messo il codice su GitHub:

Schizzo per il dimmer LED PWM ESP8266

Si basa su un'idea un'altra istruibile:

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

Ma questo era un controllo puramente locale, quindi ho aggiunto la mia soluzione domotica basata su MQTT. Fondamentalmente fa la stessa cosa, ma le differenze principali sono:

  • il numero predefinito di passaggi PWM con un Arduino è 255, con ESP8266 è 1023 (come ho scoperto in seguito, cercando di capire perché il mio apparecchio a LED non è salito fino al 100% di luminosità…)
  • Non ho usato il circuito "Totempole" con i 2 transistor, poiché il PWM era comunque DC e funzionava bene con l'IRF 540.
  • Non ho usato i resistori di pull-up da 10k per l'encoder, mi sono fidato dei pullup integrati dell'ESP8266.
  • L'ESP8266 utilizza la logica a 3,3 volt invece di 5 volt per l'Arduino, il che non si è rivelato un problema per l'IRF540

Il software ha le seguenti caratteristiche:

  • ruotando l'encoder si attenuerà la luce in alto (CW) o in basso (CCW), da 0 fino al 100%, in 1023 passi, con qualche accelerazione nei livelli inferiori.
  • premendo il pulsante si accenderà la luce quando è spenta, utilizzando l'ultimo livello di luminosità salvato, o la si spegnerà quando è accesa.
  • premendo il pulsante più a lungo mentre la luce è accesa salverà la luminosità corrente come livello predefinito.
  • premendo il pulsante più a lungo mentre la luce è spenta, la luce si accenderà al 100% di luminosità, senza modificare il livello predefinito.
  • Si collegherà alle impostazioni WiFi definite dalle stringhe 'SECRET_SSID' e 'SECRET_PASS', che vengono salvate in un file separato nel mio sketch, chiamato 'secrets.h'
  • Si collegherà a un server MQTT nella rete WiFi, utilizzando le stringhe "MQTTSERVER" e "MQTTPORT" nello stesso file.
  • Puoi utilizzare l'argomento in entrata MQTT 'domus/esp/in' per impartire comandi: 'ON' o 'OFF' per accendere o spegnere la luce, o un valore da 0 a 1023 per cambiare la luminosità.
  • Riporterà lo stato sugli argomenti MQTT 'domus/esp/uit' (stato ON o OFF) e 'domus/esp/uit/brightness' (il valore di luminosità).

Consigliato: