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.
Daftar isi
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 :
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
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"