Search This Blog

Radio Guy Tees

Radio Guy Tees
Radio Guy T-Shirts

Tuesday, 14 January 2014

Yet more DDSing


Following on from my post yesterday about the BITX40 start:

I've finished the code for the AD9850 DDS based VFO for the transceiver.

This is what's on the bench right now:

There's an LCD display showing the VFO (well 10MHz less the VFO) frequency, plus the step size. A rotary encoder is connected to adjust the frequency and the push switch on the encoder selects the step size from 1KHz, 100Hz, 10Hz and 1Hz:

The output of the DDS on the Spectrum Analyser contains some strange and unexpected peaks at 30, 32 and 40 MHz. I'll probably add a simple low pass filter after the DDS to get rid of them (I thought there was one already on the DDS board?!)

I've included a calibrate routine where you adjust a non-volatile data value to set a 10MHz output frequency to exactly on the button. To do this I first calibrated my PIC based frequency counter from here:

using the GPS disciplined OCXO from here:

So I can be fairly sure the output is on frequency.

The code is here if anyone is interested:

Anyhow, all good though, egh?

1 comment:

  1. Hi,

    look at the AD9850 board and then at the AD9850 data sheet: the output is already terminated on a 200ohm resistor, and the LPF leading to it is designed for 200ohm termination, so you should not connect a low impedance load after the LPF. And this is not all, the LPF is designed for 70MHz passband (i think the board also supports AD9851, wich goes up to 60MHz).

    If you want to use the AD9850 correctly, you need to remove the 100ohm resistor, the two 200ohm resistors and all the LPF and add a 1:1 balun between the two DAC outputs. At the balun output, connect a 40MHz LPF designed for 50ohm, and then you will have a clean usable signal with a linear frequency response.

    I have hacked together a BITX as well with an AD9850 + Arduino and my own code, so far i'm only testing RX, covers 3-30MHz easy but I only made BPF's for 80m and 40m. I might end up "stealing" the calibration thingie from your code, at the moment for calibration I need to upload the Arduino sketch every time.