Vous êtes sur la page 1sur 21

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BSICAS TECNOLOGA E INGENIERA MICROPROCESADORES Y MICROCONTROLADORES

TRABAJO COLABORATIVO 3

Dayanni Smith Enciso Ren Osorio Ariel de Jess Tuiran Erik Gregorio Velsquez Hernndez C.C 1110501630

Grupo: 44

19-11-2011

INTRODUCCIN

Mediante la siguiente actividad daremos un recorrido general por la unidad tres del curso buscando que cada uno de nosotros pongamos en prctica y desarrollemos una aplicacin, en la cual deberemos emplear microcontroladores o

microprocesadores, para el caso de nosotros empleamos el microcontrolador 16F877A y la aplicacin que desarrollada es un cubo de leds 4x4x4, donde se emplean perifricos de entrada y salida, se usan interrupciones y temporizador por tmr0.

PRESENTACIN DEL PROYECTO

Una matriz LED bidimensional no es algo espectacular. La matriz que presentamos aqu, no obstante, es de otro calibre. Cuatro de estas matrices fueron apiladas una encima de otra. Lo que ha resultado en una verdadera matriz cubo 3D en la que cada uno de sus LED puede encenderse y apagarse independientemente. Los LED intermitentes siempre llaman la atencin. En la mayora de los casos se trata sencillamente de un par de LED o como mximo de una pantalla de LED plana. Un cubo LED es algo realmente diferente. En este caso se trata de una pantalla tridimensional compuesta de LED que pueden ser controlados de manera individual. Se trata aqu de electrnica bsica convencional con incorporacin de un microcontrolador PIC 16F877A. Estos controladores son econmicos, fciles de conseguir, y adems, tambin existen para ellos suficientes herramientas de desarrollo con cdigo abierto. Estos ltimos existen no slo para Windows, sino tambin para Linux- y Mac OS X. Este proyecto se presenta para obtener una calificacin en el trabajo colaborativo 3 y en la prctica tres de la materia Microprocesadores y Microcontroladores.

DESCRIPCIN GENERAL DEL PROYECTO La suposicin de que para 64 LED se necesitaran grandes cantidades de cables puede engaar. Mediante el control por multiplexacin se reduce enormemente la alambrada de espino artificial. Slo un nico cable es suficiente para activar o desactivar los 16 LED que conforman una matriz bidimensional parcial. A los 16 LED de un nivel como ste, les bastan exactamente 17 lneas. Cada cuatro LED superpuestos de los cuatro niveles conforman una columna conjunta que, de esta manera, precisa nicamente de tan slo una lnea. Para encender un LED especfico por separado, se conecta la capa correspondiente a la tensin positiva de alimentacin y se selecciona la respectiva columna. El cubo est organizado en 4 capas niveles y 16 columnas. De ello se deducen lgicamente a 20 lneas, en lugar de 65 lneas independientes para los 64 LED. Con una frecuencia de 4 MHz.
Control de capas y columnas PUERTO A
Bit 7 RA7 Bit 6 RA6 Bit 5 RA5 Bit 4 RA4 Bit 3 RA3 A4 Capa 4 Bit 2 RA2 A3 Capa 3 Bit 1 RA1 A2 Capa 2 Bit 0 RA0 A1 Capa 1

PUERTO B
Bit 7 RB7 Bit 6 RB6 Bit 5 RB5 Bit 4 RB4 Bit 3 RB3 Bit 2 RB2 Bit 1 RB1 Bit 0 RB0 INT
Interruptor

Bit 6 RC6 K7
Columna 7

Bit 4 RC4 K5
Columna 5

Bit 2 RC2 K3
Columna 3

PUERTO C
Bit 7 RC7 K8
Columna 8

Bit 5 RC5 K6
Columna 6

Bit 3 RC3 K4
Columna 4

Bit 1 RC1 K2
Columna 2

Bit 0 RC0 K1
Columna 1

PUERTO D
Bit 7 RB7 K16
Columna 16

Bit 6 RB6 K15


Columna 15

Bit 5 RB5 K14


Columna 14

Bit 4 RB4 K13


Columna 13

Bit 3 RB3 K12


Columna 12

Bit 2 RB2 K11


Columna 11

Bit 1 RB1 K10


Columna 10

Bit 0 RB0 K9
Columna 9

LISTA DE COMPONENTES Y ESQUEMA ELECTRNICO

Resistencias: R1 a R5= 1k R6 a R9 = 33 Condensadores: C1, C2 = 22pF Semiconductores: U1 = PIC16F877A U2, U3 = ULN2803 Q1 a Q4 = 2N3906 D1 a D64 = 64 LED Chorro rojo Crystal= Cristal de cuarzo 4MHz Interruptor: SW1 = Interruptor

DESCRIPCIN GENERAL DEL CIRCUITO

El circuito est compuesto por un microcontrolador 16F877A de la empresa Mocrochip el cual se encarga de controlar los distintos componentes de entrada y salida, empezaremos a describir cada uno de esto, Cubo de leds que es son cuatro matrices de leds de 4x4 leds de nodo comn, al ser nodo comn para que estas enciendan deben recibir un cero (0v) y para apagarlos deben recibir un 1 logico (5v), estas matrices estn una sobre otra con lo cual se forma una matriz tridimensional de 4x4x4 para un total de 64 leds. Dos circuitos integrado ULN2803 los cuales son ocho transistores en un solo circuito integrado para un total de 16 transistores, los cuales se encargan de recibir las seales del microcontrolador de las diecisis columnas, y mantener una corriente y tensin suficientes para el encendido de cada una de estas, cuatro transistores PNP 2N3906 los cuales se encargan de recibir las seales del Pic que controlan las capas (niveles), tiene la funcin de suicheo, al recibir un cero no permiten el flujo de corriente hacia los nodos y al recibir los 5v permiten el flujo de corriente hacia los nodos de los leds, el colector a tierra y el emisor a el terminal positivo de la fuente, con estos logramos que con una pequea cantidad de corriente por la base una mayor corriente para el emisor hacia el colector, con esto el Pic no se encarga de controlar directamente las capas, las resistencias R6 a R9 se encargan de regular la corriente que circula por cada capa para proteger los leds. El interruptor SW1, se encarga de enviar la seal de interrupcin al Pic la cual al recibir un 1 lgico (5v) en Pic apaga el cubo sin importar la secuencia donde se encuentre, al recibir un cero lgico (0v) el Pic permite que el cubo contine en la secuencia en la que se encontraba, y el cristal de cuarzo de 4MHz que se usa para determinar la frecuencia de oscilacin del reloj del microcontrolador.

DIAGRAMA DE FLUJO Y CDIGO DE PROGRAMA

INICIO

INT_RB0

Variables: CONT=Para uso en la subrutina de tiempo. W_Tmp= Registro para guardar temporalmente el valor de W cuando atiende al interrupcin. A=Variable para repeticiones. CONFIGURACION: Habilitamos interrupciones, interrupcin RB0, RB0 como entrada, Puertos A, C, B como salidas, configuracin del TMR0 con prescaler de 256 PINCIPAL

No Es Interrupcin INT_RB0? Si Apagar cubo No Se solt el SW1? Si Borrar INTCON, 1

REGRESAR INT_RB0

FIN

PRINCIPAL

ESPERA1

SECUENCIA1: Enciende todo el cubo. CONT=.100 Llamamos la subrutina ESPERA1.

SECUENCIA4: Enciende una columna y la rota. CONT=.50 Llamamos la subrutina ESPERA1. A=A+1
No

Cargar TMR0 con .216 No TMR0 Bit7=0 Si CONT - 1

SECUENCIA2: Enciende capa por capa. Llamamos la subrutina ESPERA1.


Si

A>2 SECUENCIA5: Enciende el cubo desde una esquina hasta que se enciende todo. CONT=.75 Llamamos la subrutina ESPERA1. A=A+1
No

SECUENCIA3: Enciende cara por cara. Llamamos la subrutina ESPERA1. A=A+1


No

CONT=0

No

Si REGRESAR

A>3
Si

A>2
Si

SECUENCIA4: Enciende una columna y la rota. CONT=.50 Llamamos la subrutina ESPERA1. A=A+1
No

SECUENCIA6: Rota un cubo de 2x2x2 por todo el cubo CONT=.50 Llamamos la subrutina ESPERA1. A=A+1
No

A>2
Si

A>2 1
Si

DESCRIPCIN GENERAL DEL FUNCIONAMIENTO DE PROGRAMA

Inicial mente se realiza la configuracin del microcontrolador se habilitan las interrupciones y la interrupcin por el pin RB0, el pin RB0 queda como entrada. Los puertos A, C y D se configuran como salidas, se selecciona el prescaler de 256 para el TMR0. Los pines RA0 a RA3 controlan las capas, los puestos C y D controlan las columnas. Inicia el programa en la etiqueta principal empezamos con la seciencia1 cargamos la variable CONT con 100 (valor decimal), para que al llamar la subrutina espera1 esta nos d un retardo de 1 segundo, ponemos en cero el puerto A para que llegue los 5v a los nodos de los leds ponemos en uno los puestos C y D, llamamos la subrutina espera1 la cual dura un segundo, al terminar el retardo pasamos a la secuencia2 en la cual se enciende encender capa por capa el cubo, ponemos en uno los puestos C y D, ponemos en cero el RA0 para que lleguen los 5V al la capa 1 con esto se enciende la capa al tener en 1 todas las columnas, llamamos la subrutina espera1, al terminar el retardo, seguimos rotando los ceros en hasta llegar a RA3 tomando un retardo al rotar, al terminar el retardo pasamos a la secuencia3 la cual enciende cara por cara en esta ponemos en cero el puerto A, para que se puedan encender todas las capas, ponemos en 1 LSB del puerto C y llamamos la subrutina espera1, al terminar el retardo ponemos en 1 MSB del puerto C y llamamos la subrutina espera1 al terminar el retardo, apagamos el puerto C, y realizamos el mismo proceso de encendido con LSB y MSB con el puerto D, para encender las dos ltimas caras, al terminar esto, incrementamos la variable A que funciona como un contador el cual mediante el uso de la instruccin xorlw, combinada con la pregunta de la bandera Z del registro status podemos realizar la repeticin de las secuencia2 y secuancia3 por tres veces, al terminar pasa a la secuencia4 la cual enciende una columna y la rota por todo el cubo, cargamos la variable CONT con .50 para obtener un retardo de medio segundo, seguido de esto ponemos en cero el puerto A, para poder encender todas las capas, encendemos la columna 1, llamamos la subrutina espera1, realizamos el mismo proceso hasta la columna 4, que maneja el puerto C, y pasamos a la columna 8 que tambin la maneja el mismo puerto C y luego la columna 12, al terminar el retardo ponemos en cero el puerto C y ponemos en 1 la columna la columna 16 la cual maneja el puerto D y as pasamos sucesivamente por todas las columnas externas del cubo, cuando lleguemos a la columna 5, incrementamos la

variable A que funciona como un contador el cual mediante el uso de la instruccin xorlw, combinada con la pregunta de la bandera Z del registro status podemos realizar la repeticin de las secuencia4 por dos veces, al terminar pasa a la secuencia5 esta secuencia enciende el cubo desde una esquina hasta encenderlo todo, cargamos la variable CONT con .75 para tener un retardo de 750ms, ponemos en cero RA0 para que este activada la primera capa y ponemos en 1 RC0 para encender el primer led, llamamos la subrutina de retardo, al terminar activamos las capas 1 y 2 poniendo RA0 y RA1 en cero, enviamos un 1 a las columnas 1, 2, 5, 6 y llamamos la subrutina espera1, al terminar el retardo activamos las capas 1, 2 y 3, enviamos un 1 a las columnas 1, 2, 3, 5, 6, 7, 9, 10 y 1, llamamos la subrutina espera1, al terminar el retardo activamos todas las capas y todas las columnas para que se encienda todo el cubo, llamamos de nuevo a la subrutina espera1 y al terminar el retardo, incrementamos la variable A que funciona como un contador el cual mediante el uso de la instruccin xorlw, combinada con la pregunta de la bandera Z del registro status podemos realizar la repeticin de las secuencia5 por dos veces, al terminar pasa a la secuencia6 la cual rota un cubo de 2x2x2 por todo el cubo, cargamos la variable CONT con .50 para obtener un retardo de medio segundo, apagamos los puestos C y D para evitar parpadeos por el cambio de secuencia, activamos las capas 1 y 2 poniendo RA0 y RA1 en cero enviamos un 1 a las columnas 1, 2, 5 y 6, llamamos a espera1 al terminar apagamos las columnas anteriores y enviamos un 1 a las columnas 3, 4, 7 y 8, llamamos a espera1 al terminar apagamos las columnas anteriores y encendemos las columnas 11, 12, 15 y 16 que se encuentran en el puerto D, llamamos a espera1 al terminar apagamos las columnas anteriores y enviamos un 1 a las columnas 9, 10, 13 y 14, llamamos a espera1 al terminar apagamos las columnas anteriores, ahora activamos las capas 2 y 3, repetimos el mismo proceso de las columnas, al terminar este activamos las capas 3 y 4 repetimos el mismo proceso de las columnas, incrementamos la variable A que funciona como un contador el cual mediante el uso de la instruccin xorlw, combinada con la pregunta de la bandera Z del registro status podemos realizar la repeticin de las secuencia5 por dos veces. La rutina de interrupcin, al estar pulsado SW1 lleva al pic al esta rutina la cual utiliza el registro W_ Tmp, para guardar temporalmente el estado del registro W, ponemos en cero los puerto C y D por lo tanto se apaga el cubo, preguntamos si ya no est pulsado el SW1 y si esta en cero utilizamos un retardo para evitar rebotes en el interruptor del RBO, preguntamos de nuevo, limpiamos la bandera y regresamos a donde se encontraba el programa.

ANLISIS DE RESULTADOS Y CONCLUSIONES

Con el desarrollo del trabajo colaborativo 3, se pone en prctica todos los conocimientos adquiridos en la unidad 3 del programa microprocesadores y microcontroladores mediante la aplicacin de estos en un proyecto como el cubo de leds 4x4x4.

Conocer la importancia del uso de la multiplexion para engaar el ojo o la visin en aplicaciones con el uso de leds y permitir el ahorro en consumo de energa en bateras o fuentes de alimentacin.

Se adquieren conocimientos en las rutinas de interrupcin y temporizacin.

Configurar los bits del oscilador en xt, el watchdog off, proteccin de cdigo off, etc. En MPLAB para que en casos como las pruebas se logre el funcionamiento del microcontrolador, empezando por el oscilador para que pic pueda oscilar y funcionar correctamente, recibiendo la seal del circuito reloj.

Mejorar en el uso del lenguaje ensamblador, con la puesta en funcionamiento de aplicaciones.

El simulador Proteus es una excelente herramienta de simulacin, pero al realizar esta aplicacin se observa que la simulacin no es en tiempo real, y esta depende del consumo en CPU y el grado de complejidad de la aplicacin. Al intentar realizar la aplicacin del cubo 5x5x5 el simulador se queda corto, no permiti la simulacin.

OBSERVACIONES Y RECOMENDACIONES

Al realizar el trabajo colaborativo 3, se nota la dificultad para el trabajo, con los compaeros del aula virtual, que se encuentran en reas alejadas, este tipo de trabajo colaborativo no se debera realizar en el aula virtual, pedir el montaje del proyecto con compaeros este tipo de trabajos solo se debera realizar en las practicas en los laboratorios.

No limitar el lenguaje de programacin a ensamblador, se debera permitir el uso de otros lenguajes de programacin como el C para este tipo de proyecto, es cierto que conocer a el lenguaje ensamblador, me permite una mejor comprensin del funcionamiento internamente del microcontrolador, acceso especifico, mayor velocidades en ejecucin, los lenguajes de alto nivel permiten al programado una mayor comprensin y fcil implementacin de aplicaciones.

REFERENCIAS

Villamil, H.U (2009) Modulo DE Microprocesadores & Microcontroladores. Escuela de ciencias bsicas, tecnologa e ingeniera. UNAD.

Verle, M. (2009) PIC Microcontrollers - Programming in C primera edicin. USA: mikroElektronika.

Malvino, A. P. (2000) (sexta edicin) Principios de electrnica. Madrid. Espaa: McGRAW-HIL.

Transistores. (s.f.). Extrado el 8 de Noviembre de 2011, de http://www.slideshare.net/linkin_po/transistores-387154

Vous aimerez peut-être aussi