REPORTE DEL PROYECTO FINAL148.206.53.84/tesiuami/UAMI14423.pdf · REPORTE DEL PROYECTO FINAL...

71
REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC” Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691) REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC” ALUMNOS: Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691) UNIDAD: Universidad Autónoma Metropolitana - Iztapalapa DIVISIÓN: Ciencias Básicas e Ingeniería (CBI) LICENCIATURA: Ingeniería Electrónica en Comunicaciones NOIMBRE DEL ASESOR: Miguel Ángel Ruiz Sánchez Presentación: En este proyecto implementamos un osciloscopio, el cual consta principalmente de una PC y un sistema basado en microcontrolador. La PC se encarga de interactuar con el usuario final; es decir, permite que el usuario configure el osciloscopio y despliega la forma de onda e información relacionada con ella. Por su parte, el microcontrolador es el encargado del muestreo de la señal a analizar, así como del correcto acoplamiento de esta. La comunicación entre la PC y el microcontrolador la llevamos a cabo en forma serial.

Transcript of REPORTE DEL PROYECTO FINAL148.206.53.84/tesiuami/UAMI14423.pdf · REPORTE DEL PROYECTO FINAL...

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

REPORTE DEL PROYECTO FINAL

“OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

ALUMNOS: Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

UNIDAD:

Universidad Autónoma Metropolitana - Iztapalapa

DIVISIÓN:

Ciencias Básicas e Ingeniería (CBI)

LICENCIATURA: Ingeniería Electrónica en Comunicaciones

NOIMBRE DEL ASESOR: Miguel Ángel Ruiz Sánchez

Presentación:

En este proyecto implementamos un osciloscopio, el cual consta principalmente de una PC y un sistema basado en microcontrolador. La PC se encarga de interactuar con el usuario final; es decir, permite que el usuario configure el osciloscopio y despliega la forma de onda e información relacionada con ella. Por su parte, el microcontrolador es el encargado del muestreo de la señal a analizar, así como del correcto acoplamiento de esta. La comunicación entre la PC y el microcontrolador la llevamos a cabo en forma serial.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

2

I. CONTENIDO. I. CONTENIDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 II. INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Diagrama a bloques del Osciloscopio completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Descripción del microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Distribución de pines del atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Funciones de cada bloque del Osciloscopio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 USART (atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ADC “Convertidor Analógico Digital” (atmega8535) . . . . . . . . . . . . . . . . . . . . 12 AC “Comparador Analógico”(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 EI “Interrupción Externa”(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Max 232 . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Pines y señales del Puerto Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Buffer Inversor y Limitador de Voltaje a 5 Volts pico . . . . . . . . . . . . . . . . . . . . . . 33

III. DESARROLLO EXPERIMENTAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Descripción del programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . . 37 Maquina de Estados para la Interrupción Externa . . . . . . . . . . . . . . . . . . . . . 37 Maquina de Estados para el transmisor de la USART . . . . . . . . . . . . . . . . . . . 38 Maquina de Estados para el Convertidor Analógico Digital . . . . . . . . . . . . . 39 Rutinas del microprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Descripción de las funciones y configuraciones del Puerto Serial en MATLAB . . . . 43 Funciones asociadas con la Lectura de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Propiedades asociadas con la Lectura de Datos . . . . . . . . . . . . . . . . . . . . . . . . . 43 Propiedades de un objeto de tipo Puerto Serial . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Formato de la trama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Propiedades de los pines de control del Puerto Serial . . . . . . . . . . . . . . . . . . . . 44

Descripción de la configuración del Puerto Serial en Windows . . . . . . . . . . . . . . . . . 45 Programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Programa para el software de procesamiento de datos MATLAB . . . . . . . . . . . . . . . 54 Descripción del diagrama esquemático del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . . 57 Descripción de la interfaz grafica del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Graficas para una señal de DC, una señal cuadrada y una señal senoidal . . . . . . . . . 60

Graficas para una señal de DC a diferentes voltajes . . . . . . . . . . . . . . . . . . . . . . 60 Graficas para una señal cuadrada a diferentes frecuencias . . . . . . . . . . . . . . . . 62 Graficas para una señal senoidal a diferentes frecuencias . . . . . . . . . . . . . . . . . 65

IV. ANALISIS DE RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 V. CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 VI. REFERECIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

3

II. INTRODUCCIÓN Los osciloscopios son instrumentos utilizados para poder apreciar en su pantalla variaciones de voltaje (señales periódicas o no periódicas). Estos instrumentos son caros y tienen cierta dificultad para desplegar formas de onda a bajas frecuencias. La palabra osciloscopio es un hibrido etimológico. La primera parte deriva del latín “oscillare” que significa balanceo; la segunda parte viene del griego clásico “skopein” que significa observar o examinar. Como ya mencionamos, existen osciloscopios comerciales, estos son caros pero por lo general cuentan con altas frecuencias de muestreo (Figura 1):

Figura 1.- Osciloscopio Digital de 4 canales a 100 MHz, costo aproximado de $22,000 pesos mexicanos.

Algunas de las ventajas de implementar un osciloscopio basado en la PC y un microcontrolador son:

∼ Bajo costo

∼ Copiar y pegar la pantalla dentro de algún documento

∼ Software actualizable

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

4

� Diagrama a bloques del Osciloscopio completo (Figura 2):

Figura 2.- Diagrama a bloques del Osciloscopio.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

5

� Descripción del microprocesador atmega8535:

El ATMEGA8535 es un microcontrolador de 8 bits basado en la arquitectura RISC, el núcleo AVR combina un gran conjunto de instrucciones con 32 registros de propósito general. Los 32 registros están directamente conectados con la unidad aritmética-lógica (ALU), permitiendo que dos registros sean accesados en una sola instrucción ejecutada en un ciclo de reloj. Esta arquitectura permite que el microcontrolador sea mas de diez veces mas rápido que los microcontroladores tradicionales (microcontroladores CISC). En la figura 3se muestra el microcontrolador ATMEGA8535.

Figura 3.- ATMEGA8535.

El ATMEGA8535 contiene las siguientes características:

� 8K bytes de memoria flash programable � Memoria SRAM interna de 512 bytes � 512 bytes en EEPROM � USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter). � 32 líneas de entrada/salida de propósito general. Repartidas en 4puertos de 8 bits cada uno. � Temporizadores/contadores con modo de comparación entre ellos. � 8 conversores analógico digital de 10 bits de resolución. � Interrupciones internas y externas. � Un puerto serie SPI.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

6

• Distribución de pines del atmega8535 (Figura 4):

Figura 4.- Atmega8535.

� PUERTO A (Pines del 33 al 40)

� PUERTO B (Pines del 1 al 8)

� PUERTO C (Pines del 22 al 29)

� PUERTO D (Pines del 14 al 21)

� RESET (Pin 9)

� VCC (Pin 10)

� GND (Pin 11 y Pin 31)

� XTAL1 (Pin 13)

� XTAL2 (Pin 12)

� AREF (Pin 32)

� AVCC (Pin 30)

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

7

El siguiente diagrama muestra la estructura interna del ATMEGA8535 (Figura 5):

Figura 5.- Atmega8535.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

8

� Funciones de cada bloque del Osciloscopio:

• USART “Receptor y Transmisor Serial Universal Síncrono y Asíncrono (atmega8535):

La USART es parte del hardware que se encuentra dentro del chip. La USART es la encargada controlar y administrar la transmisión y recepción de los datos en forma serial.

Configuramos este periférico del microcontrolador del tal forma que lea las muestras (1 byte por muestra) desde un buffer circular (utilizando la memoria de datos del microcontrolador); también lo configuramos de tal manera que implemente el mismo protocolo de comunicación de la PC. Como hemos mencionado, las muestras a transmitir las obtenemos del buffer circular, el cual tiene el mismo tamaño que el buffer de entrada del puerto serial.

A continuación se muestra el diagrama a bloques de la USART del microcontrolador atmega8535 (Figura 6) y una breve explicación del mismo:

Figura 6.- Diagrama a bloques de la USART.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

9

Transmisión de datos La transmisión se inicia cuando se carga un dato en el registro de datos (UDR) que se encuentra dentro del modulo de la USART. El dato cargado es transferido del registro de datos (UDR) al registro de desplazamiento de transmisión cuando este listo para enviar un nuevo dato. La USART está lista para recibir el siguiente dato cuando el bit UDRE (USART Data Register Empty) es puesto en uno. El bit TXEN en el registro UCSRB (USART Control Register) es el encargado de habilitar la transmisión de la USART cuando es puesto en uno. La transmisión de la USART se realiza por el pin número 15 del chip (TXD, PD1). Recepción de datos Para que la recepción de datos se habilite es necesario poner en uno el bit RXEN en el registro UCSRB. La recepción de la USART se realiza por el pin número 14 del chip (RXD, PD0). La velocidad de transmisión, el modo de operación (síncrono ó asíncrono), y el formato de la trama debe ser establecido antes de que se realice la recepción. Inicialización de la USART La USART tiene que ser inicializada antes de que cualquier comunicación tenga lugar. El proceso de inicialización normalmente consiste en ajustar el rango de baudios, el formato de las tramas y habilitar el transmisor o el receptor dependiendo del uso. Generación del reloj interno (generador de la velocidad de transmisión) El reloj interno es usado para los modos de operación síncronos y asíncronos maestros. El registro de rango de baudios de la USART (UBRR) y el contador regresivo conectado a el funciona como un pre escalador o rango generador de baudios. El contador regresivo corriendo a la velocidad del reloj del sistema (fosc), se carga con el valor del UBRR cada vez que el contador ha contado hasta cero o cuando se escribe en el en el registro UBRRL. Un reloj es generado cada vez que el contador alcanza el cero. Este reloj es el rango generador de baudios. La tabla siguiente (Figura 7) contiene ecuaciones para calcular el rango de baudios(en bits por segundo) y para calcular el valor de la UBRR para cada modo de operación usando un reloj generado internamente.

Figura 7.- Tabla de ecuaciones para el generador de la velocidad de transmisión

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

10

Doble velocidad de operación El rango de transferencia puede ser duplicado activando el bit U2X en el USCRA. Poner este bit a uno lógico tiene efecto en la operación asíncrona. Ponga este bit a cero cuando la operación sea síncrona. Activando este bit se reducirá el divisor frecuencia de 16 a 8, efectivamente duplicando el rango de transferencia para comunicación asíncrona. Observe sin embargo que el receptor usará en este caso solo la mitad del número de muestras (reducido de 16 a 8). Registro de datos de la USART (Figura 8)

Figura 8.- UDR

El buffer de datos de transmisión y el buffer de datos de la recepción comparten la misma dirección de entrada y salida. El buffer de transmisión solo puede ser escrito cuando la bandera UDRE en el registro UCSRA (Figura 9) esta en uno. Los datos escritos en el UDR serán ignorados si la bandera UDRE no esta en uno. Cuando los datos se escriben en el buffer de transmisión, y la transmisión esta habilitada, el transmisor cargará los datos dentro del registro de transmisión. Entonces los datos serán transmitidos de manera serial por el pin TxD.

Figura 9.- UCSRA RXC: USART Receive Complete (bit 7) - Este bit es activado (en uno) cuando un dato recibido es transferido desde el registro de desplazamiento al UDR. El bit es activado omitiendo cualquier error de trama detectado. Cuando el bit RXCIE es activado, la interrupción Recepción Completa de la USART será ejecutada cuando el bit RXC es puesto en uno. El bit RXC es limpiado por la lectura del UDR.

TXC: USART Transmit Complete (bit 6) - Este bit es puesto en uno cuando todo el dato (incluyendo el bit de paro) en el registro de desplazamiento ha sido corrido hacia afuera y no ha sido escrito un nuevo dato en el UDR. Cuando el bit TXCIE en el UCSRA es puesto en uno, el valor que tenga el TXC causa que la interrupción USART Transmit Complete se ejecute. TXC es limpiado por hardware cuando se ejecuta el correspondiente manejador de interrupción.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

11

UDRE: UART Data Register Empty (bit 5) - Este bit es puesto en uno cuando un dato escrito en el UDR es transferido al registro de desplazamiento. Poner en uno este bit indica que el transmisor esta listo para recibir un nuevo dato para la transmisión. El bit UDRE es limpiado escribiendo en UDR. Cuando el manejador de interrupción de transmisión de datos es usado, la rutina de interrupción USART Data Register Empty debe escribir en el UDR para liberar al bit UDRE. El bit UDRE es puesto en uno durante el reset para indicar que el transmisor está listo. Banderas de transmisión e interrupciones El transmisor de la USART tiene dos banderas que indican su estado: USART Data Register Empty (UDRE) y Transmit Complete (TXC).Ambas banderas pueden ser usadas para generar interrupciones. La bandera de registro de datos vacía (UDRE) indica si el buffer de transmisión esta listo para recibir nuevos datos. Este bit es puesto en uno cuando el buffer de transmisión esta vacío, y en uno cuando el buffer de transmisión contiene datos a ser transmitidos. La bandera de transmisión completa(TXC) es puesta en uno cuando la trama completa en el registro de transmisión (UDR) ha enviado todo su contenido y no hay nuevos datos presentes en el buffer de transmisión. Formato de la Trama Consiste en la especificación de factores de la comunicación serial asíncrona como son bit de inicio, bit deparo, bits de dato y bit de paridad. Estos factores se configuran mediante el registro UCSRC (Figura 10).

Figura 10.- UCSRC

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

12

• ADC “Convertidor Analógico Digital” (atmega8535): El Convertidor Analógico Digital es un dispositivo que permite convertir un voltaje determinado en un valor binario. Gracias a él es posible hacer transmisiones digitales partiendo de señales analógicas. Son varios los pasos que hay que dar hasta obtener los valores digitales que reconstruyen la señal. El primer paso en la conversión analógica digital se llama PAM (Pulse Amplitud-Modulation). En él se muestrea la señal analógica y se genera una serie de pulsos. En esta técnica se toman muestras de la señal original (Figura 11) a intervalos regulares de tiempo. En un momento dado el nivel de la señal es leído y retenido brevemente (Figura 12).

Figura 11.- Señal analógica que se va a digitalizar.

Figura 12.- Fase de muestreo en la conversión AD.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

13

El motivo por el que PAM es insuficiente para establecer una comunicación digital es por que aunque traduzca la forma actual de la onda a una serie de pulsos, siguen teniendo amplitud (se trata todavía de una señal analógica y no digital). Para convertir estos pulsos en su equivalente digital, se deben de modificar usando modulación de código de pulso (PCM). PCM (Pulse Code Modulation) modifica los pulsos creados por PAM para crear una señal completamente digital. Para hacerlo, PCM, en primer lugar, cuantifica los pulsos de PAM. La cuantificación es un método de asignación de los valores enteros a un rango específico (Figura 13). Luego, cada uno de esos valores finitos será codificado, es decir, a cada muestra cuantificada se le otorga un código concreto, convirtiendo de esta forma la señal original en una serie de valores que se pueden manejar digitalmente.

Figura 13.- Fase de Cuantificación en la conversión AD.

Finalmente, para enviar la señal a través de un enlace digital de comunicaciones se asigna un código binario a cada valor y se transforman estos dígitos binarios en una señal puramente digital usando una de las técnicas de codificación digital-digital. (Figura 14)

Figura 14.- Fase de Codificación en la conversión AD.

Una vez que se tiene la conversión lista se puede regresar a una forma analógica, para la reconstrucción de la señal analógica se requiere poca información. Tomando como referencia el teorema de muestreo de Shannon, para asegurar la reproducción exacta de una señal analógica original usando PAM, la tasa de muestreo debe ser al menos el doble de la frecuencia máxima de la señal original.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

14

Con base en la teoría, si se desea muestrear la información de una señal que tiene como frecuencia máxima 100 Hz, la tasa de muestreo debe ser de 200 muestras/s. A una velocidad de muestreo menor, la información se perdería; a una mayor, no es posible tener información extra. En la práctica, cuando se regenera una señal a partir de sus muestras se emplea un reconstructor que dista mucho del ideal planteado por Shannon. Debido a esto, para poder recuperar correctamente la señal a partir de sus muestras, es necesario muestrearla a una velocidad superior. En el sistema desarrollado se ha trabajado con una velocidad de muestreo de 17 kHz. Para desarrollos futuros se deberá tener en cuenta la necesidad de aumentar dicha velocidad de muestreo. El ADC (Analog-to-Digital Converter) del ATMEGA8535 El ADC (Analog-to-Digital Converter) es un dispositivo que permite convertir un voltaje determinado en un valor binario. Gracias a él es posible hacer transmisiones digitales partiendo de señales analógicas. El convertidor analógico-Digital está conectado a un multiplexor analógico de 8 canales, el cual permite 8 entradas de voltaje en el puerto A del microcontrolador. Las entradas son referidas a tierra (0 Volts). El dispositivo también soporta 16 combinaciones como entrada para voltaje diferencial. Dos de las entradas (ADC1, ADC0 y ADC3, ADC2) están equipadas con un estado de ganancia programable, la cual proporciona amplificaciones de 0dB (1x), 20 dB (10x), o 46 dB (200x) en la entrada de voltaje diferencial antes de la conversión Analógica-Digital. Siete canales de entrada analógicos comparten una terminal común (ADC1), mientras que cualquier otra entrada puede ser seleccionada como la entrada positiva. Si se usa la ganancia de 1x o de 10x, se obtiene una resolución de 8 bits, mientras que para la ganancia de 200x se obtiene una resolución de 7 bits.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

15

El ADC contiene un circuito de muestreo que asegura que la entrada de voltaje al ADC sea retenida en un nivel constante durante la conversión. En la siguiente figura (Figura 15) se muestra un diagrama a bloques del ADC.

Figura 15.- Diagrama a bloques del ADC

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

16

El ADC tiene un pin separado que se usa como fuente de voltaje (AVCC), el cual no difiere más de ±0.3 V de VCC. El voltaje de referencia interna es nominalmente de 2.56 V. El voltaje de referencia puede ser externamente desacoplado en el pin AREF por un capacitor para un mejor desempeño con respecto al ruido. Inicio de la conversión Una conversión se inicia escribiendo uno lógico en el bit de inicio de la conversión ADSC. Este bit permanece en uno mientras a conversión se encentra en progreso y se cambia a cero por medio de hardware cuando la conversión ha terminado. Si u canal de datos es seleccionado mientras una conversión está e progreso, el ADC terminará de realizar la conversión actual antes de que el cambio de canal se realice. Alternativamente, una conversión puede ser activada automáticamente por distintas fuentes. El autodisparo se habilita poniendo un uno lógico en el Auto Trigger Enable bit (ADATE) en el ADCSRA. La fuente de disparo es seleccionada por los bits de selección de disparo (ADTS) en el SFIOR. Cuando un flanco positivo ocurre en la señal seleccionada para el disparo, el prescalador del ADC se resetea y la conversión inicia. Esto proporciona un método de conversión a intervalos fijos. Si la señal del disparador continúa e uno cuando la conversión ha terminado, la nueva conversión no comenzará. Si otro flanco de subida ocurre e la señal de disparo durante la conversión, el flanco positivo será ignorado. La figura 16 muestra un diagrama del autodisparador lógico:

Figura 16.- Diagrama del autodisparador lógico.

Prescalador y tiempo de conversión Por defecto, la circuiteria de aproximaciones sucesivas requiere de una entrada de la frecuencia del reloj entre 50 kHz y 200 khZ para obtener la máxima resolución. Si se usa una resolución menor a los 10 bits, la frecuencia del reloj puede ser mas grande de 200 khZ para obtener una mayor razón de muestreo. El módulo del ADC contiene un prescalador, el cual genera una frecuencia de reloj aceptable de cualquier frecuencia del CPU arriba de 100 khZ. El prescalador se configura con los bits ADPS en el ADCSRA. El prescalador comienza a contar desde el momento en que el ADC es activado por el bit ADEN en ADSCRA. El prescalador se mantiene en operación durante el tiempo en que el bit ADEN permanece en uno.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

17

En la figura 17 se muestra el diagrama a bloques del prescalador:

Figura 17.- Diagrama a bloques del prescalador del ADC. Cuando se inicia una conversión poniendo un uno e el bit ADSC en el ADCSRA, la conversión inicia en el siguiente flanco de subida del ciclo de reloj. Una conversión normal toma 13 ciclos de reloj del ADC. La primera conversión después de que el ADC es activado toma 25 ciclos de reloj para inicializar la circuiteria analógica. La muestra actual toma 1.5 ciclos de reloj después de que comienza una conversión normal y 13.5 ciclos del reloj ADC después del inicio de la primera conversión. Cuando una conversión es completada, el resultado se escribe en el registro de datos del ADC, y ADIF es puesto a uno. En el modo de conversión sencilla, el ADSC es puesto en cero simultáneamente y una nueva conversión será iniciada e el primer flanco positivo del reloj del ADC.

Cuando se utiliza el modo de auto disparo, el prescalador se resetea cuando el disparo ocurre. Esto asegura u retraso establecido desde el disparo hasta el inicio de la conversión. En este modo, el muestreo y la retención toma 2 ciclos de reloj después del flanco de subida de la fuente de disparo. Se utilizan tres ciclos de reloj adicionales para la lógica de sincronización. En el modo libre, una nueva conversión comenzará inmediatamente después de que se complete la conversión, mientras que el ADSC permanece en alto. En la siguiente tabla (Figura 18) se resumen los tiempos de conversión para el ADC:

Figura 18.- Resumen los tiempos de conversión para el ADC.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

18

Ganancia de Canales Diferenciales

Las conversiones diferenciales son sincronizadas con el reloj interno CKADC2 que es igual a la mitad del reloj ADC. La sincronización se hace automáticamente por la interfase del ADC. La conversión es iniciada por el usuario. Cuando CKADC2 está en cero tomará la misma cantidad de tiempo que la de una conversión simple (13 ciclos de reloj desde el siguiente ciclo del prescalador).

En el modo libre, una nueva conversión inicia inmediatamente después de que la conversión previa haya terminado, y como el CKADC2 permanece en alto en este momento, todo comienza automáticamente.

El estado de ganancia está optimizado para un ancho de banda de 4 kHz para todas las configuraciones de ganancia. Las frecuencias más altas pueden estar sujetas a una amplificación no lineal. Un filtro pasa-bajas externo puede ser usado para si la señal de entrada contiene componentes a altas frecuencias. Si los canales de ganancia diferencial están siendo utilizados y las conversiones son iniciadas por el auto disparo, el ADC debe ser apagado entre conversiones. Cuando se ocupa el auto disparo, el prescalador del ADC se resetea antes de que la conversión inicie. Deshabilitando y luego habilitando el ADC entre cada conversión (escribiendo en “0” y luego en “1” el ADEN en el ADCSRA) provoca que las conversiones sean válidas.

Canales de entada del ADC

En modo de conversión simple, siempre se debe seleccionar un canal antes de antes de iniciar la conversión. La selección del canal puede ser cambiada después de escribir un uno en ADSC. Sin embargo, el método mas simple es esperar a que la conversión termine antes de cambiar la selección del canal. En modo libre, siempre se selecciona el canal antes de empezar la primera conversión. Las conversiones subsecuentes, reflejaran la selección del nuevo canal seleccionado.

Voltaje de Referencia del ADC

El voltaje de referencia para el ADC (VREF) indica el rango de conversión para el ADC. Los canales que excedan al VREF resultaran en códigos cercanos a 0x3FF. El VREF puede ser seleccionado como el AVCC, el de referencia interna de 2.56V, o externo mediante el pin AREF.

El AVCC se conecta al ADC a través de un switch pasivo. El voltaje de referencia interno es generado internamente a través de un amplificador interno. En cualquier caso, el pin AREF es directamente conectado al ADC, y el voltaje de referencia se puede hacer más inmune al ruido conectando un capacitor entre el pin AREF y tierra. El voltaje VREF es una fuente alta impedancia, y solo una carga capacitaba puede ser conectada en el sistema.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

19

Resultado de la Conversión del ADC Después de que la conversión está completada (ADIF está en uno), el resultado de la conversión se encuentra en el registro de resultados del ADC (ADCL, ADCH). Para una conversión sencilla, el resultado es:

REF

IN

V

VADC

1024•=

El VIN es el voltaje del pin de entrada seleccionada y VREF el voltaje de referencia seleccionado. 0x000 representa la tierra analógica, y 0x3FF representa el voltaje de referencia seleccionado menos el LSB (Bit Menos Significativo). La siguiente tabla (Figura 19) resume las selecciones del voltaje de referencia para el ADC, mientras que la Figura 20 muestra los canales de entrada y la selección de la ganancia.

Figura 19.- Selecciones de voltaje de referencia para el ADC

Figura 20.- Canales de entrada y selección de la ganancia.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

20

Si se utiliza el modo de canales diferenciales, el resultado de la conversión es:

REF

NEGPOS

V

GAINVVADC

512)( ••−=

En donde, VPOS es el voltaje en el pin de entrada positivo, VNEG es el voltaje en el pin de entrada negativo, GAIN es el factor de ganancia seleccionada y VREF es el voltaje de referencia seleccionado. El resultado se presenta en forma de complemento a dos, desde 0x200 (-512d) hasta 0x1FF (+511d). La figura 21 muestra la codificación del rango de entradas diferenciales, mientras que en la tabla (Figura 22) se muestra el código resultante de salida si el par de entradas diferenciales es seleccionado con una ganancia GAIN y u voltaje de referencia VREF.

Figura 21.- Codificación del rango de entradas diferenciales.

Figura 22.- Código resultante de salida para entradas diferenciales es seleccionado

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

21

Registro selector del multiplexor del ADC

La figura 23 muestra los bits del registro ADMUX así como sus nombres y su valor inicial.

Figura 23.- Registro ADMUX

Bits 7:6 – REFS1:0: Reference Selection Bits: Estos bits seleccionan el voltaje de referencia para el ADC, en la siguiente tabla (figura 24) se muestran los tipos de voltajes de referencia y las respectivas combinaciones de los bits de selección. Si estos bits se cambian durante una conversión, el cambió no tendrá efecto hasta que la conversión actual sea completada (ADIF en ADCSRA sea uno). Las opciones de voltaje de referencia pueden no ser usadas si un voltaje de referencia externo se aplica al pin AREF.

Figura 24.- Selección del Voltaje de Referencia para el ADC

Bit 5 – ADLAR: ADC Left Adjust Result: El bit ADLAR afecta en la presentación del resultado de la conversión en el registro de datos de ADC. Poniendolo en uno, se selecciona el ajuste izquierdo. De otra forma, el resultado tendrá el ajuste derecho.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

22

Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits: Estos bits seleccionan cual combinación de las entradas analógicas son seleccionadas en el ADC. Estos bits también seleccionan la ganancia para los canales diferenciales. Si estos bits son cambiados durante una conversión, los cambios no tendrán efecto hasta que la conversión actual haya terminado. En la siguiente tabla (figura 25) se muestran los detalles de estos cuatro bits

Figura 25.- Canales de entrada y selección de ganancia

Registro de Control de Estado del ADC

La figura 26 muestra los bits del registro ADCSRA así como sus nombres y su valor inicial.

Figura 26.- Bits del registro ADCSRA

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

23

Bits 7 – ADEN: ADC Enable: Cuando este bit se pone en uno se habilita el ADC. Con un cero, el ADC estará apagado. Si este bit se pone en cero durante una conversión, dicha conversión se cancelará. Bits 6 – ADSC: ADC Start Conversation: En el modo de conversión sencilla o simple se pone este bit en uno para iniciar cada conversión. En modo libre, se pone este bit en uno para iniciar la primera conversión. La primera conversión después de que el ADSC se ha puesto en uno, o si el ADSC se ha a habilitado al mismo tiempo que el ADC se habilita, tomará 25 ciclos de reloj del ADC en lugar del tiempo normal (13). La primera conversión implementa la inicialización del ADC. El ADSC se leerá como u uno mientras la conversión esté en progreso. Cuando la conversión haya terminado regresará a cero. Bits 5 – ADATE: ADC Auto Trigger Enable: Cuando se escribe un uno en este bit, el autodisparo del ADC se habilita. El ADC comenzará la conversión en el siguiente flanco de subida de la señal de disparo seleccionada. La fuente de disparo se selecciona mediante los bits ADTS en el SFIOR. Bits 4 – ADIF: ADC Interrupt Flag: Este bit se pone en uno cuando la conversión del ADC se ha completado y el registro de datos es actualizado. La interrupción de conversión completa se ejecuta si el bit ADIE y el I-bit en el SREG están en uo. ADIF se pone en cero por hardware cuando se ejecuta el vector de interrupción correspondiente. Alternativamente, ADIF se pone en cero escribiendo un uno lógico en la bandera. Bit 4 – ADIE: ADC Interrupt Enable: Cuando este bit se pone en uno y el I-bit en el SREG es uno, la interrupción de conversión completa se activa. Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits: Estos bits determina el factor de división entre la frecuencia del XTAL y el reloj de entrada para el ADC.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

24

• El Comparador Analógico (AC) del atmega853):

El comparador del ATMEGA8535 compara los valores de entrada en el pin positivo AIN0 y en el pin negativo AIN1. Cuando el voltaje en el pin positivo (AIN0) es mayor que en el pin negativo (AIN1), la salida del comparador analógico, ACO, es uno. La salida del comparador puede ser configurada para disparar el Timer/Counter1. También, el comparador, puede disparar una interrupción separada, exclusiva del comparador analógico. El usuario puede seleccionar el tipo de disparo para la interrupción, ya sea por flanco de subida, de bajada o por nivel. El diagrama a bloques del comparador y la lógica a su alrededor se muestran en la figura 27.

Figura 27.- Diagrama a bloques del comparador analógico

Registro de Funciones Especiales de Entrada y Salida – SFIOR La figura 28 muestra los bits del registro SFIOR así como sus nombres y su valor inicial.

Figura 28.- Bits del registro SFIOR

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

25

Bit 3 – ACME: Analog Comparator Multiplexer Enable: Cuando en este bit se escribe un uno lógico y el ADC está apagado (ADEN en ADCSRA está en cero), el multiplexor del ADC selecciona la entrada negativa para el comparador analógico. Cuando en este bit se escribe un cero lógico, la entrada AIN1 se aplica a la entrada negativa del comparador analógico. La siguiente tabla (figura 29) muestra con mayor detalle el funcionamiento del ACME en el comparador analógico.

Figura 29.- Entrada multiplexada del comparador analógico Registro de Control de Estados del Comparador Analógico – ACSR

La figura 30 muestra los bits del registro ACSR así como sus nombres y su valor inicial.

Figura 30.- Bits del registro ACSR

Bit 7 – ACD: Analog Comparator Disable: Cuando en este bit se escribe un uno lógico, el comparador analógico se apaga. Este bit se puede poner en uno en cualquier momento para apagar el comparador analógico. Esto reducirá el consumo de potencia en los modos activos y pasivos. Cuando se cambia el bit ACD, la interrupción del comparador analógico debe ser deshabilitada poniendo un cero en el bit ACIE en el registro ACSR. De otra forma podría ocurrir una interrupción cuando el bit sea cambiado.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

26

Bit 6 – ACBG: Analog Comparator Bandgap Select: Cuando este bit tiene el valor de uno, un voltaje de referencia remplaza la entrada positiva del comparador analógico. Cuando este bit tiene el valor de cero, se aplica AIN0 a la entrada positiva del comparador analógico. En la siguiente tabla (figura 31) se muestran las opciones para los voltajes de referencia internos.

Figura 31.- Características del voltaje de referencia interno Bit 5 – ACO: Analog Comparator Output: La salida del comprador analógico es sincronizada y después conectada directamente al ACO. La sincronización introduce u retardo de 1 – 2 ciclos de reloj. Bit 4 – ACI: Analog Comparator Interrupt Flag Este bit es puesto a uno mediante hardware cuando la salida del comparador dispara el modo de interrupción definido por ACIS1 y ACIS0. La rutina de interrupción del comparador se ejecuta si el bit ACIE está en un uno lógico y el I-bit en el SREG también está en uno. ACI se borra por hardware cuando se ejecuta la correspondiente interrupción. Alternativamente, ACI es borrado escribiendo u uno lógico en la bandera. Bit 3 – ACIE: Analog Comparator Interrupt Enable: Cuando al bit ACIE se le escribe un uno lógico en el I-bit en el registro de estados tiene el valor de uno, la rutina de interrupción del comparador analógico es deshabilitada. Bit 2 – ACI: Analog Comparator Input Capture Enable: Cuando se escribe un uno lógico, este bit habilita el Timer/Counter1 para ser disparado por el comparador analógico. La salida del comparador es, en este caso, directamente conectado a la entrada, haciendo que el comparador utilice el supresor de ruido. Cuando se escribe un cero lógico, no existe conexión entre el comparador analógico y la función de entrada de captura.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

27

Bits 1, 0 – ACIS1, ACIS0: Analog Comparator Interrupt Mode Select: Estos bits determinan que evento de disparo activará la interrupción. Las distintas combinaciones se muestran en la siguiente tabla (figura 32).

Figura 32.- Modos de selección de interrupción

Entrada Multiplexada del Comparador Analógico Es posible seleccionar cualquiera de los pines ADC7...0 para remplazar la entrada negativa del comparador analógico. El multiplexor del ADC se usa para seleccionar esta entrada, y consecuentemente, el ADC debe estar apagado para utilizar esta característica. Si el bit habilitador del multiplexor del comparador analógico (ACME en SFIOR) está en uno y el ADC se encuentra apagado (ADEN en ADCSRA es cero), MUX2...0 en ADMUX seleccionan el pin de entrada para remplazar la entrada negativa al comparador analógico, (figura 33). Si ACME es cero o ADEN es uno, se aplica AIN1 la entrada negativa del comparador analógico.

Figura 33.- Entrada multiplexada del comparador analógico

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

28

• La “Interrupción Externa”(atmega8535): Las interrupciones externas son disparadas por los pines INT0, INT1 y INT2. Esta herramienta ofrece un camino para generar una interrupción por software. Las interrupciones externas pueden ser disparadas por flanco de bajada, de subida o por un cambio lógico. Estas son configuradas como se indica en las especificaciones del registro de control (MCUCR) y el registro de control de estados (MCUCSR). Si se usa una interrupción por cambio de nivel lógico, el cambio de nivel debe ser mantenido por algún tiempo para que el MCU lo reconozco. Esto provoca que el MCU sea menos sensitivo al ruido. El cambio de nivel es muestreado dos veces por el reloj del oscilador del Watchdog. Registro de control MCU (MCUCR) El registro de control MCU contiene bits de control para la interrupción y funciones generales del MCU. La siguiente figura muestra el registro MCU con sus respectivos bits.

Figura 34.- Registro MCUCR Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0: La interrupción externa 1 es activada por el pin externo INT1 si el bit I del SREG es uno y la correspondiente mascara de interrupción en el GICR es uno. El nivel y flancos sobre el pin externo INT1 que activa la interrupción está definido en la siguiente tabla (figura 35). El valor sobre el pin INT1 es revisado antes de detectar los flancos. Si el flanco o el cambio de nivel lógico es seleccionado, los últimos pulsos mas grandes que el pulsos de reloj generan una interrupción. Los pulsos mas cortos no garantizan generar una interrupción. Si el nivel bajo de interrupción se selecciona, el nivel bajo debe ser mantenido hasta que la instrucción actual se complete.

Figura 35.- Configuración de la interrupción 1

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

29

Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0: La interrupción externa 0 es activada por el pin externo INT0 si el bit I del SREG es uno y la correspondiente mascara de interrupción en el GICR es uno. El nivel y flancos sobre el pin externo INT0 que activa la interrupción está definido en la siguiente tabla (figura 36). El valor sobre el pin INT0 es revisado antes de detectar los flancos. Si el flanco o el cambio de nivel lógico es seleccionado, los últimos pulsos mas grandes que el pulsos de reloj generan una interrupción. Los pulsos mas cortos no garantizan generar una interrupción. Si el nivel bajo de interrupción se selecciona, el nivel bajo debe ser mantenido hasta que la instrucción actual se complete.

Figura 36.- Configuración de la interrupción 0 Registro General de Control de Interrupción (GICR) La siguiente figura (figura 37) muestra el Registro General de Control de Interrupción con sus respectivos bits.

Figura 37.- Registro General de Control de Interrupción (GICR) Bit 7 – INT1: External Interrupt Request 1 Enable: Cuando el bit INT1 es uno y el bit I en el registro de estados (SREG) es también uno, el pin externo de interrupción es habilitado. El control de censó de interrupción 1 (ISC11 y ISC10) en el Registro de Control General MCU (MCUCR) define si la interrupción externa 1 es activada por flanco de subida o bajada en el pin INT1. La actividad sobre este pin causará una solicitud de interrupción Bit 6 – INT0: External Interrupt Request 0 Enable: Cuando el bit INT0 es uno y el bit I en el registro de estados (SREG) es también uno, el pin externo de interrupción es habilitado. El control de censó de interrupción 0 (ISC01 y ISC00) en el Registro de Control General MCU (MCUCR) define si la interrupción externa 1 es activada por flanco de subida o bajada en el pin INT0. La actividad sobre este pin causará una solicitud de interrupción

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

30

Banderas del Registro General de Interrupciones (GIFR) La siguiente figura (figura 38) muestra Banderas del Registro General de Interrupciones (GIFR) con sus respectivos bits.

Figura 38.- Banderas del Registro General de Interrupciones (GIFR) Bit 7 – INTF1: External Interrupt Flag 1: Cuando un cambio lógico o flanco sobre el pi INT1 dispara una solicitud de interrupción INTF1 se convierte en uno. Si el bit I en el SREG y el bit INT1 en el GICR son uno, MCU saltará al correspondiente vector de interrupción. LA bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada escribiendo un uno lógico en ella. Esta bandera siempre es limpiada cuando el bit INT1 es configurado como un nivel de interrupción. Bit 6 – INTF0: External Interrupt Flag 0: Cuando un cambio lógico o flanco sobre el pin INT0 dispara una solicitud de interrupción INTF0 se convierte en uno. Si el bit I en el SREG y el bit INT0 en el GICR son uno, MCU saltará al correspondiente vector de interrupción. La bandera es limpiada cuando la rutina de interrupción es ejecutada. Alternativamente, la bandera puede ser limpiada escribiendo un uno lógico en ella. Esta bandera siempre es limpiada cuando el bit INT0 es configurado como un nivel de interrupción.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

31

• Max 232: La comunicación serial es un protocolo muy común (no hay que confundirlo con el Bus Serial de Comunicación, o USB) para comunicación entre dispositivos que se incluye de manera estándar en prácticamente cualquier computadora. La mayoría de las computadoras incluyen dos puertos seriales RS-232. La comunicación serial es también un protocolo común utilizado por varios dispositivos para instrumentación; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Además, la comunicación serial puede ser utilizada para adquisición de datos si se usa en conjunto con un dispositivo remoto de muestreo. El concepto de comunicación serial es sencillo. El puerto serial envía y recibe bytes de información un bit a la vez. Aun y cuando esto es más lento que la comunicación en paralelo, que permite la transmisión de un byte completo por vez, este método de comunicación es más sencillo y puede alcanzar mayores distancias. Por ejemplo, la especificación IEEE 488 para la comunicación en paralelo determina que el largo del cable para el equipo no puede ser mayor a 20 metros, con no más de 2 metros entre cualesquier dos dispositivos; por el otro lado, utilizando comunicación serial el largo del cable puede llegar a los 1200 metros. Típicamente, la comunicación serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisión es asincrónica, es posible enviar datos por un línea mientras se reciben datos por otra. Existen otras líneas disponibles para realizar handshaking, o intercambio de pulsos de sincronización, pero no son requeridas. Las características más importantes de la comunicación serial son la velocidad de transmisión, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las características sean iguales. Interfase Serial RS232

La interfase RS232 es simple, universal y con un buen servicio, pero tiene algunos defectos como interfase de datos. Su origen esta ubicado antes de las computadoras modernas y contiene muchas características que no son relevantes para usos actuales. Puede ser controlada por módems muy viejos y tiene muchas señales de control para hacer esto por hardware, pero actualmente no se usan muchas de las señales de control que ofrece. La mejor característica de la interfase RS232 es que o requiere de la transmisión de un reloj, la recepción de un bit de inicio es suficiente para provocar que el receptor interprete correctamente los datos a partir de dicho bit. A esto se le llama transmisión asíncrona. La interfase RS232 permite hasta un 5% de diferencia en los tiempos de transmisión y recepción. Esto es importante si se usa un microcontrolador cuyo porcentaje de error en el generador de baudios sea menor al 5%, lo cual implica que se puede usar el estándar RS232 sin problemas.

La señal del estándar RS232 es del tipo bipolar, de los +3 a los +15 volts se considera un espacio (encendido), mientras que de los -3 a los -15 volts se considera una marca (apagado).

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

32

El nivel de la señal de salida usualmente oscila entre los +15 y -15 volts. El área que está entre los -3 y los +3 volts está diseñada para dar alguna inmunidad al ruido. La figura 39 muestra como es la transmisión usando el protocolo RS232.

Figura 39.- Transmisión usando el protocolo RS232.

• Pines y señales del Puerto Serial (Figura 40):

Figura 40.- Pines del Puerto Serial.

Pin: Etiqueta: Nombre: Tipo: 1 CD Detecta Acarreo Control 2 RD Receptor de Datos Datos 3 TD Transmisor de Datos Datos 4 DTR Terminal de Dato Control 5 GND Señal de Tierra Tierra 6 DSR Dato Listo Control 7 RTS Pedir para Enviar Control 8 CTS Limpiar para Enviar Control 9 RI Timbre Indicador Control

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

33

• Buffer Inversor y Limitador de Voltaje a 5 Volts pico:

Para el correcto acoplamiento de la señal es necesario implementar un limitador de voltaje, el cual restringe el voltaje de entrada del microcontrolador al voltaje Vref, que en nuestro caso es de Vcc = 5 Volts pico.

A continuación se muestra el diseño del limitador de voltaje a Vref = 5 V (Figura 41), así como la simulación en Electronic Workbench de su respuesta en el tiempo cuando la señal de entrada es de 3 Volts pico (Figura 42) y de 15 Volts pico (Figura 43):

Figura 41.- Limitador de voltaje a 5 Volts pico.

Figura 42.- Entrada (azul) y salida (rojo) del limitador de voltaje

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

34

Figura 43.- Entrada (azul) y salida (rojo) del limitador de voltaje

También fue necesario implementar un buffer inversor de voltaje, el cual tiene a su entrada la salida del limitador de voltaje (para que la salida del inversor también este limitada a 5 Volts pico). El inversor de voltaje es necesario para poder tomar las muestras de las señales con voltajes negativos, ya que tanto el comparador analógico como el convertidor analógico digital del microcontrolador atmega8535 solo tienen entradas con capacidad para voltajes entre 0 y 5 Volts pico. Para ello utilizamos uno de los amplificadores operacionales del TL082, del cual se muestra a continuación su diagrama de conexión (Figura 44):

Figura 44.- Diagrama de conexión del Amplificador Operacional TL082.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

35

A continuación se muestra el diseño del buffer inversor de voltaje (Figura 45), así como la simulación en Electronic Workbench de su respuesta en el tiempo cuando la señal de entrada es de 4 Volts pico (Figura 46) y de 15 Volts pico (Figura 47):

Figura 45.- Inversor de voltaje.

Figura 46.- Entrada (azul) y salida (rojo) del inversor de voltaje

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

36

Figura 47.- Entrada (azul) y salida (rojo) del inversor de voltaje.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

37

III. DESARROLLO EXPERIMENTAL

� Descripción del programa en el microprocesador atmega8535:

• Maquina de Estados para la Interrupción Externa (Figura 48):

Figura 48.- Maquina de Estados para la Interrupción Externa.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

38

• Maquina de Estados para el transmisor de la USART (Figura 49):

Figura 49.- Maquina de Estados para el transmisor de la USART.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

39

• Maquina de Estados para el Convertidor Analógico Digital (Figura 50):

Figura 50.- Maquina de Estados para el Convertidor Analógico Digital.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

40

• Rutinas del microprocesador:

Inicializa:

En esta rutina se configura el Stack Pointer de la memoria de datos, el apuntador 'X' y el apuntador 'Y' que sirven para leer o escribir datos en un buffer circular. El buffer circular sirve para que el 'ADC' almacene las muestras de la señal analógica. También sirve para que la 'USART' lea y envié una a una las muestras. En esta rutina también se limpia la bandera 't' que nos sirve para identificar si se están enviando (t=1) o no (t=0) las muestras a la PC. También se habilitan todas las interrupciones de forma global.

Inicializa Puertos:

En esta rutina se configura el 'puerto A' de entrada (el cual sirve para la entrada diferencial del convertidor analógico digital), también se configura el 'pin PD1' como de salida (para el transmisor 'TXD' de la 'USART'), se configura el 'pin PD2' como entrada (para la interrupción externa 'INT0'). También se configura el 'puerto C' como de salida (para poder indicar al usuario que se esta enviando información).

InicializaINT0:

En esta rutina se configura la interrupción externa 'INT0', la cual sirve para que la PC le indique al microprocesador que se deben generar y enviar un lote de muestras (512 muestras). En esta rutina se habilita la 'INT0' y la se configura la interrupción por flanco de subida.

InicializaUSART:

En esta rutina se configura el 'TXD' de la 'USART'. Se habilita el 'TDX' y la interrupción del 'TDX'. En esta rutina también se configura el formato de las tramas que envía la 'USART' por el 'TDX': 1 bit de paro y 8 bits de datos. También se configura la velocidad de transmisión de datos a 9600 bps. De igual forma se configura la 'USART' a doble velocidad, lo cual genera un menor porcentaje de error.

InicializaADC:

En esta rutina se configuran varios aspectos del Convertidor AD 'ADC'. Se selecciona el voltaje de referencia VCC (5 volts); se hace un "ajuste izquierdo" para poder utilizar solo una resolución de 8 bits. También se selecciona a 'ADC0' como entrada positiva y a 'ADC1' como entrada negativa para la entrada diferencial del 'ADC'.

InicializaAC:

En esta rutina se configuran varios aspectos del Comparador Analógico 'AC'. Se habilita el 'AC', se aplica el 'pin AIN0' a la entrada positiva del 'AC', se habilita la salida del comparador y se deshabilita la interrupción del mismo.

Principal:

Esta rutina siempre se encuentra en espera de que la 'USART' envié una muestra o en espera de que el 'ADC' resguarde una conversión en el buffer. Mientras tanto nos indica por el 'pin PC0' si el proceso de muestreo esta activo o inactivo.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

41

IniciaMuestreo:

Esta rutina identifica si el proceso de muestreo esta activo o inactivo. Si esta inactivo: arranca todo el proceso de muestreo. Se habilita el 'ADC' e inicia la primera conversión. Se configura el auto trigger, se habilita la interrupción del 'ADC' y se selecciona el pre-escalador con un factor de división de 2. También se habilita el 'TDX' de la 'USART' y se carga un dato en el 'UDR' de la 'USART' y modifica la bandera 't' a '1' para indicar que el proceso de muestreo ahora esta activo. El registro 'foco' es '1' para indicar que esta activo el proceso de muestreo. Si esta activo: pasa a la rutina que finaliza el muestreo.

FinalizaMuestreo:

En esta rutina se detiene el proceso de muestreo. Deshabilita el 'ADC' e indica por el 'puerto C' que finalizo dicho proceso. Además vacía el buffer y deshabilita el 'TDX' de la 'USART'. También modifica la bandera 't' a '0' para indicar que el proceso de muestreo ahora esta inactivo. El registro 'foco' es '0' para indicar que esta inactivo el proceso de muestreo.

GuardaMuestra:

En esta rutina se resguarda una muestra del 'ADC' en el buffer cuando esta es generada, si la 'USART' esta deshabilitada entonces habilita la 'USART' y guarda la muestra directamente en el 'UDR'. Si esta habilitada la 'USART' entonces el buffer no esta lleno ni vació y entonces guarda la muestra en el mismo. También se selecciona si la señal es positiva o negativa. También se vuelve a habilitar el 'ADC', se inicia la primera conversión, se configura por auto trigger, se habilita la interrupción del 'ADC', se selecciona el pre-escalador con un factor de división de 2.

OnUSART:

En esta rutina se habilita el 'TDX' de 'USART' y guarda la muestra directamente en el 'UDR'. También se vuelve a habilitar el 'ADC', se inicia la primera conversión, se configura por auto trigger, se habilita la interrupción del 'ADC', se selecciona el pre-escalador con un factor de división de 2.

SelecCanal:

En esta rutina se selecciona si la señal es positiva o negativa mediante el resultado del Comparador Analógico 'AC'. Si es positiva mantiene el canal positivo, de lo contrario cambia el canal de entrada a negativo.

CanalPos:

En esta rutina se configura el 'ADC' para que seleccione el canal positivo, esto pasa cuando la señal de entrada es positiva.

CanalNeg:

En esta rutina se configura el 'ADC' para que seleccione el canal negativo, esto pasa cuando la señal de entrada es negativa.

TomaMuestra:

Esta rutina saca una muestra del buffer para enviarla por el 'TXD' de la 'USART'. Si el buffer esta vació, entonces deshabilita la 'USART' y entonces se envía un dato hasta que este sea generado por el 'ADC'.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

42

OffUSART:

En esta rutina se deshabilita el 'TDX' de 'USART'.

Putchar:

Esta rutina guarda un dato en el buffer si es que no esta lleno. Si esta lleno entonces retorna sin guardar el dato.

Lleno:

Esta rutina determina si el buffer esta lleno.

SiguienteX:

Esta rutina avanza el apuntador X.

SiguienteZ:

Esta rutina avanza el apuntador Z.

Getchar:

Esta rutina saca un dato del buffer si es que no esta vació. Si esta vació entonces no saca ningún

dato.

Vacio:

Esta rutina determina si el buffer esta vació.

SiguienteY:

Esta rutina avanza el apuntador Y.

IncrementaX:

Esta rutina incrementa en uno el apuntador X.

IncrementaY:

Esta rutina incrementa en uno el apuntador Y.

IncrementaZ:

Esta rutina incrementa en uno el apuntador Z.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

43

� Descripción de las funciones y configuraciones del Puerto Serial en MATLAB:

• Funciones asociadas con la Lectura de Datos:

fgetl: Lee una línea del texto desde el dispositivo y descarta el finalizador.

fgets: Lee una línea del texto desde el dispositivo e incluye el finalizador.

fread: Lee datos binarios desde el dispositivo.

fscanf: Lee datos del dispositivo y les da formato de texto.

readasync: Lee datos de forma asíncrona desde el dispositivo.

stopasync: Detiene la lectura asíncrona y operaciones de escritura.

• Propiedades asociadas con la Lectura de Datos:

BytesAvaliable: Indica el numero de bytes disponibles en el buffer de entrada.

InputBufferSize: Especifica el tamaño del buffer de entrada en bytes.

ReadAsyncMode: Especifica si la operación de lectura asíncrona es continua o manual.

Timeout: Especifica el tiempo de espera para completar una operación de lectura o de escritura.

TransferStatus: Indica si una operación de escritura o lectura asíncrona esta en progreso.

ValuesReceived: Indica el número total de valores leídos desde el dispositivo.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

44

• Propiedades de un objeto de tipo Puerto Serial:

BaudRate: Especifica la velocidad con la cual los bits son transmitidos.

DataBits: Especifica el numero de bits de datos a transmitir.

Parity: Especifica el tipo de revisión de paridad.

StopBits: Especifica el numero de bits usados para indicar el final de un byte.

Terminator: Especifica el carácter finalizador.

• Formato de la trama (Figura 51):

Figura 51.- Formato de la trama.

• Propiedades de los pines de control del Puerto Serial:

DataTerminalReady: Especifica el estado de el pin DTR.

FlowControl: Especifica el método de flujo de control de datos a usar.

PinStatus: Indica el estado de los pines CD, CTS, DSR y RI.

RequestToSend: Especifica el estado del pin RTS.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

45

� Descripción de la configuración del Puerto Serial en Windows:

Podemos configurar todas las propiedades del puerto serial desde el Panel de Control en Windows, en Propiedades del Sistema (Figura 52 y Figura 53):

Figura 52.- Puertos de la PC.

Figura 53.- Configuraciones del Puerto Serial COM1.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

46

� Programa en el microprocesador atmega8535: /*

PROYECTO FINAL (MICROPROCESADOR): OSCILOSCOPIO A BA SE DE MICONTROLADOR Y PC UNIVERSIDAD AUTONOMA METROPOLITANA

ASESOR DE PROYECTO:

DR. MIGUEL ANGEL RUIZ SANCHEZ

AUTORES: PABLO DAMIÁN HERNÁNDEZ DURÁN (203321902) ISRAEL HERNANDEZ MERCHAND (202317691)

ESTE OSCILSCOPIO PERMITE AL USUARIO CONFIGURAR LA I NTERFAZ GRAFICA Y DESPLEGAR LAS FORMAS DE ONDA E INFORMACION RELACIONADA CON ELLAS. LA SEÑAL ANALOGICA ES MUESTREADA CON EL MICROCONTROLADOR ATMEGA8535 DE LA FAMILIA AVR DE ATMEL. LA INTERFAZ GRAFICA SE PROGRAMA CON AYUDA DEL SOFTWARE PARA EL PROCESAMIENTO DE DATOS MATLAB. */ .include "m8535def.inc" .org $0000 rjmp Inicializa .org INT0addr rjmp IniciaMuestreo .org UTXCaddr rjmp TomaMuestra .org ADCCaddr rjmp GuardaMuestra .def aux=r16 .def bandera_get=r17 .def bandera_put=r18 .def dato_get=r19 .def dato_put=r20 .def foco=r21 /* Inicializa: En esta rutina se configura el Stack Pointer de la memoria de datos, el apuntador 'X' y el apuntador 'Y' que sirven para leer o escribir datos en un buffer circular. El buffer circular sirve para que el 'ADC' almacene las muestras de la señal analógica. También sirve para que la 'USART' lea y envié una a una las muestras. En esta rutina también se limpia la bandera 't' que nos sirve para identificar si se están enviando (t=1) o no (t=0) las muestras a la PC. También se habilitan todas las interrupciones de forma global. */ Inicializa: ldi aux,HIGH(RAMEND) out SPH,aux ldi aux,LOW(RAMEND) out SPL,aux

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

47

ldi r26,$60 ldi r27,$00 ldi r28,$60 ldi r29,$00 clt sei /* InicializaPuertos: En esta rutina se configura el 'puerto A' de entrada (el cual sirve para la entrada diferencial del convertidor analógico digital), también se configura el 'pin PD1' como de salida (para el transmisor 'TXD' de la 'USART'), se configura el 'pin PD2' como entrada (para la interrupción externa 'INT0'). También se configura el 'puerto C' como de salida (para poder indicar al usuario que se esta enviando información). */ InicializaPuertos: clr aux out DDRA,aux out DDRB,aux ldi aux,$02 out DDRD,aux ser aux out DDRC,aux /* InicializaINT0: En esta rutina se configura la interrupción externa 'INT0', la cual sirve para que la PC le indique al microprocesador que se deben generar y enviar un lote de muestras (512 muestras). En esta rutina se habilita la 'INT0' y la se configura la interrupción por flanco de subida. */ InicializaINT0: ldi aux,(1<<ISC01)|(1<<ISC00) out MCUCR,aux ldi aux,(1<<INT0) out GICR,aux ldi foco,$00 /* InicializaUSART: En esta rutina se configura el 'TXD' de la 'USART'. Se habilita el 'TDX' y la interrupción del 'TDX'. En esta rutina también se configura el formato de las tramas que envía la 'USART' por el 'TDX': 1 bit de paro y 8 bit s de datos. También se configura la velocidad de transmisión de datos a 9600 bps. De igual forma se configura la 'USART' a doble velocidad, lo cual genera un menor porcentaje de error. */ InicializaUSART: clr r17 out UBRRH,r17 ldi r16,$0C out UBRRL,r16 ldi aux,(0<<TXEN)|(0<<TXCIE) out UCSRB,aux ldi aux,(1<<URSEL)|(0<<USBS)|(3<<UCSZ0) out UCSRC,aux

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

48

ldi r16,(1<<U2X)|(1<<UDRE) out UCSRA,r16 /* InicializaADC: En esta rutina se configuran varios aspectos del Convertidor AD 'ADC'. Se selecciona el voltaje de referencia VCC (5 volts); se hace un "ajuste izquierdo" para poder utilizar solo una resolución de 8 bits. También se selecciona a 'ADC0' como entrada positiva y a 'ADC1' como entrada negativa para la entrada diferencial del 'ADC'. */ InicializaADC: ldi aux,(0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(1<<MUX4)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0) out ADMUX,aux ldi aux,(0<<ADTS0)|(0<<ADTS1)|(0<<ADTS2)|(0<<ACME) out SFIOR,aux /* InicializaAC: En esta rutina se configuran varios aspectos del Comparador Analógico 'AC'. Se habilita el 'AC', se aplica el 'pin AIN0' a la entrada positiva del 'AC', se habilita la salida del comparador y se deshabilita la interrupción del mismo. */ InicializaAC: clr aux out ACSR,aux /* Principal: Esta rutina siempre se encuentra en espera de que la 'USART' envié una muestra o en espera de que el 'ADC' resguarde una conversión en el buffer. Mientras tanto nos indica por el 'pin PC0' si el proceso de muestreo esta activo o inactivo. */ Principal: out PORTC,foco rjmp Principal /* IniciaMuestreo: Esta rutina identifica si el proceso de muestreo esta activo o inactivo. Si esta inactivo: arranca todo el proceso de muestreo. Se habilita el 'ADC' e inicia la primera conversión. Se configura el auto trigger, se habilita la interrupción del 'ADC' y se selecciona el pre-escalador con un factor de división de 2. También se habilita el 'TDX' de la 'USART' y se carga un dato en el 'UDR' de la 'USART' y modifica la bandera 't' a '1' para indicar que el proceso de muestreo ahora esta activo. El registro 'foco' es '1' para indicar que esta activo el proceso de muestreo. Si esta activo: pasa a la rutina que finaliza el muestreo. */ IniciaMuestreo: ldi aux,(0<<INTF0) out GIFR,aux ldi foco,$01 brts FinalizaMuestreo ldi aux,(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0) out ADCSRA,aux

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

49

ldi aux,(1<<TXEN)|(1<<TXCIE) out UCSRB,aux ldi dato_get,$00 out UDR,dato_get set reti /* FinalizaMuestreo: En esta rutina se detiene el proceso de muestreo. Deshabilita el 'ADC' e indica por el 'puerto C' que finalizo dicho proceso. Además vacía el buffer y deshabilita el 'TDX' de la 'USART'. También modifica la bandera 't' a '0' para indicar que el proceso de muestreo ahora esta inactivo. El registro 'foco' es '0' para indicar que esta inactivo el proceso de muestreo. */ FinalizaMuestreo: ldi aux,(0<<ADEN) out ADCSRA,aux ldi r26,$60 ldi r27,$00 ldi r28,$60 ldi r29,$00 ldi aux,(0<<TXEN)|(0<<TXCIE) out UCSRB,aux clt ldi foco,$00 reti /* GuardaMuestra: En esta rutina se resguarda una muestra del 'ADC' en el buffer cuando esta es generada, si la 'USART' esta deshabilitada entonces habilita la 'USART' y guarda la muestra directamente en el 'UDR'. Si esta habilitada la 'USART' entonces el buffer no esta lleno ni vació y entonces guarda la muestra en el mismo. También se selecciona si la señal es positiva o negativa. También se vuelve a habilitar el 'ADC', se inicia la primera conversión, se configura por auto trigger, se habilita la interrupción del 'ADC', se selecciona el pre-escalador con un factor de división de 2. */ GuardaMuestra: in dato_put,ADCH in aux,UCSRB cpi aux,$00 breq OnUSART rcall Putchar rcall SelecCanal ldi aux,(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0) out ADCSRA,aux reti /* OnUSART: En esta rutina se habilita el 'TDX' de 'USART' y guarda la muestra directamente en el 'UDR'. También se vuelve a habilitar el 'ADC', se inicia la primera conversión, se configura por auto trigger, se habilita la interrupción del 'ADC', se selecciona el pre-escalador con un factor de división de 2. */

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

50

OnUSART: ldi aux,(1<<TXEN)|(1<<TXCIE) out UCSRB,aux out UDR,dato_put rcall SelecCanal ldi aux,(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(0<<ADPS2)|(0<<ADPS1)|(0<<ADPS0) out ADCSRA,aux reti /* SelecCanal: En esta rutina se selecciona si la señal es positiva o negativa mediante el resultado del Comparador Analógico 'AC'. Si es positiva mantiene el canal positivo, de lo contrario cambia el canal de entrada a negativo. */ SelecCanal: in aux,ACSR sbrs aux,$05 rjmp CanalNeg /* CanalPos: En esta rutina se configura el 'ADC' para que seleccione el canal positivo, esto pasa cuando la señal de entrada es positiva. */ CanalPos: ldi aux,(0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(1<<MUX4)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0) out ADMUX,aux ret /* CanalNeg: En esta rutina se configura el 'ADC' para que seleccione el canal negativo, esto pasa cuando la señal de entrada es negativa. */ CanalNeg: ldi aux,(0<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(1<<MUX4)|(1<<MUX3)|(0<<MUX2)|(1<<MUX1)|(1<<MUX0) out ADMUX,aux ret /* TomaMuestra: Esta rutina saca una muestra del buffer para enviarla por el 'TXD' de la 'USART'. Si el buffer esta vació, entonces deshabilita la 'USART' y entonces se envía un dato hasta que este sea generado por el 'ADC'. */ TomaMuestra: rcall Getchar cpi bandera_get,$00 brne OffUSART out UDR,dato_get reti

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

51

/* OffUSART: En esta rutina se deshabilita el 'TDX' de 'USART'. */ OffUSART: ldi aux,(0<<TXEN)|(0<<TXCIE) out UCSRB,aux reti /* Putchar: Esta rutina guarda un dato en el buffer si es que no esta lleno. Si esta lleno entonces retorna sin guardar el dato. */ Putchar: rcall Lleno clr aux cpse bandera_put,aux ret st X,dato_put rcall SiguienteX ret /* Lleno: Esta rutina determina si el buffer esta lleno. */ Lleno: clr bandera_put mov r30,r26 mov r31,r27 rcall SiguienteZ cpse r30,r28 ret cpse r31,r29 ret ser bandera_put ret /* SiguienteX: Esta rutina avanza el apuntador X. */ SiguienteX: cpi r26,$60 brne IncrementaX cpi r27,$01 brne IncrementaX ldi r26,$60 ldi r27,$00 ret

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

52

/* SiguienteZ: Esta rutina avanza el apuntador Z. */ SiguienteZ: cpi r30,$60 brne IncrementaZ cpi r31,$01 brne IncrementaZ ldi r30,$60 ldi r31,$00 ret

/* Getchar: Esta rutina saca un dato del buffer si es que no esta vació. Si esta vació entonces no saca ningún dato. */ Getchar: rcall Vacio clr aux cpse bandera_get,aux ret ld dato_get,Y rcall SiguienteY ret

/* Vacio: Esta rutina determina si el buffer esta vació. */ Vacio: clr bandera_get cpse r28,r26 ret cpse r29,r27 ret ser bandera_get ret

/* SiguienteY: Esta rutina avanza el apuntador Y. */ SiguienteY: cpi r28,$60 brne IncrementaY cpi r29,$01 brne IncrementaY ldi r28,$60 ldi r29,$00 ret

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

53

/* IncrementaX: Esta rutina incrementa en uno el apuntador X. */ IncrementaX: inc r26 clr aux cpse r26,aux ret inc r27 ret /* IncrementaY: Esta rutina incrementa en uno el apuntador Y. */ IncrementaY: inc r28 clr aux cpse r28,aux ret inc r29 ret /* IncrementaZ: Esta rutina incrementa en uno el apuntador Z. */ IncrementaZ: inc r30 clr aux cpse r30,aux ret inc r31 ret

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

54

� Programa para el software de procesamiento de datos MATLAB:

% PROYECTO FINAL (MATLAB): OSCILOSCOPIO A BASE DE M ICONTROLADOR Y PC % UNIVERSIDAD AUTONOMA METROPOLITANA

% ASESOR DE PROYECTO:

% DR. MIGUEL ANGEL RUIZ SANCHEZ

% AUTORES: % PABLO DAMIÁN HERNÁNDEZ DURÁN (203321902) % ISRAEL HERNANDEZ MERCHAND (202317691)

% PROYECTO FINAL (MATLAB): PRINCIPAL clear all % Se limpian las funciones y variables utilizadas anteriormente clc % Se limpia la pantalla de trabajo de Matlab close % Se cierra la ultima visualización del osciloscopio BUFFER=512; % Se define el tamaño del buffer de entrada de datos de la PC VREF=5; % Se define el voltaje de referencia como de 5 volts GAIN=1; % Se asigna una ganancia unitaria CICLOS=14; % Se define el numero de ciclos que tarda el microcontrolador en realizar una conversión fADC=250*(10^3); % Se define la frecuencia del ADC para un reloj de 1MHz en el microcontrolador tADC=1/fADC; % Se calcula el periodo del reloj del convertidor ADC tconv=tADC*CICLOS; % Se calcula el tiempo de conversión por muestra fconv=1/tconv; % Se calcula la frecuencia de conversión del ADC BaudRate=9600; % Se define la velocidad de recepción de datos de la PC DataBits=8; % Se define el numero de bits de datos de la trama StopBits=1; % Se define el numero de bits de paro de la trama % Se declara el Objeto Puerto Serial y se configuran sus parámetros importantes s=serial('COM1','BaudRate',BaudRate,'DataBits',DataBits,'StopBits',StopBits,'InputBufferSize',BUFFER); CODIGO=muestras(s,BUFFER) % Se almacenan en CODIGO 512 muestras obtenidas desde el buffer de la PC SENAL=decodifica(CODIGO,BUFFER,VREF,GAIN) % Se almacenan en SENAL las muestras ya decodificadas M=length(SENAL); % Se calcula el numero de muestras de SENAL t=(0:M-1)*(tconv); % Se define el eje temporal del osciloscopio % La siguiente parte del codigo define la interfaz grafica para el osciloscopio % Se define la posición, las dimensiones y el color del osciloscopio figure('Position',[20 200 900 500],'Color',[0.6,0.9,0.9]); plot(t,SENAL,'r','LineWidth',1); % Se grafica la señal grid; % Se cuadricula la pantalla del osciloscopio xlabel('TIEMPO'); % Se etiqueta el eje X como 'TIEMPO' ylabel('VOLTAJE'); % Se etiqueta el eje Y como 'VOLTAJE' axis([0 (28*(10^(-3))) -6*GAIN 6*GAIN]); % Se limitan los ejes del osciloscopio

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

55

% Se modifica el menú y el nombre de la figura set(figure(1),'MenuBar','none','NumberTitle','off','Name','PROYECTO FINAL: OSCILOSCOPIO','Resize','off'); % Se definen los botones utilizados para LIMPIAR, ACTUALIZAR y SALIR del osciloscopio opcion=uicontrol(figure(1),'Style', 'pushbutton', 'String','LIMPIAR','Position', [10 10 80 20], 'Callback', 'cla'); opcion=uicontrol(figure(1),'Style', 'pushbutton', 'String','ACTUALIZAR','Position', [10 50 80 20], 'Callback', 'osciloscopio'); opcion=uicontrol(figure(1),'Style', 'pushbutton', 'String','SALIR','Position', [10 100 80 20], 'Callback', 'salir'); % Se definen los botones que controlan las escalas del eje de TIEMPO y del eje de VOLTAJE opcv=uicontrol(figure(1),'Style', 'popup', 'String','2V/DIV|1V/DIV|0.5V/DIV|0.2V/DIV|0.1V/DIV|0.05V/DIV', 'Position',[10 150 80 20], 'Callback', 'voltaje'); opct=uicontrol(figure(1),'Style', 'popup', 'String','5ms/DIV|2ms/DIV|1ms/DIV|0.5ms/DIV|0.2ms/DIV', 'Position',[130 10 80 20], 'Callback', 'tiempo'); % PROYECTO FINAL (MATLAB): OBTIENE MUESTRAS % Con esta función se obtienen 512 muestras desde el buffer de la PC % La función recibe como parámetros el tamaño del buffer y el objeto puerto serial function CODIGO=muestras(s,BUFFER) fopen(s); % Se abre el puerto serial CODIGO=fread(s,BUFFER,'uint8'); % Se extraen las 512 muestras del buffer de entrada de la PC fclose(s); % Se cierra el puerto serial % PROYECTO FINAL (MATLAB): DECODIFICA DATOS % Con esta función se decodifican las muestras con sus valores de voltaje % correspondientes a partir del vector CODIGO (muestras del buffer de la PC). % La función recibe como parámetros las 512 muestras, el tamaño del buffer, % el voltaje de referencia y la ganancia function SENAL=decodifica(CODIGO,BUFFER,VREF,GAIN); for i=1:BUFFER % Se decodifican las 512 muestras if (CODIGO(i)<=127 & CODIGO(i)>=0) % Se decodifica una muestra positiva SENAL(i)=(VREF*CODIGO(i))/(GAIN*127); % Las muestras positivas están entre 0 y 127 elseif(CODIGO(i)<=255 & CODIGO(i)>=128) % Se decodifica una muestra negativa SENAL(i)=(VREF*(CODIGO(i)-255))/(GAIN*127); % Las muestras negativas están entre 128 y 255 end end

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

56

% PROYECTO FINAL (MATLAB): TIEMPO % Con esta función se modifican las dimensiones del eje de TIEMPO del osciloscopio % El procedimiento recibe como parámetro la opción de escala de tiempo tie = get(opct,'Value'); if tie==1 % Si es la primera opción (5ms/DIV) entonces se muestran las muestras xlim([0 (28*(10^(-3)))]); % correspondientes entre el 0 a 28 milisegundos (todas las muestras) elseif tie==2 % Si es la segunda opción (2ms/DIV) entonces se muestran las muestras xlim([0 (20*(10^(-3)))]); % correspondientes entre el 0 a 20 milisegundos elseif tie==3 % Si es la tercera opción (1ms/DIV) entonces se muestran las muestras xlim([0 (8*(10^(-3)))]); % correspondientes entre el 0 a 8 milisegundos elseif tie==4 % Si es la cuarta opción (0.5ms/DIV) entonces se muestran las muestras xlim([0 (32*(10^(-4)))]); % correspondientes entre el 0 a 3.2 milisegundos elseif tie==5 % Si es la quinta opción (0.2ms/DIV) entonces se muestran las muestras xlim([0 (20*(10^(-4)))]); % correspondientes entre el 0 a 2 milisegundos end % PROYECTO FINAL (MATLAB): VOLTAJE % Con esta función se modifican las dimensiones del eje de VOLTAJE del osciloscopio % El procedimiento recibe como parámetro la opción de escala de voltaje vol = get(opcv,'Value'); GAIN=1; if vol==1 % Si es la primera opción (2V/DIV) entonces se muestran la ylim([-6.0*GAIN 6.0*GAIN]); % escala correspondiente entre -6 a 6 volts elseif vol==2 % Si es la segunda opción (1V/DIV) entonces se muestran la ylim([-3.0*GAIN 3.0*GAIN]); % escala correspondiente entre -3 a 3 volts elseif vol==3 % Si es la tercera opción (0.5V/DIV) entonces se muestran la ylim([-2.0*GAIN 2.0*GAIN]); % escala correspondiente entre -2 a 2 volts elseif vol==4 % Si es la cuarta opción (0.2V/DIV) entonces se muestran la ylim([-1.0*GAIN 1.0*GAIN]); % escala correspondiente entre -1 a 1 volts elseif vol==5 % Si es la quinta opción (0.1V/DIV) entonces se muestran la ylim([-0.5*GAIN 0.5*GAIN]); % escala correspondiente entre -0.5 a 0.5 volts elseif vol==6 % Si es la sexta opción (0.05V/DIV) entonces se muestran la ylim([-0.25*GAIN 0.25*GAIN]); % escala correspondiente entre -0.25 a 0.25 volts end % PROYECTO FINAL (MATLAB): SALIR % Con esta función salimos del osciloscopio clear all % Se limpian las funciones y variables utilizadas anteriormente clc % Se limpia la pantalla de trabajo de Matlab close % Se cierra la ultima visualización del osciloscopio

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

57

� Descripción del diagrama esquemático del Osciloscopio:

A continuación se muestra el diagrama esquemático del Osciloscopio (Figura 54):

Figura 54.- Diagrama esquemático del Osciloscopio.

∼ ENTRADA:

En este punto se inyecta la señal analógica que se desea graficar en el Osciloscopio.

∼ CONTROL:

Este punto se conecta al pin 7 del Puerto Serial (RTS “Dato Listo”).

∼ DATOS:

Este punto se conecta al pin 2 del Puerto Serial (RD “Receptor de Datos”).

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

58

� Descripción de la interfaz grafica del Osciloscopio:

A continuación se muestra la descripción de la interfaz grafica del Osciloscopio (Figura 55):

Figura 55.- Interfaz grafica del Osciloscopio.

∼ TITULO DE LA VENTANA:

Aquí aparece el titulo “PROYECTO FINAL: OSCILOSCOPIO”.

∼ MINIMIZAR LA VENTANA:

Con este botón se minimiza la interfaz grafica del Osciloscopio.

∼ CERRAR LA VENTANA:

Con este botón se cierra la interfaz grafica del Osciloscopio.

∼ EJE VERTICAL (VOLTAJE):

Aquí aparece el nombre del eje vertical “VOLTAJE”.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

59

∼ EJE HORIZONTAL (TIEMPO):

Aquí aparece el nombre del eje horizontal “TIEMPO”.

∼ ESCALA POR DIVISION (VOLTAJE):

Con este botón se selecciona la escala por división del eje de VOLTAJE.

∼ ESCALA POR DIVISION (TIEMPO):

Con este botón se selecciona la escala por división del eje de TIEMPO.

∼ SALIR DE LA INTERFAZ:

Con este botón se cierra la interfaz grafica del Osciloscopio.

∼ ACTUALIZAR PANTALLA:

Con este botón se actualizan los datos mostrados en la interfaz grafica del Osciloscopio.

∼ LIMPIAR PANTALLA:

Con este botón se limpia la pantalla de la interfaz grafica del Osciloscopio.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

60

� Graficas para una señal de DC, una señal cuadrada y una señal senoidal:

• Graficas para una señal de DC a diferentes voltajes

Figura 56.-Señal de DC a 5 Volts.

Figura 57.-Señal de DC a -5 Volts.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

61

Figura 58.-Señal de DC a 2.5 Volts.

Figura 59.-Señal de DC a -2.5 Volts.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

62

• Graficas para una señal cuadrada a diferentes frecuencias y niveles de offset:

Figura 60.-Señal cuadrada a 3 kHz con 2 Volts pico de amplitud sin offset.

Figura 61.-Señal cuadrada a 1 kHz con 2 Volts pico de amplitud sin offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

63

Figura 62.-Señal cuadrada a 500 Hz con 2 Volts pico de amplitud sin offset.

Figura 63.-Señal cuadrada a 3 kHz con 2 Volts pico de amplitud y 2 Volts de offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

64

Figura 64.-Señal cuadrada a 1 kHz con 2 Volts pico de amplitud y 2 Volts de offset.

Figura 65.-Señal cuadrada a 500 Hz con 2 Volts pico de amplitud y 2 Volts de offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

65

• Graficas para una señal senoidal a diferentes frecuencias y niveles de offset:

Figura 66.-Señal senoidal a 100 Hz con 2 Volts pico de amplitud y 2 Volts de offset.

Figura 67.-Señal senoidal a 500 Hz con 2 Volts pico de amplitud y 2 Volts de offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

66

Figura 68.-Señal senoidal a 1 kHz con 2 Volts pico de amplitud y 2 Volts de offset.

Figura 69.-Señal senoidal a 1 kHz con 2 Volts pico de amplitud sin offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

67

Figura 70.-Señal senoidal a 3 kHz con 2 Volts pico de amplitud y 2 Volts de offset.

Figura 71.-Señal senoidal a 3 kHz con 2 Volts pico de amplitud sin offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

68

Figura 72.-Señal senoidal a 5 kHz con 2 Volts pico de amplitud y 2 Volts de offset.

Figura 73.-Señal senoidal a 5 kHz con 2 Volts pico de amplitud sin offset.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

69

IV. ANALISIS DE RESULTADOS Como se puede apreciar en los ejemplos para una señal senoidal y para una señal cuadrada, en la señal cuadrada no se tiene ningún tipo de problema en cuanto a graficar voltajes positivos y negativos de la señal; sin embargo, en lo que respecta a la señal senoidal si se tienen problemas cuando se intentan graficar sus voltajes negativos. Cuando se inyecta una señal senoidal con un offset que evite tener voltajes negativos de la misma, la única limitante que se presenta es con respecto a la máxima frecuencia que puede tener la señal para que se pueda recuperar íntegramente (teorema de Nysquit, si nuestra fmuestreo es de aproximadamente 17 kHz entonces la fmaxima de la señal debe ser de a lo mas de aproximadamente 8 kHz); pero cuando se inyecta la señal senoidal sin offset no solo tenemos la limitante de la frecuencia máxima, sino que también surgen problemas para graficarla ocasionados por el Comparador Analógico del microcontrolador. El Comparador Analógico del microcontrolador funciona muy bien cuando los cambios de voltaje son “bruscos” (por ejemplo con la señal cuadrada), pero cuando los cambios de voltaje se dan de manera tenue (por ejemplo con la señal senoidal) entonces no es capaz de identificar correctamente el cambio y entonces no realiza adecuadamente la comparación; lo anterior provoca que no se haga correctamente el cambio entre el canal positivo y el canal negativo del Convertidor Analógico Digital del microcontrolador, y entonces el muestreo no se lleva a cabo correctamente y la grafica de la señal es incorrecta. Otra cosa que se puede apreciar en los ejemplos para una señal senoidal y para una señal cuadrada, es que cuando la señal senoidal que inyectamos es de 5 kHz ya se presenta una clara distorsión entre la forma de onda real y la que grafica el osciloscopio. Entonces podemos decir que a frecuencias mayores de aproximadamente 4 kHz ya no se pueden apreciar correctamente las formas de onda de las señales, lo cual esta por debajo de la frecuencia calculada a partir del teorema de Nysquit (fmaxima de la señal debe ser de a lo mas de 8.5 kHz). Cabe destacar que para señales de corriente directa el osciloscopio no presenta ningún problema para graficar los distintos niveles de voltaje entre -5 y 5 volts DC.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

70

V. CONCLUSIONES

Como hemos comentado en el análisis de resultados, en general el osciloscopio funciona de forma parcial con algunas restricciones importantes. En general solo funciona correctamente para señales positivas con a lo más 5 volts pico pico de amplitud y a frecuencias teóricamente no mayores a 8 kHz (aunque para un desempeño optimo se recomiendan frecuencias no mayores a 4 kHz). Para señales con valores negativos también funciona de manera adecuada siempre y cuando dichas señales presentan de forma bien definida sus valores negativos. Para señales de corriente directa el osciloscopio funciona apropiadamente.

Una solución a futuro para resolver el problema de la detección incorrecta entre voltajes positivos y negativos podría ser utilizar un Comparador Analógico externo al microcontrolador, que cuente con una mayor capacidad de respuesta a los cambios tenues de voltaje.

Para poder alcanzar un mas alto desempeño de este osciloscopio se podría considerar utilizar un reloj

(cristal) externo al microcontrolador. El microcontrolador atmega8535L nos da la oportunidad de manejar un reloj externo de hasta 4 MHz, con ello lograríamos que señales a mayores frecuencias pudieran ser graficadas. Teóricamente en nuestro caso, con un reloj de 1 MHz obtuvimos una frecuencia de muestreo de aproximadamente 17 kHz y entonces podemos muestrear señales de aproximadamente hasta 8 kHz; de esta manera, con un reloj de 4 MHz se podría obtener una frecuencia de muestreo de aproximadamente 68 kHz y podríamos muestrear señales con frecuencias de aproximadamente hasta 34 kHz.

En conclusión, el objetivo de implementar un osciloscopio auxiliado de una PC y un sistema basado en

microcontrolador se alcanzo de forma exitosa pero con muchas mejoras pendientes para realizar a futuro.

REPORTE DEL PROYECTO FINAL “OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC”

Hernández Durán Pablo Damián (203321902) Hernández Merchand Israel (202317691)

71

VI. REFERECIAS

1. Hoja de Especificaciones del microprocesador atmega8535

2. Hoja de Especificaciones del Amplificador Operacional TL082

3. Hoja de Especificaciones del adaptador TTL a RS232 Max232

4. Ayuda de Matlab 7