Mengatur Pwm Dengan Arduino


Secara umum, PWM ialah cara memanipulasi lebar sinyal atau tegangan yang dinyatakan dalam suatu perioda, yang sanggup dipakai 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 ialah hasil penjumlahan antara sinyal High (sH) dan sinyal Low (sL).   sTotal = sH + Sl
untuk mengetahui nilai duty cycle sanggup dipakai 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 memakai rumus ini, kita sanggup menghitung nilai PWM yang dikeluarkan jikalau diketahui grafiknya menyerupai Gambar 1 diatas. Dari Gambar tersebut, lebar sinyal High per periodenya ialah 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, sanggup diketahui bahwa nilai PWM yang dikeluarkan ialah 1 V.
Pada board Arduino yang memakai mikrokontroler Atmega328P, pin PWM terdapat pada pin digital 3, 5, 6, 9, 10 dan 11. Biasanya pin tersebut ditandai dengan   pada Arduino Uno. Untuk memakai PWM pada Arduino, dipakai perintah analogWrite().

PWM (Pulse Width Modulation) sanggup dipakai untuk mengatur kecepatan putaran Motor, atau sanggup dipakai juga untuk mengatur kecerahan lampu, PWM sangat mempunyai kegunaan dalam pengaplikasian robotika, atau umumnya pada sistem – sistem otomatis, contohnya untuk mengatur ketinggian terbang sebuah Drone, atau mengatur kecepatan robot dikala akan belok, dan lain sebagainya.
Dalam Board Arduino, terdapat pin khusus yang sudah disediakan, menyerupai dalam Arduino Uno, pin PWM tersedia pada pin D3, D5, D6, D9, D10 dan D11. dan untuk mengaktifkannya, kita sanggup memakai perintah
analogWrite (pin yang digunakan, nilai PWM);
untuk memperlihatkan nilai PWM sendiri, kita sanggup memperlihatkan nilai antara 0 hingga 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 ialah pin digital 5, rangkaian sederhana nya sanggup dilihat pada Gambar berikut:

Contoh kegiatan sederhananya ialah 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);

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