Mengatur PWM dengan Arduino


Secara umum, PWM adalah cara memanipulasi lebar sinyal atau tegangan yang dinyatakan dalam suatu perioda, yang dapat digunakan untuk mengontrol daya keluaran dari mikrokontroler. Sinyal PWM merupakan sinyal digital yang amplitude / lebarnya tetap tetapi mempunyai lebar pulsa HIGH dan LOW yang berbeda – beda dalam satu perioda. Seperti pada Gambar berikut.




 Dalam PWM dikenal istilah Duty Cycle, yaitu lebar pulsa/sinyal HIGH dalam satu perioda, dimana satu perioda adalah hasil penjumlahan antara sinyal High (sH) dan sinyal Low (sL).   sTotal = sH + Sl
untuk mengetahui nilai duty cycle dapat digunakan rumus sebagai berikut:


Penjelasan:
D = Duty Cycle         
sL= sinyal Low                      
sH = sinyal High
sTotal= sinyal total dalam satu perioda
Vout = tegangan keluaran
V in = Tegangan masukan   
  

Dengan menggunakan rumus ini, kita dapat menghitung nilai PWM yang dikeluarkan jika diketahui grafiknya seperti Gambar 1 diatas. Dari Gambar tersebut, lebar sinyal High per periodenya adalah 20%, sedangkan lebar sinyal Low nya lebih besar, yaitu 80%. Sehingga Vout (tegangan yang dikeluarkan) dari PWM tersebut adalah

Vout = (5 X 20) / 100 = 100 / 100 = 1V

Dari rumus diatas, dapat diketahui bahwa nilai PWM yang dikeluarkan adalah 1 V.
Pada board Arduino yang menggunakan mikrokontroler Atmega328P, pin PWM terdapat pada pin digital 3, 5, 6, 9, 10 dan 11. Biasanya pin tersebut ditandai dengan ~  pada Arduino Uno. Untuk menggunakan PWM pada Arduino, digunakan perintah analogWrite().

PWM (Pulse Width Modulation) dapat digunakan untuk mengatur kecepatan putaran Motor, atau dapat digunakan juga untuk mengatur kecerahan lampu, PWM sangat berguna dalam pengaplikasian robotika, atau umumnya pada sistem – sistem otomatis, misalnya untuk mengatur ketinggian terbang sebuah Drone, atau mengatur kecepatan robot ketika akan belok, dan lain sebagainya.
Dalam Board Arduino, terdapat pin khusus yang sudah disediakan, seperti dalam Arduino Uno, pin PWM tersedia pada pin D3, D5, D6, D9, D10 dan D11. dan untuk mengaktifkannya, kita dapat menggunakan perintah
analogWrite (pin yang digunakan, nilai PWM);
untuk memberikan nilai PWM sendiri, kita bisa memberikan nilai antara 0 sampai 255. semakin besar nilai PWM, maka semakin cepat putaran motornya.

Contoh Kasus
Misalnya kita ingin mengatur kecepatan Motor DC, dan pin PWM yang kita gunakan adalah pin digital 5, rangkaian sederhana nya dapat dilihat pada Gambar berikut:

Contoh program sederhananya adalah sebagai berikut:

int PWM = 3;
void setup(){
pinMode (PWM, OUTPUT);
}
void loop(){
/* manambah kecepatan motor tiap 300ms secara terus menerus */

for (int i=10; i<=255; i++){
delay(300);
} delay (1000);

/* jika nilai lebih besar dari 255, maka akan dikurangi setiap 500ms */
for (int i=255; 1>=10; i--){
delay(500);
} delay (1000);
}

Comments

Post a Comment