Ultimo aggiornamento della pagina 2 luglio 2004

a cura di Nicola Sellitto (Napoli) e Adriano Gandolfo (Torino)


 
Per controllare i motori DC si utilizzano normalmente dei ponti ad H di transistor. Sono disponibili anche dei ic che implementano al suo interno 2 ponti ad H.
Esempi di tali integrati sono L293D, SN754410NE, L293B.
Tutti e 3 gli integrati premettono di pilotare in modo direzionale 2 piccoli motori DC.
Le caratteristiche generali sono:
 
L293D 600mA output current per canale, integra diodi di protezione (scheda tecnica)
L293B 1000mA output current per canale senza diodi di protezione (scheda tecnica)
SN754410NE 1000mA output current per canale, integra diodi di protezione (scheda tecnica)

 

Lo schema logico di funzionamento è identico per tutti e 3 gli integrati ad eccezione del L293B che abbisogna di 4 diodi shottley di protezione per motore.

Di seguito è mostrato lo schema per L293D ed SN754410NE

 

homotix

Questo, invece, è lo schema per L293B con i relativi diodi di protezione.

 

Entrambi gli schemi permettono la stessa modalità di controllo dei motori secondo la seguente tabella:
 
ENABLE 1-2 IN1 IN2 MOTOR 1
Hight Hight Low Turn right
Hight Low Hight Turn left
Hight Low/Hight Low/Hight Fast stop
Low Either Either Slow stop
 
ENABLE 3-4 IN3 IN4 MOTOR 2
Hight Hight Low Turn right
Hight Low Hight Turn left
Hight Low/Hight Low/Hight Fast stop
Low Either Either Slow stop

 

Come si vede per gestire il verso di rotazione del motore si impostano opportunamente i valori IN1 ed IN2 per il primo motore ed IN3 ed IN4 per il secondo motore.

Il controllo dei 2 motori è perfettamente simmetrico.

Per gestire correttamente sono necessari 3 segnali input, volendo risparmiare un ingresso è anche possibile rinunciare alla funzionalità di "arresto rapido" e forzando (con un inverter) a valori sempre diversi i 2 input IN1 - IN2; in tal modo l'arresto avviene impostando l'Enable a low.

Lo schema risultante è il seguente, per semplicità non sono riportati gli eventuali diodi di protezione:

In tal caso la tabella di controllo diventa, per semplicità si riporta soltanto quella relativa ad M1:

 
Enable 1-2 Dir M1 Motor 1
Hight Hight Turn right
Hight Low Turn left
Low Either Slow stop

 

La modalità di controllo vista è la più semplice e non permette la gestione della velocità.

Volendo utilizzare una tecnica più sofisticata si può usare il PWM ovvero Pulse Width Modulation.

Fondamentalmente esistono 3 tecniche diverse per applicare il pwm: 

 

  • Sign magnitude classica in cui il segnale modulato viene applicato al pin di Enable
  • Sign magnitude non classica in cui il segnale modulato viene applicato ad un unico pin di direzione 
  • Lock anti-phase in cui il segnale viene applicato (invertito) ai 2 pin di direzione.

 

Lo schema della prima tecnica è riportata di seguito, per semplicità non sono riportati gli eventuali diodi di protezione:

 

In questo caso il controllo della rotazione del motore avviene sempre mediante DIR, mentre impostando opportunamente il duty cycle del segnale pwm si controlla la tensione fornita ai motori e conseguentemente la velocità di rotazione degli stessi.


La seconda tecnica è una variante della prima in cui il segnale pwm non è inviato all'Enable ma ad un pin di direzione influenzando la potenza, mentre l'altro pin di direzione viene impostato per il verso di direzione desiderato. 

Lo schema è riportata di seguito, per semplicità non sono riportati gli eventuali diodi di protezione:

 

Poiché la tabella di controllo risulta sempre valida bisogna fare attenzione al valore da assegnare al duty cycle quando il segnale di direzione Dir M1 = IN 1 risulta alto.

Infatti in tal caso la rotazione avviene durante il segnale basso del pwm; pertanto per avere un duty cycle del 30% bisogna impostare un valore del 70%.

Nulla cambia, invece, nell'altro verso di rotazione cioè quando Dir M1 = IN1 risulta basso.

La terza ed ultima tecnica è quella riportata di seguito:

 

In questo caso la direzione dei motori è controllata dal valore di duty cycle utilizzato, impostando un valore :

 

  • 0% si ottiene una rotazione a sinistra alla massima velocità,
  • 50% si ottiene l'arresto dei motori
  • 100% si ottiene una rotazione a destra alla massima velocità,
Si possono utilizzare anche valori intermedi con la realtiva diminuzione della velocità.


Volendo realizzare un circuito di controllo motori il più possibile flessibile, cioè che possa essere utilizzato, in base all'impostazione di semplici jumper, con le tecniche:

 

  • Senza Pwm
  • Sign magnitude classica
  • Sign magnitude non classica
  • Lock anti-phase
si può utilizzare il seguente circuito in cui l'assegnazione del compito non è prestabilita ma assegnata di volta in volta dal software di controllo:

 

Anche in questo schema non sono riportati gli eventuali diodi di protezione.

Il funzionamento del circuito dipende dalla seguente tabella che, per semplicità, fa riferimento soltanto al pilotaggio del motore M1 essendo l'altro totalmente equivalente:
 
Enable 1-2 Pa Pb Jp1 Funzione
Hight - Pwm 2-3 Pwm LAP
Hight Dir ~Pwm 1-2 Pwm SM non classica
Hight - Dir 2-3 Non Pwm
Pwm - Dir 2-3 Pwm SM classica
 

Nella pratica risulta semplice implementare questo schema rinunciando ad avere il Pwm nella modalità classica.
Infatti riferendoci al classico microcontroller pic 16F876 si possono effettuare le seguenti associazioni di pin:

 
Enable 1-2 RB2
Pa RB3
Pb RC1
 

Volendo risparmiare un pin si può fare a meno di RB2 ed impostando l'enable sempre a +5V.

 

Encoder

Per controllare l'effettivo movimento della ruota connessa al motore, mediante il sistema di ingranaggi del motoriduttore, si utilizzano gli encoder. 

Questi sono formati da una coppia di diodi ad infrarossi in cui uno emette un raggio di luce e l'altro la riceve a secondo della posizione in cui si viene a trovare una rotella interposta tra i 2 led.

Il circuito elettrico di pilotaggio degli encoder è il seguente:

E' bene, quindi, prevedere nella motor board anche questa semplice circuiteria in cui output rappresenta l'input ad un pin del pic e server per contare gli impulsi ricevuti da cui si ricava (in base al numero di tacche presente nella rotella ed alla circonferenza della ruota) il reale spostamento della ruota.

 

Elenco revisioni
02/07/2004 Emissione preliminare
Private Policy Cookie Policy