Menu
Model SG1200 Signal Generator 9kHz–1.2GHz The Model SG1200 is a light weight 2U (3.5”) high signal generator with a frequency bandwidth of 9 kHz to 1.2GHz. The signal generator offers a comprehensive modulation capability and offers the convenience of control from the front panel and remote communications using either GPIB or RS-232. Updated: 1/18. This page is intended to be a reference list of basic specifications for electronic test equipment, especially obsolete models. I have been collecting this information for about 25 years, starting with a well thumbed Tucker Electronics catalog, and then adding listings from other catalogs, other web sites, and of course eBay listings. I am not a test equipment dealer and in.
For the simplest Signal Generator, you just solder the AD9833 module onto the back of the Arduino Nano. No PCB is needed.
The AD9833 module I chose is similar to this one. I'm not saying that's the best or cheapest supplier but you should buy one that looks like that photo (or the photo avove).
The connections between the modules are:
- grounds connected together
- D2 = FSync
- D3 = Clk
- D4 = Data
- D6 = Vcc of AD9833
The AD9833 is powered from data pin D6 of the Arduino - the Arduino can supply sufficient current. I've added a 100n decoupling capacitor because I thought I 'ought' to but I couldn't see any difference - there is already a decoupling capacitor on the AD9833 module board.
If you were being fancy, you might worry about 'analogue ground' vs 'digital ground' but if you were being fancy, you'd be spending more than £4.
The simplest Signal Generator is controlled and powered over a USB lead from a PC. The USB emulates a serial port running at 115200bps (8-bits, no parity). The commands are:
- '0'..'9': shift digit into 'min' frequency array
- 'S': set AD9833 frequency and produce sine wave
- 'T': set frequency and produce triangle wave
- 'Q': set frequency and produce square wave
- 'R': reset the AD9833
- 'M': copy 'min' frequency array into 'max' array
- 'G': sweep from 'min' to 'max' over 1 second
- 'H': sweep from 'min' to 'max' over 5 seconds
- 'I': sweep from 'min' to 'max' over 20 seconds
The Arduino program contains two 6-character arrays 'min' and 'max. If you transmit a digit then it is shifted into the 'min' array. If you send an 'S' then the 'min' array characters are converted into a longint frequency and sent to the AD9833. So sending the string
002500S
will set the AD9833 output to a 2500Hz sine wave. You must always send all 6 digits. The minimum frequency is 000001 and the maximum frequency is 999999.
If you send an 'M' then the 'min' array is copied into the 'max' array. If you send an 'H' then the AD9833 repeatedly outputs a gradually increasing frequency over 5 seconds. It starts at 'min' frequency and 5 seconds later is at 'max' frequency. So
020000M000100SH
sweeps from 100Hz to 20kHz. The frequency change is logarithmic so after 1 second the frequency will be 288Hz, after 2 seconds 833Hz then 2402, 6931 and 20000. The frequency is changed every milliSecond.
You can download the Windows EXE program below which will send the required commands or you could write your own. The Arduino INO file is also here.