Shield per L293D |
|
Lo shield per
Arduino
contenente un L293D
permette di pilotare due motoriduttori,
sulla scheda è anche presente un connettore
per l'installazione di un modulo XBee montato
a sua volta su una scheda XBee-Simple Board.
L'integrato L293D opportunamente pilotato permette il controllo della direzione dei singoli motori
e la velocità dei singoli motori ad esso collegati.
Di questo
integrato esistono vari modelli che si differenziano per caratteristiche e
numero di piedini questi sono riconoscibili dalle lettere che accompagnano la
sigla numerica.
Circuito stampato realizzato con EasyEDA
Motoriduttore tipo GM2 | Motoriduttore tipo GM3 |
Esempio di utilizzo dello shield per L293D sul robot ArduinoBOT
Questo integrato è un driver a 4
canali di tipo push-pull con 4 diodi di protezione interni per il ricircolo
della corrente.
Può fornire in uscita una corrente massima per ogni canale di 600 mA con una
corrente i picco ( non ripetitiva) di 1,2 A, con una massima tensione di
alimentazione è di 36V.
Per l'alimentazione della parte logica è sufficiente una tensione minima di
4.5V.
Per il suo funzionamento è necessario collegarlo ad un processore
utilizzando 4 porte, 2 per motore.
|
|
E' un circuito integrato a 16 terminali (in contenitore DIP8) che contiene 4 amplificatori di potenza per il comando di motori in corrente continua o passo-passo (stepper motor);
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 viene fatto mediante livelli di tensione compatibili TTL (H:+5V, L:0V), dunque perfettamente interfacciabili con il PIC;
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 internamente sia di una protezione termica che di una protezione contro i cortocircuiti delle uscite verso massa;
I quattro terminali centrali di massa possono essere saldati ad una apposita piazzola dimensionata per ottenere una valida dissipazione del calore.
Circuito di controllo
Il circuito prevede essenzialmente il collegamento dei pin digitali di Arduino con quelli dell'integrato L293D
|
Sulla scheda Arduino sono presenti 14 pin digitali
che possono essere utilizzati indifferentemente come un ingresso o
come uscita.
Le uscite operano a 5 volt e ogni pin può
fornire o ricevere un massimo di 40 mA ed è dotato di una resistenza
pull-up (sconnessa di default) del valore di 20-50 kΏ.
Inoltre, alcuni pin hanno funzioni specializzate:
Connettore Pin Digitali
< Pin: 0 (RX) e 1 (TX): possono essere utilizzati per ricezione (RX) e trasmissione (TX) dei dati seriali TTL. Questi sono collegati ai pin corrispondenti della porta USB-TTL del processore ATmega8U2. |
< Pin 2 e 3: possono essere configurati come trigger per eventi esterni, come ad esempio il rilevamento di un fronte di salita o di discesa di un segnale in ingresso. |
< Pin 3, 5, 6, 9, 10 e 11: possono essere configurati via software con la funzione analogWrite() per generare segnali PWM con risoluzione di 8 bit. Tramite un semplice filtro RC è possibile ottenere tensioni continue di valore variabile. |
< Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): possono essere programmati per realizzare una comunicazione SPI, utilizza un’apposita libreria SPI. |
< Pin 13 è connesso a un LED interno alla scheda, utile per segnalazioni di diagnostica. Quando il livello del pin è HIGH, il LED è acceso, quando il livello del pin è LOW, è spento. |
L'alimentazione della scheda è prelevata dal connettore POWER della scheda Arduino
Connettore POWER |
<Vin; restituisce la tensione applicata dall'alimentatore al plug e può essere usato per alimentare altri circuiti che dispongano già di un regolatore di tensione (ad esempio gli shield applicati al modulo); |
<GND; è il contatto di massa (GND). |
<5 V; fornisce i 5 volt prelevati dall'uscita del regolatore interno ed è utile per alimentare altri circuiti compatibili con i 5 volt; |
<3.3V; questo pin fornisce i 3,3 volt ricavati dal regolatore corrispondente e consente di alimentare circuiti compatibili con tensioni di 3,3 volt (la massima corrente prelevabile e di 150 mA); |
Per il collegamento del modulo XBee (non utilizzano in questo caso) si utilizzano i Pin AN0 e AN1 corrispondenti ai pin Digitale 14 e Digitale 15
I moduli si possono trovare attualmente tre versioni
dei moduli: la Serie 1, la
Serie 2 e la Serie Pro con caratteristiche
crescenti.
Questi moduli lavorano con una frequenza operativa di 2.4GHz
e permettono di raggiungere, a seconda del modello, coperture che vanno
da 30mt (all’interno di locali) oltre a 1500mt all’esterno per la
versione XbeePRO; per un confronto delle varie versioni dei moduli fare
riferimento alla Tabella sotto riportata.
Con i moduli XBee è possibile compiere trasmissioni di tipo: Point-to-Point, Point-to-Multipoint, Peer-to-Peer sia in modo Unicast
che Broadcast; con velocità che arrivano fino a 250Kbps. Le ridotte
dimensioni permettono altresì un notevole risparmio di spazio e cosa più
importante implementano una comunicazione seriale come quella presente
sulla porta RS232.
Fisicamente tutte e tre le tipologie presentano una doppia fila di 10
pin con passo 2 mm, la cui funzione è riportata in
Tabella
|
|
|
|
Indoor/Urban range |
Up to 30m |
Up to 40m |
Up to 90 m, |
Outdoor RF line-of-sight range |
Up to 100m |
Up to 120m |
Up to 1600 m |
Transmit Power Output |
1 mW (0dbm) |
2 mW (+3dbm) |
63mW (18dBm) |
RF Data Rate |
250 Kbps |
||
Receiver Sensitivity |
-92dbm (1% PER) |
-98dbm (1% PER) |
-100 dBm (1% PER) |
Supply Voltage |
2.8 - 3.4 V |
2.8 - 3.6 V |
|
Transmit Current (typical) |
45 mA (@ 3.3 V) |
40 mA (@ 3.3 V) |
250mA (@3.3 V) |
Idle/Receive Current (typical @3.3V) |
50 mA |
40 mA |
55mA |
Power-down Current |
10 uA |
1 uA |
< 10 μA |
Frequency |
ISM 2.4 GHz |
||
Dimensions |
2.4cm x 2.8cm |
2.4cm x 3.3 cm |
|
Operating temperature |
-40 to 85 C |
||
Antenna Options |
Chip, Integrated Whip, U.FL |
||
Number of Channels |
16 Direct Sequence Channels |
12 Direct Sequence Channels |
|
Filtration Options |
PAN ID, Channel & Source/Destination |
PAN ID, Channel and Addresses |
Piedinatura del modulo XBee |
Tabella con indicazione dei pin
Pin # |
Nome |
Input/output |
Descrizione |
1 |
VCC |
- |
Alimentazione +3.3V |
2 |
DOUT |
O |
UART Data Out |
3 |
DIN / CONFIG |
I |
UART Data In |
4 |
DIO12 |
I/O |
Digitale I/O 12 |
5 |
RESET |
Input |
Pin di Reset del modulo (impulso di reset deve essere di almeno 200 ns |
6 |
PWM0 / RSSI / DIO10 |
I/O |
PWM Output 0 / Indicatore intensità del segnale RX / Digitale I/O 10 |
7 |
PWM / DIO11 |
I/O |
Digitale I/O 11 |
8 |
[riservato] |
- |
Non connesso |
9 |
DTR / SLEEP_RQ/ DIO8 |
I/O |
Pin Sleep Control Line or Digitale I/O 8 |
10 |
GND |
- |
Terminale di massa |
11 |
DIO4 |
I/O |
Digitale I/O 4 |
12 |
CTS / DIO7 |
I/O |
Clear-to-Send Flow Control or Digitale I/O 7 |
13 |
ON / SLEEP / DIO9 |
Output |
Module Status Indicator or Digitale I/O 9 |
14 |
[riservato] |
- |
Non connesso |
15 |
Associate / DIO5 |
I/O |
Associated Indicator, Digitale I/O 5 |
16 |
RTS / DIO6 |
I/O |
Request-to-Send Flow Control, Digitale I/O 6 |
17 |
AD3 / DIO3 |
I/O |
Input analogico 3 o Digitale I/O 3 |
18 |
AD2 / DIO2 |
I/O |
Input analogico 2 o Digitale I/O 2 |
19 |
AD1 / DIO1 |
I/O |
Input analogico 1 o Digitale I/O 1 |
20 |
AD0/DIO0/ Commissioning Button |
I/O |
Input analogico 0 o Digitale I/O 0 oppure Commissioning Button |
La
XBee-Simple Board
prodotta dalla DROIDS SAS
(può essere reperita sul sito
Robot Italy) è stata progettata per permettere un
collegamento facile ed affidabile tra i moduli Xbee e altre
applicazioni sia il modulo XBee sia XBeePRO sono supportati .
La solida costruzione, il circuito di alimentazione con regolatore di
tensione e soft start permettono la massima affidabilità con i moduli
XBee.
Due LED permettono monitoraggio continuo dell'attività della scheda e la
ricerca dei guasti.
Per ulteriori informazioni vedere
l'apposita pagina.
|
L293D Driver per ponte H | ||
Piedinatura | Datasheet | Foto dell'integrato |
Per la costruzione della
scheda si procederà iniziando dalla realizzazione del circuito stampato il cui
lato rame in scala 1:1 è riportato sotto, in alternativa si può utilizzare un
pezzo di basetta millefori cove visibile nelle foto del prototipo.
Per la sua realizzazione si utilizzerà una basetta in
vetronite (monofaccia) di dimensioni 52x34 mm, il metodo potrà essere quello
della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli
blu (PRESS-N-PELL), in questo caso ricordo che l’immagine delle tracce del
circuito dovrà essere speculare.
Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di
un multimetro che non vi siano cortocircuiti soprattutto tra le piste più
vicine.
Si passerà quindi alla foratura della stessa, utilizzando principalmente una
punta da 0,8 mm, mentre si utilizzeranno una da 1mm per le pin strip.
In seguito si potrà passare al posizionamento e alla saldatura dei componenti
seguendo lo schema visibile sotto.
Per la saldatura si utilizzerà un piccolo
saldatore a punta fine, della potenza di circa 25 – 30 W.
S’inizierà dai vari ponticelli continuando con le resistenze, si potrà quindi, procedere con i pulsanti, lo zoccolo
dell'
integrato, il condensatore. Si concluderà con le pin strip e i
connettori per il motore.
Terminato la saldatura si potrà inserire l'integrato L293D
nell'
apposito zoccolo facendo attenzione alla tacca di riferimento.
/* Test_modulo_xbee.pde Programma per la verifica del modulo motore con L293D Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione Pin GND -> Alimentazione Pin Vin -> Alimentazione Motori Pin Digital 2 -> Pin 1 Motore Destro (pin 7 , 2A) Pin Digital 4 -> Pin 2 Motore Destro (pin 2 , 1A) Pin Digital 5 -> Pin 1 motore Sinistro (pin 15 , 4A) Pin Digital 7 -> Pin 2 motore Sinistro (pin 10, 3A) Pin Digital 3 -> Abilita motore Destro (pin 1 , 1,2 EN) PWM Pin Digital 6 -> Abilita motore Sinistro(pin 9 , 3,4 EN) PWM Creato il 27/06/2012 da Adriano Gandolfo <https://www.adrirobot.it> This example code is in the public domain. */ const int M_A_1A = 2; // H-bridge A 1 (pin 2, 1A) const int M_A_2A = 4; // H-bridge A 2 (pin 7, 2A) const int M_B_3A = 5; // H-bridge B 1 (pin 10, 3A) const int M_B_4A = 7; // H-bridge B 2 (pin 15, 4A) const int enable_A_Pin = 3; // H-bridge A enable pin (pin 1 , 1,2 EN) const int enable_B_Pin = 6; // H-bridge B enable pin (pin 9 , 3,4 EN) void setup() { Serial.begin(9600); //Impostazione dei pin utilizzati come uscite pinMode(M_A_1A, OUTPUT); pinMode(M_A_2A, OUTPUT); pinMode(M_B_3A, OUTPUT); pinMode(M_B_4A, OUTPUT); pinMode(enable_A_Pin, OUTPUT); pinMode(enable_B_Pin, OUTPUT); //Imposta a livello alto i pin enable per permettere //ai motori di ruotare digitalWrite(enable_A_Pin, HIGH); digitalWrite(enable_B_Pin, HIGH); } void loop() { analogWrite(enable_A_Pin, 255); analogWrite(enable_B_Pin, 255); delay (5000); Serial.println("Rotazione oraria dei motori"); rotazione_oraria_A(); rotazione_oraria_B(); delay(5000); Serial.println("Motori fermi"); motore_A_fermo(); motore_B_fermo(); delay(2000); Serial.println("Rotazione antioraria oraria dei motori"); rotazione_antioraria_A(); rotazione_antioraria_B(); delay(5000); Serial.println("Motori fermi"); motore_A_fermo(); motore_B_fermo(); Serial.println("Rotazione oraria motore A"); rotazione_oraria_A(); delay(5000); Serial.println("Motore A fermo"); motore_A_fermo(); Serial.println("Rotazione oraria motore B"); rotazione_oraria_B(); delay(5000); Serial.println("Motore B fermo"); motore_B_fermo(); Serial.println("Impostazine bassa velocita' dei due motori"); analogWrite(enable_A_Pin, 80); analogWrite(enable_B_Pin, 80); delay (1000); Serial.println("Rotazione oraria dei motori"); rotazione_oraria_A(); rotazione_oraria_B(); delay(5000); Serial.println("Motori fermi"); motore_A_fermo(); motore_B_fermo(); Serial.println("Impostazine alta velocita motore A"); analogWrite(enable_A_Pin, 255); analogWrite(enable_B_Pin, 80); delay (1000); Serial.println("Rotazione antioraria oraria dei motori"); rotazione_antioraria_A(); rotazione_antioraria_B(); delay(5000); } // ————————————————————————— Drive void motore_A_fermo(){ digitalWrite(M_A_1A, LOW); digitalWrite(M_A_2A, LOW); delay(25); } void motore_B_fermo(){ digitalWrite(M_B_3A, LOW); digitalWrite(M_B_4A, LOW); delay(25); } void rotazione_oraria_A(){ digitalWrite(M_A_1A, LOW); digitalWrite(M_A_2A, HIGH); } void rotazione_oraria_B(){ digitalWrite(M_B_3A, LOW); digitalWrite(M_B_4A, HIGH); } void rotazione_antioraria_A(){ digitalWrite(M_A_1A, HIGH); digitalWrite(M_A_2A, LOW); } void rotazione_antioraria_B(){ digitalWrite(M_B_3A, HIGH); digitalWrite(M_B_4A, LOW); } |
Elenco revisioni | |
01/11/2016 | Inserito PCB realizzato con EasyEDA |
21/03/2011 |
Emissione preliminare |