Skip to content Skip to sidebar Skip to footer

Penerapan Pulse Width Modulation (PWM) pada Arduino

Penerapan Pulse Width Modulation (PWM) pada Arduino
Pulse Width Modulation (PWM) jika diterjemahkan kedalam bahasa indonesia menjadi Modulasi Lebar Pulsa. Modulasi Lebar Pulsa banyak digunakan untuk mengubah listrik DC menjadi AC, pengatur kecepatan putar motor, power supply model switching, lampu dimmer DC, dan lain-lain.


A. Pengertian PWM


Pulse Width Modulation (PWM) adalah suatu teknik yang digunakan untuk mengubah lebar pulsa melalui cara on off (switching) yang diatur waktunya. Teknik ini biasanya digunakan oleh perangkat digital untuk menghasilkan output sinyal analog, contohnya Mikrokontroler Arduino. Perangkat digital hanya menghasilkan gelombang kotak yang diaktifkan melalui proses ON (5 Volt) dan OFF (0 Volt), dengan mengatur waktu ON dan OFF pada periode yang sama, maka akan menghasilkan lebar pulsa yang berbeda.

B. Pembagian Pin PWM Arduino


Board Pin PWM Frekuensi PWM
Uno, Nano, Mini 3, 5, 6, 9, 10, 11 490 Hz (pin 5 dan 6: 980 Hz)
Mega 2 - 13, 44 - 46 490 Hz (pins 4 and 13: 980 Hz)
Leonardo, Micro, Yún 3, 5, 6, 9, 10, 11, 13 490 Hz (pins 3 and 11: 980 Hz)
Uno WiFi Rev.2 3, 5, 6, 9, 10 976 Hz
MKR boards * 0 - 8, 10, A3 (18), A4 (19) 732 Hz
MKR1000 WiFi * 0 - 8, 10, 11, A3 (18), A4 (19) 732 Hz
Zero * 3 - 13, A0 (14), A1 (15) 732 Hz
Due ** 2-13 1000 Hz
101 3, 5, 6, 9 pins 3 and 9: 490 Hz, pins 5 and 6: 980 Hz

Setiap Board Arduino memiliki pin PWM dan nilai frekuensi yang berbeda-beda. Karena pada percobaan nanti kita akan menggunakan board arduino nano, maka gunakan salah satu dari pin berikut 3, 5, 6, 9, 10, 11. Admin www.sekolahotomasi.com menggunakan pin 6 sebagai output PWM-nya.


C. Perhitungan Periode Waktu ( T ) pada Arduino


Arduino menghasilkan frekuensi keluaran sekitar 490 Hz sampai dengan 1000Hz tergantung dari jenis Arduino yang digunakan, maka kita dapat menghitung periode waktunya ( T ) menggunakan rumus :

T = 1 / f

Keterangan :
T = Periode waktu
F = Frekuensi

Misalkan Frekuensi yang digunakan Arduino adalah 500Hz, Maka:
T = 1 / 500
T = 2 / 1000
T = 0,002 second
T = 2 miliseconds

Perhatikan gambar gelombang berikut :
Penerapan Pulse Width Modulation (PWM) pada Arduino
Pada gambar tersebut, garis hijau menunjukkan periode waktu. Semakin kecil frekuensi yang digunakan oleh perangkat arduino maka semakin lebar periode waktunya, atau bisa dikatakan frekuensi PWM berbanding terbalik dengan lebar periode waktu.

D. Perhitungan Duty Cycle


Untuk menggunakan fungsi PWM pada arduino, anda harus paham dahulu PWM dan Duty Cycle. PWM memiliki nilai dari 0 sampai dengan 255, sedangkan Duty cycle memiliki satuan %, dan memiliki rentang dari 0% sampai dengan 100%. Secara sederhana, duty cycle merupakan waktu ON dibagi dengan jumlah waktu ON dan OFF dikalikan 100%.

Duty Cycle = { Ton / ( Ton + Toff) } x 100%

Contoh Kasus dan Pembahasan
Supaya anda lebih paham, lihat contoh perhitungan berikut :

1. Kasus 1


Faiq sedang membuat sketch arduino nano untuk menyalakan LED dengan nyala lebih redup dari keadaan normal (1/2 terang dari nyala normalnya). Bagaimanakah perhitungan duty cycle nya ? dan Bagaimana sketch arduino nya?

Pembahasan :
Untuk mendapatkan hasil ½ terang dari nyala normal, maka Faiq harus menggunakan duty cycle 50%.
Rumus yang digunakan adalah :
Duty Cycle = { Ton / ( Ton + Toff) } x 100%
50 % = { Ton / 255 } x 100 %
½ = Ton / 255
2 Ton = 255
Ton = 127,5
selanjutnya Ton ini kita sebut dengan PWM
Jadi, sketch arduino yang harus dituliskan oleh Faiq adalah sebagai berikut :

const int led6 = 6; // membuat variabel data interger dengan nilai konstan

void setup() {
pinMode ( led6, OUTPUT ); // deklarasi pin 6 sebagai output
}

void loop() {
analogWrite ( led6, 127.5 ); // menuliskan output analog PWM sebesar 127.5 (duty cycle 50%) pada pin 6
}
Untuk mengetahui tegangan yang dikeluarkan oleh arduino, anda dapat menggunakan rumus :
Vout = Duty Cycle x Vin

2. Kasus 2


Rio ingin membandingkan perpindahan PWM dari 0 – 255 dengan rentang perpindahan 25 dan jeda (delay) 1000ms (1 detik). Bagaimanakah sketchnya?

Pembahasan :

const int led6 = 6; // membuat variabel data interger dengan nilai konstan

void setup() {
pinMode ( led6, OUTPUT ); // deklarasi pin 6 sebagai output
}

void loop() {
analogWrite ( led6, 0 ); // menuliskan output analog PWM sebesar 127.5 (duty cycle 50%) pada pin 6
delay (1000); // tunda sebelum pindah ke kode selanjutnya
analogWrite ( led6, 25 );
delay (1000);
analogWrite ( led6, 50 );
delay (1000);
analogWrite ( led6, 75 );
delay (1000);
analogWrite ( led6, 100 );
delay (1000);
analogWrite ( led6, 125 );
delay (1000);
analogWrite ( led6, 150 );
delay (1000);
analogWrite ( led6, 175 );
delay (1000);
analogWrite ( led6, 200 );
delay (1000);
analogWrite ( led6, 225 );
delay (1000);
analogWrite ( led6, 250 );
delay (1000);
analogWrite ( led6, 255 );
delay (1000);
}

3. Kasus 3


Karena dirasa sketch terlalu panjang maka Rio ingin merubah dengan sketch yang lebih simpel dan perpindahan PWM dari 0 – 255 dengan rentang perpindahan 5 supaya hasilnya lebih halus serta jeda (delay) 100ms. Bagaimanakah sketchnya?

Pembahasan :
Supaya sketch lebih pendek, maka Rio dapat menggunakan fungsi “for” pada sketch-nya.

const int led6 = 6; //Inisialisasi variabel LED Pin

void setup() {
pinMode( led6, OUTPUT); // deklarasi pin 6 sebagai output
}

void loop() {
for(int i=0; i<255; i++){ //memunculkan fungsi for dengan variabel “ i “ berbentuk interger 
analogWrite(led6, i); //menuliskan output analog PWM sebesar “ i “ pada pin 6
delay(5);
}

for(int i=255; i>0; i--){
analogWrite(led6, i);
delay(5);
}
}

E. Percobaan PWM

1. Alat dan Bahan yang Dibutuhkan


Untuk memulai praktik PWM menggunakan arduino nano, kalian perlu mempersiapkan alat dan bahan seperti berikut :
No. Alat/Bahan Jumlah
1. Arduino Nano 1
2. Breadboard 1
3. Kabel Jumper 4
4. Kabel Data Mini USB 1
5. Aplikasi Arduino IDE 1
6. Laptop/PC 1

2. Gambar Rangkaian


Penerapan Pulse Width Modulation (PWM) pada Arduino

3. Sketch Arduino



const int led6 = 6; //Inisialisasi variabel LED Pin

void setup() {
pinMode( led6, OUTPUT); // deklarasi pin 6 sebagai output
}

void loop() {
for(int i=0; i<255; i++){ //memunculkan fungsi for dengan variabel “ i “ berbentuk interger 
analogWrite(led6, i); //menuliskan output analog PWM sebesar “ i “ pada pin 6
delay(5);
}

for(int i=255; i>0; i--){
analogWrite(led6, i);
delay(5);
}
}

4. Hasil


Setelah sketch berhasil diupload ke arduino nano, maka lampu LED akan menyala dari redup ke terang dan kembali lagi ke redup, begitu seterusnya.

F. Penutup

Demikian, penjelasan dan penerapan PWM atau Modulasi Lebar Pulsa pada Arduino. Semoga artikel ini mudah dipahami, dan dapat menambah ilmu para pembaca blog setia www.sekolahotomasi.com. Apabila ada pertanyaan atau artikel yang kurang bisa dipahami, silahkan berkomentar pada kolom komentar yang telah disediakan dibawah artikel.

Post a Comment for "Penerapan Pulse Width Modulation (PWM) pada Arduino"