Está en la página 1de 71

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)

I. CONTENIDO.

I. CONTENIDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

II. INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Diagrama a bloques del Osciloscopio completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Descripcin del microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distribucin de pines del atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
5
6

Funciones de cada bloque del Osciloscopio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


USART (atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADC Convertidor Analgico Digital (atmega8535) . . . . . . . . . . . . . . . . . . . .
AC Comparador Analgico(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EI Interrupcin Externa(atmega8535) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Max 232 . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pines y seales del Puerto Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Buffer Inversor y Limitador de Voltaje a 5 Volts pico . . . . . . . . . . . . . . . . . . . . . .

8
8
12
24
28
31
32
33

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


Descripcin del programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . .
Maquina de Estados para la Interrupcin Externa . . . . . . . . . . . . . . . . . . . . .
Maquina de Estados para el transmisor de la USART . . . . . . . . . . . . . . . . . . .
Maquina de Estados para el Convertidor Analgico Digital . . . . . . . . . . . . .
Rutinas del microprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin de las funciones y configuraciones del Puerto Serial en MATLAB . . . .
Funciones asociadas con la Lectura de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propiedades asociadas con la Lectura de Datos . . . . . . . . . . . . . . . . . . . . . . . . .
Propiedades de un objeto de tipo Puerto Serial . . . . . . . . . . . . . . . . . . . . . . . . . .
Formato de la trama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propiedades de los pines de control del Puerto Serial . . . . . . . . . . . . . . . . . . . .

37
37
37
38
39
40
43
43
43
44
44
44

Descripcin de la configuracin del Puerto Serial en Windows . . . . . . . . . . . . . . . . .


Programa en el microprocesador atmega8535 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programa para el software de procesamiento de datos MATLAB . . . . . . . . . . . . . . .
Descripcin del diagrama esquemtico del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . .
Descripcin de la interfaz grafica del Osciloscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graficas para una seal de DC, una seal cuadrada y una seal senoidal . . . . . . . . .
Graficas para una seal de DC a diferentes voltajes . . . . . . . . . . . . . . . . . . . . . .
Graficas para una seal cuadrada a diferentes frecuencias . . . . . . . . . . . . . . . .
Graficas para una seal senoidal a diferentes frecuencias . . . . . . . . . . . . . . . . .

45
46
54
57
58
60
60
62
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)

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)

 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)

 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)

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)

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)

 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)

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)

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.

10

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

11

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

12

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

13

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

14

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

15

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

16

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

17

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

18

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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:

ADC =

VIN 1024
VREF

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.

19

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

ADC =

(VPOS V NEG ) GAIN 512


VREF

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

20

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

21

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

22

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

23

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

24

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

25

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

26

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

27

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

28

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

29

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

30

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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).

31

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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
2
3
4
5
6
7
8
9

Detecta Acarreo
Receptor de Datos
Transmisor de Datos
Terminal de Dato
Seal de Tierra
Dato Listo
Pedir para Enviar
Limpiar para Enviar
Timbre Indicador

Control
Datos
Datos
Control
Tierra
Control
Control
Control
Control

CD
RD
TD
DTR
GND
DSR
RTS
CTS
RI

32

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

33

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.


34

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

35

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

36

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

37

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

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

38

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

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


39

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

40

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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'.
41

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

42

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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.

43

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

44

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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.

45

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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

46

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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<<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 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.
*/
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
47

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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 resolucin de 8 bits. Tambin 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 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.
*/
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 conversin 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 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.
*/
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

48

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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. 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.
*/
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. 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.
*/
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'. 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.
*/

49

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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 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.
*/
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 seal 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 seal 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 enva un dato hasta que este sea generado por el 'ADC'.
*/
TomaMuestra:
rcall Getchar
cpi bandera_get,$00
brne OffUSART
out UDR,dato_get
reti

50

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

/*
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

51

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

/*
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

52

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

/*
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

53

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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;
VREF=5;
GAIN=1;
CICLOS=14;
fADC=250*(10^3);

% Se define el tamao del buffer de entrada de datos de la PC


% Se define el voltaje de referencia como de 5 volts
% Se asigna una ganancia unitaria
% Se define el numero de ciclos que tarda el microcontrolador en realizar una conversin
% Se define la frecuencia del ADC para un reloj de 1MHz en el microcontrolador

tADC=1/fADC;
tconv=tADC*CICLOS;
fconv=1/tconv;

% Se calcula el periodo del reloj del convertidor ADC


% Se calcula el tiempo de conversin por muestra
% 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)
M=length(SENAL);
t=(0:M-1)*(tconv);

% Se almacenan en SENAL las muestras ya decodificadas

% Se calcula el numero de muestras de SENAL


% 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);
grid;
xlabel('TIEMPO');
ylabel('VOLTAJE');
axis([0 (28*(10^(-3))) -6*GAIN 6*GAIN]);

% Se grafica la seal
% Se cuadricula la pantalla del osciloscopio
% Se etiqueta el eje X como 'TIEMPO'
% Se etiqueta el eje Y como 'VOLTAJE'
% Se limitan los ejes del osciloscopio

54

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

% 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);
CODIGO=fread(s,BUFFER,'uint8');
fclose(s);

% Se abre el puerto serial


% Se extraen las 512 muestras del buffer de entrada de la PC
% 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
if (CODIGO(i)<=127 & CODIGO(i)>=0)
SENAL(i)=(VREF*CODIGO(i))/(GAIN*127);
elseif(CODIGO(i)<=255 & CODIGO(i)>=128)
SENAL(i)=(VREF*(CODIGO(i)-255))/(GAIN*127);
end
end

% Se decodifican las 512 muestras


% Se decodifica una muestra positiva
% Las muestras positivas estn entre 0 y 127
% Se decodifica una muestra negativa
% Las muestras negativas estn entre 128 y 255

55

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

% 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
xlim([0 (28*(10^(-3)))]);
elseif tie==2
xlim([0 (20*(10^(-3)))]);
elseif tie==3
xlim([0 (8*(10^(-3)))]);
elseif tie==4
xlim([0 (32*(10^(-4)))]);
elseif tie==5
xlim([0 (20*(10^(-4)))]);
end

% Si es la primera opcin (5ms/DIV) entonces se muestran las muestras


% correspondientes entre el 0 a 28 milisegundos (todas las muestras)
% Si es la segunda opcin (2ms/DIV) entonces se muestran las muestras
% correspondientes entre el 0 a 20 milisegundos
% Si es la tercera opcin (1ms/DIV) entonces se muestran las muestras
% correspondientes entre el 0 a 8 milisegundos
% Si es la cuarta opcin (0.5ms/DIV) entonces se muestran las muestras
% correspondientes entre el 0 a 3.2 milisegundos
% Si es la quinta opcin (0.2ms/DIV) entonces se muestran las muestras
% correspondientes entre el 0 a 2 milisegundos

% 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
ylim([-6.0*GAIN 6.0*GAIN]);
elseif vol==2
ylim([-3.0*GAIN 3.0*GAIN]);
elseif vol==3
ylim([-2.0*GAIN 2.0*GAIN]);
elseif vol==4
ylim([-1.0*GAIN 1.0*GAIN]);
elseif vol==5
ylim([-0.5*GAIN 0.5*GAIN]);
elseif vol==6
ylim([-0.25*GAIN 0.25*GAIN]);
end

% Si es la primera opcin (2V/DIV) entonces se muestran la


% escala correspondiente entre -6 a 6 volts
% Si es la segunda opcin (1V/DIV) entonces se muestran la
% escala correspondiente entre -3 a 3 volts
% Si es la tercera opcin (0.5V/DIV) entonces se muestran la
% escala correspondiente entre -2 a 2 volts
% Si es la cuarta opcin (0.2V/DIV) entonces se muestran la
% escala correspondiente entre -1 a 1 volts
% Si es la quinta opcin (0.1V/DIV) entonces se muestran la
% escala correspondiente entre -0.5 a 0.5 volts
% Si es la sexta opcin (0.05V/DIV) entonces se muestran la
% escala correspondiente entre -0.25 a 0.25 volts

% PROYECTO FINAL (MATLAB): SALIR


% Con esta funcin salimos del osciloscopio
clear all
clc
close

% Se limpian las funciones y variables utilizadas anteriormente


% Se limpia la pantalla de trabajo de Matlab
% Se cierra la ultima visualizacin del osciloscopio

56

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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).

57

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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.

58

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

59

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

 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.


60

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

Figura 58.-Seal de DC a 2.5 Volts.

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

61

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

62

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

63

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

64

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

66

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

67

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

68

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

69

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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.

70

REPORTE DEL PROYECTO FINAL


OSCILOSCOPIO A BASE DE MICROCONTROLADOR Y PC
Hernndez Durn Pablo Damin (203321902)
Hernndez Merchand Israel (202317691)

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

71

También podría gustarte