viernes, 22 de octubre de 2010

openQRP: firmware del PSoC

Hace unos meses había hablado de los kits de Steve - K1EL http://www.k1el.com/, en concreto el kit "K40 CW Reader Module" y su proyecto de transceptor abierto http://openqrp.org/

Una de los componentes del proyecto openQRP es un microcontrolador PSoC. Steve tiene previsto liberar el código fuente del PSoC en los próximos días, por lo que será una buena oportunidad para la experimentación. La descripción del firmware está disponible en la página del proyecto http://openqrp.org/?page_id=94 en inglés la cual traduciré directamente a continuación:

He pasado los últimos días preparando la entrega del firmware del PSoC. El micro-controlador PSoC se responsabiliza de varias tareas importantes. La primera es la decodificación de código Morse; y no solamente el código introducido por el operador con el manipulador, sino que tambíen puede decodificar el código recibido por la radio. Además, el PSoC proporciona un indicador de nivel de la señal en tiempo real que se muestra en un gráfico de barras en la pantalla LCD del transceptor openQRP. Esta característica se utilizará para sintonizar estaciones que emiten en CW para su decodificación y para proporcionar una indicación del nivel relativo de la señal.

La mayor parte del tiempo la he pasado en la limpieza y añadir comentarios del código fuente para que sea más legible y entendible por otros. Mientras realizaba este trabajo he descubierto varias maneras de mejorar la exactitud del decodificador. Funciona muy bien para un único chip de 8 pines con una frecuencia de reloj de 24Mhz. He podido recibir a W1AW esta tarde al 100% lo que no había podido realizar anteriormente.  Ahora el decodificador es capaz de procesar velocidades mayores de 40 palabras por minuto. Todavía hay margen para la mejora en especial en lo relacionado a la inmunidad al ruido, pero en conjunto estoy muy feliz con el resultado y espero con inquietud que otros lo ensayen.

PSoC significa "Programmable System on Chip" y es una invención de Cypress MicroSystems. Estos dispositivos están disponibles en muchos tamaños y variedades y se utilizan en el iPod, portátiles, sistemas embebidos, etc; la lista es interminable. El decodificador de CW que aquí se presenta, no es un trabajo desarrollado exclusivamente por mí. La idea surgió de una nota de aplicación publicada por Cypress en 2003 cuando el PSoC era relativamente nuevo. Esta nota de aplicación fué escrita por Melchor Varela - EA4FRB y merece la pena leer para obtener una comprensión básica de como funciona el decodificador. Comencé con el trabajo de Melchor y he utilizado el detector de tonos con pequeñas modificaciones. Posteriormente he reescrito la sección de decodificación de Morse escrita en C, basándome en decodificadores CW que había escrito anteriormente. Es un decodificador bastante bueno, pero sin duda puede ser mejorado. He utilizado solamente 1/4 del espacio de memoria del PSoC por lo que hay mucho espacio disponible para añadir inteligencia adicional al algoritmo de decodificación.

El diseño completo está contenido en un directorio que se puede almacenar en cualquier lugar del disco duro. Recientemente he actualizado el proyecto para que compile con la última versión del PSoC Designer generosamente suministrado por Cypress MicroSystems para su descarga gratuita. Para ello, será necesario registrarse y proporcionar una dirección de e-mail y alguna información adicional. Antes de ir demasiado lejos, comentar que esta no es una tarea para todos. La arquitectura del PSoC es bastante compleja y requiere un conocimiento tanto de electrónica digital como analógica. Además se necesita de un programador para programar los micros. La única fuente es Cypress, y el coste más bajo es de $185 US. Pero el PSoC es digno de aprender, puesto que se pueden realizar muchas aplicaciones.

Como he mencionado anteriormente, he utilizado el decodificador de tonos de Melchor para extraer la energía a la frecuencia central de 690 Hz. Esto se ha realizado por medio de un correlador de cuadratura. Parte del audio recuperado por el receptor se envía al PSoC donde pasa a través de dos filtros paso-banda que están sintonizados ligeramente asimétricamente uno de otro a 660 y 720 Hz. Esto reducirá ligeramente los efectos de zumbido de dos filtros de capacidades conmutadas en cascada. Después del filtrado, la señal se convertirá a formato digital por medio de un convertidor analógico digital produciendo una muestra cada 181 uS. El seno y el coseno de estas muestras se envían al correlador de cuadratura el cual efectivamente observa 8 muestras consecutivas y determina si esas muestras cumplen con el criterio para una señal a 690 Hz. Cuanto más cerca esté la señal a 690 Hz, mayor será la amplitud de salida del correlador. A continuación la señal se somete a un efecto de histéresis importante para filtrar los desvanecimientos y pulsos de ruido. En este punto, vamos a tener una amplitud de señal que se incrementa en valor cuando están presentes los puntos o rayas o sin señal en su ausencia. el nivel de señal es evaluado de tal forma que un valor por debajo de un nivel se ignora, y si el nivel de señal está por encima de un valor se considera una señal válida. A continuación los intervalos de señal se cronometran y se determinan la longitud de los intervalos por medio de un filtro de promedio. Finalmente, utilizando un valor de umbral para la longitud de los puntos/raya, los puntos se separan de las rayas y se cargan en un registro de desplazamiento. Los caracteres se envían cuando se detecta un espacio más largo entre los elementos. El byte digital resultante se busca en una tabla y para convertir el carácter Morse en ASCII. Este es enviado a la CPU Arduino y posteriormente mostrado en la pantalla LCD.

Algunos retos a los que se enfrenta el decodificador

El correlador en cuadratura funciona bien en condiciones de banda tranquila, pero los efectos de ruido y de desvanecimiento lo hacen difícil. Si bien la histéresis funciona bien, realiza un desplazamiento en el tiempo de la señal lo que la hace vulnerable a la distorsión. Una mejor manera podría ser filtrar los valores de salida del correlador de cuadratura con un umbral variable señal/pausa basado en un nivel de señal medio en lugar de un valor fijo.

El siguiente desafío es la adaptación a los diferentes estilos de manipulación que los operadores utilizan. Decodificar W1AW o cualquier máquina que genera CW es bastante fácil, se sabe que la raya es tres veces el ancho de un punto mientras que el espacio entre puntos y rayas es del ancho del punto, salvo el caso de un espacio entre caracteres (ancho de 3 puntos) o palabras (ancho de 7 puntos). En el mundo real uno se encuentra con todo tipo de cosas, los caracteres se juntan o se extienden, relaciones de punto/raya personalizadas, es el salvaje oeste. Hay maneras de hacer que un decodificador se adapte al estilo de envío del operador en tiempo real mediante el análisis y registro de diferentes intervalos de interés y utilizándolos como reglas para decodificar los caracteres. He empezado a trabajar en esto pero se complica con rapidez.


© EA4FRB - Melchor Varela 2010, Todos los derechos reservados

sábado, 2 de octubre de 2010

6- Prototipo Analizador de Antenas Vectorial

Para completar las funcionalidades básicas del analizador, he añadido dos nuevos tipos de gráficas. La primera es la representación polar del coeficiente de reflexión que es tal como se representaría en una carta de Smith. La resolución del display no permite representar completamente la carta pero siempre será una buena aproximación. En futuras versiones se podría equipar un display de más alta resolución, tal como uno de 240x128 de Newhaven Display (€40 en DigiKey) que aunque el precio es prácticamente el doble que el de 128x64, permitiría mejorar las funcionalidades y especialmente en este tipo de representaciones.

El software para este tipo de gráfico es muy sencillo y no es más que aplicar un poco de trigonometría para representar el coeficiente de reflexión complejo sobre la gráfica.

Tal como en las otras gráficas del analizador, se permite seleccionar la frecuencia central y el ancho de banda siguiendo una operativa similar. La siguiente pantalla muestra la gráfica polar de un tramo de cable coaxial en circuito abierto.


La siguiente funcionalidad es la de reflectometría, la cual permite detectar fallos en líneas de transmisión. Existen en el mercado intrumentos que realizan reflectrometría en el dominio del tiempo (TDR) que se utilizan para esta aplicación. Estos instrumentos envían un pulso eléctrico de corta duración sobre la línea, y a contunuación analizan el pulso reflejado. Al conocer el retardo entre los dos pulsos, la velocidad de la luz, y el factor de velocidad del cable, se calcula la distancia al fallo. Además la amplitud y la forma del pulso del pulso reflejado proporcionan al operador una idea sobre la naturaleza del fallo.

En este caso no se utilizará esta técnica ya que el hardware no la soporta. En este caso se utilizará una técnica que se llama reflectrometía en el dominio de la frecuencia. En este caso se mide la impedancia en todo el rango de funcionamiento del analizador y posteriormente se realiza la transformada rápida de Fourier inversa (IFFT) a los datos de impedancia. Como resultado, se obtienen las respuestas al impulso y al escalón.

La implementación tampoco ha ofrecido gran dificultad ya que disponía de una implementación bastante eficiente de la FFT para el PSoC, la cual está publicada en una nota de aplicación de Cypress.

Las siguientes pantallas muestran un ejemplo de las gráficas de la respuesta al impulso (IR) y al escalón (SR):


En principio creo que el software cubre la mayor parte de las funcionalidades básicas que el instrumento puede ofrecer y a partir de aquí se irán realizando algunas mejoras sobre ellas y correcciones. Hay alguna otra funcionalidad interesante como el emitir el valor del ROE por radio en una frecuencia prefijada para ayudar al ajuste de antenas conectadas por medio de cables largos (SWR2Air mode en los analizadores de RigExpert), que probablemente iré incorporando poco a poco. Actualmente se utiliza el 33% de la memoria Flash y el 10% de la RAM, por lo que hay bastante espacio libre para evolucionar el código.

Lo que tengo previsto como siguiente paso es trabajar en la mejora del tema de la síntesis de frecuencia, con el objetivo de que el instrumento al menos llegue a VHF y sin impactar en gran medida el coste del instrumento. En este sentido hay mucho que experimentar y diferentes soluciones con sus ventajas e inconvenientes. Espero ir reflejando en futuras entradas del blog comentarios sobre las diferentes soluciones y resultados de los experimentos.

© EA4FRB - Melchor Varela 2010, Todos los derechos reservados

miércoles, 1 de septiembre de 2010

WSPR, algo no encaja?

Seguro que a todos nos ha sorprendido al utilizar WSPR y acceder a la base de datos de reportes, ver que además de ser recibido por las estaciones próximas de Europa, aparecen informes de recepción de tu señal de estaciones en las antípodas, Australia, Nueva Zelanda, la Antártida..!!; utilizando una antena muy modesta, en condiciones un poco precarias, y además con 5W o menos de potencia en la banda de 30M.  Por otro lado, compruebas que las estaciones que recibes se restringen a las estaciones europeas cercanas, salvo en buenas condiciones de propagación en las que se puede escuchar a algunas pocas estaciones de USA por ejemplo.

He de reconocer que después de la "alegría" inicial de ver hasta puede llegar la señal en estas condiciones límite de trabajo, me quedo con la sensación de que hay algo que no encaja. Es verdad que el sistema de modulación utilizado en el WSPR permite decodificar señales con una relación señal/ruido muy baja, las estaciones de recepción en las antípodas podrían estar situadas en lugares con un nivel de ruido bajo, y utilizar equipos y antenas de muy alta eficiencia para la recepción de señales débiles. Puede ser..no digo que no..pero..

Si uno analiza un poco el sistema, se puede observar que es bastante sencillo proporcionar informes falsos y que por tanto podrían desvirtuar en parte la utilidad del sistema. Se me ocurren tres opciones: la primera es que la estación en las antípodas se conecte a un receptor web en Europa, por ejemplo el WebSDR http://websdr.ewi.utwente.nl:8901/ , y a través del programa WSPR decodificar y enviar los spots recibidos de la señal de audio de la tarjeta de sonido del PC. Una segunda opción sería un programa que automatice la lectura de la base de datos de reportes y envíe spots falsos basados en la información de la base de datos. La tercera opción, la más sencilla de todas sería suplantar la identidad. La segunda opción requiere algo más de esfuerzo, ya que hay que hacer algo de programación, pero la primera es practicamente inmediata y por tanto he hecho una prueba para ver si funciona, y funciona..

El proceso es el siguiente:

1) Acceder al WebSDR http://websdr.ewi.utwente.nl:8901/ y programar la frecuencia de 10138.7Khz en modo USB (en caso de quere utilizar 30M)


2) Asegurarse que el mezclador de la tarjeta de sonido está activado para enviar la señal de audio de salida a la entrada.


 3) Lanzar el programa WSPR asegurándose de que está correctamente asignada la tarjeta de sonido en los ajustes del programa. A partir de unos minutos se empezarán a decodificar las estaciones y si está activada la opción de enviar los spots, éstos se enviarán a la base de datos de reportes (por supuesto he desactivado la opción de envío de spots).


Por supuesto no quiero decir que se esté dando esta situación, ni por supuesto promocionar el que se realicen estas malas prácticas. Solamente quiero compartir que este sistema es susceptible de ser engañado de forma muy sencilla y por tanto a la hora de analizar los reportes de recepción habrá que ser consciente de ello y buscar otros medios para confirmar los informes sospechosos, tales como contactar con el corresponsal para la verificación.

En un sistema de este tipo y para este tipo de aplicación, en el que los informes de contactos no tienen un "valor" utilizable para concursos, diplomas, etc; no veo ninguna motivación para realizar este tipo de malas prácticas, en cualquier caso siempre sería util añadirle algún sistema de autenticación.

Se agradecen opiniones y comentarios sobre el tema.

© EA4FRB - Melchor Varela 2010, All rights reserved

domingo, 29 de agosto de 2010

5- Prototipo Analizador de Antenas Vectorial

He completado la primera fase del firmware del analizador de antenas vectorial. Este firmware contiene prácticamente toda la funcionalidad necesaria y salvo la funcionalidad de calibración que está pendiente, quedarían temas más secundarios en este momento tales como la gestión eficiente de energía, conexión al PC (que no es posible en el prototipo), y ajustes.

El manejo del analizador es muy sencillo y se controla por medio de un mando rotativo con pulsador, y tres teclas. El mando rotativo se utilizará principalmente para la selección de la frecuencia o el ancho de banda, y para la selección de opciones de los menús.

Todas las selecciones, frecuencias de trabajo, paso de avance, ancho de banda, pantalla en curso; se almacenan en memoria no-volátil automáticamente por lo que facilita en gran medida la utilización.

El funcionamiento básico se describe a continuación:

MAIN MENU:
Menú principal del analizador. La selección de la opción se realiza con el mando rotativo y la validación con cualquiera de las teclas o pulsando el mando.

En este momento están implementadas las tres primeras opciones.


SINGLE FREQUENCY:
Realiza la mediciones en la frecuencia seleccionada. La selección de la frecuencia se realiza por medio del mando rotativo. El valor del paso de avance de frecuencia se señala por medio de un cursor debajo del valor de frecuencia. Para modificar la posición del paso se utilizará el mando pero pulsando sobre él mientras se realiza el movimiento.

La selección de los diferentes modos se realiza por medio de la tecla central. La tecla izquierda permitirá volver al menú principal.

Show All (serial):
Muestra todas los resultados de la medición incluyendo todos los valores de la impedancia, el coeficiente de reflexión, el ángulo de fase, y el valor de inductancia o capacitancia.


Show All (Parallel): Exactamente igual que el anterior pero utilizando el modelo paralelo de impedancia.


SWR:
Esta pantalla está pensada para utilizar en campo ya que muestra el valor del ROE con una fuente de más fácil visualización.

MULTI FREQUENCY:
Realiza la mediciones en diferentes frecuencias (5), lo que permite estudiar antenas con diferentes puntos de resonancia. La selección de la frecuencia se realiza por medio del mando rotativo. El valor del paso de avance de frecuencia se señala por medio de un cursor debajo del valor de frecuencia. Para modificar la posición del paso se utilizará el mando pero pulsando sobre él mientras se realiza el movimiento.

La selección del índice de frecuencia se realiza por medio de la tecla central. La tecla izquierda permitirá volver al menú principal.


SWEEP FREQ PLOT:
Este modo permite visualizar los gráficos de los parámetros de impedancia en un rango de frecuencias. La selección de la frecuencia se realiza de la forma habitual utilizando el mando rotativo. Para moverse por los diferentes gráficos se utilizará la tecla central. La tecla izquierda permitirá volver al menú principal. La tecla derecha permitirá intercambiar la selección de frecuencia con la selección del ancho de banda. La selección en curso se mostrará por el cursor debajo del valor de frecuencia o de ancho de banda.

SWR:
Gráfico del ROE (escala semi-logarítmica).


Z:
Gráfico del módulo de la impedancia (escala semilogarítmica).


R:
Gráfico de la resistencia (escala semilogarítmica).



X:
Gráfico de la reactancia.


PH:
Gráfico del ángulo de fase.


S11:
Gráfico del coeficiente de reflexión.



Pues esto es todo, de momento. Hay que reconocer que el entorno de desarrollo, PSoC Creator, del PSoC5 facilita en gran medida la programación sobre todo a la hora de acceder a los recursos del micro y representa un gran avance comparado con el PSoC Designer para el PSoC1, aunque hay todavía algunos defectillos que tendrán que pulir.

En próximas entradas abordaré aspectos más técnicos de la implementación y algunas conclusiones más detalladas.

© EA4FRB - Melchor Varela 2010, All rights reserved

jueves, 19 de agosto de 2010

4- Prototipo Analizador de Antenas Vectorial

Estas son algunas fotografías del prototipo de analizador de antenas vectorial ensamblado en su caja. No ha sido el objetivo por el momento tener una terminación perfecta, pero más que nada tener cierta ergonomía y proteger la electrónica para permitir el desarrollo del software más comodamente.

He utilizado para ello una caja de aluminio muy sencilla (y barata) de Hammond Manufacturing que está disponible en DigiKey. El factor de forma y la ergonomía no son los ideales pero es necesario considerar que el prototipo se ha realizado "de dentro hacia fuera", es decir, las placas se han implementado sin consideraciones mecánicas y luego se ha buscado una caja que se ajustara a las dimensiones. El mecanizado se ha realizado con ayuda de un taladro, una sierra de marquetería, y un juego de limas.

El frontal contiene el codificador rotativo, tres pulsadores empotrados, y el display. En la parte posterior se encuentra el conector de antena, un interruptor, y un pasante para el cable de alimentación (posteriormente implementaré un conector adecuado).


© EA4FRB - Melchor Varela 2010, Todos los derechos reservados

sábado, 14 de agosto de 2010

3- Prototipo Analizador de Antenas Vectorial

Ya solucionado el problema con la placa DDS y después de escribir un sencillo software de demostración, pero funcional, ya tengo ciertas garantias del funcionamiento del prototipo lo que me permitirá progresar con el desarrollo del prototipo y especialmente con el software.


La primera demostración es un gráfico de la ROE de mi antena de aro en un ancho de banda de 1Mhz:


La segunda pantalla muestra todos los parámetros de impedancia, incluyendo ROE, coeficiente de reflexión y ángulo de phase:

Esta tercera pantalla muestra el SWR simultáneamente en varias bandas:

En fín, queda un largo camino pero lo importante es que se va confirmando la viabilidad del diseño y además se demuestran las posibilidades del instrumento.

© EA4FRB - Melchor Varela 2010, All rights reserved

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