- Concetto di robot inseguitore di linea
- Componenti richiesti
- Schema elettrico
- Programmazione Atmega16 per Line Follower Robot
Qui costruiremo un altro progetto con il microcontrollore Atmega16 AVR. Se non conosci i microcontrollori AVR, puoi fare riferimento ai precedenti progetti e tutorial AVR.
Costruire un robot è sempre un'emozione per tutti gli appassionati di elettronica. E questo brivido può essere massimizzato se il robot può fare automaticamente alcune cose senza istruzioni esterne. Uno dei robot più comunemente costruiti dai principianti dell'elettronica è Line Follower Robot. Come suggerisce il nome, il robot seguirà la linea tracciata sulla superficie. La linea non deve essere necessariamente una linea retta. Inoltre, le linee possono essere di qualsiasi colore.
Abbiamo già realizzato progetti di robot Line Follower utilizzando diversi controller:
- Robot inseguitore di linea che utilizza un microcontrollore 8051
- Line Follower Robot utilizzando PIC microcontrollore
- Line Follower Robot utilizzando Arduino
- Line Follower Robot utilizzando Raspberry Pi
- Robot inseguitore di linea che utilizza il launchpad MSP430
Oggi useremo il microcontrollore AVR per costruire un Line follower Robot.
Per lo più vengono utilizzati sensori IR per rilevare le linee. I sensori IR sono efficaci nel rilevare superfici bianche o nere. Sebbene tu possa utilizzare altri sensori sofisticati che saranno in grado di rilevare tutti i colori e possono creare un robot in grado di seguire tutte le linee di colore. Il robot dovrebbe essere in grado di rilevare la linea anche se il percorso viene alterato cambiando l'angolo e continuare a seguire la linea. Inoltre, dovrebbe fermarsi ovunque la zona di arresto si trovi sulla linea.
I robot inseguitori di linea sono ampiamente utilizzati ormai da giorni nelle industrie manifatturiere, mediche, applicazioni domestiche e magazzini di merci. I robot non si limitano solo a queste applicazioni e possono estenderne le applicazioni in molte applicazioni future.
Concetto di robot inseguitore di linea
I sensori IR sono un attore chiave in questo progetto. I sensori IR sono posizionati nella parte anteriore del robot per tracciare la linea nera tracciata e la superficie. Il robot è posizionato tra la linea e con l'aiuto dei sensori IR il robot tiene traccia della linea. I sensori IR restituiscono la lettura al microcontrollore e con l'aiuto della lettura IR, il microcontrollore sposta i motori sul lato sinistro o destro e porta nuovamente il robot sul percorso.
Line Follower Robot è in grado di tracciare una linea con l'aiuto di un sensore IR. Questo sensore ha un trasmettitore IR e un ricevitore IR. Il trasmettitore IR (LED IR) trasmette la luce e il ricevitore (fotodiodo) attende che la luce trasmessa ritorni. Una luce IR tornerà indietro solo se viene riflessa da una superficie. Considerando che tutte le superfici non riflettono una luce IR, solo la superficie di colore bianco può rifletterle completamente e la superficie di colore nero le osserverà completamente come mostrato nella figura sotto. Scopri di più sul modulo sensore IR qui.
Ora useremo due sensori IR per verificare se il robot è in pista con la linea e due motori per correggere il robot se si muove fuori dalla pista. Questi motori richiedono corrente elevata e dovrebbero essere bidirezionali; quindi usiamo un modulo driver del motore come L293D. Avremo anche bisogno di un microcontrollore come ATmega16 per istruire i motori in base ai valori del sensore IR. Di seguito è riportato uno schema a blocchi semplificato dello stesso.
Questi due sensori IR saranno posizionati uno su entrambi i lati della linea. Se nessuno dei sensori rileva una linea nera, il microcontrollore AVR istruisce i motori a muoversi in avanti come mostrato di seguito
Se il sensore sinistro si trova su una linea nera, il microcontrollore istruisce il robot a girare a sinistra ruotando da sola la ruota destra.
Se il sensore destro si trova su una linea nera, il microcontrollore istruisce il robot a girare a destra ruotando solo la ruota sinistra.
Se entrambi i sensori si trovano sulla linea nera, il robot si ferma.
In questo modo il Robot potrà seguire la linea senza uscire dalla pista. Ora vediamo come appaiono il circuito e il codice.
Componenti richiesti
- Motoriduttori CC (2 unità)
- Modulo sensore IR (2 unità)
- Modulo L293D
- Fonte di alimentazione wireless (es. Batteria, power bank)
- Sedie robot
- Atmega16 Microcontroller IC
- Oscillatore in cristallo da 16 Mhz
- Due condensatori da 100 nF
- Due condensatori da 22pF
- Premi il bottone
- Cavi per ponticelli
- Breadboard
- USBASP v2.0 (per programmare Atmega16)
Schema elettrico
Collegare tutti i componenti come mostrato di seguito nello schema del circuito
Programmazione Atmega16 per Line Follower Robot
Qui Atmega16 è programmato utilizzando USBASP e Atmel Studio7.0. Se non sai come è possibile programmare Atmega16 utilizzando USBASP, visita il link. Il programma completo viene fornito alla fine del progetto, basta caricare il programma in Atmega16 utilizzando il programmatore JTAG e Atmel Studio 7.0 come spiegato nel tutorial precedente.
Abbiamo cercato di mantenere il codice il più breve e semplice possibile. Quindi stiamo usando macro e registri di funzioni speciali in questo codice.
if (bit_is_clear (PINA , leftSen)) { // controlla se il sensore sinistro è OFF
Questa istruzione controlla se il PA0 dove è collegato il sensore sinistro è BASSO o ALTO.
Se vuoi saperne di più su questa dichiarazione e su altre macro, vai a questo collegamento
Ci sono quattro condizioni che stiamo seguendo per leggere attraverso i sensori IR. I sensori IR sono denominati in base alla loro posizione nella parte anteriore del robot. L'IR sinistro è il sensore sinistro e l'IR destro è il sensore destro. Le seguenti condizioni decideranno il movimento del robot.
Abbiamo scritto il codice in base alle condizioni di cui sopra. L'unico cambiamento è che stiamo usando solo due pin di ingresso dell'L293D per azionare entrambi i motori.
Di seguito viene fornito il codice completo con un video dimostrativo.