Modulo controllo motori con TB6612FNG

ultimo aggiornamento 16 giugno 2019


 

Indice

Descrizione

Il modulo di controllo motore è basato sull'integrato TB6612FNG prodotto dalla Toshiba ed è in grado di pilotare due motori a corrente continua con una corrente costante di 1.2A (3.2A di picco)  interfacciandosi con un microcontrollore, può anche essere utilizzato per controllare un singolo motore passo-passo bipolare.

 

 

homotix

PCBA

OurPCB

L'integrato è un H-bridge di tipo MOSFET molto più efficiente rispetto a un ponte H-bridge basato su BJT come i più datati L298N o LB1836M Sanyo, il che consente di avere più corrente per alimentare i motori e meno da trarre dalla rete logica-
L'integrato è montato su una piccola breakout board il che permette l'accesso diretto a tutte le caratteristiche del TB6612FNG, sono inoltre presenti i condensatori di alimentazione e i condensatori di disaccoppiamento su entrambe le linee di alimentazione

Ognuno dei due canali motore ha due pin di controllo direzione e un pin di controllo della velocità che accetta un ingresso PWM con una frequenza fino a 100 kHz. Il pin STBY deve essere posto a livello alto per porre il driver dalla modalità standby.
Due segnali di ingresso (IN1 e IN2) possono essere utilizzati per comandare il motore in una delle quattro modalità di funzionamento - rotazione oraria CW, rotazione antioraria CCW, a freno rapido, e stop.
La tensione di alimentazione della logica (VCC) può essere nel range di 2.7-5.5VDC, mentre l'alimentazione del motore (VM) è limitata a una tensione massima di 15VDC.
La corrente di uscita nominale fino a 1,2 A per canale (o fino a 3.2A per un breve, singolo impulso).

Schema elettrico

Lo schema del modulo è molto semplice in quanto ricalca quasi fedelmente quello consigliato sul datasheet, oltre

TB6612FNG Driver IC for Dual DC motor

Piedinatura Datasheet Foto dell'integrato

Caratteristiche

 • Tensione di alimentazione: 15 V max = VM, VCC = 2.7-5.5V
 • Corrente di uscita: Ia = 1,2 A (medio) / 3.2A (picco)
 • Controllo standby per risparmiare energia
 • CW / CCW / short freno / stop modalità di controllo motore
 • Built-in circuito di shutdown termico e circuito a bassa tensione rilevazione
 • Spaziatura dei pin 2,5 mm
 • Condensatori di filtraggio su entrambe le linee di alimentazione
 • Dimensioni: 20.3x20,3mm

Descrizione dei pin

Nome pin Funzione Alimentazione
Input
Output
Note
VM Alimentazione motore Alimentazione

Tensione di alimentazione del motore Qui è dove si fornisce l'alimentazione per i motori (da 2,2 V a 13,5 V)

VCC Alimentazione della logica Alimentazione Questo è il pin per la tensione di alimentare del chip e per dialogare con il microcontrollore (da 2,7 V a 5,5 V)
GND Massa Alimentazione Common Ground per la tensione del motore e la tensione logica (tutti i pin GND sono collegati insieme)
STBY Standby Input Permette agli H-bridge di funzionare quando è a livello alto (ha un resistore pulldown quindi deve essere attivamente portato a livello alto)
AIN1-NBIN1 Input 1 per  i canali A/B Input Uno dei due ingressi che determina la direzione.
AIN2/BIN2 Input 2 per  i canali A/B Input Uno dei due ingressi che determina la direzione.
PWMA/PWMB PWM input for channels A/B Input Ingresso PWM che controlla la velocità di rotazione del motore.
A01/B01 Output 1 per  i canali A/B Output Una delle due uscite per collegare il motore
A02/B02 Output 2 per  i canali A/B Output Una delle due uscite per collegare il motore

Nella tabella sottostante la Tabella della verità (Tabella logica) per l'impostazione dei pin di e relativa uscita. Per facilitare la gestione si potrà fare uso della speciale libreria creata dalla Sparkfun che semplifica tutte le operazioni.
Quando le uscite sono impostate su Alto/Basso, il motore funzionerà. Quando sono impostati su Basso/Alto il motore funzionerà nella direzione opposta. In entrambi i casi, la velocità è controllata dall'ingresso PWM.

Tabella della verità
 
Mode In1 In2 PWM Out1 Out 2
Short brake H H H/L L L
CCW (Rotazione in senso antiorario) L H H L H
Short brake L H L L L
cw (rotazione antioraria) H L H H L
Short brake H L L L L
STOP L L H OFF OFF

Non dimenticare che il pin STBY deve essere alto per guidare i motori.

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 L298N Modulo con LB1836M

Sketch di prova

Per il test del modulo, si è pensato di realizzare un piccolo robot, la base è formata Arduino 2wd 150mm mini smart robotics car è una mini base robot che permette di realizzare piccole unità a due ruote motrici, può essere trovato su vari siti di vendita on-line.

Per la scheda di controllo realizzata su una bread board, si è utilizzato un Arduino Nano, in questo caso un clone

L'alimentazione è fornita da un portabatteria presente nel kit DSD TECH 18650 da Amazon, in cui sono presenti due batterie tipo 18650 agli ioni di litio la cui tensione di lavoro si aggira attorno i 3,6-3,7 volt, in modo da erogare una tensione complessiva di 7,4V.

 

Il connettore in uscita fornisce la tensione ad alimentatore per bread board tipo MB102


Scarica il programma

/*
  MotorTestRun.ino
  Lo sketch testa il modulo motore basato sul IC TB6612FNG

  Libreria
  https://github.com/sparkfun/SparkFun_TB6612FNG_Arduino_Library

  Creato il 16/06/2019 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog https://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

// Questa è la libreria per TB6612 che contiene la classe Motor e tutte
// le funzioni
#include <SparkFun_TB6612.h>

// Pin per tutti gli input

#define PWMA 3
#define AIN1 5
#define AIN2 4
#define PWMB 9
#define BIN1 7
#define BIN2 8
#define STBY 6

// queste costanti vengono utilizzate per consentire di configurare i
// motori e allinea con nomi di funzioni come forward.
// Il valore può essere 1 o -1
const int offsetA = 1;
const int offsetB = -1;

// Inizializzazione dei motori.
Motor motor1 = Motor(AIN1, AIN2, PWMA, offsetA, STBY);
Motor motor2 = Motor(BIN1, BIN2, PWMB, offsetB, STBY);

void setup()
{
  //Nothing here
}


void loop()
{
  //Motori avanti
  forward(motor1, motor2, 100);
  delay(1000);

  // Gira a sinistra
  right(motor1, motor2, 100);
  delay(1000);

  //Motori avanti
  forward(motor1, motor2, 100);
  delay(1000);

  // Gira a destra
  left(motor1, motor2, 100);
  delay(1000);

  //Motori indietro
  back(motor1, motor2, -100);
  delay(1000);

  // Gira a sinistra
  right(motor1, motor2, 100);
  delay(1000);

  //Motori indietro
  back(motor1, motor2, -100);
  delay(1000);

}

Esempio di utilizzo del modulo

LittleBot è un piccolo robot dotato di una scheda di controllo su cui è installato un Arduino Nano. Il telaio è realizzato in alluminio ed e mosso da due piccoli motoriduttori realizzati completamente in metallo che muovono una coppia di cingoli.
Il robot è dotato di alcuni sensori che gli permettono di rilevare alcuni parametri tra i quali la luminosità e la temperatura. Un sensore frontale azionato da un servomotore permette al robot di scandagliare lo spazio frontale e misurare la distanza da eventuali ostacoli e in questo modo di evitarli. I motor sono azonati da un modulo con TB6612FNG prodotto dalla SparkFun.
La presenza di un modulo Bluetooth permette di pilotare il robot in modo wireless tramite la scheda Arduino Esplora.

kit proposto da Elegoo denominato Tumbller è un kit per la costruzione di un robot autobilanciate di nuova concezione che ha molteplici affascinanti funzioni come:

Il controllo del robot è possibile anche tramite uno smartphone con collegamento bluetooth usando l' APP ELEGOO TOOL BLE.

 

 

Elenco revisioni:

16/06/2019

Aggiornata pagina

02/03/2012

Emissione preliminare