top of page

Laboratorio 20: PSoC: La maquina expendedora.

Juan David Combita Murcia, 20181007017

Electrónica Digital

Grupo 743

Universidad Distrital Francisco José

Introducción:


Las maquinas de estados son bastantes útiles al momento de diseñar dispositivos mecánicos que deban cumplir con algún proceso. En esta practica se realizara un circuito de procesamiento de una maquina expendedora de tintos:


I. Objetivos:


Objetivo general:


Desarrollar el ejercicio propuesto.


II. Recursos:


1) PSoC Creator.

2) PSoC5 y tarjeta de desarrollo.


III. Ejercicio propuesto y desarrollo:


Ejercicio:


El ejercicio propuesto describe una maquina expendedora de tintos, la cual entrega un tinto cuando recibe el monto de $500. Esta recibe monedas de $100, $200, $500 y $1000 para completar dicho monto. La maquina da vueltas en función de cuanto se le haya ingresado. La maquina solo da vueltas en monedas de $100 por lo que en 4 bits se indicara las cantidad de monedas a regresar.


Cuando se dispense un tinto, la maquina activara 2 motores con la siguiente secuencia: Inicialmente M1 y M2 están desconectados, luego se activa M1, después se apaga M1 y se activa M2, posterior a esto se activa M1 sin apagar M2, finalmente se apagan ambos motores.


Para realizar el diseño son es necesario tomar 3 secuencias que ajusten los $500, ademas de añadir los casos en que se introduzca una moneda $1000 o de $500.


Diseño:


Inicialmente se escogieron las 3 secuencias para realizar el diseño:


1) $200 - $200 - $100

2) $200 - $100 - $200

3) $200 - $100 - $100 - $100


Como lo hemos visto en clase, lo mas apropiado para este tipo de diseños, es realizar una maquina de estados tipo mealy, debido a que esta tiene sus salidas en la transición de sus estados. Teniendo en cuenta esto, nuestra maquina tiene un total de 4 estados:


A) Estado inicial: La maquina esta lista para recibir efectivo. En binario (00).

B) Saldo $200: Este estado nos indica que tenemos un saldo de $200 ingresados en la maquina. Debido a que todas las secuencias inician por una moneda de 200, nuestro primer estado es un saldo de $200. En binario (01).

C) Saldo $300: Este estado nos indica que tenemos un saldo de $300 ingresados en la maquina. En binario (10).

C) Saldo $400: Este estado nos indica que tenemos un saldo de $400 ingresados en la maquina. En binario (11).


Para la codificación de las moneda se utilizara la siguiente descripción:


Moneda $100 -> 00

Moneda $200 -> 01

Moneda $500 -> 10

Moneda $1000 -> 11


Si ingresamos una moneda de $500 o superior, la maquina volverá al estado A y durante la transición nos dará el tinto y las vueltas de ser necesario. Si contemplamos todos los posibles estados, tenemos el siguiente diagrama de estados:


Donde los 2 primeros bits indican la moneda ingresada, los 2 siguientes después del slash indican si se entrega el tinto y si se tienen que dar vueltas respectivamente, luego de estos 2, separados por una coma, en 4 bits se indica la cantidad de monedas de $100 que hay que dar de vueltas.


En base al diagrama se realizo la siguiente tabla:


Donde M[1:0] Indica el estado actual, E[1:0] la entrada en binario. Usamos 2 FF tipo T para realizar el cambio del estado siguiente de la maquina y 6 salidas, de como se indicaron en el diagrama.


Se monto un circuito a partir de verilog llamado "Secuencial", el cual implementa la tabla anterior en 2 ciclos If y case, para con cada entrada y cada estado actual, dar señales a los FF tipo T que guardarían el estado siguiente del procedimiento y las 6 salidas correspondiente a la entrega del tinto, entrega de vueltas y la cantidad de monedas a devolver:


Una pequeña parte del código


Cabe añadir que abajo se encuentra el archivo de PSoC creator comprimido con todo el diseño del programa.


Para emular el ingreso de monedas se implementaron 4 botones de la tarjeta de desarrollo los cuales cada uno representan una moneda, por ello, se implementaron 4 FF SR para guardar los pulsos de esos 4 botones acompañado de un debouncer cada FF para evitar el rebote. Ademas, mediante unas compuertas OR se implemento el reset de cada FF, es decir, cuando se deposite otra moneda, se activara solo un FF a la vez. Tambien, se implemento un compuerta OR que tiene como entradas las entradas de los FF, ya que cada vez que se oprima un botón, los FF T, que describiéremos mas adelante, guardaran el estado actual.


Se creo un circuito, igualmente con verilog, que toma las salidas de los FF anteriores y no da un numero código correspondiente a cada moneda como se describió anteriormente, es decir 00 para la moneda $100 y así sucesivamente:


Haciendo uso de este se añadieron 2 FF tipo T para guardar los estados siguientes del proceso. Estos, cambian cada que se deposite un moneda a la maquina como se explico anteriormente.


Como se puede ver en la descripción del ejercicio propuesto, se puede evidenciar que el funcionamiento de los 2 motores es equivalente a un contador de 2 bits, por lo que se implemento un contador de 3 bits, que se activa cuando la salida Entrega es 1, lo que afirma que se puede dispensar el tinto. Cuando el contador llega a la combinación 100 se desactiva la salida Entregar y Cambio, ya que después de este proceso es que se hace la entrega del tinto y vueltas. Para realizar esto se implementaron 4 Flips flops, 2 para determinar cuando se activa la salida Entrega y Cambio y otras 2 que determinan el funcionamiento de los motores y para deshabilitar (resetear) los 2 primeros FF.


Finalmente para hacer la visualización del proceso anterior se designaron 2 LEDs de la tarjeta de desarrollo para observar la salida Entregar y Cambio, y otro 2 para los motores 1 y 2. Para observar la cantidad de monedas de vueltas entregadas por la maquina se implemento un display de 7 segmentos, ya que la mayor cantidad de monedas a devolver son 9.


Montaje final:


Asignación de pines:



IV. Conclusiones:


Al tener 4 estados totalmente diferentes entre si, y al mismo tiempo ser tan pocos, no se realizo la reducción de estados, ya que no es posible.


La maquina de estados Mealy es la mejor opción para este tipo de secuenciales, ya que requiere menor cantidad de estados que Moore y permite dar las salidas en las transiciones del sistema.


V. Vídeo:



VI. Descarga:






Comments


bottom of page