Navtex receiver
Navtex, navigational telex, transmitted on 518 kHz is mandatory on commercial craft, but can be useful for leisure craft as well.
While several commercial systems exist, nothing beats the satisfaction of building your own. This construction is in two parts. First is the actual receiver that receives 518kHz and outputs an 1kHz intermediary, suitable for DSP. Second is the DSP and display.
The receiver is a FET cascode, followed by a SA612 mixer. Local oscillator is provided by a AD 98XX DDS. The decision to use DDS was because to synthesize 517kHz ort 519kHz to gte a 1K IF would require a rather odd crystal frequency.
The actual decoder is built around a dsPIC 2011. The 1kHz IF is first passed through a switched capacitor filter for anti-aliasing. The filtered signal is then sent to two digital resonators, tuned to mark and space. The resulting two outputs are run through envelope detectors and then to a simple logic: Mark > Space. The result is a serial stream at 100bps.
The problem with NAVTEX is that it is essentially synchronous. There are no start and stop bits so we need to make an educated guess and start from there. We check for a transition and then sample one half bit-time abter that and then each bit-time. We check for a transition after each sample. If there is a transition just after the sample, then we are possibly late and we will adjust the sample time. If there is a transition later,then we adjust the other way. In essence a software PLL.
What we have now is a stream of bytes that might or might not be correctly aligned. That stream is sent to a second PIC over SPI.
To get correct alignment, we use the fact that NAVTEX will always have four or more bits set in a byte. We will check two bytes at a time starting from offset zero. If >4 bits are set, then we assume that it is valid, if not, we add 1 to the offset and check again. This way we tolerate bit errors.
NAVTEX also incorporate FEC, Forward Error Correction. Each character is sent twice, with three characer spacing. We store those extra characters and if we find an invalid char, then we try the one sent three chars before.
Nominal range of NAVTEX is 200-400 Nm (nautical miles), but here on Åland (N60 E20) I hear all "local" stations, ie Tallinn, Gislövshamar and Vardö (North Norway) excellently. I also hear stations in the UK as well as Netherlands Coastguard on a regular basis. Modolfo radion has also been heard. Antenna is an approx 10m longwire, strung at 40 degrees up in a tree.
Greatest obstacle has been interference. Initially, I could not hear a thing. There was a blanket of static all over the LW band. So I had to power down the entire house and then power up selectively to find the sources of noise. They were all "wall-warts" of various types as well as dimmers. They have now either been replaced or removed.
The receiver is a FET cascode, followed by a SA612 mixer. Local oscillator is provided by a AD 98XX DDS. The decision to use DDS was because to synthesize 517kHz ort 519kHz to gte a 1K IF would require a rather odd crystal frequency.
The actual decoder is built around a dsPIC 2011. The 1kHz IF is first passed through a switched capacitor filter for anti-aliasing. The filtered signal is then sent to two digital resonators, tuned to mark and space. The resulting two outputs are run through envelope detectors and then to a simple logic: Mark > Space. The result is a serial stream at 100bps.
The problem with NAVTEX is that it is essentially synchronous. There are no start and stop bits so we need to make an educated guess and start from there. We check for a transition and then sample one half bit-time abter that and then each bit-time. We check for a transition after each sample. If there is a transition just after the sample, then we are possibly late and we will adjust the sample time. If there is a transition later,then we adjust the other way. In essence a software PLL.
What we have now is a stream of bytes that might or might not be correctly aligned. That stream is sent to a second PIC over SPI.
To get correct alignment, we use the fact that NAVTEX will always have four or more bits set in a byte. We will check two bytes at a time starting from offset zero. If >4 bits are set, then we assume that it is valid, if not, we add 1 to the offset and check again. This way we tolerate bit errors.
NAVTEX also incorporate FEC, Forward Error Correction. Each character is sent twice, with three characer spacing. We store those extra characters and if we find an invalid char, then we try the one sent three chars before.
Nominal range of NAVTEX is 200-400 Nm (nautical miles), but here on Åland (N60 E20) I hear all "local" stations, ie Tallinn, Gislövshamar and Vardö (North Norway) excellently. I also hear stations in the UK as well as Netherlands Coastguard on a regular basis. Modolfo radion has also been heard. Antenna is an approx 10m longwire, strung at 40 degrees up in a tree.
Greatest obstacle has been interference. Initially, I could not hear a thing. There was a blanket of static all over the LW band. So I had to power down the entire house and then power up selectively to find the sources of noise. They were all "wall-warts" of various types as well as dimmers. They have now either been replaced or removed.
Discussion (16 commentaire(s))