Teori Singkat
PWM atau lebih dikenal dengan modulasi lebar pulsa, yaitu sebuah metode pengaturan lebar pulsa secara variable untuk sebuah nilai frekuensi yang tetap. Berbeda halnya dengan modulasi frekuesi (FM) atau modulasi amplitudo (AM) yang mengatur variasi frekuensi atau tegangan, PWM menggunakan gelombang kotak (square wave) dengan ampitudo dan frekwensi yang tetap namun rasio periode ON terhadap total perode gelombang atau disebut dengan Duty Cycle bisa diatur dalam satuan persen (%). Gambar 1 menunjukan bentuk gelombang PWM.
Gambar 1. Bentuk gelombang PWM |
Berdasarkan Gambar 1 menunjukan bentuk gelombang kotak PWM, dapat dilihat bahwa periode ON pada satu siklus gelobang bias melebar dan menyempit tanpa merubah frekwensi dan amplitudo. Variasi lebar pulsa PWM dapat dihitung secara matematis mengikuti kaidah yang ditunjukan oleh persamaan 2 berikut :
Pada papan Arduino jenis 8-bit terdapat beberapa pin yang bisa dijadikan sebagai keluaran PWM, yaitu : 3, 5, 6, 9, 10, 11. Dan terdapat dua jenis frekwensi PWM yang berbeda yaitu 488 hz utuk 3,9,10,11 dan 977 Hz untuk pin 5, 6.
Rentang amplitudo PWM Arduino hampir sama dengan tegangan catu komponen digital, yaitu : 0-5 volt. Sedangkan rentang nilai digital yang merepresentasikan duty cycle pada Arduino yaitu : 0-255 untuk 0%-100% rasio.
Keluaran PWM Arduino belum dapat dikatakan sebagai keluaran analog murni karena dasarnya masih berupa variasi data digital (HIGH dan LOW), sehingga diperlukan sebuah tapis lolos rendah (LPF-low pass filter) untuk mendapatkan gradasi amplitude mendekati definisi keluaran analog. Gambar 2 menunjukan konfigurasi LPF untuk keluaran PWM.
Gambar 2. LPF untuk keluaran PWM |
Dengan menggunakan LPF maka akan ada konversi dari duty cycle menjadi tegangan analog. Nilai R dan C pada LPF seperti ditunjukan oleh Gambar 2 umumnya bernilai R1 = 3.9KΩ dan C1 = 100nF. Dengan demikian, nilai digital PWM Arduino yang diperlukan untuk menghaislkan keluaran Analog dapat dihitung mengikuti kaidah yang ditunjukan oleh persamaan 3 berikut :
Alat dan Bahan Percobaan
Pada sesi ini akan diperkenalkan tentang menghasilkan keluaran analog pada papan Arduino menggunakan fasilitas PWM. Adapun alat dan bahan yang digunakan selama percobaan adalah :
- Resistor = 5.9KΩ dan Capacitor =100nF
Resistor dan kapasitor akan digunakan untuk membuat tapis lolos rendah (LPF) yang akan mengubah gelombang PWM menjadi tegangan analog. - Multimeter Digital
Alat bantu pengukuran tegangan yang akan digunakan untuk mengukur tegangan analog keluaran LPF. - Papan Arduino UnoBahan percobaan sebagai pengendali utama menguji fungsi PWM dengan melibatkan aktifitas perancangan antarmuka perangkat keras dan pemrograman perangkat lunak.
Langkah Percobaan
Percobaan fungsi keluaran analog dengan PWM oleh papan Arduino melibatkan dua aktifitas yaitu perancangan antarmuka perangkat keras dan pemrograman perangkat lunak. Adapun langkah percobaan adalah sebagai berikut :
- Disain antarmuka perangkat keras
Percobaan ini melibatkan aktifitas menghubung pin PWM pada Arduin UNO dengan rangkaian LPF secara benar, seperti yang ditunjukan oleh Gambar 2. Pada Percobaan ini akan memanfaatkan resistor dan capasitor. Sebagai indicator tegangan keluaran analaog digunakan LED gambar 3 menunjukan antarmuka perangkat keras sebagai bahan percobaan.Gambar 3. Antarmuka papan Arduino UNO dengan rangkaian LPF - Pemrograman perangkat lunakSetelah perangkat keras selesai dirakit, selanjutnya membuat kode program untuk menggunakan akses keluaran analog PWM. Ketik contoh kode program berikut ini, kompilasi dan upload ke papan Arduino. Kemudian pengamatan dilakukan menggunakan monitor data serial pada Arduino IDE dan multimeter digital.
#define PWM 3 //definisi pin output
void setup(){
Serial.begin(9600); //inisialisasi serial
pinMode(PWM, OUTPUT); //pin PWM sebagai output
}
void loop(){
Serial.println("nilai PWM = 50");
analogWrite(PWM,50); //PWM = 50;
delay(5000); //tunda pengamatan 5 detik
Serial.println("nilai PWM = 100");
analogWrite(PWM,100); //PWM = 100;
delay(5000); //tunda pengamatan 5 detik
Serial.println("nilai PWM = 150");
analogWrite(PWM,150); //PWM = 150;
delay(5000); //tunda pengamatan 5 detik
Serial.println("nilai PWM = 200");
analogWrite(PWM,200); //PWM = 200;
delay(5000); //tunda pengamatan 5 detik
} - Analisis Hasil Pecobaan
Analisis hasil percobaan dilakukan berdasarkan pengukuran tegangan menggunakan multimeter pada pin keluaran analog LPF untuk setiap nilai digital PWM. Hasil pengukuran disajikan dalam bentuk isian seperti yang ditunjukan oleh Table 1 tahap selanjutnya adalah menganalisa kesalahan konversi nilai digital ke analog berdasarkan selisih antara hasil pengukuran multimeter dengan kalkulasi secara teori matematis yang ditunjukan oleh persamaan 3.
Selanjutnya hasil perbandingan dalam table 1 dibuat dalam bentuk grafik perbandingan menggunakan Microsoft Officel Excel dan simpulkan.Tabel 1 Perbandingan hasil pengamatan dengan teori fungsi konversi PWM ke analog
Tugas
Berikut ini deskripsi tugas yag harus anda lakukan terkait dengan tahap-tahap percobaan yang sudah dilakukan.
- Membuat program Counter secara otomatis mengguankan fungsi delay dengan nilai cacahan antara 0-255, kemudian setiap cacahan dijadikan nilai keluaran digital PWM. Amati tegangan keluaran LPF mengguankan multimeter, kemudian jelaskan hasil pengamatan anda.
- Kompilasi dan upload kode program yang sudah anda buat, kemudian amati hasilnya.
- Membuat laporan percobaan yang berisi foto antarmuka perangkat keras dan kode program yang berhasil dibuat dan berjalan dengan benar.