Skip to content


SigGen1 Is Alive

DSC 0078The SigGen1 board is working! It’s been a while since the initial post about this project so an update is long over due. This article provides an update, also including the schematic and bill of materials. The operation and features are briefly covered. I am currently working on an Arduino library to control the DDS chip and need to implement a serial control protocol.

BodePlot

The First Bode plot:
This picture shows the log amp output feeding the A/D converter. The frequency is sweeping from 100KHz to 1MHz and the circuit is a simple low pass filter made with a resistor and capacitor on a bread board. You can see the gain rolling off (or loss increasing) as the frequency sweeps higher from left to right.

This plot was done by triggering the oscilloscope on the SYNCOUT pin on channel 2 with the log amp output on channel 1. A couple of BNC to clip lead test cables connect to the RC circuit. The frequency sweep is linear so the graph may not look normal to the RF guys.

SigGen1 Features:

Frequency Range: 20Hz to 25MHz
Waveforms: Sine, Square, and Saw-tooth
Log Amp input: Allows gain vs. frequency measurements, Bode plots
Interface: Serial, USB via FTDI serial to USB cable
Customizable: Processor function provided by the open source Arduino compatible Bare Bones Board
License: Creative Commons Attribution 2.5 License
Files: Schematic, BOM

SigGen1 Parts:
The parts for a SigGen1 total up to about $53 not including the PCB or the Arduino board. About $20 of this is in Analog Devices parts which you may be able to get as samples. I have several PCBs and can give a few away. If you plan to be at the Belton Ham Expo or the Austin Maker Fair and would like one of the PCBs let me know with an email. Please don’t ask for a PCB if you don’t plan to put one together and provide feedback.

SigGen1 Functional:
The module can be broken down to four major functional areas. The microcontroller, Direct Digital Synthesizer (DDS), output signal conditioning, and the Log Amp Input section. Each is covered briefly below.

Microcontroller Section:
A set of sockets (U1 and J2) can be installed along the side of the PCB to mate with the Modern Devices Arduino Compatible Bare Bones Board (BBB). The Bare Bones Board provides all the control functions for the SigGen1 module. This board is fully compatible with the Open source Arduino development environment which makes it easy to develop customized applications.

Interfacing to the SigGen1 board leaves several of the digital I/O lines and all but 1 of the Analog inputs available for other applications.

The Bare Bones Board works with RS232 adaptors such as the P3 available from Wulfden or with the FDTI TL-232R-5.0V USB to TTL serial interface cable. This interface works with the free Arduino development tools and PC based control/plotting applications.

Power is supplied from the Bare Bones Board via either the USB interface or by connection to the power supply regulator on that board.

DDS Section:
The DDS section is centered around the AD5932 (U5) from Analog Devices. This part has a 24-bit DDS core and provides frequency sweeping functions as well as Sine, Square, and saw-tooth wave forms. It is driven from a 50MHz oscillator (U2) and can output frequencies as high as 25MHz although it would be better to keep the upper limit near 10MHz to maintain good sine shapes.

The AD5932 is interfaced to the microcontroller via a serial interface and a few I/O lines. Two of these I/O lines are critical for the sweeping function. The CTRL input initiates the sweep and the SYNCOUT signals the end of a sweep. The microcontroller loads up all the sweep control settings then toggles the CNTL line to start the sweep. It then polls the SYNCOUT watching for the end of sweep signal so it can once again toggle the CNTL to repeat the sweep.

Output Signal Conditioning:
Two BNC outputs are provided, a high level and a low level output. The output signals are conditioned using an AD8012 from Analog Devices. This is a very high speed dual Op-Amp. The high level output passes through a 26dB attenuator for the low level output.

The high level output is designed to accommodate passive filter measurements where there will be substantial attenuation. The low level output accommodates measurements on filters or amplifies where there will be gain. The attenuator can be adjusted by changing R13 and R14. The key here is that depending on your application you can select the appropriate signal level output for measurements.

Log Amp Input Section:
The log amp input is via a BNC jack with 90dB of dynamic range with +24mV/dB output. The log amp function is handled by a AD8310 (U3) and it’s output is connected to the Bare Bones Board 10 bit A/D Input 1. An input attenuator is provided and can be adjusted via R1 and R11.

Part Data Sheets:
For reference here are the datasheets for the major components.

Future plans:
This is the first rev of the SigGen design. Plans for the next version include placement of connectors so that either the “Official Arduino“, the Bare Bones Board, or even the Arduino Compatible ATMega168 can be placed on the board.

Look for alternate parts for several of the expensive components such as the 100uF tantalum capacitors. We could just up the lower frequency limits to maybe 10KHz but we initially wanted to cover the audio range. These capacitors are expensive but they are necessary to keep the response flat at the lower frequencies.

Maybe remove one of the BNC jacks and provide a signal level switch under control of the Arduino.

Add a X/Y O-Scope display feature as described in this previous post.

I hope to keep the cost down and provide a useful piece of equipment for Limor’s Open Bench effort.

More Information about DDS:
If your are wondering how a DDS works take a look at these links. The first one is for a project that might be better for the home hobbyist. Jasper makes a DDS using a R2R ladder network directly from a AT2313. This could be done with an Arduino but would be limited to about 300KHz.

Comments please:
What would be a reasonable lower frequency limit? Is there another DDS chip we should look at? We did look at the Analog Devices line and there is a slightly cheaper part but not by enough to make it worth changing. The frequency sweep feature is worth the slight extra cost. Who else makes DDS chips we should consider?

Posted in Uncategorized.


7 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. dfowler says

    syam,

    I did have some trouble getting this chip to work initaly. I dont remember a specific problem other then that I had to adjust the timing in the SPI interface. I started with a build in SPI function and after hours of frustration, I did my own bit-bang version. My version worked and cured all the strange issues I was having before. I recomnd that your next step be to do a bit-bang version of the serial interface. Once things are working, then try going back to the chip SPI.

  2. syam says

    Hey, I’m working with the AD5932 myself but im a bit stumbled about programming the DDS.
    I programmed a start frequency of 100kHz and increments 10times, with each increment of 100kHz steps by external increment control… HOWEVER, the actual output comes out with starting freq. of 300kHz, and steps of 300kHz! I even tried programming to other values, but the output always comes out tripled!! Did you have any problems like this?

    I interface the AD5932 with a PIC16F873 using SPI, clock idle high, data on falling clock;

  3. Eric says

    David, good seeing you and your Dad at Belton!!! On the ride back, we were looking at the kit, and one of my EE friends is interested in seeing me build it.

    I will start working on this kit shortly.

  4. dfowler says

    Pinski,

    Thank you! Send an email to me, dfowler@uchobby.com with your mailing address, we will get a board sent to you.

  5. Pinski says

    dfowler,

    I’d love to have a play with the SigGen1 PCB, I’ve made comment about it here:
    http://thefallenindustries.wordpress.com/2007/10/05/arduino-joy-part-2/

    I think it would definitely be very helpful to have my own personal programmable signal generator, seeing as I’ve just started my 1st Year at University doing Electronic Engineering.

  6. dfowler says

    NT7S,

    Yes I want to make the PCB available for sale. I would even like to make a kit with the necessary parts and posibly even offer an assembled version.

    For sure I would send anyone that links to this site a free SigGen1 PCB and if you want to purchase one let me know by email. I paid about $4/each to have the boards made and would be happy to let the extra boards from this first batch go at cost. I dont think it would cost much to mail one.

    If you or anyone else wants one of these boards email me at dfowler@uCHobby.com. I am thinking that $5/each will work, assuming the postage cost $1 or less. It should be easy to use PayPal for this.

  7. NT7S says

    This looks like a really neat project. I think this could be very useful to ham homebrewers like me. Do you have any plans to offer the PCB for sale in the future? It would be nice to be able to purchase it from someone who can buy bulk quantities instead of having to pay through the nose for a one-off board.