Lab3 - Pulsadores

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD Emisión: 20/0

Views 156 Downloads 6 File size 405KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 1 / 21

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO DE: MICROPROCESADOR Y MICROCONTROLADOR EXPERIENCIA N°: 03 TÍTULO DE LA EXPERIENCIA: PULSADORES Y LCD

Grupa

Alumno(os):

l

1.Apaza Quispe, Alexander Benjamin 2.Castro Castro, Christian David 3.Condori Calla Luis Carlos 4.Vargaya Quispe, Gennody Yoel Grupo: A  Semestre: Fecha entrega:

7 de

 

Indiv. Total

Docente: Mg. HUARCA Jorge  Hora:

LABORATORIO N° 03

 

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 2 / 21

PULSADORES Y LCD I.- OBJETIVOS: - Realizar programas en C para Arduino con pulsadores - Conceder múltiples funciones a un pulsador II.- FUNDAMENTO TEÓRICO: Temas a desarrollar: 2.1. Circuito de conexión de un pulsador Se trata de un mecanismo simple (los hay muy sofisticados), constituido por un par de contactos eléctricos que se unen o separan por medios mecánicos. En electricidad, los falsos contactos que se producen al ser utilizados normalmente, en algunos casos produce una chispa debido a la corriente que atraviesa los contactos, provocando que quemen en parte y ennegreciendo los contactos eléctricos, lo que a la larga acaba deteriorando dichos contactos. La chispa se produce siempre al separar los contactos (desconectar), en ocasiones parece que también salta al conectarlos, eso es debido a los rebotes mecánicos que se producen al cambiar de estado. El símbolo del esquema para un pulsador de botón es algo diferente que el mostrado. Prepare un LED rojo y una resistencia de 10K Ohms, así como el pulsador de botón y construya un montaje del esquema en su tabla de prototipo cerca del Arduino.

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 3 / 21

2.2. Anti-rebote en circuitos digitales En ocasiones la electrónica que utilizamos es tan rápida que podemos tener problemas con los "rebotes" que se generan en los pulsadores o interruptores que utilizamos conectados a una entrada digital de nuestro microprocesador o con los espúreos que se producen cuando utilizamos sistemas multiplexadores de entrada. En estos casos, la solución es utilizar un circuito de retardo anti-rebote utilizando un circuito resistencia-condensador. Un circuito antirrebote es una práctica a tratar con señales analógicas y digitales, estas últimas pueden provenir de cierre de interruptores, accionamientos de relays y se por sentado o por lo menos, no se mencionan que, están exentas de los rebotes, y aquí reside un problema e n el diseño de un sistema, no considerar estos efectos, en el caso de las señales analógicas se pueden presentar problemas de variaciones bruscas debido a interrupciones en potenciómetros o inducciones electromagnéticas Un circuito anti rebote elimina la serie de pulsos debida al rebote del contacto y produce una sola transición uniforme de la señal binaria, de 0 a 1 o de 1 a 0. 

III.- RECOMENDACIONES EN SEGURIDAD 3.1. En condiciones de una emergencia Identifique:  Vías de acceso y evacuación  Equipos de respuesta a emergencias  Señalización de seguridad 3.2. Complete el ATS (Anexo 1) y cumpla las condiciones obligatorias para el uso del ambiente

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 4 / 21

IV.- EQUIPOS Y MATERIALES A UTILIZAR: Cantidad 1 1 1 1 1 1 3 1

Descripción Arduino Ordenador de mesa Tarjeta de control Lucas Nulle Multímetro Placa de pruebas LCD Pulsadores Juego de cables

V.- PROCEDIMIENTO: Conexión LCD y Arduino 5.1. Realizar la conexión de Arduino y el LCD con ayuda de una placa de pruebas considerando el modo de 4 bits de datos. Además, conecte tres botones pulsadores. Para este laboratorio puede utilizar la librería #include Adjunte imagen del circuito montado, así como el diagrama de conexiones (esquemático).

Figura 5.1.1. Esquemático

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 5 / 21

Figura 5.1.2. Circuito montado 5.2. Realizar una aplicación para que el Arduino pueda inicializar correctamente el LCD en modo 4 bits de datos. En la primera Fila mostrar el mensaje Hora-NombreDeUnIntegrante y en la segunda fila mostrar la hora que empieza el laboratorio, por ejemplo, 12h:20m:00s. Procurar que los mensajes estén centrados. Adjunte el código de la aplicación, así como la imagen del circuito mostrando el mensaje. #include // Libreria para que funcione el LCD LiquidCrystal lcd(0, 2,4,5,6,7); void setup() { lcd.begin(16, 2); //Declaramos el LCD Columnas x Filas lcd.setCursor(2, 0); //Colocamos el lugar donde se imprime el texto lcd.print("Hora-Gennody"); // Instrucción importante que imprime el texto en el LCD } void loop() { lcd.setCursor(3, 1); //Colocamos el lugar donde se imprime el texto

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 6 / 21

lcd.print("2h:00m:01s"); // Instrucción importante que imprime el texto en el LCD }

Código 5.2. código de la función

Imagen 5.2.1. circuito montado con el mensaje 5.3. Modificar la aplicación de tal manera la hora este incrementándose cada segundo, además, configurar los botones como entrada con pull-up, un botón estará ligado a las horas,

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 7 / 21

el otro a los minutos y el tercero a los segundos. Cada vez que se pulse un botón cambiara el cursor a modo intermitente y en su posición respectiva (a revisar). #include #include LiquidCrystal lcd(0, 2, 4, 5, 6, 7); //Declaramos las variables int pulsador1=8; //pulsador para horas int pulsador2=9; //pulsador para minutos int pulsador3=10; //pulsador para segundos int hora=4; int minuto=0; int segundo=0; int decenahora=1; int decenaminuto=0; int decenasegundo=0; void setup (){ //Congiguracion de los puertos pinMode(pulsador1,INPUT); pinMode(pulsador2,INPUT); pinMode(pulsador3,INPUT); //Declaramos el LCD Columnas x Filas lcd.begin(16, 2); } void loop(){ //Funciones, asigna la funcion a realizar incremento (); delay(1000); decenas(); green(); pulsadores(); } //Primera funcion void incremento() { if ( segundo < 10) { segundo++; //Aumenta los segundos }

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD } //Segunda funcion void decenas() { if ( segundo == 10 ) { segundo =0; decenasegundo++; // Aumenta las decenas de los segundos } if ( ( decenasegundo == 6 ) && ( segundo == 0 ) ) { decenasegundo =0; minuto++; //Aumenta los minutos si para los 60 segundos } if ( minuto == 10 ) { minuto =0; decenaminuto++; //Aumenta las decenas de los minutos } if ( ( decenaminuto == 6 ) && ( minuto == 0 ) ) { decenaminuto =0; hora++; //Aumenta la hora si pasa los 60 segundos } if ( hora == 10 ) { hora =0; decenahora++; //Aumenta la decena de las horas } if ( (decenahora == 2) && (hora == 4) ) { hora =0; decenahora =0; //Si pasa las 24 horas regresa a 0 } } //Tercera funcion void green() { lcd.setCursor(2,0); lcd.print("Hora-Gennody"); //Imprime Hora-Gennody en la primera fila lcd.setCursor(3, 1); //Imprime las horas, minutos, segundos en la segunda fila lcd.print(decenahora); lcd.print(hora); lcd.print("h");

Emisión: 20/03/2020 Página 8 / 21

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD lcd.print(":"); lcd.print(decenaminuto); lcd.print(minuto); lcd.print("m"); lcd.print(":"); lcd.print(decenasegundo); lcd.print(segundo); lcd.print("s"); } //Cuarta funcion //Existe un delay de 1 segundo para poder aumentar un valor void pulsadores() { if(digitalRead(pulsador1)==LOW){ hora++; //Si presionas el pulsador aumenta la hora en 1 lcd.setCursor(4,1); lcd.blink(); delay(1000); lcd.noBlink(); } if(digitalRead(pulsador2)==LOW){ minuto++; //Si presionas el pulsador aumenta el minuto en 1 lcd.setCursor(8,1); lcd.blink(); delay(1000); lcd.noBlink(); } if(digitalRead(pulsador3)==LOW){ segundo++; //Si presionas el pulsador aumenta el segundo en 1 lcd.setCursor(12,1); lcd.blink(); delay(1000); lcd.noBlink(); } }

Código 5.3. cursor intermitente

Emisión: 20/03/2020 Página 9 / 21

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 10 / 21

Reloj Digital: Cambio de Hora – Funcionamiento  Para entrar al modo de configuración de la hora, minuto o segundo se debe pulsar su botón respectivo por más dos segundos. Para guardar el valor modificado, de la misma manera que para entrar al modo configuración, se debe mantener su pulsado su botón por más de dos segundos.  Para el cambio de valores se realizará por medio de los otros dos botones, uno para incrementar y el otro su antagónico. Por ejemplo, si se desea modificar los minutos, primero mantener pulsado el botón ligado a los minutos por más de dos segundos, segundo modificar el valor incrementando con el botón ligado a las horas o bajando con el botón ligado a los segundos, tercero mantener pulsado el botón ligado a los minutos por más de dos segundos. 5.4. Realizar una aplicación para que el Arduino pueda realizar la modificación de la hora. Considerar una protección por anti-rebote mediante software. (a revisar) #include LiquidCrystal lcd(0, 2, 4, 5, 6, 7); //Declaramos las variables int pulsador1=8;

//pulsador para horas

int pulsador2=9;

//pulsador para minutos

int pulsador3=10; //pulsador para segundos int hora=2; int minuto=0; int segundo=0; int decenahora=1; int decenaminuto=0; int decenasegundo=0; void setup (){ //Congiguracion de los puertos pinMode(pulsador1,INPUT); pinMode(pulsador2,INPUT); pinMode(pulsador3,INPUT);

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD //Declaramos el LCD Columnas x Filas lcd.begin(16, 2); } void loop(){ //Funciones, asigna la funcion a realizar incremento (); delay(1000); decenas(); green(); pulsadores1(); pulsadores2(); pulsadores3(); lcd.noBlink(); } //Primera funcion void incremento() { if ( segundo < 10) { segundo++; //Aumenta los segundos } } //Segunda funcion void decenas() { if ( segundo == 10 ) { segundo =0; decenasegundo++; // Aumenta las decenas de los segundos } if ( ( decenasegundo == 6 ) && ( segundo == 0 ) ) { decenasegundo =0; minuto++; //Aumenta los minutos si para los 60 segundos } if ( minuto == 10 ) { minuto =0; decenaminuto++; //Aumenta las decenas de los minutos } if ( ( decenaminuto == 6 ) && ( minuto == 0 ) ) {

Emisión: 20/03/2020 Página 11 / 21

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 12 / 21

decenaminuto =0; hora++; //Aumenta la hora si pasa los 60 segundos } if ( hora == 10 ) { hora =0; decenahora++; //Aumenta la decena de las horas } if ( (decenahora == 2) && (hora == 4) ) { hora =0; decenahora =0; //Si pasa las 24 horas regresa a 0 } } //Tercera funcion void green() { lcd.setCursor(2,0); lcd.print("Hora-Gennody"); //Imprime Hora-Gennody en la primera fila lcd.setCursor(3, 1); //Imprime las horas, minutos, segundos en la segunda fila lcd.print(decenahora); lcd.print(hora); lcd.print("h"); lcd.print(":"); lcd.print(decenaminuto); lcd.print(minuto); lcd.print("m"); lcd.print(":"); lcd.print(decenasegundo); lcd.print(segundo); lcd.print("s"); } //Cuarta funcion //Existe un delay de 1 segundo para poder aumentar un valor void pulsadores1() { if((digitalRead(pulsador1)==LOW) (digitalRead(pulsador3)==HIGH)){ hora++;

&&

(digitalRead(pulsador2)==HIGH)

&&

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 13 / 21

lcd.setCursor(4,1); lcd.blink(); } else

if((digitalRead(pulsador1)==LOW)

&&

(digitalRead(pulsador2)==LOW)

&&

(digitalRead(pulsador3)==HIGH)){ hora--; //Decrece Horas if ((decenahora == 0) && (hora == -1)) { decenahora =2; hora =3; } if ((decenahora == 1) && (hora == -1)) { decenahora =0; hora =9; } if ((decenahora == 2) && (hora == -1)) { decenahora =1; hora =9; } } } void pulsadores2() { if((digitalRead(pulsador1)==HIGH)

&&

(digitalRead(pulsador2)==LOW)

&&

(digitalRead(pulsador3)==HIGH)){ minuto++; lcd.setCursor(4,1); lcd.blink(); } else

if((digitalRead(pulsador1)==HIGH)

(digitalRead(pulsador3)==LOW)){ minuto--; //Decrece Minutos if ((decenaminuto == 0) && (minuto == -1)) { decenaminuto =5; minuto =9; } if ((decenaminuto == 1) && (minuto == -1)) { decenaminuto =0;

&&

(digitalRead(pulsador2)==LOW)

&&

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 14 / 21

minuto =9; } if ((decenaminuto == 2) && (minuto == -1)) { decenaminuto =1; minuto =9; } if ((decenaminuto == 3) && (minuto == -1)) { decenaminuto =2; minuto =9; } if ((decenaminuto == 4) && (minuto == -1)) { decenaminuto =3; minuto =9; } if ((decenaminuto == 5) && (minuto == -1)) { decenaminuto =4; minuto =9; } } } void pulsadores3() { if((digitalRead(pulsador1)==HIGH)

&&

(digitalRead(pulsador2)==HIGH)

&&

(digitalRead(pulsador2)==HIGH)

&&

(digitalRead(pulsador3)==LOW)){ segundo++; lcd.setCursor(4,1); lcd.blink(); } else

if((digitalRead(pulsador1)==LOW)

(digitalRead(pulsador3)==LOW)){ segundo--; //Decrece Segundos if ((decenasegundo == 0) && (segundo == -1)) { decenasegundo =5; segundo =9; } if ((decenasegundo == 1) && (segundo == -1)) {

&&

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD decenasegundo =0; segundo =9; } if ((decenasegundo == 2) && (segundo == -1)) { decenasegundo =1; segundo =9; } if ((decenasegundo == 3) && (segundo == -1)) { decenasegundo =2; segundo =9; } if ((decenasegundo == 4) && (segundo == -1)) { decenasegundo =3; segundo =9; } if ((decenasegundo == 5) && (segundo == -1)) { decenasegundo =4; segundo =9; } } }

Emisión: 20/03/2020 Página 15 / 21

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 16 / 21

Código 5.4. Aplicación de funcionamiento

VI.- CUESTIONARIO: 6.1.- Cuestionario pulsadores: 6.1.1.- Al momento de aumentar o reducir el valor ¿Cómo podría realizar esta variación más rápida?

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 17 / 21

Reduciendo el valor del delay, lo haría al instante, como existe un delay de un segundo en la función del incremento de los segundos, el delay demora al pulsador, lo que genera un retraso. VII.- OBSERVACIONES Y CONCLUSIONES: - Dar sus observaciones y conclusiones de forma personal, en forma clara y empleando el menor número de palabras. Observaciones  Implementamos un reloj con decimales, lo que permite mejorar el tema de visualización, pero programarlo fue una tarea complicada en el tema de retroceso.  Se pudo implementar un pulsador más para mejorar el tema de retroceso de las horas y lo minutos.  El delay del segundo genera un delay en los pulsadores.  El reloj no está centrado por el hecho que de que es impar y el LCD es de 16x2. Conclusiones (dos por integrante).  Gracias al retardo generado por el delay logramos visualizar que no existe rebote.  Se pudo Realizar programas en C para Arduino con pulsadores, usando pullups y la librería LiquidCrystal  Se pudo concluir que los pullups son resistencias establecen un estado lógico en un pin o entrada de un circuito lógico cuando se encuentra en estado reposo  Utilizamos la capacidad máxima de los pulsadores en el retroceso, ya que generamos el código en decimales.  El arduino tiene una función de anti rebote, pero si cambiamos la configuración de la misma, se tendría que implementar una función anti rebote.

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

Emisión: 20/03/2020 Página 18 / 21

 Con la librería, se nos hizo más fácil la programación teniendo en cuenta los 4 bits y el sistema anti rebote, pero en programación fue muy complicado.  Solo se necesita el incremento de los segundos para poder en marcha el reloj digital en el LCD, claro con un correcto funcionamiento de los minutos y horas.  Los pulsadores tiene una resistencia la cual proporciona un efecto anti rebote, como el mismo pulsador, esto se ve más en un nivel físico, porque la simulación lo hace más fácil.  El retroceso de los segundos del código fue más complicado que el mismo aumento de los mismos. VIII.- BIBLIOGRAFIA: [1] FLOYD, THOMAS L. Fundamentos de Electrónica Digital. Sétima edición. Limusa. México. 2007 [2] RONALD J. TOCCI. Sistemas Digitales. Ed. Prentice–Hall. (1995) [3] WAKERLY, JOHN F. Diseño Digital. Principios y Prácticas. Tercera Edición. Pearson Educación. México. 2001 [4] Evans, Brian W., (2007) Arduino Programming

Rubrica: Laboratorio 3

1

1

5.1

5.2

5.3

5.4

5.5

5.6

5.7

5.8

5.

5.10

2

2

2

4

-

-

-

-

9 -

-

1.5

0.5

6

20

Porcentaje %

Total

Página 19 / 21 Preguntas individual

Desarrollo de experiencias

Emisión: 20/03/2020

Bibliografía

Observaciones Conclusiones

Fundamento teórico

Puntualidad

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES LABORATORIO LIFE EXPERIENCIA 03: PULSADORES Y LCD

15

Mg. HUARCA Jorge Docente DAIE

Anexo 1 ATS: Análisis de trabajo seguro

Curso: Ambiente:

Tarea: Firma

1.

2.

3.

4. Elementos de protección (Marque con aspa)

16/12/201 9 Versión V1/03/20 Código ATS20V1

Docente: Mesa: Fecha: Integrantes (Apellidos y nombres)

Grupo: Integrantes (Apellidos y nombres)

Fecha

Firma

Características de elementos de protección, equipos y herramientas 1. ____________________________________________________________

USO OBLIGATORIO DEL CASCO DE SEGURIDAD

USO OBLIGATORIO DE BOTAS AISLANTES

USO OBLIGATORIO DE GUANTES AISLANTES

USO OBLIGATORIO DE PROTECCIÓN OCULAR

USO OBLIGATORIO DE MASCARILLA

USO OBLIGATORIO DE PROTECTOR FACIAL

2. ____________________________________________________________ 3. ____________________________________________________________ 4. ____________________________________________________________

USO OBLIGATORIO DE PROTECCIÓN AUDITIVA

APAGAR DESCONECTAR CUANDO NO SE USE

USO OBLIGATORIO DE PROTECTOR AJUSTABLE

OBLIGATORIO CONECTAR A TIERRA

USO OBLIGATORIO DE TRAJE DE SEGURIDAD

Acciones a realizar (marque con aspa las advertencias por cada acción) 1. 2. 3. 4. 5. 6.

OTRO

5. ____________________________________________________________ Otros riesgos en las acciones a realizar, considerar medidas de control 1._________________________ ___________________________ 2._________________________ ___________________________ 3. _________________________