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.
Discussie (16 opmerking(en))
Rune Broberg 3 jaar geleden
I started building something similar to this two years ago, and picked it up again a few days ago just to see where I had gotten stuck. My design was based on a very similar input stage, but with major differences after the mixer.
I had it working for a while, but looking at it closer now, I can both see and remember that I had issues with the RF input going into oscillation if I tuned the coils to be bang on, unless I biased the AGC voltage very low - or at least lower than I was expecting. What sort of voltages were you seeing on the base of Q1?
AndersG 3 jaar geleden
Jörg Hagedorn 3 jaar geleden
today I found your octave script to generate demo sounds. Many thanks. It is exactly what I need. I am trying to build a Navtex receiver based on a FPGA.
Kind regards
Joerg
AndersG 3 jaar geleden
AndersG 5 jaar geleden
The DSP part and DDS LO (570kb)
AndersG 5 jaar geleden
DSP filtering is really pretty simple. You put the samples in a buffer and multiply with factors you have calculated beforehand.
ZOLTAN MIKLOS 4 jaar geleden
You could gain additional 3dB S/N by using an image cancelling direct receiver. One of the sidebands is cancelled to increase S/N. If you are not cancelling one of the sidebands it will be there as noise.
I have built this receiver https://www.mikrocontroller.net/attachment/284551/Navtex.pdf . The IF is 400 Hz (it is a low IF because this type of demodulator needs low IF). The receiver part is outstanding. Unfortunately I think the demodulator part could have been slightly better, as it is using "pulse counting" demodulator which is not the best for DX. The mixer is a switching type mixer with the 74HC4066 analog switch. It has a much better IP3 than the SA612. Topic about the receiver: https://www.mikrocontroller.net/topic/390428
This guy also built the image cancelling receiver and now he is using it around the world in a sailing trip: https://www.youtube.com/watch?v=SwL_ZQ_iBIM
The receiver is more complex, but the components are not expensive. It depends, if you need those additional 3dB of S/N or not. The FET cascode in your receiver I am sure it is better than the single BC548C in this navtex receiver, that part I will probably add it from your receiver.
I am thinking to use your DSP demodulator for it or adding an XR2211, or adding a hardware matched filter demodulator which is really for DX (In fact I will experiment with all of them): https://people.zeelandnet.nl/wgeeraert/pdf/NAVTEX1.pdf
https://people.zeelandnet.nl/wgeeraert/pdf/NAVTEX2.pdf
https://home.hccnet.nl/w.geeraert/pdf/NAVTEX-cad-c.pdf
https://people.zeelandnet.nl/wgeeraert/pdf/nav-dx.pdf
Best regards,
Zoltan Miklos
AndersG 4 jaar geleden
AndersG 5 jaar geleden
I uploaded the various sources, including MATLAB/Octave sources to create sound files with known contents. The code should be fairly well documented and has links to the various snippets of NAVTEX decoders I used for ideas.
Basically the DSP part consists of two filters. One for mark and one for space. Take mark-space and you have your data. That is fed to sitor() that decodes into bytes. Then each byte is sent to DoNavtex().
Trick is that you have no idea whether this "byte" is actually a byte or the first and second half of two.. So we keep a pointer that we try to align given that a valid navtex byte has to have four or more bytes set.
So. Best advice I can give is to read main.c and navtexparser.c and ask if there is something unclear. I have tried to comment the code extensively.
Jose Maria Vernet Becedas 5 jaar geleden
Private email : jmvernet@vernet.cat
Jose Maria Vernet Becedas 5 jaar geleden
please , a bit of feedback can be useful...
Jose Maria Vernet Becedas 5 jaar geleden
I'm trying to adjust the trf to 504 khz and see if there is enough gain at 490 and 518....
Opinions?
AndersG 5 jaar geleden
Jose Maria Vernet Becedas 5 jaar geleden
Finally the RF frontend is done , not tested yet the Gain control & the 490 Khz Option....
20190926-182851.jpg (1952kb)
20190926-182936.jpg (1681kb)
AndersG 5 jaar geleden
ZOLTAN MIKLOS 6 jaar geleden
I have searched the internet for two days for the Murata CSB517 resonator, but I can't find a source. Nothing at Mouser, Digikey, Farnell, RS, etc. Can you tell me where did you get it?
Thanks,
HA5OZ
AndersG 5 jaar geleden
ZOLTAN MIKLOS 4 jaar geleden
Thank you very much for the ebay suggestion, I have found some IQG400P 517 kHz resonators on ebay.
AndersG 5 jaar geleden
Timo Kuiper 6 jaar geleden
Which items did you use to assemble this machine? What antenna? What screen? And how do you switch through the various "Slots" because for example the Netherlands coastguard sits on slot 'P'.
AndersG 6 jaar geleden
Schematid of ther RF part and digital parts are here. The 1kHz IF is decoded in a DSPIC and the resulting text if fed to another PIC24F for storage and displey. I initially used a DOGM128, but switched to a slightly larger display.
I am able to receice Dutch coastguard messages here as well.
Jose Maria Vernet Becedas 6 jaar geleden
Jesper Henriksen 6 jaar geleden
Jesper
Christian Hirt 6 jaar geleden
yes this schematic is it.
Thank You very much!
Have a nice day
Chris, OE3HBW
AndersG 6 jaar geleden
Christian Hirt 6 jaar geleden
The schematic in the pictures paragraph is very small and it is not possible to read it properly. And yes, at the bottom of the page, there is no "download original" visible that will provide a better size! The tip to try it in full screen doesn't work either. It is a great pity that this very interesting project cannot therefore be pursued further. Please, request for remedy!
AndersG 6 jaar geleden
The second processor is a PIC 24FJ64GA004 and it receives the decoded Navtex data on one SPI channel (pins 36..38). The second SPI is connected to a DOGM240 display and a SRAM, 23LVC512, to be replaced by a 23LVC1024.
Both these CPUs will end up on the same board, where the display and RF are plugged in... When I get the time..
Navtex, Display and storage (586kb)
HaroldP 7 jaar geleden
Jose Maria Vernet Becedas 5 jaar geleden
all the help are welcome
Thanks again both
HaroldP 5 jaar geleden
(follow the 'click here for diagram' link) but I only built the top half of the schematic followed by a 5kHz low-pass active filter. Note that the diagram has a pin-number error on the SA612 -- the positive supply is pin 8 not pin 6. I relied on the Frisnet software to do the bandpass filtering, thereby removing the need for the bottom half of the schematic. Simpler schematic was used as I did not need the AGC control. The IF filter transformers were re-tuned to 518 kHz (I removed internal cap and added for my 680 uH transformers an external 139pF cap). Using an app-based decoder like Frisnet (or an Android equivalent) eliminates the need for the PIC. My programming days are long gone!! Reference IF was 33 MHz crystal oscillator followed by divide by 64. I used a 74HC4060N divider, although at 33MHz it really needs a TTL divide-by-two before it. The 74HC4060N worked but it's on the edge of its frequency spec. If you go the 33Mz crystal oscillator route and can't find a source for it, I have 19 spare ones. I could send you one.
Jose Maria Vernet Becedas 5 jaar geleden
AndersG 5 jaar geleden
Unless I am mistaken did Harold build the same frontend as I did and the schematic is attached.
Jose Maria Vernet Becedas 5 jaar geleden
AndersG 6 jaar geleden
I regularily hear both the Norwegian transmitter close to Murmansk as well as Modolfo radion in the Adriatic. The largest obstacle in my case was getting rid of RFI from wall-warts among other things.
Sadly have I been very busy at work the last months, but the breadboarded receiver runs in my basement so I can weed out the wrinkles in the logging to SRAM.
HaroldP 6 jaar geleden
BertW 7 jaar geleden
Is it also possible to ad the second (local) frequency?
Computer-output would also be nice.
Regards
Bert
Jose Maria Vernet Becedas 5 jaar geleden
AndersG 5 jaar geleden
wolletje 5 jaar geleden
/Henk
Jose Maria Vernet Becedas 5 jaar geleden
Jose Maria Vernet Becedas 5 jaar geleden
AndersG 5 jaar geleden
Kicad for what? The RF-part?
wolletje 5 jaar geleden
Would you pls be so kind as to add the kiCad source as well?
thanks in advance,
/Henk
AndersG 5 jaar geleden
AndersG 5 jaar geleden
The dsPIC sources have been posted here.
I use KiCAD, yes.
I tuned the transformers for max signal whilst the Tallinn transmitter was transmitting.
Kurt Wrona 5 jaar geleden
Navtex, Seefunk Volksempfänger
Jose Maria Vernet Becedas 5 jaar geleden
I Finally try Mouser , these pieces ara not too much easy to find , starting with Kicad , and still testing antennas.... , may be an hula-loop soon ;-)
wolletje 5 jaar geleden
Looking for the pic/dsPIC sources? and I am curious... Did you use kicad to make the schematic?
best regards,
/Henk
HaroldP 5 jaar geleden
AndersG 5 jaar geleden
What you can do nevertheless is to eliminate things that make a noise in your home.
Jose Maria Vernet Becedas 5 jaar geleden
Anders , can you comfirm that the 42IF104-RC are the right transformers , there are a very few providers , during days checking for small source than Alibaba or Alliexpress , but seems that only Mouser or similar ones can source it....
thanks
AndersG 5 jaar geleden
The biggest issue I had here was interference. There were so many things that caused EMI. So to start out, I took the RF part to our cottage where there are no neighbours and there I got a nice clean signal that I recorded and used for analysis.
Later did I listen with a shortwave receiver I borrowed and simply powered off the entire house and powered on sequentially until I found the sources. The worst offenders were "wall warts" powering stuff. Two were extremely noisy, even if CE-marked. Replaced those with proper PSUs and stuff became a lot more quiet.
Another offender was the lawn mower robot, but I put that one on timer and besides, we do not mowe the grass in the winter.
Jose Maria Vernet Becedas 5 jaar geleden
I'll check this when assembled , still wating the main RF components ... , and testing some small portable mini whip antennas with SDR.
I hope add some comments soon...
AndersG 5 jaar geleden
I never implemented band switching as I never had any interest in the alternative NAVTEX channel. It is used for local language broadcasts and to the best of my knowledge no stations up here send any
If VBAND is positive, the diode is off and the trimmer has no effect. If VBAND is negative then the dide conducts and puts the trimmer in parallell.
Jose Maria Vernet Becedas 5 jaar geleden
Only a few comments ,
-About AGC on Q1 , normally the gate is at 0V , how are controlling the gate , and how are generating the control ? , may be measuring the IF level ?
About the second band , we need to change the LO to the SA612 to 490 Khz, and where must be connected the Vband ? , I'm not sure about how are you pulling down the first stage ...
thanks
AndersG 5 jaar geleden
AndersG 5 jaar geleden
Jose Maria Vernet Becedas 5 jaar geleden
AndersG 7 jaar geleden
AndersG 7 jaar geleden
It has computer output, the raw ascii data is output over serial.
Adding 490 is something I have considered. It is quite easy to change the LO, question is the tuning of the RF part. I would possibly have to add varicaps to pull it down.
BrianG 7 jaar geleden
http://www.Brian-Gregory.me.uk/hardware.html
BrianG 7 jaar geleden
Maybe I should finally make a complete schematic of it.
AndersG 7 jaar geleden
AndersG 7 jaar geleden
I am currently working on the storage part with a 64K SPI RAM with battery backup as well as using a DOGXL240 display, ie 4x as large as current DOGM128
The message store is a simple file system where messages (00..99) ars stored as strings with delimiters. Navtex repeats each message several times, so when anew message is received, the system checks if it is already there. If it is, it is deleted and the new copy is inserted.
Mansueto Grech 7 jaar geleden
nice project. Well done.
Like you I like building things myself. Will a kit be available please?
Regards
Mans. 9H1GB
Mansueto Grech 6 jaar geleden
Regards Mans. 9H1GB
Bernd.P 7 jaar geleden
Bernd.P 7 jaar geleden
I have to search on my old pc is still a drawing
ZOLTAN MIKLOS 1 jaar geleden
Bernd.P 7 jaar geleden
of this project
regards
Bernd P.
AndersG 7 jaar geleden
Bernd.P 7 jaar geleden
when can i buy a kit?
or components?
the layout is too small?
regards
Bernd P.
AndersG 7 jaar geleden
AndersG 7 jaar geleden
Changed AD9834 to AD9833. The latter is smaller and needs less supporting components.
first last 6 jaar geleden
PerN 6 jaar geleden
Thank you!
BrianG 6 jaar geleden
NickT 7 jaar geleden
Nick
AndersG 7 jaar geleden
NickT 7 jaar geleden
cheers,
Nick
AndersG 7 jaar geleden
AndersG 7 jaar geleden
AndersG 7 jaar geleden