miércoles, 25 de noviembre de 2015

Robot equilibrista con arduino, imu, pid, filtro kalman, bluetooth y rf.

El proyecto consiste en la fabricacion de un robot de dos ruedas que consiga mantener el equilibrio por si mismo con ayuda de un acelerometro y un giroscopio, ademas de un filtrado digital de la señal y un control PID y que pueda ser controlado por bluetooth desde el smartphone.











Gantproyect del tiempo estimado para cada una de las partes y tareas de este proyecto:





Los motores utilizados para este proyecto seran dos servos que habra que modificar para conseguir que puedan girar 360º.
En internet hay gran cantidad de tutoriales que enseñan como se realiza la modificacion, como por ejemplo este:  enlace o este otro enlace.

Fotos del proceso:











Para controlar los motores utilizare un puente en H.  El puente se basara en un integrado L298 que soporta 2 amperios de trabajo continuo y picos de hasta 3, y una tension de hasta 46 voltios.











Para realizar las primeras pruebas de estabilidad he construido un prototipo de chasis muy basico para probar los motores, ruedas, etc.  Proximamente el chasis ira evolucionando ya que esto es solo una pequeña prueba.











Para la parte de programacion lo primero que hare es implementar un filtrado digital de la señal del acelerometro y el giroscopio.     El sensor que utilizare es el GY-521, basado en el chip MPU-6050 que incluye acelerometro y giroscopio en el mismo integrado.





El filtrado digital consistira en un filtro de Kalman que hara mas estables las medidas y evitara medidas erroneas puntuales. El filtro de Kalman trabaja en dos etapas, en la primera realiza una estimación y en la segunda etapa corrige el error. En este caso para corregir la deriva del giróscopio se utiliza el acelerómetro o a la inversa.

 Aqui se puede ver una grafica hecha en procesing que muestra los ejes del acelerometro, del giroscopio y la salida del filtro de kalman con las 2 medidas ya combinadas en una que da un eje x y un eje y.


El codigo para implementar el filtro lo podeis encontrar aqui.



Ademas del filtro de Kalman tambien sera necesario implementar un control PID para el control de los motores.
Un PID es un mecanismo de control por realimentación que calcula la desviación o error entre un valor medido y el valor que se quiere obtener, para aplicar una acción correctora que ajuste el proceso. El algoritmo de calculo del control PID se da en tres parámetros distintos: el proporcional, el integral, y el derivativo.
La libreria PID para arduino que he utilizado se puede descargar de aqui.





Tras un rato de pruebas y otro buen rato de lucha con el pid probando diferentes valores de kp, ki y kd el robot ya se mantiene de pie aunque no es muy estable aun.






La estructura final ha sufrido varios cambios y ha quedado asi:






Actualmente es bastante estable como se puede ver en los siguientes videos:










El siguiente paso es intentar controlar la direccion y el giro mediante un modulo bluetooth y una aplicacion en android.





Tambien tengo la intencion de controlar el robot desde procesing con un modulo rf a la vez que se reciben los datos del acelerometro y el giroscopio y se representan en una grafica.






Despues de la implementacion del modulo bluetooth y de un poco mas de programacion el robot ya se puede controlar desde el telefono.





Despues de todo esto aun me sobro un poco de tiempo antes de la fecha de entrega del proyecto asique se me ocurrio ponerle 2 servos, uno a cada lado del robot y acoplarles un trozo del mismo material que la base a modo de "brazos", con la idea de poder hacer que se levantase solo si se cae.
El resultado es este:



Tras esto doy por finalizado el proyecto, yo diria que con bastante exito, al menos mas del que yo mismo esperaba.

viernes, 20 de noviembre de 2015

CONTROL DE MOTOR CON TRANSISTOR

En esta ocasión contralamos el motor mediante un transistor (BC547) que actúa sobre un relé este , relé pone en marcha o apaga el motor.



sábado, 14 de noviembre de 2015

Recuperación de datos de una Tablet con Android. ADB - Android Debug Bridge

En esta entrada vamos a comentar el proceso que hemos seguido para intentar obtener los archivos de usuario en una tablet con Android que no termina de arrancar. Para ello se ha utilizado el ADB (Android Debug Bridge). Observa el video.

viernes, 6 de noviembre de 2015

Termómetro Digital - Arduino.





Esta compuesto por:

1- TL084.
2- NTC 10K.
3- Resistencias 10k (5 unidades).
4- Resistencia 8K2
5- Resistencia 33k
6- Multivuelta 10k.




Su funcionamiento se basa en el cambio de resistencia de la NTC dependiendo de su temperatura, lo que hace que la tensión cambien en una rama del puente de Winston, gracias al operacional de instrumentación lo que hacemos es comparar las tensiones en ambas ramas del puente de Winston, previamente debemos calcular las resistencias de este para que cuando lleguemos a 0º no nos de una medida negativa (si da alguna medida negativa no funcionaria correctamente). De esta manera si alimentamos el puente de Winston con 5v, después del operacional deberíamos tener un voltaje que varia entre los 0v - 2.5v debido a que en una rama del puente de Winston disponemos de un divisor de tensión y le restaríamos la tensión de la rama de la NTC que no debe de bajar de los 2.5v (esto lo conseguimos calculando la R que acompaña a la NTC).
Y ya solo nos quedaría leer con Arduino el rango de tensión (0v-2,5v) que obtenemos del operacional y interpretarlo.


Esquema del Circuito




Patillaje del TL084