TDSO152
TDSO152 es una aplicación escrita en Tcl/Tk para controlar el osciloscopio DSO152 de FNIRSI. Aunque todavía se encuentra en desarrollo (WIP), ya es plenamente operativa y amplía considerablemente las capacidades de este pequeño osciloscopio añadiendo:
- Diferentes tipos de espectrogramas.
- Exportación de formas de onda en formato CSV.
Actualmente, además del puerto SWD, es necesario añadir una conexión USART. La intención inicial era utilizar el propio puerto USB para la transferencia de datos, pero al no haberse conseguido una implementación satisfactoria, se ha optado por emplear el USART, que ofrece un funcionamiento estable y fiable.
El objetivo de este proyecto es transformar el DSO152 en un auténtico osciloscopio de sobremesa (dentro de sus limitaciones técnicas), ampliando significativamente sus capacidades respecto al firmware original.
Aviso
Para utilizar las capacidades que ofrece TDSO152 será necesario reemplazar el firmware original del dispositivo. Como consecuencia, se perderán las funcionalidades proporcionadas por el firmware de fábrica.
Además, será necesario realizar pequeñas modificaciones de hardware, por lo que la garantía del fabricante quedará anulada.
Utilice esta información bajo su propia responsabilidad.
Modificaciones hardware y herramientas
Las herramientas mínimas necesarias son:
- Soldador.
- Hilo de estaño.
- Pines acodados de 90°.
- Cables.
- Hoja de lija.
- WCH-LinkE.
También es recomendable disponer del IDE MounRiver si se quiere la mayor flexibilidad.
Puerto SWD
Si se consulta el vídeo de Hacking a Fnirsi DSO152 mini oscilloscope to play Breakout, podrán verse las instrucciones para añadir un puerto de depuración al DSO152. Se recomienda utilizar una lija fina o un método similar para limpiar correctamente los pads antes de soldar.
Si no se dispone de una Dremel o herramienta equivalente, también puede utilizarse un cúter o cuchillo para adaptar el hueco necesario para el nuevo conector.
USART
Como no se ha conseguido utilizar el puerto USB integrado en el DSO152 para la transferencia de datos, se ha recurrido al USART. En la práctica cumple perfectamente su cometido, aunque requiere una pequeña modificación adicional del hardware.
Afortunadamente, la modificación es extremadamente sencilla: basta con soldar dos cables a los pads de dos pulsadores existentes en la placa. También se recomienda limpiar previamente las superficies con una lija fina.
WCH-LinkE
Este programador incorpora tanto interfaz SWD como puerto serie, lo que permite programar el firmware y depurarlo simultáneamente utilizando un único dispositivo.
La alimentación debe configurarse a 3.3 V y el programador debe ponerse en modo ARM, ya que el microcontrolador del DSO152 es un CH32(F)103. Configurar el WCH-LinkE.
Respecto al programador, se recomienda adquirirlo en la tienda oficial de WCH en AliExpress. También resulta interesante adquirir alguna de las placas de desarrollo que incluyen un programador integrado, ya que su precio es reducido y permiten experimentar fácilmente con estos microcontroladores.
El entorno de desarrollo MounRiver ha demostrado ser una herramienta muy válida. Aunque todavía está por detrás de soluciones más maduras como STM32CubeIDE, resulta perfectamente adecuado para este proyecto.
Para aprender y experimentar, se recomienda descargar los paquetes de evaluación de WCH, CH32F103EVT.ZIP
Versión 1.1
- Envío de datos en flujo de bytes (refresco de pantalla x5 respecto a v1.0)
- Señales más limpias en la parte PC
Versión 1.0
A continuación puede verse el funcionamiento general del osciloscopio.
Funcionamiento
La arquitectura utilizada es cliente-servidor. El servidor (la aplicación principal) se encarga de comunicarse con el osciloscopio y distribuir los datos a los distintos clientes (plugins).
La información transmitida consiste principalmente en:
- Datos obtenidos del ADC.
- Frecuencia de muestreo configurada.
- Estado general del osciloscopio.
El fichero tdso152.bat se encarga de arrancar el servidor y los distintos clientes. Tras el arranque aparecerán dos ventanas:
- La ventana principal del osciloscopio.
- La ventana run-clients.
¿Por qué dos ventanas y el fichero tdso152.bat?
El desarrollo principal se realiza utilizando directamente el intérprete Tcl:
La aplicación principal crea un servidor encargado de intercambiar datos con distintos clientes especializados:
- Transformada Discreta de Hartley.
- Medidas habituales (Vrms, Vmáx, Vmín, Vpp, etc.).
- Otras ampliaciones que puedan desarrollarse en el futuro.
Estos clientes realizan los cálculos complejos de forma independiente y notifican al programa principal cuando los resultados están listos para mostrarse.
Este diseño proporciona una separación completa entre la interfaz gráfica y el procesamiento de datos, permitiendo además añadir nuevas capacidades mediante plugins independientes.
Por ejemplo:
permite lanzar un cliente encargado de realizar medidas y cálculos específicos.
Al utilizar FreeWrap para generar ejecutables independientes, este mecanismo deja de funcionar exactamente igual y resulta necesario generar varios ejecutables. No obstante, esta circunstancia también aporta ventajas, ya que cada componente mantiene una elevada independencia respecto al resto.
Aunque inicialmente no se planteó distribuir el software en formato ejecutable, disponer de una versión empaquetada facilita considerablemente su utilización.
Código fuente
De momento puede extraerse del propio ejecutable utilizando 7-zip: 7z x tdso152.exe -oextraido
Tras el verano se publicará el código en Github y Sourceforge.
Página del proyecto
Hoja de ruta
Actualmente el desarrollo se centra en incorporar nuevas capacidades y corregir algunos problemas detectados durante las pruebas.
Aspectos pendientes:
- Implementar mejora refresco de pantalla (Techo)
- Implementar stream de bytes (Techo)
- Existe un pequeño error de offset en la señal de entrada.
- En las mediciones de alta tensión el offset resulta excesivo.
- Integración con Sigrok
- Ampliar el buffer del ADC hasta aproximadamente 10 000 muestras utilizando lecturas de 8 bits.
- Aprovechar los 12 bits completos del ADC.
- Implementar un canvas virtual que permita navegar cómodamente por buffers de gran tamaño.
Sobre el nombre
El nombre TDSO152 tiene una doble intención.
Por una parte, hace referencia a que se trata de un desarrollo realizado en Tcl/Tk sobre un Digital Storage Oscilloscope. Por otra, su pronunciación en castellano resulta especialmente sugerente.
Contacto
Para cualquier sugerencia, consulta o colaboración:
tdso112a a hykrion c o m

