El dilema del bus de colector abierto: Por qué unos diodos necesarios pueden bloquear tu Modbus


Si estás leyendo esto, es probable que hayas montado un bus con varios dispositivos, como los populares medidores PZEM, y te hayas encontrado con un comportamiento extraño: todo funciona a medias. Lees datos sin problema, pero en el momento de intentar algo más complejo, como cambiar la dirección de un dispositivo (con el comando setAddress), todo falla.

Lo más frustrante es que, a menudo, el culpable no es un componente defectuoso, sino un pequeño detalle de diseño que, aunque necesario, introduce un efecto secundario inesperado. Este es el caso de los diodos en un bus de colector abierto con múltiples dispositivos.Analicemos por qué ocurre esto y cómo diagnosticar el problema.

pzem004 1712339109

La Necesidad de los Diodos: Protegiendo el Bus

En un bus donde varios dispositivos comparten la misma línea de comunicación y usan salidas de colector abierto (o drenaje abierto), los diodos son esenciales. Su función es evitar que un dispositivo que está en reposo (con su salida en alta impedancia) bloquee la línea de pull-up cuando otro dispositivo intenta comunicarse.

La orientación correcta, y la que seguramente tienes, es con el cátodo hacia el pin TX del PZEM y el ánodo conectado al bus común. Esta es la configuración estándar para que un bus de colector abierto funcione correctamente. Sin estos diodos, el bus quedaría permanentemente bloqueado.

Por lo tanto, el problema no es la presencia de los diodos en sí, sino un efecto secundario de los mismos que interfiere con la comunicación bidireccional completa que exige el protocolo.

El Diagnóstico: Por qué la Lectura es Posible y la Escritura No

Para entenderlo, veamos qué sucede en los dos escenarios típicos con un bus que tiene esta topología.

1. Lectura por Broadcast (Funciona sin problemas)

Imagina que tu ESP32 envía una solicitud de lectura a todos los dispositivos (broadcast).

  1. La orden sale: La señal de tu ESP32 viaja directamente por la línea TX hacia los pines RX de todos los PZEM. No hay ningún obstáculo.
  2. La respuesta llega (a medias): El PZEM que tiene la dirección solicitada procesa el comando y debe responder por su línea TX.
    • Para enviar un ‘0’ lógico (nivel bajo), el pin TX del PZEM se conecta a tierra. El diodo conduce y la señal llega limpiamente al bus y al ESP32. Perfecto.
    • Para enviar un ‘1’ lógico (nivel alto), el pin TX del PZEM se pone en alta impedancia (desconectado). Aquí es donde el diodo de ese PZEM se polariza inversamente, actuando como un interruptor abierto y bloqueando la señal.

En este modo de broadcast, el ESP32 no espera una respuesta directa de un único dispositivo. El sistema puede funcionar porque el flanco de bajada (‘0’) es lo suficientemente claro para que el maestro interprete la comunicación, aunque la señal esté degradada. Por eso no se detecta un fallo inmediato.

2. Escritura con Confirmación (setAddress) (Falla estrepitosamente)

Aquí es donde se revela el verdadero problema. El comando setAddress no es una simple orden que se envía y se olvida. El protocolo Modbus-RTU, que utilizan los PZEM, exige una confirmación.

  1. El ESP32 ordena: Envía el comando para cambiar la dirección al PZEM M3.
  2. El PZEM M3 confirma: Para que el comando sea exitoso, el PZEM M3 debe enviar una trama de confirmación (ACK) de vuelta al ESP32.
    • El ‘0’ sí pasa: Para enviar un ‘0’ lógico, el TX del M3 se pone a tierra, el diodo conduce y la señal llega al ESP32. Perfecto.
    • El ‘1’ es bloqueado (¡problema!): Para enviar un ‘1’ lógico, el TX del M3 se pone en alta impedancia. En ese instante, el diodo del M3 se polariza inversamente y bloquea completamente la señal. La línea de datos se queda «flotando», sin que el pull-up pueda subirla a nivel alto.

El resultado es que el ESP32 nunca recibe los bits en ‘1’ que forman parte de la trama de confirmación. La comunicación se corrompe, el checksum no coincide y el comando setAddress falla.

En Resumen

El diodo actúa como una válvula unidireccional desde la perspectiva del PZEM hacia el bus. Permite que el PZEM tire de la línea a tierra (para enviar un ‘0’), pero le impide soltarla para que la resistencia de pull-up la lleve a estado alto (para enviar un ‘1’). Este comportamiento, que es inherente a la forma en que están colocados los diodos, es letal para un protocolo bidireccional y basado en flancos como Modbus.

Ahora que sabes que los diodos son la causa del bloqueo, el siguiente paso es buscar una solución. ¿La más común? Implementar un puente removible de modo que cuando vayamos a programar la dirección de un modulo PZEM podemos cortocircuitar el diodo de modo que una vez programado podamos liberar ese cortocircuito en su operación normal. Algo mucho mas avanzado es montar un circuito que convierta las señales unidireccionales en verdaderamente bidireccionales, como un adaptador de nivel lógico o un circuito discreto con transistores. Pero esa, como suele decirse, es una historia para otro post.

De .docx a .md: La Guía Definitiva y Gratuita para Convertir tus Documentos de Word a Markdown


¿Tienes un documento en Word que te gustaría publicar en tu blog, documentar en un repositorio de GitHub o simplemente trabajar con él en tu editor de código favorito? Pasar del formato .docx (Word) a .md (Markdown) es un paso cada vez más común para quienes buscan un flujo de trabajo más ágil, limpio y compatible con herramientas modernas.

Markdown es un lenguaje de marcado ligero que te permite dar formato al texto (como negritas, títulos o listas) de forma sencilla y que luego se puede convertir fácilmente a HTML para la web. Lo mejor de todo es que convertir un archivo de Word a Markdown gratis es totalmente posible y muy sencillo.

En esta guía, te presentamos las mejores opciones, desde las más rápidas (sin instalar nada) hasta las más potentes (para los más exigentes).

1. Conversores Online: Rápidos y sin complicaciones

Si solo necesitas hacer una conversión puntual y no quieres instalar programas en tu ordenador, los conversores online son tus aliados. Solo tienes que subir el archivo y descargar el resultado en segundos.

  • Pandoc Online Converter
    • Este conversor online utiliza el motor del mítico Pandoc (del que hablaremos más adelante). Ofrece una muy buena fidelidad en la conversión, respetando la estructura de tu documento.
    • Uso: Entra en la web, subes tu archivo .docx, seleccionas Markdown como formato de salida y descargas el archivo.
  • Word to Markdown (por Writage)
    • Una herramienta web muy simple e intuitiva de los creadores de Writage. Ideal para documentos de estructura básica o media.
    • Uso: Arrastras tu archivo de Word al área indicada y el conversor hará su magia. Podrás descargar el Markdown resultante al instante.
  • CloudConvert
    • Una opción muy completa y profesional. Su nivel gratuito es perfecto para usos ocasionales. La gran ventaja es que permite ajustar algunos detalles del formato de conversión, lo que te da un control extra sobre el resultado final.

2. Usar Pandoc: La navaja suiza de las conversiones (gratis y offline)

Si necesitas convertir muchos archivos, trabajas con documentos complejos o quieres un control total del proceso, Pandoc es la herramienta que necesitas. Es un programa de línea de comandos, gratuito y de código abierto, considerado el estándar de oro para la conversión de documentos.

¿Cómo instalo Pandoc?

Instalar Pandoc es muy sencillo. Aquí tienes las instrucciones para los principales sistemas operativos:

  • 🪟 Windows
    1. Ve a la página oficial de descargas de Pandoc.
    2. Descarga el instalador para Windows (el archivo .msi).
    3. Ejecuta el instalador y sigue las instrucciones del asistente.
    4. Una vez instalado, abre el «Símbolo del sistema» o «PowerShell» y escribe pandoc --version. Si ves la versión, ¡todo está listo!
  • 🍎 macOS
    • Opción A (Instalador clásico): Descarga el archivo .pkg desde la misma página de descargas e instálalo como cualquier otra aplicación.
    • Opción B (Usando Homebrew): Si tienes Homebrew instalado, abre la «Terminal» y ejecuta: brew install pandoc.
  • 🐧 Linux (Ubuntu/Debian)
    • Es muy probable que Pandoc esté en los repositorios oficiales. Abre la «Terminal» y ejecuta:
      bash sudo apt update sudo apt install pandoc

Usando Pandoc para la conversión

Una vez instalado, el proceso es tan simple como abrir la terminal (o símbolo del sistema), navegar hasta la carpeta donde está tu archivo de Word y ejecutar este comando mágico:

pandoc tu_archivo.docx -t markdown -o tu_archivo.md
  • pandoc: Llama al programa.
  • tu_archivo.docx: Es el nombre de tu archivo de origen.
  • -t markdown: Le indica a Pandoc que el formato de salida debe ser Markdown.
  • -o tu_archivo.md: Especifica el nombre del archivo de destino (con extensión .md).

Ventajas de usar Pandoc:

  • Fidelidad: Respeta encabezados, listas, tablas e incluso la inserción de imágenes.
  • Flexibilidad: Te permite personalizar el estilo del Markdown resultante (por ejemplo, usando la sintaxis de GitHub).
  • Potencia: Es la mejor opción si tu documento tiene un formato complejo.

3. Extensiones para Word: Convierte directamente desde tu procesador

Si prefieres no usar la línea de comandos y trabajar dentro de tu conocido Microsoft Word, existen extensiones que añaden la funcionalidad de guardar como Markdown.

  • Writage
    • Esta extensión se instala directamente en Microsoft Word. Una vez instalada, te permite guardar tus documentos de Word directamente como archivos Markdown (.md), como si fuera otro formato más (como .pdf o .txt).
    • Tiene una versión gratuita limitada, pero es más que suficiente para un uso básico y ocasional. Es la opción perfecta para quienes se sienten más cómodos en el entorno de Word.

4. Copiar y Pegar: La vía artesanal

Para documentos extremadamente simples, no necesitas herramientas sofisticadas.

  1. Abre tu documento en Word.
  2. Selecciona todo el contenido (Ctrl+E o Cmd+E) y cópialo (Ctrl+C o Cmd+C).
  3. Pégalo (Ctrl+V o Cmd+V) en un editor de Markdown.
  4. Ajusta el formato manualmente.

Editores Markdown recomendados para este propósito:

  • Obsidian: Un editor con una comunidad enorme, ideal para tomar notas y con una vista previa excelente.
  • VS Code: Con la extensión «Markdown All in One», tendrás un editor de código potentísimo con todas las herramientas para Markdown.
  • StackEdit: Un editor online muy completo que se sincroniza con Google Drive o Dropbox.

¿Qué tipo de documento quieres convertir?

Esperamos que esta guía te haya sido de ayuda. Como habrás visto, hay una opción para cada necesidad.

Si tienes un documento con un formato muy complejo (muchas tablas, imágenes con pies de foto, ecuaciones matemáticas) y no sabes qué opción elegir, cuéntamelo en los comentarios. Estaré encantado de recomendarte la opción más adecuada o de darte algunos trucos para limpiar el Markdown resultante.