¡Oferta!

Módulo Generador de Señales DDS AD9850

El precio original era: 12,49 €.El precio actual es: 10,03 €. Excluido IVA

Generador de señales de síntesis directa AD9850 Módulo DDS

Disponible para reserva

Domande su questo prodotto? Scrivi a Lana su WhatsApp

🎬 El producto en vídeo

Descripción

📡 Módulo Generador de Señales de Síntesis Directa AD9850 (Módulo DDS) – Descripción Completa y Guía de Uso con Arduino


🔧 Descripción General del Módulo AD9850 DDS

El Módulo AD9850 DDS (Direct Digital Synthesis) es un generador de señales sinusoidales, cuadradas y triangulares a frecuencia variable, ampliamente utilizado en el ámbito hobista, radioaficionado y didáctico para generar señales de prueba y desarrollo.

✅ Características Técnicas Principales:

  • Chip principal: Analog Devices AD9850
  • Tensión operativa: 5V DC
  • Frecuencia de salida: de 0 Hz hasta aproximadamente 40 MHz (sinusoide recomendada hasta 20 MHz para pureza de la señal)
  • Resolución en frecuencia: 32-bit tuning word (frecuencia muy precisa)
  • Interfaz de control: Serial (paralelo disponible pero menos usado con Arduino)
  • Salidas de señal:
    • Salida sinusoidal filtrada
    • Salida de onda cuadrada (TTL, hasta 5Vpp)
  • Conectores: Encabezado de pines estándar 2.54 mm
  • Componentes integrados:
    • Oscilador cuarzo de 125 MHz
    • Filtro pasa bajos para la salida sinusoidal
    • Amplificador operacional para control directo

⚙️ Pinout del módulo AD9850

PIN Descripción
VCC Alimentación 5V
GND Tierra
D7 – D0 Bus de datos paralelo (no se usa en serie)
W_CLK Reloj de escritura
FQ_UD Actualiza la frecuencia (latch)
DATA Dato en serie
RESET Reset chip
SQ_OUT Salida de onda cuadrada
SIN_OUT Salida de onda sinusoidal filtrada

🧠 ¿Cómo Funciona el DDS (Síntesis Digital Directa)?

El principio DDS consiste en generar digitalmente una onda sinusoidal mediante un acumulador de fase, una memoria ROM que contiene valores de la sinusoide, y un convertidor DAC. Esto permite una variación precisa y rápida de la frecuencia de salida con una excelente estabilidad.


🔌 Conexión del módulo AD9850 a Arduino

✨ Esquema de Conexión Arduino UNO:

Arduino Módulo AD9850
5V VCC
GND GND
D2 RESET
D3 DATA
D4 W_CLK
D5 FQ_UD

🧪 Ejemplo de Código para Arduino

Puedes controlar el módulo AD9850 fácilmente con una biblioteca dedicada o directamente a través del código. Aquí tienes un ejemplo básico sin biblioteca, para generar una señal a 1 MHz:

#define W_CLK 4 // Pin W_CLK
#define FQ_UD 5 // Pin FQ_UD
#define DATA 3 // Pin DATA
#define RESET 2 // Pin RESET

void setup() {
 pinMode(W_CLK, OUTPUT);
 pinMode(FQ_UD, OUTPUT);
 pinMode(DATA, OUTPUT);
 pinMode(RESET, OUTPUT);

 // Reset iniziale del modulo
 digitalWrite(RESET, LOW);
 digitalWrite(W_CLK, LOW);
 digitalWrite(FQ_UD, LOW);
 digitalWrite(RESET, HIGH);
 digitalWrite(RESET, LOW);

 setFrequency(1000000); // 1 MHz
}

void loop() {
 // Nessuna azione continua necessaria
}

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

void setFrequency(unsigned long frequency) {
 // Costante derivata da 2^32 / 125 MHz (frequenza dell’oscillatore)
 double tuningWord = (frequency * pow(2, 32)) / 125000000.0;
 unsigned long freqWord = (unsigned long)(tuningWord);

 // Invia la word a 32 bit (LSB first)
 for (int i = 0; i < 4; i++) {
 shiftOut(DATA, W_CLK, LSBFIRST, freqWord >> (8 * i));
 }

 shiftOut(DATA, W_CLK, LSBFIRST, 0x00); // Ultimo byte: controllo fase

 // Aggiorna il DDS
 pulse(FQ_UD);
}

📚 Guía Avanzada: ¿Qué Puedes Hacer?

🔄 Cambiar la Frecuencia Dinámicamente

Puedes escribir una función que lea valores de un potenciómetro o serie y actualice la frecuencia en tiempo real.

🎛️ Modulaciones Posibles

  • FSK: cambiando rápidamente la frecuencia
  • PSK: cambiando la fase
  • AM (limitada): con circuitos externos
  • Sweep: generación de barrido de frecuencia para pruebas de respuesta en frecuencia

📈 Salida en Osciloscopio

Conecta SIN_OUT directamente a un osciloscopio o a un amplificador. La señal puede ser débil para cargas de alta impedancia.


📦 Bibliotecas Alternativas (opcional)

Para facilitar el uso, puedes usar una biblioteca Arduino como:

DDS_AD9850
Instalable desde GitHub: https://github.com/F4GOJ/AD9850

Ejemplo con biblioteca:

#include <AD9850SPI.h>

AD9850SPI dds(5, 4, 3); // FQ_UD, W_CLK, DATA

void setup() {
 dds.reset();
 dds.setFrequency(2000000); // 2 MHz
}

void loop() {
 // puoi aggiornare dinamicamente se vuoi
}

🛠️ Consejos de Uso

  • Filtra bien la alimentación para evitar ruido
  • Evita frecuencias muy altas si quieres un señal sinusoidal “limpio”
  • Para generar ondas triangulares se requiere un filtrado adicional (no soportado nativamente)
  • Usa SQ_OUT si necesitas una señal TTL precisa

🧾 Aplicaciones Típicas

  • Generador de prueba para amplificadores
  • Generación de señal RF para radioaficionados
  • Análisis de respuesta en frecuencia
  • Interfaz con mezclador para experimentos SDR
  • Generador de señal para instrumentos musicales

¡Perfecto! Te propongo una guía completa para construir un generador de señales AD9850 con Arduino, que integra todas y tres las funciones que has citado:


🎛️ PROYECTO: Generador de Señal DDS AD9850 Multifunción

🔹 Funcionalidades:

  1. Control de frecuencia mediante codificador rotativo
  2. Visualización en pantalla OLED
  3. Control opcional a través de Bluetooth / serial (teléfono móvil o PC)

🧰 Componentes Necesarios:

Componente Cantidad Notas
Arduino UNO/Nano 1 También Mega funciona
Módulo AD9850 DDS 1 Frecuencia hasta 40 MHz
Encoder rotativo con pulsador 1 Modelo EC11
Display OLED 128×64 I2C (SSD1306) 1 0.96″ recomendado
Módulo Bluetooth HC-05/HC-06 (opcional) 1 Para control remoto
Botones opcionales 1-2 Para reset/sweep
Protoboard o PCB 1 y jumper

⚙️ Esquema de Conexiones

✳️ Conexión AD9850

AD9850 Arduino
VCC 5V
GND GND
W_CLK D4
FQ_UD D5
DATA D3
RESET D2
SIN_OUT Osciloscopio, amplificador, etc.

🔄 Codificador Rotativo

Codificador Arduino
CLK D6
DT D7
SW (botón) D8

📺 Display OLED (SSD1306 I2C)

OLED Arduino
VCC 3.3V o 5V
GND GND
SDA A4
SCL A5

📡 Módulo HC-05 Bluetooth (opcional)

HC-05 Arduino
VCC 5V
GND GND
TX RX (D0)
RX TX (D1, con divisor de tensión!)

🧪 Código Arduino (Funciones básicas integradas)

📦 Bibliotecas requeridas:

  • U8g2lib para OLED
  • RotaryEncoder o control manual
  • SoftwareSerial para Bluetooth (si se usa)

Instala desde Library Manager:

  • U8g2 by olikraus

✅ Código simplificado:

#include <U8g2lib.h>
#include <Wire.h>

#define W_CLK 4
#define FQ_UD 5
#define DATA 3
#define RESET 2

#define ENCODER_CLK 6
#define ENCODER_DT 7
#define ENCODER_SW 8

unsigned long frequency = 1000000; // 1 MHz di default
long step = 1000; // Passo iniziale (1 kHz)

// OLED: U8G2_SSD1306_128X64_NONAME_F_SW_I2C(RST, SCL, SDA)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ A5, /* data=*/ A4, /* reset=*/ U8X8_PIN_NONE);

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

void setFrequency(unsigned long freq) {
 double tuningWord = (freq * pow(2, 32)) / 125000000.0;
 unsigned long freqWord = (unsigned long)(tuningWord);

 for (int i = 0; i < 4; i++) {
 shiftOut(DATA, W_CLK, LSBFIRST, freqWord >> (8 * i));
 }
 shiftOut(DATA, W_CLK, LSBFIRST, 0x00); // Phase = 0
 pulse(FQ_UD);
}

void setup() {
 pinMode(W_CLK, OUTPUT);
 pinMode(FQ_UD, OUTPUT);
 pinMode(DATA, OUTPUT);
 pinMode(RESET, OUTPUT);

 digitalWrite(RESET, LOW);
 digitalWrite(W_CLK, LOW);
 digitalWrite(FQ_UD, LOW);
 digitalWrite(RESET, HIGH);
 digitalWrite(RESET, LOW);

 pinMode(ENCODER_CLK, INPUT);
 pinMode(ENCODER_DT, INPUT);
 pinMode(ENCODER_SW, INPUT_PULLUP);

 u8g2.begin();
 setFrequency(frequency);
 displayFreq();
}

int lastCLK = HIGH;

void loop() {
 int clk = digitalRead(ENCODER_CLK);
 int dt = digitalRead(ENCODER_DT);

 if (clk != lastCLK && clk == LOW) {
 if (dt == HIGH) {
 frequency += step;
 } else {
 frequency = max(frequency - step, step);
 }
 setFrequency(frequency);
 displayFreq();
 }
 lastCLK = clk;

 if (digitalRead(ENCODER_SW) == LOW) {
 step = (step == 1000) ? 100000 : 1000;
 delay(300); // debounce
 }
}

void displayFreq() {
 u8g2.clearBuffer();
 u8g2.setFont(u8g2_font_ncenB08_tr);
 u8g2.setCursor(0, 20);
 u8g2.print("Freq:");
 u8g2.setCursor(0, 40);
 u8g2.setFont(u8g2_font_fub20_tr);
 u8g2.print(frequency / 1000.0, 3);
 u8g2.print(" kHz");
 u8g2.sendBuffer();
}

📡 Control por Bluetooth / Serial Monitor

Agrega esta función para recibir un comando serial del tipo: F2000000 → cambia la frecuencia a 2 MHz

Agregado a loop():

if (Serial.available()) {
 String input = Serial.readStringUntil('n');
 if (input.startsWith("F")) {
 unsigned long newFreq = input.substring(1).toInt();
 if (newFreq > 0 && newFreq < 40000000) {
 frequency = newFreq;
 setFrequency(frequency);
 displayFreq();
 }
 }
}

🔄 Sweep Automático (opcional)

Agrega función para barrido entre dos frecuencias:

void sweep(unsigned long fStart, unsigned long fStop, int delayMs) {
 for (unsigned long f = fStart; f <= fStop; f += step) {
 setFrequency(f);
 displayFreq();
 delay(delayMs);
 }
}

🧾 Expansiones Posibles

  • Agrega un menú OLED para elegir forma de onda (cuadrada/sinusoidal)
  • Guarda últimas frecuencias en EEPROM
  • Puerto USB-C con aislamiento para instrumentos de banco
  • App Android Bluetooth para controlar la frecuencia

✅ Conclusión

Tienes ahora una plataforma DDS completamente controlable:

  • Manualmente con encoder
  • Gráficamente a través de display
  • Remotamente a través de smartphone o PC

GENERALIDADES

MODELO

AD9850 Module DDS Signal Generator

MATERIALES

pcb + componentes

COMPATIBILIDAD

ARDUINO

COMPONENTES ELÉCTRICOS

VOLTAJE DE ENTRADA

3,3 – 5 V

PESO Y DIMENSIONES

PESO DEL PRODUCTO

15g

PESO DEL PAQUETE

0.55 kg

DIMENSIONES DEL PRODUCTO

(L x W x H)

4.6 x 2.5 x 2

DIMENSIONES DEL PAQUETE

(L x W x H)

10 x 5 x 5 cm

CONTENIDO DE LA CÁRTEL

CONTENIDO DE LA CÁRTEL

1 x Módulo

Tenemos disponibles datasheet de todos los componentes, en caso de que no esté presente en la tarjeta de descarga del producto, envíanos un mensaje a través del formulario de contacto y lo publicaremos lo antes posible en nuestro sitio web.

Tutorial: Cómo usar Generador de Señales AD9850 DDS

El módulo AD9850 DDS es un generador de señales de síntesis directa ideal para makers que desean crear y modificar señales sinusoidales con precisión. Este componente es particularmente útil para proyectos de comunicación radio, pruebas y mediciones.

Qué necesitas

  • Arduino Uno o compatible
  • Cable USB tipo A-B
  • Conexiones Jumpers
  • Software Arduino IDE

Pasos

  1. Conectar el módulo AD9850 DDS a los pines digitales del Arduino (verifica en el datasheet para los PIN específicos)
  2. Descargar e instalar la biblioteca DDS en el software Arduino IDE
  3. Cargar el sketch de ejemplo proporcionado con la biblioteca en Arduino
  4. Modificar las configuraciones del sketch según tus necesidades (frecuencia, amplitud de la señal)
  5. Verifica el funcionamiento del módulo monitoreando la salida en el Serial Monitor del Arduino IDE
  6. Si es necesario, ajustar los parámetros de la señal para optimizar el rendimiento del proyecto

Código de ejemplo

// Includere la libreria DDS
#include <DDS.h>

// Definire l'oggetto DDS e collegarlo ai PIN dell'Arduino
DDS dds(10, 9);

void setup() {
 Serial.begin(9600);
}

void loop() {
 // Impostare la frequenza del segnale (verifica sul datasheet per il range)
 dds.setFrequency(1000); 
}

Miniproyecto

Crea un generador de señales AM con AD9850 DDS: modula una señal de audio en una frecuencia portadora establecida por el módulo DDS

Errores comunes

  • Configurar la frecuencia de la señal fuera del rango permitido (verifica en el datasheet)
  • No cargar correctamente el sketch de ejemplo en el software Arduino IDE
  • Omitir la instalación de la biblioteca DDS necesaria para el funcionamiento del módulo
  • No verificar la conexión física entre AD9850 y Arduino

Accesorios recomendados

  • Módulo LCD 16×2
  • Amplificador de audio
  • Antena de recepción
  • Regulador de tensión LM317

Preguntas frecuentes

¿Cuál es la frecuencia mínima y máxima que puedo generar con AD9850 DDS?
La frecuencia varía en función del reloj proporcionado (consulta el datasheet)

¿Cómo puedo controlar el módulo AD9850 DDS sin usar Arduino?
Puedes utilizar un microcontrolador compatible o un circuito lógico para enviar comandos al módulo

Valoraciones

No hay valoraciones aún.

Sé el primero en valorar “Módulo Generador de Señales DDS AD9850”

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *