Arduino Motor Shield R3

ultimo aggiornamento 1 ottobre 2018


JLCPCB - 2$ per prototipi di PCB, di qualsiasi colore. Produzione in 24 ore!
L'Azienda di prototipi PCB più popolare, con oltre 700.000 clienti in tutto il mondo!
Sorridi a tutto il mondo qualunque cosa accada!

 

Indice

Descrizione del modulo

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.

homotix


 

Caratteristiche

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

 

Ingressi e uscite

Lo shield è dotato di diverse interfacce di input e output per la comunicazione con i moduli TinkerKit:

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:

Funzione Pin per il canale A Pin per il canale B
Direzione D12 D13
PWM  D3 D11
Freno D9 D8
Assorbimento dei motori A0 A1

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.

Alimentazione

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:

Schema elettrico del modulo

 L298 -  Driver per ponte H


Codice RS - 714-7715
Piedinatura Datasheet Foto dell'integrato

Gestione di due motori DC

Per controllare uno o due motori a corrente continua è abbastanza facile con il Arduino Motor shield R3.
Sotto vediamo i principali componenti necessari

Schema di collegamento

Programma di test

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.

#include "ArduinoMotorShieldR3.h"
ArduinoMotorShieldR3 md;

void setup()
{
  md.init();
}

void loop()
{
  //Motori avanti alla massima velocità
  md.setM1Speed(200);
  md.setM2Speed(200);
  delay(2000);
  //Motori indietro alla massima velocità
  md.setM1Speed(-200);
  md.setM2Speed(-200);
  delay(2000);
}

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.

Filmato del test

 

 

Altri progetti con moduli per il comando di motori

Motor shield

Infineon motor Shield

L298N Dual H-Bridge
Motor Controller
Modulo con L293 Modulo con doppio L293 L293 shield
 
  modkit MotoProto L298  Scheda con L297 - L298N
Modulo con ULN2003A Modulo con LB1836M Modulo con TB6612FNG

 

 

Elenco revisioni

01/10/2018

Aggiornato pagina, inserito filamto

23/08/2017

Emissione preliminare