Diseño y simulación de un robot con dos motores DC

Introducción

Como actividad previa a la construcción de un robot, vamos a diseñar y simular con tinkercad cómo activar dos motores DC utilizando un puente H-Bridge para el control del sentido de giro de los motores.

Esquemático

El esquema de conexión del robot móvil que queremos simular es el siguiente (puedes descargarla para verla mejor):

Esquema de conexiones de un robot con motores DC. Descarga: [png] [pdf]

Diseño con Tinkercad

Una vez que tenemos claro el esquema eléctrico procedemos a diseñarlo con la herramienta Tinkercad. El diseño quedaría así:

Diseño robot móvil motores DC controlados por Arduino

Tabla de estados (o de la verdad)

Se suele llamar tabla de la verdad a aquella que nos permite identificar el estado de una salida en función de varias entradas. Esta función se escribe en forma de tabla, por ejemplo para el motor izquierdo:

EstadoInput1Input2Acción motor IzquierdoVoltaje (V)
1BajaBaja
2BajaAlta
3AltaBaja
4AltaAlta

Las posibles acciones que puede realizar el motor izquierdo son las siguientes:

  • El motor se para
  • El motor gira hacia atrás
  • El motor gira hacia adelante
  • El motor se detiene

En el diseño se ha añadido un voltímetro en el motor izquierdo para comprobar el voltaje que recibe el motor en cada uno de los cuatro estados posibles.

Comprobación de la tabla de verdad por microinterruptor (switch)

En los apuntes del aula virtual del curso (Control y Robótica – Control de motores por módulo puente), vimos cómo podíamos completar la tabla de la verdad utilizando un microinterruptor (switch) de color azul de cuatro . Así, por ejemplo, con los interruptores 1 y 2 podríamos controlar el motor izquierdo y con los interruptores 3 y 4 el motor derecho.

Control robot DC H-Bridge L293D con microswitch

Ejercicio 1: Dibujar en tinkercad el montaje de la figura (con el mismo nombre) de arriba y completar la siguiente tabla de la verdad para el motor izquierdo accionando los switchs correspondientes:

EstadoSwitch1Switch2Acción motor izquierdoVoltaje (V)
1OFFOFF
2OFFON
3ONOFF
4ONON

Ejercicio 2: Utilizando el mismo montaje de tinkercad, añadir un voltímetro al motor derecho y completar una tabla de verdad igual a la anterior para el motor derecho:

EstadoSwitch3Switch4Acción motor derechoVoltaje (V)
1OFFOFF
2OFFON
3ONOFF
4ONON

Comprobación de la tabla de verdad por programación

En este apartado vamos a hacer el mismo efecto que con el microswitch pero por programación. Para ello, duplicaremos el proyecto para eliminar el microswitch y conectar los cables a los pines de arduino según el esquemático: D3, D4, D5 y D6

Ejercicio 3: En tinkercad, duplica el proyecto denominado «Control robot DC H-Bridge L293D con microswitch» y pon el nombre «Diseño robot móvil motores DC controlados por Arduino«. Haz las modificaciones necesarias para que quede de forma similar al dibujo de arriba del mismo nombre.

Asegúrate de que haces las siguientes conexiones (entre otras):

  • Entrada1-D4 (motor izquierdo)
  • Entrada2-D3 (motor izquierdo)
  • Entrada4-D6 (motor derecho)
  • Entrada3-D5 (motor derecho)

Una vez conectado correctamente vamos a escribir un programa en Arduino que nos permita probar cada uno de los estados de la tabla de la verdad. Para ello, en la parte superior derecha de tinkercad podemos activar el editor de código. Podemos seleccionar Bloques/Bloques+Texto/Texto. Elegimos Texto.

Escribe el siguiente código y luego pulsa en Iniciar simulación.

void setup()
{
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  
  digitalWrite(3, HIGH);  // Pone el pin3 a 5V
  digitalWrite(4, LOW);   // Pone el pin4 a 0V
}

void loop()
{
  
}

Haz las modificaciones necesarias en el código anterior para completar la siguiente tabla de verdad. Observa que ahora son los pines los que se comportan como si fueran interruptores. La diferencia es que, en lugar de activarlos a mano, lo hacemos por programación:

EstadoPin3
(Switch1)
Pin4
(Switch2)
Acción motor izquierdoVoltaje (V)
1LOWLOW
2LOWHIGH
3HIGHLOW
4HIGHHIGH

Como puedes observar, el código de ejemplo que hemos puesto corresponde al estado 3.

También puedes ver que hemos escrito las expresiones digitalwrite() en la función setup. Quizá eso te extrañe, pero no significa nada más que al hacerlo así el estado del motor se mantendrá en el mismo estado de forma indefinida.

Ejercicio 4: Haz las modificaciones necesarias en el código para completar la tabla de verdad para el motor derecho:

EstadoPin5
(Switch3)
Pin6
(Switch4)
Acción motor derechoVoltaje (V)
1LOWLOW
2LOWHIGH
3HIGHLOW
4HIGHHIGH

Ejercicio 5: Escribir y simular un programa en el que el motor izquierdo pase de forma sucesiva por los cuatro estados posibles cada 2 segundos. Ten en cuenta que ahora en este caso tienes que escribir las instrucciones digitalwrite en la función loop. ¿Sabrías decir por qué?