Codey OnlineBiblioteka komponentów Arduino i ESP32 › AD9850 DDS Signal Generator Module
AD9850 DDS Signal Generator Module
Inne

AD9850 DDS Signal Generator Module

Moduł generatora sygnału DDS AD9850 (Direct Digital Synthesis). Generuje fale sinusoidalne i prostokątne w zakresie około 0–40 MHz, korzystając z wbudowanego zegara referencyjnego 125 MHz. Słowo strojenia częstotliwości jest ładowane przez prosty interfejs szeregowy (W_CLK, FQ_UD, DATA, RESET) albo przez 8-bitową magistralę równoległą (D0-D7). Wyjścia sinusoidalne ZOUT1/ZOUT2, wyjścia prostokątne/komparatora QOUT1/QOUT2. Zasilanie 5V.

Protokoły: serial, parallel Szerokość: 27.5 mm

Pinout — AD9850 DDS Signal Generator Module

Pin Sygnał Opis
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.

Wskazówki dotyczące połączeń

Zasil moduł z 5V (VCC) i GND. Sterowanie szeregowe (zalecane, 4 linie): W_CLK (word clock), FQ_UD (frequency update / latch), DATA (dane szeregowe) i RESET, każdą do wolnego cyfrowego pinu mikrokontrolera. Uwaga: na tym module pin aktualizacji jest oznaczony jako FU_UD (= FQ_UD). Alternatywnie można użyć 8-bitowej magistrali równoległej D0-D7 oraz W_CLK/FQ_UD/RESET. Wyjścia: ZOUT1/ZOUT2 dostarczają sinus, QOUT1/QOUT2 wyjście prostokątne/komparatora. Moduł ma własny zegar referencyjny 125 MHz; dla płytek 5V nie są potrzebne zewnętrzne elementy zabezpieczające. W przypadku płytki 3.3V (ESP32/ESP8266) linie sterujące podłącz przez level shifter.

Przykładowy schemat połączeń — AD9850 DDS Signal Generator Module

Z Do Przewód
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

Przykładowy kod Arduino — AD9850 DDS Signal Generator Module

Ten przykład został napisany i sprawdzony kompilacją dla arduino-uno. Codey Online dostosuje go do każdej innej obsługiwanej płytki.

// 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);
}

Podobne komponenty

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

Zbuduj swój projekt Arduino lub ESP32 z pomocą AI

Opisz, co chcesz zbudować. Codey Online napisze kod, narysuje schemat połączeń, skompiluje projekt i wgra go na płytkę bezpośrednio z przeglądarki.

Zacznij za darmo