[Micropython 6] Mengatur Kecerahan LED Menggunakan PWM
By Thewrightstuff - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=72876123
Bismillah
Pernah menemui lampu kamar yang bisa diatur kecerahannya dengan memutar saklar putar yang tertempel di tembok? Kamu bisa melakukan hal tersebut menggunakan raspberry pi pico kamu menggunakan PWM. Pulse Width Modulation.
Dengan PWM ini, kamu bisa mengontrol presentase kecerahan LED dari 0% sampai 100%.
Seperti biasa, asumsi saya kamu telah membeli paket Get Started With Micropython In Raspberry Pi Pico karena semua yang kita butuhkan di seri seri awal ini ada disana semua. Bila tidak, maka berikut beberapa alat yang kamu perlukan:
- Breadboard
- Raspberry pi pico
- LED
- Resistor 330 Ohm
- Kabel data micro usb
- Beberapa kabel jumper male to male
Skema
Kamu bisa menggunakan skema untuk LED pada seri ke 4. Asumsi saya kamu menggunakan skema persis pada seri ke 4 ini, yaitu menggunakan pin 16 untuk mengontrol LED kamu.
Kode
Tulis kode dibawah ini dan simpan menggunakan nama pwm_dasar.py
.
from machine import Pin, PWM
red = Pin(16, Pin.OUT)
pwm = PWM(red)
pwm.freq(200)
pwm.duty_u16(int(30/100 * 65535))
Jalankan dengan mpremote run pwm_dasar.py
Penjelasan
Seperti biasa, diawal kita meng-import library yang kita butuhkan. Kita butuh Pin
karena dengan itu kita
mendefinisikan dimana LED kita terkoneksikan.
Kita juga membutuhkan modul PWM untuk mengatur kecerahan LED pada pin tersebut.
Perhatikan pwm = PWM(led)
. PWM
ini menerima Pin object sebagai parameter, bukan angka atau string untuk ID suatu Pin. Ini berarti, kita akan menggunakan modul pwm untuk mengatur kecerahan LED.
Kemudian kita mengatur frekuensi pada pwm.freq(200)
Pada akhirnya, kita mengatur kecerahan LED menggunakan pwm.duty_u16
untuk sekitar kecerahan 30% dari total kecerahan LED. Karena fungsi duty_u16
membutuhkan integer, maka kita perlu mengkonversi nilai pecahan menjadi integer menggunakan fungsi int
.
PWM
PWM adalah sebuah metode yang berguna untuk mengontrol daya rata rata yang akan dikirimkan ke beban. Dalam hal ini, beban kita adalah LED. Dan pada contoh kode diatas, daya rata rata yang kita inginkan adalah 30%.
Cara untuk memberikan daya rata rata tersebut adalah dengan menyala matikan beban dengan kecepatan lebih cepat daripada yang dibutuhkan oleh beban. Semakin lama matinya, semakin redup. Sebaliknya, semakin lama menyala, semakin terang.
Di kode sebelumnya, kamu mengatur frekuensi dengan menggunakan method freq
. Frekuensi ini adalah berapa kali beban nyala dan mati dalam satu detik. Satuannya adalah Hertz. Untuk mengatur LED, 100 - 120 Hz sudah cukup.
Adapun duty adalah jarak lama antara hidup dan mati. Jadi dalam rentang 100 kali per detik itu, berapa lama perbandingan antara hidupnya beban dan matinya beban.
By Thewrightstuff - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=72876123
Untuk di micropython sendiri kamu bisa mengatur duty menggunakan duty_u16
atau duty_ns
. Yang pertama menggunakan rentang 0 - 65535. Sedangkan yang kedua menggunakan satuan nano seconds.
Untuk membuktikan bahwa PWM itu adalah siklus antara nyala dan mati dari suatu pin, maka kamu bisa mengecilkan frekuensi menjadi 10. Kamu akan lihat bahwa LED berkedip dengan kecerahan 100%.
Penutup
Nah itu dia tentang PWM. Kamu bisa mengatur kecerahan LED menggunakan PWM. Kamu juga sudah belajar tentang cara kerja PWM, frekuensi dan duty. Selain untuk mengatur kecerahan LED, PWM ini biasa digunakan untuk mengatur kecepatan dinamo motor, dan juga dipakai dalam Solar Charger Controller.
Kamu juga bisa menggabungkan dengan seri sebelumnya. Mendapatkan presentase menggunakan potentiometer, dan mengatur kecerahan menggunakan kembalian potentiometer tersebut ke led.
Selamat mencoba.