LABORATORIO 08 - Semaforo Arduino

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN FACULTAD DE INGENIERIAS ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y

Views 134 Downloads 0 File size 519KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

PRÁCTICA DE LABORATORIO N°08 (Ultimo laboratorio) “SEMÁFORO PROGRAMABLE” I.

OBJETIVOS  Realizar el sketch de programación en sentencias C  Realizar el conexionado de un diodo LED correctamente en la tarjeta Arduino.  II. MATERIALES Y EQUIPO          

1 Computador con el programa Arduino ver 1.0.5 1 tarjeta Arduino Uno/Mega + 1 cable de conexión USb 1 diodo LED color Rojo de 5 mm 1 diodo LED color Amarillo (o ámbar) de 5 mm 1 diodo LED color Verde de 5 mm 3 Resistencia de 270 Ω x ½ Watts 1 Resistencia de 100KΩ x ½ Watts 1 pulsador en miniatura para conmutación 1 sensor de temperatura LM35Z 1potenciometro de 100K

III. FUNDAMENTO TEORICO Conocimientos previos al proyecto: Entradas y salidas digitales Los pines digitales 0 a 12 pueden configurarse para ser utilizados como entrada o como salida, esta asignación la determinamos en el sketch. Puesto que vamos a conectar componentes electrónicos en estos pines, es improbable que una vez establecidos queramos volver a cambiarlos. Es decir, una vez que hayamos configurado un pin como salida, no lo vamos a cambiar en mitad de un sketch para que sea una entrada. Por esta razón, suele ser práctica habitual fijar la dirección de un pin digital en la función de configuración que debe definirse en cada sketch. Por ejemplo, el siguiente código (a continuación de pinMode) establece el pin digital 10 como salida (output) y el pin digital 11 como entrada (input).Observe cómo utilizamos esta declaración de variables en nuestro sketch para hacer que resulte más fácil cambiar posteriormente el pin utilizado si así nos conviene más adelante. int ledPin=10; int switchPin=11; void setup() { pinMode(ledPin, OUTPUT ); pinMode(switchPin, INPUT); }

 Ahora que ya sabemos cómo establecer un pin digital para que actúe como entrada, pasemos a construir un proyecto de modelo de semáforo con la utilización de LEDs rojo, amarillo y verde. VI. PROCEDIMIENTO Proyecto 01: “Semáforo”  Cada vez que pulsemos el botón, la luz del semáforo cambiará al color siguiente de la secuencia prevista. En el Reino unido, la secuencia de los semáforos es: rojo, rojo y amarillo juntas, verde, amarillo y, a continuación, vuelve al rojo. Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

1

T/04/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

 Al presionar el pulsador, las luces cambiarán solas siguiendo la secuencia prevista, aunque con un cierto retardo entre cada paso. También haciendo un pulso, las luces cambian.  El esquema electrónico del proyecto se muestra en la Figura 1. Los LEDs están conectados cada uno con su resistencia limitadora de corriente. El pin digital 5 está puesto a masa (GND) a través de R4, y cuando pulsamos S1, éste pasa a 5 V.

Figura 1: Diagrama de conexionado de los LED's a la placa Ardinuo

Figura 2: Diagrama de la placa de prueba protoboard

 El sketch del proyecto es bastante auto explicativo y se muestra a continuación. Una vez por segundo, el programa comprueba si se ha presionado el pulsador, de forma que si lo pulsamos varias veces con rapidez no cambiará la secuencia de luces. Sin embargo, si mantenemos presionado el pulsador, las luces harán la secuencia completa automáticamente.

Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

2

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

/* Semaforo Proyecto de modelo de semáforo con la utilización de LED’s rojo, amarillo y verde. */ // Cada vez que pulsemos el botón, la luz del semáforo cambiará al color siguiente // de la secuencia prevista. En el Reino unido, la secuencia de los semáforos es: // rojo, rojo y amarillo juntas, verde, amarillo y, a continuación, vuelta al rojo. // Al mantener presionado el botón, las luces cambiarán solas siguiendo la secuencia // prevista, aunque con un cierto retardo entre cada paso. // Declaramos las variables de los PINES a utilizar: int rojoPin = 2; //LED rojo conectado al PIN digital 2 int amarilloPin = 3; int verdePin = 4; int botonPin = 5; int estado= 0; // Creamos una rutina que corre una vez cuando se presiona el boton RESET: void setup() { pinMode(rojoPin, OUTPUT); // Inicializa el pin digital 2 como una salida // (OUTPUT) pinMode(amarilloPin, OUTPUT); pinMode(verdePin, OUTPUT); pinMode(botonPin, INPUT); // Inicializa el pin digital 5 como una entrada } // La rutina de lazo loop corre muchas veces siempre: void loop() { if (digitalRead(botonPin)) { if (estado==0) { setLuces(HIGH, LOW, LOW); estado=1; } else if (estado == 1) { setLuces(HIGH, HIGH, LOW); estado=2; } else if (estado == 2) { setLuces(LOW, LOW, HIGH); estado=3; } else if (estado == 3) { setLuces(LOW, HIGH, LOW); estado=0; } delay(500); } } void setLuces(int rojo, int amarillo, int verde) { digitalWrite(rojoPin, rojo); digitalWrite(amarilloPin, amarillo); digitalWrite(verdePin, verde); }

 El sketch también utiliza una función independiente, setLuces, para establecer el estado de cada LED. Reduciendo así tres líneas de código a una. Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

3

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

 Guarde el sketch con nombre de archivo Semaforo.ini  Cargue el sketch terminado sketch a la tarjeta Arduino haciendo clic en el botón Cargar.  Pruebe el proyecto manteniendo pulsado el botón del pin 5 y compruebe que todos los LED’s se van iluminando siguiendo la secuencia establecida.

RETO 1:

Modifique el sketch del proyecto de tal modo que la secuencia de los LED’s del semáforo sea similar a Perú. Es decir, implementar el control de dos semáforos dispuestos conforme el gráfico siguiente.  La secuencia de encendido de las luces verde (V), ámbar (A) y roja (R) está indicada en los diagramas de tiempo siguientes.

Solución: Remítase al archivo de sketch SemaforoPeru.ini

Proyecto 02: Voltímetro Conocimientos previos al proyecto La placa Arduino UNO está equipada con seis pines analógicos de entrada, numerados Analog 0 a Analog 5 (A0, A1, … A5). En ellos se mide el nivel de tensión en la entrada, dando como resultado un número entre 0 (0 V) y 1023 (5 V). Nivel 0 … Nivel 512 … Nivel 1023

0V 2.5 V 5V

Esta característica la podemos aprovechar para conocer cuál es la posición del mando de un potenciómetro de manera que al variar su resistencia este actúe como un divisor de tensión para nuestro pin analógico. La Figura 11 muestra la estructura interna de un potenciómetro. Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

4

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

A

Simbología B 2.5 V

0V

Al Arduino

A

C B C

Figura 11: Funcionamiento interno de un potenciómetro

El potenciómetro es un componente electrónico que se utiliza habitualmente para el control de volumen. Está constituido por una pista circular de una cierta resistencia equipada con conexiones en ambos extremos. Un cursor deslizante proporciona una tercera conexión móvil. La resistencia ajustable del potenciómetro nos puede proporcionar un voltaje variable al conectar uno de sus extremos a 0 V, y el otro a 5 V, con lo que el nivel de tensión en el cursor deslizante puede variar entre 0 y 5 V, según se gire la perilla o el mando. La parte más interesante es la relacionada con la lectura de los valores de la entrada analógica. En el caso de los pines analógicos no es necesario utilizar la función pinMode, por lo que no hay que añadir nada más a la función de configuración (setup). Por lo tanto, si nuestra entrada analógica cambia de 0 a 1023, el cálculo que necesitamos para determinar el valor de tensión o voltaje es: (valor de nivel * 5 v) Voltaje  1023 Dónde: Valor de nivel = 0 ….1023 El valor de nivel es lo que lee la entrada analógica del Arduino, por ejemplo si A0 = 512, su correspondiente nivel de voltaje es de: (512 * 5) Voltaje   2.5024 Voltios , que podemos aproximar a 2.5 V. 1023 El Arduino Uno posee internamente un convertidor Analógico a Digital (ADC) de 10 bits de resolución, por lo tanto el número de niveles que puede generar es: # Niveles  2 n  1  2101  1024  1  1023 Donde: n: es la resolución del ADC, n= 10 (resolución del Arduino Uno) Como consecuencia, un analog_value 0 (A0) daría números de valores enteros o en punto flotante, según se programe en el sketch. Procedimiento:

Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

5

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

1. El esquema electrónico del proyecto se muestra en la Figura 12. El potenciómetro está

conectado su patilla del medio en A0 (entrada analógica 0) el extremo superior a 5 V y el extremo inferior a GND (tierra) respectivamente de la tarjeta Arduino 5V

Potenciómetro de 10 KΩ

A0

Figura 12: Esquema electrónico del proyecto 6 .2. El sketch (listado) de código de este proyecto se muestra a continuación /* LecturaVoltajeAnalógico Lee una entrada analogical del pin 0 (A0), convierte a voltaje, e imprime el resultado en el Monitor Serial. Coloque el pin central del potenciómetro en el pin A0, y los pines extremos a +5V y tierra (GND) respetivamente. */ // La rutina de configuración (setup) se ejecuta una sola vez al presionar reset: void setup() { //Inicializa la comunicación serial a velocidad de 9600 bits por segundo (bps): Serial.begin(9600); } void loop() { // Lee la entrada analogical del pin 0: int valorSensor = analogRead(A0); // Convierte la lectura analógica (que vas desde 0 - 1023) a un voltaje (0-5V): float voltaje = valorSensor * (5.0 / 1023.0); // Imprime en la salida el valor leído: Serial.print(“Voltaje = “); Serial.println(voltaje); delay(250);

// Retardo de 0.25 seg } 3. Guarde el sketch con nombre de archivo Voltimetro.ini

4. Cargue el sketch terminado sketch a la tarjeta Arduino haciendo clic en el botón Cargar. 5. Lance el monitor serial (lupa que se encuentra en la posición derecha superior de la ventana de Arduino) y comprobará que girando el potenciómetro en el sentido de las agujas del reloj aumentará la tensión desde 0 hasta 5 voltios. Si lo giramos en el sentido contrario disminuirá la tensión desde 0 a 5 voltios. Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

6

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

RETO 2: Realice un programa que v i s u a l i c e e l m a y o r y e l m e n o r v a l o r d e v o l t a j e a medida que va girando la perilla del potenciómetro.

PROYECTO 03.- Medición de Temperatura con Sensor Integrado LM335Z Conocimientos previos al proyecto: El LM335 es un circuito integrado que actúa como un sensor de temperatura calibrado directamente en grados Farenteigh, que se alimenta entre 2.7V y 5.5V y que por lo tanto es ideal para usarlo con nuestra placa Arduino. El LM335 proporciona una salida de voltaje directamente proporcional a la temperatura en grados F Farenteigh. Algunas características son:     

Rango de temperatura: -40°C to 150°C / -40°F to 302°F Factor de escala 10 mV/°C Precisión de ±2°C Linealidad de ±0.5° Alimentación: Entre 2.7 y 5.5V.

La salida de voltaje vs la temperatura se muestra en la figura 19.

Figura 19: Salida de voltaje a temperatura. Del gráfico anterior, la recta b, que hace referencia al sensor TMP36, cuya respuesta es lineal. Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

7

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA DE COMPUTADORES AÑO DE ESTUDIOS : QUINTO CICLO

SEMESTRE

:

I

Procedimiento: 1. El esquema electrónico del proyecto se muestra en la Figura 16. Tendremos que montar el siguiente circuito sobre la placa protoboard:

Figura 20: Salida de voltaje a temperatura. 2. Ya sobre la protoboard real, realice el montaje, tal como muestra la figura 21.

Sensor LM335Z

Figura 21: Montaje en protoboard del sensor de temperatura LM335.

Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

8

T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN

FACULTAD DE INGENIERIAS

ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA Y COMPUTADORAS AÑO DE ESTUDIOS : QUINTO CICLO

3.

SEMESTRE

:

I

Se debe tener cuidado de poner correctamente cada cable donde corresponda, el azul - el de señal-, entre la pata del centro del sensor y el pin A0de Arduino, el cable rojo entre la pata que queda más a la izquirda y el pin 5V del Arduino y finalmente el cable negro entre la pata que queda más a la derecha y el pin GND del Arduino.

Figura 22: Cables de colores del sensor de temperatura, conectados al Arduino. 4.

Una vez realizado el montaje, vamos a programar el código sobre la placa Arduino Uno. El sketch de la aplicación, a continuación se muestra en el listado.

/* TEMPERATURA: Medición de temperatura con sensor TMP36 o LM35 */ float temp; int tempPin=A0;

//Entrada analógica 0

void setup() { Serial.begin(9600); } void loop() { temp=analogRead(tempPin); temp=(5.0*temp*100)/1024.0; Serial.print(“Temperatura : “); Serial.print(temp); Serial.println(" grados C"); delay(500); } 5. Compilamos el código para asegurarnos que no hay errores con el botón . Si no hay errores en la compilación veremos el siguiente mensaje en la parte inferior del IDE de Arduino 6. Guarde el sketch con nombre de archivo TemperaturaCenti.ini 7. Luego transferimos el código al microcontrolador mediante el botón cargar la transferencia al microcontrolador es exitosa veremos el siguiente mensaje: Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

9

. Si . T/11/07/2017

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN ESCUELA PROFESIONAL DE INGENIERÍA EN INFORMATICA Y SISTEMAS CURSO : ARQUITECTURA Y COMPUTADORAS AÑO DE ESTUDIOS : QUINTO CICLO

FACULTAD DE INGENIERIAS SEMESTRE

:

I

8. Finalmente, ya podemos empezar a medir temperaturas con el botón de Monitor Serial Veremos una pantalla, que ya nos muestra la temperatura en grados centígrados:

9. Finalmente probar que el sensor funciona, con precaución podemos acercar una fuente de calor al sensor y ver como efectivamente la temperatura sube, o simplemente poniendo la mano cerca. Puede poner para este caso el sensor cerca al ventilador de la laptop.

RETO 3: Modifique el programa de modo que visualice el registro de temperatura en grados Farentheth y Kelvin. Solución: Remítase al archivo tempereaturaF&K.ini INFORME FINAL PARA EL LABORATORIO 07: 1. 2. 3.

4. 5.

6. 7.

Realice todos los pasos indicados en la presente práctica incluido los Retos. Realice la simulación en Proteus de los programas respectivos Realizar la programación y la simulación en Proteus de un sistema de temperatura que de una alarma (encienda un LED) a medida que la temperatura aumenta por encima de 30 grados °C y encienda otro LED a medida que la temperatura disminuya por debajo de 20 °C. En todo momento los datos se debe guardar en una hoja de Excel. Vea el siguiente link y de su opinión: https://www.youtube.com/watch?v=NaDrt-rH5JY Vea el siguiente link. Donde lo puede aplicar en su carrera de Ing. Inf&Sist (de su comentario) https://www.youtube.com/watch?v=xftEjHPU_U4 De 4 conclusiones más importantes del presente laboratorio De 3 observaciones más importantes del presente laboratorio NOTA: PRESENTACION DEL INFORME Nro. 08 PROXIMO MARTES 18/09/2017

Docentes: MSc. Alberto E. Cohaila B. / Ing. Katherine Elías Q.

10

T/11/07/2017