Mengendalikan Arah Putaran Motor DC Dengan Mikrokontroler Atmega16 Menggunakan Driver Motor DC L293D

Sesuai dengan judul dari artikel ini, saya akan berbagi tentang bagaimana cara mengendalikan arah putaran motor DC, yang dimaksud arah putaran adalah motor DC dapat berputar searah jarum jam atau CW (Clockwise) dan berlawanan arah jarum jam atau CCW (Counter Clockwise). Dikarenakan saya tidak terlalu mengerti tentang elektronika, jadi saya tidak akan menjelaskan tentang rangkaian eletronik nya.

Pengertian motor DC
Motor DC adalah perangkat penggerak yang mengubah tenaga listrik DC menjadi tenaga gerak mekanik.

Pengertian Driver Motor DC L293D
Driver motor DC L293D adalah sebuah rangkaian eletronik yang digunakan untuk mengedalikan motor DC yang berbasis IC L293D. Berikut adalah konfigurasi driver motor L293D.

Gambar 1 Konfigurasi pin IC L293D
1-4A         : Input 1-4
1-4Y         : Output 1-4
Vcc           : Sumber Tegangan
Ground     : Ground
1,2 EN      : PWM untuk Input 1 dan 2
3,4 EN      : PWM untuk Input 3 dan 4

Untuk mengendalikan arah putaran motor DC digunakan metode H-Brigde, berikut adalah diagram untuk mengendalikan motor DC dua arah.

Gambar 2. Diagram Pengendalian Motor DC Dua Arah

Diagram diatas menunjukan sebuah motor DC yang dikendalikan dua arah melalui pin 1A dan 2A dan berikut adalah tabel kebenaran untuk mengendalikan arah putaran dari diagram tersebut.

Tabel 2.6. Kebenaran Arah Putaran Motor DC

EN
1A
2A
Arah Putaran
High
Low
High
kiri
High
High
Low
kanan
High
Low
Low
berhenti
High
High
High
berhenti
Low
X
X
berhenti


Pemograman dengan CodeVision AVR

include mega16.h
include delay.h
void LeftMotor(char direction){
  switch (direction) {
    case 'F':
      PORTA.0 = 1;
      PORTA.1 = 0;
    break;
    case 'B':
      PORTA.0 = 0;
      PORTA.1 = 1;
    break;
  }
}

void RightMotor(char direction){
  switch (direction) {
    case 'F':
      PORTA.2 = 1;
      PORTA.3 = 0;
    break;
    case 'B':
      PORTA.2 = 0;
      PORTA.3 = 1;
    break;
  }
}

void turnRight(int delay) {
    LeftMotor('F');
    RightMotor('B');  
    delay_ms(delay);
}

void turnLeft(int delay){
    LeftMotor('B');
    RightMotor('F');
    delay_ms(delay);
}

void Foward(int delay) {
    LeftMotor('F');
    RightMotor('F');
    delay_ms(delay);
}

void Backward(int delay) {
    LeftMotor('B');
    RightMotor('B');
    delay_ms(delay);
}

void MotorStop(){
    PORTA.0 = 0;
    PORTA.1 = 0;
    PORTA.2 = 0;
    PORTA.3 = 0;
}

void main(void) {        
    PORTA=0x00;
    DDRA=0x0F;
    PORTC=0x00;
    DDRC=0xFF;
  while(1) {   
    Foward(2000);
    turnLeft(500);
    Foward(500);
    turnRight(500);
    Backward(1000);
    MotorStop();
  }
}

Kode diatas dimaksudkan agar motor DC bergerak maju selama 2000ms, berputar ke kiri selama 500ms, maju lagi selama 500ms, berputar ke kanan 500ms, mundur selama 1000ms dan berhenti. Program diatas menggunakan mikrokontroler Atmega16 dengan crystal 16Mhz.

Perangkat yang dibutuhkan
  • 1 Buah Minimum Sistem Atmega16
  • 2 buah motor DC
  • 1 buah Driver Motor DC L293D

Alat yang dibutuhkan
  • Kabel untuk menghubungkan antar perangkat
  • Downloader atau Programmer seri AVR berserta kabel
  • PC atau Laptop OS Windows
  • Software CodeVision AVR

0 comments:

Post a Comment

Thanks for your comment

princexblog.blogspot.com

free counters