Mengenal PWM Frequency dan Duty Cycle di Raspberry Pi Pico

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:


Duty Cycle

Kondisi Sinyal

0%

Selalu LOW

25%

HIGH selama 25% periode

50%

HIGH selama 50% periode

75%

HIGH selama 75% periode

100%

Selalu HIGH


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.


Parameter

Fungsi

PWM Frequency

Menentukan seberapa cepat pulsa PWM berulang

Duty Cycle

Menentukan persentase waktu sinyal berada pada kondisi HIGH

Satuan Frequency

Hertz (Hz)

Satuan Duty Cycle

Persen (%)


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


duty_u16()

Perkiraan Duty Cycle

0

0%

16384

25%

32768

50%

49152

75%

65535

100%


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.

Posting Komentar

0 Komentar