viernes, 23 de julio de 2010

2- Prototipo Analizador de Antenas Vectorial

En esta segunda fase del prototipo de analizador de antenas vectorial se utilizará el PSoC5 FirstTouch Starter Kit como unidad central de procesamiento. Este kit tiene todo lo necesario para el desarrollo incluso la posibilidad de depuración a través de USB y además tiene conectores de expansión que nos permitirán realizar el interfase a los diferentes módulos del prototipo de analizador.

El diagrama de bloques es el siguiente:


Respecto al prototipo anterior lo que se ha hecho es sustituir la unidad central del SARK100 por el StarterKit y un display gráfico de 128x64 puntos. El cambio de frecuencia se implementará por medio de un encoder rotativo mecánico y el número de pulsadores se reducirá a tres ya que las funciones de las teclas se guiarán por menús en el display.

El PSoC5 además de proporcionar mayor capacidad de proceso y memoria, dispone de periféricos analógicos de mayores prestaciones. Para este proyecto se utilizará el conversor delta-sigma en una configuración de 16-bits y 48K muestras por segundo, que serán perfectas para un instrumento de este tipo.

El esquema provisional del prototipo se ilustra más abajo. El interfase con los diferentes elementos del analizador se realiza por medio de los conectores de expansión del kit. El PSoC5 del kit funciona a 3.3V por lo que ha sido necesario añadir unas puertas para adaptar los niveles lógicos para el interfase con los DDS ya que éste funciona a 5V y los niveles de entrada son compatibles CMOS. En el caso del interfase con el display los niveles de entrada son compatibles TTL y al utilizar el display en modo escritura solamente, no será necesario ninguna lógica de adaptación.

Estas son las primeras imágenes del prototipo:


En la primera puesta en marcha es posible conectar el StarterKit al PC y el display funciona correctamente:


El primer problema es con los generadores de señal DDS. Estos funcionaban en el primer prototipo pero incluso después de haber verificado que se generan correctamente las señales de control, parece que no se programan correctamente. Mi sospecha es que en estas placas, la señal de reset de los DDS no se controla y está permanentemente a nivel bajo, ya que se han utilizado placas de los primeros prototipos del SARK100 en los cuales no se manejaba esta señal y en ocasiones no se inicializaban correctamente. El siguiente paso será corregir esta incidencia.

Los siguientes pasos, además de corregir esta incidencia, serán ensamblar el prototipo en una caja sencilla de metal e ir desarrollando el software. Con las posibilidades del hardware y el display gráfico, se podrá desarrollar un software con muchas funcionalidades por lo que se irá desarrollando en diferentes fases. En próximas entradas del blog se irán describiendo los avances.

© EA4FRB - Melchor Varela 2010, All rights reserved

jueves, 22 de julio de 2010

1- Prototipo Analizador de Antenas Vectorial

Es mi intención publicar en esta serie de entradas el progreso de la realización de un prototipo de un analizador de antenas vectorial con medición precisa de impedancia, incluyendo la magnitud y la fase, y con funcionamiento tanto autónomo como conectado a un PC. El analizador está basado en el principio de recepción superheterodino de simple conversión y en esta primera fase seguirá parte del diseño del hardware de Bob Clunn - W5BIG publicado en el QST de Noviembre del 2006, en concreto los sensores de voltaje y corriente basados en mezcladores. La diferencia con el diseño de W5BIG es que todo el procesamiento de señal se realizará en el microcontrolador por lo que no será necesario un PC y por tanto podrá funcionar de forma autonóma.

Las fases que tengo previstas son las siguientes:
  • Prototipo basado en el kit SARK100
  • Prototipo basado en el PSoC5 First Touch Starter kit y con display gráfico
  • Generación de señal DDS hasta UHF utilizando mezclado de armónicos
En la primera fase se aprovecha la base del kit SARK100 para la realización del prototipo, es decir, se utiliza una placa del SARK100 con los componentes del puente de medida y el DDS y PA subequipados. Por otro lado se han recortado la sección del DDS de dos placas del SARK100 para realizar los dos generadores de señal necesarios en este caso de hasta 30Mhz.

El diagrama de bloques del primer prototipo se muestra a continuación:

El diseño se compone de dos generadores de señal DDS que se heterodinan para producir una señal de 1Khz que se puede amplificar, filtrar y analizar muy fácilmente. Uno de los generadores funciona a la frecuencia de test y otro se programa para funcionar 1Khz por encima. El rango de frecuencias es de 0 a 30Mhz y es filtrada por filtros paso bajo de 45Mhz de frecuencia de corte. Uno de los mezcladores se utiliza como sensor de voltaje y el otro como corriente. La salida de los mezcladores se amplifica y filtra antes de llevarlos a un convertidor analógico digital tipo delta-sigma de 8-bits del PSoC.

Para extraer la información de magnitud y fase de los detectores de voltage y corriente se realiza la Transformada Discreta de Fourier a la frecuencia de 1Khz, utilizando el algoritmo de Goertzel para extraer la información de magnitud y de fase de la señal. Una vez calculada esta información para el voltaje y la corriente se derivan todos los parámetros de impedancia y coeficiente de reflexión. Los cálculos se realizan con aritmética de punto flotante de simple precisión.

Para el primer prototipo he optado por montarlo en una placa de protopipado. Para facilitar el montaje he utilizado un programa de diseño de PCB para realizar el posicionado de componentes y para las conexiones. El posicionado lo he impreso en una hoja de papel adhesivo y posteriormente lo he pegado a la placa. Por otra parte he recortado la sección del DDS de dos placas del SARK100. El conjunto sin ensamblar se puede ver a continuación:


A continuación se pueden ver las imágenes del prototipo montado y conectado al SARK100:


En las siguientes imágenes se muestran los valores de impedancia y ROE en formato polar y cartesiano:

El prototipo funciona adecuadamente pero tiene algunas limitaciones. Por un lado las limitaciones en la CPU del PSoC1 hacen que sea un poco lento en las medidas, donde se hace más notable cuando se utiliza la función SCAN. Por otro lado, se está utilizando el reloj interno del PSoC que no es tan estable como un oscilador de cristal, lo que introduce algo de error en las medidas. Por otro lado el montaje dista también de ser ideal, pero todos estos factores son conocidos y se irán subsanando en fases posteriores.

© EA4FRB - Melchor Varela 2010, All rights reserved

miércoles, 7 de julio de 2010

Interfase Módulo LCD Gráfico para el PSoC5

Mi primer contacto con el kit de evaluación del PSoC5 (PSoC5 FirstTouch Starter Kit) ha consistido en realizar un interfase a un módulo LCD gráfico de 128x64 puntos de resolución que servirá dar un buen soporte de interfase de usuario para futuros proyectos. El diseño y el código de demostración están disponibles a continuación para el que lo pueda necesitar.

El diseño se ha montado sobre una placa de pruebas para una máxima flexibilidad:


He elegído un módulo LCD gráfico clásico debido a la facilidad de las conexiones para el montaje en una placa de prototipo. En este caso he seleccionado un módulo de Newhaven Display, código NHD‐12864WG‐BTFH‐V#N, que está disponible en DigiKey. Este módulo integra dos controladores KS0108B de Samsung, que son de utilización bastante común en este tipo de módulos.

La "pega" con este módulo LCD es que el voltage de alimentación es de 5V mientras que el kit del PSoC5 funciona a 3.3V y las entradas del micro no son compatibles con este voltage. Debido a que no quería añadir circuitería adicional (ej. un 74AHC245) para no complicar el diseño, la solución ha consistido en utilizar el módulo en modo escritura solamente. Los niveles lógicos del módulo son compatibles TTL por lo que se puede hacer directamente el interfase, siempre y cuando sea en dirección PSoC al módulo, como será en este caso.

Esto significará una restricción al software en el sentido que no se podrán realizar accesos al módulo en modo lectura para leer la memoria de pantalla o acceder al registro de estado (normalmente para consultar si está ocupado). La solución consiste en implementar un buffer en la memoria del micro para resolver el primer tema y para el segundo implementar un retardo software para "simular" el estado de ocupado, ya que e tiempo es determinista.

El display se conecta al conector de expansión del StarterKit y para el interfase se utilizan conexiones a puertos del PSoC5. Se ha tenido cuidado en la selección de puertos para reservar determinados para funciones analógicas, ya que hay ciertos grupos de puertos que tienen mejores prestaciones para funciones analógicas (ver nota de aplicación AN58304).

La señal de R/W del display se conecta a masa para dejarlo en modo escritura. La alimentación de 5V del módulo la suministro de forma independiente, con la precaución de activarla antes de conectar el puerto USB del StarterKit para evitar dañar el display.

El control del backlight no está disponible de momento. Esto lo dejo pendiente para futuras evoluciones con control PWM.

El esquema es muy simple:


Hay varias librerías disponibles en Internet para manejar LCDs con este controlador, por lo que después de un proceso de selección me he decantado por una librería incluido en un proyecto de demostración de un reloj controlado por un LPC2106, T-Clock, de Martin THOMAS:

http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/glcd_dcf77/index.html

Esta librería además de proporcionar la funcionalidad deseada, tiene la ventaja que trabaja con un buffer en la memoria del microcontrolador por lo cual es ideal para manejar el display en modo escritura solamente. El portado ha sido muy sencillo y practicamente ha funcionado todo a la primera.

Como recursos en el PSoC5 se necesita solamente un timer de 16bit para el control de las temporizaciones, y los puertos de control y de datos. Para el programa de demo ha sido necesario crear un timer adicional, pero éste no es necesario para el funcionamiento de la librería. La vista del diseño en el PSoC Creator es la siguiente:
El programa de demonstración utiliza las diferentes funciones de la librería y dan una idea sencilla de como utilizarlas. El programa será muy simple integrar en cualquier proyecto y además que pienso que debería funcionar directamente en un PSoC3.

Código fuente revisión 0.0: GLCD-PSoC5-R00.zip

Para la generación de bitmaps he utilizado la excelente herramienta "The Dot Factory" v0.0.9. Es necesario utilizar las opciones "LSB first" y rotación de 270º:
http://www.pavius.net/downloads/tools/53-the-dot-factory

El proyecto ha sido bastante sencillo de realizar gracias a la funcionalidad del kit y de la herramienta PSoC Creator. Ahora sí, es importante comentar que he tenido dificultades por defectos en el PSoC5, documentados en la errata, y con el PSoC Creator. Los principales problemas han estado principalmente relacionados con el manejo de los timer software que están documentados en la errata y he encontrado que en la depuración paso a paso, no se muestran siempre correctamente las instrucciones en código fuente de la ejecución.

Hay que tener en cuenta que el kit se entrega con la primera muestra de ingenieria del PSoC5 (ES1) y el PSoC Creator está en Beta. Hasta ahora los problemas no han sido bloqueantes ya que siempre ha habido soluciones alternativas, pero hay que tener muy presente la hoja de erratas a la hora de desarrollar nuevas funcionalidades. También hay que comentar que la documentación de los módulos no es completa y todavía no hay muchas notas de aplicación. La fecha de producción de este dispositivo es para el próximo año por lo que espero que se vayan corrigiendo estos problemas.

Espero que esta nota de aplicación sea de utilidad. Demuestra por un lado las capacidades de expansión del StarterKit gracias a su conector de expansión y las capacidades del PSoC5 y la herramienta PSoC Creator para realizar el proyecto en un tiempo mínimo, aún teniendo en cuenta que no está en producción.

© EA4FRB - Melchor Varela 2010, Todos los derechos reservados

jueves, 1 de julio de 2010

PSoC5 FirstTouch Starter Kit

Ya tengo en mis manos el kit de evaluación del PSoC5, http://www.cypress.com/?rID=43674. El kit puede ser adquirido en la web de Cypress o a través de DigiKey. El precio es de unos 40€ (más IVA) y en mi caso lo he comprado a través de DigiKey ya que a partir de 65€ los gastos de envío son gratuitos y en la página de Cypress te cobran 35$, por lo que he aprovechado para comprar otros componentes y completar el importe mínimo.

Enlace al producto en DigiKey:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=428-3039-ND

Que es lo interesante de este kit? Pues muchas cosas, primeramente comentar que el PSoC5 es un microcontrolador basado en un núcleo ARM-Cortex M3 y que incluye una arquitectura programable incluyendo periféricos analógicos de alta resolución.

El kit incluye un interface de depuración a través de USB, por lo que no es necesario adquirir herramientas adicionales, y el software de desarrollo PSoC Creator es gratuito. Además incluye una serie de componentes tales como un acelerómetro, un termistor, LEDs, y un Slider para demostración de la tecnología capacitiva. Pero una característica importante es que incluye un conector con acceso a 22 pines de entrada salida por lo cual se puede enchufar a una placa de prototipado y poder realizar desarrollos a medida sin necesidad de desarrollar una placa con cierto nivel de complejidad.

El kit trae varios proyectos de ejemplo que ayudan en gran medida a entender el funcionamiento del sistema y pueden servir de punto de partida para otros proyectos.

Tengo en marcha un proyecto con este kit y si todo va bien, puede convertirse en mi plataforma para futuros proyectos gracias a las posibilidades de este microcontrolador. Iré relatando mis experiencias en futuras entradas del blog.

Unos apuntes finales. El PSoC5 está disponible a nivel de muestras de ingeniería y de hecho el micro ensamblado en el kit es una muestra. La producción se espera para el primer trimestre del 2011. El que está empezando a estar disponible en producción es el PSoC3 con núcleo 8051. Aparentemente es relativamente sencillo pasarse del PSoC3 al PSoC5 y viceversa, ya que el PSoC Creator permite generar el código para las dos CPUs y además van a existir encapsulados compatibles pin a pin. Lógicamente existirán características diferentes pero se pueden realizar diseños que admitan las dos opciones lo que lo hace la solución altamente flexible y escalable.



© EA4FRB - Melchor Varela 2010, All rights reserved