Diseño de Un Generador de Funciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

DISEO DE UN GENERADOR DE FUNCIONES

Universidad Autnoma De Tlaxcala Facultad De Ciencias Bsicas Ingeniera Y Tecnologa ISE

Hctor Snchez Maldonado, Ariel Mndez Martnez, Sergio Vela Aguilar

I.

OBJETIVO

desarrollar complejas aplicaciones en un tiempo mucho menor.

Desarrollar un programa en MikroC para comprobar el funcionamiento del DAC0830. Desarrollar un generador de funciones mediante un programa desarrollado en MikroC (Lenguaje C), donde sean visualizadas las ondas: Cuadrada, Senoidal Triangular las cuales podrn ser seleccionadas mediante botones. II. MATERIAL Software MikroC PRO for dsPIC Software MikroProg suite for dsPIC Fuente simtrica DAC0830 Protoboard Tarjeta EasyPIC V7 C.I. 741 Multmetro Osciloscopio

IV. MARCO TEORICO Un generador de funciones es un instrumento utilizado en la electrnica y sirve para generar o simular seales especficas con determinadas caractersticas. Por ejemplo, crear o simular una seal que puede ser cuadrada, sinusoidal, de una determinada frecuencia, y de una determinada amplitud. De esta forma, podemos aplicar esta seal generada a un circuito para ver su respuesta. Un conversor de seal digital a analgica DAC es un dispositivo para convertir seales digitales con datos binarios en seales de corriente, tiene la capacidad de convertir 8 0 16 bits segn sea el caso o la aplicacin.

III.

INTRODUCCION

En la actualidad con las nuevas tendencias, se busca que con la ayuda de la tecnologa se creen nuevas aplicaciones que impliquen tanto una gran eficiencia como un funcionamiento ms rpido y a la vez un tanto menos complejo. Tal es el caso de MikroC, una excelente herramienta para desarrollar aplicaciones para dsPIC, usando el popular lenguaje C, incluye muchsimas libreras que facilitan la terea del desarrollador pues con ellas se pueden
Tpicos de Procesamiento Digital Avanzado

Figura 1. DAC0830

V.

DESARROLLO

Para el desarrollo del generador de funciones, se realizara por separado un programa que ser capaz de emular el comportamiento de cada una de las seales.
Pgina 1

Para nuestra aplicacin utilizaremos el DAC0830 este convertidor digital analgico es de 8 bits, cuenta con dos salidas de corriente, su alimentacin es de 5 a 15v, tiene una resolucin por bit de 0.04mv, cuenta con un voltaje de referencia negativo que pude ser de -10 a 10v. Para poder observar el voltaje en sus dos salidas de corriente es necesario utilizar un comparador UA741 que convertir las salidas de corriente en una sola de voltaje. Diagrama de conexin del DAC0830 en simulacin
Figura 3. Diagrama de flujo para la onda cuadrada.

2. Desarrollo de la Onda Triangular La seal triangular se genera con un bucle FOR. En la figura 4 se muestra el diagrama de flujo. Para determinar la frecuencia de la seal, se tiene:

Figura 2. Diagrama de conexin del DAC0830

Ahora bien, partiremos a desarrollar cada una de las seales mencionadas anteriormente. 1. Desarrollo de la Onda Cuadrada La seal cuadrada es relativamente fcil. En la figura 3 se muestra el diagrama de flujo para esta seal. Previamente se declara una variable denominada alto (200) este valor en relacin con la resolucin del DAC determinan la amplitud de la seal. La variable bajo se declara en 0 para una seal apropiada. La frecuencia es similar a la de la triangular.

La seal tiene una pendiente positiva y una negativa. El periodo total T se divide entre 2 para poder generar el cdigo en el dsPIC. Tomando la mitad del periodo se divide entre el valor del contador (200 para la figura 1).

En resumen primero se hace un incremento para generar la pendiente positiva, el valor maximo de la seal esta dada por la relacion de la resolucion del DAC y el contador del programa. Despues de la pendiente positiva se genera la pendiente negativa, ahora el contador se decrementa.

Pero ahora el tiempo de espera en alto y bajo es la mitad del periodo T.


Tpicos de Procesamiento Digital Avanzado Pgina 2

Figura 4. Diagrama de flujo para la onda triangular. Figura 5. Diagrama de flujo para la onda senoidal.

3. Desarrollo de la Onda Senoidal La frmula general para una seal senoidal es: ( ) 4. Desarrollo del Programa General En la figura 6 se presenta el diagrama de flujo del programa general. Este permite seleccionar el tipo de seal que se desea (senoidal, triangular, cuadrada). Se declara lo necesario (variables, puertos) y constantemente se estn checando los pines del puerto F si alguno de ellos es presionado se activa una variable y se genera la seal de los diagramas anteriores.

En la figura 5 se muestra el diagrama de flujo para generar la seal senoidal, lo que se puede destacar es que se debe sumar un valor para arreglar el tema de offset por las limitaciones del ADC. Del diagrama se puede ver que se realiza un contador el cual permite realizar la operacin, el tema de la frecuencia no est bien claro por los tiempos y muestras que se realizan. Despus de la operacin seno con el ajuste de amplitud y offset, se debe ajustar con respecto a la resolucin del ADC para que la informacin pueda ser enviada al puerto.

Tpicos de Procesamiento Digital Avanzado

Pgina 3

Figura 9. Onda senoidal en el osciloscopio.

VI.

CONCLUCIONES

Figura 6. Diagrama de flujo del programa general..

Con la elaboracin de este programa que emula el comportamiento de un generador de funciones, se obtuvieron los siguientes resultados visualizados en un osciloscopio.

Hctor Snchez Maldonado. Se puede utilizar un dsPIC o DSP para generar cualquier tipo de seal mediante software, el convertidor digitalanalgico es una parte muy importante ya que de l depende que podamos visualizar las seales. En este caso se tuvo uno de 8 bits (0803), y aunque con el dsPIC se podan manejar hasta 12 bits por el puerto B no se pudieron aprovechar ya que solo se contaba con el DAC 0803 y un mejor DAC implica mayor costo. Para implementar un buen generador de funciones aparte del DAC se necesitan circuitos complementarios como los filtros para tener una seal apropiada. Por ejemplo la seal seno se tuvo que montar sobre una componente de DC para poder visualizarla bien, pero en la realidad este tipo de seal debe ir con valores positivos y negativos. Ariel Mndez Martnez. Para emular el comportamiento de un generador de funciones, el lenguaje de alto nivel C es de gran ayuda, ya que cuenta con la implementacin de algunas funciones, tal y como es el caso de la funcin seno, adems de que el desarrollo del programa no resulta ser complejo.

Figura 7. Onda cuadrada en el osciloscopio.

Figura 8. Onda triangular en el osciloscopio.

Cabe mencionar que adems de desarrollar la parte de software para el generador de funciones, tambin es de vital importancia el hardware, que en este caso fue la
Pgina 4

Tpicos de Procesamiento Digital Avanzado

implementacin de un convertidor digitalanalgico DAC0830 de 8 bits en los cuales es visualizada la seal requerida. El DAC a su vez necesita de un opamp de propsito general 741 para que pueda realizar la conversin de corriente a voltaje, ya que la salida que maneja el DAC es en corriente. Sergio Vela Aguilar. La utilizacin de del DAC0830 en este examen fue conocer el funcionamiento de un convertidor digital analgico de 8 bits y hacer un generador de seales analgico digital, dicho generador contaba con tres formas de onda cuadrada, triangular Y sinodal. En la forma de onda sinodal se tuvo algunos problemas en su frecuencia ya que no coincida con las otras formas de onda ya mencionadas, el convertidor fue muy til para realizar el generador ya que con la ayuda del micro c de pudieron formar las tres ondas a 10Hz. El convertidor es sensible al conectarlo ya q si sufre alguna perturbacin deja de funcionar por un momento. VII. ANEXOS

unsigned char contador, contador1; unsigned int senoidal=0, triangular=0, cuadrada=1; void main() { int bajo=0, alto=200, seno=0; float sen; TRISD = 0x000F; // initialize portb as input TRISB=0; LATB=0; ADPCFG = 0xFFFF; // Configure AN pins as digital I/O while(1){ ///Seleccion de la Forma de Onda por el Puerto D if (Button(&PORTD, 0, 10, 1)) // detect logical one state {senoidal = 1; triangular=0; cuadrada=0;} else if (Button(&PORTD, 1, 10, 1)) // detect logical one state Tpicos de Procesamiento Digital Avanzado

{triangular = 1; senoidal=0; cuadrada=0;} else if (Button(&PORTD, 2, 10, 1)) // detect logical one state {cuadrada=1; senoidal=0; triangular=0;} //Seal Triangular else if(triangular==1) {for(contador=0; contador<=200; contador++) {LATB=contador; Delay_us(400); } alto=200; for(contador=0; contador<200; contador++) { alto= alto-1; LATB=alto; Delay_us(400); } } //Seal Senoidal else if(senoidal==1) {for(contador=0; contador<=100; contador++) { sen = 4.5*sin(2*3.1416*contador/100)+5; seno=(sen/0.040); latb=seno;}} //Seal Cuadrada if(cuadrada==1) {LATB=bajo; Delay_ms(50); LATB=alto; Delay_ms(50);} }}

Pgina 5

Tpicos de Procesamiento Digital Avanzado

Pgina 6

También podría gustarte