I mentioned in an earlier post it was my intention that - "eventually - I'll be moving to just an AVR microcontroller on a board with the DDS modules".
Well - it is accomplished...
You see above the new board on the bench, with the familiar tuning knob and display, running my "double DDS RF Generator" code for my multi-band BITX rig.
I've called the new board the R(F)duino for obvious (but still inexcusable) reasons. It uses a simple single-sided PCB...
on which is hosted an ATmega328P and the two DDS modules.
I have set up the system so that it can run the Arduino bootloader and appear to the Arduino IDE as a UNO board, via a serial interface. I've also added an ISP interface, so that more advanced users can program directly from (e.g.) Atmel Studio, via an AVRISP II or a JTAGICE 3 (or any other AVR ISP programmer).
There's also an explicit I2C interface. At the moment, this drives only the LCD display - but I have plans for hanging more sub-systems off the I2C bus.
The programming and I2C interfaces and other features are seen in the following image...
There's lots of I/O, which can be re-configured by programming, but is arranged with my own tuning and control scheme in mind. It also supports some of my ideas for CW, including an iambic keyer.
The system was set up in "Arduino" mode, through the serial port...
I use a USB to serial adapter from 4tronix which has the very considerable advantage that it has been modified for use with "Arduino clones" by the addition of a 0.1uF capacitor from the "modem's" DTR line to the RST pin. Plug 'n play!
All this is going to be (or, at least, lead to) an open-source project, with code and hardware designs available for download (and - perhaps - with hardware available for purchase). It will take a little time so - please - be patient!
For the moment, I'm back to some more experiments operating voice and CW on my new rig with its even newer Digital RF Generation scheme running on the "R(F)duino".
Having a microcontroller sit there controlling the DDS modules that make all the RF signals required for my BITX-inspired SSB rig tempts me to do more than just SSB - so today I tried some CW with great success...
I added straight key and iambic paddle inputs to the controlling Arduino and modified the code to read them (actually using software resources I'd developed on the "Occam's Microcontroller" project). When any key is pressed, the system generates a 600Hz signal for the CW and generates a logic output to key the transmitter (regular readers may recall I added a TTL input to my power switching scheme for just this purpose).
The key signal is controlled by a "QSK" timer, triggered by the operation of any of the morse key inputs.
The 600Hz tone is generated using the Arduino's internal "tone( )" function - which makes an ugly 5V square wave - so I needed to build a filter to make it a closer approximation of a sinewave.
I first tried some simple passive filters - but these weren't up to the job - so I ended up making a second order filter with a couple of integrators and setting the whole thing up as a bandpass with a centre frerquency of 600 Hz and a Q of about 10.
You can see (most of) the experimental set up smeared over the bench...
I ran the code on an Arduino MEGA for testing - the majority of the rig is still under the control of the ATMEGA328 in the RF Generator, with the MEGA generating the CW signals (as well as controlling "imaginary" DDS modules and interfacing to a real LCD and rotary encoder, visible in the photo above). It will eventually all run on the single chip (when I get round to re-programming it).
The low-pass filter that files the rough edges off the square wave is seen in close-up below...
It is implemented on a quad op-amp from the junk box (a TL074) and I'll be pleased to publish the schematic when I finalize it on something more permanent than the solderless breadboard.
Even though the system was in a terrible mess all over the bench, I couldn't resist having a shout - you know how it is!
I sat on 40m for a few minutes and couldn't understand why Win, dj2od, wouldn't come back to my answers to his CQ. Then it dawned on me - my rig was in LSB mode (as befits SSB voice on 40m). [On reflection, I see that this is immaterial - the far end wouldn't know / care if I was operating in upper or lower sideband]. I switched to 20m (and USB) and answered a CQ from George, kz1h.
He came straight back and gave my 4 Watts a 579 from near Boston (!!!) but he also told me that there was RF feeding back into my keying, such that I was sending a "carrier" as well as my CW. He could copy the CW well enough - but obviously it was no fun on the receiving end, so we said our goodbyes.
After the QSO, I looked at the meter on my Made From Junk "Deluxe" Versa Tuner and, sure enough, there was indicated power being radiated all the time.
A capacitor on the straight key input soon sorted that and I was back in action...
I answered Lars' CQ from his station oh6kd, near Vaasa. He gave me 599(!) and said "v nice sigs" before I'd even told him the rig was H/B (much less in a completely jury-rigged, experimental lash-up state).
I am delighted with the performance of this system which is (I argue) made all-the-more versatile by the presence of micro-control. All I need to do now is add a little more flexibility to the code (with an explicit CW mode), add in some niceties like sidetone, put all the code in the one little ATmega processor and neaten up the whole shebang - at least to the point where I'm not dogged by unwanted RF coupling!
Engineer, who grew up in the age when hobbyists used a soldering iron (rather than a mouse) to mess with computers. Came late in life to amateur radio, where he operates the station m0xpd, conducts pointless experiments, and plays with words and ideas.