SEMÁFORO INTELIGENTE Miguel Alejandro Barajas García, García,
[email protected]
RESUMEN La necesidad del Semáforo Inteligente, nace de los problemas que se presentan en la red de tránsito vial, es ahí donde se lleva a cabo el diseño y construcción de un semáforo inteligente, para formar parte de un sistema y automatizar au tomatizar de control de tránsito vehicular. Se determina que parte del diseño proviene de pruebas experimentales, para conformar los criterios para la realización del diseño. Se especifica completamente el semáforo, dimensiona sus componentes en los casos donde sea posible hacerlo. La construcción del semáforo se limita a la implementación del diseño a efectuar; esto se debe a que en no es posible contar con los componentes requeridos, y en a la carencia de datos experimentales para seleccionarlos. Las características funcionales funcionales con las que cumple cumple el semáforo inteligente son las las siguientes: • • • • • •
Señalización peatonal y vehicular con tiempos de indicación modificables Comunicación bidireccional con un controlador de intersección intersección Conteo de vehículos circulantes Señalización para discapacitados Detección, resolución y reporte de fallas Luces energéticamente eficientes y fácilmente observables
BLOQUES FUNCIONALES Los bloques con que cuenta el semáforo se presentan a continuación en la figura.
Figura 1: Bloques Bloques Funcionales Funcionales
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño Diseño con Electrónica Electrónica Integrada. Página 1
El controlador se encarga de administrar los bloques funcionales del semáforo necesarios para proporcionar las funcionalidades de: atención de solicitud de paso de peatones, manejo adecuado de las luces, lectura de la información suministrada por los sensores de posición, señalización para discapacitados mediante la bocina, comunicación con el controlador de intersección para el reporte de estado actual del semáforo y la ejecución de comandos provenientes de este. Para que la comunicación con el controlador de intersección se lleve a cabo satisfactoriamente, existe un componente que se encargue de realizar las labores para garantizar el funcionamiento adecuado de esta comunicación entre el controlador de semáforo y el controlador de intersección. El bloque llamado interfaz de comunicación tiene como propósito llevar a cabo estas tareas, encargándose de adaptar las señales provenientes del controlador de intersección de manera que sean leídas por el controlador de semáforo, y viceversa. El semáforo cuenta con un sistema de alimentación proveniente de la alimentación a 120 VAC de las líneas de potencia aledañas. Adicionalmente se tiene un banco de baterías que constituye un sistema de respaldo en caso que la alimentación presente un fallo. Para la administración apropiada de la fuente de potencia que utiliza para el funcionamiento del semáforo, cuenta con un componente que se encargue de realizar esta labor, llamado selector de alimentación. Las luces y la bocina constituyen el sistema de señalización del semáforo. El requerimiento al escoger las luces es que estas sean observadas fácilmente, tanto por los peatones co mo por los vehículos. En cuánto a la bocina, esta debe seleccionarse para que sea percibida por los usuarios que no logren observar las luces. Por último, los sensores de posición se encargan de deter minar el momento en el que un vehículo ha cruzado la sección de la intersección del semáforo, e informarle del cruce al controlador del semáforo; con toda la circuitería para lograr este objetivo.
FUNCIONAMIENTO El control de tráfico vehicular del sistema propuesto se efectúa en las intersecciones o los cruces de carreteras. Una intersección está conformada por uno o más semáforos y un controlador de intersección. Cada intersección se divide en secciones, cada una a cargo de un semáforo; ya sea esta una sección peatonal, vehicular, o de ambos tipos. Cada semáforo se encuentra bajo supervisión constante del controlador de intersección, que según la información que reciba de los semáforos tomará acciones para modificar el comportamiento de estos. Cada controlador de intersección se comunica con un centro de comandos, de donde se controla toda la red de semáforos. El semáforo opera normalmente en lo que se conoce como modalidad de actuado con llamada. Esta consiste en el envío periódico al controlador de intersección, de la cantidad de flujo vehicular presente en la sección que le corresponde monitorear. El controlador de intersección, con base en la información adquirida de los semáforos que contiene su intersección, determina los tiempos de duración proporcionados para cada una de las fases de cada uno de los semáforos de la intersección. Una fase se define como el conjunto de luces que están activadas para cada estado del semáforo.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 2
La funcionalidad de actuado por llamada, el semáforo opera bajo condiciones en una modalidad nombrada parpadeo total. Esta modalidad se utiliza cuando el tráfico presenta características que no es posible determinar adecuadamente los tiempos de duración de las fases; o cuando no es necesario el control del tráfico, ya que se cuenta con una afluencia vehicular baja. Cuando el semáforo se encuentre en esta modalidad de funcionamiento hace parpadear las luces de este en un tiempo fijo no modificable, determinado de antemano en el controlador.
DISEÑO LÓGICO El diseño lógico abarca la circuitería necesaria para llevar a cabo el controlador del semáforo, y la interfaz de comunicación de este con el controlador de intersección. Con estos dos bloques funcionales se tiene el funcionamiento en el semáforo. Para alcanzar esta funcionalidad, el controlador debe tener a cargo el manejo de las luces y la bocina, el monitoreo de los sensores de posición, y la comunicación con el Controlador de intersección. Por su parte, la interfaz de comunicación se encarga de comunicar información de control y de estado entre el controlador de intersección y el controlador del semáforo. Se implementa como parte del controlador un sistema de respaldo a este, como medida de seguridad del sistema, en caso de que este llegase a fallar. Se implementan funcionalidades adicionales para mejorar la capacidad de trabajo del semáforo, tales como la detección e informe de fallos en el sistema al controlador de intersección, el monitoreo de la carga del banco de baterías, entre otras.
CONTROLADOR Como vital componente del controlador del semáforo, se utiliza el microcontrolador ATmega16. El ATmega16 es un dispositivo versátil; posee una cantidad de terminales bidireccionales de múltiple propósito, 4 puertos de 8 terminales cada uno. Tiene la opción de configurar tres terminales para generar interrupciones externas al procesador. Entre los periféricos con los que cuenta se t iene un convertidor analógico digital, tres temporizadores, cuatro canales de PWM, una UART, una memoria EEPROM, entre otros. Debido a la cantidad de periféricos que se encuentran disponibles en el chip, se disminuye el espacio físico que requiere el sistema y número de componentes adicionales a este. Al disminuirse el número de componentes, se disminuyen los costos y la posibilidad de fallo. Para la ejecución de las etapas típicas del semáforo, se da principalmente el manejo de la señalización, se implementa una máquina de estados en el microcontrolador.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 3
Figura 2: Configuración del Microcontrolador Atmega 16
Máquina de estados; En la figura Nº 3 se muestra el diagrama ASM de la máquina de estados principal que se efectúa en el microcontrolador, en donde se indican las luces activas durante cada estado.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 4
Figura 3: Maquina de Estados del Semáforo
MÁQUINA DE ESTADOS DEL SEMÁFORO La máquina inicia en el estado 1, correspondiente al paso de vehículos y no paso de peatones; se encuentran activadas la luz verde para vehículos, constituida por LV, y la luz de no paso para los peatones, constituida por LNP. Durante este estado, el controlador espera un tiempo que se le llama tiempo de verde mínimo, indicado en el diagrama por TVMIN. Luego de transcurrir este tiempo la máquina continua al estado 2, donde se habilita la solicitud de paso del peatón, SP en la figura; la solicitud de paso se maneja por el Microcontrolador mediante una interrupción externa. El semáforo permanece en el estado 2 hasta que se dé una solicitud de paso, en donde avanza hacia el estado 3. En el estado 3 se activa la luz amarilla de la señalización vehicular, representa por LA, manteniéndose la luz de no paso para los peatones. Luego de transcurrir un tiempo llamado tiempo de amarillo, continua al estado 4. En este estado se activan la luz vehicular roja, LR, y la luz de paso de peatones, LP. Durante este estado se activa la bocina y emite un tono a una frecuencia definida. Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 5
El controlador mantiene este estado un tiempo designado tiempo de paso, para luego continuar al estado 5. En el estado 5 se mantiene la luz vehicular roja, pero la luz de paso se hace parpadear; nombrado LPP en la figura. Se aumenta la frecuencia a la bocina que va a sonar. Pasado un tiempo llamado tiempo de paso parpadeando el controlador vuelve al estado 1, iniciándose de nuevo el ciclo. Para el manejo de las luces se utilizan las terminales PA0, PA1, PA2, PA3 y PA4 para la luz verde, la luz amarilla, la luz roja, la luz de paso y la luz de no paso; respectivamente. Para el manejo de la bocina se utiliza la terminal PC0.
FUNCIONALIDADES ADICIONALES Además del manejo de la señalización que realiza la máquina de estados, se tienen otras funcionalidades para alcanzar las especificaciones constituidas en el inicio. Se implementa la modalidad de parpadeo total en el controlador del semáforo. Cuando se trabaja en este modo, el controlador hace parpadear todas las luces presentes en el semáforo en intervalos de 1 segundo. El semáforo entra en este modo comando del controlador de intersección indicándole que opere bajo esta modalidad. Durante cada estado el controlador revisa el estado de las luces que está activando para verificar su buen funcionamiento. Con esta información detecta condiciones de error, y se comunican al controlador de intersección. Adicionalmente, el controlador reporta cada vez que se realiza un ciclo completo de su funcionamiento el estado de la alimentación y el estado del banco de baterías. Para esto se utiliza las terminales PB0, PB1, PB2, PB3, PB4, PB5 y PB6 para el monitoreo de la luz verde, la luz amarilla, la luz roja, la luz de paso, la luz de no paso; la alimentación principal y el estado de las baterías, respectivamente. El conteo de carros que realizan los sensores de posición es efectuado mediante el uso de interrupciones externas al microcontrolador, emitidas mediante terminales especiales conformadas para este propósito. Para el caso de la atención de solicitud de paso dada por el usuario se utiliza la interrupción externa 0, emitida por la terminal PD2. Para el conteo de carros, se configura como interrupción a utilizar la interrupción externa 1, disponible en la terminal PD3. La circuitería relacionada a los sensores de posición se encarga de generar un flanco positivo cuando un carro atraviese la sección de intersección correspondiente al semáforo en cuestión. De esta manera, al darse el paso de un vehículo, se incrementa el conteo de carros de manera inmediata para luego volver a la máquina principal. Este conteo solo se lleva a cabo en los estados del semáforo donde la luz de paso de vehículos se encuentre activada. Para los estados donde esta indicación se encuentre desactivada, se desactiva también la interrupción que permite el conteo.
SENSORES DE POSICIÓN Para la detección del paso de vehículos por la sección de la intersección que se le asigna a cada semáforo, se utiliza sensores de posición que se basan en el fenómeno de la inducción electromagnética. Se utilizan dos bobinas acopladas magnéticamente, una sobre otra que se colocan en el suelo, para determinar la presencia de un automóvil en la sección. Un diagrama del funcionamiento del sistema se presenta en la figura Nº 4.1. Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 6
Figura 4: Diagrama Básico del Funcionamiento de los Sensores de Posición
FUNCIONAMIENTO BÁSICO El funcionamiento del sistema se describe a continuación. En una de las bobinas, la bobina primaria, se establece una excitación sinusoidal y en la otra, la bobina secundaria, se mide el voltaje inducido en esta por la bobina primaria. Al pasar un automóvil sobre las bobinas, la permeabilidad del medio que enlaza magnét icamente las bobinas cambia, dada la presencia del automóvil. Este cambio significa un aumento en la señal inducida de una bobina a la otra. Por lo tanto, se diseña un sistema que determine cuando hay cambios en la señal inducida, y envíe al controlador la indicación que un carro cruza la sección. Dado que los niveles de voltaje inducidos a la bobina secundaria dependen tanto de las características de ambas bobinas, como de la frecuencia que ejerce la excitación sinusoidal, y de las características de los vehículos en si que crucen por la sección de la intersección, no se dimensionan los componentes del sistema, solo se especifica la topología de este. En la figura Nº 5 se muestra el esquema topológico para llevar a cabo e l funcionamiento básico descrito en la sección anterior.
Figura 5: Diagrama Topológico de Conteo de Carros
La primera sección del esquema corresponde a la conexión de la bobina primaria ala fuente de excitación sinusoidal. Se utiliza un buffer para acoplar la salida de la fuente de excitación con la bobina primaria. La resistencia R1 se utiliza para limitar la corriente que se entrega a la bobina. Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 7
Por inducción electromagnética, un voltaje sinusoidal parece a través de los terminales de la bobina secundaria. Este voltaje es introducido aun amplificador no inversor, donde la ganancia de este está dada por 1+R3/R2. Nótese que se trata de un amplificador alimentado con una fuente de polaridad positiva, por lo que a la salida de este se tiene únicamente los semiciclos positivos de la onda de entrada, los negativos son cero. Luego, la salida de este circuito es comparada con una referencia dada para determinar la salida en un comparador. Se debe determinar un voltaje de referencia, el valor esta entre el voltaje pico que se presenta en la señal de salida del amplificador cuando no existe un vehículo y así acoplar magnéticamente las bobinas, y el voltaje pico presente cuando existe un vehículo entre las dos bobinas. El capacitor C1 y la resistencia R4 presentes a la entrada del comparador se dimensionan tal que se mantenga el voltaje pico, a causa de la presencia de un automóvil, sobre el voltaje de referencia por medio periodo de la onda sinusoidal de excitación. Esto es necesario ya que la señal solo esta presente en medio ciclo del periodo, y mantiene el voltaje para no provocar disparos erróneos en el conteo de carros en el micro controlador. Para generar la excitación sinusoidal necesaria a la entrada de la bobina primaria, se utiliza un oscilador de puente de Wien. La topología de este se muestra en la figura Nº 6.
Figura 6: Topología Oscilador Wien
Para el funcionamiento del oscilador, se tiene que R2 2 R1. La frecuencia de oscilación de este está dada por 1/2 π ⋅ R ⋅C. La frecuencia de oscilación es proporcional al voltaje inducido de una bobina a otra. =
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 8
SEÑALIZACIÓN Las luces y la bocina constituyen el sistema de señalización del semáforo. Primeramente se indican las características que poseen las luces para el funcionamiento buscado, y luego se procede a especificar las características de la bocina.
LUCES Como criterios para la elección del tipo de luces, se tiene en cuenta que estas sean viables de manipular y de reemplazar, energéticamente eficientes, y que se observan con facilidad. En la actualidad existe una tendencia a reemplazar las lámparas incandescentes por alguna otra alternativa siempre que resulte viable; para esta aplicación en particular la alternativa a utilizar son los diodos LED. Adicionalmente a estas características son económicamente viables. Para la iluminación se utilizarán LEDs de alta luminosidad. Como criterios de elección se tiene que la dispersión del haz de luz, esto es el ángulo de visión, es por lo menos de 60º, y se busca la mayor iluminancia posible. Se utiliza una señal cuadrada de 5 V de amplitud a una frecuencia de 244 Hz y con un ciclo de trabajo del 50% para el manejo de los LEDs; esto con el fin de aumentar la vida útil de los dispositivos.
Figura 7: Conexión de Leds
Para el caso de los LEDs verdes y rojos, se colocan secciones de 4 LEDs, con 10 secciones para lograr un total de 40 LEDs. Para estos consumos de corriente se tiene que, en el caso de que se encuentren tanto los LEDs verdes como los rojos activados, se da una corriente promedio de estos de 800 mA.
BOCINA Para la elección de la bocina, se consideran el nivel de potencia de la salida en decibelios, el rango de frecuencias de operación, y la potencia nominal. Se escoge la bocina de Jameco por contar una salida de potencia de 88 decibelios y un rango de frecuencias amplio de 400 a 4500 Hz. Se alimenta la bocina con una señal cuadrada de 244 Hz de 5 Volts de amplitud, con un ciclo de trabajo de 50%. Para una operación a la potencia nominal se especifica de 0.25 W para la bocina se muestra en la figura Nº 4.3 el diagrama de conexión del circuito resultante. La corriente que consume pro medio por la bocina para este arreglo es de 125 mA.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 9
Figura 8: Conexión de Bocina
ALIMENTACIÓN Como fuente de alimentación primaria a todos los d ispositivos que se compone el semáforo, se utiliza una fuente conmutada regulada disponible comercialmente. La fuente a utilizar, QP100F de Meanwell. Entre sus características importantes se encuentran las certificaciones de seguridad y calidad que posee, conexión tanto a 120 como a 240 VAC, corrección del factor de potencia, buen precio, tamaño compacto y peso adecuado. La fuente posee cuatro salidas: 5, 15, 24 y -15 Volts, con corrientes nominales de 8, 2, 1 y 0.6 Amperes, respectivamente. El voltaje de salida de 5V y el de 15V se ajustan en un rango alrededor de su valor nominal. La distribución de la alimentación divide al semáforo en tres secciones. El bloque del controlador, la interfaz de comunicación y toda la electrónica adicional asociada, esto esta alimentado a 5 V. Se encuentran alimentados a 5 V la circuitería de los sensores de posición encargada de generar los flancos positivos al micro controlador.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 10
Figura 9: Diseño del Sistema
Beneficios del Nuevo Sistema de Semáforos Inteligentes • Reducción en el consumo de energía eléctrica en un 30%. • Mayor eficiencia lumínica. • Frecuencia de recambio comparado con el sistema convencional mayor a 100.000 horas. • Reducción en horas hombre para mantenimiento. • Diseño del sistema eléctrico en serie y en paralelo situación que garantiza independencia de funcionamiento de cada LED dentro de la pieza. • Reducción en el índice de accidentalidad por efectos fantasmas. • Incremento en el alcance de la luminosidad y brillantez mayor al 75% frente a sistemas incandescentes o 50% frente a sistemas halógenos.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 11
• • •
•
Ambiental y ecológicamente amigables pues no generan gases que contribuyan al efecto invernadero como lo ocasionan las bombillas incandescentes y halógenas. Vida útil mayor o igual a 10 años. Los rayos ultravioleta no deterioran la coloración de los emisores (situación contraria cuando se usan lentes de colores) con lo que se garantiza condición neut ral en estado apagado y alta definición de color en funcionamiento. Mejor visibilidad a elevadas distancias.
Ventajas Esperadas del Proyecto 1) Cuando la red vial cuenta con intersecciones que tengan instalados semáforos inteligentes, experimenta las siguientes ventajas: 2) Aumento de la seguridad vial. 3) Reducción de los tiempos de viajes. Según las simulaciones en el ho rario de máxima demanda comprendido durante las tardes en los días laborales, se evidencia una futura mejorará cuando las demoras se vean reducidas en un 50%. 4) Ahorro de consumo de combustibles. 5) Reducción de la contaminación ambiental. 6) Disminución de las congestiones por medio de la facilidad de adaptación de las olas verdes dependiendo de las tendencias del tráfico, flexibilizando las fases de los semáforos y los planes de tiempo de acuerdo a las necesidades del tránsito. 7) Prioridad de paso a los vehículos de transporte público y vehículos de emergencia. Adaptabilidad para la conexión de un sistema de video al sistema de control de tráfico. 8) Fácil ampliación y actualización. 9) Permite el manejo de zonas macro (Adaptable a la división político-territorial de la ciudad) en función del tiempo y del tráfico en cada zona. 10) Permite un manejo actuado según el tráfico.
CONCLUSIONES •
• • • • • •
Como resultado principal de este proyecto se concluye que, se logra cumplir con el objetivo general del proyecto; diseñar satisfactoriamente un prototipo del semáforo inteligente con las funcionalidades que se indicaron. Se especifica la interfaz de comunicación entre el controlador del semáforo y el controlador de intersección, al utilizar el estándar EIA/TIA 485 Se diseña un sistema de de emergencia al controlador del semáforo Se seleccionan los componentes apro piados para conformar el sistema de señalamiento Se define el sistema de alimentación principal y de respaldo del dispositivo Se esquematiza la topología requerida para los sensores de posición Se determina que la mayor parte de las especificaciones de funcionamiento del semáforo, más allá del diseño lógico, provienen de criterios a determinarse experimentalmente.
Miguel Alejandro Barajas García, Código; 301721186,
[email protected] Proyecto de Diseño con Electrónica Integrada. Página 12
BIBLIOGRAFÍA 1. “ATmega16”. http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf 2. “RS-485 (EIA/TIA 485) Differential Data Transmission System Basics”. http://www.maxim-ic.com/appnotes.cfm/an_pk/736 3. “MAX491”. http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1111 4. “CD4047B”. http://www.ti.com/lit/gpn/cd4047b 5. “NTE2382”. http://www.nteinc.com/specs/2300to2399/pdf/nte2382.pdf 6. “MCDL-1860PGC-TL”. http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=1&storeId=10001&catalogId=10001&pa=404603&productId=404603 7. “MCDL-1860UYC-TL”. http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=1&storeId=10001&catalogId=10001&pa=664384&productId=664384 8. “MCDL-1860UEC-TL”. http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=1&storeId=10001&catalogId=10001&pa=664405&productId=664405 9. “FE201”. http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=1&storeId=10001&catalogId=10001&productId=10840&pa=10840PS 10. “QP-100F”. http://www.meanwell.com/search/QP-100/default.htm 11. “AA Ni-CAD Batteries”. http://www.futurlec.com/Batteries-NICAD.sht 12. “Battery (electricity)”. http://en.wikipedia.org/wiki/Battery_%28electricity%29 13. “LM340”. http://www.national.com/ds.cgi/LM/LM340.pdf 14. “LTC4010”. http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1003,C1037,C10 78,P9614,D6917 15. “NTE2371”. http://www.nteinc.com/specs/2300to2399/pdf/nte2371.pdf 16. “1N5820”. http://www.fairchildsemi.com/ds/1N/1N5820.pd
CÓDIGO FUENTE #include
#include #include "global_ucr.h" #include "uart_ucr.h" // Definicion estados del semaforo #define ESTADO_CONTANDO_TVMIN 1 #define ESTADO_TV_VENCIDO 2 #define ESTADO_LUZ_AMARILLA 3 #define ESTADO_TPASO 4 #define ESTADO_TPASO_PARPADEANDO 5 // Definicion de tiempo por defecto #define TIEMPO_VERDE 0x08 #define TIEMPO_AMARILLO 0x03 #define TIEMPO_PASO 0x04 #define TIEMPO_PASO_PARPADEANDO 0x03 // Definicion de luces #define LUCES_VERDE 0x11 #define LUCES_AMARILLO 0x12 #define LUCES_PASO 0x0C #define LUZ_ROJA 0x04 #define LUZ_PASO 0x08 // Definicion de deteccion #define DET_VERDE 0x01 #define DET_AMARILLO 0x02 #define DET_ROJO 0x04
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 13
#define DET_PASO 0x08 #define DET_NOPASO 0x10 #define DET_FUENTE 0x20 #define DET_BAT 0x40 // Definicion tiempos #define RETARDO_SEGUNDO 488 #define PERIODO_PARPADEO 100 #define RETARDO_PARPADEO_TOTAL 120 #define RETARDO_WATCHDOG 25 #define RETARDO_BOCINA1 150 #define RETARDO_BOCINA2 300 // Definicion constantes programacion #define INICIO_PROGRAMACION 'p' #define VERDE_PROGRAMACION 'v' #define AMARILLA_PROGRAMACION 'a' #define PASO_PROGRAMACION 'w' #define PASO_PARPADEANDO_PROGRAMACION 'f' #define SALIR_PARPADEO_TOTAL 'y' #define PARPADEO_TOTAL 't' #define SALIR_PROGRAMACION 'x' // Definicion de variables globales volatile u08 tiempoEstado, tiempoVerdeMinimo, tiempoAmarillo, tiempoPaso, tiempoPasoParpadeando, tiempoVerdeMinimoProgramacion, tiempoAmarilloProgramacion, tiempoPasoProgramacion, tiempoPasoParpadeandoProgramacion, tiempoWatchdog, tiempoBocina, solicitud, estado, luces, retardoParpadeo, comandoProgramacion, tiempoProgramacion, conteoCarros, activarBocina, digitosProgramacion[3], parpadeoTotal, tiempoParpadeoTotal, digitoValido, fallaSemaforo, estadoLuces, i; volatile u16 numeroDesbordes; // Interrupciones SIGNAL(SIG_INTERRUPT0) { solicitud=1; } SIGNAL(SIG_INTERRUPT1) { GICR&=0x7F; conteoCarros++; GICR|=0x80; }
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 14
SIGNAL(SIG_OVERFLOW0) { // Modo parpadeo total if(parpadeoTotal) { PORTC&=0xFE; if(tiempoParpadeoTotal) tiempoParpadeoTotal--; else { if(PINA & 0x1F) PORTA=0; else PORTA=0x1F; tiempoParpadeoTotal=RETARDO_PARPADEO_TOTAL; } } else { // Manejo de tiempo de estados if(tiempoEstado) { if(!numeroDesbordes) { tiempoEstado--; numeroDesbordes=RETARDO_SEGUNDO; } else numeroDesbordes--; } // Manejo de luces if(estado!=ESTADO_CONTANDO_TVMIN) { if(PORTA==luces) PORTA=0; else PORTA=luces; } else { if(!retardoParpadeo) { retardoParpadeo=PERIODO_PARPADEO; if(PORTA & LUZ_PASO) PORTA&=0x17; else PORTA|=LUZ_PASO; } else { retardoParpadeo--; if(PORTA & LUZ_ROJA) PORTA&=0x1B; else PORTA|=LUZ_ROJA; } } // Manejo Bocina if(estado==ESTADO_TPASO_PARPADEANDO) { if(!tiempoBocina) { tiempoBocina=RETARDO_BOCINA1; activarBocina=!activarBocina; } else tiempoBocina--; } else if(estado==ESTADO_CONTANDO_TVMIN) {
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 15
if(!tiempoBocina) { tiempoBocina=RETARDO_BOCINA2; activarBocina=!activarBocina; } else tiempoBocina--; } if((estado==ESTADO_TPASO_PARPADEANDO)||(estado==ESTADO_CONTANDO_TVMIN)) { if(activarBocina) { if(PINC & 0x01) PORTC&=0xFE; else PORTC|=0x01; } else PORTC&=0xFE; } else PORTC&=0xFE; } // Manejo Watchdog if(!tiempoWatchdog) { tiempoWatchdog=RETARDO_WATCHDOG; if(PINC & 0x02) PORTC&=0xFD; else PORTC|=0x02; } else tiempoWatchdog--; } int main(void) { DDRA=0x1F; // LEDs e indicador de estado de emergencia DDRB=0x00; // Deteccion DDRC=0x03; // Bocina y Watchdog DDRD=0X00; // Solicitud y ConteoCarros MCUCR=0x0F; GICR=0x00; // Valores de inicializacion parpadeoTotal=0; tiempoEstado=0; tiempoVerdeMinimoProgramacion=FALSE; tiempoAmarilloProgramacion=FALSE; tiempoPasoProgramacion=FALSE; tiempoPasoParpadeandoProgramacion=FALSE; tiempoVerdeMinimo=TIEMPO_VERDE; tiempoAmarillo=TIEMPO_AMARILLO; tiempoPaso=TIEMPO_PASO; tiempoPasoParpadeando=TIEMPO_PASO_PARPADEANDO; tiempoWatchdog=0; tiempoBocina=0; tiempoParpadeoTotal=RETARDO_PARPADEO_TOTAL; retardoParpadeo=0; numeroDesbordes=RETARDO_SEGUNDO; luces=LUCES_VERDE; activarBocina=FALSE; solicitud=0;
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 16
tiempoEstado=0; conteoCarros=0; digitoValido=0; fallaSemaforo=FALSE; estadoLuces=FALSE; estado=ESTADO_CONTANDO_TVMIN; // Habilitacion de UART e interrupciones uart_init(); sei(); // Mensaje de bienvenida uart_putstr("\n\f\rSemaforo inteligente\n\n\r"); // Habilitacion timer0 TIFR=0x01; TIMSK=0x01; TCCR0=0x03; while(TRUE) { if(!(PINA & 0x20)) { parpadeoTotal=TRUE; fallaSemaforo=TRUE; } else { if(fallaSemaforo) { fallaSemaforo=FALSE; parpadeoTotal=FALSE; } // Revision de bus de control (programacion) if(uart_getchar()==INICIO_PROGRAMACION) { uart_putstr("\n\f\rModo programacion\n\r"); while(TRUE) { // Definicion de luz a p rogramar while(!(comandoProgramacion=uart_getchar())); if(comandoProgramacion==SALIR_PROGRAMACION) { uart_putstr("\n\f\rProgramacion terminada\n\r"); break; } else if(comandoProgramacion==PARPADEO_TOTAL) { parpadeoTotal=TRUE; break; } else if(comandoProgramacion==SALIR_PARPADEO_TOTAL) { parpadeoTotal=FALSE; break; } // Definicion de tiempo a programar i=3; digitoValido=TRUE; while(i) { uart_putstr("\n\f\rDigito "); uart_putchar(0x2F+i); uart_putstr("\n\r"); while(TRUE) { while(!(digitosProgramacion[i-1]=uart_getchar())); if((digitosProgramacion[i-1] <= 0x29) || (digitosProgramacion[i-1] >= 0x40)) { uart_putstr("\n\f\rError en digito\n\r"); digitoValido=FALSE; } else
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 17
digitosProgramacion[i-1]-=0x30; break; } i--; } tiempoProgramacion=digitosProgramacion[0]+10*digitosProgramacion[1]+100*digitosProgr amacion[2]; switch(comandoProgramacion) { case VERDE_PROGRAMACION: uart_putstr("\n\f\rLuz verde programada\n\r"); tiempoVerdeMinimoProgramacion=tiempoProgramacion; break; case AMARILLA_PROGRAMACION: uart_putstr("\n\f\rLuz amarilla programada\n\r"); tiempoAmarilloProgramacion=tiempoProgramacion; break; case PASO_PROGRAMACION: uart_putstr("\n\f\rLuz paso programada\n\r"); tiempoPasoProgramacion=tiempoProgramacion; break; case PASO_PARPADEANDO_PROGRAMACION: uart_putstr("\n\f\rLuz paso parpadeando programada\n\r"); tiempoPasoParpadeandoProgramacion=tiempoProgramacion; break; default: uart_putstr("\n\f\rError en comando\n\r"); digitoValido=FALSE; break; } if(!digitoValido) { uart_putstr("\n\f\rError en algun digito\n\r"); break; } } } // Maquina de estados semaforo if(!tiempoEstado) { // Deteccion de fallo de baterías y fuente conmutada if(PINB & DET_FUENTE) uart_putstr("Fallo fuente conmutacion\n\n\r"); if(!(PINB & DET_BAT)) uart_putstr("Fallo banco baterias\n\n\r"); switch(estado) { case ESTADO_CONTANDO_TVMIN: // Programacion de nuevos tiempos if(tiempoVerdeMinimoProgramacion) { tiempoVerdeMinimo=tiempoVerdeMinimoProgramacion; tiempoVerdeMinimoProgramacion=FALSE; } if(tiempoAmarilloProgramacion) { tiempoAmarillo=tiempoAmarilloProgramacion; tiempoAmarilloProgramacion=FALSE; } if(tiempoPasoProgramacion) { tiempoPaso=tiempoPasoProgramacion; tiempoPasoProgramacion=FALSE; }
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 18
if(tiempoPasoParpadeandoProgramacion) { tiempoPasoParpadeando=tiempoPasoParpadeandoProgramacion; tiempoPasoParpadeandoProgramacion=FALSE; } estadoLuces=PINB & 0x1F; if(estadoLuces & DET_ROJO) uart_putstr("Fallo luz roja\n\n\r"); if(estadoLuces & DET_NOPASO) uart_putstr("Fallo luz nopaso\n\n\r"); GICR=0xC0; conteoCarros=0; luces=LUCES_VERDE; tiempoEstado=tiempoVerdeMinimo; estado=ESTADO_TV_VENCIDO; break; case ESTADO_TV_VENCIDO: if(solicitud) estado=ESTADO_LUZ_AMARILLA; break; case ESTADO_LUZ_AMARILLA: uart_putstr("\n\f\rCarros contados "); uart_putchar(0x30+conteoCarros); uart_putstr("\n\r"); GICR=0x00; estadoLuces=PINB & 0x1F; if(estadoLuces & DET_VERDE) uart_putstr("Fallo luz verde\n\n\r"); if(estadoLuces & DET_PASO) uart_putstr("Fallo luz paso\n\n\r"); luces=LUCES_AMARILLO; tiempoEstado=tiempoAmarillo; solicitud=0; estado=ESTADO_TPASO; break; case ESTADO_TPASO: estadoLuces=PINB & 0x1F; if(estadoLuces & DET_AMARILLO) uart_putstr("Fallo luz amarillo\n\n\r"); if(estadoLuces & DET_PASO) uart_putstr("Fallo luz paso\n\n\r"); luces=LUCES_PASO; tiempoEstado=tiempoPaso; tiempoBocina=0; estado=ESTADO_TPASO_PARPADEANDO; break; case ESTADO_TPASO_PARPADEANDO: GIFR=0xFF; GICR=0x40; retardoParpadeo=PERIODO_PARPADEO; tiempoBocina=0; tiempoEstado=tiempoPasoParpadeando; estado=ESTADO_CONTANDO_TVMIN; break; } } }} return 0;
Miguel Alejandro Barajas García, Código; 301721186, [email protected] Proyecto de Diseño con Electrónica Integrada. Página 19