Kontrol Motor DC dengan ADC Mikrokontroler

Aplikasi mikrokontroler AVR ATmega8535 kali ini adalah mengontrol putaran motor DC dengan ADC (Analog to Digital Converter) yang dimiliki Mikrokontroler (internal ADC).

Blok diagram kontrol motor DC dengan Mikrokontroler terlihat pada gambar berikut.

Blok diagram kontrol DC dg ADC

Teman – teman dapat mengganti Mikrokontroler ATmega8535 dengan tipe yang lain seperti ATmega16 atau ATmega8. Driver motor DC juga tidak harus memakai transistor. Dapat juga kita pakai driver seperti L298 atau tipe yang lain. Skematiknya seperti gambar berikut :

Schematic Kontrol DC dg ADC

Motor DC kita kontrol dengan nilai ADC yang dibaca dari sebuah potensiometer yang dibuat menjadi voltage devider. Kontrol motor DC kita buat dengan mekanisme sebagai berikut :

  • Saat tegangan potensiometer 0 V, motor berhenti berputar.
  • Saat tegangan potensiometer 0 < Vpot < 2 V motor berputar ke kanan (searah jarum jam).
  • Saat tegangan potensiometer 2 V < Vpot < 3 V motor berhenti berputar.
  • Saat tegangan potensiometer 3 < Vpot < 5 V motor berputar ke kiri (berlawanan arah jarum jam).

Program kontrol motor DC kita buat dengan 2 bahasa : C dengan CVAVR & BASCOM-AVR. Perhatikan disini kita memakai crystal 1 Mhz (internal clock). Jika teman – teman memakai nilai crystal yang berbeda maka silakan disesuaikan programnya.

Yang pertama dengan bahasa C (CVAVR) :

/*****************************************
* Kontrol Motor DC dg input VR
www.inkubator-teknologi.com
www.tokotronik.com
*****************************************/
#include
#include
#define ADC_VREF_TYPE 0x40

unsigned int D,V;
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void motor_stop(){
PORTD.4=0;
PORTD.5=0;
}
void motor_right(){
PORTD.4=0;
PORTD.5=1;
}
void motor_left(){
PORTD.4=1;
PORTD.5=0;
}
//========================================
void main(void)
{
DDRD=255;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
SFIOR&=0xEF;

while(1){

D=read_adc(0);
V = D * 5;
if(V==0)
motor_stop();
else if((V>0)&&(V<2000))
motor_right();
else if((V>2000)&&(V<3000))
motor_stop();
else if((V>3000)&&(V<5000))
motor_left();
}
}

Berikutnya untuk BASCOM-AVR :

‘—————————————————–
‘ Kontrol Motor DC dg input VR

‘ www.inkubator-teknologi.com
‘ www.tokotronik.com
‘—————————————————–
$regfile = “m8535.dat”
$crystal = 16000000

Declare Sub Motor_stop()
Declare Sub Motor_right()
Declare Sub Motor_left()

Dim D As Word , V As Word

Config Portd = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc
Do
D = Getadc(0) ‘baca potensio (ADC)
V = D * 5 ‘konversi ke tegangan (mV)
If V = 0 Then ‘jk teg=0 maka
Motor_stop ‘motor berhenti
Elseif V > 0 And V < 2000 Then ‘jk teg>0 dan teg<2V (2000mv) maka
Motor_right ‘motor putar kanan
Elseif V > 2000 And V < 3000 Then ‘jk teg>2V dan teg<3V maka
Motor_stop ‘motor berhenti
Elseif V > 3000 And V < 5000 Then ‘jk teg>3V dan teg<5V maka
Motor_left ‘motor putar kanan
End If

Loop
End

Sub Motor_stop
Portd.4 = 0
Portd.5 = 0
End Sub

Sub Motor_right
Portd.4 = 0
Portd.5 = 1
End Sub

Sub Motor_left
Portd.4 = 1
Portd.5 = 0
End Sub

Selamat mencoba !

This entry was posted in Mikrokontroler AVR and tagged , . Bookmark the permalink.

4 Responses to Kontrol Motor DC dengan ADC Mikrokontroler

  1. arudam says:

    yang pake program arduino ada g mas..
    soale lagi belajar arduino jg…

Leave a Reply