Universidad Mayor De San Andrés
Facultad De Ingeniería
Ingeniería Eléctrica
GENERACIÓN DE SEÑAL CON CIRCUITO
INTEGRADO XR 2206 Y SU REPRESENTACIÓN POR
MEDIO DE ARDUINO Y MATLAB
Nombres: Quinteros Cabrera Alejandro
Carrera: Ing. Eléctrica
Materia: Electrónica de Potencia II Laboratorio
Fecha: 12/12/2019
GENERACIÓN DE SEÑAL CON CIRCUITO INTEGRADO XR 2206 Y SU
REPRESENTACIÓN POR MEDIO DE ARDUINO Y MATLAB
1. CIRCUITO INTEGRADO XR 2206
XR2206 es un circuito integrado diseñado por Exar Corporation, que puede ser
empleado como generador de señales de ondas senoidales, cuadradas, pulsos,
triangular y diente de sierra, la frecuencia y amplitud de onda se pueden variar si se
controla el voltaje. También se lo puede emplear como conversor de voltaje a
frecuencia, haciéndolo apto para su uso como transmisor de radiofrecuencia ya
sea FM o AM. Tiene un ancho de banda de 1 MHz.
El circuito empleado para generar funciones de onda cuadrada, senoidal y triangular
es la el siguiente:
1
El voltaje suministrado por medio de la fuente a el circuito integrado V CC es de 12 V,
con la conexión mostrada, entre el pin 11 y la tierra se obtiene la señal de onda
cuadrada que posteriormente será captada por la placa Arduino.
De igual manera se genera una señal triangular en el pin 2. Cambiando la posición
del conmutador S1 la señal de esta salida pasa a ser senoidal. La frecuencia de las
señales depende de la siguiente relación:
1
𝑓=
𝑅𝐶
Donde R es el valor de la resistencia en el pin 8 y C es el valor de capacitancia entre
los pines 5 y 6.
2. CÓDIGO EN ARDUINO
Arduino es una plataforma de creación de electrónica de código abierto, la cual
está basada en hardware y software libre, flexible y fácil de utilizar para los
creadores y desarrolladores. Esta plataforma permite crear diferentes tipos de
microordenadores de una sola placa a los que la comunidad de creadores puede
darles diferentes tipos de uso.
Para este proyecto se utilizó la placa Arduino para recibir la señal proveniente del
circuito con XR2206 en sus terminales A0 y A1 con el siguiente código:
int valorADC=0;
int valorADC2=0;
void setup()
Serial.begin(9600); Inicialización y configuración del protocolo serial
(Velocidad= 9600 baudios)
2
void loop()
valorADC = analogRead(A0); Se toma el dato del canal analogo A0 y se
guarda en la variable valorADC
valorADC2= analogRead(A1); Se toma el dato del canal analogo A1 y se
guarda en la variable valorADC2
Serial.println(valorADC); Se envía el dato por protocolo serial del valor
guardado en valorADC
Serial.println(valorADC2); Se envía el dato por protocolo serial del valor
guardado en valorADC2
delay(50); Retardo
}
3. CÓDIGO EN MATLAB
MATLAB (abreviatura de MATrix LABoratory, «laboratorio de matrices») es un
sistema de cómputo numérico que ofrece un entorno de desarrollo integrado (IDE)
con un lenguaje de programación propio (lenguaje M). Está disponible para las
plataformas Unix, Windows, Mac OS X y GNU/Linux.
Entre sus prestaciones básicas se hallan la manipulación de matrices, la
representación de datos y funciones, la implementación de algoritmos, la creación
de interfaces de usuario (GUI) y la comunicación con programas en
otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de
dos herramientas adicionales que expanden sus prestaciones, a
saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de
interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de
MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con
los paquetes de bloques (blocksets).
Es un software muy usado en universidades y centros de investigación y desarrollo.
3
En los últimos años ha aumentado el número de prestaciones, como la de
programar directamente procesadores digitales de señal o crear código VHDL.
Para este proyecto se usó el siguiente código:
function voltaje=ADC_Serial(muestras) la funcion recibe el # de muestras que
debe tomar
close all;
clc;
voltaje=0; Declara variable en la cual se van a guardar los valores, borra datos
que se encuentren previos y vuelve a declarar el puerto y la velocidad de
transmisión
delete(instrfind({'port'},{'COM3'}));
puerto=serial('COM3');
puerto.BaudRate=9600;
fopen(puerto); abre el puerto a utilizar
contador=1;
configura la ventana donde se va a mostrar la grafica:
figure('Name','Grafica voltaje')
title('GRAFICA VOLTAJE ADC-SERIAL');
xlabel('Numero de Muestras');
ylabel('Voltaje (V)');
grid off;
hold on;
4
Ciclo para ir realizando la gráfica paso a paso:
while contador<=muestras
ylim([0 5.1]); Limites del eje y
xlim([0 contador+50]); Limites del eje x
valorADC=fscanf(puerto,'%d')'; Toma el valor recibido por el puerto y lo guarda
en la variable
voltaje(contador)=valorADC(1)*5/1024; Hace la conversión a voltaje
plot(voltaje); Grafica el voltaje
drawnow
contador=contador+1;
end
cierra y borra el puerto utilizado, borra todas las variables utilizadas
fclose(puerto);
delete(puerto);
end