Sie sind auf Seite 1von 6
DISEÑO DE UN GENERADOR DE FUNCIONES Universidad Autónoma De Tlaxcala Facultad De Ciencias Básicas Ingeniería
DISEÑO DE UN GENERADOR DE FUNCIONES
Universidad Autónoma De Tlaxcala
Facultad De Ciencias Básicas Ingeniería Y Tecnología ISE
Héctor Sánchez Maldonado, Ariel Méndez Martínez, 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

podrán

ser

mediante botones.

II.

MATERIAL

seleccionadas

Software MikroC PRO for dsPIC

Software MikroProg suite for dsPIC

Fuente simétrica

DAC0830

Protoboard

Tarjeta EasyPIC V7

C.I. 741

Multímetro

Osciloscopio

III.

INTRODUCCION

En la actualidad con las nuevas tendencias, se busca que con la ayuda de la tecnología se creen nuevas aplicaciones que impliquen tanto una gran eficiencia como un funcionamiento más rápido 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 muchísimas librerías que facilitan la terea del desarrollador pues con ellas se pueden

IV. MARCO TEORICO

Un generador de funciones es un instrumento utilizado en la electrónica y sirve para generar o simular señales específicas con determinadas

características. Por ejemplo, crear o simular una señal que puede ser cuadrada, sinusoidal, de una determinada frecuencia, y de una determinada amplitud. De esta forma, podemos aplicar esta señal generada a un circuito para ver su respuesta.

Un conversor de señal digital a analógica DAC es un dispositivo para convertir señales digitales con datos binarios en señales de corriente, tiene la capacidad de convertir 8 0 16 bits según sea el caso o la aplicación.

convertir 8 0 16 bits según sea el caso o la aplicación. Figura 1. DAC0830 V.

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 señales.

capaz de emular el comportamiento de cada una de las señales. Tópicos de Procesamiento Digital Avanzado
capaz de emular el comportamiento de cada una de las señales. Tópicos de Procesamiento Digital Avanzado

Para nuestra aplicación utilizaremos el DAC0830 este convertidor digital analógico es de 8 bits, cuenta con dos salidas de corriente, su alimentación es de 5 a 15v, tiene una resolución 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 conexión del DAC0830 en simulación

de voltaje. Diagrama de conexión del DAC0830 en simulación Figura 2. Diagrama de conexión del DAC0830

Figura 2. Diagrama de conexión del DAC0830

Ahora bien, partiremos a desarrollar cada una de las señales mencionadas anteriormente.

1. Desarrollo de la Onda Cuadrada

La señal cuadrada es relativamente fácil. En la figura 3 se muestra el diagrama de flujo para esta señal. Previamente se declara una variable denominada alto (200) este valor en relación con la resolución del DAC determinan la amplitud de la señal. La variable bajo se declara en 0 para una señal apropiada. La frecuencia es similar a la de la triangular.

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

tiempo de espera en alto y bajo es la mitad del periodo T. Figura 3. Diagrama

Figura 3. Diagrama de flujo para la onda cuadrada.

2. Desarrollo de la Onda Triangular

La señal triangular se genera con un bucle FOR. En la figura 4 se muestra el diagrama de flujo. Para determinar la frecuencia de la señal, se tiene:

La señal tiene una pendiente positiva y una negativa. El periodo total T se divide entre 2 para poder generar el código 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 señal 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.

se genera la pendiente negativa, ahora el contador se decrementa. Tópicos de Procesamiento Digital Avanzado Página
se genera la pendiente negativa, ahora el contador se decrementa. Tópicos de Procesamiento Digital Avanzado Página
Figura 4. Diagrama de flujo para la onda triangular. 3. Desarrollo de la Onda Senoidal

Figura 4. Diagrama de flujo para la onda triangular.

3. Desarrollo de la Onda Senoidal

La fórmula general para una señal senoidal es:

(

)

En la figura 5 se muestra el diagrama de flujo para generar la señal 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 operación, el tema de la frecuencia no está bien claro por los tiempos y muestras que se realizan. Después de la operación seno con el ajuste de amplitud y offset, se debe ajustar con respecto a la resolución del ADC para que la información pueda ser enviada al puerto.

ADC para que la información pueda ser enviada al puerto. Figura 5. Diagrama de flujo para

Figura 5. Diagrama de flujo para la onda senoidal.

4. Desarrollo del Programa General

En la figura 6 se presenta el diagrama de flujo del programa general. Este permite seleccionar el tipo de señal que se desea (senoidal, triangular, cuadrada). Se declara lo necesario (variables, puertos) y constantemente se están checando los pines del puerto F si alguno de ellos es presionado se activa una variable y se genera la señal de los diagramas anteriores.

una variable y se genera la señal de los diagramas anteriores. Tópicos de Procesamiento Digital Avanzado
una variable y se genera la señal de los diagramas anteriores. Tópicos de Procesamiento Digital Avanzado
Figura 6. Diagrama de flujo del programa general Con la elaboración de este programa que

Figura 6. Diagrama de flujo del programa general

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

los siguientes resultados visualizados en un osciloscopio. Figura 7. Onda cuadrada en el osciloscopio. Figura 8.

Figura 7. Onda cuadrada en el osciloscopio.

un osciloscopio. Figura 7. Onda cuadrada en el osciloscopio. Figura 8. Onda triangular en el osciloscopio.

Figura 8. Onda triangular en el osciloscopio.

osciloscopio. Figura 8. Onda triangular en el osciloscopio. Figura 9. Onda senoidal en el osciloscopio. VI.

Figura 9. Onda senoidal en el osciloscopio.

VI.

CONCLUCIONES

Héctor Sánchez Maldonado. Se puede utilizar un dsPIC o DSP para generar cualquier tipo de señal mediante software, el convertidor digital- analógico es una parte muy importante ya que de él depende que podamos visualizar las señales. En este caso se tuvo uno de 8 bits (0803), y aunque con el dsPIC se podían 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 señal apropiada. Por ejemplo la señal seno se tuvo que montar sobre una componente de DC para poder visualizarla bien, pero en la realidad este tipo de señal debe ir con valores positivos y negativos.

Ariel Méndez Martínez. Para emular el comportamiento de un generador de funciones, el lenguaje de alto nivel C es de gran ayuda, ya que cuenta con la implementación de algunas funciones, tal y como es el caso de la función seno, además de que el desarrollo del programa no resulta ser complejo.

Cabe mencionar que además de desarrollar la

parte

de

funciones, también es de vital importancia el

hardware, que en

la

de

software

para

este

el

generador

caso

fue

el hardware, que en la de software para este el generador caso fue Tópicos de Procesamiento
el hardware, que en la de software para este el generador caso fue Tópicos de Procesamiento

implementación de un convertidor digital- analógico DAC0830 de 8 bits en los cuales es visualizada la señal requerida. El DAC a su vez necesita de un opamp de propósito general 741 para que pueda realizar la conversión de corriente a voltaje, ya que la salida que maneja el DAC es en corriente.

Sergio Vela Aguilar. La utilización de del DAC0830 en este examen fue conocer el funcionamiento de un convertidor digital analógico de 8 bits y hacer un generador de señales analógico 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 coincidía 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 perturbación 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

{triangular = 1;

senoidal=0;

cuadrada=0;}

else if (Button(&PORTD, 2, 10, 1)) // detect logical one state

{cuadrada=1;

senoidal=0;

triangular=0;}

//Señal 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); } } //Señal 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;}}

//Señal Cuadrada

if(cuadrada==1)

{LATB=bajo;

Delay_ms(50);

LATB=alto;

Delay_ms(50);}

}}

{LATB=bajo; Delay_ms(50); LATB=alto; Delay_ms(50);} }} Tópicos de Procesamiento Digital Avanzado Página 5
{LATB=bajo; Delay_ms(50); LATB=alto; Delay_ms(50);} }} Tópicos de Procesamiento Digital Avanzado Página 5
Tópicos de Procesamiento Digital Avanzado Página 6
Tópicos de Procesamiento Digital Avanzado Página 6