Taula de continguts:

Dimmer LED PWM de 12V amb ESP8266: 3 passos
Dimmer LED PWM de 12V amb ESP8266: 3 passos

Vídeo: Dimmer LED PWM de 12V amb ESP8266: 3 passos

Vídeo: Dimmer LED PWM de 12V amb ESP8266: 3 passos
Vídeo: Controlant led RGB amb AppInventor 2024, De novembre
Anonim
Dimmer LED PWM de 12V amb ESP8266
Dimmer LED PWM de 12V amb ESP8266

Mentre intentava que la meva llar fos més sostenible, canviava bombetes halògenes per llums led. Hi ha moltes alternatives disponibles per substituir qualsevol tipus de bombeta. Mentre feia això, em vaig trobar amb el següent problema: tenia un llum que utilitzava 7 bombetes halògenes de 12 volts, cadascuna de 10 watts. Aquesta llum estava controlada per un atenuador que funcionava bé. Quan vaig canviar les bombetes per llums led de 12 volts, cada 1 Watt, el regulador de llum va funcionar malament: la llum parpellejava i la regulació era una mica irregular. Aquest és un problema amb molts reguladors clàssics: tenen una potència mínima que necessiten per funcionar.

Per tant, basant-me en el meu sistema domòtic, vaig decidir canviar aquest regulador manual per un altre, que tindria l’avantatge addicional de poder ser controlat remotament. Ja havia construït un regulador de llum amb un MOSFET de canal N (IRF540), que és perfecte per a aquest tipus de coses: es pot controlar mitjançant un senyal PWM i és pràcticament indestructible, amb potències màximes de 100 volts i 33 amperes, suficientment ampli per a aquest propòsit (comprovació ràpida: 7 x 1 watt = 7 watts, dividit per 12 volts, dóna un corrent màxim d’aproximadament 0,58 amperes). Vull utilitzar aquest regulador de llum per a un altre dispositiu que tingui 12 bombetes, cadascuna de 2 watts, que doni un màxim de 2 amperes, de manera que també n’hi ha prou. L'única cosa que cal tenir en compte és la freqüència del senyal PWM, però els valors habituals d'Arduino o ESP8266 (500 Hz o 1 kHz) no són un problema.

Pas 1: Pas 1: els components

Pas 1: els components
Pas 1: els components
  1. Controlador LED (convertidor de 230 volts CA a 12 volts CC) Per al meu propòsit, vull utilitzar un màxim de 24 watts, de manera que vaig començar amb un controlador LED de 12 volts i 2 amperes. N’he trobat a un lloc distribuïdor xinès. Aquest controlador tenia una classificació de 12 volts, 28 watts, de manera que era suficient conduir l’aparell per si sol. Per a la vostra situació, podeu utilitzar una versió més lleugera o més pesada, segons el vostre dispositiu.
  2. MOSFET IRF540 de canal n
  3. Adafruit Huzzah ESP8266 Breakout Com que volia utilitzar el WiFi i m’encanten els productes d’Adafruit, he triat aquesta placa: em dóna un ESP8266 amb un pinout de programació convenient, un regulador de potència integrat i un factor de forma elegant. És una mica excessiu per a aquest projecte, però facilita molt la prova i depuració.
  4. Convertidor CC-CC basat en LM2596 Per obtenir la potència de la placa ESP dels 12 volts, necessitava un regulador; aquests convertidors petits són molt eficients i molt econòmics.
  5. Codificador rotatiu amb funció de botó, amb llum LED incorporada:

    www.sparkfun.com/products/10596

    Qualsevol codificador rotatiu ho faria, però em va agradar la bonica característica afegida d’un LED incorporat.

  6. Pom de plàstic transparent

    www.sparkfun.com/products/10597

  7. Resistència 4k7
  8. Resistència 1k

Pas 2: Pas 2: el circuit

Pas 2: el circuit
Pas 2: el circuit

Aquest és el circuit que he utilitzat: he utilitzat els pins 4 i 5 com a entrades per al codificador rotatiu i el pin 0 per al botó. El pin 0 també està connectat al led vermell integrat, de manera que he pogut comprovar la funció del botó del codificació veient aquest led.

El pin 16 s’utilitza per a la sortida PWM i ho he connectat directament al led verd del codificador Sparkfun. L'ESP8266 té 3, 3 volts i, fins i tot amb un 100%, només he mesurat la sortida de 2, 9 volts, de manera que el vaig connectar directament sense resistència de sèrie. Aquesta mateixa sortida es dirigeix a la porta del MOSFET de canal n, mitjançant una resistència d’1 kOhm. Aquesta porta s’eleva fins a 12 volts mitjançant una resistència de 4,7 kOhm.

He utilitzat el convertidor de CC-CC per convertir els 12 volts a 5,5 volts, això està connectat a l’entrada V + del breakout d’Adafruit. Podria haver utilitzat 3,3 volts i connectar-lo directament, però això és una mica més segur.

La làmpada LED de 12 V del circuit és la meva aplicació.

Pas 3: Pas 3: el codi

Pas 3: el codi
Pas 3: el codi

Vaig posar el codi a GitHub:

Esbós per a regulador PWM LED ESP8266

Es basa en una altra idea instructiva:

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

Però això era un control purament local, així que vaig afegir la meva pròpia solució domòtica basada en MQTT. Bàsicament fa el mateix, però les principals diferències són:

  • el nombre per defecte de passos PWM amb un Arduino és de 255, amb l'ESP8266 és de 1023 (com vaig saber més endavant, tot intentant esbrinar per què el meu dispositiu LED no va pujar fins al 100% de brillantor …)
  • No vaig utilitzar el circuit "Totempole" amb els 2 transistors, ja que el PWM era DC de totes maneres i funcionava bé amb l'IRF 540.
  • No he utilitzat les resistències extraccionàries de 10 k per al codificador, confiava en les extensions integrades de l’ESP8266.
  • L'ESP8266 utilitza una lògica de 3,3 volts en lloc de 5 volts per a l'Arduino, que no va demostrar cap problema per a l'IRF540

El programari té les funcions següents:

  • si gireu el codificador, es reduirà la llum cap amunt (CW) o cap avall (CCW), des del 0 fins al 100%, en 1023 passos, amb una mica d’acceleració en els nivells inferiors.
  • en prémer el botó, s'encendrà la llum quan estigui apagada, mitjançant l'últim nivell de brillantor desat, o s'apagarà quan estigui engegada.
  • si premeu el botó durant més temps mentre la llum està encesa, la brillantor actual es guardarà com a nivell predeterminat.
  • en prémer el botó durant més temps mentre la llum està apagada, la llum s’encendrà fins al 100% de brillantor, sense canviar el nivell per defecte.
  • Es connectarà a la configuració de WiFi definida per les cadenes "SECRET_SSID" i "SECRET_PASS", que es guarden en un fitxer separat del meu esbós, anomenat "secrets.h".
  • Es connectarà a un servidor MQTT a la xarxa WiFi mitjançant les cadenes 'MQTTSERVER' i 'MQTTPORT' del mateix fitxer.
  • Podeu utilitzar el tema entrant MQTT 'domus / esp / in' per emetre ordres: 'ON' o 'OFF' per encendre o apagar la llum, o bé un valor de 0 a 1023 per canviar la brillantor.
  • Informarà de l'estat dels temes MQTT 'domus / esp / uit' (estat ON o OFF) i 'domus / esp / uit / brightness' (el valor de la brillantor).

Recomanat: