MSF Round-Up
Thanks for the replies Hippy and Eclectic. As you say a little knowledge comes in very handy. Unfortunately most of mine is borrowed at present.
If you want to buy a time signal decoding module (rather than rip one out of a clock or build one from scratch) and you live in the UK there are three sources currently available:
- Galleon: A UK company who will give you a free sample if you are a student, or charge an arm and a leg for a single unit if you are not. They do offer quantity discounts
- C-Max: a US manufacturer with no UK distributor so you have to go through the hassle of importing, which puts the price up
- HKW: a German manufacturer that makes modules for each of the world's atomic/radio clocks. They are happy to sell single units and there's no import hassle as they are in the EU. Purchasing is a little bizzare, but prices are reasonable even with the present GBP/Euro rate. Galleon distributes the HKW product
- Maplin used to distribute the HKW product but no longer do so
The modules that I have are the EM2 MSF receiver and the 100mm 60Hz aerial. This module produces a non-inverted signal. I bought two receivers and two aerials for just under 40 Euros including VAT and shipping. The receiver works at 3v to 12v, which is convenient.
Initially when I couldn't get the receiver and code working I thought I had either blown it with static or fried it with the soldering iron (I was careful, but not overly so). However, there's several references to the module on the interweb and nowhere is it described as sensitive.
I have now built a bare-bones circuit round an 08M - the chip, three resistors, a 3.5mm jack, some wires and the MSF receiver. I'm pleased to say that this works perfectly with Hippy's original code. The root cause, so far as I can tell, of my problem is that the 28X project boards have a built in pull-down resistor and the signal from the MSF module needs a pull-up resistor. I may try to invert the signal to see if this will work with the 28X board. I'll have to scrounge some more knowledge on how to do this. Earlier in this thread someone (Hippy?) mentioned using a BC548 transistor and a couple of resistors. If I understood correctly, the suggestion is that the receiver should be connected to the base of the transistor via a 100k resistor; the emitter goes to ground, and the collector connects to an input on the PIC via a 2k7 resistor. Warning: I could be way off here.
If anyone is interested, I have the whole assembly (on a bread board) lying on my desk next to my keyboard and monitor, and maybe two-feet from my PC. The aerial is oriented East-West, at right angles to the signal (I'm pretty much due North of Cumbria). Looking at the sample number, the code seems to decode the signal first time every time. Finally, I don't know if it was mentioned earlier in the thread, but Hippy's code outputs Binary Coded Decimal (BCD), and it took me a few minutes to remember how to translate back into normal decimal - it's been over 25 years since I last came across BCD.