Moto shield |
|
La scheda motor shield permette collegata alla scheda
Arduino
duemilanove o
Arduino UNO di pilotare due motori DC,
questa è ora fuori produzione ma non dovrebbe essere difficile trovarne ancora,
cercando in rete.
I motori possono essere tutti quelli del tipo DC
che possono funzionare alla tensione di Vin che è la tensione di
alimentazione elettrica della scheda .
Il driver del motore l'integrato
SN754410 (L293D-compatible) può
sopportare tensioni comprese tra 3.6V a 36V motori (1A).
Ma la scheda
è progettata per prendere Vin dall'alimentazione elettrica dalla scheda Arduino / Freeduino,
che è alimentato con una tensione di 5V, non è possibile alimentare il
regolatore senza bruciarlo.
Se si vuole utilizzare un motore con una tensione di alimentazione con
una tensione < 7V o > 14V, accorerà modificare la scheda, oppure
prelevare la tensione non utilizzando il connettore della scheda.
Per altre informazioni vedere il link
http://arduino.cc/playground/MotorControlShieldV3/0
Il progetto della scheda si deve
a David Cuartielles uno dei creatori della scheda Arduino.
La scheda il cui schema generale è riportato sotto permette il pilotaggio di due
motori o di un motore passo-passo, è inoltre presente un circuito per il
controllo di un encoder per rilevare la rotazione del motore, se questa parte
del circuito non è utilizzata i componenti che la formano potranno non
essere montati (vedere Tabella)
Schema generale della Shield Motor Control
Nota: i componenti segnati con * possono non essere montati poiché fanno parte del circuito encoder. |
Schema pilotaggio motore
Nella figura sotto è visibile lo schema della sezione principale del circuito per il pilotaggio dei motori che utilizza come circuito principale un integrato tipo L293D, o in alternativa, un SN754410 pin to pin compatibile
Schema elettrico relativo alla sezione MOTORE
SN754410 Driver per ponte H | ||
Piedinatura | Datasheet | Foto dell'integrato |
L293D Driver per ponte H | ||
Piedinatura | Datasheet | Foto dell'integrato |
Questo integrato è un driver a 4
canali di tipo push-pull nato appositamente per il controllo di motori elettrici
funzionanti in continua, il suo compito è di tradurre il livello dei segnali di
pilotaggio provenienti dal microcontrollore in segnali con livelli adatti al
pilotaggio del motore.
Tramite questo driver otterremo la corrente necessaria al motore per lo start lo
stop e, tramite il push-pull, la rotazione oraria ed antioraria.
Il modello scelto può fornire in uscita una corrente massima per ogni canale di
600mA con una corrente di picco (non ripetitiva) di 1,2 A, con una massima
tensione di alimentazione limitata al valore di Vin della
scheda Arduino.
Il circuito integrato in contenitore DIP16, contiene all’interno 4 amplificatori
di potenza per il comando di motori in corrente continua o passo-passo (stepper
motor).
Sono, inoltre, già presenti i diodi di protezione interni per il ricircolo della
corrente.
Gli amplificatori di potenza possono essere usati indipendentemente l'uno
dall'altro oppure in coppia per realizzare pilotaggi con configurazione a ponte;
Il controllo del funzionamento degli amplificatori è fatto mediante livelli di
tensione compatibili TTL (HIGH:+5V, LOW:0V), dunque perfettamente
interfacciabili con Arduino.
Per ogni coppia di amplificatori è presente un ingresso di abilitazione (ENABLE)
che, se posto a livello logico ALTO ne abilita il funzionamento, se posto a
livello BASSO pone gli stessi in stato di alta impedenza.
L'integrato è provvisto inoltre internamente sia di una protezione termica sia
di una protezione contro i cortocircuiti delle uscite verso massa;
Per l'alimentazione della parte logica è utilizzata la tensione +5V sempre
fornita dal regolatore presente sull’Arduino.
PIN |
Sigla |
Funzione |
1 |
1,2EN |
Comando abilitazione coppia amplificatori 1 e 2 |
2 |
1A |
Ingresso comando amplificatore 1 |
3 |
1Y |
Uscita amplificatore 1 |
4 |
GND |
GND |
5 |
GND |
GND |
6 |
2Y |
Uscita amplificatore 2 |
7 |
2A |
Ingresso comando amplificatore 2 |
8 |
VCC2 |
Ingresso tensione di alimentazione motori |
9 |
3,4EN |
Comando abilitazione coppia amplificatori 3 e 4 |
10 |
3A |
Ingresso comando amplificatore 3 |
11 |
3Y |
Uscita amplificatore 3 |
12 |
GND |
GND |
13 |
GND |
GND |
14 |
4Y |
Uscita amplificatore 4 |
15 |
4A |
Ingresso comando amplificatore 4 |
16 |
VCC1 |
Ingresso tensione di alimentazione logica di controllo |
Per il suo funzionamento come
visibile dallo schema di principio sarebbe necessario collegarlo ad un
processore utilizzando 4 porte, 2 per motore, più due porte per il controllo dei
pin di abilitazione
Schema di principio del circuito motore
La soluzione circuitale adottata invece prevede l’utilizzo di porte logiche di tipo NAND contenute all’interno dell’integrato 74HC00N i cui ingressi sono cortocircuitati comportandosi in pratica come porte NOT. In questo modo fornendo un segnale logico HIGH ad uno degli ingressi automaticamente avremo un valore LOW sull’altro ingresso, riducendo così il numero di pin necessari al pilotaggio, avendo per ogni motore un pin per la direzione e uno per l’abilitazione.
SN74HC00 Quad 2-input NAND gate | ||
Piedinatura | Datasheet | Foto dell'integrato |
La scheda ha due linee di alimentazione diverse, +5V per la logica TTL e "Vin" per alimentare le uscite per i motori. Entrambe le tensioni derivano da quelle presenti sulla scheda Arduino.
Circuito ENCODER
Come già detto in precedenza, sulla scheda è presente una parte di circuito utilizzata per collegare un encoder, e per la gestione di due pulsanti e due led
Schema elettrico alla sezione ENCODER
Quando si utilizza un motore
passo-passo con encoder, un approccio tradizionale consiste nell'utilizzare un
pin d’interrupt per l'encoder.
Il circuito L293 utilizzato può essere usato per pilotare un motore passo-passo,
o due motori a corrente continua con controllo della velocità e direzione, o il
controllo di quattro motori DC con direzione fissa.
Questo significa un massimo di 4 segnali generati da encoder, ma sulla scheda
sono presenti solo due pin per interrupt esterni, questi fanno capo ai Pin 2 e 3
e gestite con il comando attachInterrupt().
La soluzione circuitale prevede un circuito multiplex del pin d’interrupt
tramite delle porte OR contenute all’interno dell’integrato
74HC32.
74HC32 Quad 2-input OR gate | ||
Piedinatura | Datasheet | Foto dell'integrato |
Ogni volta che uno dei pin degli
encoder genera un evento, questo tramite la porta OR richiamerà la funzione
d’interrupt.
Tramite la routine di gestione degli interrupt, è possibile leggere i differenti
pin e determinare qual è stato quella che ha generato l'evento.
Ecco perché sia i pin encoder sia la porta OR e alcuni pin di I/O sono mappati.
Oltre ai pin ENCODER etichettati come EC1 ed EC2, esiste in pin E3 che dà
l’accesso al pin interrupt 1, che può essere utilizzato per altri controlli.
Fanno parte del circuito due pulsanti e due led connessi ai pin digitali 6 e 7.
Connessioni pin controllo motore
Il connettore J3 è connesso al driver del motore ed è connesso a sua volta al relativo connettore J3 della scheda Arduino le cui funzioni sono riportate nella Tabella
Pin |
Pin Arduino |
Sigla |
Funzione |
8 |
Aref |
NC |
Non Connesso |
7 |
GND |
GND |
GND |
6 |
Digital 13 |
DIRB |
Controllo direzione MOTORI 1-2 (LOW 1, HIGH 2) |
5 |
Digital 12 |
DIRA |
Controllo direzione MOTORI 3-4 (LOW 3, HIGH 4) |
4 |
Digital 11 |
PWMB |
Abilitazione Motori 1-2 |
3 |
Digital 10 |
PWMA |
Abilitazione Motori 3-4 |
2 |
Digital 9 |
E2 |
Abilitazione modalità Stepper – connesso a IC3 1A |
1 |
Digital 8 |
E1 |
Abilitazione modalità Stepper – connesso a IC3 4A) |
Connessioni pin ENCODER
Il connettore ENCODER è connesso al connettore J1 della scheda Arduino
Pin |
Pin Arduino |
Sigla |
Funzione |
1 |
Digital 7 |
BB1 |
Pulsante 1 |
2 |
Digital 6 |
BB2 |
Pulsante 2 |
3 |
Digital 5 |
EC1 |
Encoder 1, EC1 |
4 |
Digital 4 |
EC2 |
Encoder 2, EC2 |
5 |
Digital 3 |
E3 |
Presa "E3" consente l'accesso a I / O, inclusi interrupt 1 |
6 |
Digital 2 |
|
Linea di interrupt per EC1, EC2, S1, S2 |
Jumper STEPPER
I due jumper (Figura 42)
permettono di utilizzare la scheda per pilotare un motore passo-passo in
alternativa del motore CC.
Quando lasciate aperte, le porte logiche gestiranno la velocità di commutazione
e la direzione dei motori in corrente continua. Quando è collegato (E1 con E12,
ed E2 con E22), il driver IC saranno utilizzati solo come una serie di
transistor di potenza per guidare il passo-passo.
In questo modo si collega E1 ed E2 (pin Arduino 8 e 9) a IC3 input 1A e 4A e,
tramite IC2, invertito a 2A e 3A.
Connessione MOTOR
Il connettore MOTORS è collegato alle uscite dell’integrato driver.
Pin |
Pin Integrato |
Sigla |
1 |
14 |
2Y |
2 |
11 |
1Y |
3 |
3 |
3A |
4 |
6 |
4Y |
Connessione POWER
Il connettore POWER è collegato al relativo connettore presente sulla scheda Arduino e fornisce l’alimentazione alla scheda e ai motori
Pin |
Descrizione |
5V |
Tensione +5V per l’alimentazione degli integrati |
GND |
GND |
GND |
GND |
Vin |
Tensione pari alla Vin cui è connessa la scheda Arduino. |
Esempio d'uso della scheda sul mio robot ArduinoBOT
ESEMPIO PROGRAMMA DI GESTIONE
int dirA = 12; int dirB = 13; // not used in this example int speedA = 10; int speedB = 11; // not used in this example void setup() { pinMode (dirA, OUTPUT); pinMode (dirB, OUTPUT); pinMode (speedA, OUTPUT); pinMode (speedB, OUTPUT); } void loop() { // move the motor A to one direction increasing speed digitalWrite (dirA, HIGH); for (int j = 0; j < 255; j += 10) { analogWrite (speedA, j); delay (100); } delay(1000); // keep the motor rolling for one second // move the motor A to one direction decreasing speed digitalWrite (dirA, HIGH); for (int j = 255; j >= 0; j -= 10) { analogWrite (speedA, j); delay (100); } // stop the motor digitalWrite(speedA, LOW); delay(1000); // keep the motor stopped for one second }
FOTO DEL MONTAGGIO DELLA SCHEDA
Elenco revisioni | |
14/01/2012 | Aggiornato pagina |
16/11/2011 | Aggiornato pagina |
21/06/2011 | Aggiornato pagina |
29/10/2009 | Inserito le foto del montaggio della scheda |
16/10/2009 | Emissione preliminare |