T.P. N° 5
Semáforo
Semáforo
Se pide idear, diseñar y llevar a cabo en protoboard, un circuito que a su salida opere como un semáforo de 3 faros (luces), aplicando los conocimientos obtenidos en las prácticas anteriores sobre circuitos astables y monostables.
Paralelamente, programar el mismo sistema para el microcontrolador GP32.
Dicho semáforo deberá funcionar respetando periódicamente un patrón de intervalos por el cual las luces se encenderán en una determinada combinación. Los colores a utilizar son ROJO, VERDE y AMARILLO.
El diagrama temporal es el siguiente: (basado en un semáforo real)
El diagrama temporal es el siguiente: (basado en un semáforo real)
Vemos que el periodo se encuentra dividido en 8 intervalos de 1 segundo, y para cada cual las variables (luces) se encuentran cada una en un estado. Por tanto necesitaremos idear un sistema contador para identificar cada uno de esos intervalos, y a partir de eso asignarle un valor a cada salida.
Por empezar emplearemos un circuito astable para que marque el tiempo de los intervalos. Calibraremos su ciclo de trabajo lo más cercano al 50% posible, pero no exacto, por lo siguiente:
Siendo la fórmula del duty cycle:
Rb
D
= --------------
Ra + 2Rb
La única forma de lograr un duty del 50% es llevando Ra a 0, es decir reemplazándola por un cable. Esto no supondría un problema si no estuviéramos puenteando el terminal 7 del LM555 con el 8, el 4, el 2 y Vcc. Explicándolo mejor, se podrían quemar varios transistores dentro del integrado ubicados entre esos terminales, por lo cual no podemos prescindir de Ra, de modo que el ciclo de trabajo del astable lo aproximaremos al 50%, pero no demasiado. Para la práctica se utilizó una Ra = 28,8K y una Rb = 57,6K formando un duty del 40% que para lo que se va a utilizar al astable es aceptable.
En cuanto a la frecuencia de operación, queremos que la salida del astable cambie de estado cada un segundo aproximadamente, por lo tanto el periodo del mismo será del doble, es decir, 2 segundos. La frecuencia entonces será de 1/2Hz. La formula para la frecuencia de operación es la siguiente:
1,44
f =
----------------------
( Ra + 2Rb ) C
Reemplazando los valores de Ra=28,8K y Rb=57,6K y para una frecuencia de 1/2Hz, despejamos una capacidad de 10uF (en realidad la misma había sido prefijada en 10uF y fueron las resistencias las que se adaptaron, ya que en el mercado es más facil conseguir valores de resistencia que de capacidad).
Tenemos entonces un valor lógico que oscilará entre 1 y 0 una vez por segundo (aproximadamente) pero ésto no es suficiente para lograr que cada luz se encienda en su determinado estado. Se podría idear una serie de astables, todos con la misma frecuencia pero con distintos ciclos de trabajo cada uno, y cada salida del semáforo conectarla a un astable, no obstante el problema inmediato que tendríamos es que muy probablemente se desincronicen con facilidad debido a la tolerancia en los componentes resistivos o capacitivos, y el semáforo no funcione correctamente. Todas las salidas deben depender de una primera base de tiempo impuesta por el mismo astable.
Sin embargo, paralelamente necesitamos otras bases de tiempo, múltiplos de la base otorgada por el primer astable, es decir, mientras el astable cambia su estado cada 1 segundo, necesitamos otro circuito que lo haga cada 2, y otro cada 4, para luego combinar esas variables convenientemente por medio de circuitos combinacionales y conseguir los estados necesarios a las salidas del semáforo. Estaríamos tomando los segundos transcurridos como valores expresados en código binario, y las distintas bases de tiempo serían las variables binarias en cuestión (cada una con su peso correspondiente). Podemos incluso plantear la tabla de verdad, a partir del diagrama de tiempos:
Siendo la Base 1 la salida negada del primer astable, que oscila cada 1 segundo, y los estados del 0 al 7 son los intervalos vistos anteriormente en el diagrama temporal (cada estado representa un segundo). Vemos claramente que al agregar otras 2 bases de tiempo -potencias de la primera- logramos 8 combinaciones distintas de estados, que podemos aprovechar perfectamente para a cada estado asignarle un valor a cada una de las 3 salidas (Rojo, Amarillo, Verde).
Vemos que las nuevas bases de tiempo lo que hacen es duplicar el periodo de la anterior: mientras por ejemplo la Base 1 (astable) tiene un periodo de 2 segundos, el de la Base 2 es de 4 segundos, y el de la Base 3 es de 8 segundos. Solo resta entonces averiguar qué clase de circuito duplica a su salida lógica el período de su señal de entrada.
Despreocúpese lector, no deberá realizar ningún tipo de investigación. El circuito que buscamos es un Flip-Flop tipo "D". Se trata de un mecanismo que cambia el estado de su salida cuando su entrada entra en un 1 lógico, pero cuando no cuando sale del mismo. Circuitos integrados que poseen Flip Flops D: CD4013 ó CD4040
El 4013 contiene 2 Flip-Flops D (lo cual para este caso nos viene como anillo al dedo ya que sólo necesitamos 2).
Hojas de datos del CD4013:
http://www.datasheetcatalog.org/datasheets/228/108664_DS.pdf
El 4040, en cambio, es un contador binario (cuenta estados y los traduce en código binario con varias salidas). Podemos sin embargo adaptarlo a nuestro circuito perfectamente, pues su funcionamiento es muy similar, de hecho a sus salidas se comporta como varios Flip-Flops D en cascada, o sea lo que estamos buscando
Hojas de datos del CD4040:
http://www.datasheetcatalog.org/datasheets/90/109006_DS.pdf
Utilizaremos, por elegir uno, el CD4013.
Posee 2 Flip-Flops del tipo D, cada uno tiene un terminal de Set y uno de Reset los cuales ambos conectaremos a masa. También cada Flip-Flop otorga 2 salidas, una es la común [Q] y la otra es la negada [no Q]. Por último tenemos un terminal de Clock [CLK] y uno de Data [D]. El terminal D lo conectaremos a la salida negada, y tomaremos el terminal CLK como entrada.
Información adicional acerca de Flip-Flops:
http://www.tdigitales.com.ar/bajar/Biestables_FlipFlop.pdf
Tenemos entonces un LM555 funcionando como astable, y un CD4013 que contiene los 2 flip-flops necesarios para establecer las otras 2 bases de tiempo. Conectaremos la salida del astable a la entrada del primer flip-flop (conectamos el terminal 3 del 555 al terminal 3 del 4013) y la salida del primer flip-flop, a la entrada del segundo (unimos el terminal 1 del 4013 con el 11). Así, funcionan en cascada y para obtener las 2 bases de tiempo que nos faltaban sólo debemos sacar un cable de la salida negada de cada flip-flop.
¿Por qué se niegan las salidas tanto del astable como de los flip-flops?
Porque en realidad la tabla de verdad obtenida anteriormente no es la que entregan estos circuitos, sino la opuesta (negada), ya que los flip-flops cambian su estado cuando su entrada entra en 1, y no cuando entra en 0. Esto es tal vez más fácil de ver a través de un diagrama de tiempos:
Por medio de la tabla de verdad vemos que las salidas de cada etapa están negadas respecto de lo que necesitamos tomar como base de tiempo:
Siendo "ASTABLE" la salida real que otorga el astable, "F/F 1" la salida [Q] que otorga el primer Flip-Flop, y "F/F 2" la salida [Q] que otorga el segundo Flip-Flop. Para obtener las Bases 1, 2 y 3, simplemente debemos negar las salidas obtenidas en las 3 etapas, para las cuales 2 no hara falta otra cosa que utilizar el terminal de salida negada que ya nos ofrecen los Flip-Flops del CD4013.
El circuito combinacional se realizará planteando el mapa de Karnaugh correspondiente a cada salida (Rojo, Amarillo, Verde) tomando como variables de entrada las Bases 1, 2 y 3.
El resultado simplificado es el siguiente:
Para llevarlo a cabo necesitaremos 2 circuitos integrados CD4011 (ya que cada uno cuenta con 4 compuertas NAND)
Habiendo resuelto completamente el funcionamiento por bloques del circuito de nuestro semáforo, lo resumimos en un modelo esquemático:
Por último, un video demostrativo del circuito funcionando:
Mismo semáforo programado para el microcontrolador GP32:
(link de descarga del archivo)
Estoy interesado en construir un semaforo de dos vias, es decir, 6 salidas cuando en la via 1 rojo este encendido en la via 2 verde esta encendido cuando verde de la via 2 apague entonces enciende amarillo pero aun rojo de la via 1 permanece encendido una vez apague amarillo de la via 2 enciende rojo y verde de la via 1 y continuamente hace este proceso...
ResponderEliminar