Arduino DDS Shield
"The m0xpd Arduino DDS shield provides a convenient interface between an AD9850 DDS module and an Arduino, opening up the benefits of this flexible “Electronics prototyping platform”. The shield makes the DDS Module easy to configure (through software) and to control (through familiar, everyday interfaces such as Keypads, Displays and Rotary Encoders)".
To understand your shield's hardware, take a look at the schematic...
The test program, running on an Arduino with the DDS Shield on top, sets up the system to produce a 1MHz output.
Your shield should draw around 90mA on the 5V supply from the host Arduino...
There's only one adjustment to make; the trim pot on the DDS module might need adjustment to get the shield's quadrature square wave outputs running.
The square wave outputs are on pins 3 & 4 of the "RF Bus" connector, JP1.
Unfortunately, a manufacturing error on the board has mis-placed the labels for the pins - this is how the labels on the corner of the board SHOULD have looked...
With the test sketch above running, connect a 'scope to the sine wave outputs (on the BNC socket, the JP6 header or pins 1 & 2 of the RF Bus connector, JP1) and confirm the presence of the 1MHz sinewave.
Now look at the square wave outputs (pins 3 & 4 on JP1) and adjust the preset until the 250kHz square waves are running.
What if you don't have a 'scope?
Put a short length of wire (10 cm or so) in the relevant pin of JP1 to act as an antenna. Place a receiver, in SSB mode, close to the wire and tune it to 250kHz (plus/minus an audio offset). You'll soon know if there's a square wave there!
Iambic Keyer for Arduino
Those new to Arduino will find this application a little more instructive than the usual "push a button and light an LED" example - and it might be useful in the shack!
All my keyers support both a straight key and a paddle - as I find it easier to switch to the straight key to change speed or to send a long "dah" for zero, etc.
This is how you need to hook up the Arduino...
Arduino code for the keyer is available here.
The m0xpd Arduino VFO system demonstrates use of hardware elements available from Kanga, combining an Arduino (UNO or MEGA), a DDS Module and a display into a system that is both instructive (delving a little deeper into the possibilities of Arduino) and practically useful (you end up with a decent VFO!)...
The schematic is shown below...
An Eagle schematic file is available here. (Note - there is no board design, nor any intention to produce one)
The Arduino code for the VFO is available here.
Enhanced Kanga VFO
To coincide with the appearance of the new Kanga / m0xpd DDS Shield, I've put together a second VFO system.
This system is much more advanced than the simpler VFO described above - not just in functionality, but also in hardware...
As well as use of the DDS Shield, the new VFO exploits an I2C interface for the LCD display unit to save on the load on Arduino pins, freeing up some pins to use to support input push-buttons. If you intend to use the display from Kanga UK, you'll find the appropriate software library at this page. If you're using other displays, you must source your own library appropriate to that hardware.
The VFO has three controls; a rotary encoder (with integral push button), used for frequency (and other parameter) inputs and access to the menu system and two push-buttons, used (in normal mode) to change the "speed" of frequency input (the rotary encoder can change frequency in steps of 1, 10, 100 ... 1 MHz) and (in menu mode) to move between the (4) menu categories.
The system supports the amateur bands between 136 kHz and 10m and also offers a continuous "signal generator" mode. There are programmable offsets for each of the five modes (CW, CW(R), AM, LSB and USB) and continuously variable Receive Incremental Tuning (/"Clarifier"). The system can support additive offsets to accommodate an IF stage and has two memories ("VFO A & B"). A hardware input switches between "Receive" and "Transmit" modes.
The system is seen in "Normal" operating mode here...
As you can see, it is made from a stack of Arduino, DDS Shield, Prototyping Shield and an LCD Display (with I2C interface), all of which are available from Kanga UK. Of course, you don't need to use the DDS Shield or the Prototyping board - but it sure makes things simpler! If you're building the VFO into anything more permanent than the experiment described here, you'll certainly want to drop the prototyping shield and mount the rotary encoder, pushbuttons and display into the wall of your enclosure.
In "Normal" operation, the display shows the frequency selected, the mode, the Receive / Transmit status, the RIT offset (above, equal or below the default value for the mode), the VFO selected (A or B) and the band.
In "Menu" operation, the display format changes - here, for example is the display in Menu 0 (RIT)...
where the RIT value is shown as it is continuously varied. Notice that the "Clarifier" is set above the default 600Hz offset - so the offset status indicator has changed form "=" to "+".
The Arduino code for the enhanced VFO is available here and a schematic of the user interface components is shown below...
[A previous version of this schematic showed the rotary encoder's push-button erroneously connected to A0. Apologies to all those (including Dennis, g6ybc) who were inconvenienced by my mistake.]
The VFO is shown above running on an Arduino UNO. It will run on the Arduino MEGA 2560 boards available from Kanga-UK but in this case the display must be connected to the SCK and SDA pins (which are not shared with A4 and A5 on the MEGA).
A further enhancement of the Kanga VFO code has been produced to support the newly available 20*4 backlit LCD...
The code (which will support both the 20*4 and 16*4 display formats) is available here .