Mündəricat:

ESP8266 ilə 12V LED PWM Dimmer: 3 addım
ESP8266 ilə 12V LED PWM Dimmer: 3 addım

Video: ESP8266 ilə 12V LED PWM Dimmer: 3 addım

Video: ESP8266 ilə 12V LED PWM Dimmer: 3 addım
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Noyabr
Anonim
ESP8266 ilə 12V LED PWM Dimmer
ESP8266 ilə 12V LED PWM Dimmer

Evimi daha dayanıqlı hala gətirməyə çalışarkən, halogen ampulləri led işıqlara dəyişirdim. İstənilən növ ampulü əvəz etmək üçün bir çox alternativ var. Bunu edərkən aşağıdakı problemlə qarşılaşdım: Hər biri 10 Vatt olan 7 12 voltluq halojen lampadan istifadə edən bir işıq qurğum vardı. Bu işığı yaxşı işləyən bir dimmer idarə edirdi. Ampulləri hər biri 1 Vatt olan 12 voltlu LED işıqlara dəyişəndə, dimmer pis işləyirdi: işıq titrəyirdi və qaranlıq bir qədər düzensiz idi. Bu, bir çox klassik dimmerlərdə bir problemdir: işləmək üçün ehtiyac duyduqları minimum güc dərəcəsinə malikdirlər.

Buna görə də, domotika sistemimə əsaslanaraq, uzaqdan idarə olunmanın əlavə üstünlüyünə malik olan bu əl dimmerini yenisi ilə dəyişdirmək qərarına gəldim. Artıq N-kanallı MOSFET (IRF540) istifadə edərək bir dimmer qurmuşdum ki, bu cür şeylər üçün idealdır: PWM siqnalı ilə idarə oluna bilər və 100 volt və 33 Amper maksimum reytinqə malik demək olar ki, pozulmazdır. bu məqsəd üçün kifayət qədər (sürətli yoxlama: 7 x 1 Watt = 7 Watt, 12 volta bölünərək maksimum.58 Amper maksimum cərəyan verir). Bu dimmerdən hər biri 2 vat olan, maksimum 2 Amper verən 12 ampulə malik başqa bir qurğu üçün istifadə etmək istəyirəm ki, bu da kifayətdir. PWM siqnalının tezliyinə diqqət yetirmək lazım olan yeganə şey, ancaq Arduino və ya ESP8266 (500 Hz və ya 1kHz) üçün adi dəyərlər problem deyil.

Addım 1: Adım 1: Komponentlər

Addım 1: Komponentlər
Addım 1: Komponentlər
  1. LED Sürücü (230 volt AC - 12 volt DC çevirici) Məqsədim üçün maksimum 24 Vat istifadə etmək istəyirəm, buna görə 12 volt və 2 Amperlik bir LED sürücüsü ilə başladım. Çinli bir distribyutor saytında tapdım. Bu sürücü 12 volt, 28 vat qiymətləndirildi, buna görə armaturu tək başına idarə etmək kifayət idi. Şəxsi vəziyyətiniz üçün armaturunuzdan asılı olaraq daha yüngül və ya daha ağır versiyadan istifadə edə bilərsiniz.
  2. IRF540 n kanallı MOSFET
  3. Adafruit Huzzah ESP8266 BreakoutWifi istifadə etmək istədiyim üçün və Adafruit-in məhsullarını çox bəyəndiyim üçün bu lövhəni seçdim: mənə rahat bir proqramlaşdırma pinoutu, bortda güc tənzimləyicisi və zərif bir forma faktoru olan bir ESP8266 verir. Bu layihə üçün bir az həddindən artıqdır, ancaq test etməyi və ayıklamayı çox asanlaşdırır.
  4. LM2596 əsaslı DC-DC çeviricisi 12 voltdan ESP lövhəsinin gücünü əldə etmək üçün bir tənzimləyiciyə ehtiyacım var; bu kiçik çeviricilər çox səmərəli və çox ucuzdur.
  5. Daxili led işığı olan düymə funksiyası olan Rotary Encoder:

    www.sparkfun.com/products/10596

    Hər hansı bir dönər kodlayıcı edərdi, amma daxili LED-in gözəl əlavə xüsusiyyətini bəyəndim.

  6. Şəffaf plastik düymə

    www.sparkfun.com/products/10597

  7. Rezistor 4k7
  8. Rezistor 1k

Adım 2: Adım 2: Dövrə

Addım 2: Dövrə
Addım 2: Dövrə

İstifadə etdiyim sxem budur: Döner kodlayıcı üçün giriş olaraq 4 və 5 sancaqlar və düymə üçün 0 pin istifadə etdim. Pin 0 həm də göyərtədəki qırmızı ledə bağlıdır, buna görə də bu ledə baxaraq koddakı düymənin funksiyasını yoxlaya bilərdim.

Pin 16, PWM çıxışı üçün istifadə olunur və mən bunu birbaşa Sparkfun kodlayıcıdakı yaşıl ledə bağladım. ESP8266 3, 3 voltdur və hətta 100%olsa da, yalnız 2, 9 voltluq bir çıxış ölçdüm, buna görə də birbaşa bir sıra rezistor olmadan bağladım. Eyni çıxış 1kOhm müqavimət vasitəsi ilə n-kanallı MOSFET-in qapısına gedir.

12 voltı 5.5 volta çevirmək üçün DC-DC çeviricisini istifadə etdim, bu Adafruit qırılmasının V+ girişinə bağlıdır. 3.3 volt istifadə edib birbaşa qoşa bilərdim, amma bu bir az daha təhlükəsizdir.

Dövrədəki 12 V LED Lampa mənim armaturumdur.

Addım 3: Adım 3: Kod

Addım 3: Kod
Addım 3: Kod

Kodu GitHub -a qoydum:

ESP8266 LED PWM dimmer üçün eskiz

Başqa bir göstərişli bir fikrə əsaslanır:

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

Ancaq bu tamamilə yerli nəzarət idi, buna görə öz MQTT əsaslı domotika həllimi əlavə etdim. Əsasən eyni şeyi edir, amma əsas fərqlər bunlardır:

  • Arduino ilə PWM addımlarının standart sayı 255 -dir, ESP8266 -da 1023 -dir (daha sonra öyrəndiyim kimi, LED qurğumun niyə 100% parlaqlığa qədər getmədiyini anlamağa çalışıram …)
  • PWM hər halda DC olduğu üçün 2 tranzistorla 'Totempole' sxemini istifadə etmədim və IRF 540 ilə yaxşı işlədim.
  • Enkoder üçün 10k çəkmə müqavimətlərindən istifadə etmədim, ESP8266-nın quraşdırılmış çəkilmələrinə etibar etdim.
  • ESP8266, Arduino üçün 5 volt əvəzinə 3.3 volt məntiq istifadə edir ki, bu da IRF540 üçün heç bir problem yaratmadı.

Proqram aşağıdakı xüsusiyyətlərə malikdir:

  • Enkoderi çevirmək, 1023 addımda 0 -dan 100%-ə qədər işığı yuxarı (CW) və ya aşağı (CCW) söndürəcək, bəziləri isə aşağı səviyyələrdə sürətlənir.
  • düyməsinə basmaq işığı söndürüldükdə, son saxlanan parlaqlıq səviyyəsindən istifadə edərək yandıracaq və ya yandırıldıqda söndürəcək.
  • işıq yanarkən düyməni daha uzun müddət basıldıqda cari parlaqlıq standart səviyyədə saxlanılır.
  • işığı söndürərkən düyməni daha uzun müddət basıldığında, standart səviyyəni dəyişmədən işığı 100% parlaqlığa çevirir.
  • "SECRET_SSID" və "SECRET_PASS" sətirləri ilə müəyyən edilmiş, "sirlər.h" adlı eskizimdə ayrı bir faylda saxlanılan WiFi parametrlərinə qoşulacaq.
  • Eyni fayldakı 'MQTTSERVER' və 'MQTTPORT' simlərindən istifadə edərək WiFi şəbəkəsindəki bir MQTT serverinə qoşulacaq.
  • Komutlar vermək üçün MQTT gələn 'domus/esp/in' mövzusundan istifadə edə bilərsiniz: işığı açmaq və ya söndürmək üçün 'ON' və ya 'OFF' və ya parlaqlığı dəyişdirmək üçün 0 -dan 1023 -ə qədər olan bir dəyər.
  • MQTT 'domus/esp/uit' (ON və ya OFF status) və 'domus/esp/uit/brightness' (parlaqlıq dəyəri) mövzularında vəziyyəti bildirəcək.

Tövsiyə: