Arduino Motor Shield R3 ultimo aggiornamento 1 ottobre 2018 |
|
L'Arduino Motor Shield R3 si basa sul
chip
L298 della
STMicroelectronics
un driver dual full-bridge progettato per pilotare carichi induttivi come relè,
solenoidi motori e motori passo-passo, utilizzando una scheda Arduino consente
di pilotare due motori a corrente continua controllando la velocità e la
direzione di ciascuno di essi in modo indipendente.
A 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 .
È anche possibile misurare l'assorbimento di corrente di ogni singolo motore. La
shield è TinkerKit compatibile, il che significa che è possibile creare
rapidamente progetti collegando moduli Tinkerkit alla scheda.
Tensione di funzionamento: | da 5 a 12V (max 18V con le alimentazioni separate) |
Controllore dei motori: | L298P (pilota 2 motori in corrente continua oppure un motore passo-passo |
Corrente massima: | 2A per canale (4A max) utilizzando un alimentatore esterno |
Rapporto tensione/corrente per la misura dell'assorbimento: | 1.65V/A |
Interfacciamento con la scheda Arduino: | DIO |
Interfaccia Tinkerkit: | 2xTWI, 2xOUT, 2xIN |
Dimensioni: | 53 x 68.5 mm |
Lo shield è dotato di diverse interfacce di input e output per la comunicazione con i moduli TinkerKit:
2 connettori TinkerKit per due ingressi analogici (bianchi), connessi ad A2 e A3.
2 connettori TinkerKit per due uscite analogiche (arancione), collegati alle uscite PWM sui pin D5 e D6.
2 connettori TinkerKit per l'interfaccia TWI (bianchi con 4 pin), uno per l'ingresso e l'altro per l'uscita.C
Ingressi e Uscite - Connessioni per i motori
La Arduino Motor Shield ha due canali
separati chiamati A e B, ognuno di questi canali utilizza 4 uscite della scheda
Arduino. È possibile utilizzare ciascun canale separatamente per pilotare due
motori DC o combinarli per pilotare un motore passo-passo bipolare.
I pin utilizzati dalla shield sono riportati nella tabella seguente:
|
Se non è necessario il freno o
controllare l'assorbimento dei motori è possibile disattivare queste
funzionalità tagliando i rispettivi ponticelli sul presenti sul retro della
shield.
Motori in corrente continua: possono essere controllati due motori connessi ai
morsetti dei canali A e B. Queste connessioni permettono di controllare la
direzione utilizzando i pin DIR A e DIR B, la velocità variando i valori di duty
cycle su A PWM e B PWM e la frenatura utilizzando i pin freno A o freno B, se
questi pin vengono settati a livello logico ALTO i motori verranno bloccati. È
possibile misurare la corrente assorbita dai motori in corrente continua
leggendo i valori presenti sui pin SNS0 e SNS1. Su ciascuno di questi pin sarà
presente una tensione proporzionale alla corrente assorbita che può essere letta
come un normale ingresso analogico tramite la funzione analogRead ()
utilizzando gli ingressi analogici A0 e A1.
La tensione presente su questi pin è stata calibrata a 3.3V quando il canale sta
erogando la sua corrente massima possibile, cioè 2A.
L'Arduino Motor Shield deve essere
alimentata tramite un alimentatore esterno poiché la corrente necessaria ai
motori spesso supera il valore permesso dalla connessione USB, questa
alimentazione può essere fornita da un adattatore AC-DC o da una batteria.
L'adattatore o la batteria possono essere collegati alla presa di alimentazione
della scheda Arduino su cui è montata lo shield oppure, se si desidera mantenere
separate le alimentazioni dei motori, ai morsetti a vite Vin e GND presenti
sulla shield.
Per evitare possibili danni alla scheda Arduino è consigliabile utilizzare un
alimentatore esterno che fornisca una tensione compresa tra 7 e 12V. Se
l'alimentazione del motore richiede più di 9V si consiglia di separare le linee
di alimentazione dello shield da quelle della scheda Arduino, questo è possibile
tagliando il ponticello "Vin Connect" presente sul retro della shield. Con le
alimentazioni separate il limite assoluto per la tensione di alimentazione da
utilizzare per la Vin è di 18V.
I piedini di alimentazione sono i seguenti:
VIN: sui morsetti a vite, questa è la tensione in ingresso per l'alimentazione del motore, e della scheda Arduino. Se questa tensione è superiore a 9V andrà tagliato il ponticello "Vin Connect" e utilizzati 2 alimentatori.
GND: Connessione di massa.
Lo shield può fornire 2 ampere per canale, per un totale di 4 ampere
massimi.
L298 - Driver per ponte H | ||
Codice RS - 714-7715 |
||
Piedinatura | Datasheet | Foto dell'integrato |
Per controllare uno o due motori
a corrente continua è abbastanza facile con il
Arduino Motor shield R3.
Sotto vediamo i principali componenti necessari
Il programma utilizzato è molto semplice in quanto utilizza una speciale libreria che semplifica la gestione dei due motori. Una volta caricato il programma farà ruotare i motori per due secondi in un senso e per altri due secondi nella direzione opposta.
|
Libreria per il controllo di 2 motori DC
La libreria utilizzata per il test può essere scaricata a
questo link
I comandi della libreria sono:
#include "ArduinoMotorShieldR3.h"
Include la libreria
ArduinoMotorShieldR3 md;
Definisce il nome del comando di gestione dei motori "md"
md. init()
Inizializza i pin di comendo
md.setM1Speed(speed)
Imposta la velocità e la rotazione del motore 1. Il valore della velocità deve
essere compreso tra -400 and 400.
md.setM2Speed(speed)
Imposta la velocità e la rotazione del motore 2. Il valore della velocità deve
essere compreso tra -400 and 400.
md.setSpeed(speed,speed)
Imposta la velocità e la rotazione dei due motori
md.setM1Brake()
Ferma il motore 1
md.setM2Brake()
Ferma il motore 2
md.setBrakes()
Set brake for motor 1 and 2.
md.getM1CurrentMilliamps()
Restituisce il valore di corrente letto per il motore 1 in mA.
md.getM2CurrentMilliamps()
Restituisce il valore di corrente letto per il motore 1 in mA.
|
Altri progetti con moduli per il comando di motori
Elenco revisioni | |
01/10/2018 | Aggiornato pagina, inserito filamto |
23/08/2017 | Emissione preliminare |