Cómo descodificar el código Morse con lógica digital

3

Tengo curiosidad por saber cómo se podría implementar un decodificador de código morse con lógica digital básica (sin microcontrolador), principalmente como un ejercicio. Podría decodificar letras individuales con una máquina de estado, si tuviera entradas asíncronas como puntos, guiones y pausas. Mi problema radica fundamentalmente en generar esas salidas a partir de una fuente en bruto como una clave de telégrafo.

¿Hay un buen circuito que pueda detectar cuando una señal pasa a un nivel alto durante un cierto tiempo? Lo necesitaría para enviar una señal cuando está arriba durante un corto tiempo y luego baja, y otra señal cuando permanece más tiempo (tres períodos de tiempo para un guión frente a uno para un punto). También necesito una señal cuando permanece baja durante tres períodos para un salto de letra, o alrededor de siete unidades para un salto de palabra. Debe ser bastante liberal con sus tiempos, ya que está destinado a decodificar la entrada manual, no la modulación por computadora.

Sería súper agradable si utilizara componentes mínimos y si pudiera usar un potenciómetro para ajustar el período de tiempo.

    
pregunta captncraig

4 respuestas

4

Hubo algunos experimentos de aficionados (a principios de los 80, creo) con decodificación de datos digitales de velocidad variable con la intención de poder distribuir código para acompañar artículos de revistas imprimiéndolos como códigos de barras. El lector (persona, no máquina) podría escanearlo en su máquina con un escáner de mano. Se asumió que no era práctico (hasta que se demuestre lo contrario) debido a su incapacidad para escanear a mano a una velocidad uniforme.

La solución terminó siendo que el programa del decodificador inicialmente recolectara suficientes tiempos de transición entre blanco y negro a blanco y negro para descubrir los tiempos medios de barra ancha y de barra estrecha, asigne '1' y '0', respectivamente, a la recopilación datos, y continúe descodificando el flujo entrante mientras se actualizan simultáneamente los tiempos medios de barra ancha y barra angosta para tener en cuenta los cambios en la velocidad de la varita sobre las barras.

La misma técnica se aplicó para descifrar el Morse enviado desde el aire, con un simple circuito alto y bajo con la salida de audio del receptor, alimentado a un algoritmo similar.

Su decodificador de hardware debería ser igualmente adaptable.

Como nota aparte, surgió un problema interesante cuando las palabras 'T5' o '6E' aparecían con frecuencia en el texto decodificado. Los operadores desarrollaron naturalmente hábitos de uso de claves en palabras comunes, y escribirían (y entenderían) f / ex, la palabra 'the',

Dah - dit dit dit dit - dit

como

Dahdididididit ,

el algoritmo de decodificación, que da lo mejor de sí con un espaciado de elementos ligeramente desigual y una cadena de resultados que no coincide con ningún carácter Morse conocido, obtuvo uno de los dígrafos anteriores.

Puede encontrar algunos de los artículos en los primeros números de Byte Magazine en la biblioteca.

    
respondido por el JRobert
2

La decodificación del Morse enviado manualmente usando una clave sin usar una MCU requerirá tanto hardware que no es realmente factible. ¿Cómo manejará las diferentes velocidades y los tiempos imprecisos de puntos y guiones? ¿Cómo implementarás la tabla de búsqueda? ¿Qué pasa con el dispositivo de salida?

    
respondido por el Leon Heller
1

Un problema importante con la decodificación del Código Morse en hardware, en comparación con, por ejemplo, Los datos de código de barras o banda magnética, es que estos últimos están diseñados para ser legibles por máquina y, por lo tanto, tienen "preámbulos" con un patrón conocido de pulsos largos y cortos, lo que permite al hardware determinar qué constituye un pulso "largo" o "corto" antes de cualquier dato real. llega Por ejemplo, los datos de banda magnética de 4 bits se escriben utilizando pulsos largos y cortos, y tiene IIRC un mínimo de diez pulsos cortos al comienzo; Además, nunca habrá más de nueve pulsos largos seguidos. Por lo tanto, si el lector ve un pulso que es menos del 75% de la longitud del anterior, es corto; si es más del 150% de la longitud del anterior, es largo. Si es 75% -150% la longitud del anterior, se debe categorizar de la misma manera que el anterior, a menos que los nueve pulsos anteriores se hayan categorizado por tanto tiempo, en cuyo caso se debe considerar corto y parcialmente Los datos codificados deben considerarse erróneos.

    
respondido por el supercat
1

¿Hay un buen circuito que pueda detectar cuándo una señal se pone alta durante un cierto tiempo?

Quizás el circuito más simple para distinguir los pulsos "largos" frente a los "cortos" utiliza un IC de temporizador Camenzind 555 en algo así como un circuito de "detección de pulso faltante". a b c d

En principio, si tuviera que decodificar el código Morse sin una MCU, Podría comenzar con un circuito temporizador 555 que pulsó en pulsos largos "dah" (pero no en pulsos cortos "dit") otro circuito temporizador 555 que pulsa en pulsos largos entre letras (pero no en pulsos cortos entre los puntos y puntos dentro de una letra), y circuitos similares para rotura de letras y palabras. Tales circuitos son bastante fáciles de sintonizar con un potenciómetro, pero un poco difícil de adaptar automáticamente al cambio de velocidad de transmisión.

Como han señalado otros, se necesitaría mucho menos hardware para decodificar el código Morse en algo como un Arduino. e

Se necesitaría incluso menos hardware que eso para transmitir un mensaje de código Morse. (Quizás con un 555 utilizado como temporizador de velocidad de puntos y algunos contadores CD4017 utilizados como secuenciador. Luego, un diodo en cada pin para períodos de tiempo de puntos o guiones; nada unido a los pines correspondientes a los tiempos espaciales. Estos chips pueden funcionar con una batería de 9V sin siquiera un regulador de voltaje).

    
respondido por el davidcary

Lea otras preguntas en las etiquetas