0% encontró este documento útil (0 votos)
114 vistas

Arduino

El documento describe cómo controlar dos motores DC usando un controlador TB6612FNG con Arduino. El TB6612FNG permite controlar la velocidad y dirección de dos motores de forma independiente. Se explica la conexión del TB6612FNG a Arduino y se proporciona un ejemplo de código para mover y girar un vehículo controlando ambos motores.

Cargado por

SalinasC.Howard
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
114 vistas

Arduino

El documento describe cómo controlar dos motores DC usando un controlador TB6612FNG con Arduino. El TB6612FNG permite controlar la velocidad y dirección de dos motores de forma independiente. Se explica la conexión del TB6612FNG a Arduino y se proporciona un ejemplo de código para mover y girar un vehículo controlando ambos motores.

Cargado por

SalinasC.Howard
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

    

LUIS LLAMAS
INGENIERÍA, INFORMÁTICA Y DISEÑO

TUTORIALES ARDUINO

CONTROLAR DOS MOTORES DC CON


ARDUINO Y DRIVER TB6612FNG
— 18 AGOSTO, 2016 SHARE ON:      

¿QUÉ ES UN TB6612FNG ?
El TB6612FNG es un controlador (driver) de motores que nos permite manejar dos motores de
corriente continua desde Arduino, variando tanto la velocidad como el sentido de giro.

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 1/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

El TB6612FNG puede ser considerado una versión mejorada del L298N. Al igual que esté,
internamente está formado por dos puentes-H, junto con la electrónica necesaria para simpli car su uso,
y eliminar posibles cortocircuito por errores de uso.

Sin embargo, en el caso del TB6612FNG los puentes-H están formados por transistores MOSFET, en
lugar de transistores BJT como en el L298N. Esto permite que el TB6612FNG tiene mejor e ciencia y
menores dimensiones que el L298N.

El TB6612FNG también permite controlar intensidades de corriente superiores, siendo capaz de


suministrar 1.2A por canal de forma continua, y 3.2A de pico. Recordar que el L298N tiene una intensidad
máxima teórica de 2A, pero las pérdidas hace que en la práctica sólo pueda suministrar 0.8-1A.

Además, el TB6612FNG no tiene la caída de tensión que sí tiene el L298N debido a sus transistores
BJT, que podían llegar a ser superiores a 3V. En su lugar, el TB6612FNG se comporta como una pequeña
resistencia de 0.5 Ohm.

Como puntos negativos, el TB6612FNG puede proporcionar tensiones inferiores, de hasta 13.5V
(frente a los 35V del L298N). Además, es algo más difícil de montar, ya que las placas con L298N
frecuentemente incorporan placas de conexión, que permiten conectar de forma sencilla el motor.

Finalmente, la protección contra corrientes inducidas son algo más limitadas que las del L298N, por lo
que podemos tener algún reinicio de Arduino cuando alimentamos cargas medianas o grandes.

El TB6612FNG dispone de dos canales, por lo que es posible controlar dos motores de corriente
continua de forma independiente. También puede controlar un único motor paso a paso aunque, en
general, preferiremos usar controladores especí cos.

En cada canal podemos controlar el sentido de giro y la velocidad, para lo cual admite una señal PWM
de frecuencia máxima de 100 kHz (muy por debajo del rango normal de PWM en Arduino)

El TB6612FNG dispone de protecciones térmicas, de inversión de corriente en la fuente de suministro


de los motores, condensadores de ltrado en ambas líneas de alimentación, detección de bajo voltaje, y
protecciones contra las corrientes inducidas en los motores.

El TB6612FNG también incorpora un modo de Standby, que desactiva por completo el controlador,
entrando en un modo de ahorro de energía.

El controlador TB6612FNG puede ser empleado en proyectos de electrónica y robótica. Es


ampliamente usado en proyectos electrónico y robótica, por su sencillez de uso, bajo coste, y buena
calidad precio

PRECIO
El controlador TB6612FNG es un dispositivo barato. En un principio el TB6612FNG era más caro que
el L298N, pero los precios descendieron y en la actualidad el TB6612FNG es más barato que el L298N.

Podemos encontrar un TB6612FNG por 1,10€ en vendedores internacionales de AliExpress o eBay.

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 2/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

ESQUEMA DE MONTAJE
El esquema de montaje no es demasiado complicado. Por un lado, suministramos la tensión que
alimentará el motor desde una fuente de alimentación externa, mediante el pin VM. La tensión máxima es
de 15V.

Además, tenemos que alimentar la electrónica del módulo mediante el pin VCC. El rango de tensión
para VCC es 2.7 a 5.5V.

Para el control del módulo Los pines AIN1, AIN2 Y PWMA controlan el canal A, mientras que los pines
BIN1, BIN2, y PWMB controlan el canal B.

Finalmente, el pin STBY controla el modo Standby. Debemos ponerlo en HIGH para activar el motor.
Podemos conectarlo a un pin digital de Arduino, si queremos poder activar el modo Standby, o conectarlo
a VCC si queremos dejarlo permanentemente desconectado.

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 3/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

La conexión, vista desde Arduino quedaría de la siguiente forma.

EJEMPLOS DE CÓDIGO
El código necesario es similar al que vimos al ver el L298N. Igualmente, conviene que agrupemos el
código en funciones que podamos reutilizar, o el código crecerá rápidamente.

El siguiente código permite desplazar y girar un vehículo, actuando sobre ambos motores.
Empleamos el modo Standby para reducir el consumo cuando esté parado, alargando la batería.

1 const int pinPWMA = 6;


2 const int pinAIN2 = 7;
3 const int pinAIN1 = 8;
4 const int pinBIN1 = 9;
5 const int pinBIN2 = 10;
6 const int pinPWMB = 11;
7 const int pinSTBY = 12;
8
9 const int waitTime = 2000; //espera entre fases
10 const int speed = 200; //velocidad de giro
11
12 const int pinMotorA[3] = { pinPWMA, pinAIN2, pinAIN1 };
13 const int pinMotorB[3] = { pinPWMB, pinBIN1, pinBIN2 };
14
15 enum moveDirection {
16 forward,

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 4/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

17 backward
18 };
19
20 enum turnDirection {
21 clockwise,
22 counterClockwise
23 };
24
25 void setup()
26 {
27 pinMode(pinAIN2, OUTPUT);
28 pinMode(pinAIN1, OUTPUT);
29 pinMode(pinPWMA, OUTPUT);
30 pinMode(pinBIN1, OUTPUT);
31 pinMode(pinBIN2, OUTPUT);
32 pinMode(pinPWMB, OUTPUT);
33 }
34
35 void loop()
36 {
37 enableMotors();
38 move(forward, 180);
39 delay(waitTime);
40
41 move(backward, 180);
42 delay(waitTime);
43
44 turn(clockwise, 180);
45 delay(waitTime);
46
47 turn(counterClockwise, 180);
48 delay(waitTime);
49
50 fullStop();
51 delay(waitTime);
52 }
53
54 //Funciones que controlan el vehiculo
55 void move(int direction, int speed)
56 {
57 if (direction == forward)
58 {
59 moveMotorForward(pinMotorA, speed);
60 moveMotorForward(pinMotorB, speed);
61 }
62 else
63 {
64 moveMotorBackward(pinMotorA, speed);
65 moveMotorBackward(pinMotorB, speed);
66 }
67 }
68
69 void turn(int direction, int speed)
70 {
71 if (direction == forward)
72 {
73 moveMotorForward(pinMotorA, speed);
74 moveMotorBackward(pinMotorB, speed);
75 }
76 else
77 {
78 moveMotorBackward(pinMotorA, speed);
79 moveMotorForward(pinMotorB, speed);
80 }

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 5/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

81 }
82
83 void fullStop()
84 {
85 disableMotors();
86 stopMotor(pinMotorA);
87 stopMotor(pinMotorB);
88 }
89
90 //Funciones que controlan los motores
91 void moveMotorForward(const int pinMotor[3], int speed)
92 {
93 digitalWrite(pinMotor[1], HIGH);
94 digitalWrite(pinMotor[2], LOW);
95
96 analogWrite(pinMotor[0], speed);
97 }
98
99 void moveMotorBackward(const int pinMotor[3], int speed)
100 {
101 digitalWrite(pinMotor[1], LOW);
102 digitalWrite(pinMotor[2], HIGH);
103
104 analogWrite(pinMotor[0], speed);
105 }
106
107 void stopMotor(const int pinMotor[3])
108 {
109 digitalWrite(pinMotor[1], LOW);
110 digitalWrite(pinMotor[2], LOW);
111
112 analogWrite(pinMotor[0], 0);
113 }
114
115 void enableMotors()
116 {
117 digitalWrite(pinSTBY, HIGH);
118 }
119
120 void disableMotors()
121 {
122 digitalWrite(pinSTBY, LOW);
123 }

En un proyecto complejo, estas funciones estarían integradas en los objetos que integran nuestro
modelo.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales
 de Arduino

TAGS:
ACTUADORES ARDUINO ARDUINO INTERMEDIO MOTORES

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 6/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

PREVIOUS POST NEXT POST

MOTOR PASO A PASO 28BYJ-48 CON MOTORES PASO A PASO CON


ARDUINO Y DRIVER ULN2003 ARDUINO Y DRIVER A4988 O
DRV8825

RELATED POSTS
ENVIAR O RECIBIR BYTES POR PUERTO SERIE EN ARDUINO

ARRAY SEPARADO POR COMAS POR PUERTO SERIE EN ARDUINO

ENVIAR Y RECIBIR NÚMEROS POR PUERTO SERIE EN ARDUINO

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 7/8
23/7/2017 Controlar dos motores DC con Arduino y driver TB6612FNG

0 Comentarios Luis Llamas 


1 Acceder

Ordenar por los más nuevos


 Recomendar ⤤ Compartir

Sé el primero en comentar...

INICIAR SESIÓN CON

O REGISTRARSE CON DISQUS ?

Nombre

Sé el primero en comentar.

Search 

SIGUENOS EN

TWITTER G+ LINKEDIN RSS

SIGUE LEYENDO EN

TUTORIALES ARDUINO

ENVIAR O RECIBIR BYTES POR PUERTO SERIE EN ARDUINO

ARRAY SEPARADO POR COMAS POR PUERTO SERIE EN ARDUINO

https://www.luisllamas.es/arduino-motor-dc-tb6612fng/ 8/8

También podría gustarte