Mostrando entradas con la etiqueta Convertidor Digital a Analógico. Mostrar todas las entradas
Mostrando entradas con la etiqueta Convertidor Digital a Analógico. Mostrar todas las entradas

domingo, 27 de mayo de 2012

CONVERTIDOR ANÁLOGO A DIGITAL CON MODULO ADCINC



En la publicación anterior se realizo una pequeña revisión del modulo DAC8 de PSoC con el cual se pueden hacer conversiones de datos digitales a análogos, en esta ocasión se va a llevar a cabo el proceso contrario con el modulo ADCINC, el cual es tan solo uno de los tantos módulos que ofrece PSoC Designer para realizar conversiones análogas a digitales, además también se llevara a cabo una práctica sencilla en la cual se pretende convertir una señal análoga a digital y luego retornarla de nuevo de manera análoga, de esta manera se integraran los temas vistos en esta publicación y la anterior.

Los módulos que ofrece PSoC Designer para hacer conversiones análogo a digital son los siguientes:

• ADCINC 
• ADCINCVR
• DelSig
• DualADC
• DualADC8
• SAR6
• TriADC
• TriADC8

El modulo que se va a referenciar es el ADCINC, este es un convertidor análogo a digital que cuenta con una resolución de 6 a 14 bits y provee una velocidad de muestreo de 15,6 Ksps (para 6 bits de resolución), el formato de la salida digital se puede entregar con signo o sin signo, la frecuencia máxima a la que se puede alimentar el bloque (DataClock) es de 8 MHz, sin embargo es recomendable que se utilice una frecuencia de 2 MHz con la cual se provee una linealidad en la conversión. 

Este ADCINC es posible implementarlo de primer o segundo orden, si se implementa una de primer orden son utilizados un bloque digital y un bloque análogo, por su parte al implementar un ADC de segundo orden se utilizaran un bloque digital y dos análogos, la configuración de estos ADC se pueden observar en las figuras 1 y 2 mostradas a continuación, estos esquemas fueron tomados de la hoja de datos del modulo ADCINC. 


(Figura 1. ADCINC de primer Orden)
(Figura 2. ADCINC de segundo Orden)

Configuración modulo ADCINC: 

Al igual que se hizo con el modulo DAC8 los aspectos que se van a tener en cuenta en esta publicación, son solo aspectos mínimos para la puesta en funcionamiento del modulo, para una mayor profundidad sobre el funcionamiento del mismo y mayores características, se recomienda leer la hoja de datos del modulo.

Los parámetros a configurar para este modulo se pueden apreciar en la figura 3.

(Figura 3. Parámetros de configuración del modulo)

DataFormat: Es el formato del valor binario al que será convertido el valor análogo ingresado al sistema, permite dos posibilidades unsigned y signed, en caso de seleccionar unsigned el dato binario se ofrece sin signo, si se escoge signe se utiliza un bit para determinar el signo del valor digital.

Resolution: Es el numero de bits utilizado para realizar la conversión, entre mayor sea el numero de bits, mejor va a ser la resolución del convertidor.

Data Clock: Velocidad del reloj a la cual se alimentan los bloques del modulo, la velocidad máxima es de 8 MHz, esta velocidad determina la velocidad de muestreo del convertidor análogo a digital.



Pos Input: Entrada principal del convertidor. 

Los parámetros anteriores son los mínimos a configurar para poner en funcionamiento el modulo ADCINC, los valores Neg Input y Neg Input Gain, se pueden dejar desconectados y deshabilitados respectivamente. 

Para el funcionamiento del ADC es necesario habilitar las interrupciones, además se recomienda utilizar un modulo PGA de ganancia 1 antes de la entrada del convertidor ADC, a continuación se presenta un código en C en que se muestra como poner en funcionamiento el convertidor, con este código se espera despejar un poco las dudas sobre este modulo. 

//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h>       
#include "PSoCAPI.h"   

void main(void)
{
PGA_1_Start(3); //se activa el modulo PGA
ADCINC_1_Start(3); //se activa el modulo ADCINC
ADCINC_1_GetSamples(0); // # de muestras a tomar, en este caso muestreo constante
M8C_EnableGInt; //se habilitan las interrupciones
while(1)
{
if(ADCINC_1_fIsDataAvailable()!=0) // si el DAC tiene un dato valido entonces
{
PRT1DR=ADCINC_1_bGetData();//coloca el dato digital por el puerto 1.
}
}
}


Las configuraciones de los parámetros del modulo ADCINC en conjunto con el código anterior son los que se mostraron en la figura 3.

En el siguiente video se muestra una práctica en la cual se toma una señal sinusoidal análoga por medio de un convertidor ADC, este valor se guarda en una variable y por ultimo un convertidor DAC toma este valor retornando como resultado un valor análogo, con lo cual se obtiene la reconstrucción de la señal que se ingreso al sistema en un principio.



domingo, 15 de abril de 2012

CONVERTIDOR DIGITAL A ANALÓGICO CON MODULO DAC


Un DAC ó convertidor digital a analógico es un circuito que es capaz de tomar un valor digital de “n” número de bits para luego entregar al usuario un valor de tipo analógico, uno de los aspectos fundamentales de este tipo de convertidores es la resolución la cual se puede definir como el cambio de voltaje que se presenta por cada cambio del valor digital.

La resolución de estos dispositivos está determinada por el numero de bits que toma en su parte digital, entre mayor sea el numero de bits mejor será la resolución de dicho convertidor. Otro factor que influye en la resolución del DAC es el voltaje al cual trabaja, o en otras palabras el voltaje máximo que va a entregar el convertidor en su parte analógica. Lo anterior se puede ver mejor en los siguientes ejemplos:


Donde:

V= Voltaje de convertidor (Máximo voltaje analógico a representar)
n= Numero de bits del convertidor.

Ejemplo:

Para un DAC de 8 Bits cuyo valor máximo analógico será 5 voltios


Para un DAC de 8 Bits cuyo valor máximo analógico será 3 voltios

Para un DAC de 9 Bits cuyo valor máximo analógico será 5 voltios


Para un DAC de 9 Bits cuyo valor máximo analógico será 3 voltios


La mayoría de este tipo de convertidores está construidos por medio de circuitos de resistencias tipo red R2R como el que se puede ver en la figura 1. También se pueden conseguir en el mercado circuitos integrados que cumplen la función de DAC como es el caso del DAC0800 el cual es un convertidor digital a análogo de 8 bits.

Figura 1 (DAC con red de resistencia R2R)

Sin embargo con los microcontroladores PSoC no se tiene la necesidad de recurrir a estos circuitos externos mencionados anteriormente, esto es debido a que PSoC gracias a sus bloques analógicos tiene la posibilidad de ofrecer módulos DAC de 6, 8 y 9 bits.

Estos módulos utilizan 2 bloques análogos de PSoC para el caso de los DAC de 8 y 9 bits ó un bloque para el caso de los DAC de 6 bits, en ninguno de los casos se utiliza bloques de tipo digital. Estos convertidores toman un código digital para luego entregar a la salida un voltaje que representa a ese código, el valor digital puede ser tomado directamente de uno de los puertos del microcontrolador en formato binario ó puede ser una variable con la cual se esté trabajando dentro del programa, el numero de muestras que pueden llegar a tomar estos módulos DAC es de 125k muestras por segundo.

Configuración modulo DAC:

Los aspectos que se van a tener en cuenta en esta publicación para la configuración del modulo DAC, son los aspectos mínimos para ponerlo en funcionamiento, razón por la cual se recomienda leer la hoja de datos que se puede encontrar desde PSoC Designer para así profundizar sobre características que pueden ser necesarias dependiendo de la aplicación que se piense desarrollar con el DAC.

Luego de agregar el modulo al proyecto se deben configurar los parámetros de los módulos los cuales son:

AnalogBus: Este parámetro indica el bus analógico al cual se va a conectar la salida de convertidor Digital-Analógico.

DataFormat: Este parámetro define el formato del valor digital con el que se va a trabajar el cual puede ser OffsetBinary, TwosComplement, TwoBitSignAndMagnitude.

Figura 2 (Configuración Parametros DAC8)
Luego de esto es necesario inicializar el modulo y ajustar la potencia del mismo en el archivo fuente de nuestra aplicación, esto se puede hacer mediante el comando DAC8_Start(x), donde el valor de “x” representa la potencia con la que se quiere configurar el modulo teniendo los siguientes valores posibles:

DAC8_OFF = 0
DAC8_LOWPOWER = 1
DAC8_MEDPOWER = 2
DAC8_FULLPOWER = 3

Por último el comando DAC8_WriteBlind(x) permite obtener a la salida del DAC el valor analógico del término digital que se quiere convertir, en este caso representado por la “x” que se encuentra en el comando.

Para intentar esclarecer un poco más las cosas en el siguiente código se puede observar una aplicación sencilla en la cual por el puerto 1 del microcontrolador PSoC se está tomando un dato digital (Binario) y luego se entrega el valor analógico.

//-----------------------------------------------------------------------
// C main line
//-----------------------------------------------------------------------

#include <m8c.h>      
#include "PSoCAPI.h"  

void main(void)
{
DAC8_1_Start(3); //se inicializa el modulos DAC8
while(1)
{
DAC8_1_WriteBlind(PRT1DR);/*El DAC toma el valor digital del puerto 1 y retorna el valor análogo por el pin que se haya configurado como salida analógica*/
}
}


Las configuraciones de los parámetros del modulo DAC8 para esta práctica son los que se mostraron anteriormente en la figura 2.