¿Cuál es la forma más sencilla de hacer un bot de equilibrio usando MPU-6050 y Arduino?

Esta respuesta supone que sabes cómo codificar en Arduino y requiere un conocimiento previo de muchos temas. Hacer un bot de equilibrio automático tiene muchos conceptos involucrados y tendrás que leer mucho para comprender completamente lo que estás haciendo. De lo contrario, siempre puede copiar el código de pate de otra persona y seguir un Instructable: p. Mi sugerencia es que use esta respuesta como referencia sobre lo que debe leer y aprender, para hacer un bot de autoequilibrio.

Un bot de equilibrio automático requiere dos tipos de datos de entrada:
1. El ángulo relativo al suelo.
2. La tasa de cambio de ese ángulo.

El ángulo se mide con la ayuda de un acelerómetro y la velocidad se mide con un giroscopio. Invisense ha creado un módulo compacto que tiene ambos en un solo chip llamado MPU-6050. También tiene un procesador DMP integrado (procesador de movimiento digital): evite usar esto.

El módulo utiliza la comunicación I2C, también conocida como Comunicación Integrada Inter. El arduino tiene una biblioteca llamada biblioteca de cables que le permite usar el protocolo de comunicación I2C de una manera muy simple. Puede consultar la hoja de datos MPU-6050, el sitio web de Arduino o Github para encontrar una biblioteca que lo ayude a usar el MPU-6050 con el arduino.

Una vez que haya conectado correctamente la MPU con ardunino y haya recibido los valores brutos del aclerómetro y el giroscopio, necesitamos convertir esos valores a un formato utilizable.

Digamos que ha colocado su MPU de manera que el suelo y el eje X sean paralelos. a medida que el bot se inclina hacia un lado, obtendrá un cambio en la lectura de la mpu. Suponiendo que cuando está inclinado 90 grados hacia adelante, obtienes un valor analógico de 0 y cuando está inclinado 90 grados hacia atrás obtienes un valor analógico de 1024 (ya que el arduino tiene un convertidor ADC de 10 BITS. Estos son los valores ideales si tu MPU da valores de 0-5V, consulte la hoja de datos para encontrar los valores exactos de voltaje que le dará la MPU). Podemos asignar estos valores de 0-1024 a 0-180 grados usando la función de mapa en Arduino.

Consejo útil: Muchas veces, diferentes controladores tienen algunos voltajes de referencia entre los que puede seleccionar. Por ejemplo, el Atmega 328 (MCU usado en Arduino UNO) tiene una referencia interna de 2.56V que puede usarse para una mejor resolución durante la conversión ADC.

Ahora tenemos nuestros valores de ángulo de 0-180 grados y ahora podemos medir en qué ángulo nuestro bot se encuentra normalmente en el suelo para que podamos hacer los cambios necesarios.

Seguimos un procedimiento similar para el giroscopio y asignamos los valores de ADC a la tasa de cambio de ángulo. Por lo tanto, tenemos las dos cosas necesarias para hacer esto.

Ahora hagamos un algoritmo muy simple para un bot de auto equilibrio.

1. Verifique la inclinación.

2. Si el bot se inclina hacia adelante, muévase hacia atrás.

3. Si el bot se inclina hacia atrás, avance.

4. Repita.

El algoritmo anterior es una versión extremadamente simple del proceso real.

El algoritmo anterior dará como resultado un exceso (moviremos el bot demasiado adelante o demasiado atrás). Para evitar esto, podemos usar otro algoritmo o una técnica llamada PID (Derivado integral proporcional). Este es un tema extremadamente vasto y no puedo cubrirlo aquí. Puede hacer una búsqueda rápida en Google o recoger un libro para entender esto.

En PID, suponiendo 90 grados como nuestra posición media, obtendremos una variable llamada Error. Si digamos que nuestro bot se inclina hacia adelante y está a 70 grados del suelo, nuestro error se convierte en -20 grados. Ahora debemos tomar medidas para reducir este error a 0 sin excedernos. Este problema se trata con PID.

Además, algunas de las cosas que puede aprender que pueden ser útiles son:

1. Comunicación I2C y cómo implementarla en Arduino.

2. PWM (modulación de ancho de pulso), para controlar motores de CC y su implementación en arduino.

3. IC del controlador del motor L293D, para controlar dos motores de CC bidireccionalmente.

4. El diseño mecánico para mantener el centro de gravedad lo más centralizado y bajo posible.

5. Cálculo de Kp, Ki, Kd (Coeff para PID) usando la sintonización manual y MATLAB.

6. ADC, y cómo usarlo con Arduino.

7. Kalman Filters (Opcional), amplio tema pero extremadamente útil.

Los componentes que necesita: –

1. Arduino UNO
2. Ruedas, chasis, tornillos, tuercas y pernos, cables de puente.
3. 2 motores DC, 12 V 150-200 RPM
4. L293D placa de controlador de motor / IC
5. Batería (12V)
6. IMU MPU-6050
7. Laptop con Arduino IDE.

Esta es toda la información que podría proporcionar en una respuesta concisa y breve. Espero que esto ayude. Realice búsquedas rápidas en Google sobre cómo hacer un bot de autoequilibrio y lea los libros relacionados con los conceptos involucrados. Definitivamente podrás completar una o dos semanas con la implementación de PID. Use esta respuesta como referencia e intente comprender lo que he explicado. Puede parecer complicado o desconocido, pero una vez que lea un poco, esto comenzará a tener sentido.

La mejor de las suertes, hágame saber cómo va.