Subido por Bastian

Informe Semaforo Exp 1

Anuncio
Simulación de Semáforo
Evaluación N°1
Bastián Correa / 15179-0 | L-1
Luis Inostroza / 15179-0 | L-1
Jorge Navarrete / 15179-0 | L-1
| Automatización y Robótica (Laboratorio) |
Profesor: Jorge Carvajal Gezan
09/06/2021
Índice
1.
RESUMEN ........................................................................................................................ 2
2.
OBJETIVOS GENERALES .............................................................................................. 2
1.3. OBJETIVOS ESPECÍFICOS ............................................................................................ 2
3.
CARACTERÍSTICAS GENERALES DEL SISTEMA ....................................................... 2
4.
LÓGICA DE PROGRAMACIÓN....................................................................................... 3
5.
CIRCUITO ........................................................................................................................ 3
5.1 COMPONENTES ELECTRÓNICOS ................................................................................ 3
5.2. CIRCUITO ELECTRÓNICO ............................................................................................. 5
6.
CÓDIGO ARDUINO ......................................................................................................... 7
5.3. CONCLUSIÓN................................................................................................................ 10
5.4. BIBLIOGRAFÍA .............................................................................................................. 11
5.5. ANEXO ........................................................................................................................... 11
INDICE DE ILUSTRACIONES
Ilustración 1 Arduino UNO ............................................................................................. 4
Ilustración 2 diodo LED.................................................................................................. 4
Ilustración 3 diagrama de un diodo LED ....................................................................... 4
Ilustración 4 resistencia cerámica ................................................................................. 5
Ilustración 5 protoboard ................................................................................................. 5
Ilustración 6: Circuito electrónico simulado en Tinkercad............................................. 6
Ilustración 7: Esquema del circuito electrónico simulado en Proteus .......................... 6
INDICE DE TABLAS
Tabla 1 características del sistema ............................................................................... 2
Tabla 2 tiempos por elemento ....................................................................................... 3
PÁGINA 1
1. Resumen
El siguiente informe contiene la primera experiencia del Laboratorio de
Automatización y Robótica de la Universidad de Santiago de Chile. Esta trata
sobre el diseño y programación de un circuito que simula la implementación de un
semáforo vehicular y uno peatonal con un pulsador que disminuye el tiempo de
espera del peatón. Para realizar la experiencia se ocupó el sitio web de Tinkercad
que permite simular circuitos.
El informe contiene la lógica de programación, el código de programación, la
configuración que el circuito y los componentes electrónicos que se usaron.
2. Objetivos Generales
•
•
Que el alumnado pueda relacionarse de manera más profunda con el
simulador Tinkercad.
Aplicar conceptos de circuitos aprendidos en clase.
Objetivos específicos
•
•
Programar el código Arduino que logre simular las acciones que toman los
semáforos.
Diseñar el circuito que simule el funcionamiento de los semáforos con el
botón.
3. Características generales del sistema
La implementación de un semáforo vehicular y uno peatonal con botón acelerador,
implica tener que definir en un principio las relaciones lógicas que se deben aplicar
al sistema, por ejemplo, que cuando la luz verde este encendida en el semáforo
vehicular, entonces la luz roja debe estar encendida en el semáforo peatonal.
Por lo cual se procede a definir las variables que entran en juego:
Tabla 1 características del sistema
Luces del semáforo peatonal
Verde y rojo
Luces del semáforo vehicular
Verde, amarillo y rojo
Botón
Botón pulsador
Tiempo total de un semáforo (s)
25
Tiempo ON de cada luz en semáforo vehicular (s)
Verde: 10 . Amarilla:5 . Roja: 10
Tiempo ON de cada luz en semáforo peatonal (s)
Verde:10 . Roja:15
Tiempo ON de adelanto por el botón (s)
5
PÁGINA 2
4. Lógica de programación
E
1
2
3
4
1
Una vez definidas las variables, el siguiente paso es diseñar la lógica de
programación que tendrá el sistema. Para esto se procederá a definir el loop de
los estados de los semáforos.
Tabla 2 tiempos por elemento
Vehicular
Peatonal
Botón pulsador
Tiempo(s)
Acumulado(s)
Luz verde
Luz roja
Habilitado
10
10
Luz amarilla
Luz roja
Deshabilitado
5
15
Luz roja
Luz verde
Deshabilitado
5
20
Luz roja
Luz verde parpadeante
Deshabilitado
5
25
Luz verde
Luz roja
Habilitado
10
10
Un punto importante que hay que tener en consideración es ¿Hasta qué momento
el botón pulsador estará habilitado? Poniéndose en el supuesto de que en el
estado 1 se presione el botón cuando ya hayan transcurrido 9 segundos, implicaría
un adelanto de 5 segundos, lo que provocaría que la luz amarilla estaría solo 1
segundo prendida. Obviamente esto causaría trágicos accidentes. Por esta razón
es necesario imponer una condición al botón pulsador. La condición más lógica
proviene del hecho de que la luz amarilla debe conservar su tiempo de encendido.
Entonces, como el botón genera un adelanto de 5 segundos, se impone la
condición de que, si el botón es presionado después de haber pasado más de 5
segundos en el estado 1, entonces se procederá a pasar al estado dos
inmediatamente.
5. Circuito
5.1Componentes electrónicos
5.1.1. ARDUINO UNO
El Arduino Uno es una placa microcontroladora basada en el
microcontrolador ATmega328P. Sus características principales son que
consta de 14 pines digitales de los cuales 6 son PMW (Puls-witdhmodulation) que imitan una señal analógica mediante pulsos digitales.
También está constituido por 6 entradas analógicas, y opera a un voltaje
de 5V. Se recomienda que el voltaje de entrada del Arduino Uno sea entre
7-12 V, esta puede ser mediante la conexión USB que lleva instalada(5V)
o con una fuente de poder externa. La corriente en los pines digitales
debe ser DC 20mA (Arduino, s.f.).
La placa Arduino tiene la ventaja de que trabaja en una plataforma
abierta, lo cual facilita la programación de un microcontrolador. Además,
su lenguaje de programación es sencillo.
PÁGINA 3
Ilustración 1 Arduino UNO
5.1.2. DIODO LED
Los diodos en particular son componentes electrónicos que permiten el
paso de la corriente en un solo sentido, comportándose como un
interruptor cerrado en el sentido de paso de la corriente y en el sentido
contrario de conexión, como un interruptor abierto.
Ahora bien, un diodo led es un diodo que además de permitir el paso de
la corriente solo en un sentido, tiene la particularidad de que, este emite
luz. Cuando se conecta un diodo en el sentido que permite el paso de la
corriente se dice que está polarizado directamente, por ello la definición
formal sería: Un diodo Led es un diodo que cuando está polarizado
directamente emite luz.
Ahora bien, su nombre se debe a la palabra LED viene del inglés Light
Emitting Diode que traducido al español es Diodo Emisor de Luz
Ilustración 2 diodo LED
Los diodos leds tienen dos patillas de conexión una larga y otra corta.
Para que pase la corriente y emita luz se debe conectar la patilla larga al
polo positivo y la corta al negativo.
Este es el símbolo que se usa para los diodos led en los esquemas
eléctricos, donde el ánodo será la patilla larga.
Ilustración 3 diagrama de un diodo LED
PÁGINA 4
Los LEDs trabajan a tensiones más o menos de 2V (dos voltios). Si
queremos conectarlos a otra tensión diferente deberemos conectar una
resistencia en serie con él para que parte de la tensión se quede en la
resistencia y al led solo le queden los 2V.
5.1.3. RESISTENCIA ELECTRICA
La resistencia eléctrica puede ser definida como la oposición que un
elemento presenta ante el paso de la corriente. En otros términos, la
resistencia eléctrica es la fuerza que rechaza o se opone a los electrones
que se desplazan en algún material.
La usada para elaborar este circuito es de tipo lineal fija de cerámica, ya
que su valor es predeterminado por el fabricante, nunca cambia.
Ilustración 4 resistencia cerámica
5.1.4. PROTOBOARD
Es un tablero con orificios que se encuentran conectados eléctricamente
entre sí de manera interna, habitualmente siguiendo patrones de líneas,
en el cual se pueden insertar componentes electrónicos y cables para el
armado y prototipado de circuitos electrónicos y sistemas similares.
Ilustración 5 protoboard
Circuito electrónico
A continuación, se muestra la imagen del circuito electrónico simulado en
Tinkercad.
PÁGINA 5
Ilustración 6: Circuito electrónico simulado en Tinkercad.
Para entender de mejor manera las conexiones, también se dibujó el esquema del
circuito utilizando el programa Proteus.
Ilustración 7: Esquema del circuito electrónico simulado en Proteus
PÁGINA 6
En la definición de los valores de las resistencias, si guio por el hecho de que los
leds soportan hasta 20mA. Sabiendo que el circuito está en paralelo, y que el
voltaje del Arduino es de 5V, por ley de Ohm, cada resistencia conectada a un led
deberá tener un valor mínimo de 250 [𝛺]. Mientras que la resistencia conectada al
botón, se le definió una resistencia de 1[𝑘𝛺] , dado que el botón tiene una baja
resistencia ante la corriente. Mientras que la resistencia conectada al botón, se le
definió una resistencia de 1[𝑘𝛺] , para que la corriente de entrada al pin 5 sea de
alrededor de los 20 mA.
6. Código Arduino
El código fue realizado por la plataforma online Tinkercad, y consta de un total de
noventa y cuatros líneas. A continuación, se presenta su estructura dividida en
partes debido a lo extenso que es, y explicando la función que cumple dentro de
la programación del semáforo.
Las primeras 10 líneas señalan las definiciones globales que se toman en cuenta
en el desarrollo del código: donde rojo1, amarillo y verde1, representan las luces
led del semáforo principal y se encuentran asociado a los pines 13, 12 y 11
respectivamente. Por otro lado, rojo2 y verde2 son las luces led del semáforo
peatonal y están conectadas a los pines 7 y 6 del Arduino. Luego se tienen la
variable botón que representa al pulsador conectado al pin digital N°5 y por último
una variable entera nombrada “btn” que cumple la función de indicar la lectura
digital del pulsador.
PÁGINA 7
Desde la línea 11 hasta la línea 22 se desarrolla la estructura del “void setup” del
código, en este lugar se definen las entradas y salidas de la placa de Arduino a
través del comando “pinMode”. Para este caso se tienen que las luces led son las
salidas (OUTPUT) y el pulsador la única entrada (INPUT) presente. El comando
Serial.begin() permite poder habilitar el monitor serie para observar lo que está
pasando en el programa.
A partir de la línea 23 del código ya comienza la estructura “void loop()” que
representa la ejecución de tipo bucle en el programa, el código se tiene
programado de tal manera que cada bucle realizado representará un conteo de 25
segundos, tiempo que demora el semáforo en hacer un ciclo.
En la línea 23 y 24 se definen dos variables locales que se toman en cuenta para
el desarrollo, la primera de ellas corresponde a “contador” y representa el número
del conteo, la segunda de ella representa una variable identificada como “a” que
representa las veces que el usuario a presionado el pulsador, con esta variable se
puede controlar que solo se puede utilizar una vez el botón en cada ciclo del
semáforo, por la sencilla razón de prevenir accidentes que puede causar la
reducción del tiempo de manera continua.
Luego en la línea 29 ya comienza la programación netamente tal a través de un
ciclo while, la condición requerida para ingresar representa el tiempo utilizado en
un ciclo del semáforo, ya que cada vez que se ejecute el while la variable
“contador” irá disminuyendo en una unidad o cinco si se presiona el pulsador. Una
PÁGINA 8
vez ya ingresado al ciclo while se define el valor de la variable global “btn” que
indicará si el pulsador esta presionado o no. Después en la línea 32 se tiene la
primera condicional if que cumplirá la función de encender la luz verde del
semáforo principal y la luz roja del semáforo peatonal hasta alcanzar el valor de
15 en el conteo. Dentro de este primer if se tienen dos condicionales más que
actuaran en el caso de presionar el pulsador, si el conteo está en 20 segundo o
más se le restaran 5 segundos a la variable conteo, en el caso de ser menor y
mayor que 15, la variable conteo tomará el valor igual 15, que corresponde al
cambio de la luz verde a la amarilla en el semáforo principal.
En la línea 49 se encuentra el segundo if principal del programa que tiene la
función de apagar la luz verde del semáforo principal y encender la luz amarilla de
dicho semáforo cuando el contador tiene el valor de 15.
La línea 58 contiene el tercer if principal y actúa cuando el contador llega al valor
de 10, donde apaga el led amarillo y enciende el led rojo del semáforo principal, y
a su mismo tiempo apaga la luz roja del semáforo peatonal y enciende la luz verde
de este último semáforo.
PÁGINA 9
Luego se tiene el cuarto if principal en la línea 69, que hace parpadear la luz verde
del semáforo peatonal cuando el contador llega al valor de 5, durante los últimos
segundos
El quinto y último if principal que apaga la luz verde del semáforo peatonal y la luz
roja del semáforo principal para poder inicial nuevamente el bucle.
El código con la simulación se puede ver a mayor detalle en la siguiente página web:
https://www.tinkercad.com/things/gaG0J8dVEXR
Conclusión
Como conclusión, gracias a la experiencia de recrear el circuito electrónico de un
semáforo real, teniendo en cuenta cada uno de los detalles que tienen importancia,
se pudo dar a conocer su complejidad. De los cuales, en este informe se destaca el
uso de un botón para adelantar el ciclo pudiendo así obtener el verde para los
peatones en un menor tiempo, este “detalle” necesario, por razones de seguridad sólo
opera en los primeros 10 segundos del ciclo, y adelanta por una única vez 5 segundos,
ya que luego de esto es cuando se enciende la luz amarilla y por ninguna razón esta
debe durar menos de lo acostumbrado por los vehículos, como ocurre en la realidad.
PÁGINA 10
Además de ello, otro punto importante es la posición de cada uno de los delay (espera)
en su correspondiente bloque de código ya que es de importancia esperar a que
transcurra un segundo para que avance la variable contadora y así poder mostrárselo
al usuario y definir la acción que corresponde al segundo en el que se encuentra.
Finalmente, se quiere realzar la importancia de las condiciones dentro de nuestro
código, ya que con ellas se pueden manipular distintas acciones para que todo suceda
bajo términos ya definidos.
Bibliografía
Arduino. (s.f.). Obtenido de Arduino/Genuino UNO:
https://www.arduino.cc/en/Main/arduinoBoardUno>#
GDPR Masked. (09 de 08 de 2018). futuroelectrico.com. Obtenido de
https://futuroelectrico.com/resistencia-electrica-para-quesirve/#:~:text=La%20resistencia%20el%C3%A9ctrica%20puede%20ser,el%2
0paso%20de%20la%20corriente.&text=Su%20funci%C3%B3n%20es%2C%
20por%20tanto,de%20medida%20son%20los%20Ohm.
TUCOWS, INC. Tucows Domains Inc. (04 de 02 de 2006). areatecnologia.com.
Obtenido de https://www.areatecnologia.com/electronica/como-es-un-led.html
Anexo
A continuación, se presenta el código completo que fue programado en el Arduino.
#define rojo1 13
#define amarillo 12
#define verde1 11
#define rojo2 7
#define verde2 6
#define boton 5
int btn;
void setup()
{
pinMode(rojo1, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde1, OUTPUT);
pinMode(rojo2, OUTPUT);
pinMode(verde2, OUTPUT);
pinMode(boton, INPUT);
Serial.begin(9600);
}
void loop()
{
PÁGINA 11
int contador=25;
int a=0;
while(contador > 0){
btn=digitalRead(boton);
if(contador > 15){
digitalWrite(rojo1,LOW);
digitalWrite(rojo2,HIGH);
digitalWrite(verde1,HIGH);
Serial.print("[");
Serial.print(contador);
Serial.print("]");
contador--;
if(btn==HIGH && contador>=20 && a==0){
contador=contador-5;
a=1;
}
else if(btn==HIGH && contador<20 && a==0){
contador=15;
}
delay(1000);
}
if((contador <= 15) && (contador>10)){
digitalWrite(verde1,LOW);
digitalWrite(amarillo,HIGH);
Serial.print("[");
Serial.print(contador);
Serial.print("]");
contador--;
delay(1000);
}
if((contador<=10) && (contador>5)){
digitalWrite(amarillo,LOW);
digitalWrite(rojo1,HIGH);
digitalWrite(rojo2,LOW);
digitalWrite(verde2,HIGH);
Serial.print("[");
Serial.print(contador);
Serial.print("]");
contador--;
delay(1000);
}
if((contador<=5) && (contador>1)){
Serial.print("[");
Serial.print(contador);
Serial.print("]");
digitalWrite(verde2,LOW);
delay(250);
digitalWrite(verde2,HIGH);
PÁGINA 12
delay(250);
digitalWrite(verde2,LOW);
delay(250);
digitalWrite(verde2,HIGH);
delay(250);
contador--;
}
if(contador==1){
digitalWrite(verde2,LOW);
digitalWrite(rojo2,LOW);
Serial.print("[");
Serial.print(contador);
Serial.print("]");
contador--;
delay(1000);
}
}
Serial.println("");
}
PÁGINA 13
Descargar