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 DC berhenti berputar.
  • Saat tegangan potensiometer 0 < Vpot < 2 V motor DC berputar ke kanan (searah jarum jam).
  • Saat tegangan potensiometer 2 V < Vpot < 3 V motor DC berhenti berputar.
  • Saat tegangan potensiometer 3 < Vpot < 5 V motor DC 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.

Program mikrokontroler yang pertama kita buat dengan bahasa C (CVAVR) :

/*****************************************
* Kontrol Motor DC dg input VR
www.inkubator-teknologi.com
www.tokotronik.com
*****************************************/
#include <mega8535.h>
#include <delay.h>
#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();
}
}

Program mikrokontroler 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

Silakan anda pilih salah satu diantara ke-2 program tadi. Bagi teman – teman yang terbiasa memakai bahasa C silakan pakai CVAVR (CodeVision AVR) atau mau mencoba dengan BASCOM-AVR juga silakan.

Selamat mencoba !

8 thoughts on “Kontrol Motor DC dengan ADC Mikrokontroler

  • February 25, 2017 at 10:17 am
    Permalink

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

    Reply
    • February 27, 2017 at 10:08 am
      Permalink

      Insya Allah kapan2 kita posting mas, trims

      Reply
    • February 27, 2017 at 10:01 am
      Permalink

      Trims mas Sahrir sudah mampir

      Reply
  • September 6, 2018 at 9:58 pm
    Permalink

    Mas coba tambahin klo misalkan menggunakan imputan sensor pir prosesnya mikrokontrolwe outputnya motor dc, programnya juga ya mas

    Reply
    • October 18, 2019 at 9:25 am
      Permalink

      Maksudnya jika terdeteksi PIR maka motor berputar ? Atau bagaimana ?

      Reply
    • October 18, 2019 at 9:25 am
      Permalink

      Silakan mas

      Reply

Leave a Reply

WhatsApp chat
%d bloggers like this: