ESCUELA POLITÉCNICA JAVERIANA DEL ECUADOR “ESPOJ” FACULTAD DE ELECTRÓNICA Y CIENCIAS INDUSTRIALES ESCUELA DE CONTROL Y AUTOMATIZACION LABORATORIO DE MICROPROCESADORES I PRACTICA No. 02: INTERFASE DE INTERRUPTORES Y PULSADORES OBJETIVOS Configurar las líneas de los puertos como entradas y salidas. Conocer la forma de interfazar correctamente interruptores y pulsadores. Utilizar las instrucciones: Select …. Case, If …. Then, Lookup, Declare Sub, Data. FUNDAMENTO TEORICO Para la configuración de puertos como salidas debemos escribir en los bits del registro DDRx 1 y 0 para entradas. En caso de ser salida un 1 en los bits de PORTx significa pullup interna habilitada. La lectura de un dato de una entrada se lee en el registro PINx. Los interruptores son elementos electromcánicos que generalmente se encuentran en los contactos de los sensores digitales (capacitivos, inductivos, infrarrojos, etc), mientras que los pulsadores se emplean para el mando de motores (encendido y apagado). Para conectar un pulsador o interruptor a un puerto se puede realizar a través de resistencias pull-up o pull-down, conforme la figura 1. Recuerde que el microcontrolador AVR posee resistencias pull-up internas que pueden ser habilitadas. En caso de conectarse con resistencias pull-up el microcontrolador recibe 1L con el pulsador abierto, lo contrario sucede con resistencia pull-down (0L con pulsador abierto). En caso de conectarse a voltajes de 12V o 24V se deberán poner resistencias que limiten el voltaje a 5V y no dañen el pin como se muestra en la figura 2. Para el cálculo de las resistencias se emplea un divisor de tensión, conforme el siguiente ejemplo a 12V. 𝑉1 = 𝑅 𝑅1 1 +𝑅3 𝑉𝐶𝐶 , donde 𝑉1 = 𝑉𝐶𝐶 − 𝑉𝑝𝑖𝑛 (𝑉𝑝𝑖𝑛 = 5𝑉) Entonces 𝑅3 = 7142 Ω Por tanto su valor estandar es de 6,8 kΩ Con este valor, recalculando el voltaje se tiene que Vpin = 4,86V y la corriente (cuando se accione el pulsador) en el pin será de 0,71mA. MICROPROCESADORES I 1 ESCUELA POLITÉCNICA JAVERIANA DEL ECUADOR “ESPOJ” Figura 1.- Interface de pulsadores a 5V. Figura 2.- Interface de pulsadores a 12 V y 24V. Cuando se trabaja con interruptores y pulsadores aparece el fenómeno de los rebotes que pueden dar en ocasiones señales falsas de accionamientos y que duran alrededor de 5 ms dependiendo del tamaño del pulsador. Para evitarlos se pueden emplear MICROPROCESADORES I 2 ESCUELA POLITÉCNICA JAVERIANA DEL ECUADOR “ESPOJ” métodos de eliminación de los rebotes por software o hardware. Se va a emplear el primer método, introduciendo retardos de hasta 10ms. Las instrucciones que se va a utilizar son las siguientes: Declare Sub <nombre> Sirve para declarar subrutinas que en el programa principal se las llamará con la instrucción Call <nombre>. Select …Case Nos sirve para realizar diferentes acciones en función del valor de una variable, en nuestro caso, el valor leído por el puerto de entrada. Var Select Case Var Case 1: Instrucciones1 Case 2: Instrucciones2 ……. Case Else: Instrucciones otros casos End Select If…then Mediante esta instrucción podemos preguntar por el estado de una variable y poder tomar una decisión. Por lo tanto, con la instrucción if ….then se realizan ramificaciones en el programa. If <condición> then Instrucciones si condición es verdadera End if Lookup(i,tabla) Saca los valores de una tabla en función del valor de la variable i. Data Define los valores de una tabla. Ejemplo: Data 4, 5, 1, 2 ENUNCIADO DEL EJERCICIO Se conectan dos interruptores al PORTC<1:0> con pull-up internas y según el valor leído realice una acción determinada conforme la siguiente tabla de verdad: PC1 0 0 1 1 PC0 0 1 0 1 PORTD LEDs apagador Auto fantástico LEDs intermitentes Juego de LEDs El esquema para la realización de la práctica y simulación en proteus se puede observar en la figura 3. MICROPROCESADORES I 3 ESCUELA POLITÉCNICA JAVERIANA DEL ECUADOR “ESPOJ” Figura 3.- Circuito de prueba. MATERIALES Microcontrolador Atmega8 (1) Diodo Led de alto brillo 3mm (8) Resistencia de 330 Ω (8) Dipswitch (1 dip de 4x2) Protoboard (1) Cables No. 22AWG Grabador AVR tipo USB2.0 Fuente de Voltaje 5V/1ª. DESARROLLO DEL PROGRAMA De acuerdo al circuito de la figura 3 y a los requerimientos del enunciado, el programa es el siguiente: Nombre del archivo: Juego_Luces.bas: ‘Programa que realiza juegos de LEDs conectados a PORTB en función de las diferentes ‘posiciones de dos interruptores conectados a PC0 y PC1. $regfile = “m8def.dat” $crystal = 8000000 ‘Tipo de procesador ‘ Cristal interno 8 Mhz Dim Puerto As Byte Leds Alias PORTD ‘Variable del dato de entrada Config PORTD = Output Leds = 0 ‘Puerto D salida ‘Leds apagados DDRC = &B11111100 PORTC = &B00000011 ‘PC0 y PC1 entradas las demás salidas ‘Pull-up activas y salidas a 0L MICROPROCESADORES I 4 ESCUELA POLITÉCNICA JAVERIANA DEL ECUADOR “ESPOJ” Declare Sub Auto() Declare Sub Intermitente() Declase SUB Juego_Leds() Do Puerto = PINC Select Case Puerto Case 0 PORTD = 0 Case 1 Call Auto() Case 2 Call Intermitente() Case Else Call Juego_Leds () End Select Loop End ‘Declaración de subrutinas ‘Lee estado de interruptores ‘Caso 00 ‘Caso 01 ‘Caso 10 ‘Caso 11 DESAFIOS Coloque dos Leds en B0 y B1. Haga que se enciendan y apaguen de manera alternada cada 250ms. CONCLUSIONES Y RECOMENDACIONES MICROPROCESADORES I 5