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.

 
Sigla Numero pin Corrente di uscita Corrente di picco
(non ripetitiva)
Note Datasheet
L293 16 1 2  
L293 B 16 1 2  
L293 D 16 0,6 1,2 Con diodi in uscita
L293 E 20 1 2 Con pin Sense

Circuito stampato realizzato con EasyEDA

homotix

Tipi di motoriduttore

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.

PIN Funzione
1 Comando abilitazione coppia amplificatori 1 e 2
2 Ingresso comando amplificatore 1
3 Uscita amplificatore 1
4 GND
5 GND
6 Uscita amplificatore 2
7

Ingresso comando amplificatore 2

8 Ingresso tensione di alimentazione motori
9 Comando abilitazione coppia amplificatori 3 e 4
10 Ingresso comando amplificatore 3
11 Uscita amplificatore 3
12 GND
13 GND
14 Uscita amplificatore 4
15 Ingresso comando amplificatore 4
16 Ingresso tensione di alimentazione logica di controllo

Circuito di controllo

Il circuito prevede essenzialmente il collegamento dei pin digitali di Arduino con quelli dell'integrato L293D

Pin Arduino Funzione Pin integrato L293D
 Pin Digitale 2  Pin 1 Motore Destro  pin 7 , 2A
 Pin Digitale 4  Pin 2 Motore Destro  pin 2 , 1A
 Pin Digitale 5  Pin 1 motore Sinistro  pin 15 , 4A
 Pin Digitale 7 Pin 2 motore Sinistro  pin 10, 3A
 Pin Digitale 3 Abilita motore Destro   pin 1 , 1,2 EN -  PWM
 Pin Digitale 6 Abilita motore Sinistro  pin 9 , 3,4 EN - PWM

 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.

Alimentazione

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);

Connettore modulo XBee

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 XBee

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

 
Datasheet
Modulo XBee

XBee Serie 1

XBee Serie 2

XBee Pro

 

 

 

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

 

Scheda XBee-Simple Board

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.

xbee simple board lato superiore.jpg xbee simple board lato inferiore.jpg

 

Realizzazione della scheda


File formato EAGLE

 

 
Elenco componenti

C2

100nF multistrato

IC1

L293DNE

R1-R3-R4

10kΏ 1/4W

R2

15kΏ 1/4W

JP1

PIN strip maschio1x8

JP2-JP3

PIN strip maschio 1x6

XBEE

PIN strip femmina 1x9

MD-MS

Terminali CS Molex 2 poli maschio tipo 22-23-2021

RESET

Pulsante per CS

 

 

L293D Driver per ponte H
Piedinatura Datasheet Foto dell'integrato

Realizzazione pratica.

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.

Circuito stampato.

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.

Disposizione dei componenti.

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.

Programma di prova


Programma di test

/*
 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
Private Policy Cookie Policy