Mecanum Robot

El robot Mecanum es un robot que se caracteriza por tener ruedas omnidireccionales del modelo Mecanum, este tipo de ruedas presentan unos cilindros o ruedas pasivas por toda la parte curva de su superficie con una orientación de 45º. Esta estructura les permite que, las cuatro ruedas en conjunto, muevan al robot en todas las direcciones, incluso diagonalmente con cualquier ángulo, además de poder girar:

Robot con Mecanum Wheel controlado por Arduino

En este documento se explica de una manera más técnica el funcionamiento de las ruedas: https://www.fing.edu.uy/inco/grupos/mina/pGrado/easyrobots/doc/SOA.pdf

En este vídeo hacen una demostración del movimiento de las ruedas y de el robot:

En este vídeo se explica el movimiento del robot partiendo del movimiento individual de cada rueda, también expone algunas fórmulas matemáticas que no creo que serán necesarias:

https://www.youtube.com/watch?v=Xrc0l4TDnyw&t=470s
Estas son las ruedas elegidas: https://es.aliexpress.com/item/4001084241161.html

Los motores utilizados son 4x12V DC de 330 rpm con encoder magnético por efecto Hall. Para el robot esos son los motores elegidos: https://es.aliexpress.com/item/4001084241161.html

CONTROLADOR DE MOTORES

El controlador de motores utilizado en este proyecto es el L298N. Debido al hecho de que cada uno de los movimientos del robot requiere una combinación específica de velocidades y direcciones es necesario utilizar un controlador por motor, es decir, utilizaremos cuatro L298N, es decir, como se ve en el esquema del apartado de ruedas omnidireccionales, en la mayoría de movimientos que puede realizar el robot: adelante, atrás, derecha, izquierda y diagonales. Los motores se activan formando dos parejas, el de arriba a la izquierda con el de abajo a la derecha y el de arriba a la derecha con el de abajo a la izquierda. Ya que todos esos tipos de desplazamientos requieren el movimiento coordinado de las dos parejas de motores. Si solo se fuesen a dar esos dos tipos de movimientos no tendría sentido el uso de más de dos controladores, debido al hecho de que, cuando el motor de arriba a la izquierda se moviese hacia adelante el de abajo a la derecha también lo haría, sin embargo, el robot también debería ser capaz de realizar movimientos de rotación para los cuales se necesita el movimiento coordinado de dos parejas, pero no las mismas de antes, sino la pareja formada por los dos motores de la izquierda y la pareja formada por los dos motores de la derecha. El movimiento de rotación, por ejemplo hacia la derecha, requiere que las dos ruedas de la izquierda giren hacia adelante y que las dos de la derecha, o bien se paren (si se quiere una rotación que tome como eje la rueda de arriba a la derecha), o bien que se muevan hacia atrás (si se quiere una rotación que tome como eje el centro del robot).

En esta página explican ampliamente el funcionamiento de los controladores de motor:

https://bricolabs.cc/wiki/guias/control_de_motores

Dentro de la página anterior explican lo que es el PWM (Pulse-Width Modulation o Mosapoconcho_fritzing_800.jpg

Enlace al blog de Luis Llamas sobre el controlador L298N, además de ejemplos de código:

https://www.luisllamas.es/arduino-motor-corriente-continua-l298n/dulación por ancho de pulso en español), pero esa información la completan con esta otra página:

https://bricolabs.cc/wiki/guias/control_de_motores

MICROCONTROLADOR

El arduino es el microcontrolador del robot, debido a la necesidad de un gran número de pines (ya que tanto los cuatro controladores de motor como los demás sensores requieren varios pines), utilizaremos el modelo de Arduino Mega

https://es.aliexpress.com/item/4000026702514.html?spm=a2g0s.9042311.0.0.671f63c0tRAW3V

Arduino Pinout (tanto arduino nano como arduino mega):

Actualmente, seguimos trabajando en el desarrollo del robot mecanum, hasta ahora hemos logrado que se mueva, sin embargo necesitamos implementar los encoder magnéticos, después intentaremos controlar su movimiento con un IMU de 9 grados de libertad, a continuación pretendemos incluir un sensor ultrasónico. Finalmente, si tenemos éxito con las anteriores fases, probaremos a actualizar el código del robot mediante OTA (Over The Air), es decir, con Bluetooth o Wifi. Para terminar, el objetivo final es poder hacer una foto y con el móvil trazar la trayectoria, enviarlo al robot y que el realice el recorrido deseado.

RoboToad

RoboToad es uno de nuestros robots, lo construimos para poder utilizarlo en las distintas pruebas de RoboReto y como prueba para algunas funciones como el control por encoder.

Está compuesto por las siguientes partes: Chasis, dos motores con encoder magnético, dos llantas, dos ruedas, una rueda loca, arduino, placa protoboard, un controlador de motor, una batería.

Primero preparamos el chasis y las llantas. El chasis lo hicimos con una plancha de madera agujereada con la CNC para poder sujetar los distintos componentes, las llantas las fabricamos con la impresora 3D.

Probamos el funcionamiento de un solo motor con el controlador y el arduino.

Después, con un torno apretamos las llantas en los ejes de los motores.

A continuación colocamos las ruedas en las llantas y conectamos todos los motores con el controlador, el arduino y la batería.

Una vez comprobado el funcionamiento de los motores, sujetamos todos los componentes al chasis.

Finalmente este es RoboToad montado y en funcionamiento:

Encoder Magnético

Definición, ¿Qué es?

El sensor cuentavueltas o encoder rotativo magnético es un dispositivo que nos proporciona la posición y la velocidad angular de una acción, es decir, cuántos grados hemos girado y a qué velocidad lo hemos hecho a través del envió de pulsos a un Arduino, a partir de la detección de campos magnéticos.

Funcionamiento

El funcionamiento del encoder está basado en el efecto Hall, descubierto por Edwin Hall en 1849, este efecto consiste en que, al circular una corriente eléctrica a través de un semiconductor, en presencia de un campo magnético, los electrones se desvían por la acción de este campo magnético dando lugar una tensión perpendicular a la corriente y al campo magnético. Este campo es el que detecta nuestro sensor, como el campo magnético se produce una vez por cada vuelta, podemos contar el número de veces que el sensor detecta el campo magnético, que será igual al número de vueltas.

Además podemos saber si el giro es horario o antihorario si nuestro encoder es de cuadratura, esto significa que mide el campo magnético por dos sensores, a partir del desfase que tienen entre sí podemos averiguar la dirección de giro.

Uno de los giros (horario o antihorario, para averiguar cuál de ellos es cuestión de probarlo) producirá un flanco igual siempre, es decir, ambos sensores detectarán lo mismo, o los dos detectan campo magnético o los dos no lo detectan.

El otro giro producirá un flanco distinto, es decir, cuando un sensor detecta el campo el otro no y viceversa.

Analógico y digital

Existen sensores magnéticos analógicos y digitales.

Analógico:
Como en otros dispositivos, el encoder analógico envía pulsos proporcionales a la intensidad del campo que detecta, es decir, da valores continuos.

Digital:
El encoder digital puede enviar o no un pulso dependiendo de si detecta o no el campo magnético, en nuestro caso (contar vueltas), lo ideal es un encoder digital.

Esquema eléctrico y Conexión con Arduino

Ejemplo de Código

XXXXXXXX No se insertar el texto con formato de código.

Precio y Adquisición

El sensor Hall por sí solo se puede encontrar fácilmente por 0,5 – 0,7 €.
El motor con el sensor Hall integrado lo podemos encontrar por 8,30 €.

Motor con encoder magnético integrado: https://banggood.app.link/4dUu6QxST4

Enlaces interesantes

Blog Luisllamas encoder rotativo: https://www.luisllamas.es/arduino-encoder-rotativo/
Blog Luisllamas encoder magnético: https://www.luisllamas.es/detectar-campos-magneticos-con-arduino-y-sensor-hall-a3144/

Adquisición de motor con encoder magnético: https://banggood.app.link/4dUu6QxST4