Вы находитесь на странице: 1из 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. IV. MARCO TEORICO
Un generador de funciones es un instrumento
Desarrollar un generador de funciones
utilizado en la electrnica y sirve para generar o
mediante un programa desarrollado en
simular seales especficas con determinadas
MikroC (Lenguaje C), donde sean
caractersticas. Por ejemplo, crear o simular una
visualizadas las ondas:
seal que puede ser cuadrada, sinusoidal, de una
Cuadrada,
determinada frecuencia, y de una determinada
Senoidal
amplitud. De esta forma, podemos aplicar esta
Triangular
seal generada a un circuito para ver su
las cuales podrn ser seleccionadas
respuesta.
mediante botones.
Un conversor de seal digital a analgica DAC
es un dispositivo para convertir seales digitales
II. MATERIAL
Software MikroC PRO for dsPIC con datos binarios en seales de corriente, tiene
Software MikroProg suite for dsPIC la capacidad de convertir 8 0 16 bits segn sea
Fuente simtrica el caso o la aplicacin.
DAC0830
Protoboard
Tarjeta EasyPIC V7
C.I. 741
Multmetro
Osciloscopio

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 Figura 1. DAC0830
rpido y a la vez un tanto menos complejo.

Tal es el caso de MikroC, una excelente V. DESARROLLO


herramienta para desarrollar aplicaciones para
dsPIC, usando el popular lenguaje C, incluye Para el desarrollo del generador de funciones, se
muchsimas libreras que facilitan la terea del realizara por separado un programa que ser
desarrollador pues con ellas se pueden capaz de emular el comportamiento de cada una
de las seales.

Tpicos de Procesamiento Digital Avanzado 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.
Figura 3. Diagrama de flujo para la onda cuadrada.
Diagrama de conexin del DAC0830 en
simulacin
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:

La seal tiene una pendiente positiva y una


Figura 2. Diagrama de conexin del DAC0830 negativa. El periodo total T se divide entre 2
para poder generar el cdigo en el dsPIC.
Ahora bien, partiremos a desarrollar cada una de Tomando la mitad del periodo se divide entre el
las seales mencionadas anteriormente. valor del contador (200 para la figura 1).

1. Desarrollo de la Onda Cuadrada

La seal cuadrada es relativamente fcil. En la


En resumen primero se hace un incremento para
figura 3 se muestra el diagrama de flujo para
generar la pendiente positiva, el valor maximo
esta seal. Previamente se declara una variable
de la seal esta dada por la relacion de la
denominada alto (200) este valor en relacin con
resolucion del DAC y el contador del programa.
la resolucin del DAC determinan la amplitud
Despues de la pendiente positiva se genera la
de la seal. La variable bajo se declara en 0
pendiente negativa, ahora el contador se
para una seal apropiada. La frecuencia es
decrementa.
similar a la de la triangular.

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
4. Desarrollo del Programa General
La frmula general para una seal senoidal es:

( ) En la figura 6 se presenta el diagrama de flujo


del programa general. Este permite seleccionar
En la figura 5 se muestra el diagrama de flujo el tipo de seal que se desea (senoidal,
para generar la seal senoidal, lo que se puede triangular, cuadrada). Se declara lo necesario
destacar es que se debe sumar un valor para (variables, puertos) y constantemente se estn
arreglar el tema de offset por las limitaciones checando los pines del puerto F si alguno de
del ADC. Del diagrama se puede ver que se ellos es presionado se activa una variable y se
realiza un contador el cual permite realizar la genera la seal de los diagramas anteriores.
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

Hctor Snchez Maldonado. Se puede utilizar


un dsPIC o DSP para generar cualquier tipo de
seal mediante software, el convertidor digital-
Figura 6. Diagrama de flujo del programa general.. analgico es una parte muy importante ya que
de l depende que podamos visualizar las
seales. En este caso se tuvo uno de 8 bits
Con la elaboracin de este programa que emula (0803), y aunque con el dsPIC se podan
el comportamiento de un generador de
manejar hasta 12 bits por el puerto B no se
funciones, se obtuvieron los siguientes
resultados visualizados en un osciloscopio. 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.
Figura 7. Onda cuadrada en el osciloscopio.
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 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

Tpicos de Procesamiento Digital Avanzado Pgina 4


implementacin de un convertidor digital- {triangular = 1;
analgico DAC0830 de 8 bits en los cuales es senoidal=0;
visualizada la seal requerida. El DAC a su vez cuadrada=0;}
necesita de un opamp de propsito general 741 else if (Button(&PORTD, 2, 10, 1)) // detect logical
para que pueda realizar la conversin de one state
corriente a voltaje, ya que la salida que maneja {cuadrada=1;
el DAC es en corriente. senoidal=0;
triangular=0;}
Sergio Vela Aguilar. La utilizacin de del //Seal Triangular
DAC0830 en este examen fue conocer el else if(triangular==1)
funcionamiento de un convertidor digital {for(contador=0; contador<=200; contador++)
analgico de 8 bits y hacer un generador de {LATB=contador;
seales analgico digital, dicho generador Delay_us(400); }
contaba con tres formas de onda cuadrada, alto=200;
triangular Y sinodal. En la forma de onda for(contador=0; contador<200; contador++) {
sinodal se tuvo algunos problemas en su alto= alto-1;
frecuencia ya que no coincida con las otras LATB=alto;
formas de onda ya mencionadas, el convertidor Delay_us(400); } }
fue muy til para realizar el generador ya que //Seal Senoidal
con la ayuda del micro c de pudieron formar las else if(senoidal==1)
tres ondas a 10Hz. El convertidor es sensible al {for(contador=0; contador<=100; contador++) {
conectarlo ya q si sufre alguna perturbacin deja sen = 4.5*sin(2*3.1416*contador/100)+5;
de funcionar por un momento. seno=(sen/0.040);
latb=seno;}}
//Seal Cuadrada
VII. ANEXOS if(cuadrada==1)
unsigned char contador, contador1; {LATB=bajo;
unsigned int senoidal=0, triangular=0, cuadrada=1; Delay_ms(50);
void main() { LATB=alto;
int bajo=0, alto=200, seno=0; Delay_ms(50);}
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 Pgina 5


Tpicos de Procesamiento Digital Avanzado Pgina 6