Feu aquest robot Line Follower per a la Fira de la Ciència

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest post aprenem a construir un circuit robot seguidor de línia mitjançant Arduino, que funcionarà sobre un disseny de línia dibuixat específicament i el seguirà fidelment sempre que estigui disponible i rastrejable pels seus sensors.

Per navneet sajwan



Què és un robot Line Follower

Un robot autònom és una màquina que pot realitzar una sèrie d'accions segons les instruccions del programador, sense que un ésser humà pugui controlar-les manualment en temps real.

Els seguidors de línia (LFR) també són automòbils robot autònoms que es guien per un o més sensors i un recorregut de línia en blanc o negre. Constitueixen la base dels cotxes moderns amb conducció automàtica.



Com tots els robots autònoms, els seguidors de línia tenen una unitat de processament de senyal i de presa de decisions, sensors i actuadors. Si sou principiants en robòtica i voleu prendre-ho seriosament, aquí és on hauríeu de començar. Comencem a fer-ho.

He fet servir dos sensors d'infrarojos i tres rodes motrius per fer aquest projecte. El nombre mínim de sensors que es poden utilitzar és un i un màxim de vuit són suficients per al seguiment de la línia basada en PID.

Components necessaris:

Arduino Un

Xassís

Dos motors amb bateria (pneumàtics) i pneumàtics compatibles

Bola de ricí

Dos sensors infrarojos

Mòdul de controlador de motor

Font d'alimentació

Arduino IDE programari

Ara fem una ullada als nostres components:

ARDUINO UN : Imagineu-lo com la sala de control del nostre robot. Ara, hi ha moltes taules de desenvolupament que es van considerar per a aquest projecte, però Arduino UNO simplement no coincideix amb altres. No és que el nostre protagonista fos superior pel que fa a les seves característiques multidimensionals.

Si hagués estat així, Raspberry Pi i Intel Edison l’haurien colpejat entre els ulls. Els arguments més convincents que van conduir a la selecció d’Arduino UNO es van formar per la combinació de característiques, preu, mida i requisits per al projecte.

Alguns motius rellevants van ser:

TALLA : És bastant petit en comparació amb les plaques de desenvolupament basades en Atmega16 o Atmega8, consumeix una mica d’espai en el xassís, de manera que obteniu un bot compacte i pràctic.

Això realment importa a les competicions de robòtica. Confieu en mi que odiaríeu deambular amb aquest bot lleig tan gran i canviar de lloc tot el dia.

Més petita, més ràpida el robot i més eficients els girs.

MILLOR JUNTA DE PROTOTIPACIÓ : Sens dubte, Arduino UNO té la millor combinació de funcions per prototipatge . Un cop els vostres circuits estiguin al seu lloc i el vostre projecte funcioni perfectament, el podeu substituir per alguna cosa més petit i barat com Arduino Nano i Attiny85 ic.

Per a aquells que facin un seguiment de la línia per a projectes universitaris, suggereixo substituir l'ONU per Nano al final.

XASSIS : És el marc que manté tots els components en posició. Hi ha alguns punts a tenir en compte en comprar un nou xassís,

Ha de ser lleuger i fort.

Per als projectes, és millor si en compreu un al mercat. Però si us esteu preparant per a la competició, us recomano que en personalitzeu la vostra, tenint en compte les dimensions i els requisits de la competició.

Trieu un xassís de plàstic o de fusta. Quan els marcs metàl·lics entren en contacte amb Arduino, s’escurcen diversos pins. Aquest és un factor important en el qual hem de centrar-nos tot mirant els xassís.

Mantingueu el xassís el més baix possible: això proporciona estabilitat al bot.

MOTORS : Utilitzeu una bateria lleugera (B.O.) d.c. motors.

BOLA CASTOR : Les rodes normals proporcionen moviment de translació al llarg d’un únic eix, però una bola de rodes està dissenyada per moure’s en qualsevol direcció de la superfície. Ens dóna tres rodes motrius.

La raó per preferir la tracció de les tres rodes per sobre de les quatre rodes és per la seva acció de gir relativament ràpida. És possible que hagueu notat el rickshaws de cicle que travessa el trànsit com els rèptils. El mateix és el cas del nostre robot.

SENSORS : És un dispositiu que detecta o mesura qualsevol paràmetre físic del nostre entorn i el converteix en senyals elèctrics. En aquest cas, el paràmetre detectat són els rajos infrarojos.

Els sensors són molt fonamentals per a qualsevol robot. Doncs bé, si l’arduino és el cervell del nostre bot, els sensors també podrien tenir el paper dels ulls. A continuació, es detallen algunes coses sobre els sensors:

Els sensors s’han d’orientar de manera que els leds orientats cap al terra.

S'ha de col·locar a la part frontal del bot.

L'espai mínim entre ells ha de ser superior a l'amplada de la línia negra.

TAULA DE CONDUCTORS DE MOTORS : Els conductors de motor són circuits de memòria intermèdia que prenen senyals de baixa tensió per encendre els motors que requereixen una tensió més alta.

En el nostre cas, Arduino pot proporcionar una tensió suficient per accionar els motors, però no pot proporcionar una intensitat suficient. Els pins 5v i GND d’Arduino UNO tenen una puntuació actual de 200 mA, mentre que qualsevol pin GPIO té una puntuació de 40 mA. Això és molt inferior als motors de corrents d’arrencada i parada que necessitem.

Hi ha dos controladors de motor que prefereixo per a aquest projecte: L298N i L293D. Tots dos són igualment adequats per fer aquest projecte.

Tot i que, L293D és comparativament més barat però té una qualificació actual baixa. Les seves connexions són gairebé les mateixes. Ja que he donat les connexions per a tots dos, depèn totalment de vosaltres com feu el vostre bot.

FONT D'ALIMENTACIÓ :

Utilitzeu un adaptador de 12 V o una bateria (no més de 12 volts).

Col·locació de components (de davant a darrere):

Sensors al capdavant del bot.

Roda de rodes al mig.

Motors i pneumàtics en una línia a la part posterior.

Connexions:

SENSORS a ARDUINO :

Connecteu el pin del sensor al pin arduino com es mostra,

Pin del sensorArduino pin
VCC (5v)5V
GND (G)GND
SENSOR ESQUERRA FER (FER)pin 6
SENSOR DRET FER (FER)pin 7

Nota: per comprovar si els vostres sensors estan engegats, dirigiu la càmera del mòbil cap al led del transmissor IR. Veureu un led brillant a la pantalla que no pot ser vist pels nostres ulls nus. Algunes càmeres modernes de telèfons mòbils tenen filtre infraroig. Per tant, tingueu en compte això.

CONDUCTOR DE MOTOR A MOTOR:

Cada motor té dos terminals que cal connectar al conductor del motor. Mai intenteu connectar-los directament a arduino. Mirant des de la part posterior del bot, amb motors a prop vostre i amb sensors allunyats, connecteu-los de la manera següent:

MOTORL298NL293D
MOTOR ESQUERRAPIN 1 I 2PIN 7 I 8
MOTOR DRETPIN 13 I 14PIN 9 I 10

MOTOR DRIVER to ARDUINO UN:

CONDUCTOR DE MOTOR (L298N)ARDUINO UN
PIN 4VI
PIN 5GND
PIN 65V
PIN 8 i PIN 9PIN 3 i PIN 9
PIN 10 i PIN 11PIN 5 i PIN 10
PIN 7 i PIN 125V
CONDUCTOR DE MOTOR (L293D)ARDUINO UN
PIN 3VI
PIN 2GND
PIN 15V
PIN 5 I PIN 6PIN 3 i PIN 9
PIN 11 I PIN 12PIN 5 i PIN 10
PIN 4 I PIN 55V

NOTA: els pins 8 i 9 de l298n s’utilitzen per controlar el motor connectat a l’1 i 2. I, el control de control 10 i 11 connectat als pins 13 i 14. De la mateixa manera, els pins 5 i 6 de l293d s’utilitzen per controlar el motor connectat a 7 i 8. Motor de control 12 i 11 connectat als pins 9 i 10.

Aquí som nois, fins al final de la part del disseny. Encara tenim la codificació per fer, però abans passarem pels principis que permeten el seguiment de línies.

Com funciona un sensor d'infrarojos:

Els sensors infrarojos (sensors IR) es poden utilitzar per detectar el contrast dels colors i la proximitat dels objectes. El principi que hi ha darrere del funcionament del sensor IR és bastant bàsic.

Com podem veure, té dos leds: led emissor d’IR i fotodiode. Actuen com a parell transmissor-receptor. Quan un obstacle arriba davant dels rajos emissors, es reflecteixen cap enrere i són interceptats pel receptor.

Això genera un senyal digital que es pot alimentar a microcontroladors i actuadors per fer les accions necessàries en trobar un obstacle.

La física bàsica ens diu que un cos negre absorbeix tota la radiació electromagnètica que hi incideix mentre un cos blanc ho reflecteix. Aquest principi és aprofitat per un seguidor de línia per diferenciar entre la superfície blanca i la negra.

Com funciona un robot seguidor de línia:

DISPOSICIÓ DE SEGUIDORS DE LÍNIES

En condicions normals, el robot es mou de manera que tots dos sensors queden més de blanc i la línia negra es troba enmig dels dos sensors.

Està programat per fer girar els dos motors de manera que el bot es mogui en direcció cap endavant.

De manera natural, a mesura que passa el temps, un dels dos sensors passa per sobre de la línia negra.

Si el sensor esquerre arriba per sobre de la línia, els motors esquerres es posen en repòs i, com a resultat, el bot comença a girar cap a l'esquerra tret que el sensor esquerre torne a la superfície blanca i s'aconsegueixi l'estat normal.

De la mateixa manera, quan el sensor dret arriba per sobre de la línia negra, els motors de la dreta s’aturen i, per tant, el bot ara gira cap a la dreta tret que el sensor torni a sobre la superfície blanca. Aquest mecanisme de gir es coneix com a mecanisme d’acció diferencial.

ESQUEMA DE CONNEXIONS:

DETALLS DE CABLEATGE:

PROGRAMACIÓ I CONCEPTES:

Després d’haver acabat amb la part del circuit, ara passarem a la part de programació. En aquesta secció, entendrem el programa que controla el nostre robot. Aquí teniu el codi: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Descripció de les funcions utilitzades:

read_sensors (): pren les lectures dels sensors i els emmagatzema a les variables esquerra i dreta.

move_forward (): Quan l'arduino executa aquesta funció, els dos motors es mouen en la direcció cap endavant.

turn_left (): el motor esquerre s’atura. Bot gira a l’esquerra.

turn_right (): el motor dret s'atura. Bot gira a la dreta.

stop (): Bot s'atura.

print_readings (): mostra les lectures dels sensors al monitor sèrie. Per a això, heu de deixar el comentari 'Serial.begin (9600)' a la configuració nul·la.

LECTURES DEL SENSOR:

SENSOR SOBRE LA LÍNIALECTURES DE SENSORS
ESQUERRADRET
SENSOR ESQUERRA01
SENSOR DRET10
CAP11
TOTS DOS00

CONTROL DE VELOCITAT:

De vegades, la velocitat dels motors és tan alta que abans que l'arduino interpreti els senyals del sensor, el robot perd la línia. En resum, el bot no segueix la línia a causa de l’alta velocitat i continua perdent la línia tot i que l’algorisme és correcte.

Per evitar aquestes circumstàncies, disminuïm la velocitat del bot mitjançant la tècnica PWM. Al codi anterior hi ha una variable anomenada valor.

Simplement reduïu el valor numèric de la funció per disminuir la velocitat. A Arduino UNO només podeu tenir valors pwm entre 0 i 255.

analogWrite (pin, valor)

0<= value <=255

Aquest és el final de la meva publicació en línia. Espero que estigui prou detallat per respondre a totes les vostres preguntes cremades i, si en la realitat més rara no ho és, sempre tenim disponible la secció de comentaris. Comenteu els vostres dubtes. Que tingueu feliços retocs!




Anterior: Cotxe robot controlat per telèfon mòbil que utilitza el mòdul DTMF Següent: Commutador d’ALIMENTACIÓ / DESACTIVACIÓ controlat per contrasenya