Tiap tahun PSMK memberikan soal untuk Uji Kompetensi Keahlian (UKK). Untuk Teknik Elektronika Industri diberi 4 buah Paket Soal yang salah satunya tentang Pengendalian Motor DC Berbasis mikrokontroler.
Masing sekolah diharapkan mengadakan UKK sesuai soal dan spesifikasi komponen yang ada dalam 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.
Berikut ini rangkaian hasil modifikasi dari 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.
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.
Terimakasih atas ilmunya, mohon ijin copas untuk dicoba.