Tabla de contenido:

Robot de equilibrio automático de dos ruedas: 7 pasos
Robot de equilibrio automático de dos ruedas: 7 pasos

Video: Robot de equilibrio automático de dos ruedas: 7 pasos

Video: Robot de equilibrio automático de dos ruedas: 7 pasos
Video: Como Hacer un Robot Casero a Control Remoto (Muy fácil de hacer ) 2024, Noviembre
Anonim
Robot de equilibrio automático de dos ruedas
Robot de equilibrio automático de dos ruedas

Este instructivo pasará por el proceso de diseño y construcción de un robot autoequilibrado. Como nota, solo quiero decir que los robots de autoequilibrio no son un concepto nuevo y han sido construidos y documentados por otros. Quiero aprovechar esta oportunidad para compartir con ustedes mi interpretación de este robot.

¿Qué es un robot autoequilibrado?

Un robot de autoequilibrio es un sistema que utiliza datos de medición inercial, recopilados de un sensor a bordo, para ajustar continuamente su posición para mantenerse erguido.

¿Como funciona?

Una analogía simple a considerar es un péndulo invertido. Donde el centro de masa está por encima del punto de pivote. Sin embargo, en nuestro caso, estamos restringiendo el péndulo a 1 grado de libertad al tener un eje de rotación, en nuestro caso el eje de rotación de las dos ruedas. Dado que cualquier tipo de perturbación provocará la caída del robot, necesitamos un método para mantener activamente el equilibrio del robot. Aquí es donde entra en juego nuestro algoritmo de circuito cerrado (controlador PID), sabiendo en qué dirección está cayendo nuestro robot podemos ajustar la dirección de rotación de nuestros motores para mantener el sistema equilibrado.

¿Cómo funciona el algoritmo de circuito cerrado?

El principio básico para mantener el robot equilibrado es que si el robot está cayendo hacia adelante, lo compensará moviendo la parte inferior del robot hacia adelante para agarrarse a sí mismo y, por lo tanto, mantenerse vertical. Del mismo modo, si el robot está cayendo hacia atrás, lo compensará moviendo la parte inferior del robot hacia atrás para agarrarse a sí mismo.

Entonces, debemos hacer dos cosas aquí, primero, debemos calcular el ángulo de inclinación (Roll) que está experimentando el robot y, como resultado, debemos controlar la dirección de rotación de los motores.

¿Cómo mediremos el ángulo de inclinación?

Para medir el ángulo de inclinación usaremos una unidad de medida inercial. Estos módulos incorporan un acelerómetro y un giroscopio.

  • El acelerómetro es un dispositivo electromagnético que mide la aceleración adecuada, esta es la aceleración de un cuerpo en un marco de reposo instantáneo.
  • Un giroscopio es un dispositivo electromecánico que mide la velocidad angular y se utiliza para determinar la orientación del dispositivo.

Sin embargo, el problema con el uso de tales sensores es que:

  • El acelerómetro es muy ruidoso pero es constante con el tiempo, el ángulo varía con movimientos horizontales repentinos.
  • El valor del giroscopio, por otro lado, variará con el tiempo, pero inicialmente es bastante preciso.

Para este instructable, no voy a implementar un filtro, sino que usaré el procesamiento de movimiento digital (DMP) integrado. Otros han utilizado un filtro complementario para obtener una señal suave, puedes elegir el método que más te guste. a medida que el robot se equilibra con cualquiera de las implementaciones.

Suministros

Partes:

  1. Arduino Pro Mini 3.3V 8 con un ATMEGA328 de 8 Mhz
  2. FT232RL 3.3V 5.5V FTDI USB a módulo adaptador de serie TTL
  3. Módulo GY-521 con MPU-6050
  4. Un par de micro motorreductores N20 6V - 300rpm
  5. Controlador de motor L298N
  6. Convertidor reductor de CC a CC LM2596S
  7. Batería (paquete de batería recargable de iones de litio de 9,7 V)
  8. Correa de batería
  9. Dos placas de circuito de PCB de creación de prototipos
  10. Cables de puente de clavijas de cabezal macho y hembra

Instrumentos:

  1. Soldador y soldadura
  2. Separador de espaciador hexagonal de nailon
  3. Juego de destornilladores de precisión
  4. impresora 3d

Paso 1: construcción

Como tenía acceso a una impresora 3D, decidí imprimir en 3D el chasis y usar separadores para conectar todo.

El robot consta de 4 capas

  1. La capa inferior conecta los motores y tiene puntos de montaje para el módulo de controlador de motor L298N
  2. La siguiente capa alberga la placa prototipo con el Arduino pro mini y los encabezados soldados a ella.
  3. La tercera capa monta la IMU
  4. La capa superior, a la que llamo "capa protectora", contiene la batería, el convertidor de dinero y un interruptor monetario.

Mi principio de diseño principal era mantener todo modular. La razón de esto fue que si algo salió mal con uno de los componentes, podría reemplazarlo fácilmente o si necesitaba un componente para otro proyecto, puedo tomarlo fácilmente sin preocuparme por no poder usar el sistema nuevamente.

Paso 2: cableado

Alambrado
Alambrado

Soldé algunas pintas de encabezado hembra a una placa de perforación para que coincida con los pines de encabezado mini Arduino pro. Después de esto, soldé los pines del cabezal macho a la placa para permitir el acceso a la E / S. El resto de los componentes se montaron en el marco impreso en 3D y se conectaron mediante cables de puente.

Paso 3: Teoría de control

Ahora pasamos al núcleo del proyecto. Para mantener el robot equilibrado, necesitamos generar una señal de control adecuada para impulsar los motores en la dirección correcta y a la velocidad correcta para mantener el robot equilibrado y estable. Para hacer esto, usaremos un algoritmo de bucle de control conocido como controlador PID. Como sugiere el acrónimo, hay tres términos para este controlador, estos son los términos proporcional, integral y derivado. Cada uno de los cuales va acompañado de coeficientes que determinan su influencia en el sistema. A menudo, la parte de la implementación del controlador que consume más tiempo es el ajuste de las ganancias de cada sistema único para obtener la respuesta más óptima.

  • El término proporcional multiplica directamente el error para dar una salida, por lo que cuanto mayor es el error, mayor es la respuesta.
  • El término integral genera una respuesta basada en la acumulación del error para reducir el error de estado estable. Cuanto más tiempo esté desequilibrado el sistema, más rápido responderán los motores
  • El término derivado es la derivada del error que se utiliza para predecir la respuesta futura y, al hacerlo, reduce la oscilación debida a sobrepasar el estado estable.

El principio básico de este algoritmo es calcular continuamente el ángulo de inclinación que es la diferencia entre la posición deseada y la posición actual, esto se conoce como el error. Luego usa estos valores de error y calcula la suma de las respuestas proporcionales, integrales y derivadas para obtener una salida, que son las señales de control que se envían a los motores. Como resultado, si el error es grande, la señal de control enviada a los motores hará girar los motores a alta velocidad para llegar a un estado equilibrado. Asimismo, si el error es pequeño, la señal de control hará girar los motores a baja velocidad para mantener el robot equilibrado.

Paso 4: uso de MPU 6050

Biblioteca MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Calibración de compensaciones No todos los sensores son réplicas exactas entre sí. Como resultado, si prueba dos MPU 6050, puede obtener valores diferentes para el acelerómetro y el giroscopio cuando se colocan en la misma superficie. Para superar este desplazamiento de ángulo constante, debemos celebrar cada sensor que utilizamos. Ejecutando este script:

www.i2cdevlib.com/forums/topic/96-arduino-…

escrito por Luis Rodenas, obtendremos compensaciones. Los errores de compensación se pueden eliminar definiendo los valores de compensación en la rutina setup ().

Uso del procesador de movimiento digital

El MPU6050 contiene un DMP (Procesador de movimiento digital).

¿Qué es un DMP? Puede pensar en el DMP como un microcontrolador integrado que procesa el movimiento complejo del giroscopio de 3 ejes y el acelerómetro de 3 ejes a bordo del mpu6050, utilizando sus propios algoritmos de fusión de movimiento. Descargando el procesamiento que de otro modo sería realizado por Arduino

¿Cómo usarlo? Para averiguar cómo usar el DMP, consulte el boceto de ejemplo MPU6050_DMP6 que viene con la biblioteca MPU6050 (en el IDE de Arduino: Archivo-> Ejemplo-> MPU6050-> MPU6050_DMP6). Esta también es una buena oportunidad para verificar que su sensor realmente funcione y que el cableado sea correcto

Paso 5: codificación

Usé el Arduino IDE y una interfaz FTDI para programar el Arduino pro mini.

Usando el boceto de ejemplo (MPU6050_DMP6) que viene con la biblioteca MPU6050 como mi código base, agregué funciones PID () y MotorDriver ().

Agregar la biblioteca

  • MPU6050: Para usar el sensor MPU6050, necesitaremos descargar la biblioteca para desarrolladores I2C de Jeff Rowberg y agregarla a la carpeta "bibliotecas" de Arduino que se encuentra en los archivos del programa en su computadora.
  • Wire: También necesitamos la biblioteca Wire para permitirnos comunicarnos con dispositivos I2C.

Pseudocódigo

Incluir bibliotecas:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Inicializar variables, constantes y objetos

Configuración ()

  • Establecer modo pin para controlar motores
  • Establecer el modo pin para el LED de estado
  • Inicialice el MPU6050 y configure los valores de compensación

PID ()

Calcular el valor PID

MotorDriver (respuesta PID)

Utilice el valor PID para controlar la velocidad y la dirección de los motores

Círculo ()

  • Obtener datos de DMP
  • Llamar a las funciones PID () a MotorDriver ()

Paso 6: Procedimiento de ajuste de PID

Esta es la parte más tediosa del proyecto y requiere un poco de paciencia a menos que tenga mucha suerte. Estos son los pasos:

  1. Establezca el término I y D en 0
  2. Sosteniendo el robot, ajuste P para que el robot comience a oscilar alrededor de la posición de equilibrio.
  3. Con P establecido, aumente I para que el robot acelere más rápido cuando está fuera de balance. Con P y yo sintonizados correctamente, el robot debería poder autoequilibrarse durante al menos unos segundos, con alguna oscilación
  4. Finalmente, aumente D reduzca la oscilación

Si el primer intento no da resultados satisfactorios, repita los pasos con un valor diferente de P. También tenga en cuenta que puede ajustar los valores PID después para aumentar aún más el rendimiento. Los valores aquí dependen del hardware, no se sorprenda si obtiene valores PID muy grandes o muy pequeños.

Paso 7: Conclusión

Los micromotores de engranajes utilizados eran muy lentos para reaccionar ante grandes perturbaciones y, dado que el sistema era demasiado ligero, no había suficiente inercia para obtener el efecto de péndulo deseado, por lo que si el robot se inclinaba hacia adelante, simplemente se inclinaba en ángulo y corría hacia adelante. Finalmente, las ruedas impresas en 3D son una mala elección ya que siguen resbalando.

Sugerencias para mejorar:

  • Motores más rápidos con un par más alto, es decir, para motores de CC, mayor es la clasificación de voltaje, el par más alto
  • obtenga una batería más pesada o simplemente mueva la masa un poco más arriba
  • Reemplace las ruedas impresas en 3D con ruedas de goma para obtener más tracción

Recomendado: