SISTEMA DE TRÁFICO VEHICULAR
🔴 En este articulo encontrarás:
Resumen:
En el presente proyecto se muestra el diseño de un sistema de trafico vehicular formado por dos semáforos convencionales que controlan el flujo vehicular de dos vías perpendiculares, con sus respectivos mensajes en pantallas LCD que indican el estado en el que se encuentra cada respectivo semáforo, adicional muestra la temperatura ambiental y el conteo de un reloj digital, la información mencionada anteriormente es transmitida al puerto serial a través del uso de periférico del EUSART del microcontrolador pic 18f4550.
Abstract: This project shows the design of a vehicular traffic system formed by two conventional traffic lights that control the vehicular flow of two perpendicular lanes, with their respective messages on LCD screens that indicate the status of each respective traffic light, additional Displays the ambient temperature and the count of a digital clock, the information mentioned above is transmitted to the serial port through the use of the EUSART peripheral of the pic 18f4550 microcontroller.
Keyword: Pic18f4550, Comunicación Serial, ADC, Baudios, Pantalla LCD, Interrupciones, registros.
I.
INTRODUCCIÓN
A continuación, se muestra el microcontrolador utilizado en este proyecto, que es el microcontrolador pic 18f4550.
Figura 1: Microcontrolador PIC 18F4550.
¿Sabes que son los sistemas embebidos?. Quizás te gustaría revisar: https://educatronicosisc.blogspot.com/2022/03/que-son-los-sistemas-embebidos.html
II. Desarrollo del proyecto
1.1 2.1.
Descripción general:
El presente proyecto es un sistema de trafico
vehicular que consta de 2 semáforos que controla el flujo de dos carriles
perpendiculares que para este caso son autos y peatones. Como un sistema real,
menciona la indicación cara los autos y peatones, si es que pueden avanzar
(color verde), espere (color amarrillo) y stop (color rojo) juntamente con el
tiempo que queda para cada estado, además muestra la temperatura para cada
semáforo, juntamente con el tiempo actual del día. Además, la información
acerca de las temperaturas se envía a través de la comunicación serial por el
puerto EUSART.
Figura 2: Diagrama general del proyecto.
1.1 2.2.
Desarrollo del código:
2.2a. Manejo de librerías
Para este proyecto
se ha utilizado 4 librerías que se muestran a continuación:
Figura 3: Manejo
de librerías.
Figura 4: Librería ADC.
La primera función nos ayuda a configuras el módulo ADC, mientras que la segunda librería elegimos el canal analógico que deseamos leerá y nos devuelve el valor leído con una longitud de 16 bits (2 bytes). La segunda y tercera librería que se utilizan son la de las pantallas LCD, que nos permiten controlar y enviar mensajes a esta pantalla. La segunda librería tiene como salida al puerto D mientras que la tercera librería tiene al puerto B.
Figura 5: Librería Pantalla LCD 1.
Como podemos observar en las figuras 5 y 6 vemos que los nombres de las funciones de las librerías son bastantes intuitivas acerca de su función además ambas poseen el mismo nombre de las funciones con la diferencia que la pantalla 2 se le agrega el numero 2 al final de todas las funciones.
Figura 6: Librería Pantalla LCD 2.
Esta librería USART nos permite comunicación a través de los pines RX y Tx del microcontrolador gracias al periférico EUSART a través de la comunicación serial. Nos permite enviar y recibir un carácter y cadena de caracteres.
Figura 7: Librería USART.
2.2b. Código desarrollado en
MPLAB X IDE
El primer paso que se realizó será incluir todas las librerías que se utilizaran en el código:
Figura 8: Incluimos todas las librerías.
A continuación, definimos todas las macros del sistema:
Figura 9: Incluimos los macros del código.
A continuación, se presenta la máquina de estados del programa, se utilizará este modelo para definir los 4 estados de un juego de semáforos.
Figura 10: Definimos la máquina de estados.
Figura 11: Definimos los prototipos de las
funciones.
Figura 12: Definimos las variables del programa.
A continuación, se presenta la configuración inicial del programa donde se configura las entradas y salidas, juntamente con la inicialización de variables.
Figura 13: Configuración inicial del programa.
A continuación, se presenta el código dentro del bucle, donde obtenemos primero el valor de la temperatura a través de la función “Canal_ADC” que tiene como parámetro de entrada el canal analógico que se desea leer. Después convertimos las variables en Caracteres para poder visualizarlos a través de las pantallas LCD´s. Al final se muestra el uso de la máquina de estados con el uso del switch en la cual en los “case” están los estados.
Figura 15: Interrupción.
Figura 16: Función para enviar mensaje por el EUSART.
A continuación, se presenta la función para el primer estado, donde los peatones avanzan mientras los autos están en rojo. Primero se evalúa la variable “TiempoPeatones” y “TiempoAutos” con el tiempo de verde y tojo definidos en los macros. A continuación, muestra el mensaje juntamente con el tiempo actual del estado por las pantallas LCD´s, se pone una condicional para no mostrar en la pantalla el tiempo 0 segundos. Ademas se escriben las salidas para las luces del semáforo, se añade la información de la temperatura por las pantallas y el tiempo. Finalmente se evalúa la condición para pasar al siguiente estado.
Figura 17: Función para el primer estado.
La misma estructura para los 3 estados siguientes.
Figura 18: Estados del programa.
A continuación, se
muestra la función que imprime el tiempo en las pantallas LCD´s.
Figura 19: Imprimir el tiempo en las pantallas
LCD´s.
A continuación, se
muestra la configuración global de las interrupciones, la configuración de
TIMER 0 y además con figuración del mismo TIMER a través de las interrupciones.
Figura 20: Configuración de las interrupciones
y del timer 0.
Finalmente
se presenta la función que realiza la impresión de la información de las
temperaturas en las pantallas LCD´s.
Figura 21: Configuración de las interrupciones
y del timer 0.
III. SIMULACIÓN:
Figura 22: Simulación del proyecto en el software de Proteus.
Código de la programación y de la simulación en Proteus: https://github.com/MauroMA-99/ArchivosPIC/tree/main/PROYECTO%20SEMAFORO
Visita nuestro canal de YouTube para mas contenido: https://www.youtube.com/channel/UC93Nt6sA-7r_S7EtGO44GeA