viernes, 4 de junio de 2021

Maravilloso mundo del Si4732/35

 

La industria de consumo masivo aborda la creación de receptores de radio económicos y la solución obvia para lograrlo es integrar todas las etapas del receptor lo mas posible, en el extremo en un integrado único. Obviamente diseñar un integrado que tenga muchas funciones es mas caro, pero es un costo fijo y si el chip resultante se usará en tiradas de producción de centenares de miles o incluso millones de aparatos entonces ese costo fijo alto se hace irrelevante en su contribución para cada aparato. Al mismo tiempo el costo de fabricación aumenta linealmente con el número de componentes a incluir, y reduciéndolo se disminuye el costo de fabricación, y cuantos mas se fabriquen mas son los ahorros a obtener. En general esa situación se dá mucho con chips destinados a fabricar receptores de FM comercial, algunos que integran receptores de AM y FM comercial. En ambos casos son chips que pueden ser adaptados para un uso en bandas de VHF o incluso en HF a partir de modificaciones significativas, usualmente dá proyectos que no son tan complejos y divertidos de realizar pero que requieren bastante paciencia e instrumental para hacerse.
Esa situación es de alguna forma alterada por el chip denominado Si 473x (la x puede tener varios números pues es en realidad una familia de chips con funciones ligeramente diferentes), puede revisarse la hoja de datos resumida (link) o  mas substancial nota de aplicación AN332 sobre como usarlo en sus diferentes modalidades (link). Este chip está pensado como receptor de AM en bandas comerciales y el espectro de HF en general (pensado para estaciones de AM de onda corta) y el espectro de FM comercial. Los radioaficionados somos doblemente desafortunados en éstas cuestiones, por un lado nadie hará la inversión para desarrollar éste tipo de chips con funciones pensadas para nosotros, simplemente el mercado no tiene suficiente volumen para justificar el desarrollo de un chip especial, al mismo tiempo la recepción predominante en bandas de aficionado es en SSB, lo que tampoco es algo de consumo masivo y los volumenes son bajos, o sea que sería un chip muy completo pero no muy diferente de tantos otros similares. 
Pero hay una diferencia, éste chip utiliza tecnología SDR y por lo tanto su comportamiento es definido por su microcódigo, el cual es actualizable.... Y, blanco y jarra suele ser leche, apareció rápidamente un "patch" de microcódigo que permite que el chip opere en modos para los cuales no fue originalmente diseñado; entre ellos SSB y FM de banda angosta.
La cantidad de componentes que requiere éste chip para implementar un receptor de amplio espectro es ridículamente baja, solo algunas resistencias, bobinas y condensadores. Para funcionar, no obstante, el chip debe ser controlado mediante comandos, y esos comandos los recibe por medio de una interfaz I2C (dos lineas SDA/SCL con un protocolo asincrónico), la cantidad de opciones de configuración es gigantesca (la nota de aplicación tiene mas de 300 páginas) y absolutamente todos los parámetros pueden ser programados. No solo frecuencia y modo, también las distintas configuraciones de filtros, pasos, opciones de demodulación e incluso la carga de parches de firmware como el que lo habilita a recibir modos que no le son "nativos". 
La interfaz provista no es compleja, y es nativa en las placas microcontroladoras como la Raspberry Pi o Arduino, y de hecho la demanda de procesamiento es muy baja porque el controlador no cumple ninguna función de procesamiento de señales, solo tira comandos a velocidades muy bajas (en comparación con las que necesitaría si hiciera procesamiento de señales). Por lo tanto la placa Arduino, aún la mas pequeñita, puede ser suficiente. Para hacer las cosas mas fáciles Ricardo (PU2CLR) ha desarrollado una librería de programación denominada SI4735 que está disponible en forma gratuita en su sitio GitHub (link). 
La librería, de por si fantástica en la facilidad que otorga para configurar el chip con comandos relativamente simples, provee además una cantidad enorme de ejemplos de aplicación que terminan dejando disponibles firmware para cargar en una placa Arduino Nano  asociada a la mayor parte de las placas que implementan el chip Si473x, tanto disponibles comercialmente (en sitios como Ali Expréss por ejemplo), como realizado por hobbistas en tiradas cortas, como en creadores de kits (Jason Kits)  o incluso diseños hechos a "mano" con una placa genérica (ver foto adjunta).
Hay un sitio en Facebook muy activo "Si47xx for radio experimenters" (link) que brinda continuamente novedades sobre placas adicionales, implementaciones adicionales de las existentes y consultas de soporte de todo tipo.
Yo adquirí mi placa en Ali Express y vino provista de un parlante y una antena plegable como accesorios, pese a que la foto muestra una batería LiPo la misma no viene en en envío por razones de seguridad de transporte. La placa es muy completa e incluye una Arduino Nano, el visor OLED, todos los switches y el rotary encoder. También provee amplificación de audio y un circuito de carga de baterias LiPo, es decir, se la puede alimentar mediante USB pero si tiene batería la misma es cargada mientras se usa. Muy bien armado. La placa viene con un firmware en su placa Arduino Nano que es de tipo genérico, se sospecha que usa la librería de Ricardo pero en la mejor tradición de los chinos sin pagar un centavo de royalty por ello o hacer mención siquiera a su uso (un谢谢no se le niega a nadie).
Cuando llegué y luego de verificar que todo anduviese la bajé el firmware especial para los kits de Ali que se provee como ejemplo en el sitio GitHub, el programa se carga como se lo hace con cualquier placa Arduino, se necesita el IDE Arduino y un cable USB, los ejemplos están en source escritos en C++ y hay que compilarlos (lo que es automático en el IDE). 
El "sketch" es un tanto grande para la placa, las placas Arduino tienen la particularidad que cuando se ocupa mas del 50-60% de la memoria de datos y mas del 60-70% de la memoria de programa puede tener inestabilidades de ejecución, en algunos casos el IDE avisa la situación y en otros no. Las "inestabilidades" son un eufemismo por anda erráticamente (falla o hace reboot aleatoriamente) o simplemente no anda. En el primer caso porque se queda sin espacio para las variables "locales" que todo programa va generando y en el segundo porque puede interferir con otras estructuras que tienen que estar en memoria como el bootloader. El firmware provisto como ejemplo por Ricardo anda muy bien sin tocarlo, con lo justo diría. Solo para probar agregué una librería CAT que he desarrollado para otros proyectos con la placa Raspberry que emulan un Yaesu FT-817, lo que es una convención bastante difundida, pero la librería tal como estaba no entraba. Le hice recortes sustantivos pero a pesar de los cuidados quedaba muy grande. En el proceso se nota que arruiné el bootloader del Arduino por lo que me encontré en la infortunada situación de "briquearlo", salvajismo linguistico que significa que transformé la placa en un pisapapeles ("brick" es ladrillo en inglés) que es cuando la placa no responde adecuadamente y no permite programarla "pisando" el firmware con problemas. Es un incordio que pase, pero tiene solución. El procedimiento para hacerlo (link) consiste en utilizar la interfaz ISP que tiene todo Arduino para utilizar otra placa Arduino como "quemador", puede usarse tanto para programar el chip en una Arduino existente o para programar un chip ATMega328p aislado. "Volveremos...." dijo el Gral McArthur con el agua a las rodillas mientras se tomaba el palo de Filipinas (lo cierto es que volvió), posiblemente con una implementación mucho mas ligera de firmware para CAT, posiblemente el del Kenwood TS840  que es mas liviana.
Aventuras con el código al margen el uso del receptor en si es muy facil, en mi caso lo alimento con un parlante que es al mismo tiempo pack de baterias. Al encenderse recuerda lo último que se hizo y trae la frecuencia y el modo. En FM es capaz de recibir estereo y RDS (los mensajes que manda la emisora), en AM es un poco ruidoso pero sospecho que es por la antena pequeña. En HF se comporta magníficamente con una antena decente en recepción en todas las bandas, lo usé mayoritariamente en 40 metros SSB pero pruebas rápidas mostraron que se comporta razonablemente bien en todas las bandas desde 160 metros hasta 6 metros inclusive. Lo utilicé para recibir señales de CW (el firmware de PU2CLR incorpora un filtro de 500 Hz para eso), SSB, FT8 e incluso SSTV! Obviamente las estaciones mas débiles no las tomaba, pero mi referencia era muy maliciosa... un Yaesu FT-2000. Imagino que con un pequeño transmisor de CW o FT8 puede perfectamente ser parte de una estación (muy) portatil. La placa suelta tiene algún riesgo en ese estado por lo que construí con la printer 3D una caja (ver foto al comienzo del artículo), el diseño lo saqué de Thingiverse (link) donde si bien el autor califica la caja como "terrible" es en realidad bastante decente y facil de construir. Creo que es una alternativa muy razonable para un receptor de uso portatil, o de uso casual o incluso un primer receptor construido"en casa" para la estación. Altamente recomendable.



No hay comentarios:

Publicar un comentario