MEMBUAT PROGRAM PWM DENGAN MIKROC COMPILER PADA PIC16F877A
Pada postingan kali ini kita akan mempelajari serta memprogram PWM pada mikrokontroler PIC16F877A dengan software mikroC compiler serta pic simulator sebagai visualisasinya. Dimana dalam memprogram PWM sama seperti menggunakan program-program lainnya seperti bascomavr, codevisionavr dan ASM-51 hanya saja aturan bahasanya yang berbeda dimana pada mikroC compiler tidak perlu lagi inisialisasi mikrokontroler apa yang kita pakai dan berapa crystal yang kita gunakan karena disini kita tingal mensettingnya pada project setting.
PWM merupakan pulse witdh modulation yang artinya lebar pulsa, dimana PWM biasanya kita gunakan untuk mengatur kecepatan motor, Untuk mengatur PWM maka artinya kita akan mengatur tegangan sehingga ketika mikrokontroler itu menggunakan 8 bit maka nilai 255 setara dengan 5 volt. Dan nilai inilah yang dapat kita ubah-ubah sesuai dengan yang kita inginkan, dan pada mikrokontroler PIC16F877A untuk pin PWMnya adalah pin 1 dan 2 pada portC sehingga pin inilah yang nantinya dihubungkan ke led ,motor ataupun osiloskope.
Kode PWM1_Init(1000); yang artinya frekuesnsi yang kita gunakan adalah 1000 , kemudian PWM1_Set_Duty(128); yang artinya pwm1 kita set nilainya sebesar 128 dimana 128 adalah 50 % dari 255 yang berarti kita memberikan 2,5 volt. Serta PWM1_Start(); dan PWM1_Stop(); yang kita gunakan untuk memulai dan mengakhiri kode perintah pwm.Sehingga untuk mengubah pwm sesuai yang kita inginkan kita tinggal mengubah set_dutynya. Dan untuk simulasinya pada pic simulator, kali ini kita menggunakan osiloskope untuk melihat lebar pulsa yang kita gunakan tadi dan sebelumnya kita harus mendownloadkan terlebih dahulu ekstensi .HEX program kita tadi kemudian kita harus mengatur channel1 dan channel 2 pada osiloskope dengan pin pwm pada PIC16F877A.
Berikut program PWM dengan MicroC Compiler pada PIC16F877A :
void main() {
TRISC=0;
PWM1_Init(1000);
PWM2_Init(1000);
while(1)
{
PWM1_Start();
PWM2_Start(); // Start PWM
PWM1_Set_Duty(128);
PWM2_Set_Duty(128);
delay_ms(100);
PWM1_Stop();
PWM2_Stop();
delay_ms(100);
}
}
Dan ketika di run terlihat gelombang seperti ini dimana kita menset pwm adalah 128 atau 50 % dari pwm penuh.
Pada postingan kali ini kita akan mempelajari serta memprogram PWM pada mikrokontroler PIC16F877A dengan software mikroC compiler serta pic simulator sebagai visualisasinya. Dimana dalam memprogram PWM sama seperti menggunakan program-program lainnya seperti bascomavr, codevisionavr dan ASM-51 hanya saja aturan bahasanya yang berbeda dimana pada mikroC compiler tidak perlu lagi inisialisasi mikrokontroler apa yang kita pakai dan berapa crystal yang kita gunakan karena disini kita tingal mensettingnya pada project setting.
PWM merupakan pulse witdh modulation yang artinya lebar pulsa, dimana PWM biasanya kita gunakan untuk mengatur kecepatan motor, Untuk mengatur PWM maka artinya kita akan mengatur tegangan sehingga ketika mikrokontroler itu menggunakan 8 bit maka nilai 255 setara dengan 5 volt. Dan nilai inilah yang dapat kita ubah-ubah sesuai dengan yang kita inginkan, dan pada mikrokontroler PIC16F877A untuk pin PWMnya adalah pin 1 dan 2 pada portC sehingga pin inilah yang nantinya dihubungkan ke led ,motor ataupun osiloskope.
Kode PWM1_Init(1000); yang artinya frekuesnsi yang kita gunakan adalah 1000 , kemudian PWM1_Set_Duty(128); yang artinya pwm1 kita set nilainya sebesar 128 dimana 128 adalah 50 % dari 255 yang berarti kita memberikan 2,5 volt. Serta PWM1_Start(); dan PWM1_Stop(); yang kita gunakan untuk memulai dan mengakhiri kode perintah pwm.Sehingga untuk mengubah pwm sesuai yang kita inginkan kita tinggal mengubah set_dutynya. Dan untuk simulasinya pada pic simulator, kali ini kita menggunakan osiloskope untuk melihat lebar pulsa yang kita gunakan tadi dan sebelumnya kita harus mendownloadkan terlebih dahulu ekstensi .HEX program kita tadi kemudian kita harus mengatur channel1 dan channel 2 pada osiloskope dengan pin pwm pada PIC16F877A.
Berikut program PWM dengan MicroC Compiler pada PIC16F877A :
void main() {
TRISC=0;
PWM1_Init(1000);
PWM2_Init(1000);
while(1)
{
PWM1_Start();
PWM2_Start(); // Start PWM
PWM1_Set_Duty(128);
PWM2_Set_Duty(128);
delay_ms(100);
PWM1_Stop();
PWM2_Stop();
delay_ms(100);
}
}
Dan ketika di run terlihat gelombang seperti ini dimana kita menset pwm adalah 128 atau 50 % dari pwm penuh.
No comments:
Post a Comment