Robot de urmărire linie folosind Arduino și modulul L298N
Line Follower Robot Using Arduino And L298N Module
Robotul de urmărire a liniilor este un vehicul automat care urmează o linie vizuală neagră sau o cale pe o suprafață.
Folosește o linie neagră pe o suprafață albă sau o linie albă pe o suprafață neagră.
Vom învăța cum să facem un robot de urmărire a liniilor folosind Arduino și modulul de driver de motor L298N.
CUM FUNCȚIONEAZĂ ROBOTUL „LINE FOLLOWER” ?
Conceptul de robot de urmărire a liniilor este legat de transmiterea și recepția luminii. Culoarea albă reflectă toată lumina care cade pe ea, în timp ce culoarea neagră absoarbe toată lumina.
În acest robot de urmărire a liniilor, am folosit transmițătoare și receptoare IR.
Când lumina IR cade pe o suprafață albă, este reflectată înapoi către receptorul IR, generând unele modificări de tensiune care sunt analizate de Arduino.
Când lumina IR cade pe o suprafață neagră, este absorbită de suprafața neagră și nicio rază nu este reflectată înapoi, astfel încât receptorul IR nu primește nicio rază.
În acest proiect, când senzorul IR detectează o suprafață albă, starea de intrare Arduino devine HIGH, iar când detectează o linie neagră, devine LOW.
Pe baza acestor intrări, un Arduino Uno oferă ieșirea adecvată pentru a controla urmăritorul de linie.
SCHEMA CIRCUIT ROBOT LINIE FOLLER
LINE FOLLOWER ROBOT CIRCUIT DIAGRAM
Urmați acest tabel pentru a vă face conexiunile.
L298N driver Pins –> Arduino Pins
ENA –> jumper
IN1 –> D9
IN2 –> D6
IN3 –> D5
IN4 –> D3
ENB –> jumper
Infrared Sensor pins –> Arduino pins
Vcc –> 5v
GND –> GND
Right IR sensor OUT –> D13
Left IR sensor OUT –> D12
Pentru modulul de driver de motor L298N, motoarele sunt conectate la bornele de motor ale modulului de driver de motor.
Driverul motorului are alte 3 borne, în care unul este de 12 volți conectat la baterie.
Terminalul GND este conectat la borna negativă a bateriei și, de asemenea, este conectat la pinul GND al plăcii Arduino
Si 5v este conectat la 5v a plăcii Arduino.
COD ARDUINO PENTRU ROBOT LINE FOLLOWER
ARDUINO CODE FOR LINE FOLLOWER ROBOT
// –––––––––––
// roboromania.ro
#define MOTOR_SPEED 60
int mot1=9;
int mot2=6;
int mot3=5;
int mot4=3;
int left=13;
int right=12;
int Left=0;
int Right=0;
void LEFT (void);
void RIGHT (void);
void STOP (void);
void setup() {
pinMode(mot1,OUTPUT);
pinMode(mot2,OUTPUT);
pinMode(mot3,OUTPUT);
pinMode(mot4,OUTPUT);
pinMode(left,INPUT);
pinMode(right,INPUT);
digitalWrite(left,HIGH);
digitalWrite(right,HIGH);
}
void loop() {
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
while(1) {
Left=digitalRead(left);
Right=digitalRead(right);
if((Left==0 && Right==1)==1)
LEFT();
else if((Right==0 && Left==1)==1)
RIGHT();
}
}
void LEFT (void) {
analogWrite(mot3,0);
analogWrite(mot4,30);
while(Left==0) {
Left=digitalRead(left);
Right=digitalRead(right);
if(Right==0) {
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1) {
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
}
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
}
void RIGHT (void) {
analogWrite(mot1,0);
analogWrite(mot2,30);
while(Right==0) {
Left=digitalRead(left);
Right=digitalRead(right);
if(Left==0) {
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1) {
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
}
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
}
void STOP (void) {
analogWrite(mot1,0);
analogWrite(mot2,0);
analogWrite(mot3,0);
analogWrite(mot4,0);
}
//––––––––––
Succes!