By | 23/10/2019

Hello temen-temen.
Pada kesempatan kali ini mari kita belajar arduino mengenai kontrol motor DC dengan driver L293D menggunakan aplikasi proteus 8.
Kontrol Motor DC L293

motor DC banyak digunakan sebagai penggerak robot seperti robot pemdam api beroda, robot line follower, robot avoiding, robot balancing dll.

kali ini kita akan belajar mengontrol kecepatan dan arah putar motor DC menggunakan arduino dengan fitur PWM. dimana terdapat sebuah potensiometer yang berfungsi sebagai pengatur kecepatan dan dua buah tombol sebagai pengatur arah putar motor DC.

driver l293D merupakan IC yang di dalamnya mengandung op-amp atau penguat tegangan yang mampu mengangkat beban motor DC maksimal 1A.

jika kita menggunakan motor yang mengonsumsi arus lebih dari 1A dan menggunakan driver l293D dipastikan driver akan mengalami panas berlebih.
berikut adalah animasi hasil dari program yang saya buat, dan kalian dapat mendownload code dan file proteus nya dibawah

DOWNLOAD
Code Arduino

DOWNLOAD
File Proteus 8

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

#define pwm2 9
#define dir2 8
#define pwm1 11
#define dir1 10
#define pinb1 2
#define pinb2 3

void motor_run(int a, int b) {
  if (a < 0) {
    digitalWrite(dir1, 1);
    analogWrite(pwm1, a + 255);
  } else if (a >= 0) {
    digitalWrite(dir1, 0);
    analogWrite(pwm1, a);
  }

  if (b < 0) {
    digitalWrite(dir2, 1);
    analogWrite(pwm2, b + 255);
  } else if (b >= 0) {
    digitalWrite(dir2, 0);
    analogWrite(pwm2, b);
  }
}

void setup() {
  // put your setup code here, to run once:
  lcd.begin();
  pinMode(dir1, OUTPUT);
  pinMode(dir2, OUTPUT);
  pinMode(pinb1, INPUT_PULLUP);
  pinMode(pinb2, INPUT_PULLUP);
  motor_run(0, 0);
}

void loop() {
  // put your main code here, to run repeatedly:

  if (digitalRead(pinb1) == 0) {
    lcd.clear();
    while (1) {
      int kec = map(analogRead(A0), 0, 1023, 0, 255);
      lcd.setCursor(0, 0);
      lcd.print("Arah Maju");
      lcd.setCursor(0, 1);
      lcd.print("PWM :");
      lcd.print(kec);

      motor_run(-kec, kec);
      if (digitalRead(pinb2) == 0) {
        break;
      }
    }
  } else if (digitalRead(pinb2) == 0) {
    lcd.clear();
    while (1) {
      int kec = map(analogRead(A0), 0, 1023, 0, 255);
      lcd.setCursor(0, 0);
      lcd.print("Arah Mundur");
      lcd.setCursor(0, 1);
      lcd.print("PWM :");
      lcd.print(kec);
      motor_run(kec, -kec);
      if (digitalRead(pinb1) == 0) {
        break;
      }
    }
  }

}

mungkin cukup sekian belajar kita kali ini, jangan lupa untuk meninggalkan komentar dibawah.

Leave a Reply

Your email address will not be published. Required fields are marked *