PWM (Pulse Width Modulation) merupakan salah satu teknik penting yang sering digunakan dalam pemrograman mikrokontroler, termasuk Raspberry Pi Pico. Dengan PWM, kita dapat mengatur berbagai perangkat elektronik, seperti kecerahan LED, kecepatan motor DC, posisi servo, hingga menghasilkan sinyal dengan karakteristik tertentu. Dalam penggunaan PWM, ada dua istilah yang sangat penting untuk dipahami, yaitu PWM Frequency dan Duty Cycle. Keduanya menentukan bagaimana sinyal PWM bekerja dan bagaimana perangkat yang dikendalikan merespons sinyal tersebut. Pada artikel ini, kita akan membahas pengertian PWM Frequency dan Duty Cycle pada Raspberry Pi Pico, cara kerjanya, hubungan antara frekuensi dan duty cycle, serta contoh program PWM menggunakan MicroPython.
Apa Itu PWM?
PWM (Pulse Width Modulation) adalah teknik untuk mengontrol sinyal digital dengan cara mengatur lebar pulsa HIGH dan LOW dalam satu periode tertentu. Sinyal PWM sebenarnya tetap berupa sinyal digital yang hanya memiliki dua kondisi, yaitu:
- HIGH → biasanya bernilai 1 atau tegangan aktif.
- LOW → biasanya bernilai 0 atau tidak aktif.
Namun, dengan mengatur berapa lama sinyal berada dalam kondisi HIGH dibandingkan LOW, kita dapat menghasilkan efek seperti tegangan keluaran yang berubah-ubah. Sebagai contoh, PWM dapat digunakan untuk mengatur kecerahan LED. Jika LED mendapatkan PWM dengan duty cycle rendah, LED akan terlihat lebih redup. Sebaliknya, duty cycle yang lebih tinggi akan membuat LED terlihat lebih terang.
Apa Itu PWM Frequency?
PWM Frequency adalah jumlah siklus atau periode PWM yang terjadi dalam satu detik. Satuan yang digunakan adalah Hertz (Hz). Misalnya:
- 10 Hz berarti terdapat 10 siklus PWM setiap detik.
- 100 Hz berarti terdapat 100 siklus PWM setiap detik
- 1 kHz berarti terdapat 1.000 siklus PWM setiap detik.
- 10 kHz berarti terdapat 10.000 siklus PWM setiap detik.
Semakin tinggi nilai PWM Frequency, semakin cepat siklus PWM berulang.
Periode PWM
Frequency dan periode memiliki hubungan yang berbanding terbalik.
Rumusnya adalah:
T = 1 / f
Keterangan:
- T = periode dalam detik
- f = frekuensi dalam Hertz
Sebagai contoh, jika PWM memiliki frequency 1.000 Hz:
T = 1 / 1.000 = 0,001 detik
Jadi, satu periode PWM berlangsung selama 1 milidetik.
Apa Itu Duty Cycle?
Duty Cycle adalah persentase waktu ketika sinyal PWM berada dalam kondisi HIGH selama satu periode. Duty cycle biasanya dinyatakan dalam persen (%), mulai dari 0% hingga 100%. Rumus duty cycle adalah:
Duty Cycle = (Waktu HIGH / Periode) × 100%
Contohnya, jika sebuah sinyal PWM mempunyai duty cycle 50%, artinya sinyal berada dalam kondisi HIGH selama setengah dari satu periode dan LOW selama setengah periode lainnya.
Contoh Duty Cycle
Beberapa contoh duty cycle:
Jadi, duty cycle menentukan lebar pulsa HIGH, sedangkan frequency menentukan seberapa cepat pulsa tersebut berulang.
Perbedaan PWM Frequency dan Duty Cycle
Meskipun sama-sama berkaitan dengan sinyal PWM, PWM Frequency dan Duty Cycle memiliki fungsi yang berbeda.
Sebagai contoh, kita dapat menggunakan:
PWM Frequency = 1 kHz
Duty Cycle = 50%
Artinya, PWM berulang sebanyak 1.000 kali setiap detik dan setiap periode memiliki waktu HIGH sebesar 50%.
Bagaimana PWM Bekerja pada Raspberry Pi Pico?
Raspberry Pi Pico menggunakan mikrokontroler RP2040 yang memiliki fitur PWM hardware.
PWM pada RP2040 dapat digunakan melalui GPIO tertentu untuk menghasilkan sinyal PWM tanpa harus mengubah kondisi pin secara manual menggunakan delay. Dalam MicroPython, PWM dapat dikontrol menggunakan modul machine dan objek PWM. Contoh sederhananya:
from machine import Pin, PWM
led = PWM(Pin(15))
led.freq(1000)
led.duty_u16(32768)
Pada contoh tersebut:
- GPIO 15 digunakan sebagai output PWM.
- Frequency PWM diatur menjadi 1.000 Hz.
- Duty cycle diatur menggunakan nilai duty_u16().
Memahami duty_u16() pada MicroPython
Salah satu hal yang perlu diperhatikan ketika menggunakan PWM Raspberry Pi Pico dengan MicroPython adalah pengaturan duty cycle. MicroPython menyediakan fungsi duty_u16(). Nilainya menggunakan rentang 0 hingga 65535. Secara sederhana:
- 0 → duty cycle 0%
- 32768 → sekitar 50%
- 65535 → duty cycle 100%
Rumus sederhananya:
Duty Cycle ≈ (Nilai duty_u16 / 65535) × 100%
Sebagai contoh:
led.duty_u16(32768)
Nilai tersebut menghasilkan duty cycle sekitar 50%.
Contoh Beberapa Nilai Duty Cycle
Dengan memahami nilai tersebut, kita dapat mengontrol intensitas PWM dengan lebih mudah.
Contoh Program PWM LED pada Raspberry Pi Pico
Untuk memahami PWM Frequency dan Duty Cycle, kita dapat mencoba mengatur kecerahan LED menggunakan Raspberry Pi Pico.
Komponen yang Dibutuhkan
Beberapa komponen yang diperlukan:
- Raspberry Pi Pico
- LED
- Resistor sekitar 220Ω–3370Ω
- Breadboard
- Kabel jumper
- Kabel USB
LED dapat dihubungkan ke salah satu GPIO yang mendukung PWM, misalnya GPIO 15.
Program PWM LED
Berikut contoh program menggunakan MicroPython:
from machine import Pin, PWM
from time import sleep
led = PWM(Pin(15))
# Mengatur frequency PWM menjadi 1 kHz
led.freq(1000)
while True:
# Duty cycle sekitar 25%
led.duty_u16(16384)
sleep(2)
# Duty cycle sekitar 50%
led.duty_u16(32768)
sleep(2)
# Duty cycle sekitar 75%
led.duty_u16(49152)
sleep(2)
# Duty cycle 100%
led.duty_u16(65535)
sleep(2)
# Duty cycle 0%
led.duty_u16(0)
sleep(2)
Program tersebut akan mengubah duty cycle LED setiap dua detik. LED akan terlihat semakin terang ketika nilai duty cycle dinaikkan.
Mengatur PWM Frequency pada Raspberry Pi Pico
Frequency PWM dapat diatur menggunakan fungsi led.freq(1000). Angka 1000 menunjukkan frequency sebesar 1.000 Hz atau 1 kHz. Kita dapat menggantinya dengan nilai lain, misalnya:
led.freq(100)
atau:
led.freq(5000)
Dengan demikian, kita dapat melakukan eksperimen untuk melihat pengaruh PWM frequency terhadap perangkat yang digunakan.
Contoh Menggunakan Frequency Berbeda
from machine import Pin, PWM
led = PWM(Pin(15))
led.freq(500)
led.duty_u16(32768)
Pada program tersebut, PWM menggunakan:
- Frequency: 500 Hz
- Duty Cycle: sekitar 50%
Sedangkan jika menggunakan led.freq(5000) maka frequency menjadi 5 kHz dengan duty cycle tetap sekitar 50%.
Apa Pengaruh Duty Cycle terhadap Kecerahan LED?
Salah satu contoh penggunaan PWM yang paling mudah dipahami adalah mengatur kecerahan LED. Misalnya kita menggunakan frequency 1 kHz dan mengubah duty cycle:
Duty Cycle 25% → LED lebih redup
Duty Cycle 50% → LED memiliki kecerahan sedang
Duty Cycle 75% → LED lebih terang
Duty Cycle 100% → LED menyala penuh
Secara sederhana, semakin besar duty cycle, semakin besar pula rata-rata energi yang diberikan kepada LED. Namun, perlu dipahami bahwa PWM bukan berarti Raspberry Pi Pico menghasilkan tegangan analog secara langsung. GPIO tetap menghasilkan sinyal digital HIGH dan LOW dengan pola yang sangat cepat.
Apa Pengaruh PWM Frequency terhadap LED?
Pada LED, frequency PWM yang cukup tinggi biasanya membuat mata manusia melihat LED sebagai cahaya yang stabil, bukan berkedip. Jika frequency terlalu rendah, perubahan HIGH dan LOW dapat lebih mudah terlihat sebagai kedipan. Oleh karena itu, pemilihan PWM frequency juga penting dalam aplikasi LED. Untuk eksperimen sederhana dengan LED, frequency seperti 500 Hz atau 1 kHz sudah dapat digunakan untuk memahami konsep PWM.
PWM untuk Mengontrol Kecepatan Motor DC
Selain LED, PWM Raspberry Pi Pico juga sering digunakan untuk mengontrol kecepatan motor DC. Pada aplikasi motor, duty cycle dapat digunakan untuk mengatur rata-rata daya yang diberikan kepada motor. Sebagai contoh:
Duty Cycle 25% → kecepatan rendah
Duty Cycle 50% → kecepatan sedang
Duty Cycle 75% → kecepatan lebih tinggi
Duty Cycle 100% → daya maksimum
Namun, motor DC tidak boleh langsung dihubungkan ke GPIO Raspberry Pi Pico. Motor membutuhkan arus yang jauh lebih besar dibandingkan kemampuan GPIO. Gunakan motor driver atau rangkaian transistor/MOSFET yang sesuai. PWM dari Raspberry Pi Pico kemudian digunakan sebagai sinyal kontrol untuk driver tersebut.
PWM untuk Mengontrol Servo
PWM juga banyak digunakan pada servo motor, tetapi terdapat perbedaan penting. Servo umumnya membutuhkan sinyal PWM dengan frequency tertentu dan lebar pulsa tertentu untuk menentukan posisi. Oleh karena itu, mengontrol servo tidak cukup hanya dengan menganggap:
Duty cycle semakin besar = posisi servo semakin besar.
Untuk servo, yang lebih penting adalah lebar pulsa HIGH dalam satu periode. Nilai pulsa tersebut digunakan sebagai informasi posisi oleh rangkaian servo. Jadi, ketika menggunakan PWM Raspberry Pi Pico untuk servo, parameter frequency dan pulse width perlu disesuaikan dengan kebutuhan servo yang digunakan.
Eksperimen Mengubah Duty Cycle dengan Input
Agar lebih mudah memahami konsep PWM, kita juga dapat membuat program yang mengubah duty cycle secara bertahap. Contohnya:
from machine import Pin, PWM
from time import sleep
led = PWM(Pin(15))
led.freq(1000)
for duty in range(0, 65536, 1024):
led.duty_u16(duty)
sleep(0.02)
for duty in range(65535, -1, -1024):
led.duty_u16(duty)
sleep(0.02)
Program tersebut akan menaikkan duty cycle secara bertahap kemudian menurunkannya kembali. Hasilnya, LED akan terlihat semakin terang kemudian semakin redup. Eksperimen ini merupakan cara sederhana untuk memahami hubungan antara duty cycle PWM dan kecerahan LED.
Faktor yang Perlu Diperhatikan Saat Menggunakan PWM
Ada beberapa hal yang perlu diperhatikan ketika menggunakan PWM pada Raspberry Pi Pico.
1. Frequency Tidak Selalu Harus Tinggi
Frequency PWM yang lebih tinggi tidak selalu berarti lebih baik. Nilai frequency harus disesuaikan dengan perangkat yang dikontrol. LED, motor, buzzer, dan servo dapat memiliki kebutuhan PWM yang berbeda.
2. Duty Cycle Mempengaruhi Output
Perubahan duty cycle akan mengubah karakteristik output PWM. Pada LED, perubahan ini dapat terlihat sebagai perubahan kecerahan. Pada motor, perubahan duty cycle dapat memengaruhi kecepatan.
3. Perhatikan Beban GPIO
GPIO Raspberry Pi Pico digunakan untuk menghasilkan sinyal kontrol. Jangan menggunakannya untuk memberikan daya langsung kepada beban yang membutuhkan arus besar. Gunakan driver atau rangkaian tambahan jika diperlukan.
4. Frequency dan Duty Cycle Saling Berkaitan
Ketika frequency berubah, periode PWM juga berubah. Namun, duty cycle tetap dapat dipertahankan pada nilai yang sama. Misalnya: 1 kHz + 50% duty cycle dan 5 kHz + 50% duty cycle. Keduanya memiliki duty cycle yang sama, tetapi periode dan kecepatan pengulangan pulsanya berbeda.
Baca juga: Menggabungkan LDR dan LED untuk Sistem Lampu Otomatis
Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino







0 Komentar