A Morse decoder leaps into the fray

The Development Journey, Part II

Portable transceiver—check! Interactive screen—check! Everything was looking good so far. Our Arduino-based HF transceiver was into development.

It was clear to me that the ham radio community needed a rig that would work under dire conditions, reliable Morse decoding and encoding, and that the Arduino could be a very good platform to develop an HF amateur radio unit that would work without repeaters. Our next experiments were focused on developing a reliable Morse decoding and encoding approach. They might sorely need that in an emergency. 

The very ethos of amateur radio is saving lives and getting help to distressed areas. Operators are looking for amateur radio that works when SHTF. Encoding is pretty easy; get your code tables set up straight and your digital timer right. You are encoding text from the keyboard into Morse code. Decoding is another story entirely.

First, we started off simply using the decoder with key input. No issues with audio yet. We developed an algorithm that measured five different key values for human-generated code. Result: it decoded my poor keying, touching wires together. Worked pretty well. Next, we needed it to work with audio input.

We studied all of the available information on the internet, which is pretty extensive, about how to do this. Or I should say, how everyone else has attempted to do this.  We saw the common circuitry, saw the minor differences and studied the chip manufacturers’ detailed specification sheets.

Just another Morse decoder, or the best?

 Ergo we built it, as shown, essentially like everyone else. We connected it to the audio output of our IC-7300 transceiver and tuned in a few stations.  Our decoder, using audio output, could not decode anything! Nada. 

Gee, back to the drawing board! There I was: “Okay, I know that the digital decoder works, so the ‘front end,’ the part that converts audio to digital to feed into the decoder, must not be working right.”

After a lot more study, it became clear, oh, so very clear: you could “tune” the circuit to reduce errors from noise, but then it would not work for fast code. If you tuned it for fast code, it would not work if there was any noise on the band. And, at no tuning, would it work with high noise!  Are you kidding me? We are going after trusty Morse decoding and encoding, nothing less.

Certainly the specs said “high noise immunity.” The chip, you have to realize, was developed for telephones, where it needed only to recognize a touch event, regardless of timing. Now in a transceiver we’re bringing the chip into a precisely gauged context, with noise. Different story. It has to see when the key is up or down, get the timing right and detect the precise rate of a tone in a very narrow band, nothing like its application in a telephone.

Can we solve this mystery?

Everyone uses this chip, as far as I can tell. I was able to adjust the circuitry to make it work when the band was very clear. Mistakes still cropped up, of course, but at least it worked, sort of. Look, in my book the decoding was not good enough for a legitimate product.

With those thoughts in mind, I attempted things no one else had that I know of, such as increasing the frequency it was looking for to help it with faster code. The photo above shows the final analog signal processor portion on the breadboard, which went through many revisions until we got it working the way we wanted.

Customers tell me that competitors give them a Morse code decoder that works only if the band noise is uncommonly low. Doesn’t happen often, and I was not willing to market that as a working product. It’s not my definition of “functional.”

Consequently, I spent a month on this and began to believe it was a hopeless puzzle for producing a low-cost Arduino-based ham radio. Sure, you could solve the problem with lots of fancy circuitry and programming, throw more dinero at it. One day, though, an idea popped into my mind, and I tried it. It was a special form of a digital filter, running on the Arduino before the signal gets to the actual decoder software. In it went.

Breakthrough to accurate Morse decoding!

The shocking thing was it worked the first time. I could not believe my eyes. My Morse code translator was alive! So I checked it with my logic analyzer. In fact, for several  months, every time I saw something decoded that I did not understand, I got out the logic analyzer to check because I was still incredulous.

To make it work better, moreover, I adjusted the analog circuitry to make it ultra-sensitive to noise, and consequently the input to the digital filter was actually much worse. It kept working and still the accuracy went up!

This was a major breakthrough. In fact, if there was a single feature of the DMX-40 that I would tout, it would be this: it works with serious band noise, even atrocious band noise! As you can see, the oscilloscope image shows what I call medium-noise decoding in process. The top trace is the CW IN LED, the output of the digital filter. The bottom is the analog signal going into the analog signal processor. The results are truly amazing. And this is only mild noise!

Although we did not fully understand it at the time, clearly we now had a unique advantage over every single other product on the market. We had made it to mid-May 2018. With the full backing of the original team of our eight supporters, this leap made future developments possible.

Leave a comment

Please note, comments must be approved before they are published