L298N Dual H-Bridge ultimo aggiornamento 28 maggio 2017 |
|
Tra i tanti moduli ora in
commercio per pilotare dei motori elettrici in corrente continua se ne può
trovare una denominata
L298N Dual
H-Bridge Motor Controller di piccole dimensioni ed estremamente compatta
misura solo 4.3 cm x 4.3 cm x 2.7 cm e dal
peso di soli 28 gr.
Si tratta di una scheda driver con finale
L298 della
STMicroelectronics,
al suo interno troviamo due ponti H integrati,che supportano un elevato
voltaggio (teoricamente sino a 46V) ed elevate correnti (2A per ponte) e che
possono essere pilotati con livelli in logica TTL. Ciascun ponte può essere
disabilitato o abilitato tramite il relativo piedino di enable per
comandare un motore passo passo o due motori DC direttamente da Arduino o altri
microcontrollori .
Sulla scheda, oltre all' integrato L298, troviamo i diodi di ricircolo, per la sua alimentazione è richiesta una doppia alimentazione: 5Vdc per la logica e una tensione compresa tra 5 e 35Vdc per l'alimentazione del motore, la corrente in uscita è di ben 2A su ogni canale.
Altri progetti con moduli per il comando di motori
Motor shield |
Infineon motor Shield |
modkit MotoProto L298 | L293 shield |
Scheda con L297 - L298N | Modulo con L293 | Modulo con doppio L293 | Modulo con ULN2003A |
Modulo con TB6612FNG | Modulo con LB1836M |
Schema elettrico del
modulo
L298N Dual H-Bridge Motor Controller
Principali componenti del modulo
L298 - Driver per ponte H | ||
|
||
Piedinatura | Datasheet | Foto dell'integrato |
M7 - SMD diodo rettificatore 1A | ||
|
||
Piedinatura | Datasheet | Foto |
LM78MXX Series 3-Terminal Positive Voltage Regulators - 500 mA | ||
Piedinatura | Datasheet | Foto dell'integrato |
|
Per controllare uno o due motori a corrente continua è abbastanza facile con il L298N Dual H-Bridge Motor Controller. Sotto vediamo i principali componenti necessari
Schema di collegamento
Prima collegare ogni motore alle connessioni A e B sul modulo L298N [pin 11-12/13-14], se si utilizzano due motori per esempio su un robot, assicurarsi che la polarità dei motori sia la stessa su entrambi gli ingressi. In caso contrario, la rotazione potrebbe non essere corretta, per questa sarà sufficiente invertire i cavi
Collegare l'alimentazione, il
positivo al pin [7] sul modulo e il negativo / GND al pin [8]. Se si
fornisce è fino a 12 V è possibile lasciare nel ponticello [10] i 5V saranno
disponibile al pin [9] del modulo.
L'alimentazione sarà in questo caso prelevata dal pin Vin di Arduino,
alimentandolo attraverso il plug della scheda.
Ora sarà necessario collegare
i cavi per la gestione dei motore ai sei pin di
uscita digitali su Arduino, due dei quali hanno bisogno di essere PWM (Pulse
Width Modulation) pin. I pin PWM sono indicati con la tilde ( "~") accanto al numero di pin,
sono pin PWM il 3, 5, 6, 10 e 11.
Collegheremo quindi i pin digitali D3, D4,
D5 e D6 che saranno collegati ai pin IN1, IN2, IN3 e IN4, rispettivamente.
Quindi collegare D9 al modulo pin 1 ENA (rimuovere prima il ponticello ) e D10 a PIN
6 del modulo ENB (di nuovo, rimuovere prima il ponticello).
La direzione del motore è controllata inviando un segnale alto o basso per
l'azionamento per ogni motore (o canale). Ad esempio per il motore uno, un HIGH
a IN1 e IN2 LOW a causerà la svolta in una direzione, e LOW e HIGH causerà la
svolta in direzione opposta.
Tuttavia i motori non si accende fino a quando un
segnale HIGH non è inviato per abilitare il pin
1 per il motore, oppure al pin 6 per il motore 2. I motori possono essere
disattivati con un segnale LOW allo stesso pin. Tuttavia, se avete bisogno di
controllare la velocità dei motori, il segnale PWM dal pin digitale collegata al
pin di di abilitazione permette di regolare la velocità.
Programma per il test
Il programma di test proposto,
permette di comandare la rotazione, cambio di direzione, STOP dei due motori,
inviando da tastiera l'opportuno comando.
Modificando il valore della variabile speed
, di default impostata a 200, si varierà la velocità di rotazione di entrambi i
motori.
Tasti di controllo:
1 -Motor 1 Avanti
2 -Motor 1 FERMO
3 -Motor 1 Indietro
4 -Motor 2 Avanti
5 -Motor 2 FERMO
6 -Motor 2 Indietro
|
|
Per semplificare la gestione del
modulo, è possibile utilizzare una libreria realizzata da yohendry,
con questa libreria il codice è molto semplificato.
Nella prima parte sono assegnati i vari pin, viene poi creato l'oggetto
controllare un
motore passo-passo o
stepper bipolare con l'utilizzo del
L298N
Dual H-Bridge Motor Controller. sono necessari i principali
componenti sotto riportati
Prima di utilizzare la libreria, la si dovrà scaricare
accedendo
a questo
link
Una volta scaricata la libreria in formato zip si dovrà andare al menu Sketch ->
#Include Libreria -> Aggiungi libreria da file .ZIP e aggiungere la libreria
appena scaricata
Nella sezione esempi della libreria potrete caricare questo
esempio che gestisce direttamente due motori DC
#include <L298N.h> const int ENA = 6; const int IN1 = 8; const int IN2 = 7; const int IN3 = 2; const int IN4 = 4; const int ENB = 3; L298N driver(ENA,IN1,IN2,IN3,IN4,ENB); int time_delay = 500; int speed = 150; void setup() { } void loop() { driver.forward(speed,time_delay); driver.full_stop(time_delay); driver.turn_right(speed,time_delay); driver.full_stop(time_delay); driver.turn_left(speed,time_delay); driver.full_stop(time_delay); driver.backward(speed,time_delay); } |
Schema di collegamento
Per controllare un motore passo-passo o stepper bipolare con l'utilizzo del L298N Dual H-Bridge Motor Controller. sono necessari i principali componenti sotto riportati
Foto del motore utilizzato per i test
Schema di collegamento
Prima collegare il motore passo-passo alle connessioni A e B sul modulo L298N [pin 11-12/13-14], con i cavi che fanno capo a una bobina
alla connessione A e gli altri alla connessione B.
Collegare l'alimentazione del motore, il positivo al pin [7] sul modulo e il negativo / GND al pin [8].
Se si fornisce è fino a 12 V è possibile lasciare nel ponticello [10]. Collegare il negativo pin [8] anche al relativo pin GND di Arduino.
L'alimentazione di Arduino sarà fornita attraverso il plug della scheda per esempio tramite una batteria 9V.
Per quanto riguarda i pin ENA e ENB dovranno essere collegati al +5V tramite i ponticelli, in questo modo le uscite saranno sempre abilitate.
Collegheremo quindi i pin digitali D3, D4, D5 e D6 che saranno collegati ai pin IN1, IN2, IN3 e IN4, rispettivamente.
Collegheremo poi il potenziometro da 10 KΩ: il pin centrale all'ingresso Analogico A0 di Arduino, quindi i due pin laterali del potenziometro
al pin +5V e GND di Arduino.
Programma per il test
Il programma di test proposto, permette di controllare la velocità di rotazione del motore passo-passo agendo sul potenziometro. Il programma fa uso della libreria Stepper.h che permette di gestire sia stepper unipolari che bipolari. Sono disponibili i seguenti comandi/istanze.
Stepper (steps, pin1, pin2, pin3, pin4) crea l'istanza per comandare il motore, steps è il numero di passi che deve fare un motore per compiere un giro del motore.
Se è disponibile il numero di gradi per passo, dividere il numero per 360 per ottenere il numero di steps (ad esempio 360 / 1,8 dà 200 steps). pin1, pin2, pin3, pin4
sono il numero dei pin di Arduino per pilotare il motore
setSpeed (rpm) Imposta la velocità del motore in giri al minuto ( RPM ).
step( steps) Attiva il motore per un numero specifico di steps, ad una velocità determinata dalla chiamata più recente per SetSpeed ().
|
/* Test_stepper-L298.ino Programma per testare il comando di un motore stepper tramite un L298N Dual H-Bridge Motor Controller Vengono utilizzati i seguenti pin Pin +5V -> Pin laterale del potenziometro Pin GND -> Pin GND modulo e pin laterale potenz. Pin Digital 2 -> Collegato al pin IN1 Pin Digital 3 -> Collegato al pin IN2 Pin Digital 4 -> Collegato al pin IN3 Pin Digital 5 -> Collegato al pin IN4 Pin Analog A0 -> Collagato al centrale del potenziometro Modificato il 2//05/2016 da Adriano Gandolfo Basato su quello modificato 28 Oct 2010 da Tom Igoe Sito web https://www.adrirobot.it Canale Youtube https://www.youtube.com/user/adrirobot Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955/ Blog http://it.emcelettronica.com/author/adrirobot This example code is in the public domain. */ #include <Stepper.h> const int stepsPerRevolution = 200; //cambiare questo per adattare il numero di passi per giro //per il vostro motore da calcolare dividendo 360° con il //numero di gradi per passo // Inizializzare la libreria passo-passo su pin da 2 a 5: Stepper myStepper(stepsPerRevolution, 2,3,4,5); int stepCount = 0; // numero di passi del motore void setup() { // niente da fare all'interno della configurazione } void loop() { // Legge il valore della tensione fornito dal potenziometro: int sensorReading = analogRead(A0); // mappa il valore nel range da 0 a 100: int motorSpeed = map(sensorReading, 0, 1023, 0, 100); // Imposta la velocità del motore: if (motorSpeed > 0) { myStepper.setSpeed(motorSpeed); // step 1/100 of a revolution: myStepper.step(stepsPerRevolution/100); } } |
Elenco revisioni | |
28/05/2017 | Aggiornato pagina, inserito riferimento libreria per gestione motori DC |
06/05/2016 | Emissione preliminare |