ARDUINO
New Shield motore
con L293D

ultimo aggiornamento 1 novembre 2016

 
Dopo la costruzione del precedente prototipo shield per Arduino contenente un L293D

Ecco presentato una nuova versione, anche in questa è presente un L293D che permette di pilotare due motoriduttori, ma in questa versione è presente un integrato 74LS06 in cui sono presenti all'interno sei porte logiche NOT (inverter).
Due di queste (il simbolo è un triangolo) sono utilizzate per invertire il valore logico presente al loro ingresso.  In questo modo è possibile ridurre il numero di porte necessarie a pilotare il senso di rotazione del motore

Tabella comando con 4 porte Comando con due porte
A B C D Motore
1 0 0 1 Orario
0 1 0 0 Antiorario
1 1 0 0 fermo
0 0 1 1 Fermo
A B Motore
0 0 Fermo
0 1 Antiorario
1 0 Orario
1 1 Fermo

Oltre ai due pin di pilotaggio della direzione due porte con uscita PWM sono utilizzate per pilotare i pin ENABLE dell'integrato permettendo di regolare la velocità di rotazione dei motori stessi

Sulla scheda è resente un connettore per l'installazione di un modulo XBee montato a sua volta su una scheda XBee-Simple Board, il segnale verso il pin TX è dotato di un partitore per adattare il livello del segnale da 5Va quello di 3V3 del modulo XBee.

 

Pin Arduino Funzione
 Pin Digitale 3 (PWM)  Velocità motore DX
 Pin Digitale 4  Senso rotazione motore DX
 Pin Digitale 6 (PWM) Velocità motore SX
 Pin Digitale 7  Senso rotazione motore SX
 Pin Digitale 14 TX verso modulo XBee
 Pin Digitale 15 RX da modulo XBee

Vista lato componenti dello shield

Vista lato rame dello shield

 

Circuito stampato realizzato con EasyEDA

  

Alcuni dettagli dello shield

Vista complessiva dello shield

Dettaglio dei connettori per il collegamento dei motori

Dettaglio connettore per l'installazione del modulo XBee

Dettaglio dei due integrati utilizzati un L293D e un SN74LS06N

Shield installato su una scheda Arduino UNO

Vista complessiva dello shield L293 montato sulla scheda Arduino UNO completa di modulo XBee montato a sua volta su XBee-Simple Board

homotix

PCBA

OurPCB

Tipi di motoriduttore

Motoriduttore tipo GM2 Motoriduttore tipo GM3

 

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

  • 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

Pin Arduino Funzione
 Pin Digitale 3 (PWM)  Velocità motore DX
 Pin Digitale 4  Senso rotazione motore DX
 Pin Digitale 6 (PWM) Velocità motore SX
 Pin Digitale 7  Senso rotazione motore SX

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, sono utilizzati il pin 5V per l'alimentazione della logica e Vin per l'alimentazione dei motori.

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

Pin Arduino Funzione
 Pin Digitale 14 TX verso modulo XBee
 Pin Digitale 15 RX da modulo XBee

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

IC1

L293DNE

IC2

SN740LS6N

C1

100nF multistrato

R1-R2

1kΏ 1/4W

R3

10kΏ 1/4W

R4

15kΏ 1/4W

JP1-3

PIN strip maschio 1x6

JP2

PIN strip maschio 1x8

XBEE

PIN strip femmina 1x9

MD-MS

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

 

L293D Driver per ponte H
Piedinatura Datasheet Foto dell'integrato

SN74LS06 Sei inverter buffers/driver con uscita open-collector

Piedinatura Datasheet Foto dell'integrato

Esempio utilizzo:  New Arduino shield L293

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
Per la sua realizzazione si utilizzerà una basetta in vetronite (monofaccia) di dimensioni 55x36 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 a conclusione del processo di attacco con cloruro ferrico

Circuito stampato dopo la foratura

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 gli zoccoli degli integrati, il condensatore.   Si concluderà con le pin strip e i connettori per il motore. Terminato la saldatura si potranno inserire l'integrato L293D e il SN740LS6N negli appositi zoccolo facendo attenzione alla tacca di riferimento.

Fasi di montaggio dello shield

Saldatura dei vari ponticelli

Saldatura delle resistenze

Saldatura degli zoccoli per gli integrati e del condensatore

Saldatura dei connettori per il collegamento con Arduino

Saldatura dei connettori per il modulo XBee e per i motori

Posizionamento degli integrati nei rispettivi zoccoli

Programma di prova

Il programma di prova utilizza permette di comandare i due motori connessi allo shiel tramite i comandi impartiti tramite la tastiera del PC (tasti 2,4,5,6,7) e trasmessi tramite un modulo XBee installato su una XBee-USB Board prodotta dalla DROIDS SAS, questa è stata progettata per permettere un collegamento facile ed affidabile tra i moduli di Xbee e il PC.   Sulla scheda è già presente il circuito di alimentazione con regolatore di tensione e soft start, quattro LED permettono monitoraggio continuo dell'attività della scheda e la ricerca dei guasti.   Il connettore permette il collegamento tra il modulo XBee e l'interfaccia USB.
Il connettore USB di tipo "Mini B" assicura una scheda compatta (3x51mm) e di facile uso.

 

Per l'invio dei dati ho utilizzato il programma X-CTU fornito per la gestione dei moduli XBee e che può essere scaricato gratuitamente dal sito del produttore.
Per cui una volta impostata la porta a cui è connesso il modulo, utilizzando la scheda Terminal, si potranno inviare i comandi che saranno interpretati dal programma caricato nella memoria della scheda Arduino.

 


Programma di test

/*
 Test_motore_XBee.ino
 Il programma ha il compito di verificare il funzionamento
 della scheda motore con XBee
 
 Vengono utilizzati i seguenti pin
 Pin +5V         -> +5V
 Pin GND         -> GND
 Pin Vin         -> Batteria
 Pin Digital 4   -> Direzione Motore DX
 Pin Digital 7   -> Direzione Motore SX
 Pin Digital 3   -> Velocità Motore DX
 Pin Digital 6   -> Velocità Motore SX
 Pin digitale 15 -> RX XBee
 Pin digitale 14 -> TX Xbee
 
 Creato il 01/04/2013
 da Adriano Gandolfo <https://www.adrirobot.it>
 This example code is in the public domain.
 */
#include <SoftwareSerial.h>
SoftwareSerial xbee(15, 14); // RX, TX


int EN1 = 3; //M1 Controllo velocità M1
int EN2 = 6; //M2 Controllo velocità M2
int IN1 = 4; //M1 Controllo direzione M1
int IN2 = 7; //M2 Controllo direzione M12

void Motor1(int pwm, boolean reverse)
{           
  analogWrite(EN1,pwm); //set pwm control, 0 for stop, e 255 per massima velocità          
  if(reverse)          { 
    digitalWrite(IN1,HIGH); 
  }         
  else        { 
    digitalWrite(IN1,LOW);
  } 
}
void Motor2(int pwm, boolean reverse)
{           
  analogWrite(EN2,pwm);
  if(reverse)
  {
    digitalWrite(IN2,HIGH);
  }
  else 
  {
    digitalWrite(IN2,LOW);
  } 
} 

void setup(void)
{
  int i;
  for(i=3;i<=7;i++)
    pinMode(i, OUTPUT);
  xbee.begin(9600);
  Serial.begin(9600);    
}
void loop(void)
{
  while (xbee.available() < 1) {
  } // Wait until a character is received
  char val = xbee.read();
  Serial.print (val); //per controllo
  switch(val) // Perform an action depending on the command
  {
  case '8'://Robot avanti
    forward ();
    break;
  case '2'://Robot indietro
    reverse ();
    break;
  case '4'://Robot a destra
    left ();
    break;
  case '6'://Robot a sinistra
    right ();
    break;
  case '5'://Robot fermo
    stop ();
    break; 
  default:
    stop();
    break;
  }
}
void stop() //Stop
{
  Motor1(0,false);
  Motor2(0,false); 
}
void forward(void)
{
  Motor1(255,true); 
  Motor2(255,true);   
}
void reverse ()
{
  Motor1(255,false);
  Motor2(255,false);
}
void left ()
{
  Motor1(255,false);
  Motor2(255,true);
}
void right ()
{
  Motor1(255,true);
  Motor2(255,false);
}

 

Elenco revisioni
01/11/2016 Inserito PCB realizzato con EasyEDA

06/04/2013

Aggiornato pagina

29/03/2013

Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni