top of page

Sistema de control

Programación

Complementando la entrega anterior, el gran avance que se tuvo en esta fue la implementación en el servidor de Flask, del control de los motores, utilizando hilos para esto. Lo anterior permite que al recibir el texto a procesar, el servidor pueda mandar la respuesta a la vez que le indica a los motores que empiecen a funcionar. Cuando se termina de realizar la reproducción del mensaje, recibe otra petición que da la señal de parar los motores, lo cual se traduce en matar el hilo que está en cargado de dicha función. En cuanto al movimiento de los motores, se parametrizaron funciones que permiten definir este movimiento en términos de datos, especificando que motor mover, cuantos grados y si hay que esperar. Con lo cual, se puede crear una estructura de datos, la cual contenga diferentes movimientos para diferentes tipos de emociones. La emoción a ejecutar, esta dada por el resultado de la primera petición realizada al servidor de Flask, la cual se pasa al hilo que estará encargado del movimiento.

​

Una vez con esta información, el hilo va moviendo los motores, de acuerdo a los movimientos definidos para la emoción dada. Y va eligiendo aleatoriamente dentro del conjunto de movimientos disponibles, hasta que pase cierta cantidad de tiempo o hasta que reciba la petición de stop. Lo anterior se puede observar en el diagrama presentado, en donde app.py es la parte del código encargada de detectar la emoción a partir de un mensaje que se manda por una petición, usando bibliotecas como text2emotion y retornar esta emoción como respuesta, a su vez que la pasa al código en move.py, que se encarga de mover los motores. Cuando se recibe una solicitud de parar, app.py mata el hilo que ejecuta el código en move.py, devolviendo al finalizar los motores a su posición inicial.

flask.png

Circuito electrónico

Se presenta a continuación el esquemático con algunas correcciones que hicieron a partir de la entrega anterior y de las pruebas realizadas. Principalmente se corrigió el voltaje, ahora no se usará una entrada de 6 V para los motores sino una de 5V y también se cambiaron los pines de la Raspberry para que coincidieran con los que se van a utilizar en la solución final.

circuito_electronico.png

Simulación de los motores

Se presenta adicionalmente simulaciones de los motores que se tendrán en el sistema, funcionando con un programa en Arduino. Apartar de acá podemos calcular la potencia requerida por cada motor. Cada motor tiene una corriente máxima de 400mA y funcionará a 5V, por tanto tenemos:

eq1.png
simulacion_servos.png

En este caso, como tenemos 6 motores de estos, para hallar el consumo total de los motores multiplicamos por 6 esta cantidad, obteniendo la potencia total de los motores:

eq2.png

Ahora bien considerando que la Raspberry funciona a 5V y con una corriente mínima de 3A (teórico, en la práctica es menos), tenemos que la potencia de la Raspberry es de:

eq3.png

Y la pantalla tiene un consumo promedio de 600mA y un voltaje de alimentación de 12V, tenemos que:

eq5.png

Dándonos como resultado que el consumo aproximado del sistema es el siguiente, sin tener en cuenta el parlante:

eq6.png

Cables

 

Para la conexión a tierra se usaran cables negros y para power cables rojos. Para las señales PWM se usarán cables de color naranja, estos serán para los cables para los motores y se identifican con las letras RX, RZ, LX, LZ, HY, HZ . Los cables para la pantalla y para parlante son los cables HDMI y de conexión de audio, que por lo general son negros y vienen con unas especificaciones estándar. Se utiliza un adaptador HDMI para poder conectarlo al puerto de la Raspberry. Las protecciones que se usarán serán las de las interfaces y la fuente de alimentación.

©2021 por Gestor. Creada con Wix.com

bottom of page