Senin, 30 Mei 2016

membuat line follower arduino sederhana


Line follower robot adalah sebuah robot yang dapat mengikuti garis secara otomatis. Robot didukung oleh rangkain komponen elektronika yang dilengkapi dengan roda dan digerakan oleh motor. Pengendalian kecepatan sangat bergantung pada batas putaran dan pergesekan antara ban robot dengan lantainya. Robot tersebut dirancang untuk bernavigasi dan bergerak secara otomatis mengikuti sebuah alur garis yang dibuat.
Untuk membaca garis, robot dilengkapi dengan sensor yang diletakkkan diujung depan dari robot tersebut. Line follower robot ini memiliki jenis dan bentuk serta memiliki beberapa sistem penggerak dan pengendali sebagai pengatur kinerja yang beraneka ragam sesuai dengan kreatifitas pembuatnya.

Bahan yang harus disediakan:
1x Arduino Uno : http://jogjarobotika.com/arduino-uno-r3-compatible-cable-data
2x TCRT5000 : http://jogjarobotika.com/sensor-garis-tcrt5000-infrared-module
1x L298N Driver Motor : http://jogjarobotika.com/l298n-driver-modul
1x Sasis Kit 2WD : http://jogjarobotika.com/2wd-sasis-kit
2xSpacer 3cm :http://jogjarobotika.com/spacer-kuningan-30mm6mm
1x Kabel Jumper Male-Female http://jogjarobotika.com/kabel-jumper-male-female-40pc
Mur baut 3mm, Jack DC Male
Setelah bahan ready maka tahap selanjutnya adalah merakitnya, namun sebelum itu solderlah motor dc, saklar, dan jack dc terlebih dahulu.
Penyolderan Saklar dilakukan dengan cara membagi jumper male-female menjadi dua. bagian female disolder ke bagian 0 (mati) dan bagian male disolder ke bagian - (Hidup). Sedangkan Jack DC disolder dengan cara membuang bagian female dari kabel jumper, perlu dicatat warna dan polaritasnya! Begitupun dengan penyolderan Motor DC..
Sudah?? Lanjut rakit sasis kitnyaa...
Saya rasa perakitan sasis nggk perlu dijelaskan :P
Oke lanjut ke pengkabelan..

Pengkabelan dilakukan dengan menggunakan kabel jumper, untuk power 5V dapat diambil dari L298N driver (Hati-hati jangan sampai salah ke 12V)
Berikut bentuk robot nampak bawah setelah terakit..

Sebelum masuk ke pemrograman alangkah baiknya kita tahu sistem kerja dari sensor dan driver motor yg digunakan.
Sensor Garis TCRT5000
Sensor ini merupakan sensor garis yang mempunyai 4Pin, VCC,GND, Output Analog (A0), Output Digital (DO). Dalam diagram pengkabelan diatas dapat dilihat bahwa kita (berencana) menggunakan DO sebagai input ke Arduino, dimana nantinya kita menggunakan teori Input-Output dalam pemrogramannya. Dimana jika sensor mendeteksi garis hitam maka sensor akan mengirimkan logika High (1). Kalibrasi sensor dilakukan dengan memutar trimpot yang terdapat pada sensor.
L298N Driver
L298N driver merupakan dricer motor yang sanggup mengontrol dua buah motor DC, driver ini membutuhkan sebuah pin logic (LOW/HIGH)  dan sebuah pin PWM untuk menggerakkan motor.  Berikut konfigurasi dari L298N Driver.

Setelah mengerti cara kerja dari sensor dan driver motor maka kita siap untuk masuk ke pemrograman..
#define m1 3
#define m2 5
#define m3 9
#define m4 10
int arrow =0;
void setup() {
pinMode(m1,OUTPUT);
pinMode(m2,OUTPUT);
pinMode(m3,OUTPUT);
pinMode(m4,OUTPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
}
void loop() {
// pembacaan sensor pada pin 12 dan 13
int lsensor=digitalRead(12);
int rsensor=digitalRead(13);
//logika robot menggunakan prinsip  AND
if((lsensor == LOW)&&(rsensor== HIGH))
{
// maju dengan kecepatan 100
motorOut(100,100,2);
}
if((lsensor== HIGH)&&(rsensor== LOW))
{
//belok kiri
motorOut(0,100,2);
}
if((lsensor==HIGH)&&(rsensor== HIGH))
{
motorOut(0,100,2);
//belok kiri
}
if((lsensor== LOW)&&(rsensor==LOW))
{
//belok kanan
motorOut(100,0,2);
}
}
//Fungsi untuk menggerakkan motor
void motorOut(unsigned char lpwm, unsigned char rpwm, int arrow){
//arrow =1 mundur, 2 maju,
if(arrow==1){
digitalWrite(m3,HIGH);
digitalWrite(m1,LOW);
analogWrite(m4,255-lpwm);
analogWrite(m2,rpwm);
}
else if (arrow==2)
{
digitalWrite(m3,LOW);
digitalWrite(m1,HIGH);
analogWrite(m4,lpwm);
analogWrite(m2,255-rpwm);
}
}
untuk memperlambat atau mempercepat jalannya robot tinggal ganti saja nilai pwm pada
motorOut(lpwm,rpwm,arrow), semakin besar nilainya semakin kencang pula robot akan melaju.
kalau sudah tinggal cari isolasi dan buat jalur dan gassss!

9 komentar:

  1. bang kalau sensornya di tambahin 1 jadi 3 codingnya beda lagi ya??

    BalasHapus
  2. bang kalau sensornya di tambahin jadi banyak codingnya beda lagi ya??

    BalasHapus
  3. gan pake batter yang berapa volt?

    BalasHapus
  4. kok gak mau jalan ya tp sepertinya coding udah jalan indikator sensor jga udah ok tp motor dc gak maunyala daya udah 9v

    BalasHapus
  5. udh coba pakai 5v jga gak bisa tmnku yg coba motor dc katnya klo 5v gak kuat ngangkat

    BalasHapus
    Balasan
    1. coba pake beda sumber daya untuk arduio dan untuk motornya 5v untuk arduino 12v/9v untuk mmotor

      Hapus
  6. #define m1 3
    #define m2 5
    #define m3 9
    #define m4 10
    #define EnA 11
    #define EnB 6

    void setup() {
    pinMode (EnA, OUTPUT);
    pinMode (EnB, OUTPUT);
    pinMode(m1,OUTPUT);
    pinMode(m2,OUTPUT);
    pinMode(m3,OUTPUT);
    pinMode(m4,OUTPUT);
    pinMode(12,INPUT);
    pinMode(13,INPUT);
    Serial.begin(9600);
    }
    void loop() {
    // pembacaan sensor pada pin 12 dan 13
    int lsensor=digitalRead(12);
    int rsensor=digitalRead(13);
    Serial.println(lsensor);
    Serial.println(rsensor);
    digitalWrite(m1, HIGH);
    digitalWrite(m2, LOW);
    digitalWrite(m3, HIGH);
    digitalWrite(m4, LOW);
    //logika robot menggunakan prinsip AND
    if((lsensor == LOW)&&(rsensor== HIGH))
    {

    analogWrite(EnA, 0);
    analogWrite(EnB, 200);
    }
    if((lsensor== HIGH)&&(rsensor== LOW))
    {
    analogWrite(EnA, 200);
    analogWrite(EnB, 0);
    }
    if((lsensor==HIGH)&&(rsensor== HIGH))
    {
    analogWrite(EnA, 0);
    analogWrite(EnB, 0);
    }
    if((lsensor== LOW)&&(rsensor==LOW))
    {
    analogWrite(EnA,200);
    analogWrite(EnB,200);
    }
    }

    BalasHapus