İçindekiler:

ESP8266 ile 12V LED PWM Dimmer: 3 Adım
ESP8266 ile 12V LED PWM Dimmer: 3 Adım

Video: ESP8266 ile 12V LED PWM Dimmer: 3 Adım

Video: ESP8266 ile 12V LED PWM Dimmer: 3 Adım
Video: ESP8266 ile şerit-PCB led parlaklığı kontrolü - Devre yapımı - Mosfet Drive-PWM Control -ESP Web SRV 2024, Kasım
Anonim
ESP8266 ile 12V LED PWM Dimmer
ESP8266 ile 12V LED PWM Dimmer

Evimi daha sürdürülebilir hale getirmeye çalışırken halojen ampulleri led ışıklarla değiştiriyordum. Her türlü ampulü değiştirmek için birçok alternatif mevcuttur. Bunu yaparken şu sorunla karşılaştım: Her biri 10 Watt olan 7 adet 12 volt halojen ampul kullanan bir aydınlatma armatürüm vardı. Bu ışık, iyi çalışan bir dimmer tarafından kontrol edildi. Ampulleri her biri 1 Watt olan 12 voltluk led ışıklarla değiştirdiğimde, dimmer kötü çalıştı: ışık titriyordu ve karartma biraz düzensizdi. Bu, birçok klasik dimmer ile ilgili bir sorundur: çalışmak için ihtiyaç duydukları minimum güç derecesine sahiptirler.

Bu nedenle, ev teknolojisi sistemime dayanarak, bu manuel dimmeri yenisiyle değiştirmeye karar verdim, bu da uzaktan kontrol edilebilmesi gibi ek bir avantaja sahip olacaktı. Bu tür şeyler için mükemmel olan bir N-kanallı MOSFET (IRF540) kullanarak zaten bir dimmer yapmıştım: bir PWM sinyali ile kontrol edilebilir ve maksimum 100 volt ve 33 Amper değerleri ile neredeyse yok edilemez, bu amaç için yeterince yeterli (hızlı kontrol: 7 x 1 Watt = 7 Watt, 12 volta bölünürse maksimum yaklaşık 0,58 Amper akım verir). Bu dimmeri, her biri 2 watt olan 12 ampullü ve maksimum 2 Amper veren başka bir armatür için kullanmak istiyorum, bu da yeterli. Bunun için dikkat edilmesi gereken tek şey PWM sinyalinin frekansıdır, ancak Arduino veya ESP8266 (500 Hz veya 1kHz) için olağan değerler sorun değildir.

Adım 1: Adım 1: Bileşenler

Adım 1: Bileşenler
Adım 1: Bileşenler
  1. LED Sürücü (230 volt AC ila 12 volt DC dönüştürücü) Amacım için maksimum 24 Watt kullanmak istiyorum, bu yüzden 12 volt ve 2 Amperlik bir LED sürücü ile başladım. Çinli bir distribütör sitesinde bir tane buldum. Bu sürücü 12 volt, 28 Watt olarak derecelendirildi, bu nedenle armatürü kendi başına sürmek yeterliydi. Kendi durumunuz için, armatürünüze bağlı olarak daha hafif veya daha ağır bir versiyon kullanabilirsiniz.
  2. IRF540 n-kanal MOSFET
  3. Adafruit Huzzah ESP8266 Breakout WiFi kullanmak istediğim ve Adafruit ürünlerini kesinlikle sevdiğim için bu anakartı seçtim: bana kullanışlı bir programlama pin çıkışı, yerleşik güç regülatörü ve zarif bir form faktörü olan bir ESP8266 veriyor. Bu proje için biraz abartılı ama test etmeyi ve hata ayıklamayı çok daha kolay hale getiriyor.
  4. LM2596 tabanlı DC-DC dönüştürücü ESP kartının gücünü 12 volttan elde etmek için bir regülatöre ihtiyacım vardı; bu küçük dönüştürücüler çok verimli ve çok ucuzdur.
  5. Dahili led ışıklı, düğme fonksiyonlu Döner Kodlayıcı:

    www.sparkfun.com/products/10596

    Herhangi bir döner kodlayıcı yapardı, ancak yerleşik bir LED'in güzel ek özelliğini beğendim.

  6. Şeffaf plastik topuz

    www.sparkfun.com/products/10597

  7. Direnç 4k7
  8. Direnç 1k

Adım 2: Adım 2: Devre

Adım 2: Devre
Adım 2: Devre

Kullandığım devre bu: Döner kodlayıcı için giriş olarak 4 ve 5 numaralı pinleri ve buton için 0 numaralı pini kullandım. Pin 0 da on-board kırmızı led'e bağlı, bu led'i izleyerek kodlamadaki butonun işlevini kontrol edebildim.

Pin 16, PWM çıkışı için kullanılıyor ve bunu doğrudan Sparkfun kodlayıcı üzerindeki yeşil led'e bağladım. ESP8266 3, 3 volt ve %100 olsa bile sadece 2, 9 volt çıkış ölçtüm, bu yüzden seri direnç olmadan doğrudan bağladım. Aynı çıkış, 1 kOhm'luk bir direnç yoluyla n-kanallı MOSFET'in Kapısına gider. Bu Kapı, 4.7 kOhm'luk bir direnç tarafından 12 volta çekilir.

12 voltu 5,5 volta dönüştürmek için DC-DC dönüştürücü kullandım, bu Adafruit çıkışının V+ girişine bağlı. 3,3 volt kullanıp doğrudan bağlayabilirdim ama bu biraz daha güvenli.

Devredeki 12 V LED Lamba benim armatürümdür.

Adım 3: Adım 3: Kod

Adım 3: Kod
Adım 3: Kod

Kodu GitHub'a koydum:

ESP8266 LED PWM dimmer için taslak

Başka bir öğretilebilir fikre dayanmaktadır:

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

Ancak bu tamamen yerel kontroldü, bu yüzden kendi MQTT tabanlı ev bilimi çözümümü ekledim. Temelde aynı şeyi yapar, ancak temel farklılıklar şunlardır:

  • Arduino ile varsayılan PWM adımı sayısı 255'tir, ESP8266 ile 1023'tür (daha sonra öğrendiğim gibi, LED armatürümün neden %100 parlaklığa kadar yükselmediğini anlamaya çalışıyorum…)
  • PWM zaten DC olduğu için 2 transistörle 'Totempole' devresini kullanmadım ve IRF 540 ile iyi çalıştı.
  • Enkoder için 10k pull-up dirençlerini kullanmadım, ESP8266'nın yerleşik pullup'larına güvendim.
  • ESP8266, Arduino için 5 volt yerine 3,3 volt mantığı kullanır, bu da IRF540 için sorun olmadığını kanıtladı.

Yazılım aşağıdaki özelliklere sahiptir:

  • kodlayıcıyı çevirmek, ışığı 1023 adımda 0'dan %100'e kadar azaltacak (CW) veya azaltacaktır (CCW), daha düşük seviyelerde biraz hızlanacaktır.
  • düğmeye basmak, kapalıyken ışığı en son kaydedilen parlaklık seviyesini kullanarak açar veya açıkken kapatır.
  • ışık açıkken düğmeye daha uzun süre basmak, mevcut parlaklığı varsayılan seviye olarak kaydedecektir.
  • ışık kapalıyken düğmeye daha uzun süre basmak, varsayılan seviyeyi değiştirmeden ışığı %100 parlaklığa getirecektir.
  • Çizimimde 'secrets.h' olarak adlandırılan ayrı bir dosyaya kaydedilen 'SECRET_SSID' ve 'SECRET_PASS' dizeleri tarafından tanımlanan WiFi ayarlarına bağlanacaktır.
  • Aynı dosyadaki 'MQTTSERVER' ve 'MQTTPORT' dizelerini kullanarak WiFi ağındaki bir MQTT sunucusuna bağlanacaktır.
  • Komutları vermek için MQTT gelen konusu 'domus/esp/in' kullanabilirsiniz: ışığı açmak veya kapatmak için 'AÇIK' veya 'KAPALI' veya parlaklığı değiştirmek için 0 ila 1023 arasında bir değer.
  • 'domus/esp/uit' (AÇIK veya KAPALI durumu) ve 'domus/esp/uit/brightness' (parlaklık değeri) MQTT konularındaki durumu rapor edecektir.

Önerilen: