Future ideas & final thoughts
It's been an interesting project which has got me back into homebrew and QRP. The final result is probably not any cheaper than if I had bought one of the ready made DDS devices or kits available. This one looks like a winner from N3ZI. The big thing for me was the learning experience and the fact that I wanted to do my own thing with the ability to modify the hardware and software however I like.
With memories of years ago when building transmitters with conventional VFOs, struggling with stability issues and chirpy CW signals etc the DDS is a very nice change. That said, it does somewhat run against my more minimalist tendencies. I hate to think how many total transistors are in the AD9851 and the ATmega328 compared to a simple conventional VFO with a couple of transitors and a variable capacitor for tuning. Despite my earlier struggles, that can work perfectly well if it's built properly. Of course, there's room for both approaches.
My main use for the DDS so far has been to drive a simple QRP CW transmitter on 80 meters. This is basically the RF stages of Wes Hayward's W7ZOI "Universal QRP Transmitter" as described (pdf) in April 2006 issue of QST. I modified the crystal oscillator stage to act like a buffer rather than an oscillator. It's built very roughly using "ugly" or "Manhatten" style construction on a PC board. I want to rebuild that to be in a similar box to the DDS. An obvious next step would be another little box with a receiver. I'll probably start with a simple NE602 type direct conversion receiver. That will require some software enhancement in the DDS to provide the required offset between transmit and receive and provide for RIT (receiver incremental tuning).
There is a more sophisticated beacon mode called WSPR. WSPR is usually generated by software driving a computer sound card and then transmitted using an SSB transmitter. I haven't studied it in detail but, as I understand it, the result is very slow FSK similar to QRSS but with four frequencies which convey a digital error correcting code. That sounds like it should be possible with the DDS. The AD9851 output is phase continous when it changes frequency as required by WSPR. I don't think I'll have the time to do this any time soon but it's an interesting possibility.
If you have an application that requires more I/O ports, then take a look at this project. It uses a shift register chip so that the LCD can be driven with serial rather than parallel data. The author describes a clever technique which gets it down to only two lines rather than the usual six. Rather than use the two line method, you could use the three line method but share the data and clock lines with the DDS-60. The software raises the appropriate enable / load line to determine which device it wants to talk to. I hate to admit it but I implemented this first and it worked well. That was before I realized that the analog ports on the Arduino could be used as regular digital ports . The code library that the project publishes is almost a drop-in replacement for the standard LiquidCrystal library. As an example, with this technique there would be enough ports to implement a typical 4 x 3 keypad matrix.
That's about it. Leave a comment below with the "Add new comment" link or email me at tetranz (at) gmail.com if you have a question or anything to add.