PWM Pulse Width Modulation pada Arduino

 PWM pada Arduino adalah singkatan dari Pulse Width Modulation, atau modulasi lebar pulsa. Ini adalah sebuah teknik untuk mendapatkan output tegangan analog dari pin digital.



Pin digital pada Arduino biasanya hanya bisa mengeluarkan sinyal digital "ON" (HIGH) atau "OFF" (LOW). Tegangan yang dikeluarkan adalah 3.3V atau 5V, tergantung modelnya. Namun, dengan PWM, kamu bisa mensimulasikan tegangan di antara dua nilai tersebut, misalnya 2.5V, 3V, atau nilai lainnya. Ini dilakukan dengan cara memvariasikan lebar dari pulsa "ON" secara periodik.


Cara Kerja PWM

Sinyal PWM terdiri dari serangkaian gelombang persegi yang berulang. Setiap gelombang memiliki dua karakteristik utama:

  • Frekuensi: Seberapa cepat gelombang tersebut berulang (jumlah siklus per detik). Frekuensi PWM pada Arduino Nano, Uno, dan Mega adalah sekitar 500 Hz atau 1000 Hz, tergantung pada pin.

  • Duty Cycle: Rasio dari durasi sinyal "ON" terhadap total durasi satu siklus penuh. Duty cycle ini biasanya dinyatakan dalam persentase.

Arduino Uno memiliki beberapa pin yang mendukung PWM. Kamu bisa mengidentifikasinya dengan tanda tilde (~) di samping nomor pin, seperti pin ~3, ~5, ~6, ~9, ~10, dan ~11.



Contoh Penerapan

Bayangkan kamu ingin mengendalikan kecerahan LED. Daripada hanya menyalakan dan mematikan LED, kamu bisa menggunakan PWM. Dengan mengubah duty cycle, kamu bisa membuat LED terlihat redup atau terang.

  • Duty Cycle 0%: Sinyal "OFF" terus-menerus. Tegangan rata-rata 0V. LED akan mati total.

  • Duty Cycle 50%: Sinyal "ON" dan "OFF" memiliki durasi yang sama. Tegangan rata-rata sekitar setengah dari tegangan maksimum (misalnya, 2.5V untuk sistem 5V). LED akan menyala dengan kecerahan sedang.

  • Duty Cycle 100%: Sinyal "ON" terus-menerus. Tegangan rata-rata sama dengan tegangan maksimum. LED akan menyala paling terang.

Fungsi Kode

Di dalam bahasa pemrograman Arduino, kamu bisa mengontrol PWM dengan fungsi analogWrite(). Fungsi ini mengambil dua argumen:

  1. pin: Nomor pin PWM yang akan digunakan.

  2. value: Nilai duty cycle. Nilai ini biasanya berkisar dari 0 (0% duty cycle) hingga 255 (100% duty cycle).

Misalnya, untuk menyalakan LED di pin 9 dengan kecerahan setengah, kamu bisa menggunakan kode: analogWrite(9, 127); (karena 127 adalah sekitar setengah dari 255).

Komentar