HOME 

Robot Segue linea

Line Follower robot

 

INTRODUZIONE

Eccomi ancora una volta a descrivervi un robottino a me molto simpatico, per la verità l’ennesimo progetto in tema di “inseguitore di linea”. Ne abbiamo visti in tutte le salse qui ed altrove, però ho deciso ugualmente di farvi partecipi di questa mia esperienza, conclusasi ormai qualche anno fa, se non altro per il tipo di soluzioni adottate e di tecniche messe in atto. Nulla di speciale ovviamente, ma forse parti del progetto possono esservi utili per altre applicazioni, dunque spero sia di vostro gradimento.

Alla base di tutto c’è l’onnipresente pic, per il semplice motivo che è molto diffuso, molto flessibile, molto accessoriato e chi più ne ha più ne metta. In questo caso si tratta di un pic16f88, del quale ho sfruttato due ingressi analogici e tutti gli altri di in/out digitali.

Com’è noto a tutti, la parte fondamentale del robottino è costituita dai due sensori, nel mio caso due fotoresistenze, che captano la luce riflessa dalla traccia sottostante da seguire, ed in base alla loro intensità, far decidere al software nel pic, se è il caso di svoltare a destra, a sinistra o andare avanti.

Al centro tra i due sensori, vi è un diodo led che emette luce nello spettro visibile, tale fascio luminoso riflesso dalla traccia sottostante, torna indietro verso i due sensori. Se l’intensità ricevuta dai due sensori è identica, vuol dire che il modellino si trova al centro della linea, i due motorini quindi, in questo caso due servocomandi  per modellismo modificati, sono comandati con identici parametri e ruotano alla stessa velocità, per cui il modellino prosegue in linea retta.

Nel caso in cui invece, si presenta una curva da affrontare, immediatamente i due sensori rileveranno un’intensità di luce riflessa diversa, quello esterno alla curva un’intensità minore, quello interno un’intensità maggiore.

Questa diversità letta da due ingressi analogici del pic ed elaborata dal software di gestione, comanda in modo direttamente proporzionale i due motorini, in modo da avere una sterzata tanto maggiore quanto più chiusa e la curva da affrontare.

Da notare che durante la marcia, se la curva e troppo stretta, non solo abbiamo un incremento della velocità di rotazione della ruota esterna, ma anche un rallentamento della ruota interna, e quando non dovesse bastare, perfino il bloccaggio della ruota interna o addirittura l’inversione della rotazione, conferendo a tutto il sistema un’ottima stabilità e precisione durante l’avanzamento del modellino. A seguire un filmato che sicuramente sarà molto più esplicativo di quanto lo sia stato io.

https://www.youtube.com/watch?v=BNq0Cv-gbcg

Questo dipende solo dal software che ho scritto in assembler che potrete visionare QUI, corredato di note descrittive per facilitarne la lettura, se credete modificatelo pure ed adattatelo alle vostre esigenze.

Lo schema elettrico, grazie all’adozione del pic, è molto semplice,  ridotto all’essenziale e di facile lettura, per cui passo direttamente a descrivere la funzione svolta dai vari pulsanti.

TARATURA

Per le operazioni seguenti la macchinetta dovrà essere poggiata su un supporto rigido, che mantenga le ruote stabilmente sollevate dal piano d’appoggio, altrimenti sarà impossibile lavorarci dato che dovremo regolare la velocità di rotazione dei due motori. A tal proposito saranno molto utili dei riferimenti sulle ruote, che io ho ottenuto incollando una strisciolina di adesivo bianco su entrambe le ruote.

Se alimentiamo adesso la macchinetta con I1 mentre è premuto il pulsante rb1 che rilasceremo subito dopo, si avvierà l’esecuzione di una subroutine che ci permetterà di regolare la velocità minima dei due motori fino a farli fermare o addirittura a farli ruotare al contrario. Intervenendo quindi sui pulsanti rb1 ed rb2 per il motore sinistro, e sui pulsanti rb5 ed rb6 per il motore destro, e tenendo sottocchio i riferimenti sulle due ruote, regoleremo la loro velocità minima che dovrà essere il più possibile identica per entrambi, che memorizzeremo alla fine premendo brevemente il pulsante rb7.

Se alimentiamo adesso la macchinetta con I1 mentre è premuto il pulsante rb6 che rilasceremo subito dopo, si avvierà l’esecuzione di un’altra subroutine che ci permetterà di regolare la velocità massima dei motori. Intervenendo quindi sui pulsanti rb1 ed rb2 per il motore sinistro, e sui pulsanti rb5 ed rb6 per il motore destro, e tenendo sottocchio i riferimenti sulle due ruote, regoleremo la loro velocità massima che dovrà essere il più possibile identica per entrambi, che memorizzeremo alla fine premendo brevemente il pulsante rb7.

Le uscite rb3 ed rb4 pilotano i due motori con dei segnali impulsivi di tipo pwm, tali segnali si ripetono ogni 20 ms circa ed hanno una durata che può assumere valori compresi tra  1 e 2 ms circa. A motore fermo tale valore si aggira intorno a 1,5 ms circa, alla massima velocità avanti 2ms circa, ed alla massima velocità indietro 1ms circa. Alla voce servocomando, su internet troverete tutto quello che c’è da sapere su tali oggetti molto utili ed interessanti per il nostro hobby.

Ra2 ed ra3 pilotano due led che inizialmente mi sono serviti per monitorare l’esecuzione di alcuni parametri del software, alla fine sono rimasti ed ora indicano solo la direzione di marcia della macchinetta, fanno solo coreografia e se volete possono anche essere eliminati.

Ra0 ed ra1 sono i due ingressi analogici, per un corretto funzionamento di tutto il sistema, occorre che le due tensioni su questi due ingressi siano identiche e pari a 1,5V.

Per effettuare queste regolazioni, dobbiamo prima disattivare i due motori, condizione che otterremo alimentando la macchinetta con I1 mentre è premuto il pulsante rb2 che rilasceremo subito dopo.

A questo punto,  bisogna posizionare la macchinetta sulla traccia da seguire, in modo che il led acceso risulti posizionato esattamente al centro su di essa, agendo quindi sui due potenziometri faremo in modo da ottenere ai due ingressi le due tensioni consigliate prima.

La buona riuscita di tale taratura, dipende soprattutto dall’accuratezza della realizzazione della basetta che ospita i due sensori con il led, che deve trovarsi esattamente al centro tra i due sensori. (vedi foto) Inoltre, è opportuno coprire con del nastro adesivo nero o con della stoffa nera, tutto lo spazio circostante tra la basettina ed il piano d’appoggio, allo scopo di schermare dalla luce ambientale i due sensori e farli lavorare in condizioni ottimali.

Come avrete certamente capito, questo progetto nasce per funzionare esclusivamente con dei servocomandi, che a prescindere dalla loro marca, dovranno essere modificati per funzionare come motorini. Se siete interessati, esistono in rete svariate pagine che descrivono minuziosamente come modificare per il nostro scopo un qualunque servocomando.

L’unica accortezza che dovrete avere, consiste nel ricordarvi durante la fase di modifica, di invertire i fili d’alimentazione del motorino di uno dei due servocomandi. Tale operazione è indispensabile, poiché essendo i due motorini contrapposti, se non sarà eseguita, il robot girerà in tondo su se stesso.

A lavoro ultimato, può accadere che il robottino proceda in marcia indietro, in questo caso dovete solo invertire i due servocomandi. Se in curva invece di svoltare a destra svolta a sinistra, evento assai improbabile, allora dovrete solo invertire i due ingressi analogici.

Per concludere, se rispetterete tutte le indicazioni suggerite fin qui, non dovreste incontrare nessun problema.

Non credo di dover aggiungere altro, solo augurarvi buon divertimento qualora decidiate di realizzare questo progetto.

Saluti .

 IT9DPX - #135  (Francesco M.)