RF Signal Generator as Arduino Uno Expansion Board

Saturday , 8, June 2019 Leave a comment

If You need for the RF signal source, proposed RF Signal Generator, made as Arduino Uno expansion board, can help out. The RF Signal Generator shield, designed with Direct Digital Synthesis (DDS) IC, is installed into Arduino Uno board directly, eliminating the very possibility of error when connecting such devices with wires.

Photo 1. RF generator installed into the Arduino Uno board.

The Arduino Uno directly controls the operation of the DDS-generator, and the computer program, that acts as a user interface, controls the Arduino Uno with USB-port. All of the software you need can be downloaded free (see links at the end of this page).

Figure 1. RF generator control with a computer and the output signal of the RF generator on the screen of a USB oscilloscope.

The high-frequency sinusoidal signal generated by the DDS generator is output through a balancing RF-transformer (balun), which ensures matching with a standard 50-ohm load, to the coaxial RF-connector installed on the generator board.

Photo 2. SMA-connector and RF matching transformer on the generator board.

Of course, such a radio signal generator does not have the full range of functionality of a laboratory RF-signal generator. But such a generator has quite acceptable technical characteristics and can often surrogate a laboratory RF signal generator. Not to mention the price, weight and dimensions.

In addition, such an RF generator, complete with a USB oscilloscope and a laptop, is already a mobile measuring complex that will be useful to beginner radio amateurs and electronics developers, as well as students.

Photo 3. RF-generator + USB-oscilloscope + laptop = measuring complex.

Specifications of the RF generator

The table below shows the specifications of the RF generator with explanations. Some of them are explained later in the text in more detail.

Frequency tuning rangefrom 100 kHz to 25 MHz
Recommended frequency tuning rangefrom 150 kHz to 12,5 MHz
Output Level (RL=50 Ohm) 10 dBm / 224 mV (RMS)
Output signal level unevenness depending on its frequency1,2±2 dB
Output Level Adjustmentnot present
Level of the 2nd and 3rd harmonics, less than-55 dB
Self-noise level, less than-80 dB
Amplitude modulationnot present
Frequency keying3present
Phase keying3present

1 – in the recommended frequency range;
2 – below is a graph with the output signal level unevenness depending on its frequency;
3 – digital keying under the control of Arduino Uno.

Fig.2 shows a spectral response when testing the generator at a frequency of 1 MHz.

Fig.2. Levels of 1st, 2nd and 3rd harmonics and generator noise (10 dBm/div).

By this, you can evaluate the levels of the 1st, 2nd and 3rd harmonic components of the output signal, as well as the level of intrinsic noise of the RF generator. It should also be noted that the quality of the generator output signal is determined by the characteristics of the AD9834B DDS-chip, on the basis of which the high-frequency signal generator presented here is built.

Schematic diagram of RF generator

The schematic diagram of presented here the high-frequency sinusoidal signal generator, made as an expansion board for the Arduino Uno controller, can be downloaded in pdf-format from the link at the end of this article.

The composition of the high-frequency generator consists of the following functional units one after another:

  • Frequency Digital Direct Synthesizer based on the AD9834B (D1) chip manufactured by Analog Devices;
  • LC low-pass filter (L2..L5/C11..C13) with a cutoff frequency of 25 MHz;
  • High-frequency differential signal amplifier based on the AD8132ARZ chip manufactured by Analog Devices, from the balanced output of which an amplitude-normalized high-frequency sinusoidal signal is fed through a matching balun RF-transformer to the output coaxial SMA type RF-connector.

The schematic diagram of using the AD9834B (D1) DDS-chip is shown in Fig.3.

Fig.3. DDS-chip AD9834B type in the RF-generator circuit.

The 50 MHz clock signal is fed to the MCLK (8) input from the G1 crystal oscillator. To control the AD9834B DDS-chip, a Serial Peripheral Interface (SPI) of Arduino Uno is used. The other control inputs of AD9834B chip are connected to the free ports of the Arduino Uno controller. These control inputs can be used if necessary to implement any additional functions, such as, for example, frequency and/or phase keying of the output signal. Thus, almost all the functionality of the AD9834B DDS-chip can be realised under the control of the Arduino Uno controller with the appropriate software.

The paraphase output signal from the outputs IOUT (19) and IOUTB (20) of AD9834B chip is then fed through the decoupling capacitors C9 and C10 to the input of the LC low-pass filter, the circuit of which is shown in Fig.4.

Fig.4. LC low-pass filter with a cutoff frequency of 25 MHz.

The cutoff frequency of the low-pass filter shown in Fig.4 is about 25 MHz, and the attenuation at a clock frequency of 50 MHz is at least -40 dB. The frequency response of the low-pass LC filter, made on the elements L2..L5/C11..C13, is shown in Fig.5.

Fig.5. Frequency response of an LC low-pass filter, made on the elements L2..L5/C11..C13.

From the output of the low-pass LC filter, a sinusoidal signal is fed to the input of a high-frequency normalizing amplifier, made on the AD8132ARZ (D2) chip, as shown in Fig.6.

Fig.6. High-frequency normalizing amplifier, made on the AD8132ARZ (D2) chip, and the matching its balanced output with an unbalanced load.

To match the balanced output of D2 high-frequency amplifier with an unbalanced load, connected to XS3 coaxial connector, a balun matching RF transformer is connected between the amplifier and XS3 connector – a balun with an impedance ratio input to output of 4:1 (T1). The output impedance of the RF generator in the entire recommended frequency range is 50 ohms.

The inclusion of a matching transformer introduces a slight unevenness of the output signal level over the frequency tuning range. This unevenness is represented by the diagram in Fig.7.

Fig.7. Unevenness of the output signal level over the frequency tuning range.

As can be seen from the common frequency response of RF generator presented in Fig.7, the steepest slope is observed when approaching the lower edge of the frequency tuning range of the output RF signal. The reason for this is the insufficient inductance of the windings of the matching RF transformer (T1). The unevenness does not exceed ±2 dB in the recommended frequency range.


The software to control the RF Signal Generator shield consists of two parts: the Arduino Uno program and the user interface computer program. Both of them are free and can be freely downloaded from the links below.

To write the software into the Arduino Uno, you need to download the AD9834-ctrl.zip archive file and unzip it, preserving the name of the AD9834-ctrl folder with the program files. Then open the AD9834-ctrl.ino file from this folder in the Arduino IDE and write the program into your Arduino Uno.

The user interface program that runs on the computer is written in Java. Therefore, the user interface program file jDDSin.jar runs on the computer provided that the Java Virtual Machine is installed on the computer. How to do this has been described in detail on sites dedicated to the design and use of programs in Java.

Fig.8 shows the window view of the running user interface program.

Fig.8 The window view of the running user interface program.

When the so programmed Arduino Uno is connected to the computer, the launched then jDDSin program automatically detects the virtual COM-port to which the Arduino Uno is connected, establishes a connection with the Arduino Uno and maintains a periodicaly exchange of information packets with it. Therefore, the jDDSin program does not have a menu for selecting a COM-port and its parameters. It is enough to connect the Arduino Uno and run the jDDSin program. The functionality of the software can be tested only with your Arduino Uno but without RF Signal Generator shield.

As you can see, its very simple to control the frequency of RF Generator shield output signal. Clicking the “+1″/”-1″ button (or the “↑” / “↓” buttons on the keyboard) increases/decreases the signal frequency by 1Hz, 1kHz, or 1MHz, depending on the frequency change step selected on the right Step panel. To quickly enter the desired frequency value, press the space bar on the keyboard and enter the frequency in hertz.

Copyright © Sergii Zadorozhnyi, 2019

See also:

  • Chris Trask, “A Single-Core 4:1 Current Balun of Improved Performance”.


Please give us your valuable comment

Your email address will not be published. Required fields are marked *