Está en la página 1de 7

Proyecto 2: Dispensador inteligente.

1st Johan Suarez 2nd Laura Romero 3rd Eduardo Garnica


Facultad de ingenierı́a Facultad de ingenierı́a Facultad de ingenierı́a
Universidad Nacional de Colombia Universidad Nacional de Colombia Universidad Nacional de Colombia
Bogotá, Colombia Bogotá, Colombia Bogotá, Colombia
jssuarezse@unal.edu.co lromerob@unal.edu.co jgarnicaa@unal.edu.co

Resumen—The main objective of this document is to show how


a finite state machine applied in a real life problem works.
Index Terms—FSM, Moore machine, PWM, voice recognizer.

I. I NTRODUCCI ÓN
Actualmente el mundo se está rigiendo por normas y direc-
trices para las que nadie estaba preparado, la llegada de esta
nueva pandemia se ha convertido en un reto para todos, no sólo
en la búsqueda de una cura para el virus sino también de una
manera de evitar ser contagiado mientras ésta es encontrada. Figura 2. Display siete segmentos.
Las medidas tomadas contra la expansión del virus son muy
variadas, vienen dadas desde el uso de remedios caseros Existen de dos tipos, ánodo común y cátodo común,
hasta la restricción, algunas veces totalitaria, de las relaciones según el punto de referencia de los leds, Vcc o Gnd res-
interpersonales. Sin embargo, ninguna de las medidas anterior- pectivamente. Para el ánodo común se tiene la siguiente
mente nombradas funcionan sin un alto nivel de autocuidado, tabla de verdad:
basado en el uso de tapabocas y lavado-desinfección frecuente
de manos; razón por la cual este proyecto se enfoca en la crea-
ción de un dispositivo dispensador de sustancias desinfectantes
mediante la aplicación de conocimientos en lógica secuencial
y FSM.
II. M ARCO TE ÓRICO
Decodificador [1]: es un circuito usado para decodificar
información. Existen de varios tipos (binario, dos a
cuatro, tres a ocho, etc.) dependiendo del número de
entradas y salidas que éste tenga.
Sin embargo, sólo es válida una de éstas a la vez, para lo
cual se usa una entrada llamada enable, que se encarga
de inhabilitar las salidas ası́: si En = 0 ninguna salida Figura 3. Tabla de verdad para display con ánodo común.
es válida y si En = 1 la salida es determinada por
cierta combinación de las entradas del decodificador. Inter-Integrated Circuit (I2C) [3]: es un bus serie de
A continuación se ve como ejemplo, el sı́mbolo de un datos que permite conectar dos partes de un circuito
decodificador dos a cuatro: (microcontroladores, memorias, entre otros), e incluso
varios maestros (dispositivos que determinan el tiempo
y la dirección del tráfico en el bus) mediante dos lı́neas
de señal (SCL, lı̀nea de pulsos del reloj y SDA, lı́nea
de transferencia de datos) y un común (GND). Para
esto hace uso de un protocolo que permite que los
dispositivos maestros usen el bus (en estado libre) al
establecer la condición de inicio (SCL=1 y SDA=0).
Figura 1. Decodificador dos a cuatro. Cuando esto pasa, el dispositivo maestro transmite
un primer byte que contiene 7 bits con la dirección
Display siete segmentos [2]: es una pantalla electrónica del dispositivo y uno con la operación a realizar, a
que permite la visualización de dı́gitos por medio del lo cual, el dispositivo esclavo contesta con un bit
encendido y apagado de los leds que la conforman: de reconocimiento (ACK) que indica si éste está en
condiciones de comunicarse y acepta la solicitud o no, del estado actual de la máquina, mientras que en las
al ser aceptado se inicia el intercambio de información máquinas Mealy la salida depende no sólo del estado
entre los dispositivos. actual de esta sino también de las entradas actuales.

Lógica secuencial [4]: Los circuitos secuenciales son Modulación por ancho de impulsos (PWM) [6]: es la mo-
aquellos para los cuales las salidas están determinadas no dificación de una señal con el fin de enviar información
sólo por la entrada actual sino también por las secuencias o controlar la cantidad de energı́a que se envı́a a una
de entradas que condujeron a tal estado, es decir son carga. Esta acción conlleva la modificación del proceso
circuitos que tienen memoria. En la figura 3 se muestra de trabajo de una señal, es decir, la variación del ciclo
un esquema general de un sistema con lógica secuencial: de trabajo de la señal; un ciclo de trabajo se refiere al
porcentaje de tiempo en que una señal está a nivel alto
(1) en un periodo.
Un ejemplo del funcionamiento del PWM se muestra en
la figura XXX:

Figura 4. Diagrama de bloques de un sistema con lógica secuencial.

Se puede observar que la salida siempre está determinada


por las entradas actuales y por la información contenida
en los elementos de memoria (que mantienen una
cantidad de datos binarios por un tiempo determinado);
tal información es la encargada de definir el estado del
circuito.

Máquinas de estado finito (FSM) [5]: son una forma de


representar circuitos secuenciales sincrónicos. Se llaman
Figura 6. Ejemplo de funcionamiento PWM.
de este modo porque un circuito con k registros puede
estar en uno de un número finito de estados únicos. Estas Sensor de temperatura [7]: El sensor usado en el proyecto
tienen M entradas, N salidas y k bits de estado y reciben es el MLX90614 family, capaz de determinar la tempera-
un reloj (clk) y, algunas veces, una señal de reinicio. tura de un objeto a distancia, sin estar en contacto directo
Constan de dos bloques de lógica combinacional (lógica con él, este es eficiente para la aplicación propuesta ası́
del estado siguiente y lógica de salida) y un registro que como asequible al público en general. El funcionamiento
almacena el estado. Además, se dividen en dos tipos: a grandes rasgos de este dispositivo es el siguiente:
máquinas Moore y máquinas Mealy, que se muestran en
la figura 3.

Figura 7. conexion MLX90614

La precisión de los MLX90614 depende principalmente


del rango de temperatura. Entre 0 °C y 50 °C de
Figura 5. Máquinas de estado finito: a)tipo Moore, b)tipo Mealy. temperatura ambiente y 0 °C y 60 °C de temperatura
objetivo, el margen de error es de ±0.5 °C, sin
Estas máquinas, como se ve en el diagrama, se embargo La versión médica del MLX90614, la serie
diferencian por sus especificaciones funcionales, en MLX90614xSFDxx tiene, en un rango de temperatura
las máquinas Moore la salida depende únicamente ambiente entre 0 °C y 50 °C, una precisión de ±0.2 °C
además de estar diseñado para se alimentado fácilmente
con una baterı́a (3 V), más adecuado para este tipo de
uso. El gestiona las comunicaciones utilizando el bus
SMB (SMBus), un subconjunto del bus I2C al que, a
los efectos de implementación y funcionamiento que
interesan este informe, se puede equiparar. Trabajando
en este modo (que está configurado por defecto) se
obtiene una temperatura expresada por dos bytes con
una resolución numérica de 0.02 °C. Este dispositivo
posee dos memorias una de tipo EEPROM que permite
lectura y escritura y una memoria RAM de solo
lectura, la cual nos interesa en este proceso, ya que las
temperaturas calculadas por el MLX90614 se almacenan
en la memoria RAM en la dirección 0x07, el valor de la
temperatura se expresa como un entero de 16 bits que
representa los incrementos de 0,2 °C empezando en el Figura 9. Actuador para el dispensador inteligente
cero absoluto (273,15 °C). Para calcular la temperatura,
por tanto, habrá que multiplicar por 0,2 el valor que
IV. P ROTOCOLO I2C
devuelve el MLX90614 y restarle 273,15 lo que resulta
en un valor expresado en °C. Por la circunstancia actual, este proyecto no se pudo llevar
a cabo fı́sicamente, por lo tanto la comunicación I2C entre la
Servomotor [8]: es un dispositivo de accionamiento para FPGA y el sensor de temperatura, fue imposible de llevar a
el control de velocidad y posición que tiene 2 lı́neas de cabo, esto se debe a que es necesario acceder a una memoria
alimentación (Vcc y GND) y una tercera lı́nea para la donde se almacena el valor para el cual, a partir de una opera-
señal de control. Esta señal viene dada por una PWM ción aritmética, se puede encontrar la temperatura corporal.
y su ciclo de trabajo se interpreta como un comando de Sin embargo, si se logra enviar la señal de comunicación
posicionamiento del servomotor ası́: requerida, para su explicación se hablará más a fondo sobre
el protocolo I2C.
Como se mencionó anteriormente, el protocolo I2C permite
la comunicación entre un maestro (FPGA) y un esclavo
(MLX90614), en la cual, por medio de este camino de datos
se pueden realizar dos operaciones, una de lectura y una de
escritura, en este caso se enfoca en la lectura, para iniciar es
necesario que la señal de reloj SCL esté en estado bajo y la
señal SCL en alto, en este punto se empieza la transmisión.
Primero se debe transmitir la dirección a la que se dirige, según
Figura 8. Posiciones del servo motor para diferentes ciclos de trabajo (180º, el datasheet del modulo empleado, la dirección del esclavo o
135º, 90º, 45º y 0º respectivamente). slave adress para acceder a la memoria RAM es 0xB4, donde
el ultimo dı́gito dice que esta en modo escritura, esto ya que es
la única forma de acceder a la memoria RAM del esclavo. A
III. E XPLICACI ÓN DEL MECANISMO continuación aparecerá el bit de reconocimiento el cual debe
estar en 0 para decir que se accedió a la RAM; después de
ello se va al registro de la RAM donde se encuentra el dato
En esta sección se explicará a grandes rasgos como funciona necesario, para este modulo es el 0x07, y cuando el ACK
el dispensador inteligente, éste posee un switch que al ser muestre que todo está en orden, se enviará de nuevo la señal de
presionado acciona un servo, el cual hace girar un engrana- dirección, pero con el bit de lectura en alto, es decir la posición
je, que mediante transmisión de movimiento traslada a una 0xB5, en este punto se espera de nuevo la verificación, donde
correa hacia abajo, presionando el dispensador y expulsando de ser correcta el maestro pasara a escuchar la información
el gel antibacterial. Además posee un sensor de temperatura enviada por el esclavo, la cual el maestro o la fpga se encargará
MLX90614 que al oprimir el switch, mide la temperatura de de leer y almacenar.
la persona con una muy buena exactitud (la cual se es reflejada Para el código, utilizamos la guı́a dada por la pagina en
en tres 7-segmentos) y dependiendo del valor, envı́a una alerta internet fpga4fun [10], donde se proporciona un código en el
a través de un diodo led, donde el nivel de luminosidad del cual se envı́a la señal. Sin embargo, no tenemos un esclavo que
mismo, dará un indicio de si la persona esta enferma o no. nos devuelva el valor que deseamos leer, por lo tanto hasta este
A continuación se muestra el mecanismo del actuador para el punto llega la comunicación, donde se logra enviar la señal
mecanismo: necesaria para leer el registro en memoria. A continuación
se mostrará el ejemplo dado por el datasheet y, además, el aumentarle a 1.25ms tendremos 45 grados que son los grados
resultado de la simulación: que necesitamos en el mecanismo para dispensar el gel. Los
resultados de la simulación se muestran en la siguiente figura:

Figura 10. Ejemplo de conexión dado por el datasheet

Figura 13. Simulación pulso del PWM

Con las dos señales digitales de tipo PWM mostradas


anteriormente, se puede realizar el control completo del dis-
pensador de gel.

VI. C ÓDIGO

VI-A. Explicación código

Para la realización del código se usa el esquema base en


torno al diagrama de transición de estados (Figura 14).
Figura 11. Resultado de la simulación

Como se puede observar, se cumplió con el protocolo I2C,


por lo tanto en un futuro, al momento de implementarlo, se
podrá realizar efectivamente la comunicación.

V. S ERVOMOTOR
El servomotor a usar es un Futaba S3004, el cual funciona
de 3v a 5v como señal de control. Como se nombra anterior-
mente, dependiendo del tiempo de que dura en alto, este gira
cierta cantidad de grados (para este caso el servo funciona
a una frecuencia de 100hz o un periodo de 10 ms) y para
controlar ésto se tiene lo siguiente:

Figura 14. Diagrama de transición de estados

Es pertinente aclarar que al no tener la comunicación I2C,


para efectos de la simulación se utilizan valores fijos de
la temperatura; sin embargo, por motivos más prácticos, se
recomienda usar un ARDUINO, para la lectura de este modulo,
Figura 12. Anchos de pulso del PWM utilizando esa información para ponerla en el 7segmentos.
Luego de esta aclaración, es posible iniciar con la explicación
Como se observa en la figura anterior, al tener un tiempo del código, primero se muestra el modulo del PWM usado
en alto de 1ms, el servo se estará en el punto neutro, al para los servomotores:
Figura 17. Salidas de alerta, parte 2

En este caso hay tres salidas de tipo PWM y un contador de


1 a 100 pero se explicará solamente la salida pwm1 pues las
otras dos son homólogas, en este caso la salida será 1 hasta
que el contador llegue a 10, esto quiere decir que se tiene un
duty cicle del 10 % obteniendo una baja luminosidad, para una
luminosidad media se usa un duty cicle del 50 % y para una
Figura 15. Codificación del ancho de pulso para los servomotores luminosidad alta un duty cicle del 90 %.
Ahora, con los módulos a utilizar ya implementados, se
El código mostrado, muestra dos salidas, pwm1 y pwm2; explicara las variables a utilizar en todo el mecanismo, junto
luego, como el reloj de la fpga es de 100MHZ, es necesario a un decodificador de 7 segmentos el cual ya se expuso en
crear un contador para obtener la frecuencia deseada, para ello pasados informes por lo tanto no se prolongará su explicación:
el contador sumará un bit con cada flanco de subida, hasta que
llegue al numero 5 millones, en este punto se reinicia, teniendo
ası́ una frecuencia de 100hz o un periodo de 10ms. En este
periodo cada PWM va a estar en flanco de subida diferente
tiempo, el pwm1 va a estar 1ms (contador llega a 500000) y el
pwm2 estará 1.25 ms (contador llega a 625000) y ahı́ pasaran
a flanco de bajada.
Una de las innovaciones que se proponen en este proyecto
es una alerta de temperatura que se verá ejecutada cuando
la persona oprima el botón en el dispensador inteligente al
intentar ingresar a un establecimiento público, pues se le
tomará la temperatura y si un diodo led o bombilla su brillo
al máximo, se dará por entendido que está enferma o tiene
posibilidades de estarlo, mientras que si el brillo es bajo, la
persona estará en condiciones de ingresar. Para ello se aplicará
lo expuesto en la figura 6, donde a través de una salida PWM
se tiene tres casos, baja luminosidad que representa que la
persona no presenta ningún riesgo, luminosidad media, que
indica que está cerca del tope de la temperatura normal y
luminosidad alta, que en palabras claras presenta que tiene
fiebre. A continuación se presenta la codificación de las salidas
para los leds: Figura 18. variables a utilizar y decodificador 7 segmentos

Las variables a utilizar serán una entrada V BT que re-


presenta un interruptor el cual accionara el mecanismo, una
entrada llamada G CLOCK 50 que será el reloj que usará el
mecanismo, dos registros de salida de 7 bits que representan
la salida en los 7segmentos (uno representa las decenas y otro
las unidades de la temperatura), la variable de los estados de la
maquina llamada status, un registro en el cual se almacena la
salida del servo llamado servo y la salida del led se almacenará
Figura 16. Salidas de alerta, parte 1 en el registro de salida llamado G LEDR. Además, se nota la
implementacion de los modulos mencionados anteriormente, VII. S IMULACI ÓN
las variables pwm1-pwm3 representan la alerta, y pwm4- Para la simulación, se acciona el botón pasado 10 ciclos de
pwm5 las salidas del servo. la señal de reloj;
Ahora se expondrá sobre la codificación de la maquina de
estados, en este caso para efectos de la simulación, se tomará
una temperatura determinada de 36 grados, para ello se usa
como base el diagrama de estados mostrado en la figura 12,
a continuación el código empleado:

Figura 20. Estado inicial

En la figura anterior, se evidencia lo que sucede en el estado


inicial, se observa como el PWM del servo está en flanco de
subida por 1ms, los valores de los 7 segmentos en 0 y en el
estado inicial no hay salida de alerta.

Figura 19. maquina de estados

Esta maquina de estado, muestra un estado inicial llamado


INICIO en el cual la salida del servo estará a 1ms en alto y
el resto del periodo en cero (esto para mantener el servo en
el eje neutro), el led estará apagado y al accionar el switch,
el cual se almacena en la posición 3 de su registro, empezará Figura 21. Segunda simulación
un contador, el cual al pasar un segundo, pasará al siguiente
estado, reiniciando el contador. En esta segunda simulación, se palma como los módulos
BCD, pasan a tener 3 y 6 respectivamente, cada uno mostrando
En el segundo estado por efectos de la simulación se
la temperatura medida y, además, se ve como se aumenta el
toma una temperatura de 36 grados centı́grados, se asignará
ancho del pulso a un total de 1.25ms, accionando el actuador
la salida de los 7 segmentos y se pasará al tercer estado
para dispensar el gel.
llamado SALIDAS. Cabe aclarar que este dato se puede leer
del MLX90614 con el protocolo mostrado en la sección 4, o
con ayuda de un arduino, el cual trae biblioteca del modulo,
por lo tanto con un simple comando se puede realizar esta
acción.
En el tercer estado se enviarán las salidas al servo para
que active el mecanismo para dispensar y se comparará el
valor de temperatura para mostrar la alerta correspondiente,
en este caso si está entre 35-36 se tomará como no riesgo,
entre 36-37 en estado normal y mayor a 37 como persona
con sı́ntomas claros. Además, se tiene un contador que dura
2 segundos, tiempo en el cual se verá la temperatura en el 7
segmentos y la alerta y cuando acaba el tiempo se devuelve
al estado inicial. Este contador puede ser útil en el estado Figura 22. Alerta térmica
numero 2, dependiendo del tiempo que se demore en tomar
la temperatura, por efectos de visualizar la simulación no fue Como la temperatura leı́da fueron 36 grados, esto representa
incluido. que se encuentra fuera de riesgo para las demás personas, es
decir no posee fiebre, por lo cual la salida es un pulso con un
ciclo positivo del 10 %
VIII. C ONCLUSIONES
Se concluye como objetivo general, la apropiación del
aprendizaje sobre el funcionamiento de máquinas de
estado finitos y sus aplicaciones a entornos prácticos
Se entendió el planteamiento del problema desde un
campo fı́sico a un campo abstractivo, para ası́ generar
una solución implementada
Se comprendieron las bases teóricas de la implementa-
ción de las FSM para crear aplicaciones prácticas
Si bien debido a la coyuntura actual se hizo imposible la
implementación del proyecto, se tuvo certeza del código
a usar para una futura creación de prototipo, además
se resalto como a través de la electrónica digital, se
pueden resolver problemas actuales, mejorando ası́ las
condiciones de adaptación a las nuevas formas de vivir
actualmente.
R EFERENCIAS
[1] S. Brown and Z. Vranesic, Fundamentos de lógica digital con diseño
VHDL, 2nd. ed., Toronto, 2000, pp. 329-331.
[2] C. Veloso, Display siete segmentos, 2016.
https://www.electrontools.com/Home/WP/2016/03/09/display-7-
segmentos/
[3] ”Descripción y funcionamiento del Bus I2C — Robots Didácticos”,
Robots-argentina.com.ar, 2018.
http://robots-argentina.com.ar/didactica/descripcion-y-funcionamiento-
del-bus-i2c/
[4] Lógica secuencial, registros de desplazamiento y contadores, Tema 3,
pp. 1-2.
https://www.infor.uva.es/ jjalvarez/asignaturas/fundamentos/lectures/
digital/Tema3secuenciales.pdf
[5] D. Harris and S. Harris, Digital design and computer architecture, 1st.
ed., Morgan Kaufmann Publishers, 2007, pp. 117.
[6] ”Que es PWM y como funciona”, Shoptronica S.L., 2020.
https://www.shoptronica.com/curiosidades-tutoriales-y-gadgets/4517-
que-es-pwm-y-como-funciona-0689593953254.html.
[7] Melexis. MLX90614 family Datasheet Single and Dual Zone
[8] A. Garcı́a González, ”¿Qué es y cómo funciona un servomotor? —
Panama Hitek”, Panama Hitek, 2016.
http://panamahitek.com/que-es-y-como-funciona-un-servomotor/.
[9] ”Descripción y funcionamiento del Bus I2C — Robots
Didácticos”, Robots-argentina.com.ar, 2018. http://robots-
argentina.com.ar/didactica/descripcion-y-funcionamiento-del-bus-i2c/.
[10] ”Description I2C in FPGA”. https://www.fpga4fun.com/I2C.html

También podría gustarte