sábado, 29 de diciembre de 2012

MEJORAS DE PSoC DESIGNER 5.3


El pasado 12 y 13 de diciembre de 2012 se llevo a cabo el PSoC World, este evento fue una exposición virtual organizada por Cypress donde se presentaron avances de la tecnología PSoC y también de las diferentes compañías socias o colaboradoras en el proyecto PSoC como por ejemplo ARM y ARROW.

Además de las conferencias ofrecidas por ingenieros y ejecutivos de las empresas participantes, el PSoC World fue el espacio escogido por cypress para dar a conocer un poco más las nuevas herramientas y mejoras de su IDE de desarrollo para PSoC 1, llamado PSoC Designer 5.3, que aunque había sido lanzada en octubre del 2012 hasta el momento no contaba con una gran difusión.

Dentro de toda la gama de mejoras o de nuevas características, quizás la más llamativa es el auto-ruteo, con esta herramienta es posible visualizar de una manera gráfica (Figura 1) todas las posibles conexiones que puede tener un bloque ya sea digital o análogo, esto facilita y hace más rápido el proceso de conexión de todos los bloques y puertos que componen la aplicación que se esté desarrollando.

(Figura 1. Opciones de Auto-ruteo del puerto RX_Input de un modulo UART)
Para poder desplegar todas las opciones de conexión que tiene un puerto solo es necesario el comando shift + click sobre el puerto que se quiere conectar y automáticamente aparecerán todas las posibles rutas del puerto como se pudo observar en la figura anterior.

Otras mejoras significativas en esta nueva versión son:

Catalogo de dispositivos: en esta versión el catalogo de dispositivos permite ubicar el chip que se quiere utilizar por medio de una serie de filtros con lo cual se agiliza el proceso de búsqueda (Figura 2).

(Figura 2. Catalogo de dispositivos)

Personalización de los módulos de usuario: En esta nueva versión es posible clonar los módulos de usuario para luego hacerles modificaciones según lo requieran nuestros proyectos y de esta manera por decirlo de alguna forma crear nuevos módulos de usuario que se ajusten más a las necesidades específicas de cada diseñador. Estos nuevos módulos de usuario personalizados pueden entrar a hacer parte de la biblioteca de PSoC Designer para ser utilizados en cualquier proyecto. Además se pueden exportar los nuevos módulos en un formato .zip para luego ser importados a las librerías de cualquier otro PSoC Designer 5.3 o posterior.  

Nuevos módulos de usuario: En esta nueva versión han sido incluidos 8 nuevos módulos de usuario con los cuales se busca simplificar algunas tareas de programación y desarrollo de nuevas aplicaciones, los nuevos módulos son los siguientes:

  • VoltajeSequencer
  • SMBusSlave 
  • FanController 
  • Termistor 
  • SmartSense2x  
  • GasSensorAFE 
  • SwitchCapConfig 
  • EzADC

Las mejoras que se acabaron de mencionar pueden ser destacadas como las más significativas, aunque no son las únicas ya que también se pueden encontrar otras mejoras en la interacción del usuario con la interfaz gráfica como la posibilidad de hacer zoom con la rueda de desplazamiento del mouse y otros cambios más que hacen posible que la estructura del chip sea más visible. 

NOTA: Si inicialmente solo quieren hacer una prueba de esta nueva versión de PSoC Designer pueden instalarla conservado la versión anterior con la cual estén acostumbrados a trabajar, posteriormente cuando hayan tomado una decisión sobre que versión quieren utilizar definitivamente pueden desinstalar la restante.

viernes, 30 de noviembre de 2012

Nueva página (Pestaña) de descargas en el blog


En esta ocasión se presenta la nueva página (Pestaña) de descargas del blog, en ella van a poder encontrar links de descarga de software, manuales y los proyectos que se han desarrollado hasta el momento y que se seguirán desarrollando en el blog. 

Esta nueva pestaña la pueden encontrar en la franja azul que se encuentra en la parte superior del blog, espero que sea de su agrado y ademas les sea de utilidad.


miércoles, 31 de octubre de 2012

FILTROS ANÁLOGOS CON PSoC

Como ya se ha recalcado bastante en ocasiones anteriores, uno de los mayores atractivos que tienen los microcontroladores PSoC es la posibilidad de trabajar con algunos elementos análogos (amplificadores operacionales) y la mejor manera de aprovechar al máximo esta cualidad es desarrollando aplicaciones en las que se utilicen estos amplificadores operaciones y en especial los bloques de capacitancias conmutadas, aplicaciones que no sería posible desarrollar con microcontroladores netamente digitales y que de querer hacerlos de manera convencional con amplificadores operacionales, condensadores y resistencias requerirían un espacio físico mayor en su implementación. Un ejemplo que permitiría explotar estos recursos mencionados anteriormente es la implementación de filtros análogos en PSoC y es precisamente este tema el que se va a desarrollar en esta entrada del blog.

Los filtros análogos en PSoC se pueden implementar de distintas maneras, una de estas es la manipulación y configuración directa de los bloques de capacitancias conmutadas que se encuentran dentro de la matriz de bloques análogos y la otra es utilizando los módulos de usuario que ya vienen pre-configurados para tan fin en PSoC Designer. En esta ocasión se van a utilizar los módulos de usuario ya que es la manera más sencilla para configurar los filtros en un comienzo.

PSoC Designer ofrece los siguientes módulos de usuario para implementar filtros análogos:

• BPF2 (Filtro pasa-banda de orden 2)
• BPF4 (Filtro pasa-banda de orden 4)
• ELPF2 (Filtro pasa-bajos elíptico de orden 2)
• ELPF4 (Filtro pasa-bajos elíptico de orden 4)
• LPF2 (Filtro pasa-bajos de orden 2)
• LPF4 (Filtro pasa-bajos de orden 4)

Para el ejemplo de esta entrada del blog se van a utilizar un filtro pasa-bajos y un pasa-banda ambos de segundo orden (LPF2 y BPF2), la frecuencia con la que pueden trabajar estos filtros depende directamente de la potencia con la que se configuren los mismos, llegando a ser hasta de 4MHz en el caso del filtro pasa-bajos configurado como High Power. 

Parámetros de configuración:

Estos módulos de usuario cuentan con alrededor de once parámetros para configurar, sin embargo en un principio solo hay que preocuparse por configurar cuatro de ellos los cuales son:

Input: configura el bloque o pin que se va a utilizar como entrada de señal del filtro.
AnalogBus: habilita o deshabilita el bus de salida análoga, de esta manera se puede sacar del PSoC la señal resultante del filtro.
CompBus: habilita o deshabilita la conexión con el bus del comparador y de esta manera permite la conexión con el sistema digital de PSoC.
Polarity: configura la inversión o no inversión de la señal de la salida del filtro con respecto a la polaridad de la señal de entrada.

Los parámetros de configuración restantes son utilizados para definir las frecuencias de trabajo del filtro, para la configuración de estos se va a utilizar una herramienta muy útil y sencilla llamada wizard (figuras 1 y 2) que se puede encontrar haciendo click derecho sobre el bloque de los filtros, esta herramienta permite seleccionar la clase del filtro que se quiere utilizar (butterworth, chebyshev), la frecuencia de muestreo, la ganancia, la frecuencia de corte para el caso de los pasa-bajos o la frecuencia central y el ancho de banda para el caso de los pasa-banda.

(Figura 1. Wizard del filtro pasa-bajos)

(Figura 2. Wizard del filtro pasa-banda)

Luego de llenar las casillas disponibles en el wizard, se puede observar como cambian los valores de los condensadores los cuales eran los parámetros de configuración restantes, además de esto también se puede ver la gráfica que representa la respuesta esperada con esos valores de configuración.

Para visualizar los resultados ofrecidos por estos filtros, se implementaron un filtro pasa-bajos y un filtro pasa-banda con las especificaciones que se pudieron observar en los wizard presentándonos anteriormente (Figuras 1 y 2). A continuación se presentan una serie de imágenes con los resultados obtenidos para cada filtro donde la señal de color amarillo es la de entrada y la de color azul es la señal de salida del filtro.

Filtro Pasa-bajos:

• Frecuencia de corte = 14 KHz
• Frecuencia de muestreo = 1MHz
• Ganancia (db) = 0
• Clase de filtro = butterworth

(Figura 3. Frecuencia 1 KHz)
(Figura 4. Frecuencia 5 KHz)
(Figura 5. Frecuencia 10 KHz)
(Figura 6. Frecuencia 14 KHz)
(Figura 7. Frecuencia 20 KHz)


Filtro Pasa-banda:

• Frecuencia central = 14 KHz
• Ancho de banda = 6 KHz
• Frecuencia de muestreo = 400 KHz
• Ganancia (db) = 0

(Figura 8. Frecuencia 1 KHz)
(Figura 9. Frecuencia 5 KHz)
(Figura 10. Frecuencia 10 KHz)
(Figura 11. Frecuencia 14 KHz)
(Figura 12. Frecuencia 20 KHz)
(Figura 13. Frecuencia 30 KHz)

Observando los resultados se puede decir que teniendo en cuenta la sencillez de su implementación estos módulos son bastante eficientes, además si se quieren mejorar los resultados se pueden utilizar los módulos de filtros de cuarto orden.

NOTA: No hay que olvidar inicializar los módulos de usuario con los comandos:

LPF2_Start(X);
BPF2_Start(X);

Donde “X” es el valor de configuración de la potencia del modulo.

sábado, 29 de septiembre de 2012

COMUNICACIÓN UART CON PSoC

En esta ocasión he propuesto realizar una práctica de comunicación UART con PSoC, la idea principal es mostrar el funcionamiento del modulo de usuario UART, esto se llevara a cabo mediante un sencillo ejercicio en el cual se debe tomar el voltaje de un potenciómetro configurado como divisor de tensión, luego este valor de voltaje se debe convertir de análogo a digital mediante un modulo de usuario ADCINC para posteriormente enviarlo en formato hexadecimal a un Hyper Terminal.

En primera instancia se van a revisar los aspectos básicos de configuración para poder utilizar el modulo de usuario UART. Este modulo de usuario es un transmisor y receptor universal asíncrono (UART) compatible con el protocolo de comunicación RS232 en modo full duplex, está compuesto por dos bloques digitales los cuales son utilizados uno para transmisión (Tx) y el otro para recepción (Rx) que funcionan independientemente.

Reloj del modulo UART y velocidad de transmisión: El reloj con el cual se alimenta el modulo de usuario es el mismo para ambos bloques y la frecuencia de este debe ser 8 veces mayor a la velocidad de transmisión deseada, por ejemplo si se quiere transmitir a una velocidad de 9600 baudios es necesario que el reloj del modulo de usuario UART este configurado a 76.8 KHz, la tolerancia del reloj para un correcto funcionamiento es +/- 2%.

Rx input: Este parámetro se debe conectar a alguna de las filas de entrada de los bloques digitales y luego a alguno de los pines externos desde donde se va a tomar los datos que son enviados desde el computador.

Tx Output: Este parámetro se conecta a alguna de las filas de salida de los bloques digitales y luego al pin externo encargado de enviar la información al computador.

Tx Interrupt Mod: Este parámetro determina el momento en el que se genera la interrupción por medio del bloque Tx, se pueden escoger dos tipos de interrupciones “TxRegEmpty” y “TxComplete”, la segunda opción es la más utilizada para casos en los que es necesario garantizar que el dato transmitido ha sido enviado por completo.

ClockSync: Permite establecer la fuente de reloj con la que se debe sincronizar el modulo de usuario.

Rx Output: este parámetro permite tomar el valor de entrada a uno de los buses del microcontrolador, esto puede ser útil para realizar funciones de verificaciones de datos.

Rx Clock Out y Tx Clock Out: Permite utilizar el reloj del bloque en otros procesos, hay que recordar que este reloj equivale al del modulo divido en 8.

RxCmdBuffer: Habilita o deshabilita el buffer para la recepción de comandos.

RxBufferSize: Determina el tamaño del buffer de recepción, este parámetro solo es valido cuando están habilitados el RxCmdBuffer y las interrupciones.

CommandTerminator: Determina el carácter o valor que al ser recibido señala el final de un comando.

Param_Delimiter: Determina el carácter utilizado para delimitar un parámetro por ejemplo con el valor 32 se termina que el delimitador es un espacio.

Aunque los parámetros mostrados anteriormente son los básicos para poner en funcionamiento el modulo UART, también son necesarios algunos comandos para la programación del mismo, estos comandos son utilizados para la inicialización del modulo, seleccionar el tipo de paridad, tomar y enviar diferentes tipos de datos, algunos de estos comandos se muestran a continuación, sin embargo es recomendable consultar la hoja de datos del modulo para profundizar el estudio de estos métodos.

• UART_Start(0): Este comando inicializa el modulo de usuario, el valor indicado dentro del paréntesis indica el tipo de paridad.
• UART_CPutString("PSoC En Español \n\r"): Este comando envía una cadena de caracteres.
• UART_PutSHexByte(Valor): Envía en formato Hexadecimal el valor indicado.

De ahora en adelante se muestra el proceso de desarrollo de la práctica mencionada anteriormente.

El primer paso es tomar la muestra del potenciómetro, para esto se utilizaron un modulo PGA con ganancia unitaria y un modulo ADCINC con una frecuencia de muestreo de 1562 muestras por segundo la cual puede ser baja para ejercicios con señales con altas frecuencias pero para la práctica que se está realizando en este momento es más que suficiente, luego de tener los dispositivos para convertir el valor análogo a un valor digital se procede a utilizar el modulo UART y a configurarlo como se puede apreciar en las figuras 1 y 2.

(Figura 1. Configuración de los parámetros del modulo)
(Figura 2. Interconexión del modulo con los pines externos)

Como se pudo observar en la figura 1, el reloj utilizado para alimentar el modulo UART es VC3 el cual está tomando el reloj del sistema (SysClk) y lo divide en 156 por lo tanto la frecuencia que proporciona VC3 es de 153,8 KHz y como ya se había mencionado la velocidad de transmisión es igual a la velocidad del reloj divido en 8 por lo tanto la velocidad a la que se va a transmitir en este ejercicio es de 19200 baudios.



Como existe una tolerancia de +/- 2% en la velocidad de transmisión no hay ningún inconveniente con la diferencia que se presenta entre los 19200 y los 19230.

El siguiente paso es escribir el programa para nuestra aplicación, en este código se deben inicializar los módulos de usuario, tomar las muestras con el convertidor análogo a digital y por ultimo enviar estos datos por medio del modulo UART. A continuación se presenta el código desarrollado para esta aplicación.


//-----------------------------------------------------------------------
// C main line
// Programa de muestra del modulo UART de PSoC
// Desarrollado para PSoC En Español, www.psocenespanol.blogspot.com
// Desarrollado por Iván Cuadros Acosta
//-----------------------------------------------------------------------

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

void main(void)
{
PGA_1_Start(3); //inicialización modulo PGA
ADCINC_1_Start(3); //inicialización modulo ADCINC
ADCINC_1_GetSamples(0); // se toman muestras constantemente
M8C_EnableGInt ; //se habilitan las interrupciones
UART_1_Start(0);//inicialización modulo UART, sin paridad

//Se imprimen encabezados que aparecen inicialmente en el hyper Terminal
UART_1_CPutString("PRACTICA DE MUESTRA MODULO UART DE PSoC \n\r");
UART_1_CPutString("PSoC En Español \n\r");
UART_1_CPutString("www.psocenespanol.blogspot.com \n\r");
while(1)
{
if(ADCINC_1_fIsDataAvailable()!=0)//se conprueba si hay un valos disponible en el convertidor
{
  UART_1_PutSHexByte(ADCINC_1_wGetData());//Se envia el valor del ADCINC en formato Hexa
  UART_1_CPutString("\n\r");}//Se imprime un salto de linea
  Delay10msTimes(50);//Retardo de 500 milisegundos
}
}


Por último a continuación se presenta un vídeo donde es posible observar el proceso el funcionamiento de esta práctica.



NOTA: La recepción de datos por medio del modulo UART de PSoC se muestra en una publicación posterior, si quieren revisarla pueden hacerlo a través del siguiente link:  RECEPCIÓN DE DATOS CON MODULO UART DE PSoC.

viernes, 31 de agosto de 2012

USO DEL MODULO COMP

En esta ocasión se va a trabajar con el modulo COMP el cual hace parte de los módulos de usuario de PSoC designer 5.1 que permiten trabajar con amplificadores operacionales. 

El modulo de usuario COMP es un comparador de voltajes que permite distintas maneras de configuración con las cuales se pueden obtener diferentes formas de comparar las señales de entrada, alguna de las configuraciones y sus funciones son las siguientes:

• COMPZ (Detector de cruces por cero): Entrega un valor lógico alto cuando la señal de entrada es superior a cero y un nivel lógico negativo cuando la señal de entrada es inferior a cero.


(Figura 1. Esquema y diagrama de funcionamiento del COMPZ)

• COMPA (Comparador con referencia variable): Con este comparador se puede escoger un nivel de disparo como punto de referencia (pre-programado), cuando la señal de entrada supere esta referencia se entrega un nivel lógico alto y cuando es menor entrega un nivel lógico bajo.


(Figura 2. Esquema y diagrama de funcionamiento del COMPA)

• COMPH (Detector de cruce por cero con histéresis variable): Permite determinar un nivel de umbral superior e inferior a cero, cuando la señal de entrada supera el umbral positivo la señal de salida tendrá un valor lógico alto, este nivel se mantiene hasta que la señal de entrada cruce el nivel de umbral inferior con lo cual la señal de salida tendrá un nivel lógico bajo.


(Figura 3. Esquema y diagrama de funcionamiento del COMPH)

• COMPW (Comparador de ventana): Permite establecer un valor umbral o ventana, cada vez que la señal de entrada cruce por algunos de los límites de la ventana el estado lógico de la señal de salida cambiara.


(Figura 4. Esquema y diagrama de funcionamiento del COMPW)

• COMPD (Comparador por diferencia de voltaje): Permite establecer una referencia de voltaje por medio de una de las entradas del amplificador operacional, cuando la señal de entrada supera la señal de referencia se obtiene a la salida un nivel lógico alto, por su parte cuando la señal de entrada es menor a la señal de referencia se obtiene un nivel lógico bajo.  


(Figura 5. Esquema y diagrama de funcionamiento del COMPD)

• COMPDH (Comparador por diferencia de voltaje con histéresis): Permite establecer una referencia de voltaje por medio de una entrada del amplificador, además permite establecer un umbral en esta señal de referencia, cuando la señal de entrada supera el límite superior del umbral a la salida se obtiene un nivel lógico alto, por el contrario cuando la señal de entrada es inferior al límite inferior del umbral se obtiene a la salida un nivel lógico bajo.


(Figura 6. Esquema y diagrama de funcionamiento del COMPDH)

COMP wizard:

Esta es una herramienta bastante útil para observar previamente el funcionamiento del comparador que se quiere implementar, esta herramienta despliega una interfaz grafica en la que se pueden variar los parámetros del comparador y observar la respuesta que se va a obtener (figura 7), esta interfaz se puede observar haciendo clic derecho sobre el bloque que contiene al modulo del usuario y seleccionando la opción COMP wizard.


(Figura 7.Wizard de un comparador de ventana)

Configuración del modulo:

Al igual que en los módulos expuestos anteriormente es necesario inicializar el modulo de usuario mediante el comando COMP_Start(x), donde el valor de “x” representa la potencia con la que se quiere configurar el modulo teniendo los siguientes valores posibles:

DAC8_LOWPOWER = 1
DAC8_MEDPOWER = 2
DAC8_HIGHPOWER = 3

Los demás parámetros del modulo como son la polaridad, el valor de las ventanas o las referencias se pueden configurar de manera grafica, sin embargo si se quiere realizar mediante código también es posible y se pueden utilizar los siguientes códigos:

COMP_SetPolarity(x);
COMP_SetVTHH(x);
COMP_SetVTHL(x);

Los valores que puede tomar cada parámetro se pueden observar en la hoja de datos del modulo de usuario COMP que contiene PSoC designer.

martes, 31 de julio de 2012

USO DEL MODULO AMUX4


En algunas ocasiones es necesario tomar y convertir muestras de diferentes tipos de señales análogas, para esto es conveniente utilizar uno de los multiplexores análogos con los que cuenta PSoC, el que se va a presentar en este caso es el “AMUX4” este es un modulo de usuario que permite utilizar un multiplexor análogo de cuatro entradas y una salida. Para el caso del microcontrolador CY8C29466 se puede contar con cuatro multiplexores de este tipo (uno por cada columna), a continuación se muestra la manera de configurar este modulo.

Los parámetros esenciales para la configuración son:

•   Analog Column Mux.
•   AMUX4_InputSelect.

Analog Column Mux: este parámetro permite escoger cual de los cuatro multiplexores va a ser el escogido para realizar el trabajo, esta opción puede ser configurada de manera grafica y los cuatro valores que puede tomar son AlnMux_0, AlnMux_1, AlnMux_2, AlnMux_3, tal como se puede apreciar en la figura 1.


(Figura 1. Configuración Analog Column Mux)

AMUX4_InputSelect: este parámetro y más específicamente este código permite seleccionar el pin análogo que se va a tomar como entrada en ese instante de multiplexación, la sintaxis de dicho código es la siguiente: 

AMUX4_InputSelect(nombre del puerto a usar);

Por ejemplo para seleccionar el pin 1 del puerto 0 la sintaxis quedaría de la siguiente manera:

AMUX4_InputSelect(AMUX4_PORT0_1);

También hay que tener en cuenta que para cada multiplexor a utilizar existen unos puertos análogos predeterminados, lo cual hay que recordarlo en el momento de configuración del enrutamiento con el código AMUX4_InputSelect(), la disposición de los multiplexores con los respectivos puertos análogos se puede observar en la figura 2.


(Figura 2. Disposición de los multiplexores)

A manera de ejemplo se propone realizar una práctica en la cual en cada una de las cuatro entradas al multiplexor se conecte un potenciómetro configurado como divisor de voltaje con el fin de ir variando el valor de las entradas análogas, la selección de la entrada a multiplexar se va a realizar por medio de un dip-switch, por último la salida del multiplexor se va a conectar a un modulo PGA con ganancia unitaria y la salida de este amplificador nos retorna el valor de la señal por un pin configurado como salida análoga.

A continuación se presenta el código escrito en C de la práctica propuesta.  

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

#include <m8c.h>       
#include "PSoCAPI.h"   
  
void main(void)
{
       AMUX4_1_Start();//Inicializacion del modulo multiplexor
       PGA_Start(3); //Iniciación del modulo PGA
      
while(1)
{
if(PRT1DR==0x00) //selección con el dip-switch
{
AMUX4_1_InputSelect(AMUX4_1_PORT0_0);//Selección del puerto 0_0 para multiplexar
}
if(PRT1DR==0x01)//selección con el dip-switch
{
AMUX4_1_InputSelect(AMUX4_1_PORT0_2);//Selección del puerto 0_2 para multiplexar
}
if(PRT1DR==0x02)//selección con el dip-switch
{
AMUX4_1_InputSelect(AMUX4_1_PORT0_4);//Selección del puerto 0_4 para multiplexar
}
if(PRT1DR==0x03)//selección con el dip-switch
{
AMUX4_1_InputSelect(AMUX4_1_PORT0_6);//Selección del puerto 0_6 para multiplexar
}
}
}

En este ejemplo se utilizo el multiplexor AlnMux_1 el cual corresponde a la segunda columna del sistema análogo del PSoC CY8C29466.

NOTA: El ejemplo anterior, es un ejercicio muy básico solo con el fin de mostrar el funcionamiento de estos multiplexores, pero existen diversas aplicaciones en las que se puede obtener un mayor provecho de este dispositivo.

sábado, 30 de junio de 2012

VOLTAJES DE REFERENCIA EN PSOC


Teniendo en cuenta que cuando se trabaja con microcontroladores PSoC es posible implementar fases análogas, en algunos momentos puede llegar a ser necesario utilizar niveles de voltaje duales, al hablar de este tipo de voltajes me refiero a tener un nivel de voltaje positivo y un nivel negativo, ambos respecto a un punto de referencia (-5V , 0V, +5V).  


PSoC nos ofrece la posibilidad de trabajar con diferentes niveles de voltaje dependiendo de las referencias que sean seleccionadas para dicho trabajo, en un principio se tienen tres niveles de referencia estables con los cuales es posible trabajar, estos valores son denominados AGND, REFHI, REFLO.


AGND: esta es una referencia de tierra análoga, es utilizada cuando se requieren valores de voltaje tanto positivos como negativos, los cuales van referenciados ante este punto de tierra análoga AGND.


REFLO: es el parámetro que simboliza el voltaje negativo.


REFHI: es el parámetro que simboliza el voltaje positivo.


Los valores de voltaje de REFLO y REFHI pueden cambiar dependiendo de la configuración que sea escogida para el RefMux en los parámetros globales del sistema (Figura 1), este parámetro tiene una gran variedad de posibles configuraciones con las cuales se obtienes diferentes valores como se observa en la siguiente tabla:


(Tabla 1. Valores de voltajes según el Ref Mux)

(Imagen 1. Posibles Valores de configuración del Ref Mux)


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.