SEyTR_GII_Mostoles_2016-17,Grupo 11, Robot Balancín

El siguiente enlace contiene todo el material pedido: memoria, código fuente, vídeo, etc.

Robot
Balancín
Sistemas Empotrados y de
Tiempo Real


Sergio Martín Vaquero
Javier Prieto Pereira
Bairon Steven García Sarria
Grado Ingeniería Informática (Móstoles)
Proyecto.                                                                              (Página 2)
Componentes.                                                                     (Página 2)
Presupuesto.                                                                        (Página 4)
Conexiones.                                                                         (Página 5)
Montaje.                                                                               (Página 6)
Código.                                                                                 (Página 8)
Problemas y mejoras.                                                (Página 9)
Proyecto.
La idea principal era construir un robot que
apoyado sobre sus dos ruedas mantuviese el equilibrio por medio de Arduino así
como poder ser dirigido a través de un dispositivo móvil mediante una conexión
Bluetooth.
Componentes.
     
1xPlaca Arduino
     
1xMotor Shield
     
2xMotores
     
1xGiroscopio
     
1xMódulo Bluetooth
     
1xPlaca Protoboard
     
1xPila 9V
     
1xFuente de 
alimentación 5V
     
2xRuedas
     
Cables, resistencias, madera,…
                                                
Presupuesto.
Producto
Modelo
Precio
Placa Protoboard
Placa de  Arduino
Módulo Arduino Uno Rev3
Motor Shield
Motor Shield Rev3
28.25
Motores
2xMotor con reductora 6V-100:1
18.36
Giroscopio
Módulo MPU6050
5.00
Módulo Bluetooth
Módulo HC-05
8.70
Pila
3.00
Ruedas
Total
63.31
A la suma total del presupuesto añadiríamos también los 2
motores paso a paso que pedimos por internet pero que no nos han llegado
todavía y el acelerómetro que compramos en sustitución del giroscopio, que
tampoco nos ha llegado.
Montaje.
Primero hay que
conectar el Motor Shield sobre la placa de Arduino. Esta conexión es muy
sencilla dado a los pines que incluye el Motor Shield. Al unir el Motor Shield
con Arduino se realizan las siguientes conexiones:
Motor Shield GND > Arduino GND
Motor Shield VIn > Arduino VIn
         DIR A
> Ardunio Dig. 12
DIR B
> Ardunio Dig. 13
PWN A
> Arduino Dig. 3
PWN B
> Arduino Dig. 11
BRAKE A
> Arduino Dig. 9
            BRAKE A
> Arduino Dig. 8
A continuación se
llevan a cabo las importantes conexiones por cable entre la placa Arduino y el
MPU6050, que se encuentra sobre la placa Protoboard. Las conexiones son las
siguientes:
            MPU6050 GND > Arduino GND
MPU6050
VIn > Arduino 5V+
MPU6050
SCL > Arduino Analog. A5
MPU6050
SDA > Arduino Analog. A4
En la imagen
superior está conectado el acelerómetro MMA7455 ya que es el componente que
teníamos, las conexiones son las mismas que las del MPU6050
Posteriormente
habría que realizar la conexión entre el Motor Shield a los motores para poder
controlarlos. Para ello hay que unir el polo negativo y positivo de cada motor
con los dos pares de polos positivos y negativos de nuestro Motor Shield.
Finalmente
conectamos los motores a las ruedas y colocamos las placas y el resto de
material dentro del cuerpo de madera del robot, a excepción de las ruedas.


A continuación se
encuentra el enlace al vídeo de prueba del proyecto:
Código.
      Obtención del ángulo del robot respecto del
suelo. Esto se conseguirá a través de la mediciones realizadas por la
MPU6050  tanto del acelerómetro y del
giroscopio (ambos integrados en la IMU). La manera de usar  ambas mediciones será fusionándolas mediante
el filtro complementario implementado en la IMU
      Filtro Khalman: El filtro Khalman sería otra
opción de fusionar ambas lecturas. Este filtro es uno de los más utilizados
      Control PID. El control PID en realidad son tres
controladores que se encargarán de calcular 
la velocidad a la que deben moverse 
los motores para corregir la posición del ángulo. El proporcional al
error, el integral del error que es una suma 
de los errores y el control derivativo del error con respecto al tiempo.
Cada uno de estos controladores posee una constante que nosotros debemos
introducir y la única manera será  a
través de prueba y error. Se comenzará con la constante del proporcional y una
vez que el robot empiece a oscilar se seguirá con la del integras a esta
estabilizarlo y para finalizar con la constante 
del derivativo para estabilizarlo del 
todo.
      Interrupciones. Por último hemos escogido las
interrupciones de Arduino para conseguir 
modificar la velocidad de los motores. Para ello hacemos uso de dos de
los tres timers que tiene Arduino serían el 1y el 2 ya que el 0 implementa
funciones que utilizamos como delay().
      Resto de funciones. Por último el  resto de funciones corresponden a la parte
bluetooth de nuestro robot, es decir, para poder moverse según las
instrucciones recibidas a través de nuestro dispositivo móvil. También tenemos
otro control PID que utilizaremos para controlar al robot cuando esté en
movimiento que funcionará en cascada con el otro controlador PID.
Problemas y mejoras.
      
Problemas: 
1-Chasis.
Hemos encontrado problemas para construir el chasis ya que los dos primeros modelos
no fueron  funcionales.
2-Motores y
Potencia. El principal problema con los motores es que no nos han llegado los
motores que pedimos y tuvimos que suplirlos con otros dos que tenían demasiada
potencia.
3-Giroscopio.
Al igual que con los motores no nos llegó el MPU6050 y lo intentamos suplir con
un acelerómetro MMA7455 pero sus lecturas no eran muy precisas con lo cual
nuestro robot no era  funcional.
                4-Librerías
      
Mejoras:
1 -En 
caso de caerse conseguir que el robot se levantase por ejemplo con un
brazo que lo impulsase hacia arriba
2-Que funcione con batería. En nuestro
caso alimentamos nuestro Arduino a través de una toma de corriente por lo cual
no es un robot ideal para ser teledirigido con lo cual su solución sería tan
simple como alimentar la placa de Arduino con una batería.

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *