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.