Analizador lógico de cuatro señales digitales de entrada realizado mediante microcontroladores avanzados y GLCD
Graduación deMicrocontroladores Avanzados Tema: Analizador
Lógico de Cuatro Señales Digitales de Entrada
Realizado Mediante Microcontroladores Avanzados y GLCD.
Antecedentes: Los Analizadores Lógicos se desarrollaron
casi simultáneamente al mismo tiempo que los primeros
microcontroladores que salieron al mercado. El Analizador
Lógico es una herramienta clave para el desarrollo de los
sistemas digitales, aunque existen similitudes con los
osciloscopios.
Descripción General Del Proyecto Nuestro proyecto consiste
en el PIC 16F887 que básicamente toma 4 señales
digitales las que se mostraran en una pantalla GLCD dependiendo
de la selección de frecuencia de muestreo para su
posterior analisis.
Fundamento Teórico Software: MikroC PRO for PIC v4.15
Proteus v7.1 SP2
Fundamento Teórico Hardware: PIC 16F887 Oscilador interno
seleccionable de 8 a 31MHz. Hasta 36 pines de entrada/salida
usando el oscilador interno. 14 entradas A/D contra 8 del
PIC16F877A. Capacidad Interrupciones, Tres timers/counters (8, 16
y 8 bits). Convertidor A/D de 14 canales, 10 bit. GLCD KS0108
Conformado por una matriz de puntos de visualización de
128 pixeles de largo por 64 pixeles de alto. Su
iluminación de fondo es variable RGB, además
control de brillo. Fácil manejo con microprocesadores de
8-Bits. Bajo poder de consumo. Contiene dos controladores
internos un KS0108B y KS0107B.
Descripción E Implementación Del Proyecto Diagrama
de Flujo:
Descripción E Implementación Del Proyecto
Convertidor A/D: Dos potenciómetros 0-5v (RA1,RA2) 10
bits. Pot1 selecciona frecuencia y Pot2 selecciona Factor de
Multiplicación. Factor de conversión A/D
Potenciómetro 1 Factor de conversión A/D
Potenciómetro 2
Descripción E Implementación Del Proyecto Uso del
Timer1: señales 5Hz-20Hz 0xFFFF = 65535 interrupciones.
Cristal externo de 4MHz, es decir 1us cada instrucción.
Hasta 65,535ms sin pre-escalador, hasta 524,28ms con
pre-escalador. Tomamos 4 muestras de un periodo completo. Ejm:
20Hz, es decir con periodo de 0,05s generaremos interrupciones
cada 12,5ms.
Descripción E Implementación Del Proyecto Uso del
Timer1: señales 50Hz-2KHz. Tomamos muestras saltando uno o
varios periodos dependiendo de la señal que vamos a
mostrar. Interrupciones Generadas Saltando un Periodo. Con cuatro
periodos de la señal de la entrada podemos graficar un
periodo completo en la GLCD.
Descripción E Implementación Del Proyecto
Gráficos en la GLCD: Glcd_Dot(x,y,color), función
principal para graficar, x toma valores de 0-127, y toma valores
de 0-63 y color valores entre 0, 1 y 2. Barrido horizontal hacia
la derecha. Se grafica dos pixeles por cada interrupción
en cada uno de los cuatro canales. Un periodo completo se grafica
en 8 pixeles. GLCD tiene 128 pixeles a lo ancho, por lo que se
graficará 16 periodos completos de la señal a la
entrada.
Descripción E Implementación Del Proyecto
Limitaciones del Proyecto: “Glcd_Dot” tarda
aproximadamente 525us. 16 veces “Glcd_Dot” = 8,4ms
Tiempo total en ejecutarse función interrupción es
de 8,6ms. Se podría graficar señales desde 1.91Hz
hasta 116,28Hz, (8,6 – 524,28ms), tomando solo una muestra
por periodo. Tomando cuatro muestras por periodo el rango seria
de 0,48Hz – 29,07Hz. Procedimiento valido para frecuencias 5, 10
y 20 Hz. Para frecuencias mayores a 20Hz, tomamos muestras
saltando 10 periodos de la señal de entrada para poder
observar señales de menos frecuencia.
Descripción E Implementación Del Proyecto
Limitaciones del Proyecto: Ejm: 50Hz, calculamos un tiempo de
interrupción cada 5ms, tomando 4 muestras, pero la
limitación de que debe ser entre 8,6ms y 524,28ms no nos
permite programarlo así, ya que obtendríamos
errores, si saltamos un periodo para tomar cada muestra entonces
deberíamos sumar 20ms de un periodo, obteniendo 25ms,
valor que se encuentra dentro del rango, pero para frecuencias
menores a 50Hz, en este caso, existirán errores.
Descripción E Implementación Del Proyecto
Limitaciones del Proyecto: Por esto extendemos la
interrupción hasta 10 veces su periodo a fin de conseguir
poder observar hasta 10 señales menores a la frecuencia
seleccionada. Por lo que la limitación general que tiene
nuestro proyecto es que para frecuencias mayores a 20Hz, las
gráficas pueden ser de señales con intervalos de
frecuencia(f); 1*f/10; 2*f/10; 3*f/10……9*f/10; f y
además 2f. Tiempo de cada Interrupción considerando
periodos omitidos
Programación del PIC Programa Principal:
Simulaciones y Pruebas Experimentales Implementación en
Protoboard:
Simulaciones y Pruebas Experimentales Simulacion en Proteus:
Frecuencia: 5Hz CH1: 5Hz. CH2: 3Hz. CH3: 1Hz. CH4: 10Hz.
Simulaciones y Pruebas Experimentales Tarjeta Electrónica
PCB:
Simulaciones y Pruebas Experimentales Proyecto Final:
Conclusiones: 1.- Este proyecto ha sido de mucha importancia para
ampliar nuestros conocimientos sobre Microcontroladores,
principalmente el uso de interrupciones ya sean estás
externas o como temporizadores, además el uso de la
conversión analógico – digital A/D y el uso
de la librería propia de MikroC para graficar en una GLCD.
2.- El analizador lógico nos permite observar
varias señales al mismo tiempo a diferencia de un
osciloscopio que nos permite observar una o máximo dos
señales dependiendo del fabricante, estos analizadores
lógicos podemos implementarlos con más
señales a la entrada, pero para este proyecto
tendría el inconveniente de que aumentaría un poco
más las limitaciones por lo que lo ideal fue hacerlo para
cuatro señales digitales. 3.- Se desarrollo un
analizador lógico usando el PIC16F887 a diferencia de
otros microcontroladores más avanzados que por poseer
mayor cantidad de memoria se podría grabar en una memoria
EPROM para mejor manejo. Con este pic logramos sacar de una forma
directa las señales a la GLCD sin ser guardadas en
memoria.
Conclusiones: 4.- La limitación para mostrar
señales mayores a 20Hz, en la que solo se pueden observar
hasta 10 señales de menor frecuencia en intervalos iguales
puede ser resuelta saltando más de 100 periodos en cada
interrupción, pero esta solución trae consigo el
inconveniente que las interrupciones tardaran mucho tiempo
más en ejecutarse, tomando en cuenta el tiempo
máximo de interrupción es de 524,28ms por 64 veces
que grafica a lo ancho de la GLCD tomaría 33,55s, en el
caso más largo, lo que es un tiempo demasiado extenso por
lo que se prefirió dejarlo con la limitación.
5.-En la realización de este proyecto fue
primordial el uso de las interrupciones, que fue el caso al que
tuvimos que profundizar para el apropiado uso con las diferentes
señales digitales que se puedan presentar a la entrada del
dispositivo, específicamente el uso del Timer1. Es de
vital importancia la sincronización de las interrupciones
con las señales ya que un pequeño margen de error
hará que la imagen mostrada en la GLCD no corresponda a la
señal de la entrada.
Recomendaciones Investigar el correcto uso de las interrupciones
como temporizadores, ya que base de nuestro proyecto las usa y es
de mucha importancia su correcto funcionamiento a fin de evitar
errores. Revisar los datasheet del el PIC16F887 y de la
GLCD, para correcto funcionamiento ya que un error en las
conexiones de estos dispositivos puede ocasionar que se quemen o
su función sea errónea. Verificar la
versión de Software que se usa, en nuestro caso tuvimos
una complicación con la GLCD por la versión de
MikroC PRO que estábamos usando, gracias al desarrollo de
una nueva versión por MIKROELECTRONICA se pudo solucionar
estos inconvenientes, de igual manera para el uso de el Software
Proteus. Para nuestro proyecto el usuario final
deberá entender bien las limitaciones ya que de no
hacerlo, puede estar observando imágenes equivocadas que
no correspondan a las señales emitidas en la entrada.
En lo posible se debe aprovechar al máximo los
recursos del pic, en este proyecto para la selección de la
frecuencia de muestreo se podía usar un switch rotativo,
pero con la deficiencia de que se debían usar mas puertos
E/S por lo que lo más adecuado fue usar la
conversión A/D con dos potenciómetros y tan solo
usando dos puertos E/S del pic.