sabato 26 marzo 2016

Line follower con shield motor V1

Una soluzione molto elegante e funzionale per costruire un Line Follower è utilizzando una shield apposita.

Richiami alla guida di base del Line Follower: http://goo.gl/vu5qLC

Questa guida tratterà la Motor Shield Arduino più comune: http://goo.gl/511XCM


La sua vera potenzialità è l'integrazione con la libreria AdaFruit Motor Shield: https://goo.gl/6EcJiH
Questa shield può controllare agevolmente diversi tipi di motori:
  • 2 stepper motors
  • 2 servo motors
  • 4 DC motors
Per il progetto Line Follower utilizzeremo solo la parte dedicata ai motori DC.

Riporto la pagina dedicata con tutti i comandi per i DC motors: https://goo.gl/nSU01p

Codice di questo progetto su GIT:

Collegamento:

Lo schema qui sotto riporta le 4 uscite disponibili per i 4 motori. Ovviamente a noi servono solo 2 di queste uscite.

Nel mio caso ho collegato i due motori DC al #1 e #2, com'è visibile nel codice:

 AF_DCMotor m_SX(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm  
 AF_DCMotor m_DX(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm  
Il passaggio immediatamente successivo sarà il collegamento dei 3 sensori di linea:

 pinMode(A0,INPUT); // senSX  
 pinMode(A1,INPUT); // senCX  
 pinMode(A2,INPUT); // senDX  
Per poterli collegare sarà necessario saldare un connettore Maschio-Maschio quella shield.

Impostiamo ora le relative velocità, per ciascun motore:

 m_SX.setSpeed(70);   // set the speed to 0/255  
 m_DX.setSpeed(70);  

Corpo del programma:

Per prima cosa, ancor prima di muovere i motori, dobbiamo controllare in che stato siamo, rispetto alla linea.

Per farlo, leggiamo i sensori tramite la funzione "readsen()":

 void readsen(){  
  senSX = digitalRead(A0);  
  senCX = digitalRead(A1);  
  senDX = digitalRead(A2);  
 }  
Ogniuna delle 3 variabili, senSX, senCX e senDX riporterà:
  • 0 = bianco = nessuna linea 
      oppure
  • 1 = nero = linea trovata
Questi valori verranno analizzati nei blocchi successivi contenuti nel programma:
  • riga a destra
  • riga a sinistra
  • tutto nero ( dove sono? )
  • avanti

Power! 

Una parte assolutamente non trascurabile del progetto è la corretta alimentazione.
La shield ha due tipi d'alimentazione:
  1. Unica alimentazione, shield + Arduino, tramite il Jack sulla scheda Arduino o morsettiera sulla shield. Inserire jumper.
    • Ingresso da Jack/morsettiera minimo 7.4 Volt. Si consiglia una batteria 7.4V con almeno 600mA.
  1. Alimentazioni separate, una per la shield ed una per Arduino. Togliere jumper.
    • Ingresso Arduino:
      • Jack minimo 7 Volt.
      • USB.
    • Ingresso shield 5 Volt.
La batteria tradizionale da 9 Volt ha dato dei problemi, si sconsiglia l'utilizzo.

Per una più profonda analisi, rimando a questo articolo http://goo.gl/6BRNe1 in particolare nella sezione Alimentazione d'un eventuale carico/shield.


Per finire, per una totale completezza, richiamo la pagina ufficiale dello shield: https://goo.gl/qb5vNC

Nessun commento:

Posta un commento