Daftar Isi:

12V LED PWM Dimmer Dengan ESP8266: 3 Langkah
12V LED PWM Dimmer Dengan ESP8266: 3 Langkah

Video: 12V LED PWM Dimmer Dengan ESP8266: 3 Langkah

Video: 12V LED PWM Dimmer Dengan ESP8266: 3 Langkah
Video: Amazing arduino project 2024, November
Anonim
12V LED PWM Dimmer Dengan ESP8266
12V LED PWM Dimmer Dengan ESP8266

Saat mencoba membuat rumah tangga saya lebih berkelanjutan, saya menukar bohlam halogen dengan lampu led. Ada banyak alternatif yang tersedia, untuk mengganti semua jenis bola lampu. Saat melakukan ini, saya menemukan masalah berikut: Saya memiliki lampu yang menggunakan 7 bohlam halogen 12 volt, masing-masing 10 Watt. Cahaya ini dikendalikan oleh dimmer, yang bekerja dengan baik. Ketika saya menukar bohlam dengan lampu led 12 volt, masing-masing 1 Watt, dimmer bekerja dengan buruk: lampu berkedip-kedip, dan peredupan agak tidak menentu. Ini adalah masalah dengan banyak dimmer klasik: mereka memiliki peringkat daya minimal, yang mereka butuhkan untuk bekerja.

Jadi, berdasarkan sistem domotik saya, saya memutuskan untuk mengganti peredup manual ini dengan yang baru, yang akan memiliki keuntungan tambahan karena dapat dikendalikan dari jarak jauh. Saya telah membuat dimmer menggunakan N-channel MOSFET (IRF540), yang sempurna untuk hal semacam ini: dapat dikontrol oleh sinyal PWM, dan hampir tidak dapat dihancurkan, dengan peringkat maksimum 100 volt dan 33 Amps, cukup kuat untuk tujuan ini (pemeriksaan cepat: 7 x 1 Watt = 7 Watt, dibagi 12 volt memberikan arus maksimum sekitar.58 Amps). Saya ingin menggunakan dimmer ini untuk perlengkapan lain yang memiliki 12 bohlam, masing-masing 2 watt, yang memberikan maksimum 2 Amps, jadi itu juga cukup. Satu-satunya hal yang harus diperhatikan adalah frekuensi sinyal PWM, tetapi nilai biasa untuk Arduino atau ESP8266 (500 Hz atau 1kHz) tidak menjadi masalah.

Langkah 1: Langkah 1: Komponen

Langkah 1: Komponen
Langkah 1: Komponen
  1. Driver LED (konverter 230 volt AC ke 12 volt DC)Untuk tujuan saya, saya ingin menggunakan maksimal 24 Watt, jadi saya mulai dengan driver LED 12 volt dan 2 Amps. Saya menemukan satu di situs distributor Cina. Driver ini memiliki rating 12 volt, 28 Watt, jadi cukup untuk menggerakkan fixture dengan sendirinya. Untuk situasi Anda sendiri, Anda dapat menggunakan versi yang lebih ringan atau lebih berat, tergantung pada perlengkapan Anda.
  2. MOSFET saluran-n IRF540
  3. Adafruit Huzzah ESP8266 BreakoutKarena saya ingin menggunakan WiFi, dan saya sangat menyukai produk Adafruit, saya memilih papan ini: papan ini memberi saya ESP8266 dengan pinout pemrograman yang nyaman, pengatur daya terpasang, dan faktor bentuk yang elegan. Ini sedikit berlebihan untuk proyek ini, tetapi itu membuat pengujian dan debugging menjadi lebih mudah.
  4. Konverter DC-DC berbasis LM2596Untuk mendapatkan daya papan ESP dari 12 volt, saya membutuhkan regulator; konverter kecil ini sangat efisien, dan sangat murah.
  5. Rotary Encoder dengan fungsi tombol, dengan lampu led bawaan:

    www.sparkfun.com/products/10596

    Rotary encoder apa pun bisa digunakan, tetapi saya menyukai fitur tambahan yang bagus dari LED bawaan.

  6. Tombol plastik bening

    www.sparkfun.com/products/10597

  7. Resistor 4k7
  8. Resistor 1k

Langkah 2: Langkah 2: Sirkuit

Langkah 2: Sirkuit
Langkah 2: Sirkuit

Ini adalah rangkaian yang saya gunakan: Saya menggunakan pin 4 & 5 sebagai input untuk rotary encoder, dan pin 0 untuk tombol. Pin 0 juga terhubung ke led merah on-board, jadi saya bisa memeriksa fungsi tombol di encode dengan menonton led ini.

Pin 16 digunakan untuk output PWM, dan saya menghubungkannya langsung ke led hijau pada encoder Sparkfun. ESP8266 adalah 3, 3 volt, dan bahkan dengan 100%, saya hanya mengukur output 2, 9 volt, jadi saya menghubungkannya langsung tanpa resistor seri. Output yang sama ini masuk ke Gerbang MOSFET saluran-n, melalui resistor 1kOhm. Gerbang ini ditarik tinggi hingga 12 volt oleh resistor 4,7 kOhm.

Saya menggunakan konverter DC-DC untuk mengubah 12 volt menjadi 5,5 volt, ini terhubung ke input V+ dari breakout Adafruit. Saya bisa menggunakan 3,3 volt dan menghubungkannya secara langsung, tetapi ini sedikit lebih aman.

Lampu LED 12 V di sirkuit adalah perlengkapan saya.

Langkah 3: Langkah 3: Kode

Langkah 3: Kode
Langkah 3: Kode

Saya meletakkan kode di GitHub:

Sketsa untuk ESP8266 LED PWM dimmer

Ini didasarkan pada ide yang dapat diinstruksikan lainnya:

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

Tapi ini murni kontrol lokal, jadi saya menambahkan solusi domotik berbasis MQTT saya sendiri. Ini pada dasarnya melakukan hal yang sama, tetapi perbedaan utamanya adalah:

  • jumlah default langkah PWM dengan Arduino adalah 255, dengan ESP8266 itu adalah 1023 (seperti yang saya temukan nanti, seluruh mencoba untuk mencari tahu mengapa perlengkapan LED saya tidak naik sampai 100% kecerahan…)
  • Saya tidak menggunakan sirkuit 'Totempole' dengan 2 transistor, karena PWM tetap DC, dan bekerja dengan baik dengan IRF 540.
  • Saya tidak menggunakan resistor pull-up 10k untuk encoder, saya mempercayai pull-up built-in ESP8266.
  • ESP8266 menggunakan logika 3,3 volt alih-alih 5 volt untuk Arduino, yang terbukti tidak ada masalah untuk IRF540

Perangkat lunak ini memiliki fitur berikut:

  • memutar encoder akan meredupkan lampu (CW) atau ke bawah (CCW), dari 0 hingga 100%, dalam 1023 langkah, dengan beberapa percepatan di tingkat yang lebih rendah.
  • menekan tombol akan menyalakan lampu saat mati, menggunakan tingkat kecerahan yang terakhir disimpan, atau mematikannya saat menyala.
  • menekan tombol lebih lama saat lampu menyala akan menyimpan kecerahan saat ini sebagai tingkat default.
  • menekan tombol lebih lama saat lampu mati akan menyalakan lampu ke kecerahan 100%, tanpa mengubah tingkat default.
  • Ini akan terhubung ke pengaturan WiFi yang ditentukan oleh string 'SECRET_SSID' dan 'SECRET_PASS', yang disimpan dalam file terpisah di sketsa saya, yang disebut 'secrets.h'
  • Ini akan terhubung ke server MQTT di jaringan WiFi, menggunakan string 'MQTTSERVER' dan 'MQTTPORT' dalam file yang sama.
  • Anda dapat menggunakan topik masuk MQTT 'domus/esp/in' untuk mengeluarkan perintah: 'ON' atau 'OFF" untuk menyalakan atau mematikan lampu, atau nilai dari 0 hingga 1023 untuk mengubah kecerahan.
  • Ini akan melaporkan status pada topik MQTT 'domus/esp/uit' (status ON atau OFF) dan 'domus/esp/uit/brightness' (nilai kecerahan).

Direkomendasikan: