Inhoudsopgave:

12V LED PWM-dimmer met ESP8266 - Ajarnpa
12V LED PWM-dimmer met ESP8266 - Ajarnpa

Video: 12V LED PWM-dimmer met ESP8266 - Ajarnpa

Video: 12V LED PWM-dimmer met ESP8266 - Ajarnpa
Video: ESP8266 PWM LED Dimmer - 12v Solar Shed 2024, Juli-
Anonim
12V LED PWM-dimmer met ESP8266
12V LED PWM-dimmer met ESP8266

Terwijl ik probeerde mijn huishouden te verduurzamen, verwisselde ik halogeenlampen voor led-verlichting. Er zijn voldoende alternatieven beschikbaar om elk type gloeilamp te vervangen. Terwijl ik dit deed, kwam ik het volgende probleem tegen: ik had een armatuur die 7 12 volt halogeenlampen gebruikte, elk 10 Watt. Dit licht werd aangestuurd door een dimmer, wat prima werkte. Toen ik de lampen verwisselde voor 12 volt led-lampen van elk 1 Watt, werkte de dimmer slecht: het licht flikkerde en het dimmen enigszins grillig. Dit is een probleem met veel klassieke dimmers: ze hebben een minimaal vermogen, dat ze nodig hebben om te werken.

Dus op basis van mijn domoticasysteem besloot ik deze handmatige dimmer te vervangen door een nieuwe, met als bijkomend voordeel dat hij op afstand te bedienen zou zijn. Ik had al een dimmer gebouwd met behulp van een N-kanaals MOSFET (IRF540), die perfect is voor dit soort dingen: hij kan worden bestuurd door een PWM-signaal en hij is vrijwel onverwoestbaar, met maximale nominale waarden van 100 volt en 33 ampère, hiervoor ruim voldoende (snelle controle: 7 x 1 Watt = 7 Watt, gedeeld door 12 volt geeft een maximale stroom van ongeveer 0,58 Ampère). Ik wil deze dimmer gebruiken voor een ander armatuur met 12 lampen van elk 2 watt, wat maximaal 2 Ampère geeft, dus dat is ook voldoende. Het enige waar je op moet letten is de frequentie van het PWM-signaal, maar de gebruikelijke waarden voor Arduino of ESP8266 (500 Hz of 1kHz) zijn geen probleem.

Stap 1: Stap 1: de componenten

Stap 1: de componenten
Stap 1: de componenten
  1. LED Driver (230 volt AC naar 12 volt DC converter) Voor mijn doel wil ik maximaal 24 Watt gebruiken, dus ben ik begonnen met een LED driver van 12 volt en 2 Ampère. Ik vond er een op een Chinese distributeursite. Deze driver had een nominaal vermogen van 12 volt, 28 watt, dus het was voldoende om het armatuur zelf aan te drijven. Voor uw eigen situatie kunt u, afhankelijk van uw armatuur, een lichtere of zwaardere versie gebruiken.
  2. IRF540 n-kanaals MOSFET
  3. Adafruit Huzzah ESP8266 BreakoutOmdat ik WiFi wilde gebruiken en ik absoluut dol ben op de producten van Adafruit, heb ik voor dit bord gekozen: het geeft me een ESP8266 met een handige programmeerpinout, een ingebouwde stroomregelaar en een elegante vormfactor. Het is een beetje overkill voor dit project, maar het maakt het testen en debuggen veel gemakkelijker.
  4. Op LM2596 gebaseerde DC-DC-converter Om de stroom voor het ESP-bord uit de 12 volt te halen, had ik een regelaar nodig; deze kleine converters zijn zeer efficiënt en erg goedkoop.
  5. Rotary Encoder met knopfunctie, met ingebouwd led-licht:

    www.sparkfun.com/products/10596

    Elke roterende encoder zou het doen, maar ik vond de leuke toegevoegde functie van een ingebouwde LED leuk.

  6. Doorzichtige plastic knop

    www.sparkfun.com/products/10597

  7. Weerstand 4k7
  8. Weerstand 1k

Stap 2: Stap 2: het circuit

Stap 2: het circuit
Stap 2: het circuit

Dit is het circuit dat ik heb gebruikt: ik gebruikte pinnen 4 en 5 als ingangen voor de roterende encoder en pin 0 voor de knop. Pin 0 is ook verbonden met de rode led aan boord, dus ik kon de functie van de knop op de codering controleren door naar deze led te kijken.

Pin 16 wordt gebruikt voor de PWM-uitgang en deze heb ik rechtstreeks aangesloten op de groene led op de Sparkfun-encoder. De ESP8266 is 3, 3 volt, en zelfs met 100% heb ik slechts 2, 9 volt output gemeten, dus ik heb hem rechtstreeks aangesloten zonder een serieweerstand. Deze zelfde uitgang gaat naar de Gate van de n-kanaals MOSFET, door middel van een weerstand van 1kOhm. Deze Gate wordt door een weerstand van 4,7 kOhm naar 12 volt getrokken.

Ik heb de DC-DC converter gebruikt om de 12 volt om te zetten naar 5,5 volt, deze is aangesloten op de V+ ingang van de Adafruit breakout. Ik had 3,3 volt kunnen gebruiken en direct kunnen aansluiten, maar dit is iets veiliger.

De 12 V LED-lamp in het circuit is mijn armatuur.

Stap 3: Stap 3: de code

Stap 3: de code
Stap 3: de code

Ik heb de code op GitHub gezet:

Schets voor ESP8266 LED PWM-dimmer

Het is gebaseerd op een idee een andere instructable:

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

Maar dit was puur lokale controle, dus ik heb mijn eigen op MQTT gebaseerde domotica-oplossing toegevoegd. Het doet in principe hetzelfde, maar de belangrijkste verschillen zijn:

  • standaard aantal PWM-stappen met een Arduino is 255, met de ESP8266 is het 1023 (zoals ik later ontdekte, in een poging om erachter te komen waarom mijn LED-armatuur niet helemaal naar 100% helderheid ging …)
  • Ik heb het 'Totempole'-circuit niet gebruikt met de 2 transistors, omdat de PWM toch DC was en prima werkte met de IRF 540.
  • Ik heb de 10k pull-up weerstanden niet gebruikt voor de encoder, ik vertrouwde op de ingebouwde pullups van de ESP8266.
  • De ESP8266 gebruikt 3.3 volt logica in plaats van 5 volt voor de Arduino, wat geen probleem bleek voor de IRF540

De software heeft de volgende kenmerken:

  • door aan de encoder te draaien, dimt het licht omhoog (CW) of omlaag (CCW), van 0 helemaal tot 100%, in 1023 stappen, met enige versnelling in de lagere niveaus.
  • Als u op de knop drukt, wordt het licht ingeschakeld wanneer het uit is, met gebruikmaking van het laatst opgeslagen helderheidsniveau, of wordt het uitgeschakeld wanneer het aan is.
  • door de knop langer in te drukken terwijl het licht aan is, wordt de huidige helderheid als het standaardniveau opgeslagen.
  • Als u de knop langer ingedrukt houdt terwijl het licht uit is, wordt het licht ingeschakeld tot 100% helderheid, zonder het standaardniveau te wijzigen.
  • Het zal verbinding maken met de WiFi-instellingen gedefinieerd door de 'SECRET_SSID' en 'SECRET_PASS' strings, die zijn opgeslagen in een apart bestand in mijn schets, genaamd 'secrets.h'
  • Het maakt verbinding met een MQTT-server in het WiFi-netwerk, met behulp van de 'MQTTSERVER'- en 'MQTTPORT'-strings in hetzelfde bestand.
  • U kunt het inkomende MQTT-onderwerp 'domus/esp/in' gebruiken om opdrachten uit te voeren: 'AAN' of 'UIT' om het licht aan of uit te zetten, of een waarde van 0 tot 1023 om de helderheid te wijzigen.
  • Het rapporteert de status van de MQTT-onderwerpen 'domus/esp/uit' (AAN- of UIT-status) en 'domus/esp/uit/brightness' (de helderheidswaarde).

Aanbevolen: