Codey OnlineArduino & ESP32 component library › AD9850 DDS Signal Generator Module
AD9850 DDS Signal Generator Module
Other

AD9850 DDS Signal Generator Module

AD9850 DDS (Direct Digital Synthesis) signal generator module. Generates sine and square waves from roughly 0 to 40 MHz using a 125 MHz onboard reference clock. The frequency tuning word is loaded over a simple serial interface (W_CLK, FQ_UD, DATA, RESET) or an 8-bit parallel bus (D0-D7). Sine outputs ZOUT1/ZOUT2, square/comparator outputs QOUT1/QOUT2. Powered from 5V.

Protocols: serial, parallel Width: 27.5 mm

Pinout — AD9850 DDS Signal Generator Module

Pin Signal Description
ZOUT2 analog Sine-wave DDS analog output from the AD9850 output network.
ZOUT1 analog Sine-wave DDS analog output from the AD9850 output network.
QOUT2 digital Square-wave comparator output derived from the DDS sine signal.
QOUT1 digital Square-wave comparator output derived from the DDS sine signal.
GND ground Ground reference for power, logic control, and output signals.
RESET reset AD9850 reset control input; use to initialize the DDS state.
DATA data Serial programming data input for loading frequency and control words.
FU_UD digital Frequency update strobe; latches loaded tuning word into the DDS.
W_CLK clock Serial word clock input for shifting programming data into the AD9850.
VCC power Module power input, typically 5 V for AD9850 operation.
GND.1 ground Ground reference for power, logic control, and output signals.
D7 data Parallel programming data bus bit 7 input for the AD9850.
D6 data Parallel programming data bus bit 6 input for the AD9850.
D5 data Parallel programming data bus bit 5 input for the AD9850.
D4 data Parallel programming data bus bit 4 input for the AD9850.
D3 data Parallel programming data bus bit 3 input for the AD9850.
D2 data Parallel programming data bus bit 2 input for the AD9850.
D1 data Parallel programming data bus bit 1 input for the AD9850.
D0 data Parallel programming data bus bit 0 input for the AD9850.
VCC.1 power Module power input, typically 5 V for AD9850 operation.

Wiring notes

Voed de module met 5V (VCC) en GND. Seriële besturing (aanbevolen, 4 lijnen): W_CLK (word clock), FQ_UD (frequency update / latch), DATA (seriële data) en RESET, elk naar een vrije digitale pin van de microcontroller. Let op: op deze module is de update-pin als FU_UD gelabeld (= FQ_UD). Alternatief is de 8-bit parallelle bus D0-D7 plus W_CLK/FQ_UD/RESET. Uitgangen: ZOUT1/ZOUT2 leveren de sinus, QOUT1/QOUT2 de blok-/comparatoruitgang. De module heeft een eigen 125 MHz referentieklok aan boord; er zijn geen externe protectiecomponenten nodig voor 5V-boards. Op een 3.3V-board (ESP32/ESP8266) de stuurlijnen via een level shifter aansluiten.

Example wiring diagram — AD9850 DDS Signal Generator Module

From To Wire
board:5V x1:VCC red
board:GND x1:GND black
board:D8 x1:W_CLK green
board:D9 x1:FU_UD blue
board:D10 x1:DATA yellow
board:D11 x1:RESET purple

Example Arduino code — AD9850 DDS Signal Generator Module

This example was written and compile-checked for the arduino-uno. Codey Online adapts it to any other supported board for you.

// Canonical beginner example for the AD9850 DDS Signal Generator Module
// This sketch sends a serial programming word to set an output frequency.
// Wiring used:
//   D8  -> W_CLK
//   D9  -> FU_UD
//   D10 -> DATA
//   D11 -> RESET
//   5V  -> VCC
//   GND -> GND

const int PIN_W_CLK = 8;
const int PIN_FQ_UD = 9;   // Module label is FU_UD
const int PIN_DATA  = 10;
const int PIN_RESET = 11;

const unsigned long CLOCK_HZ = 125000000UL; // AD9850 reference clock on the module

void pulsePin(int pin) {
  digitalWrite(pin, HIGH);
  delayMicroseconds(1);
  digitalWrite(pin, LOW);
  delayMicroseconds(1);
}

void ad9850Reset() {
  digitalWrite(PIN_RESET, HIGH);
  delayMicroseconds(1);
  digitalWrite(PIN_RESET, LOW);
  delayMicroseconds(1);
  pulsePin(PIN_W_CLK);
  pulsePin(PIN_FQ_UD);
}

void ad9850SetFrequency(double frequencyHz) {
  // DDS tuning word = frequency * 2^32 / clock
  uint32_t tuningWord = (uint32_t)((frequencyHz * 4294967296.0) / (double)CLOCK_HZ);

  // Send 32-bit tuning word, LSB first
  for (int i = 0; i < 32; i++) {
    digitalWrite(PIN_DATA, (tuningWord >> i) & 0x01);
    pulsePin(PIN_W_CLK);
  }

  // Control byte: 0x00 for normal 28-bit frequency mode
  for (int i = 0; i < 8; i++) {
    digitalWrite(PIN_DATA, LOW);
    pulsePin(PIN_W_CLK);
  }

  // Latch the new frequency
  pulsePin(PIN_FQ_UD);
}

void setup() {
  pinMode(PIN_W_CLK, OUTPUT);
  pinMode(PIN_FQ_UD, OUTPUT);
  pinMode(PIN_DATA, OUTPUT);
  pinMode(PIN_RESET, OUTPUT);

  digitalWrite(PIN_W_CLK, LOW);
  digitalWrite(PIN_FQ_UD, LOW);
  digitalWrite(PIN_DATA, LOW);
  digitalWrite(PIN_RESET, LOW);

  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  Serial.println(F("AD9850 DDS generator starting..."));
  ad9850Reset();

  // Set a beginner-friendly test frequency
  ad9850SetFrequency(1000000.0); // 1 MHz
  Serial.println(F("Output frequency set to 1 MHz"));
}

void loop() {
  // Nothing to do here for the canonical example.
  delay(1000);
}

Related components

4-Channel Optoisolator Board

4-Channel Optoisolator Board

Adjustable Step-down Module 3-40VDC  1.5-35VDC LM2596

Adjustable Step-down Module 3-40VDC 1.5-35VDC LM2596

Breadboard 400 pin

Breadboard 400 pin

DC 12V adjustable timer delay, time delay relay turn off switch module time relay time switch 0~25sec for smart home, automatic control

DC 12V adjustable timer delay, time delay relay turn off switch module time relay time switch 0~25sec for smart home, automatic control

Build your Arduino or ESP32 project with AI

Describe what you want to build. Codey Online writes the code, draws the wiring diagram, compiles it and flashes your board straight from the browser.

Start for free