All about Robot Cars - part 1

En las próximas cuatro semanas, queremos destacar los vehículos eléctricos pequeños desde todos los ángulos en nuestro blog como tema principal. Te sorprenderá la cantidad de combinaciones posibles que existen para equipar estos pequeños coches robot. Empezamos por el equipamiento básico, donde se puede elegir entre el kit de dos ruedas con rueda de apoyo y el kit de cuatro ruedas. Los pequeños motores de CC son los mismos de casi todos los proveedores, pero está disponible la gama completa de microcontroladores desde Raspberry Pis hasta AVR (compatible con Arduino) y Espressif con diferentes fortalezas y debilidades.

Para la primera prueba, puede preprogramar los comandos como con el Lego® Boost. Pero eso se vuelve aburrido rápidamente. Se necesita un control remoto. Con la Raspberry Pi puedes usar un teclado inalámbrico en el puerto USB. Las MCU habilitadas para WLAN se pueden controlar mediante un controlador en la red, por ejemplo, el teléfono inteligente, incluso con Blynk. Al final de su serie de blogs MQTT, Jörn Weise controlará un robot de rollo simple a través de su corredor Raspberry Pi. Y le mostraremos cómo puede construir y programar un control remoto por radio con una placa de microcontrolador con ATmega328P, ATmega16U2, compatible con Arduino UNO R3.

Por último, queremos emular los grandes modelos a seguir y enseñar a nuestro coche robot a conducir de forma autónoma. Con los sensores de distancia podemos programar una parada de emergencia o evitar obstáculos. Con los sensores de infrarrojos podemos seguir una línea o conducir con mucha precisión en pequeños pasos, por ejemplo, para dar marcha atrás para aparcar.

Empecemos por las primeras decisiones:

Primero necesitas un chasis con 2 o 4 ruedas / motores eléctricos. No tenemos los kits en nuestro rango en este momento; por eso nos referimos aquí a Amazon.

Ventajas y desventajas del vehículo de dos ruedas con rueda de apoyo: Altamente móvil, puede girar en el acto. Pero debido al diseño (digamos barato) de los motores o pequeños baches en el suelo, la estabilidad en línea recta es difícil.

 


Ventajas y desventajas del vehículo de cuatro ruedas: Mejor estabilidad en línea recta, se empuja un motor de enganche, más espacio para MC y baterías. Pero la estabilidad en línea recta se compra con grandes radios de curva. Y cuatro motores también necesitan el doble de energía de las baterías.

 


Con la palabra clave baterías estamos en la fuente de alimentación de nuestros coches robot. Como puedes ver en las imágenes, los kits contienen un soporte para 4 pilas Mignon / pilas recargables. Eso puede ser suficiente para los primeros intentos; Sin embargo, alcanzas tus límites muy rápidamente. Las baterías de Mignon solo suministran de 1,2 a 1,25 V por celda, casi muy poco para nuestro microcontrolador. Y a los motores, con mucho los mayores consumidores de electricidad, les gusta un poco más de "empuje". Un soporte para 6 pilas Mignon es mejor. También es aconsejable tener una fuente de alimentación separada para los motores y el microcontrolador, porque un motor que se atasca por un corto tiempo puede hacer que la MCU se reinicie rápidamente.

La mayoría de los lectores lo sabrán. que los microcontroladores no pueden suministrar energía directamente a los motores y que la velocidad del motor se controla mediante modulación de ancho de pulso (PWM). Entonces necesitamos un controlador de motor que, controlado por el MCU con PWM, dirija la fuente de alimentación externa a los motores. En el caso más simple, este puede ser un módulo IC llamado L293D. Sin embargo, se recomiendan protectores o HAT con uno o dos de estos chips, que se conectan directamente al microcontrolador respectivo. Explicaremos en detalle en un blog cómo funciona este chip, el llamado puente H.

A continuación, tenemos que decidir qué microordenador o microcontrolador elegir. Aquí también existen ventajas y desventajas en las diferentes soluciones.

Si necesita mucha potencia informática, utilice una microcomputadora, por ejemplo, de la familia Raspberry Pi: se recomiendan Raspberry Pi 3B, 3B +, 3A +, 4B o Zero WH. Ventajas: Máxima potencia informática, WLAN, Bluetooth, control de teclado, muchos sensores, cámara (!), PWM para servomotores. Python se utiliza como lenguaje de programación con el módulo de programa muy poderoso gpiozero. Un controlador de motor económico es el MotoZero de ThePiHut en formato pHAT (Pi Zero) para cuatro motores. Y hay otros controladores de motor basados ​​en el L293D. Sin embargo, no se deben ocultar las desventajas: las RasPis necesitan aproximadamente 1 minuto para arrancar desde la tarjeta µSD y quieren exactamente de 5.0 a 5.1 voltios sin interrupción.

Los menos sensibles a la fuente de alimentación son los microcontroladores compatibles con Arduino con los procesadores Atmel, por ejemplo, nuestra placa de microcontroladores con ATmega328P, ATmega16U2, compatible con Arduino UNO R3, para los que existe un protector de controlador de motor adecuado. Esta combinación ofrece más opciones de conexión para sensores, el boceto se compila en el Arduino IDE y nuestro automóvil robot está listo para usar inmediatamente después de encenderlo. Sin embargo, debido a la falta de capacidad WLAN, no podemos controlar esta variante robusta y amigable para principiantes. Pero un remedio aquí es un control remoto por radio con 433MHz o 2.4GHz.

Los MCU de Espressif traen WiFi con ellos de forma predeterminada: independientemente de si ESP8266-12F o ESP32, los minis también son adecuados para nuestro Robot Car. Pero aquí también, al igual que con RasPis, se debe utilizar un convertidor CC-CC para una fuente de alimentación estable. Porque, por ejemplo, dos baterías 18650 LiPo entregan de 7,4 a 8,4 V, 6 baterías Mignon aproximadamente de 7,2 a 7,5 V, demasiado para nuestros microcontroladores, incluso si tienen reguladores de voltaje parcialmente integrados. (Estos son principalmente para los 3.3V internos).

¿Qué necesitamos todavía? Si los cables de alimentación de los motores aún no están soldados, necesitaremos un soldador. De lo contrario, todas las conexiones están atornilladas o conectadas con cables de puente. Para fijar el compartimento de la batería y los componentes individuales, recomiendo cinta adhesiva de doble cara y cinta de velcro autoadhesiva o bridas para cables.


En esta introducción general, me gustaría actualizar los conocimientos básicos sobre motores de CC y modulación de ancho de pulso.

Los motores de CC tienen dos conexiones para más y menos. La polaridad determina el sentido de giro del motor. La inversión de polaridad funciona entonces con el puente H mencionado anteriormente. Primero, aquí está el principio funcional del motor de CC:

 

Imagen de Kampert / Scherbeck: Comprensión de la electrónica con Raspberry Pi

La imagen de la izquierda muestra los polos opuestos, que mueven el rotor a la posición horizontal debido a la fuerza de Lorentz. La imagen del medio muestra esta posición horizontal, en la que se interrumpe el flujo de corriente, pero el rotor continúa moviéndose debido a la inercia. Poco después, los limpiaparabrisas tocan los otros contactos del conmutador (imagen de la derecha). La polaridad del campo magnético del rotor se invierte y los mismos polos ahora se repelen entre sí. La rotación continúa.

Como ejemplo, muestro el protector del controlador de motor L293D para Arduino Uno y microcontroladores compatibles, en el que se pueden conectar hasta 4 motores a las conexiones roscadas. Si el sentido de rotación no coincide, simplemente invierta la polaridad de la conexión del motor correspondiente. Las conexiones de tornillo para la fuente de alimentación externa se encuentran en la parte inferior izquierda de la imagen. No necesita preocuparse por las conexiones en el microcontrolador, simplemente conéctelo y lea la asignación de conexión de los motores para el boceto en la hoja de datos. La conexión opcional de dos servomotores en la parte superior izquierda también es claramente visible.

 


Todas las placas de controlador de motor con L293D son compatibles con PWM. Estos puentes H electrónicos no solo pueden cambiar el sentido de rotación, sino también regular la velocidad de los motores.

PWM significa modulación de ancho de pulso en alemán y modulación de ancho de pulso en inglés (PDM también es sinónimo de modulación de duración de pulso o modulación de duración de pulso) y eso significa que enviamos pulsos en lugar de una tensión continua constante, es decir, la corriente siempre está encendida - y apague. Sin embargo, sucede tan rápido que no lo vemos. Como en el cine o en la televisión, donde 24 o 25 fotogramas / segundo dan como resultado una película para nuestros ojos. La frecuencia con la que se enciende y apaga en un segundo (la frecuencia) es uno de los parámetros de nuestro PWM. Aquí podemos usar la configuración predeterminada respectiva.

El segundo parámetro es la relación entre la duración del pulso y la duración total de un ciclo, que consta de pulso + pausa. Este parámetro se denomina "ciclo de trabajo".

 


¿Qué significa esto para nuestros motores de CC? Obtienes voltaje completo con el pulso, mientras que la corriente solo fluye proporcionalmente según el ciclo de trabajo. Esto significa que se suministra menos energía eléctrica al motor.

La programación es bastante simple: usamos la función analogWrite (), con la sintaxis analogWrite (pin, valor), donde pin es el número de pin sin haber sido definido previamente como salida, y el valor es un número entero entre 0 y 255 (con PWM de 8 bits), por ejemplo, el 25% corresponde a 63.

Después de llamar a analogWrite (), la función genera una onda cuadrada continua con el ciclo especificado hasta que la próxima llamada de analogWrite () (o digitalRead () o digitalWrite ()) tiene lugar en el mismo pin.

Para obtener más detalles, consulte la página de referencia arduino.cc,
https://www.arduino.cc/reference/de/language/functions/analog-io/analogwrite/
donde copié el siguiente código de ejemplo, que es particularmente interesante porque la variable de entrada analógica tiene una resolución de 10 bits (máx. 1023), mientras que el valor de salida puede ser máx. 255.

El código establece la salida en el pin 9 del LED proporcional (factor 4) al valor que lee un potenciómetro en A3. El LED aquí representa nuestro motor.


int ledPin = 9; LED to digital pin 9 connected

int analogPin = 3; Potentiometer on pin 3 connected

int val = 0; Variable to store the read value

void setup() {

  pinMode(ledPin, OUTPUT); // Sets the pin as output.



void loop() { 

val = analogRead(analogPin);  // Read values from analogPin

analogWrite(ledPin, val / 4);   // analogRead: values from 0 to1023,

                                //analogWrite: values from  0 to 255

}


int ledPin = 9; // LED conectado al pin digital 9int analogPin = 3; // Potenciómetro conectado al pin 3 int val = 0; // Variable para almacenar el valor leído void setup () {pinMode (ledPin, OUTPUT); // establece el pin como salida.} Void loop () {val = analogRead (analogPin); // Lee el valor del pin analogWrite (ledPin, val / 4); // analogRead: valores de 0 a 1023, analogWrite: valores de 0 a 255}


Todo es casi tan fácil en el lenguaje de programación Python de la Raspberry Pi, al menos si usa el módulo gpiozero. Esto se mostrará en una publicación de blog posterior.


Espero haber despertado tu curiosidad y nos sigas en las próximas semanas, cuando el equipo blogger muestre diferentes enfoques en el control y regulación de los coches robot.



3 comentarios

Guido Jensen

Guido Jensen

Cooles Project, werds jetzt doch mal probieren.

UND…ist das DER Walter Goegebeur :-)) ?

Guido

Volkert Braren

Volkert Braren

Vernünftig funktionierende Stützrollen hab ich noch nicht gefunden. An Teppichen und kleinen Stufen bleiben die gern hängen. Stattdessen setze ich ein Servo mit kleiner Möbelrolle ein. Steuerung mit der Motorsteuerung synchronisiert.
Geradeauslauf verbessern mit Tachorädern an den Motorachsen.
Grüße, Volkert

Walter Goegebeur

Walter Goegebeur

Darauf freue ich mich sehr. Es ist super das Sie sich um aktuelle Themen kümmern und uns mit Denkanstöße fördern und das für günstige Preise. Vielen Dank.

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas