domingo, 15 de septiembre de 2019

Control de dos semaforos con Atmega16 [Proyecto 2]


Programando Embedded System Microcontroller con Metologia interactiva.

                                                                                                  
GILBERTO PASCUAL, 2019



Passive Avr
Programmer




Figura1

Figura2


“Ahora usted puede aprender a Programar Microcontroladores de forma muy fácil”.




Introducción:

El siguiente proyecto se trata de utilizar las funciones básicas para poder controlar dos semáforos (principal y secundario) en una intersección de avenidas. Los tiempos para cada luz será: verde 10 segundos, rojo 8 segundos y naranja 3 segundos.


Esquema electrónico:

El siguiente esquema electrónico muestra la implementación de este proyecto en un ambiente de test o simulación, mediante el cual podemos ver el funcionamiento del software e interacción con el hardware:

Figura3

Nota: El esquema presentado no es necesariamente el que se implementaría en un ambiente real.


Programa de Control [Firmware]:

En la Figura4, se puede apreciar el código escrito en lenguaje Basic para controlar las luces de los dos semáforos (principal y secundario).

Figura4


Análisis del código del Programa:

1.     $regfile = "m16def.dat" Declaramos el Microcontrolador que usaremos, con esto el compilador conocerá los componentes internos que podemos utilizar.

2.     $crystal = 4000000 Declaramos la frecuencia con la cual trabajara nuestro Microcontrolador, puede usarse un cristal interno o externo.

3.     Config Portb = Output Configuramos todos los pines del puerto B del Microcontrolador como salida.

4.     Config Portd = Output Configuramos todos los pines del puerto D del Microcontrolador como salida.

5.     Green_sf1 Alias Portb.0 Renombramos el código que llama al pin B0, con  la palabra “Green_sf1”, que corresponde al pin donde está conectado el color verde del semáforo principal.

6.     Orange_sf1 Alias Portb.1 Renombramos el código que llama al pin B1, con  la palabra “Orange_sf1”, que corresponde al pin donde está conectado el color naranja del semáforo principal.

7.     Red_sf1 Alias Portb.2 Renombramos el código que llama al pin B2, con  la palabra “Red_sf1”, que corresponde al pin donde está conectado el color rojo del semáforo principal.

8.     Green_sf2 Alias Portd.0 Renombramos el código que llama al pin D0, con  la palabra “Green_sf2”, que corresponde al pin donde está conectado el color verde del semáforo secundario.


9.     Orange_sf2 Alias Portd.1 Renombramos el código que llama al pin D1, con  la palabra “Orange_sf2”, que corresponde al pin donde está conectado el color naranja del semáforo secundario.

10.                       Red_sf1 Alias Portd.2 Renombramos el código que llama al pin D2, con  la palabra “Red_sf2”, que corresponde al pin donde está conectado el color rojo del semáforo secundario.

11.                        Portb = 0 Inicializamos todo el puerto B con “0”, para que empiece apagado todos los pines del puerto B.

12.                       Portd = 0 Inicializamos todo el puerto D con “0”, para que empiece apagado todos los pines del puerto D.

13.                        Do Creamos una sentencia secuencial, mediante “Do”, hacemos repetitivo todo el código que se encuentra dentro de lazo “Do” y “Loop”.

14.                       Red_sf1 = 1 Activamos las luz roja del semáforo principal y prendemos la luz verde del semáforo secundario, Green_sf2 = 1, las demás luces lo mantenemos apagados, Orange_sf1 = 0 \ Green_sf1 = 0 \ Red_sf2 = 0 \ Orange_sf2 = 0

15.                       Wait 8  Después de haber hecho las activaciones de las luces lo mantenemos en ese estado por 8 segundos.

16.                       Orange_sf1 = 1 Activamos las luz naranja  del semáforo principal y prendemos la luz naranja del semáforo secundario, Orange_sf2 = 1, las demás luces lo mantenemos apagados, Red_sf1 = 0 \ Green_sf1 = 0 \ Red_sf2 = 0 \ Green_sf2 = 0

17.                       Wait 3  Después de haber hecho las activaciones de las luces lo mantenemos en ese estado por 3 segundos.

18.                       Green_sf1 = 1 Activamos las luz verde del semáforo principal y prendemos la luz roja del semáforo secundario, Red_sf2 = 1, las demás luces lo mantenemos apagados, Red_sf1 = 0 \ Orange_sf1 = 0 \ Orange_sf2 = 0 \ Green_sf2 = 0

19.                       Wait 10  Después de haber hecho las activaciones de las luces lo mantenemos en ese estado por 10 segundos.

20.                       Loop Para cerrar la secuencia condicional “Do”.

21.   End Finalizamos el programa y damos fin del código.



Simulación del proyecto:

En la Figura5, se puede apreciar el momento en el cual se encuentra la luz roja activa en el semáforo principal y el verde para el semáforo secundario:

Figura5

En la Figura6, se puede apreciar la luz naranja encendido para los dos semáforos tanto en el principal como en el secundario:

Figura6

En la Figura7, se puede apreciar el momento en el cual se encuentra la luz verde encendido para el semáforo principal y la luz roja  encendido para semáforo secundario:

Figura7

En la Figura8, se muestra el momento el cual el semáforo principal cambia de color rojo a naranja y de naranja a verde.

Figura8

En la Figura9, se da a conocer cuando se puso a compilar el código del programa, no se encontró ningún error.

Figura9



“Si te gusto el artículo, compártelo, recuerda que hay otros que desean aprender y tú puedes ayudarlos comentando  y  compartiéndolo en tus redes”.

¡Gracias!
Atte. Gilberto Pascual

No hay comentarios:

Publicar un comentario