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.
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.
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
1xPlaca Arduino
•
1xMotor Shield
1xMotor Shield
•
2xMotores
2xMotores
•
1xGiroscopio
1xGiroscopio
•
1xMódulo Bluetooth
1xMódulo Bluetooth
•
1xPlaca Protoboard
1xPlaca Protoboard
•
1xPila 9V
1xPila 9V
•
1xFuente de
alimentación 5V
1xFuente de
alimentación 5V
•
2xRuedas
2xRuedas
•
Cables, resistencias, madera,…
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.
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:
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
> Ardunio Dig. 12
DIR B
> Ardunio Dig. 13
> Ardunio Dig. 13
PWN A
> Arduino Dig. 3
> Arduino Dig. 3
PWN B
> Arduino Dig. 11
> Arduino Dig. 11
BRAKE A
> Arduino Dig. 9
> Arduino Dig. 9
BRAKE A
> Arduino Dig. 8
> 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:
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+
VIn > Arduino 5V+
MPU6050
SCL > Arduino Analog. A5
SCL > Arduino Analog. A5
MPU6050
SDA > Arduino Analog. A4
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
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.
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.
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:
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
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
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.
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().
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.
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:
Problemas:
1-Chasis.
Hemos encontrado problemas para construir el chasis ya que los dos primeros modelos
no fueron funcionales.
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.
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.
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:
Mejoras:
1 -En
caso de caerse conseguir que el robot se levantase por ejemplo con un
brazo que lo impulsase hacia arriba
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.
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.