Micro At90s8535posciloscopio a Base de Microcontrolador y Pc

  • Upload
    chuchis

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

osciloscopio a Base de Microcontrolador y Pc

Citation preview

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    REPORTE DEL PROYECTO FINAL

    OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    ALUMNOS: Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    UNIDAD:

    Universidad Autnoma Metropolitana - Iztapalapa

    DIVISIN:

    Ciencias Bsicas e Ingeniera (CBI)

    LICENCIATURA: Ingeniera Electrnica en Comunicaciones

    NOIMBRE DEL ASESOR: Miguel ngel Ruiz Snchez

    Presentacin:

    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 informacin relacionada con ella. Por su parte, el microcontrolador es el encargado del muestreo de la seal a analizar, as como del correcto acoplamiento de esta. La comunicacin entre la PC y el microcontrolador la llevamos a cabo en forma serial.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    2

    I. CONTENIDO.

    I. CONTENIDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    II. INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    Diagrama a bloques del Osciloscopio completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Descripcin del microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Distribucin de pines del atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    Funciones de cada bloque del Osciloscopio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 USART (atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ADC Convertidor Analgico Digital (atmega8535) . . . . . . . . . . . . . . . . . . . . 12 AC Comparador Analgico(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 EI Interrupcin Externa(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

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

    III. DESARROLLO EXPERIMENTAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Descripcin del programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . . 37

    Maquina de Estados para la Interrupcin Externa . . . . . . . . . . . . . . . . . . . . . 37 Maquina de Estados para el transmisor de la USART . . . . . . . . . . . . . . . . . . . 38 Maquina de Estados para el Convertidor Analgico Digital . . . . . . . . . . . . . 39 Rutinas del microprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    Descripcin 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

    Descripcin de la configuracin del Puerto Serial en Windows . . . . . . . . . . . . . . . . . 45 Programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Programa para el software de procesamiento de datos MATLAB . . . . . . . . . . . . . . . 54 Descripcin del diagrama esquemtico del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . . 57 Descripcin de la interfaz grafica del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Graficas para una seal de DC, una seal cuadrada y una seal senoidal . . . . . . . . . 60

    Graficas para una seal de DC a diferentes voltajes . . . . . . . . . . . . . . . . . . . . . . 60 Graficas para una seal cuadrada a diferentes frecuencias . . . . . . . . . . . . . . . . 62 Graficas para una seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    3

    II. INTRODUCCIN

    Los osciloscopios son instrumentos utilizados para poder apreciar en su pantalla variaciones de voltaje (seales peridicas o no peridicas). Estos instrumentos son caros y tienen cierta dificultad para desplegar formas de onda a bajas frecuencias.

    La palabra osciloscopio es un hibrido etimolgico. La primera parte deriva del latn oscillare que significa balanceo; la segunda parte viene del griego clsico 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 algn documento

    Software actualizable

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    5

    Descripcin del microprocesador atmega8535:

    El ATMEGA8535 es un microcontrolador de 8 bits basado en la arquitectura RISC, el ncleo AVR combina un gran conjunto de instrucciones con 32 registros de propsito general. Los 32 registros estn directamente conectados con la unidad aritmtica-lgica (ALU), permitiendo que dos registros sean accesados en una sola instruccin ejecutada en un ciclo de reloj. Esta arquitectura permite que el microcontrolador sea mas de diez veces mas rpido que los microcontroladores tradicionales (microcontroladores CISC). En la figura 3se muestra el microcontrolador ATMEGA8535.

    Figura 3.- ATMEGA8535.

    El ATMEGA8535 contiene las siguientes caractersticas:

    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 lneas de entrada/salida de propsito general. Repartidas en 4puertos de 8 bits cada uno. Temporizadores/contadores con modo de comparacin entre ellos. 8 conversores analgico digital de 10 bits de resolucin. Interrupciones internas y externas. Un puerto serie SPI.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    6

    Distribucin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    8

    Funciones de cada bloque del Osciloscopio:

    USART Receptor y Transmisor Serial Universal Sncrono y Asncrono (atmega8535):

    La USART es parte del hardware que se encuentra dentro del chip. La USART es la encargada controlar y administrar la transmisin y recepcin de los datos en forma serial.

    Configuramos este perifrico del microcontrolador del tal forma que lea las muestras (1 byte por muestra) desde un buffer circular (utilizando la memoria de datos del microcontrolador); tambin lo configuramos de tal manera que implemente el mismo protocolo de comunicacin de la PC.

    Como hemos mencionado, las muestras a transmitir las obtenemos del buffer circular, el cual tiene el mismo tamao que el buffer de entrada del puerto serial.

    A continuacin se muestra el diagrama a bloques de la USART del microcontrolador atmega8535 (Figura 6) y una breve explicacin del mismo:

    Figura 6.- Diagrama a bloques de la USART.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    9

    Transmisin de datos

    La transmisin 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 transmisin 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 transmisin de la USART cuando es puesto en uno. La transmisin de la USART se realiza por el pin nmero 15 del chip (TXD, PD1).

    Recepcin de datos

    Para que la recepcin de datos se habilite es necesario poner en uno el bit RXEN en el registro UCSRB. La recepcin de la USART se realiza por el pin nmero 14 del chip (RXD, PD0). La velocidad de transmisin, el modo de operacin (sncrono asncrono), y el formato de la trama debe ser establecido antes de que se realice la recepcin.

    Inicializacin de la USART

    La USART tiene que ser inicializada antes de que cualquier comunicacin tenga lugar. El proceso de inicializacin normalmente consiste en ajustar el rango de baudios, el formato de las tramas y habilitar el transmisor o el receptor dependiendo del uso.

    Generacin del reloj interno (generador de la velocidad de transmisin)

    El reloj interno es usado para los modos de operacin sncronos y asncronos 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 operacin usando un reloj generado internamente.

    Figura 7.- Tabla de ecuaciones para el generador de la velocidad de transmisin

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    10

    Doble velocidad de operacin

    El rango de transferencia puede ser duplicado activando el bit U2X en el USCRA. Poner este bit a uno lgico tiene efecto en la operacin asncrona. Ponga este bit a cero cuando la operacin sea sncrona.

    Activando este bit se reducir el divisor frecuencia de 16 a 8, efectivamente duplicando el rango de transferencia para comunicacin asncrona. Observe sin embargo que el receptor usar en este caso solo la mitad del nmero de muestras (reducido de 16 a 8).

    Registro de datos de la USART (Figura 8)

    Figura 8.- UDR

    El buffer de datos de transmisin y el buffer de datos de la recepcin comparten la misma direccin de entrada y salida. El buffer de transmisin solo puede ser escrito cuando la bandera UDRE en el registro UCSRA (Figura 9) esta en uno. Los datos escritos en el UDR sern ignorados si la bandera UDRE no esta en uno. Cuando los datos se escriben en el buffer de transmisin, y la transmisin esta habilitada, el transmisor cargar los datos dentro del registro de transmisin. Entonces los datos sern 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 interrupcin Recepcin 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 interrupcin USART Transmit Complete se ejecute. TXC es limpiado por hardware cuando se ejecuta el correspondiente manejador de interrupcin.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 transmisin. El bit UDRE es limpiado escribiendo en UDR. Cuando el manejador de interrupcin de transmisin de datos es usado, la rutina de interrupcin 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 transmisin 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 vaca (UDRE) indica si el buffer de transmisin esta listo para recibir nuevos datos. Este bit es puesto en uno cuando el buffer de transmisin esta vaco, y en uno cuando el buffer de transmisin contiene datos a ser transmitidos.

    La bandera de transmisin completa(TXC) es puesta en uno cuando la trama completa en el registro de transmisin (UDR) ha enviado todo su contenido y no hay nuevos datos presentes en el buffer de transmisin.

    Formato de la Trama

    Consiste en la especificacin de factores de la comunicacin serial asncrona 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    12

    ADC Convertidor Analgico Digital (atmega8535):

    El Convertidor Analgico Digital es un dispositivo que permite convertir un voltaje determinado en un valor binario. Gracias a l es posible hacer transmisiones digitales partiendo de seales analgicas. Son varios los pasos que hay que dar hasta obtener los valores digitales que reconstruyen la seal.

    El primer paso en la conversin analgica digital se llama PAM (Pulse Amplitud-Modulation). En l se muestrea la seal analgica y se genera una serie de pulsos.

    En esta tcnica se toman muestras de la seal original (Figura 11) a intervalos regulares de tiempo. En un momento dado el nivel de la seal es ledo y retenido brevemente (Figura 12).

    Figura 11.- Seal analgica que se va a digitalizar.

    Figura 12.- Fase de muestreo en la conversin AD.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    13

    El motivo por el que PAM es insuficiente para establecer una comunicacin digital es por que aunque traduzca la forma actual de la onda a una serie de pulsos, siguen teniendo amplitud (se trata todava de una seal analgica y no digital). Para convertir estos pulsos en su equivalente digital, se deben de modificar usando modulacin de cdigo de pulso (PCM).

    PCM (Pulse Code Modulation) modifica los pulsos creados por PAM para crear una seal completamente digital. Para hacerlo, PCM, en primer lugar, cuantifica los pulsos de PAM. La cuantificacin es un mtodo de asignacin de los valores enteros a un rango especfico (Figura 13). Luego, cada uno de esos valores finitos ser codificado, es decir, a cada muestra cuantificada se le otorga un cdigo concreto, convirtiendo de esta forma la seal original en una serie de valores que se pueden manejar digitalmente.

    Figura 13.- Fase de Cuantificacin en la conversin AD.

    Finalmente, para enviar la seal a travs de un enlace digital de comunicaciones se asigna un cdigo binario a cada valor y se transforman estos dgitos binarios en una seal puramente digital usando una de las tcnicas de codificacin digital-digital. (Figura 14)

    Figura 14.- Fase de Codificacin en la conversin AD.

    Una vez que se tiene la conversin lista se puede regresar a una forma analgica, para la reconstruccin de la seal analgica se requiere poca informacin. Tomando como referencia el teorema de muestreo de Shannon, para asegurar la reproduccin exacta de una seal analgica original usando PAM, la tasa de muestreo debe ser al menos el doble de la frecuencia mxima de la seal original.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    14

    Con base en la teora, si se desea muestrear la informacin de una seal que tiene como frecuencia mxima 100 Hz, la tasa de muestreo debe ser de 200 muestras/s. A una velocidad de muestreo menor, la informacin se perdera; a una mayor, no es posible tener informacin extra.

    En la prctica, cuando se regenera una seal 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 seal 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 seales analgicas.

    El convertidor analgico-Digital est conectado a un multiplexor analgico 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 tambin soporta 16 combinaciones como entrada para voltaje diferencial. Dos de las entradas (ADC1, ADC0 y ADC3, ADC2) estn 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 conversin Analgica-Digital. Siete canales de entrada analgicos comparten una terminal comn (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 resolucin de 8 bits, mientras que para la ganancia de 200x se obtiene una resolucin de 7 bits.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 conversin. 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    16

    El ADC tiene un pin separado que se usa como fuente de voltaje (AVCC), el cual no difiere ms 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 desempeo con respecto al ruido.

    Inicio de la conversin

    Una conversin se inicia escribiendo uno lgico en el bit de inicio de la conversin ADSC. Este bit permanece en uno mientras a conversin se encentra en progreso y se cambia a cero por medio de hardware cuando la conversin ha terminado. Si u canal de datos es seleccionado mientras una conversin est e progreso, el ADC terminar de realizar la conversin actual antes de que el cambio de canal se realice.

    Alternativamente, una conversin puede ser activada automticamente por distintas fuentes. El autodisparo se habilita poniendo un uno lgico en el Auto Trigger Enable bit (ADATE) en el ADCSRA. La fuente de disparo es seleccionada por los bits de seleccin de disparo (ADTS) en el SFIOR. Cuando un flanco positivo ocurre en la seal seleccionada para el disparo, el prescalador del ADC se resetea y la conversin inicia. Esto proporciona un mtodo de conversin a intervalos fijos. Si la seal del disparador contina e uno cuando la conversin ha terminado, la nueva conversin no comenzar. Si otro flanco de subida ocurre e la seal de disparo durante la conversin, el flanco positivo ser ignorado. La figura 16 muestra un diagrama del autodisparador lgico:

    Figura 16.- Diagrama del autodisparador lgico.

    Prescalador y tiempo de conversin

    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 mxima resolucin. Si se usa una resolucin menor a los 10 bits, la frecuencia del reloj puede ser mas grande de 200 khZ para obtener una mayor razn de muestreo.

    El mdulo 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 operacin durante el tiempo en que el bit ADEN permanece en uno.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 conversin poniendo un uno e el bit ADSC en el ADCSRA, la conversin inicia en el siguiente flanco de subida del ciclo de reloj. Una conversin normal toma 13 ciclos de reloj del ADC. La primera conversin despus de que el ADC es activado toma 25 ciclos de reloj para inicializar la circuiteria analgica.

    La muestra actual toma 1.5 ciclos de reloj despus de que comienza una conversin normal y 13.5 ciclos del reloj ADC despus del inicio de la primera conversin. Cuando una conversin es completada, el resultado se escribe en el registro de datos del ADC, y ADIF es puesto a uno. En el modo de conversin sencilla, el ADSC es puesto en cero simultneamente y una nueva conversin 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 conversin. En este modo, el muestreo y la retencin toma 2 ciclos de reloj despus del flanco de subida de la fuente de disparo. Se utilizan tres ciclos de reloj adicionales para la lgica de sincronizacin. En el modo libre, una nueva conversin comenzar inmediatamente despus de que se complete la conversin, mientras que el ADSC permanece en alto. En la siguiente tabla (Figura 18) se resumen los tiempos de conversin para el ADC:

    Figura 18.- Resumen los tiempos de conversin para el ADC.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 sincronizacin se hace automticamente por la interfase del ADC. La conversin es iniciada por el usuario. Cuando CKADC2 est en cero tomar la misma cantidad de tiempo que la de una conversin simple (13 ciclos de reloj desde el siguiente ciclo del prescalador).

    En el modo libre, una nueva conversin inicia inmediatamente despus de que la conversin previa haya terminado, y como el CKADC2 permanece en alto en este momento, todo comienza automticamente.

    El estado de ganancia est optimizado para un ancho de banda de 4 kHz para todas las configuraciones de ganancia. Las frecuencias ms altas pueden estar sujetas a una amplificacin no lineal. Un filtro pasa-bajas externo puede ser usado para si la seal de entrada contiene componentes a altas frecuencias.

    Si los canales de ganancia diferencial estn 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 conversin inicie. Deshabilitando y luego habilitando el ADC entre cada conversin (escribiendo en 0 y luego en 1 el ADEN en el ADCSRA) provoca que las conversiones sean vlidas.

    Canales de entada del ADC

    En modo de conversin simple, siempre se debe seleccionar un canal antes de antes de iniciar la conversin. La seleccin del canal puede ser cambiada despus de escribir un uno en ADSC. Sin embargo, el mtodo mas simple es esperar a que la conversin termine antes de cambiar la seleccin del canal.

    En modo libre, siempre se selecciona el canal antes de empezar la primera conversin. Las conversiones subsecuentes, reflejaran la seleccin del nuevo canal seleccionado.

    Voltaje de Referencia del ADC

    El voltaje de referencia para el ADC (VREF) indica el rango de conversin para el ADC. Los canales que excedan al VREF resultaran en cdigos 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 travs de un switch pasivo. El voltaje de referencia interno es generado internamente a travs de un amplificador interno. En cualquier caso, el pin AREF es directamente conectado al ADC, y el voltaje de referencia se puede hacer ms 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    19

    Resultado de la Conversin del ADC

    Despus de que la conversin est completada (ADIF est en uno), el resultado de la conversin se encuentra en el registro de resultados del ADC (ADCL, ADCH).

    Para una conversin sencilla, el resultado es:

    REF

    IN

    VVADC 1024=

    El VIN es el voltaje del pin de entrada seleccionada y VREF el voltaje de referencia seleccionado. 0x000 representa la tierra analgica, 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 seleccin de la ganancia.

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

    Figura 20.- Canales de entrada y seleccin de la ganancia.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    20

    Si se utiliza el modo de canales diferenciales, el resultado de la conversin es:

    REF

    NEGPOS

    VGAINVV

    ADC 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 codificacin del rango de entradas diferenciales, mientras que en la tabla (Figura 22) se muestra el cdigo resultante de salida si el par de entradas diferenciales es seleccionado con una ganancia GAIN y u voltaje de referencia VREF.

    Figura 21.- Codificacin del rango de entradas diferenciales.

    Figura 22.- Cdigo resultante de salida para entradas diferenciales es seleccionado

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 seleccin. Si estos bits se cambian durante una conversin, el cambi no tendr efecto hasta que la conversin 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.- Seleccin del Voltaje de Referencia para el ADC

    Bit 5 ADLAR: ADC Left Adjust Result:

    El bit ADLAR afecta en la presentacin del resultado de la conversin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    22

    Bits 4:0 MUX4:0: Analog Channel and Gain Selection Bits:

    Estos bits seleccionan cual combinacin de las entradas analgicas son seleccionadas en el ADC. Estos bits tambin seleccionan la ganancia para los canales diferenciales. Si estos bits son cambiados durante una conversin, los cambios no tendrn efecto hasta que la conversin actual haya terminado. En la siguiente tabla (figura 25) se muestran los detalles de estos cuatro bits

    Figura 25.- Canales de entrada y seleccin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 conversin, dicha conversin se cancelar.

    Bits 6 ADSC: ADC Start Conversation:

    En el modo de conversin sencilla o simple se pone este bit en uno para iniciar cada conversin. En modo libre, se pone este bit en uno para iniciar la primera conversin. La primera conversin despus 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 conversin implementa la inicializacin del ADC. El ADSC se leer como u uno mientras la conversin est en progreso. Cuando la conversin 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 conversin en el siguiente flanco de subida de la seal 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 conversin del ADC se ha completado y el registro de datos es actualizado. La interrupcin de conversin completa se ejecuta si el bit ADIE y el I-bit en el SREG estn en uo. ADIF se pone en cero por hardware cuando se ejecuta el vector de interrupcin correspondiente. Alternativamente, ADIF se pone en cero escribiendo un uno lgico 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 interrupcin de conversin completa se activa.

    Bits 2:0 ADPS2:0: ADC Prescaler Select Bits:

    Estos bits determina el factor de divisin entre la frecuencia del XTAL y el reloj de entrada para el ADC.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    24

    El Comparador Analgico (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 analgico, ACO, es uno. La salida del comparador puede ser configurada para disparar el Timer/Counter1. Tambin, el comparador, puede disparar una interrupcin separada, exclusiva del comparador analgico. El usuario puede seleccionar el tipo de disparo para la interrupcin, ya sea por flanco de subida, de bajada o por nivel. El diagrama a bloques del comparador y la lgica a su alrededor se muestran en la figura 27.

    Figura 27.- Diagrama a bloques del comparador analgico

    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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    25

    Bit 3 ACME: Analog Comparator Multiplexer Enable:

    Cuando en este bit se escribe un uno lgico y el ADC est apagado (ADEN en ADCSRA est en cero), el multiplexor del ADC selecciona la entrada negativa para el comparador analgico. Cuando en este bit se escribe un cero lgico, la entrada AIN1 se aplica a la entrada negativa del comparador analgico. La siguiente tabla (figura 29) muestra con mayor detalle el funcionamiento del ACME en el comparador analgico.

    Figura 29.- Entrada multiplexada del comparador analgico

    Registro de Control de Estados del Comparador Analgico 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 lgico, el comparador analgico se apaga. Este bit se puede poner en uno en cualquier momento para apagar el comparador analgico. Esto reducir el consumo de potencia en los modos activos y pasivos. Cuando se cambia el bit ACD, la interrupcin del comparador analgico debe ser deshabilitada poniendo un cero en el bit ACIE en el registro ACSR. De otra forma podra ocurrir una interrupcin cuando el bit sea cambiado.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 analgico. Cuando este bit tiene el valor de cero, se aplica AIN0 a la entrada positiva del comparador analgico. En la siguiente tabla (figura 31) se muestran las opciones para los voltajes de referencia internos.

    Figura 31.- Caractersticas del voltaje de referencia interno

    Bit 5 ACO: Analog Comparator Output:

    La salida del comprador analgico es sincronizada y despus conectada directamente al ACO. La sincronizacin 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 interrupcin definido por ACIS1 y ACIS0. La rutina de interrupcin del comparador se ejecuta si el bit ACIE est en un uno lgico y el I-bit en el SREG tambin est en uno. ACI se borra por hardware cuando se ejecuta la correspondiente interrupcin. Alternativamente, ACI es borrado escribiendo u uno lgico en la bandera.

    Bit 3 ACIE: Analog Comparator Interrupt Enable:

    Cuando al bit ACIE se le escribe un uno lgico en el I-bit en el registro de estados tiene el valor de uno, la rutina de interrupcin del comparador analgico es deshabilitada.

    Bit 2 ACI: Analog Comparator Input Capture Enable:

    Cuando se escribe un uno lgico, este bit habilita el Timer/Counter1 para ser disparado por el comparador analgico. 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 lgico, no existe conexin entre el comparador analgico y la funcin de entrada de captura.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    27

    Bits 1, 0 ACIS1, ACIS0: Analog Comparator Interrupt Mode Select:

    Estos bits determinan que evento de disparo activar la interrupcin. Las distintas combinaciones se muestran en la siguiente tabla (figura 32).

    Figura 32.- Modos de seleccin de interrupcin

    Entrada Multiplexada del Comparador Analgico

    Es posible seleccionar cualquiera de los pines ADC7...0 para remplazar la entrada negativa del comparador analgico. El multiplexor del ADC se usa para seleccionar esta entrada, y consecuentemente, el ADC debe estar apagado para utilizar esta caracterstica. Si el bit habilitador del multiplexor del comparador analgico (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 analgico, (figura 33). Si ACME es cero o ADEN es uno, se aplica AIN1 la entrada negativa del comparador analgico.

    Figura 33.- Entrada multiplexada del comparador analgico

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    28

    La Interrupcin Externa(atmega8535):

    Las interrupciones externas son disparadas por los pines INT0, INT1 y INT2. Esta herramienta ofrece un camino para generar una interrupcin por software. Las interrupciones externas pueden ser disparadas por flanco de bajada, de subida o por un cambio lgico. 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 interrupcin por cambio de nivel lgico, el cambio de nivel debe ser mantenido por algn 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 interrupcin 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 interrupcin externa 1 es activada por el pin externo INT1 si el bit I del SREG es uno y la correspondiente mascara de interrupcin en el GICR es uno. El nivel y flancos sobre el pin externo INT1 que activa la interrupcin 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 lgico es seleccionado, los ltimos pulsos mas grandes que el pulsos de reloj generan una interrupcin. Los pulsos mas cortos no garantizan generar una interrupcin. Si el nivel bajo de interrupcin se selecciona, el nivel bajo debe ser mantenido hasta que la instruccin actual se complete.

    Figura 35.- Configuracin de la interrupcin 1

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    29

    Bit 1, 0 ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0:

    La interrupcin externa 0 es activada por el pin externo INT0 si el bit I del SREG es uno y la correspondiente mascara de interrupcin en el GICR es uno. El nivel y flancos sobre el pin externo INT0 que activa la interrupcin 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 lgico es seleccionado, los ltimos pulsos mas grandes que el pulsos de reloj generan una interrupcin. Los pulsos mas cortos no garantizan generar una interrupcin. Si el nivel bajo de interrupcin se selecciona, el nivel bajo debe ser mantenido hasta que la instruccin actual se complete.

    Figura 36.- Configuracin de la interrupcin 0

    Registro General de Control de Interrupcin (GICR)

    La siguiente figura (figura 37) muestra el Registro General de Control de Interrupcin con sus respectivos bits.

    Figura 37.- Registro General de Control de Interrupcin (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 tambin uno, el pin externo de interrupcin es habilitado. El control de cens de interrupcin 1 (ISC11 y ISC10) en el Registro de Control General MCU (MCUCR) define si la interrupcin externa 1 es activada por flanco de subida o bajada en el pin INT1. La actividad sobre este pin causar una solicitud de interrupcin

    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 tambin uno, el pin externo de interrupcin es habilitado. El control de cens de interrupcin 0 (ISC01 y ISC00) en el Registro de Control General MCU (MCUCR) define si la interrupcin externa 1 es activada por flanco de subida o bajada en el pin INT0. La actividad sobre este pin causar una solicitud de interrupcin

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 lgico o flanco sobre el pi INT1 dispara una solicitud de interrupcin 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 interrupcin. LA bandera es limpiada cuando la rutina de interrupcin es ejecutada. Alternativamente, la bandera puede ser limpiada escribiendo un uno lgico en ella. Esta bandera siempre es limpiada cuando el bit INT1 es configurado como un nivel de interrupcin.

    Bit 6 INTF0: External Interrupt Flag 0:

    Cuando un cambio lgico o flanco sobre el pin INT0 dispara una solicitud de interrupcin 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 interrupcin. La bandera es limpiada cuando la rutina de interrupcin es ejecutada. Alternativamente, la bandera puede ser limpiada escribiendo un uno lgico en ella. Esta bandera siempre es limpiada cuando el bit INT0 es configurado como un nivel de interrupcin.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    31

    Max 232:

    La comunicacin serial es un protocolo muy comn (no hay que confundirlo con el Bus Serial de Comunicacin, o USB) para comunicacin entre dispositivos que se incluye de manera estndar en prcticamente cualquier computadora. La mayora de las computadoras incluyen dos puertos seriales RS-232. La comunicacin serial es tambin un protocolo comn utilizado por varios dispositivos para instrumentacin; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Adems, la comunicacin serial puede ser utilizada para adquisicin de datos si se usa en conjunto con un dispositivo remoto de muestreo.

    El concepto de comunicacin serial es sencillo. El puerto serial enva y recibe bytes de informacin un bit a la vez. Aun y cuando esto es ms lento que la comunicacin en paralelo, que permite la transmisin de un byte completo por vez, este mtodo de comunicacin es ms sencillo y puede alcanzar mayores distancias. Por ejemplo, la especificacin IEEE 488 para la comunicacin en paralelo determina que el largo del cable para el equipo no puede ser mayor a 20 metros, con no ms de 2 metros entre cualesquier dos dispositivos; por el otro lado, utilizando comunicacin serial el largo del cable puede llegar a los 1200 metros.

    Tpicamente, la comunicacin serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicacin se utilizan 3 lneas de transmisin: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisin es asincrnica, es posible enviar datos por un lnea mientras se reciben datos por otra. Existen otras lneas disponibles para realizar handshaking, o intercambio de pulsos de sincronizacin, pero no son requeridas. Las caractersticas ms importantes de la comunicacin serial son la velocidad de transmisin, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las caractersticas 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 caractersticas que no son relevantes para usos actuales. Puede ser controlada por mdems muy viejos y tiene muchas seales de control para hacer esto por hardware, pero actualmente no se usan muchas de las seales de control que ofrece.

    La mejor caracterstica de la interfase RS232 es que o requiere de la transmisin de un reloj, la recepcin 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 transmisin asncrona. La interfase RS232 permite hasta un 5% de diferencia en los tiempos de transmisin y recepcin. 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 estndar RS232 sin problemas.

    La seal del estndar 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    32

    El nivel de la seal de salida usualmente oscila entre los +15 y -15 volts. El rea que est entre los -3 y los +3 volts est diseada para dar alguna inmunidad al ruido. La figura 39 muestra como es la transmisin usando el protocolo RS232.

    Figura 39.- Transmisin usando el protocolo RS232.

    Pines y seales 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 Seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    33

    Buffer Inversor y Limitador de Voltaje a 5 Volts pico:

    Para el correcto acoplamiento de la seal 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 continuacin se muestra el diseo del limitador de voltaje a Vref = 5 V (Figura 41), as como la simulacin en Electronic Workbench de su respuesta en el tiempo cuando la seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    34

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

    Tambin 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 tambin este limitada a 5 Volts pico). El inversor de voltaje es necesario para poder tomar las muestras de las seales con voltajes negativos, ya que tanto el comparador analgico como el convertidor analgico 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 continuacin su diagrama de conexin (Figura 44):

    Figura 44.- Diagrama de conexin del Amplificador Operacional TL082.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    35

    A continuacin se muestra el diseo del buffer inversor de voltaje (Figura 45), as como la simulacin en Electronic Workbench de su respuesta en el tiempo cuando la seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    37

    III. DESARROLLO EXPERIMENTAL

    Descripcin del programa en el microprocesador atmega8535:

    Maquina de Estados para la Interrupcin Externa (Figura 48):

    Figura 48.- Maquina de Estados para la Interrupcin Externa.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    39

    Maquina de Estados para el Convertidor Analgico Digital (Figura 50):

    Figura 50.- Maquina de Estados para el Convertidor Analgico Digital.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 seal analgica. Tambin sirve para que la 'USART' lea y envi una a una las muestras. En esta rutina tambin se limpia la bandera 't' que nos sirve para identificar si se estn enviando (t=1) o no (t=0) las muestras a la PC. Tambin 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 analgico digital), tambin se configura el 'pin PD1' como de salida (para el transmisor 'TXD' de la 'USART'), se configura el 'pin PD2' como entrada (para la interrupcin externa 'INT0'). Tambin se configura el 'puerto C' como de salida (para poder indicar al usuario que se esta enviando informacin).

    InicializaINT0:

    En esta rutina se configura la interrupcin 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 interrupcin por flanco de subida.

    InicializaUSART:

    En esta rutina se configura el 'TXD' de la 'USART'. Se habilita el 'TDX' y la interrupcin del 'TDX'. En esta rutina tambin se configura el formato de las tramas que enva la 'USART' por el 'TDX': 1 bit de paro y 8 bits de datos. Tambin se configura la velocidad de transmisin 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 resolucin de 8 bits. Tambin 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 Analgico '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 interrupcin 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 conversin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 conversin. Se configura el auto trigger, se habilita la interrupcin del 'ADC' y se selecciona el pre-escalador con un factor de divisin de 2. Tambin 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. Adems vaca el buffer y deshabilita el 'TDX' de la 'USART'. Tambin 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. Tambin se selecciona si la seal es positiva o negativa. Tambin se vuelve a habilitar el 'ADC', se inicia la primera conversin, se configura por auto trigger, se habilita la interrupcin del 'ADC', se selecciona el pre-escalador con un factor de divisin de 2.

    OnUSART:

    En esta rutina se habilita el 'TDX' de 'USART' y guarda la muestra directamente en el 'UDR'. Tambin se vuelve a habilitar el 'ADC', se inicia la primera conversin, se configura por auto trigger, se habilita la interrupcin del 'ADC', se selecciona el pre-escalador con un factor de divisin de 2.

    SelecCanal:

    En esta rutina se selecciona si la seal es positiva o negativa mediante el resultado del Comparador Analgico '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 seal de entrada es positiva.

    CanalNeg:

    En esta rutina se configura el 'ADC' para que seleccione el canal negativo, esto pasa cuando la seal 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 enva un dato hasta que este sea generado por el 'ADC'.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 ningn 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    43

    Descripcin de las funciones y configuraciones del Puerto Serial en MATLAB:

    Funciones asociadas con la Lectura de Datos:

    fgetl: Lee una lnea del texto desde el dispositivo y descarta el finalizador.

    fgets: Lee una lnea 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 asncrona desde el dispositivo.

    stopasync: Detiene la lectura asncrona 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 tamao del buffer de entrada en bytes.

    ReadAsyncMode: Especifica si la operacin de lectura asncrona es continua o manual.

    Timeout: Especifica el tiempo de espera para completar una operacin de lectura o de escritura.

    TransferStatus: Indica si una operacin de escritura o lectura asncrona esta en progreso.

    ValuesReceived: Indica el nmero total de valores ledos desde el dispositivo.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 revisin de paridad.

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

    Terminator: Especifica el carcter 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 mtodo 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    45

    Descripcin de la configuracin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    46

    Programa en el microprocesador atmega8535:

    /* PROYECTO FINAL (MICROPROCESADOR): OSCILOSCOPIO A BASE DE MICONTROLADOR Y PC

    UNIVERSIDAD AUTONOMA METROPOLITANA

    ASESOR DE PROYECTO: DR. MIGUEL ANGEL RUIZ SANCHEZ

    AUTORES: PABLO DAMIN HERNNDEZ DURN (203321902)

    ISRAEL HERNANDEZ MERCHAND (202317691)

    ESTE OSCILSCOPIO PERMITE AL USUARIO CONFIGURAR LA INTERFAZ GRAFICA Y DESPLEGAR LAS FORMAS DE ONDA E INFORMACION RELACIONADA CON ELLAS. LA SEAL 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 seal analgica. Tambin sirve para que la 'USART' lea y envi una a una las muestras. En esta rutina tambin se limpia la bandera 't' que nos sirve para identificar si se estn enviando (t=1) o no (t=0) las muestras a la PC. Tambin 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 analgico digital), tambin se configura el 'pin PD1' como de salida (para el transmisor 'TXD' de la 'USART'), se configura el 'pin PD2' como entrada (para la interrupcin externa 'INT0'). Tambin se configura el 'puerto C' como de salida (para poder indicar al usuario que se esta enviando informacin). */

    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 interrupcin 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 interrupcin por flanco de subida. */

    InicializaINT0: ldi aux,(1

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    48

    ldi r16,(1

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    49

    ldi aux,(1

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    50

    OnUSART: ldi aux,(1

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    51

    /* OffUSART: En esta rutina se deshabilita el 'TDX' de 'USART'. */

    OffUSART: ldi aux,(0

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 ningn 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    54

    Programa para el software de procesamiento de datos MATLAB:

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

    % ASESOR DE PROYECTO: % DR. MIGUEL ANGEL RUIZ SANCHEZ

    % AUTORES: % PABLO DAMIN HERNNDEZ DURN (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 visualizacin del osciloscopio

    BUFFER=512; % Se define el tamao 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 conversin 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 conversin por muestra fconv=1/tconv; % Se calcula la frecuencia de conversin del ADC

    BaudRate=9600; % Se define la velocidad de recepcin 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 parmetros 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 posicin, 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 seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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 funcin se obtienen 512 muestras desde el buffer de la PC

    % La funcin recibe como parmetros el tamao 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 funcin se decodifican las muestras con sus valores de voltaje % correspondientes a partir del vector CODIGO (muestras del buffer de la PC).

    % La funcin recibe como parmetros las 512 muestras, el tamao 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)=0) % Se decodifica una muestra positiva SENAL(i)=(VREF*CODIGO(i))/(GAIN*127); % Las muestras positivas estn entre 0 y 127 elseif(CODIGO(i)=128) % Se decodifica una muestra negativa SENAL(i)=(VREF*(CODIGO(i)-255))/(GAIN*127); % Las muestras negativas estn entre 128 y 255 end end

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    56

    % PROYECTO FINAL (MATLAB): TIEMPO % Con esta funcin se modifican las dimensiones del eje de TIEMPO del osciloscopio

    % El procedimiento recibe como parmetro la opcin de escala de tiempo tie = get(opct,'Value');

    if tie==1 % Si es la primera opcin (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 opcin (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 opcin (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 opcin (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 opcin (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 funcin se modifican las dimensiones del eje de VOLTAJE del osciloscopio

    % El procedimiento recibe como parmetro la opcin de escala de voltaje vol = get(opcv,'Value');

    GAIN=1; if vol==1 % Si es la primera opcin (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 opcin (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 opcin (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 opcin (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 opcin (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 opcin (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 funcin 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 visualizacin del osciloscopio

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    57

    Descripcin del diagrama esquemtico del Osciloscopio:

    A continuacin se muestra el diagrama esquemtico del Osciloscopio (Figura 54):

    Figura 54.- Diagrama esquemtico del Osciloscopio.

    ENTRADA:

    En este punto se inyecta la seal analgica 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    58

    Descripcin de la interfaz grafica del Osciloscopio:

    A continuacin se muestra la descripcin 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 botn se minimiza la interfaz grafica del Osciloscopio.

    CERRAR LA VENTANA:

    Con este botn 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    59

    EJE HORIZONTAL (TIEMPO):

    Aqu aparece el nombre del eje horizontal TIEMPO.

    ESCALA POR DIVISION (VOLTAJE):

    Con este botn se selecciona la escala por divisin del eje de VOLTAJE.

    ESCALA POR DIVISION (TIEMPO):

    Con este botn se selecciona la escala por divisin del eje de TIEMPO.

    SALIR DE LA INTERFAZ:

    Con este botn se cierra la interfaz grafica del Osciloscopio.

    ACTUALIZAR PANTALLA:

    Con este botn se actualizan los datos mostrados en la interfaz grafica del Osciloscopio.

    LIMPIAR PANTALLA:

    Con este botn se limpia la pantalla de la interfaz grafica del Osciloscopio.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    60

    Graficas para una seal de DC, una seal cuadrada y una seal senoidal:

    Graficas para una seal de DC a diferentes voltajes

    Figura 56.-Seal de DC a 5 Volts.

    Figura 57.-Seal de DC a -5 Volts.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    61

    Figura 58.-Seal de DC a 2.5 Volts.

    Figura 59.-Seal de DC a -2.5 Volts.

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    62

    Graficas para una seal cuadrada a diferentes frecuencias y niveles de offset:

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

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

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    63

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

    Figura 63.-Seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    64

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

    Figura 65.-Seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    65

    Graficas para una seal senoidal a diferentes frecuencias y niveles de offset:

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

    Figura 67.-Seal 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    66

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

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

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    67

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

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

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    68

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

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

  • REPORTE DEL PROYECTO FINAL OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    69

    IV. ANALISIS DE RESULTADOS

    Como se puede apreciar en los ejemplos para una seal senoidal y para una seal cuadrada, en la seal cuadrada no se tiene ningn tipo de problema en cuanto a graficar voltajes positivos y negativos de la seal; sin embargo, en lo que respecta a la seal senoidal si se tienen problemas cuando se intentan graficar sus voltajes negativos. Cuando se inyecta una seal senoidal con un offset que evite tener voltajes negativos de la misma, la nica limitante que se presenta es con respecto a la mxima frecuencia que puede tener la seal para que se pueda recuperar ntegramente (teorema de Nysquit, si nuestra fmuestreo es de aproximadamente 17 kHz entonces la fmaxima de la seal debe ser de a lo mas de aproximadamente 8 kHz); pero cuando se inyecta la seal senoidal sin offset no solo tenemos la limitante de la frecuencia mxima, sino que tambin surgen problemas para graficarla ocasionados por el Comparador Analgico del microcontrolador. El Comparador Analgico del microcontrolador funciona muy bien cuando los cambios de voltaje son bruscos (por ejemplo con la seal cuadrada), pero cuando los cambios de voltaje se dan de manera tenue (por ejemplo con la seal senoidal) entonces no es capaz de identificar correctamente el cambio y entonces no realiza adecuadamente la comparacin; lo anterior provoca que no se haga correctamente el cambio entre el canal positivo y el canal negativo del Convertidor Analgico Digital del microcontrolador, y entonces el muestreo no se lleva a cabo correctamente y la grafica de la seal es incorrecta.

    Otra cosa que se puede apreciar en los ejemplos para una seal senoidal y para una seal cuadrada, es que cuando la seal senoidal que inyectamos es de 5 kHz ya se presenta una clara distorsin 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 seales, lo cual esta por debajo de la frecuencia calculada a partir del teorema de Nysquit (fmaxima de la seal debe ser de a lo mas de 8.5 kHz).

    Cabe destacar que para seales de corriente directa el osciloscopio no presenta ningn 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

    Hernndez Durn Pablo Damin (203321902) Hernndez Merchand Israel (202317691)

    70

    V. CONCLUSIONES

    Como hemos comentado en el anlisis de resultados, en general el osciloscopio funciona de forma parcial con algunas restricciones importantes. En general solo funciona correctamente para seales positivas con a lo ms 5 volts pico pico de amplitud y a frecuencias tericamente no mayores a 8 kHz (aunque para un desempeo optimo se recomiendan frecuencias no mayores a 4 kHz). Para seales con valores negativos tambin funciona de manera adecuada siempre y cuando dichas seales presentan de forma bien definida sus valores negativos. Para seales de corriente directa el osciloscopio funciona apropiadamente.

    Una solucin a futuro para resolver el problema de la deteccin incorrecta entre voltajes positivos y negativos podra ser utilizar un Comparador Analgico externo al microcontrolador, que cuente con una mayor capacidad de respuesta a los cambios tenues de voltaje.

    Para poder alcanzar un mas alto desempeo de este osciloscopio se podra 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 lograramos que seales a mayores frecuencias pudieran ser graficadas. Tericamente en nuestro caso, con un reloj de 1 MHz obtuvimos una frecuencia de muestreo de aproximadamente 17 kHz y entonces podemos muestrear seales de aproximadamente hasta 8 kHz; de esta manera, con un reloj de 4 MHz se podra obtener una frecuencia de muestreo de aproximadamente 68 kHz y podramos muestrear seales con frecuencias de aproximadamente hasta 34 kHz.

    En conclusin, 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

    Hernndez Durn Pablo Damin (203321902) Hernndez 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