vrijdag 24 april 2015

NT7S's Si5351a VCO hooked up to the local oscillator of a DVB-T dongle.

Hello and welcome to my second post on this fresh blog.

A few days ago I've posted this picture on twitter (@mvdswaluw) and managed to get a few retweets and favorites. Clearly people like what I've done, so I would now like to describe it with a few more letters than twitter would allow.

What you see here is @NT7S's Si5351a breakout board connected to the local oscillator of one of my DVB-T dongles. The DVB-T dongle with its 28.8 MHz crystal oscillator is normally not so frequency-stable because of the temperature drift of the frequency of the crystal. Inspired by this post by Simon Schrödle I've made the same setup (with a less expensive frequency generator). On the edge of the DVB-T dongle I've soldered an SMA edge connector by scraping a bit of the soldering mask for the ground connection.
Between the center pin and the ground is an 82 Ohm 0805 SMD resistor. Then the signal goes trough a 10nF capacitor to the place where the signal goes into the R820T mixer. For good measure I've removed both loading capacitors of the original crystal. With a sketch from https://github.com/etherkit/Si5351Arduino I generate the needed 28.8 MHz to the mixer. The mixer then feeds this signal to the RTL2832 chip that needs this signal to.

The 28.8 MHz from the breakout board is generated with a 25 MHz TCXO, so there is no temperature drift with this setup anymore. Also the 28.8 MHz programmed on in the sketch is dead on frequency, even so that I can receive stations in the 23cm band without having to tune the ppm offset in GQRX. With 0 ppm offset I've received a local 23cm repeater exactly on-channel.

The Si5351a can output different drive levels. With 8mA drive level you get about 3.3Volts on the R820T-chip, same as with a TCXO soldered directly to the DVB-T board as I've seen in other mods. By lowering the drive level to 2mA you get about 800mV, and the spurious signals that you see in your spectrum (every 28.8 MHz, e.g. 45x1296 MHz) will also be lower.

Another nice thing you can do is de-tune the oscillator a bit. In the picture below I alternate the oscillator between 28.800 and 28.801 MHz. If you do this you can shift all your signals that you receive on your antenna, but most of the spurious coming from the DVB-T dongle will stay in place. This way you can tune around any spurious signals that you get from the RTL2832 chip or the USB-connection. In my example case I would have been able to de-tune the oscillator to bypass large the spurious signal on 432MHz. Luckily the RTL-2832 chip operates just fine when the oscillator is de-tuned a bit as Simon already mentioned. Can you see al the signals shifting?

To do:
- Make graphs of the spurious level with normal and shifted oscillator.
- Make a proper low pass filter between oscillator and DVB-T dongle to see if I can reduce noise (the signal into the mixer is not a clean sine wave, as the Si5351a outputs a square wave).
- Make a script to use or alter rtl_power to make frequency plots with spurious-bypass option.

Any comments? 

4 opmerkingen:

  1. You may want to use a bandpass filter.

    The link below has a design and components listed for 28 MHz.


    1. Thank you Kevin,
      I only have harmonics of my local oscillator frequency to deal with, so I will use a simple(r) low pass filter and not a bandpass filter.

  2. In your work with the Si53531a were you able to get it to go to 200Mhz. I see a lot of work with it but always seem to be limited to 160Mhz. I don't know if it's just the fact they haven't figured out the register values to do it or what.

  3. Michael,
    You could ask NT7S this question. He has way more in depth detail regarding the Si5351a. You could also use a bandpass filter and let the harmonic frequencies get trough. The output of the Si5351a is a square-wave, so lots of odd harmonics available.