Está en la página 1de 5

MT0008

Laboratorio 2
2022 - 2

Laboratorio 2: Semáforo para autos y peatones

1 Introducción
En esta actividad simularemos un sistema basado en un semáforo que cierra el paso de los
carros cuando un peatón presiona un botón, quien espera para atravesar la calle, ver Fig. 1.
En las noches, debido a la baja demanda de uso, el semáforo pasará a un estado de alerta
continua. En este estado, el semáforo debe estar parpadeando en ambar para los autos, y en
rojo para los peatones. Al amanecer, el semáforo volverá a estar activado.

Figure 1: Diagrama de semáforo para autos y peatones

2 Objetivos
Al fin de este proyecto, el alumno debe ser capaz de:

• Tomar decisiones de proyecto para resolver un problema real y simular los resultados
de esa decisión.

• Diseñar e implementar un circuito para conectar LEDs al microcontrolador.

• Diseñar e implementar un circuito para conectar botones al microcontrolador.

• Diseñar e implementar un circuito para leer un sensor de luz LDR usando un micro-
controlador.

• Utilizar interrupciones temporales y máquinas de estado para coordinar procesos en


tiempo real.

1
MT0008
Laboratorio 2
2022 - 2

3 Teorı́a
3.1 Máquina de estados
Una máquina de estados es un modelo abstracto que nos sirve para analizar determinados
tipos de sistemas. Tenemos especial interés en aquellos sistemas que, a cada instante de
tiempo, asumen un y solo un estado entre muchos otros estados posibles. Para cada estado,
el sistema asume un comportamiento diferente y, dependiendo de sus entradas, se traslada
hacia otro estado.

Ejemplo: Podemos analizar el vuelo de un avión como una máquina de estados. Ini-
cialmente, ocurre el estado de embarque. Después tenemos el estado de despegue, luego
el estado de vuelo crucero, seguido del estado de aterrizaje. Finalmente tenemos el estado
de desembarque. Note que el estado del avión es diferente en cada una de esas etapas. La
transición entre los estados depende de la adquisición de datos de los sensores a bordo (GPS,
altı́metro, velocı́metro, etc.) y de la comparación de esos datos con el plan de vuelo.

Ejemplos: Una lavadora automática, un satélite, juego de fútbol.


Para implementar una máquina de estados en software, necesitamos de una variable para
representar (almacenar) el estado en el que nos encontramos. También,necesitamos de una
función que implemente las reglas de transición de estados. A continuación mostramos un
ejemplo de implementación de una máquina de n estados.

Figure 2: Plantilla de una máquina de estados en C

3.2 LED (Light-Emitting Diode)


Un LED es un diodo que emite luz cuando pasa corriente a través de él. Es necesario conectar
una resistencia en serie con el resistor. Un posible modelo para su funcionamiento eléctrico
es:
En el circuito de la Fig. 1 observamos que por la malla pasa una corriente de I, Asumiendo
que la tensión de la fuente es mayor que el umbral de tensión necesario para encender el led
(Vin > Vd ), podemos verificar que:

2
MT0008
Laboratorio 2
2022 - 2

Figure 3: Circuito para encender un LED

Vin − Vd
I= (1)
R
Entonces, es posible alterar la corriente que pasa por el LED alterando el valor de la
resistencia del elemento colocado en serie a él. Una corriente muy elevada puede dañar el
LED.

3.3 Llave mecánica pushbutton


Un dispositivo pushbutton es una llave mecánica que es activada cuando está presionada.
Al ser activada, la llave cierra el contacto entre dos puntos, ver figura 2. En el circuito,
tenemos dos estados posibles: llave abierta y llave cerrada. Cuando la llave está abierta, no
pasa corriente en el circuito, por lo tanto la tensión de salida es cero. Cuando la llave está
cerrada, el resistor se conecta a la fuente y la tensión de salida es igual a Vcc y la corriente
en el circuito es de VRcc .

Figure 4: Circuito para detectar el estado del pushbotton

3.4 Sensor resistivo LDR


Existen varios sensores simples que cambian el valor de su resistencia eléctrica en función de
una variable ambiental (luz, calor, fuerza, etc.). Una forma simple de medir la intensidad
de dicha variable es mediante un divisor de tensión, ver figura 3.

3
MT0008
Laboratorio 2
2022 - 2

Figure 5: Circuito para medir la división de tensión debido al LDR

3.5 Interrupciones
Es una llamada al procesador para que deje de ejecutar su tarea y realice una interrupción
temporal corta. Luego de la cual, el procesador debe retornar a realizar su actividad normal.
Nunca deben haber rutinas computacionalmente pesadas o loops en una interrupción.

4 Actividad en aula
El trabajo en grupo deberá presentar una prueba de concepto del sistema de semáforo
implementado. El cual deberá ser implementado como se muestra en la Fig. 6 y deberá
funcionar de la siguiente forma:
Al ser inicializado, estará abierto para los carros y cerrado para los peatones. Cuando
un peatón presione el botón, el sistema:

• Espera unos segundos,

• Muestra la luz ámbar para los carros por algún tiempo,

• Cierra para los carros y simultáneamente abre para los peatones,

• Mantiene este estado por tiempo suficiente para que los pasajeros atraviesen la calle,

• Se activa la luz roja intermitente para los peatones, lo cual anuncia que cerrará dentro
de poco,

• El semáforo cierra para los peatones y, simultáneamente, abre para los carros (estado
inicial).

En la noche, el sistema para presionar el botón es ignorado y el semáforo sólamente parpadea


en ámbar para los carros y parpadea en rojo para los peatones, retornando al estado original
en la mañana siguiente. Para esta detección, el grupo debe utilizar un sensor LDR para
detectar la luz. El sistema debe ser capaz de ignorar cambios breves en la luz, tales como el
paso de un ave sobre el sensor en el dı́a, o la luz del farol de un carro durante la noche. Es
decir, únicamente alteraciones de luz, que duren un tiempo aceptable, cambiarán el modo
de operación de nocturno a diurno, y viceversa.

4
MT0008
Laboratorio 2
2022 - 2

Figure 6: Circuito implementado

Consideraciones de la programación del sistema embebido


• Utilizar solamente un timer para generar interrupciones de tiempo. No se permitirán
funciones de atraso como wait(), delay(), sleep() o similares.

• Los parámetros ajustables del programa deben ser fácilmente configurados usando
instrucciones #DEFINE.

• Ejecutar el código paso a paso para depurar el funcionamiento de la máquina de estados.

Links de tutoriales para STM32


• Getting Started with STM32 and Nucleo

• Getting Started with STM32 - Working with ADC and DMA

• Getting Started with STM32 - Timers and Timer Interrupts

También podría gustarte