I've been messing with the modulator end of the RDS coder. This is what I came up with in the middle of last night:
RDS Proto Latest.jpg
I'm running the LM358 from a dual supply (+/- 9V), but I've seen an easy way of adding some bias resistors so that it can run on the 12V supply or even the 5V supply.
The balanced diode-switching modulator is well-known in amateur radio - so I thought that I'd try it for the 57kHz modulator here. The results are a really robust RDS signal, with no nasty sidebands. I used 220µH inductors because I have a lot of them, and with 33n and 2n2 in parallel, it's really close to 57 kHz. It's worth selecting the capacitors (and checking the accuracy of the inductor) to make each tuned circuit resonate exactly on 57 kHz. I used the LM358 because they work rail-to-rail, have reasonably low noise and distortion, and because I have a whole lot of them! You could use almost any low noise dual op-amp (don't use a 4558, 748, or any other ancient part though).
Incidentally, there are a couple of bugs in the .hex for this project. I've been disassembling the code and I think that I know what's wrong. The bug causes momentary losses of the RDS data, leading to a blinking RDS indicator on some radios (my Sony portable ignores the problem, but my Technics tuner falls back to showing the frequency now and then). When I've cracked the hex issue, I'll put an improved version up on here.
The two-chip PLL allows synchronisation with stereo coders, but isn't entirely without issues. I still think replacing the clock crystal on the PIC is going to prove to be more robust.
I'm not entirely sure that the diode switching modulator is the ultimate solution, but it's going in the right direction. It's going to increase the cost and complexity of the coder, but will give better results.
You do not have the required permissions to view the files attached to this post.