Dasar Kendali Motor DC dengan Metode PWM Berbasis Mikrokontroler Atmega16

Aktuator motor DC selalu muncul dalam paket soal Uji Kompetensi Keahlian (UKK) Teknik Elektronika Industri dengan instruksi yang berbeda-beda. Terakhir dalam soal UKK TEI 2021 diminta motor DC berputar searah CW dan CCW dengan Duty Cycle 50%.

Mengendalikan motor DC menggunakan mikrokontroler lebih mudah dengan metode PWM (Pulse Width Modulation) atau dengan mengubah tegangan rata-ratanya. Pada jejak kali ini akan dibuat program dasar mengendalikan motor dc yang dibuat dalam perangkat lunak CodeVisionAVR. Untuk lebih jelasnya bisa dilihat dalam kendali motor DC tanpa tombol dan dengan menggunakan tombol.

Sinyal keluran mikrokontroler berbentuk PWM dengan Duty Cycle yang sudah ditentukan, besar duty cycle akan mempengaruhi tegangan rata-rata keluaran mikrokontroler tersebut. Untuk mengingatkan kembali tentang pwm dapat dilihat dalam gambar di bawah ini.

Bentuk Sinyal PWM

Keluaran mikrokontroler tidak bisa dihubungkan langsung ke motor dc, karena keluaran mikrokontroler memiliki tegangan yang kecil dan kuat arus listrik yang kecil pula atau tidak akan mampu memutarkan motor dc. Untuk itu perlu dihubungkan ke rangkaian Transistor Bridge. Catu tegangan Transistor Bridge bisa terpisah dengan tegangan mikrokontroler atau bisa lebih dari +5 Volt tergantung daya motor dc yang digunakan, seperti rangkaian di bawah ini.

Rangkaian Transistor Bridge

 

Kendali Motor DC tanpa Tombol Menggunakan Metode PWM

Kendali Motor DC tanpa Tombol

List Program Motor DC Berputar CW 

#include <mega16.h>
#include <delay.h>

int i=0;

#define LEDCW PORTC.0
#define LEDCCW PORTC.1
#define OUT1 PORTC.2
#define OUT2 PORTC.3

void main(void)
{
DDRA = 0x00 ; /*Port A sebagai Input*/
PORTA = 0xff ;
DDRC = 0xff ; /*Port C sebagai Output*/
PORTC = 0x03 ; 


while (1)
{ 
LEDCW = 1; /*Indikator CW Tidak Nyala*/
LEDCCW = 0; /*Indikator CCW Nyala*/
OUT1 = 1 ;
OUT2 = 0 ; 
delay_ms ( 750 ) ; /*Duty Cycle 50%*/ 
OUT1 = 0 ;
OUT2 = 0 ;
delay_ms ( 250 ) ; 
} 
}

List Program Motor DC Berputar CCW 

#include <mega16.h>
#include <delay.h>

int i=0;

#define LEDCW PORTC.0
#define LEDCCW PORTC.1
#define OUT1 PORTC.2
#define OUT2 PORTC.3

void main(void)
{
DDRA = 0x00 ; /*Port A sebagai Input*/
PORTA = 0xff ;
DDRC = 0xff ; /*Port C sebagai Output*/
PORTC = 0x03 ;

while (1)
{ 
LEDCW = 0; /*Indikator CW Tidak Nyala*/
LEDCCW = 1; /*Indikator CCW Nyala*/
OUT1 = 0 ;
OUT2 = 1 ; 
delay_ms ( 750 ) ; /*Duty Cycle 50%*/ 
OUT1 = 0 ;
OUT2 = 0 ;
delay_ms ( 250 ) ; 
} 
}

Kendali Motor DC dengan Tombol Menggunakan Metode PWM

Kendali Motor DC dengan Tombol

List Program

#include <mega16.h>
#include <delay.h>

int i=0;

#define SW2 PINA.0
#define SW3 PINA.1

#define LEDCW PORTC.0
#define LEDCCW PORTC.1
#define OUT1 PORTC.2
#define OUT2 PORTC.3

void main(void)
{
DDRA = 0x00 ; /*Port A sebagai Input*/
PORTA = 0xff ;
DDRC = 0xff ; /*Port C sebagai Output*/
PORTC = 0x03 ; 


while (1)
{ 
if ( SW2 == 0) /*Mode CW jika tombol SW2 ditekan */
{
while (i<1)
{
LEDCW = 1; /*Indikator CW Tidak Nyala*/
LEDCCW = 0; /*Indikator CCW Nyala*/
OUT1 = 1 ;
OUT2 = 0 ; 
delay_ms ( 750 ) ; /*Duty Cycle 50%*/ 
OUT1 = 0 ;
OUT2 = 0 ;
delay_ms ( 250 ) ; 
}
}

if ( SW3 == 0) /*Mode CCW*/
{
while (i<1)
{
LEDCW = 0;
LEDCCW = 1;
OUT1 = 0 ;
OUT2 = 1 ;
delay_ms ( 500 ) ; /*Duty Cycle 50%*/ 
OUT1 = 0 ;
OUT2 = 0 ;
delay_ms ( 500 ) ; 
} 
} 
} 
}

 

JEJAK TERKAIT :  Operational Amplifier sebagai Pengendali D (Derivative)

 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *