Tabla de contenido:

Atenuador LED PWM de 12V con ESP8266: 3 pasos
Atenuador LED PWM de 12V con ESP8266: 3 pasos

Video: Atenuador LED PWM de 12V con ESP8266: 3 pasos

Video: Atenuador LED PWM de 12V con ESP8266: 3 pasos
Video: PWM en ESP32 en Arduino y controlador RGB 12V 2024, Mes de julio
Anonim
Atenuador LED PWM de 12V con ESP8266
Atenuador LED PWM de 12V con ESP8266

Mientras trataba de hacer que mi hogar fuera más sostenible, estaba cambiando bombillas halógenas por luces LED. Hay muchas alternativas disponibles para reemplazar cualquier tipo de bombilla. Mientras hacía esto, me encontré con el siguiente problema: tenía una lámpara que usaba 7 bombillas halógenas de 12 voltios, cada una de 10 vatios. Esta luz fue controlada por un atenuador, que funcionó bien. Cuando cambié las bombillas por luces led de 12 voltios, cada 1 vatio, el atenuador funcionó mal: la luz parpadeaba y la atenuación era algo errática. Este es un problema con muchos atenuadores clásicos: tienen una potencia nominal mínima, que necesitan para funcionar.

Entonces, en base a mi sistema de domótica, decidí cambiar este atenuador manual por uno nuevo, que tendría la ventaja adicional de poder ser controlado de forma remota. Ya había construido un atenuador usando un MOSFET de canal N (IRF540), que es perfecto para este tipo de cosas: puede ser controlado por una señal PWM, y es virtualmente indestructible, con clasificaciones máximas de 100 voltios y 33 amperios, suficiente para este propósito (comprobación rápida: 7 x 1 vatio = 7 vatios, dividido por 12 voltios da una corriente máxima de aproximadamente 0,58 amperios). Quiero usar este atenuador para otro dispositivo que tiene 12 bombillas, cada 2 vatios, lo que da un máximo de 2 amperios, por lo que también es suficiente. Lo único que hay que tener en cuenta es la frecuencia de la señal PWM, pero los valores habituales para Arduino o ESP8266 (500 Hz o 1kHz) no son un problema.

Paso 1: Paso 1: los componentes

Paso 1: los componentes
Paso 1: los componentes
  1. Controlador LED (convertidor de 230 voltios CA a 12 voltios CC) Para mi propósito, quiero usar un máximo de 24 vatios, así que comencé con un controlador LED de 12 voltios y 2 amperios. Encontré uno en el sitio de un distribuidor chino. Este controlador tenía una potencia de 12 voltios, 28 vatios, por lo que era suficiente para impulsar el dispositivo por sí solo. Para su propia situación, puede usar una versión más liviana o más pesada, dependiendo de su dispositivo.
  2. MOSFET de canal n IRF540
  3. Adafruit Huzzah ESP8266 Breakout Debido a que quería usar WiFi y me encantan los productos de Adafruit, elegí esta placa: me da un ESP8266 con un pinout de programación conveniente, un regulador de potencia integrado y un factor de forma elegante. Es un poco exagerado para este proyecto, pero hace que las pruebas y la depuración sean mucho más fáciles.
  4. Convertidor DC-DC basado en LM2596 Para derivar la energía para la placa ESP a partir de los 12 voltios, necesitaba un regulador; estos pequeños convertidores son muy eficientes y muy baratos.
  5. Codificador rotatorio con función de botón, con luz led incorporada:

    www.sparkfun.com/products/10596

    Cualquier codificador rotatorio serviría, pero me gustó la agradable característica adicional de un LED incorporado.

  6. Perilla de plástico transparente

    www.sparkfun.com/products/10597

  7. Resistencia 4k7
  8. Resistencia 1k

Paso 2: Paso 2: el circuito

Paso 2: el circuito
Paso 2: el circuito

Este es el circuito que utilicé: utilicé los pines 4 y 5 como entradas para el codificador rotatorio y el pin 0 para el botón. El pin 0 también está conectado al LED rojo incorporado, por lo que podría verificar la función del botón en la codificación mirando este LED.

El pin 16 se usa para la salida PWM, y lo conecté directamente al LED verde del codificador Sparkfun. El ESP8266 es de 3, 3 voltios, e incluso con el 100%, medí solo 2, 9 voltios de salida, así que lo conecté directamente sin una resistencia en serie. Esta misma salida va a la puerta del MOSFET de canal n, por medio de una resistencia de 1 kOhm. Esta puerta se eleva a 12 voltios mediante una resistencia de 4,7 kOhm.

Usé el convertidor DC-DC para convertir los 12 voltios a 5.5 voltios, este está conectado a la entrada V + de la ruptura Adafruit. Podría haber usado 3.3 voltios y conectarlo directamente, pero esto es un poco más seguro.

La lámpara LED de 12 V en el circuito es mi accesorio.

Paso 3: Paso 3: el código

Paso 3: el código
Paso 3: el código

Pongo el código en GitHub:

Boceto para atenuador LED PWM ESP8266

Se basa en una idea de otro instructable:

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

Pero esto era un control puramente local, así que agregué mi propia solución domótica basada en MQTT. Básicamente hace lo mismo, pero las principales diferencias son:

  • el número predeterminado de pasos de PWM con un Arduino es 255, con el ESP8266 es 1023 (como descubrí más tarde, tratando de averiguar por qué mi dispositivo LED no subió hasta el 100% de brillo …)
  • No usé el circuito 'Totempole' con los 2 transistores, ya que el PWM era DC de todos modos, y funcionó bien con el IRF 540.
  • No utilicé las resistencias pull-up de 10k para el codificador, confié en las pullups incorporadas del ESP8266.
  • El ESP8266 usa una lógica de 3.3 voltios en lugar de 5 voltios para el Arduino, lo que no resultó un problema para el IRF540

El software tiene las siguientes características:

  • al girar el codificador se atenuará la luz hacia arriba (CW) o hacia abajo (CCW), desde 0 hasta el 100%, en 1023 pasos, con un poco de aceleración en los niveles inferiores.
  • presionar el botón encenderá la luz cuando esté apagada, usando el último nivel de brillo guardado, o la apagará cuando esté encendida.
  • si presiona el botón durante más tiempo mientras la luz está encendida, se guardará el brillo actual como el nivel predeterminado.
  • al presionar el botón durante más tiempo mientras la luz está apagada, la luz se encenderá al 100% de brillo, sin cambiar el nivel predeterminado.
  • Se conectará a la configuración de WiFi definida por las cadenas 'SECRET_SSID' y 'SECRET_PASS', que se guardan en un archivo separado en mi boceto, llamado 'secrets.h'
  • Se conectará a un servidor MQTT en la red WiFi, utilizando las cadenas 'MQTTSERVER' y 'MQTTPORT' en el mismo archivo.
  • Puede usar el tema entrante de MQTT 'domus / esp / in' para emitir comandos: 'ON' u 'OFF' para encender o apagar la luz, o un valor de 0 a 1023 para cambiar el brillo.
  • Informará el estado de los temas MQTT 'domus / esp / uit' (estado ON u OFF) y 'domus / esp / uit / shine' (el valor de brillo).

Recomendado: