Tiap tahun PSMK memberikan soal untuk Uji Kompetensi Keahlian (UKK). Untuk Kompetensi Keahlian Teknik Elektronika Industri diberi 4 buah Paket Soal yang pada tahun-tahun sebelumnya ada 2 kelompok, yaitu kelompok mikrokontroler dan kelompok Elektropneumatik dan PLC. Kelompok mikrokontroler ada 2 paket soal, yaitu Kendali Motor DC dan Kendali Lampu, sedangkan kelompok Elektropneumatik dan PLC ada 2 paket soal juga, yaitu Kendali Elektropneumatik berbasis PLC dengan metoda waktu dan Kendali Elektropneumatik berbasis PLC dengan metoda limit switch.
Masing sekolah diharapkan mengadakan UKK sesuai paket soal dengan spesifikasi komponen yang ada dalam paket soal tersebut, tetapi kadang-kadang sekolah sedikit modifikasi dari soal yang ada dan yang penting temanya sama dengan soal yang diberikan yaitu tentang Kendali Motor DC berbasis mikrokontroler.
Pada jejak kali ini membahas salah salah satu paket soal kelompok mikrokontroler, yaitu Kendali Motor DC Berbasis mikrokontroler seperti paket soal dari PSMK seperti di bawah ini.
[caption id="attachment_6157" align="aligncenter" width="601"]
Dari rangkaian di atas jelas untuk kendali motor DC dengan menggunakan metode PWM (Pulse Width Modulation) atau dengan cara mengubah prosentase Duty Cycle atau tegangan listrik rata-rata untuk memutar motor DC.
Karena Downloder yang dimiliki khusus untuk mikrokontroler Atmega16, untuk itu pada jejak ini menggunakan mikrokontroler Atmega16 sebagai basisnya. Berikut ini rangkaian hasil modifikasi dari paket soal yang diberikan tetapi memiliki tema yang sama yaitu Pengendali Motor DC Bergarak Bolak Balik dengan PWM Berbasis Mikrokontroler ATMEGA 16.

Dari rangkaian simulasi di atas jika dibuat rangkaian pengawatan pada mikrokontroler Atmega 16 akan seperti gambar di bawah ini.
[caption id="attachment_2250" align="aligncenter" width="604"]
Sebelum membuat program pengendali sesuai rangkaian di atas dengan menggunakan aplikasi CodeVision AVR , dibuatlah Diagram Alir sebagai berikut ini.

Dari diagram alir di atas ada 2 moda untuk mengubah arah putaran motor DC yaitu arah Clockwise (CW) dan Counter Clockwise (CCW). Untuk langkah awal pengoperasian pilih atau tekan salah satu Moda, misalkan tekan saklar moda CCW, kemudian tekan tombol Low maka motor dc akan berputar Lambat, jika ingin berhenti tekan tombol Stop. Tekan tombol Mid untuk kecepatan sedang, lalu tekan tombol High untuk kecepatan sedang.
Jika ingin mengubah arah putaran, tekan tombol Stop terlebih dahulu kemudian pilih atau tekan saklar Moda yang lainnya, kemudian tekan tombol Low kemudian tombol Mid lalu tombol High apabila ingin mendapatkan kecepatan putaran penuh.
List Program sesuai rancangan rangkaian pengendali motor dc dengan PWM berbasis mikrokontroler di atas seperti berikut.
#include <mega16.h>
#include <delay.h>
int i=0;
#define CW PINA.0
#define CCW PINA.1
#define STOP PINA.2
#define LOW PINA.3
#define MID PINA.4
#define HIGH PINA.5
#define LOCKCW PORTC.0
#define LOCKCCW PORTC.1
#define LED1 PORTC.2
#define LED2 PORTC.3
#define ON 1
#define OFF 0
void main(void)
{
DDRA = 0x00 ; /*Port A sebagai Input*/
PORTA = 0x3f ;
DDRC = 0xff ; /*Port C sebagai Output*/
PORTC = 0x03 ;
while (1)
{ if ( CW == 0) /*Mode CW*/
{
while (i<1)
{
LOCKCW = OFF;
LOCKCCW = ON;
if ( CCW == 0 ){break;}
if ( LOW == 0 ) /*Jika tombol LOW ditekan*/
{
while (i<1)
{
LED1 = ON ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 25 ) ; /*Duty Cycle 25%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 75 ) ; /*Duty Cycle 100%-25%*/
if ( MID == 0 ) /*Jika tombol MID ditekan*/
{
while (i<1)
{
LED1 = ON ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 50 ) ; /*Duty Cycle 50%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 50 ) ; /*Duty Cycle 50%-50%*/
if ( HIGH == 0 ) /*Jika tombol HIGH ditekan*/
{
while (i<1)
{
LED1 = ON ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 100 ) ; /*Duty Cycle 100%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 0 ) ; /*Duty Cycle 100%-100%*/
}
}
}
}
}
}
}
}
if ( CCW == 0 ) /*Moda CCW*/
{
while (i<1)
{
LOCKCW = ON;
LOCKCCW = OFF;
if ( CW == 0 ){break;}
if ( LOW == 0 ) /*Jika tombol LOW ditekan*/
{
while (i<1)
{
LED1 = OFF ;
LED2 = ON ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 25 ) ; /*Duty Cycle 25%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 75 ) ; /*Duty Cycle 100%-25%*/
if ( MID == 0 ) /*Jika tombol MID ditekan*/
{
while (i<1)
{
LED1 = OFF ;
LED2 = ON ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 50 ) ; /*Duty Cycle 50%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 50 ) ; /*Duty Cycle 50%-50%*/
if ( HIGH == 0 ) /*Jika tombol HIGH ditekan*/
{
while (i<1)
{
LED1 = OFF ;
LED2 = ON ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 100 ) ; /*Duty Cycle 100%*/
LED1 = OFF ;
LED2 = OFF ;
if ( STOP == 0 ){LED1=OFF;LED2=OFF;break;}
delay_ms ( 0 ) ; /*Duty Cycle 100%-100%*/
}
}
}
}
}
}
}
}
}
}
Bentuk layout PCB yang sesuai dengan rangkaian mengunakan program Eagle dapat diunduh pada link berikut. Unduh
Hasil simulasi seperti video di bawah ini.
[embed]https://www.youtube.com/watch?v=bhY4SoPRjDs[/embed]
Comments
Post a Comment