Índice:

Dimmer 12V LED PWM com ESP8266: 3 etapas
Dimmer 12V LED PWM com ESP8266: 3 etapas

Vídeo: Dimmer 12V LED PWM com ESP8266: 3 etapas

Vídeo: Dimmer 12V LED PWM com ESP8266: 3 etapas
Vídeo: LED Driver PWM ШИМ 2024, Julho
Anonim
Dimmer 12V LED PWM com ESP8266
Dimmer 12V LED PWM com ESP8266

Enquanto tentava tornar minha casa mais sustentável, eu estava trocando lâmpadas halógenas por lâmpadas led. Existem muitas alternativas disponíveis, para substituir qualquer tipo de lâmpada. Enquanto fazia isso, me deparei com o seguinte problema: eu tinha uma luminária que usava 7 lâmpadas halógenas de 12 volts, cada uma de 10 watts. Esta luz foi controlada por um dimmer, que funcionou bem. Quando troquei as lâmpadas por lâmpadas led de 12 volts, cada uma de 1 Watt, o dimmer funcionou mal: a luz estava piscando, e o escurecimento um tanto irregular. Este é um problema com muitos dimmers clássicos: eles têm uma classificação de potência mínima, necessária para funcionar.

Assim, com base no meu sistema de domótica, decidi trocar este dimmer manual por um novo, que teria a vantagem de poder ser controlado remotamente. Eu já havia construído um dimmer usando um MOSFET de canal N (IRF540), que é perfeito para esse tipo de coisa: pode ser controlado por um sinal PWM, e é virtualmente indestrutível, com classificações máximas de 100 volts e 33 Amps, o suficiente para este propósito (verificação rápida: 7 x 1 Watt = 7 Watts, dividido por 12 volts dá uma corrente máxima de cerca de 0,58 Amperes). Quero usar este dimmer para outra luminária que tem 12 lâmpadas, cada 2 watts, o que dá no máximo 2 amperes, então isso também é suficiente. A única coisa a se observar é a frequência do sinal PWM, mas os valores usuais para Arduino ou ESP8266 (500 Hz ou 1kHz) não são problema.

Etapa 1: Etapa 1: os componentes

Etapa 1: os componentes
Etapa 1: os componentes
  1. Driver de LED (conversor de 230 volts AC para 12 volts DC) Para o meu propósito, quero usar no máximo 24 Watts, então comecei com um driver de LED de 12 volts e 2 Amps. Encontrei um no site de um distribuidor chinês. Este driver tinha potência nominal de 12 volts, 28 Watts, portanto, era suficiente para acionar o aparelho sozinho. Para sua própria situação, você pode usar uma versão mais leve ou mais pesada, dependendo do seu equipamento.
  2. MOSFET IRF540 de canal n
  3. Adafruit Huzzah ESP8266 BreakoutPorque eu queria usar WiFi e adoro os produtos da Adafruit, escolhi esta placa: ela me dá uma ESP8266 com uma pinagem de programação conveniente, um regulador de energia integrado e um formato elegante. É um pouco exagero para este projeto, mas torna o teste e a depuração muito mais fáceis.
  4. Conversor DC-DC baseado em LM2596. Para derivar a energia para a placa ESP dos 12 volts, eu precisava de um regulador; esses pequenos conversores são muito eficientes e muito baratos.
  5. Codificador Rotativo com função de botão, com luz led embutida:

    www.sparkfun.com/products/10596

    Qualquer codificador giratório serve, mas gostei do bom recurso adicional de um LED integrado.

  6. Botão de plástico transparente

    www.sparkfun.com/products/10597

  7. Resistor 4k7
  8. Resistor 1k

Etapa 2: Etapa 2: o circuito

Etapa 2: o circuito
Etapa 2: o circuito

Este é o circuito que usei: usei os pinos 4 e 5 como entradas para o codificador rotativo e o pino 0 para o botão. O pino 0 também está conectado ao led vermelho on-board, então pude verificar a função do botão na codificação observando este led.

O pino 16 é usado para a saída PWM, e eu o conectei diretamente ao led verde no codificador Sparkfun. O ESP8266 tem 3, 3 volts e mesmo com 100%, medi apenas 2, 9 volts de saída, então o conectei diretamente sem um resistor em série. Essa mesma saída vai para o Gate do MOSFET de canal n, por meio de um resistor de 1kOhm. Este Gate é puxado para 12 volts por um resistor de 4,7 kOhm.

Eu usei o conversor DC-DC para converter 12 volts para 5,5 volts, este é conectado à entrada V + do breakout Adafruit. Eu poderia ter usado 3,3 volts e conectado diretamente, mas isso é um pouco mais seguro.

A lâmpada LED de 12 V no circuito é meu acessório.

Etapa 3: Etapa 3: o Código

Etapa 3: o código
Etapa 3: o código

Eu coloquei o código no GitHub:

Sketch para ESP8266 LED PWM dimmer

É baseado em uma ideia outra instrutível:

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

Mas isso era controle puramente local, então eu adicionei minha própria solução de domótica baseada em MQTT. Ele basicamente faz a mesma coisa, mas as principais diferenças são:

  • o número padrão de etapas de PWM com um Arduino é 255, com o ESP8266 é 1023 (como descobri mais tarde, tentando descobrir por que minha luminária de LED não subiu até 100% de brilho …)
  • Eu não usei o circuito 'Totempole' com os 2 transistores, já que o PWM era DC de qualquer maneira, e funcionou bem com o IRF 540.
  • Eu não usei os resistores pull-up de 10k para o codificador, confiei nos pullups integrados do ESP8266.
  • O ESP8266 usa lógica de 3,3 volts em vez de 5 volts para o Arduino, o que não provou ser problema para o IRF540

O software possui os seguintes recursos:

  • girar o codificador aumentará (CW) ou diminuirá (CCW), de 0 a 100%, em 1023 etapas, com alguma aceleração nos níveis inferiores.
  • pressionar o botão acenderá a luz quando ela estiver desligada, usando o último nível de brilho salvo, ou desligará quando estiver ligada.
  • pressionar o botão por mais tempo enquanto a luz estiver acesa salvará o brilho atual como o nível padrão.
  • pressionar o botão por mais tempo enquanto a luz está apagada acenderá a luz com 100% de brilho, sem alterar o nível padrão.
  • Ele se conectará às configurações de WiFi definidas pelas strings 'SECRET_SSID' e 'SECRET_PASS', que são salvas em um arquivo separado em meu esboço, chamado 'secrets.h'
  • Ele se conectará a um servidor MQTT na rede WiFi, usando as sequências 'MQTTSERVER' e 'MQTTPORT' no mesmo arquivo.
  • Você pode usar o tópico de entrada MQTT 'domus / esp / in' para emitir comandos: 'ON' ou 'OFF "para ligar ou desligar a luz, ou um valor de 0 a 1023 para alterar o brilho.
  • Ele relatará o estado nos tópicos MQTT 'domus / esp / uit' (status LIGADO ou DESLIGADO) e 'domus / esp / uit / brilho' (o valor de brilho).

Recomendado: