Talaan ng mga Nilalaman:

12V LED PWM Dimmer Sa ESP8266: 3 Mga Hakbang
12V LED PWM Dimmer Sa ESP8266: 3 Mga Hakbang

Video: 12V LED PWM Dimmer Sa ESP8266: 3 Mga Hakbang

Video: 12V LED PWM Dimmer Sa ESP8266: 3 Mga Hakbang
Video: Complete Guide for 15A 400W MOSFET AOD4184A to control motor or load 2024, Hulyo
Anonim
12V LED PWM Dimmer Sa ESP8266
12V LED PWM Dimmer Sa ESP8266

Habang sinusubukang gawing mas napapanatili ang aking sambahayan, nagpapalitan ako ng mga bombilya ng halogen para sa mga humantong ilaw. Mayroong maraming mga kahalili na magagamit, upang mapalitan ang anumang uri ng bombilya. Habang ginagawa ito, nahanap ko ang sumusunod na problema: Mayroon akong isang ilaw na kabit na gumagamit ng 7 12 volt halogen bombilya, bawat 10 Watts. Ang ilaw na ito ay kinokontrol ng isang dimmer, na gumana nang maayos. Nang palitan ko ang mga bombilya ng 12 volt led light, bawat 1 Watt, hindi maganda ang paggana ng dimmer: ang ilaw ay kumikislap, at ang pagdilim ay medyo hindi nagagalaw. Ito ay isang problema sa maraming mga klasikal na dimmer: mayroon silang isang minimal na rating ng kuryente, na kailangan nila upang gumana.

Kaya, batay sa aking system ng domotics, nagpasya akong palitan ang manu-manong dimmer ng bago, na magkakaroon ng karagdagang kalamangan na makontrol ang malayo. Nakabuo na ako ng isang dimmer gamit ang isang N-channel MOSFET (IRF540), na perpekto para sa ganitong uri ng bagay: maaari itong makontrol ng isang PWM signal, at ito ay halos hindi masisira, na may pinakamataas na rating ng 100 volts at 33 Amps, sapat na sapat para sa hangaring ito (mabilis na pagsusuri: 7 x 1 Watt = 7 Watts, na hinati ng 12 volts ay nagbibigay ng isang maximum na kasalukuyang mga tungkol sa.58 Amps). Nais kong gamitin ang dimmer na ito para sa isa pang kabit na may 12 bombilya, bawat 2 watts, na nagbibigay ng maximum na 2 Amps, kaya't sapat din iyon. Ang tanging bagay na dapat abangan para dito ang dalas ng signal ng PWM, ngunit ang karaniwang mga halaga para sa Arduino o ESP8266 (500 Hz o 1kHz) ay hindi isang problema.

Hakbang 1: Hakbang 1: ang Mga Bahagi

Hakbang 1: ang Mga Sangkap
Hakbang 1: ang Mga Sangkap
  1. LED Driver (230 volts AC hanggang 12 volts DC converter) Para sa aking hangarin, nais kong gumamit ng maximum na 24 Watts, kaya nagsimula ako sa isang LED driver na 12 volts at 2 Amps. Natagpuan ko ang isa sa isang site ng pamamahagi ng Tsino. Ang driver na ito ay na-rate na 12 volts, 28 Watts, kaya't sapat na ito upang magmaneho ng kabit nang mag-isa. Para sa iyong sariling sitwasyon, maaari kang gumamit ng isang mas magaan o mabibigat na bersyon, depende sa iyong kabit.
  2. IRF540 n-channel MOSFET
  3. Dahil nais kong gumamit ng WiFi, at lubos kong mahal ang mga produkto ng Adafruit, pinili ko ang board na ito: binibigyan ako ng isang ESP8266 na may isang maginhawang programa pinout, isang on-board power regulator, at isang matikas na form factor. Ito ay isang maliit na labis na labis na labis na paggamit para sa proyektong ito, ngunit ginagawang mas madali ang pagsubok at pag-debug.
  4. LM2596 based DC-DC converter Upang makuha ang lakas para sa board ng ESP mula sa 12 volt, kailangan ko ng isang regulator; ang maliliit na mga converter na ito ay napakahusay, at napakamurang.
  5. Ang Rotary Encoder na may pag-andar ng pindutan, na may built-in na humantong ilaw:

    www.sparkfun.com/products/10596

    Ang anumang rotary encoder ay gagawin, ngunit nagustuhan ko ang magandang idinagdag na tampok ng isang built-in na LED.

  6. Malinaw na plastic knob

    www.sparkfun.com/products/10597

  7. Resistor 4k7
  8. Resistor 1k

Hakbang 2: Hakbang 2: ang Circuit

Hakbang 2: ang Circuit
Hakbang 2: ang Circuit

Ito ang ginamit kong circuit: Gumamit ako ng mga pin na 4 & 5 bilang mga input para sa rotary encoder, at pin 0 para sa pindutan. Ang Pin 0 ay konektado din sa on-board na pulang humantong, kaya't maaari kong suriin ang pagpapaandar ng pindutan sa encode sa pamamagitan ng panonood ng led na ito.

Ang Pin 16 ay ginagamit para sa output ng PWM, at konektado ko ito nang direkta sa berdeng humantong sa encoder ng Sparkfun. Ang ESP8266 ay 3, 3 volts, at kahit na may 100%, sinukat ko lamang ang 2, 9 volts output, kaya't konektado ko ito nang direkta nang walang isang resistor ng serye. Ang parehong output na ito ay pupunta sa Gate ng n-channel MOSFET, sa pamamagitan ng isang resistor na 1kOhm. Ang Gate na ito ay nakuha nang mataas sa 12 volts ng isang 4.7 kOhm resistor.

Ginamit ko ang DC-DC converter upang i-convert ang 12 volts sa 5.5 volts, nakakonekta ito sa input na V + ng breakout ng Adafruit. Maaaring gumamit ako ng 3.3 volts at direktang konektado ito, ngunit medyo mas ligtas ito.

Ang 12 V LED Lamp sa circuit ay ang aking kabit.

Hakbang 3: Hakbang 3: ang Code

Hakbang 3: ang Code
Hakbang 3: ang Code

Inilagay ko ang code sa GitHub:

Sketch para sa ESP8266 LED PWM dimmer

Ito ay batay sa isang ideya ng isa pang itinuturo:

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

Ngunit ito ay pulos lokal na kontrol, kaya nagdagdag ako ng aking sariling solusyon sa domotics na nakabatay sa MQTT. Karaniwan itong gumagawa ng parehong bagay, ngunit ang mga pangunahing pagkakaiba ay:

  • default na bilang ng mga hakbang sa PWM na may isang Arduino ay 255, sa ESP8266 ito ay 1023 (tulad ng nalaman ko sa paglaon, buong pagsubok na malaman kung bakit ang aking LED na kabit ay hindi umakyat hanggang sa 100% ningning …)
  • Hindi ko ginamit ang circuit na 'Totempole' sa 2 transistors, dahil ang PWM ay DC pa rin, at gumana nang maayos sa IRF 540.
  • Hindi ko ginamit ang 10k pull-up resistors para sa encoder, pinagkakatiwalaan ko ang built-in na pullup ng ESP8266.
  • Gumagamit ang ESP8266 ng 3.3 volt na lohika sa halip na 5 volt para sa Arduino, na napatunayan na walang problema para sa IRF540

Ang software ay may mga sumusunod na tampok:

  • ang pag-encoder ay madidilim ang ilaw pataas (CW) o pababa (CCW), mula sa 0 hanggang 100%, sa 1023 na mga hakbang, na may ilang pagbilis sa mas mababang mga antas.
  • ang pagpindot sa pindutan ay bubukas ang ilaw kapag ito ay naka-off, gamit ang huling nai-save na antas ng ningning, o patayin ito kapag naka-on ito.
  • ang pagpindot sa pindutan para sa isang mas mahabang oras habang ang ilaw ay naka-save ang kasalukuyang ningning bilang default na antas.
  • ang pagpindot sa pindutan ng mas mahabang oras habang patay ang ilaw ay magpapasara sa ilaw sa 100% na ilaw, nang hindi binabago ang antas ng default.
  • Makakonekta ito sa mga setting ng WiFi na tinukoy ng mga string na 'SECRET_SSID' at 'SECRET_PASS', na nai-save sa isang hiwalay na file sa aking sketch, na tinatawag na 'sikreto.h'
  • Makakonekta ito sa isang MQTT server sa WiFi network, gamit ang mga string na 'MQTTSERVER' at 'MQTTPORT' sa parehong file.
  • Maaari mong gamitin ang papasok na paksa ng MQTT na 'domus / esp / in' upang mag-isyu ng mga utos: 'ON' o 'OFF "upang i-on o i-off ang ilaw, o isang halaga mula 0 hanggang 1023 upang mabago ang liwanag.
  • Iuulat nito ang estado sa mga paksang MQTT na 'domus / esp / uit' (ON o OFF status) at 'domus / esp / uit / brightness' (ang halaga ng ningning).

Inirerekumendang: