Comprender la movilidad del futuro con los coches robot
Bienvenido a una nueva serie de blogs sobre coches robot. En la primera parte, conoceremos sus fundamentos, por así decirlo, como ayuda para decidir qué chasis, qué microcontrolador y qué tipo de mando a distancia son los más adecuados.
Dos o cuatro ruedas - sopesando los pros y los contras de construir coches RC para Arduino
Empecemos por el chasis y veamos las ventajas e inconvenientes de los kits económicos con dos o cuatro ruedas motorizadas. Todos tienen en común los motores eléctricos, así que éstos por sí solos no son un criterio de selección. Los coches robot de dos ruedas son inicialmente más baratos porque no tienen el coste de dos motores eléctricos y ruedas más. En cambio, tienen una o dos ruedas de apoyo, que dan a los coches teledirigidos una gran maniobrabilidad. Así que si quieres "hacer girar el plato", éste es el camino a seguir. Sin embargo, en este rango de precios de los motores de corriente continua, no puedes esperar que funcionen suavemente con gran precisión. Por lo tanto, la marcha en línea recta no es tan buena como con la versión de cuatro ruedas. Especialmente cuando los motores se ponen en marcha, muestran una mayor estabilidad direccional, pero las curvas sólo son posibles con radios significativamente mayores. Otra ventaja del chasis de cuatro ruedas es que hay más espacio para las baterías, el microcontrolador, posiblemente el convertidor CC/CC y los sensores.
La elección del microcontrolador para construir un coche RC
La siguiente cuestión está relacionada con el microcontrolador y cómo se programa. Por ejemplo, un microordenador del tipo Raspberry Pi tiene la mayor potencia de cálculo en un chasis pequeño. Especialmente en lo que respecta al control remoto, los tipos con WiFi y Bluetooth incorporados ofrecen ventajas, e incluso puedes transmitir imágenes desde una cámara Raspberry Pi. La programación se realiza en el lenguaje de programación Python, ampliamente utilizado, pero el inicio del sistema operativo Raspberry Pi OS, basado en Linux, tarda aproximadamente un minuto. Otro inconveniente de la Raspis (abreviatura de Raspberry Pi) es la necesidad de una buena fuente de alimentación de 5 V. Esto requiere un buen convertidor CC/CC.
En relación con el tema del control remoto por Bluetooth, en un episodio posterior se mostrará un ejemplo con la Raspberry Pi y la APP BlueDot para Android de Martin O'Hanlon (miembro del personal de la Fundación Raspberry Pi).
La puesta en marcha del sistema es mucho más rápida con un microcontrolador basado en el ATmega 328, por ejemplo el Funduino Uno o el Funduino Nano. Aproximadamente un segundo después de encenderlo, puedes empezar con las entradas de control, sin arrancar desde la tarjeta microSD, el programa una vez cargado no se olvida. La tensión de entrada puede estar entre 5 y 9 voltios. La programación se realiza en el IDE Arduino, un entorno de desarrollo similar a C/C++ (para más explicaciones, consulta https://funduino.de/hardware-software). Por tanto, primero veremos ejemplos con el Funduino Uno R3, para el que existen controladores de motor perfectos en forma de los llamados escudos. Éstos simplemente se conectan al Uno y las llamadas bibliotecas nos ayudan con la programación.
Excurso: ¿Qué es un controlador/motor driver?
Debido a la corriente muy limitada que llega a las salidas de los microcontroladores, los grandes consumidores -y esto incluye todo tipo de motores eléctricos y relés- necesitan una fuente de alimentación externa y un circuito electrónico que convierta la señal de control del microcontrolador. Sin embargo, los requisitos para este circuito integrado son aún mayores: por un lado, debe permitir una velocidad variable del motor y, por otro, también queremos poder cambiar el sentido de giro del motor invirtiendo la polaridad.
Utilizando el IC L293D como ejemplo, explicaremos a continuación cómo funciona. Básicamente, este componente DIP con dieciséis "patas"/conexiones es suficiente como controlador de motor para dos motores eléctricos.
El CI se alimenta de tensión en las conexiones VCC1 y Masa. Podemos aprovechar esta tensión en el microcontrolador. La alimentación de tensión para los motores se realiza a través de VCC2 y Masa. Aquí conectamos la(s) pila(s) (por ejemplo, de 6 ó 9 voltios). Con motores más grandes es necesario refrigerar el CI, con los pequeños amarillos del kit no.
Conectamos un motor a 1Y y 2Y, las líneas de control correspondientes a la MCU (Unidad Microcontroladora) son 1A, 2A y 1,2EN.
La inversión de la polaridad de los motores para cambiar el sentido de la marcha se realiza básicamente con el llamado circuito H. Lo realizamos con nuestro microcontrolador poniendo dos pines de salida (que van a 1A y 1B) en ALTO o BAJO.
El cambio de velocidad se realiza como en el ejemplo nº 04 - LED pulsante con modulación por ancho de pulsos (PWM), es decir, conexión y desconexión muy rápidas de la tensión. Por lo tanto, para la conexión 1,2EN ("Activar") necesitamos una salida compatible con PWM en la MCU (son los pines con la tilde ~).
Para el segundo motor, las conexiones 3A, 4A y 3,4EN se conectan a pines de la MCU.
La imagen de la derecha (Diagrama lógico) explica cómo funciona el CI. Podemos ver los cuatro amplificadores que dan las señales de entrada 1A a 4A respectivamente con la tensión de la batería a las salidas 1Y a 4Y. Sin embargo, esto sólo ocurre si las entradas PWM 1,2EN y 3,4EN también están en ALTO.
Dos de estos circuitos integrados L293D están instalados en el Motor Shield V1, de modo que aquí se pueden conectar hasta cuatro motores.
Para no utilizar demasiados pines, hay un denominado registro de desplazamiento (SN74HC595) en el centro del Escudo Motor V1. Explicar cómo funciona iría más allá del alcance de este artículo. Afortunadamente, nuestros colegas de Adafruit en Nueva York hicieron la mayor parte de la programación por nosotros y nos proporcionaron una biblioteca para controlar los motores fácilmente.
Foto Motor Shield V1 con modificación:
Conectores hembra soldados (conectores hembra) para conectar equipos adicionales
El Motor Shield V2 también puede controlar hasta cuatro motores y utiliza un CI similar, pero para la conexión de las líneas de control el llamado bus I2C con las conexiones SDA (=Datos serie) en la entrada analógica A4 y SCL (=Reloj serie) en A5. Adafruit también ha desarrollado y proporcionado una biblioteca de programas adecuada para ello.
Imagen Motor Shield V2 con modificación:
Conectores hembra soldados (conectores hembra) para conectar equipos adicionales
Ambos Motor Shields tienen conectores hembra adicionales soldados para conectar posteriormente transmisores/receptores Bluetooth o de 433 MHz o sensores. Más información sobre esto en una de las siguientes entradas del blog.
Alimentación y control de un coche teledirigido para microcontroladores Arduino
Si queremos que nuestro coche robot se conduzca solo, tenemos que desconectarlo del puerto USB del PC. Esto significa que también se perderá la fuente de alimentación. A partir de ahora, el centro de mando (MCU) y los motores eléctricos se alimentarán con pilas o baterías recargables. Los motores son, con diferencia, los que más consumen. El portapilas que viene con la mayoría de los kits es para cuatro pilas Mignon (AA), es decir, 6 voltios para la MCU y los motores. Si quieres utilizar pilas recargables, debes utilizar seis pilas Mignon (AA) o dos pilas de ión-litio 18650, debido a su menor voltaje.
Como controles, primero conoceremos los mandos a distancia con control remoto por infrarrojos, los transceptores Bluetooth con APP para smartphone o un segundo microcontrolador también con el transceptor BT HC-05, así como los mandos a distancia por radio con 433Mhz y 2,4 GHz en los próximos episodios. La serie de blogs concluirá con aspectos de la conducción autónoma, principalmente la detección de obstáculos. Hasta pronto.