CONTROL DE MOTORES ARDUINO – I

1 Esquema de conexion de la controladora TB6612FNG

Autor:  Agustin Gonzalez Redondo. M Rocío García de la Fuente.

 

Tal y como hemos visto, en el anterior artículo sobre Arduino, es muy sencillo trabajar con dispositivos de entrada como sensores de ultrasonidos; de la misma forma, esta plataforma también es capaz de trabajar con dispositivos de salida como motores eléctricos fácilmente.

Los motores eléctricos son actuadores continuos que convierten la energía eléctrica en energía mecánica. El motor de corriente continua logra esto mediante la producción de una rotación angular continua que se puede utilizar para rotar bombas, ventiladores, compresores, ruedas, etc.

Existen varios tipos de motores eléctricos susceptibles de ser controlados utilizando para ello una tarjeta Arduino, sin embargo, nos centraremos en los más sencillos, los motores de corriente continua (figura 1 Motores DC).

1 figura 1 Varios motores DC de corriente continua

 

Este tipo de motor produce un campo magnético en un rotor cuando pasa una corriente eléctrica a través de un conjunto de conmutador y escobilla de carbono. Generalmente los motores de corriente continua son el tipo de motor más común a la hora de trabajar con Arduino puesto que son baratos, pequeños y fáciles de controlar. Algunas consideraciones que se deben tener en cuenta son:

1 figura 2 imagen de un motor DC N20

1 Figura 3 Esquema de conexión simulación en TinkerCad con velocidad negativa

  • Los motores de corriente continua normalmente tienen sólo dos polos, uno positivo y otro negativo. Si se conectan estos dos cables directamente a una batería el motor girará. Si se cambian los cables, el motor girará en la dirección opuesta.
  • La velocidad de giro del motor depende directamente de la tensión aplicada entre los dos polos.

A la hora de controlar estos dispositivos con Arduino existen dos posibilidades

  1. En el caso de motores muy pequeños, con una reducción muy alta como, los motores de corriente continua N20 de 30rpm o similar, cuyo consumo es muy bajo, no superior a 40mA, no  es necesario un elemento intermedio para realizar el control del motor y la conexión se realiza conectando ambos terminales directamente a la placa de Arduino, seleccionando salidas de tipo PWM, pines 6 y 5 por ejemplo, si lo que se desea es también controlar la velocidad de giro del motor, como en el caso que nos ocupa (figuras 5 y 6).

1 figura 5 Esquema simplificado de un puente H

1 figura 6 circuito integrado L293d

A continuación, mediante un sencillo código se puede hacer girar el motor alternativamente hacia un lado y otro, modificando el valor de la velocidad de entrada. Tal y como se presenta en el siguiente código para la IDE Arduino.

//CONTROL DE UN MOTOR DE CORRIENTE CONTINUA DIRECTAMENTE CON ARDUINO

int motorPin1 =  5;    // cable 1 conectado al pin 5 (con salida PWM)

int motorPin2 =  6;    // cable 2 conectado al pin 6 (con salida PWM)

int velocidad=150;    //velocidad predefinida de giro entre 0 y 255

void setup()   {               

  pinMode(motorPin1, OUTPUT);

  pinMode(motorPin2, OUTPUT); 

}

void loop()                    

{

//GIRA EL MOTOR HACIA LA DERECHA A UNA VELOCIDAD DEFINIDA PREVIAMENTE durante 1 seg

  analogWrite(motorPin1, velocidad);

  digitalWrite(motorPin2, LOW);  

  delay(1000);

  digitalWrite(motorPin1, LOW);

  delay(1000);

  //GIRA EL MOTOR HACIA LA IZQUIERDA A UNA VELOCIDAD DEFINIDA PREVIAMENTE durante 1 seg

  analogWrite(motorPin1, LOW);

  digitalWrite(motorPin2, velocidad);  

  delay(1000);

  digitalWrite(motorPin1, LOW);

  delay(1000);

}

  1. Sin embargo, para la mayoría de las aplicaciones la placa de Arduino no es capaz de suministrar la corriente necesaria, limitada a 40 mA, y se debe insertar un elemento intermedio entre el motor y la controladora, en este caso un puente H. Se trata de dispositivos ampliamente usados en robótica como convertidores de potencia y que además permiten realizar cambios en el sentido de giro de los motores (figura 5).

Los puentes H están disponibles de forma comercial como circuitos integrados, hay diversos tipos:

  • L293d (figura 6): circuito integrado, propiamente dicho, para trabajar con pequeños motores, tiene las siguientes características:
    • Se pueden controlar hasta 2 motores.
    • Proporciona una corriente máxima de 1A a los dos los motores.
    • L298n (figura 7): formado por 2 puentes H, este dispositivo tiene las siguientes características:
      • Permite controlar hasta 2 motores.
      • La corriente máxima teórica de 2 Amperios a cada motor, aunque en la práctica es difícil superar 1 Amperio en cada fase sin sufrir calentamiento.

1 Figura 7 Controladora de motores DC l298n

    • TB6612FNG (figura 8): formado, como el anterior, por dos puentes H, sus características son:
      • Permite controlar dos motores.
      • La corriente máxima por fase es de 1,2 Amperios a cada motor.

1 Figura 8 Controladora de motor TB6612FNG

Para ilustrar el funcionamiento de un motor con su controlador se ha elegido el modelo TB6612FNG, si bien el sistema de conexiones y el código para cualquiera de los otros dos tipos de puentes H es similar.

Su montaje no es demasiado complicado y se detalla a continuación en el siguiente esquema realizado con Fritzing.

Finalmente, para el accionamiento de los motores, se deben tener en cuenta las siguientes consideraciones:

  • El rango de alimentación está entre 2,7V y 5,5 V.
  • Standby: debe estar alimentado (5V), para que los motores funcionen. Si se conecta a un pin de Arduino se puede controlar así su funcionamiento.
  • AIN2 y AIN1 definen el sentido de giro del motor conectado a la fase A, su puesta en marcha y parada. Análogamente ocurriría con BIN2 y BIN1 para los motores conectados a la fase B.
  • PWMA, PWMB: permiten controlar la velocidad de giro, entre 0 y 255, de cada una de las fases.

Teniendo todo esto en cuenta, el siguiente código permite controlar un motor de corriente continua, para que se encienda, se detenga y se ponga en marcha en sentido contrario de forma alterna.

1 Figura 9 Esquema de conexión de un motor a la controladora TB6612FNG con Arduino

 

//CONTROL DE UN MOTOR CONETADO A UNA CONTROLADORA TB6612FNG

//motor A conectado a A01, A02 y PWMA

int STBY = 10;        // pin de standby

//para el motor A

int PWMA = 3;        // control de velocidad

int AIN1 = 9;        // control de dirección

int AIN2 = 8;        // control de dirección

int velocidad=150;  //velocidad de giro del motor, entre 0 y 255

void setup(){

  pinMode(STBY, OUTPUT);  // definimos esos pines como salidas

  pinMode(PWMA, OUTPUT);

  pinMode(AIN1, OUTPUT);

  pinMode(AIN2, OUTPUT);

 }

void loop(){

  digitalWrite(STBY, HIGH);          //alimenta STBY para hacer funcionar los motores

  digitalWrite(AIN1, LOW);           //mueve el motor hacia la derecha durante un segundo

  digitalWrite(AIN2, HIGH);

  analogWrite(PWMA, velocidad);

  delay(1000);       

  digitalWrite(AIN1, HIGH);          //mueve el motor hacia la izquierda durante un segundo

  digitalWrite(AIN2, LOW);

  analogWrite(PWMA, velocidad);

  delay(1000);                                      

  digitalWrite(STBY, LOW);          //detiene los motores, deja sin alimentación a STBY

  delay(1000);

}

Una vez visto este programa sencillo, para finalizar, se propone realizar el control de un dispositivo con dos motores, que, por ejemplo, pudiera mover un vehículo de forma automática, e incluso que pudiera interaccionar con su entorno empleando dispositivos de entrada como un sensor de ultrasonido.

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO

Robótica-Programación

Introducción a la física de partículas y observación (Muon detector)

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Para comenzar este artículo es preciso realizar una breve introducción al modelo estándar de partículas, para intentar comprender el conocimiento científico que yace detrás del proyecto que trataremos de explicar. El modelo standard (fuente CERN) figura 1. Desde la década de 1930 los descubrimientos […]

Leer más
Robótica-Programación

Control de motores Arduino (IV). Motores Paso a Paso

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO El segundo tipo de motores capaces de controlar su posición de forma interna, los servomotores fueron los primeros que hemos tratado en anteriores artículos, son los motores paso a paso (figura 4. Varios modelos de motores paso a paso), dispositivos ampliamente empleados en impresoras […]

Leer más
Robótica-Programación

Python ·3D con Processing

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Hoy volvemos de nuevo a trabajar con Python, en este caso, añadimos nuevas posibilidades a una IDE que ya conocemos, Processing, además de trabajar con este lenguaje de programación realizaremos una primera animación en 3D. Para comenzar debemos añadir un nuevo modo de trabajo […]

Leer más
Revista