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.
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
#define m2 5
#define m3 9
#define m4 10
int arrow =0;
void setup() {
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);
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 == 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== LOW))
{
//belok kiri
motorOut(0,100,2);
}
if((lsensor==HIGH)&&(rsensor==
HIGH))
{
motorOut(0,100,2);
//belok kiri
{
motorOut(0,100,2);
//belok kiri
}
if((lsensor== LOW)&&(rsensor==LOW))
{
//belok kanan
motorOut(100,0,2);
}
}
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);
}
}
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);
}
}
Tidak ada komentar:
Posting Komentar