Crea questo robot seguace di linea per il progetto Science Fair

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post impariamo come costruire un circuito robotico che segue la linea utilizzando Arduino, che funzionerà su un layout di linea specificamente disegnato e lo seguirà fedelmente finché è disponibile e tracciabile dai suoi sensori.

Di navneet sajwan



Cos'è un Line Follower Robot

Un robot autonomo è una macchina che può eseguire una serie di azioni secondo le istruzioni del programmatore, senza essere controllata manualmente da un essere umano in tempo reale.

I seguaci di linea (LFR) sono anche auto robotiche autonome guidate da uno o più sensori e da un percorso di linea bianco o nero. Costituiscono la base delle moderne auto a guida autonoma.



Come ogni robot autonomo, i follower di linea dispongono di un'unità di elaborazione del segnale e di processo decisionale, sensori e attuatori. Se sei un principiante in robotica e vuoi prenderlo sul serio, è qui che dovresti iniziare. Cominciamo a realizzarlo.

Ho usato due sensori a infrarossi e tre ruote motrici per realizzare questo progetto. Il numero minimo di sensori che possono essere utilizzati è uno e un massimo di otto è sufficiente per seguire la linea basato su PID.

Componenti richiesti:

Arduino uno

Telaio

Due motori a batteria (b.o.) E pneumatici compatibili

Palla per ricino

Due sensori a infrarossi

Modulo driver motore

Alimentazione elettrica

Software IDE Arduino

Ora, diamo un'occhiata ai nostri componenti:

ARDUINO ONE : Immaginala come la sala di controllo del nostro robot. Ora, ci sono molte schede di sviluppo che sono state prese in considerazione per questo progetto, ma Arduino UNO semplicemente non era all'altezza delle altre. Non è che il nostro protagonista fosse superiore in termini di caratteristiche multidimensionali.

Se fosse stato così, Raspberry Pi e Intel Edison lo avrebbero schiaffeggiato in mezzo agli occhi. Gli argomenti più convincenti che hanno portato alla scelta di Arduino UNO sono stati costituiti dalla combinazione di caratteristiche, prezzo, dimensioni e requisiti per il progetto.

Alcuni motivi rilevanti erano:

TAGLIA : È piuttosto piccolo rispetto alle schede di sviluppo basate su Atmega16 o Atmega8, occupa poco spazio sullo chassis, quindi si ottiene un bot compatto e maneggevole.

Questo è davvero importante nelle competizioni di robotica. Credimi, odieresti andare in giro con quel grosso brutto bot, cambiando posto tutto il giorno.

Più piccole sono le dimensioni, più veloce è il robot e più efficienti le svolte.

MIGLIOR SCHEDA DI PROTOTIPAZIONE : Indubbiamente, Arduino UNO ha la migliore combinazione di funzionalità per prototipazione . Una volta che i tuoi circuiti sono a posto e il tuo progetto funziona perfettamente, puoi sostituirlo con qualcosa di più piccolo e più economico come Arduino Nano e Attiny85 ic.

Per quelli, che fanno seguire la linea per i progetti universitari, suggerisco di sostituire UNO con Nano alla fine.

TELAIO : È il telaio che tiene in posizione tutti i componenti. Ci sono alcuni punti da considerare durante l'acquisto di un nuovo telaio,

Dovrebbe essere leggero e resistente.

Per i progetti, è meglio se ne acquisti uno dal mercato. Ma se ti stai preparando per la competizione, ti consiglio caldamente di personalizzarne una tua, tenendo conto delle dimensioni e delle esigenze della competizione.

Scegli un telaio di plastica o di legno. Quando i frame metallici entrano in contatto con Arduino, un numero di pin viene cortocircuitato. Questo è un fattore importante su cui concentrarsi mentre si cerca il telaio.

Mantieni il tuo chassis il più basso possibile: questo dà stabilità al bot.

MOTORI : Utilizzare corrente continua a batteria leggera (B.O.) motori.

PALLA DI RUOTA : Le ruote normali forniscono un movimento di traslazione lungo un unico asse, ma una sfera rotante è progettata per muoversi lungo qualsiasi direzione sulla superficie. Ci dà tre ruote motrici.

Il motivo per preferire la trazione a tre ruote rispetto alle quattro è a causa della sua azione di sterzata relativamente più veloce. Potresti aver notato i risciò in bicicletta che perforano il traffico come rettili. Lo stesso è il caso del nostro robot.

SENSORI : È un dispositivo che rileva o misura qualsiasi parametro fisico del nostro ambiente e lo converte in segnali elettrici. In questo caso il parametro rilevato sono i raggi infrarossi.

I sensori sono estremamente fondamentali per qualsiasi robot. Ebbene, se arduino è il cervello del nostro bot, anche i sensori potrebbero svolgere il ruolo degli occhi. Ecco alcune cose sui sensori:

I sensori devono essere orientati in modo che i led siano rivolti verso il suolo.

Dovrebbe essere posizionato nella parte anteriore del tuo bot.

La distanza minima tra di loro deve essere maggiore della larghezza della linea nera.

SCHEDA DI GUIDA DEL MOTORE : I driver del motore sono circuiti buffer che assorbono segnali a bassa tensione per alimentare i motori che richiedono una tensione più elevata.

Nel nostro caso, Arduino può fornire una tensione sufficiente per azionare i motori ma non può fornire corrente sufficiente. I pin 5v e GND di Arduino UNO hanno una corrente nominale di 200mA mentre qualsiasi pin GPIO ha una valutazione di 40 mA. Questo è molto inferiore alle correnti di avviamento e stallo dei motori di cui abbiamo bisogno.

Ci sono due driver del motore che preferisco per questo progetto: L298N e L293D. Entrambi sono ugualmente adatti per realizzare questo progetto.

Anche se, L293D è relativamente più economico ma ha una bassa corrente nominale. Le loro connessioni sono quasi le stesse. Dal momento che ho fornito le connessioni per entrambi, dipende totalmente da te come creare il tuo bot.

ALIMENTAZIONE ELETTRICA :

Utilizzare un adattatore da 12 V o una batteria (non più di 12 V).

Posizionamento dei componenti (dalla parte anteriore a quella posteriore):

Sensori alla testa del tuo bot.

Ruota piroettante al centro.

Motori e pneumatici in una linea sul retro.

Collegamenti:

SENSORI ad ARDUINO :

Collega il pin del sensore al pin arduino come mostrato,

Pin del sensorePin di Arduino
VCC (5v)5V
GND (G)GND
SENSORE SINISTRO FUORI (DO)perno 6
USCITA SENSORE DESTRO (DO)perno 7

Nota: per verificare se i sensori sono accesi, puntare la fotocamera del cellulare verso il led del trasmettitore IR. Vedrai dei led luminosi sullo schermo che non possono essere visti dai nostri occhi nudi. Alcune moderne fotocamere per telefoni cellulari hanno un filtro a infrarossi. Quindi, tienilo in considerazione.

MOTORE a MOTORE DRIVER:

Ogni motore ha due terminali che devono essere collegati al driver del motore. Non provare mai a collegarli direttamente ad arduino. Guardando dal retro del tuo bot, con i motori vicino a te e i sensori lontani, collegali come segue:

MOTOREL298NL293D
MOTORE SINISTROPIN 1 E 2PIN 7 E 8
MOTORE DESTROSPINOTTO 13 E 14PIN 9 E 10

MOTOR DRIVER ad ARDUINO UNO:

DRIVER MOTORE (L298N)ARDUINO ONE
PIN 4VINO
PIN 5GND
PIN 65V
PIN 8 e PIN 9PIN 3 e PIN 9
PIN 10 e PIN 11PIN 5 e PIN 10
PIN 7 e PIN 125V
DRIVER MOTORE (L293D)ARDUINO ONE
PIN 3VINO
PIN 2GND
PIN 15V
PIN 5 E PIN 6PIN 3 e PIN 9
PIN 11 E PIN 12PIN 5 e PIN 10
PIN 4 E PIN 55V

NOTA: i pin 8 e 9 di l298n vengono utilizzati per controllare il motore collegato a 1 e 2. Inoltre, 10 e 11 controllano il motore collegato ai pin 13 e 14. Allo stesso modo, i pin 5 e 6 di l293d vengono utilizzati per controllare il motore collegato a 7 e 8 e, 12 e 11 controllano il motore collegato ai pin 9 e 10.

Eccoci ragazzi, fino alla fine della parte progettuale. Abbiamo ancora la codifica da fare, ma prima esamineremo i principi che consentono di seguire la riga.

Come funziona un sensore a infrarossi:

È possibile utilizzare sensori a infrarossi (sensori IR) per rilevare il contrasto nei colori e la vicinanza di oggetti ad esso. Il principio alla base del funzionamento del sensore IR è piuttosto semplice.

Come possiamo vedere, ha due led: led che emette IR e un fotodiodo. Fungono da coppia trasmettitore-ricevitore. Quando un ostacolo si trova davanti ai raggi emittenti, questi vengono riflessi indietro e intercettati dal ricevitore.

Questo genera un segnale digitale che può essere inviato a microcontrollori e attuatori per intraprendere le azioni necessarie in caso di ostacoli.

La fisica di base ci dice che un corpo nero assorbe tutta la radiazione elettromagnetica incidente su di esso mentre un corpo bianco la riflette. Questo principio viene sfruttato da un inseguitore di linea per distinguere tra superficie bianca e nera.

Come funziona un robot line follower:

LAYOUT DI SEGUENTE LINEA

In condizioni normali, il robot si muove in modo tale che entrambi i sensori siano sopra il bianco e la linea nera sia tra i due sensori.

È programmato per ruotare entrambi i motori in modo che il robot si muova in avanti.

Ovviamente, col passare del tempo uno dei due sensori supera la linea nera.

Se il sensore sinistro supera la linea, i motori di sinistra vengono portati a riposo e di conseguenza il bot inizia a girare verso sinistra a meno che il sensore sinistro non ritorni sulla superficie bianca e non si raggiungano le condizioni normali.

Allo stesso modo, quando il sensore destro supera la linea nera, i motori di destra vengono fermati e di conseguenza il bot ora gira verso destra a meno che il sensore non ritorni sulla superficie bianca. Questo meccanismo di rotazione è noto come meccanismo di trasmissione differenziale.

SCHEMA ELETTRICO:

DETTAGLI DI CABLAGGIO:

PROGRAMMAZIONE E CONCETTI:

Terminata la parte circuitale, passeremo ora alla parte di programmazione. In questa sezione capiremo il programma che controlla il nostro robot. Ecco il codice: / *
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()
}
}

Descrizione delle funzioni utilizzate:

read_sensors (): Prende le letture di entrambi i sensori e le memorizza nelle variabili sinistra e destra.

move_forward (): Quando arduino esegue questa funzione, entrambi i motori si muovono in avanti.

turn_left (): il motore sinistro si ferma. Bot gira a sinistra.

turn_right (): il motore destro si ferma. Bot gira a destra.

halt (): il bot si ferma.

print_readings (): Visualizza le letture dei sensori sul monitor seriale. Per questo devi decommentare 'Serial.begin (9600)' in void setup.

LETTURE DEL SENSORE:

SENSORE IN LINEALETTURE DEL SENSORE
SINISTRAGIUSTO
SENSORE SINISTRO01
SENSORE DESTRO10
NESSUNA11
ENTRAMBI00

CONTROLLO DI VELOCITÀ:

A volte la velocità dei motori è così alta che prima che arduino interpreti i segnali del sensore, il robot perde la linea. In breve, il bot non segue la linea a causa dell'alta velocità e continua a perdere la linea anche se l'algoritmo è corretto.

Per evitare tali circostanze, diminuiamo la velocità del bot utilizzando la tecnica PWM. Nel codice sopra c'è una variabile denominata value.

Basta diminuire il valore numerico nella funzione per diminuire la velocità. In Arduino UNO puoi avere solo valori pwm compresi tra 0 e 255.

analogWrite (pin, valore)

0<= value <=255

Questa è la fine del mio post on line follower. Spero che sia abbastanza dettagliato per rispondere a tutte le tue domande scottanti e se nella realtà più rara non lo è, allora abbiamo sempre la sezione commenti disponibile per te. Commenta i tuoi dubbi. Buon divertimento!




Precedente: Auto robot controllata da telefono cellulare utilizzando il modulo DTMF Avanti: Interruttore di rete CA controllato da password