Innholdsfortegnelse:

12V LED PWM dimmer med ESP8266: 3 trinn
12V LED PWM dimmer med ESP8266: 3 trinn

Video: 12V LED PWM dimmer med ESP8266: 3 trinn

Video: 12V LED PWM dimmer med ESP8266: 3 trinn
Video: Amazing arduino project 2024, Desember
Anonim
12V LED PWM dimmer med ESP8266
12V LED PWM dimmer med ESP8266

Mens jeg prøvde å gjøre min husholdning mer bærekraftig, byttet jeg halogenpærer mot LED -lys. Det er mange alternativer tilgjengelig for å bytte ut hvilken som helst type lyspære. Mens jeg gjorde dette, kom jeg over følgende problem: Jeg hadde en lampe som brukte 7 12 volt halogenpærer, hver 10 watt. Dette lyset ble styrt av en dimmer, som fungerte fint. Da jeg byttet pærene mot 12 volts LED -lys, hver 1 watt, fungerte dimmeren dårlig: lyset flimret og dimmingen noe uberegnelig. Dette er et problem med mange klassiske dimmere: de har en minimal effekt som de trenger for å fungere.

Så, basert på mitt domotics -system, bestemte jeg meg for å bytte ut denne manuelle dimmeren med en ny, noe som ville ha den ekstra fordelen at den kunne fjernstyres. Jeg hadde allerede bygget en dimmer ved hjelp av en N-kanal MOSFET (IRF540), som er perfekt for denne typen ting: den kan styres av et PWM-signal, og den er praktisk talt uforgjengelig, med maksimal effekt på 100 volt og 33 ampere, rikelig nok til dette formålet (hurtigsjekk: 7 x 1 Watt = 7 Watt, delt på 12 volt gir en maksimal strøm på omtrent.58 ampere). Jeg vil bruke denne dimmeren til en annen lampe som har 12 pærer, hver 2 watt, noe som gir maksimalt 2 ampere, så det er også tilstrekkelig. Det eneste som skal passe på frekvensen til PWM -signalet, men de vanlige verdiene for Arduino eller ESP8266 (500 Hz eller 1 kHz) er ikke et problem.

Trinn 1: Trinn 1: Komponentene

Trinn 1: Komponentene
Trinn 1: Komponentene
  1. LED Driver (230 volt AC til 12 volt DC converter) For mitt formål vil jeg bruke maksimalt 24 watt, så jeg begynte med en LED driver på 12 volt og 2 ampere. Jeg fant en på et kinesisk distributørsted. Denne sjåføren ble vurdert til 12 volt, 28 watt, så det var tilstrekkelig å drive armaturet av seg selv. For din egen situasjon kan du bruke en lettere eller tyngre versjon, avhengig av armaturet.
  2. IRF540 n-kanal MOSFET
  3. Adafruit Huzzah ESP8266 Breakout Fordi jeg ønsket å bruke WiFi, og jeg absolutt elsker Adafruits produkter, valgte jeg dette brettet: det gir meg en ESP8266 med en praktisk programmering pinout, en innebygd strømregulator og en elegant formfaktor. Det er litt overkill for dette prosjektet, men det gjør testing og feilsøking mye enklere.
  4. LM2596-basert DC-DC-omformer For å få strøm til ESP-kortet fra 12 volt, trengte jeg en regulator; disse små omformerne er veldig effektive og veldig billige.
  5. Rotary Encoder med knappfunksjon, med innebygd LED-lys:

    www.sparkfun.com/products/10596

    Enhver roterende encoder ville gjøre, men jeg likte den fine tilleggsfunksjonen til en innebygd LED.

  6. Klar plastknott

    www.sparkfun.com/products/10597

  7. Motstand 4k7
  8. Motstand 1k

Trinn 2: Trinn 2: Kretsen

Trinn 2: Kretsen
Trinn 2: Kretsen

Dette er kretsen jeg brukte: Jeg brukte pinner 4 og 5 som innganger for den roterende encoderen, og pin 0 for knappen. Pin 0 er også koblet til den innebygde røde lysdioden, så jeg kunne sjekke funksjonen til knappen på kodingen ved å se denne lysdioden.

Pin 16 brukes til PWM -utgangen, og jeg koblet dette direkte til den grønne lysdioden på Sparkfun -encoderen. ESP8266 er 3, 3 volt, og selv med 100%målte jeg bare 2, 9 volt utgang, så jeg koblet den direkte uten en seriemotstand. Den samme utgangen går til porten til n-kanal MOSFET, ved hjelp av en 1 kOhm motstand. Denne porten trekkes høyt til 12 volt av en 4,7 kOhm motstand.

Jeg brukte DC-DC-omformeren til å konvertere 12 volt til 5,5 volt, dette er koblet til V+ inngangen til Adafruit breakout. Jeg kunne ha brukt 3,3 volt og koblet den direkte, men dette er litt tryggere.

12 V LED -lampen i kretsen er min armatur.

Trinn 3: Trinn 3: Koden

Trinn 3: Koden
Trinn 3: Koden

Jeg la koden på GitHub:

Skisse for ESP8266 LED PWM dimmer

Den er basert på en ide som en annen kan lære:

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

Men dette var rent lokal kontroll, så jeg la til min egen MQTT-baserte domotikkløsning. Det gjør i utgangspunktet det samme, men de viktigste forskjellene er:

  • standard antall PWM -trinn med en Arduino er 255, med ESP8266 er det 1023 (som jeg fant ut senere, hele prøver å finne ut hvorfor LED -armaturen min ikke gikk opp til 100% lysstyrke …)
  • Jeg brukte ikke 'Totempole' -kretsen med de 2 transistorene, siden PWM uansett var DC, og fungerte bra med IRF 540.
  • Jeg brukte ikke 10k pull-up-motstander for koderen, jeg stolte på de innebygde pullupsene til ESP8266.
  • ESP8266 bruker 3,3 volt logikk i stedet for 5 volt for Arduino, noe som ikke viste seg å være noe problem for IRF540

Programvaren har følgende funksjoner:

  • Hvis du snur på encoderen, vil lyset dempe (CW) eller ned (CCW), fra 0 helt til 100%, i 1023 trinn, med litt fart i de lavere nivåene.
  • Trykk på knappen for å slå på lyset når det er slått av, ved hjelp av det sist lagrede lysstyrkenivået, eller slå det av når det er på.
  • Hvis du trykker på knappen i lengre tid mens lyset er på, lagres gjeldende lysstyrke som standardnivå.
  • Hvis du trykker på knappen lenger mens lyset er slått av, slås lyset på til 100% lysstyrke uten å endre standardnivået.
  • Den kobles til WiFi -innstillingene definert av strengene 'SECRET_SSID' og 'SECRET_PASS', som er lagret i en egen fil i skissen min, kalt 'secrets.h'
  • Den vil koble til en MQTT -server i WiFi -nettverket, ved hjelp av "MQTTSERVER" og "MQTTPORT" strengene i den samme filen.
  • Du kan bruke det innkommende emnet MQTT 'domus/esp/in' til å utstede kommandoer: 'ON' eller 'OFF' for å slå lyset på eller av, eller en verdi fra 0 til 1023 for å endre lysstyrken.
  • Den vil rapportere tilstanden om MQTT -emnene 'domus/esp/uit' (PÅ eller AV -status) og 'domus/esp/uit/lysstyrke' (lysstyrkeverdien).

Anbefalt: