View
4.464
Download
0
Category
Preview:
Citation preview
DESAFIOSTEM E-HEALTH
FASE 3
MINIVOLTIOS
ROBÓTICA AL SERVICIO DE LAS PERSONAS
pág. 2
ÍNDICE
1. Objetivos
2. Organización del equipo y
distribución de tareas
3. Alternativas de construcción
4. Placa de control y entorno de
programación
5. Programación en Arduino
6. Circuitos
7. Programación en AppInventor
8. Definición final del proyecto
pág. 3
1. Objetivos
Programar un brazo robótico que permita beber a una persona con
discapacidad motora aprehensora. Tanto el robot, como la bebida tendrán una
posición fija sobre la mesa de trabajo y el recorrido del brazo estará
determinado, por tanto, se deberá realizar un ajuste por aprendizaje de los
movimientos del robot. El entorno del usuario será un dispositivo Android, móvil
o Tablet, que le permita solicitar la acción deseada. Asimismo, dispondrá de una
aplicación para el cuidador con las mismas opciones. En cualquier caso, la puesta
en marcha del sistema necesitará un paso previo de conexión vía bluetooh.
Posteriores ampliaciones permitirán añadir al proyecto diferentes sensores que
facilitarán la automatización.
1. Sensor de proximidad (ultrasonidos): que nos permita localizar el
recipiente de la bebida.
2. Acelerómetro: que impedirá que el recipiente se incline derramando la
bebida.
3. Sensor de presión: para impedir que deformemos el recipiente.
pág. 4
2. Organización del equipo y distribución de tareas
La complejidad del trabajo a realizar demanda que organicemos el trabajo en
subgrupos, de forma que todos avancemos de forma paralela y confluyamos al final en
la unión del proyecto. Hemos considerado que necesitaremos 3 equipos: montaje del
brazo robot, programación de Arduino y programación de AppInventor. Las tareas
encomendadas a cada uno, se detallan a continuación.
pág. 5
3.Alternativas de construcción
Hemos trabajado con dos opciones y utilizaremos uno de los brazos de robot de
los que disponemos en el aula, están accionados por pequeños motores de continua con
un par motor reducido
.
Nos hemos decidido por el robot ARM MR 999E con 5 grados de libertad, por ser
más robusto y permitirnos utilizar mayor espacio de trabajo y envases de bebida de
dimensiones más acordes con la realidad.
pág. 6
Diseño y construcción de la mesa de trabajo
Otra de las tareas a realizar es el diseño y adecuación de la mesa de trabajo, debe
estar adaptada a las necesidades del usuario y permitir el uso del brazo robótico de
forma sencilla. En nuestra visita al centro de Educación especial, observamos que la
forma de los tableros de las mesas adaptadas permitía acercarse a los elementos que se
encontraban sobre la mesa. Tomamos esta idea y nuestro prototipo tendrá las
siguientes medidas:
Las especificaciones del proyecto nos
indican que el robot debe mantenerse fijo en
posición inicial o de reposo, así deberemos
realizar el montaje del brazo sobre la mesa de
trabajo según indica la figura:
pág. 7
En la realidad el montaje queda de la siguiente forma:
La colocación del robot sobre el tablero de trabajo nos permitirá, realizar las
conexiones adecuadas, estudiar la posibilidad de colocar sensores y realizar las prácticas
de aprendizaje del robot.
pág. 8
4.Placa de control y entorno de programación
Hemos valorado diferentes opciones:
Nuestra primera opción será S4A, pero la limitación en cuanto a salidas, será un
factor importante a tener en cuenta en la elección. Deberemos valorar utilizar el IDE de
Arduino. Asimismo, es importante controlar el número de salidas digitales necesarias
para el control del proyecto.
Al utilizar un robot con 5 motores es insuficiente el número de salidas digitales
disponibles en un Arduino Uno, si además queremos controlar la velocidad de los
motores utilizamos además una salida adicional PWM, tenemos dos opciones utilizar
otra Arduino Uno o bien cambiar a Arduino Mega, nos hemos decidido por Arduino
Mega.
Placa Arduino Uno,
programación S4A
Placa Arduino Uno, entorno
IDE
Placa Arduino Mega
pág. 9
Otro factor a tener en cuenta es la
alimentación de los motores, utilizaremos
directamente un L293D y nos permitirá manejar de
forma adecuada las potencias necesarias para el
funcionamiento de los motores, controlar el sentido
de giro de dos motores por cada integrado, controlar
la velocidad por medio de las patillas 1 y 9 conectadas
a una salida digital PWM (en la que se escribe un valor
analógico) y alimentar los motores con una fuente
externa en la patilla 8 si es necesario. El control del sentido de giro lo determinan los
valores conectados a las patillas 2-7 y 10-15 según la siguiente tabla:
Aunque existe la posibilidad de utilizar una shield para el control de motores,
creemos más conveniente entender y utilizar directamente el driver.
pág. 10
5.Programación en Arduino. Método de aprendizaje
El proceso de programación con Arduino comienza desde cero, nunca
hemos trabajado con Arduino así que comenzamos por el principio, el proceso que
hemos utilizado ha sido el siguiente:
La complejidad de los programas ha ido en aumento, por tanto, organizaremos
las instrucciones en funciones que nos permitan, programas fáciles de leer e interpretar.
Comentaremos cada función del programa y lo diseñaremos de forma que facilite su
interpretación.
•Programación LED placa
•Puesta en marcha motor
PROGRAMACIÓN BÁSICA
•Control movimiento
•Control velocidad
PRUEBA MOTORES
•Secuencia de servicio
•Secuencia de posición inicial
PROGRAMACIÓN FUNCIONES
pág. 11
Valoramos como muy importante definir correctamente los pines de utilización
de los diferentes motores:
#define E1 5 // control de velocidad base morado
#define baseA 30 // control pin A para motor base blanco
#define baseB 31 // control pin B para motor base blanco
#define E2 8 // control de velocidad hombro morado
#define hombroA 40 // control pin A para motor hombro naranja
#define hombroB 41 // control pin B para motor hombro naranja
#define E3 6 // control de velocidad codo morado
#define codoA 22 // control pin A para motor codo negro
#define codoB 23 // control pin B para motor codo negro
#define E4 7 // control de velocidad munyeca morado
#define munyecaA 52 // control pin A para motor munyeca marrón
#define munyecaB 53 // control pin B para motor munyeca marrón
#define E5 11 // control de velocidad pinza morado
#define pinzaA 44 // control pin A para motor pinza gris
#define pinzaB 45 // control pin B para motor pinza gris
También tendremos bien definidos
los colores de los cables de conexión y lo
indicamos en los comentarios de la
definición para evitar errores.
pág. 12
Definiremos funciones para cada motor Mover_elemento y le indicaremos el
sentido de giro, la velocidad y el tiempo. De esta forma la secuencia de funcionamiento
quedará mucho más clara, porque tendremos instrucciones del tipo mover_base
(1,255,1000). La definición de una de estas funciones será del tipo:
void moverBase (int d, int v,int t) // d=direccion, v=velocidad, t=tiempo,
2=cambio de dirección
{
digitalWrite(E1, HIGH); // Activamos Motor1
analogWrite(E1, v);
if (d==1) // 1=ir a la derecha
{
digitalWrite(baseA, HIGH); // Arrancamos
digitalWrite(baseB, LOW);
delay(t);
}
Else // movimiento hacia la izquierda
{
digitalWrite(baseB, HIGH); // Arrancamos
digitalWrite(baseA, LOW);
delay(t);
}
digitalWrite(baseA, HIGH); //paramos motor
digitalWrite(baseB, HIGH);
}
pág. 13
A continuación, leeremos la información que a través del bluetooh nos
envía nuestra aplicación, básicamente nos indicará si el usuario o el cuidador desean
realizar operación de bebida o de retirada de la misma.
Dejamos para posibles ampliaciones la colocación de un detector de proximidad
por infrarrojos que nos permita acercarnos con mayor precisión a la posición deseada,
así como la incorporación de un sensor de movimiento que permita accionara la
aplicación por movimiento y dirigido a personas con mayores problemas motores.
pág. 14
6. Circuitos a utilizar
Documentaremos los circuitos realizados
utilizando Fritzing
Comenzamos con la realización y prueba de un circuito sencillo y a continuación
nos planteamos la conexión de nuestro proyecto con 5 motores, cada uno de ellos
deberá tener las siguientes conexiones
pág. 15
Tras este proceso nuestro robot está conectado y listo para realizar las pruebas
de funcionamiento.
A continuación nos planteamos organizar el cableado
para mayor claridad.
pág. 16
7. Programación AppInventor
Nuestro equipo no ha trabajado con aplicaciones para móvil anteriormente, así
que nuestro proceso de aprendizaje comienza con seguir el curso de formación ofrecido
en la plataforma. El proceso de programación será el siguiente:
Instalación y programas prueba
Programación de Botones, Etiquetas..., Diseño y Bloques
Programación de pantallas
Conexión a Bluetooh
Pruebas con Arduino
Problemas de Bluetooh entre pantalllas
Rediseño mediante tablas
Pruebas de funcionamiento
pág. 17
En primer lugar, debemos aprender cómo funciona App Inventor, para ello
utilizaremos los Tutoriales, proporcionados por la plataforma Stembyme.
Son tutoriales muy claros y nos permitirán tener una primera aproximación a
nuestro programa.
Debemos ver si somos capaces de
programar nuestra propia aplicación con
diferentes botones, etiquetas. La pantalla de
interface con el usuario debe tener iconos de
identificación claros.
pág. 18
A continuación, descargamos la aplicación en el
móvil
y probamos nuestro bluetooh con una placa de Arduino
Al realizar esta operación aparecen algunos problemas de
conexión al realizar cambio de página. Debemos replantear la
programación y optamos por organizar nuestra pantalla mediante
tablas que vamos a visibilizar en el momento adecuado. Así
conseguimos evitar el error.
pág. 19
8. DEFINICIÓN FINAL DEL PROYECTO
Tras el análisis de nuestro proyecto, queda definido según las siguientes
especificaciones:
Accionamiento de un brazo de robot de 5 grados de libertad a partir de la
programación de una placa Arduino Mega
Control del sistema vía bluetooth
Realización de una aplicación con AppInventor con dos modos de
funcionamiento Cuidador y Usuario.
Posibilidad de ampliación del proyecto mediante sensores de movimiento y
ultrasonidos
Prueba y ajuste del prototipo
Recommended