Generatore di segnali a sintesi diretta AD9850 Modulo DDS
€7,87
Disponibile (ordinabile)
| Quantità | Prezzo Unitario |
|---|---|
| 12 - 49 | €7,48 |
| 50 - 99 | €7,32 |
| 100 + | €7,08 |
Product Description
📡 Modulo Generatore di Segnali a Sintesi Diretta AD9850 (Modulo DDS) – Descrizione Completa e Guida all’Uso con Arduino
🔧 Descrizione Generale del Modulo AD9850 DDS
Il Modulo AD9850 DDS (Direct Digital Synthesis) è un generatore di segnali sinusoidali, quadri e triangolari a frequenza variabile, ampiamente utilizzato in ambito hobbistico, radioamatoriale e didattico per generare segnali di test e sviluppo.
✅ Caratteristiche Tecniche Principali:
- Chip principale: Analog Devices AD9850
- Tensione operativa: 5V DC
- Frequenza di uscita: da 0 Hz fino a circa 40 MHz (sinusoide consigliata fino a 20 MHz per purezza del segnale)
- Risoluzione in frequenza: 32-bit tuning word (frequenza molto precisa)
- Interfaccia di controllo: Serial (parallel disponibile ma meno usata con Arduino)
- Segnali di uscita:
- Uscita sinusoidale filtrata
- Uscita onda quadra (TTL, fino a 5Vpp)
- Connettori: Header pin standard 2.54 mm
- Componenti integrati:
- Oscillatore quarzato da 125 MHz
- Filtro passa basso per l’uscita sinusoidale
- Amplificatore operazionale per pilotaggio diretto
⚙️ Pinout del Modulo AD9850
| PIN | Descrizione |
|---|---|
| VCC | Alimentazione 5V |
| GND | Massa |
| D7 – D0 | Bus dati parallelo (non usato in seriale) |
| W_CLK | Clock di scrittura |
| FQ_UD | Aggiorna la frequenza (latch) |
| DATA | Dato seriale |
| RESET | Reset chip |
| SQ_OUT | Uscita onda quadra |
| SIN_OUT | Uscita onda sinusoidale filtrata |
🧠 Come Funziona il DDS (Sintesi Digitale Diretta)?
Il principio DDS consiste nel generare digitalmente un’onda sinusoidale tramite un accumulatore di fase, una memoria ROM contenente valori della sinusoide, e un convertitore DAC. Questo consente una variazione precisa e rapida della frequenza di uscita con un’ottima stabilità.
🔌 Collegamento del Modulo AD9850 ad Arduino
✨ Schema Collegamento Arduino UNO:
| Arduino | Modulo AD9850 |
|---|---|
| 5V | VCC |
| GND | GND |
| D2 | RESET |
| D3 | DATA |
| D4 | W_CLK |
| D5 | FQ_UD |
🧪 Esempio di Codice per Arduino
Puoi controllare il modulo AD9850 facilmente con una libreria dedicata oppure via codice diretto. Ecco un esempio base senza libreria, per generare un segnale 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);
}
📚 Guida Avanzata: Cosa Puoi Fare
🔄 Cambiare la Frequenza Dinamicamente
Puoi scrivere una funzione che legge valori da un potenziometro o seriale e aggiorna la frequenza in tempo reale.
🎛️ Modulazioni Possibili
- FSK: cambiando rapidamente la frequenza
- PSK: cambiando la fase
- AM (limitata): con circuiteria esterna
- Sweep: generazione di sweep di frequenza per test di risposta in frequenza
📈 Uscita su Oscilloscopio
Collega SIN_OUT direttamente a un oscilloscopio o a un amplificatore. Il segnale può essere debole per carichi ad alta impedenza.
📦 Librerie Alternative (opzionale)
Per facilitare l’utilizzo, puoi usare una libreria Arduino come:
DDS_AD9850
Installabile da GitHub: https://github.com/F4GOJ/AD9850
Esempio con libreria:
#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
}
🛠️ Consigli di Uso
- Filtra bene l’alimentazione per evitare rumore
- Evita frequenze troppo alte se vuoi un segnale sinusoidale “pulito”
- Per generare onde triangolari serve ulteriore filtraggio (non supportato nativamente)
- Usa
SQ_OUTse ti serve un segnale TTL preciso
🧾 Applicazioni Tipiche
- Generatore di test per amplificatori
- Generazione segnale RF per radioamatori
- Analisi di risposta in frequenza
- Interfaccia con mixer per esperimenti SDR
- Generatore segnale per strumenti musicali
Ottimo! Ti propongo una guida completa per costruire un generatore di segnali AD9850 con Arduino, che integra tutte e tre le funzioni che hai citato:
🎛️ PROGETTO: Generatore di Segnale DDS AD9850 Multifunzione
🔹 Funzionalità:
- Controllo frequenza tramite encoder rotativo
- Visualizzazione su display OLED
- Controllo opzionale via Bluetooth / seriale (smartphone o PC)
🧰 Componenti Necessari:
| Componente | Quantità | Note |
|---|---|---|
| Arduino UNO/Nano | 1 | Anche Mega funziona |
| Modulo AD9850 DDS | 1 | Frequenza fino a 40 MHz |
| Encoder rotativo con pulsante | 1 | Modello EC11 |
| Display OLED 128×64 I2C (SSD1306) | 1 | 0.96″ consigliato |
| Modulo Bluetooth HC-05/HC-06 (opzionale) | 1 | Per controllo remoto |
| Pulsanti opzionali | 1-2 | Per reset/sweep |
| Breadboard o PCB | 1 | e cavetteria |
⚙️ Schema Collegamenti
✳️ Collegamento AD9850
| AD9850 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| W_CLK | D4 |
| FQ_UD | D5 |
| DATA | D3 |
| RESET | D2 |
| SIN_OUT | Oscilloscopio, amplificatore ecc |
🔄 Encoder Rotativo
| Encoder | Arduino |
|---|---|
| CLK | D6 |
| DT | D7 |
| SW (pulsante) | D8 |
📺 Display OLED (SSD1306 I2C)
| OLED | Arduino |
|---|---|
| VCC | 3.3V o 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
📡 HC-05 Bluetooth (opzionale)
| HC-05 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TX | RX (D0) |
| RX | TX (D1, con partitore!) |
🧪 Codice Arduino (Funzioni base integrate)
📦 Librerie richieste:
U8g2libper OLEDRotaryEncodero gestione manualeSoftwareSerialper Bluetooth (se usato)
Installa da Library Manager:
U8g2 by olikraus
✅ Codice semplificato:
#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();
}
📡 Controllo da Bluetooth / Serial Monitor
Aggiungi questa funzione per ricevere un comando seriale del tipo: F2000000 → cambia frequenza a 2 MHz
Aggiunta 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 Automatico (opzionale)
Aggiungi funzione per sweep tra due frequenze:
void sweep(unsigned long fStart, unsigned long fStop, int delayMs) {
for (unsigned long f = fStart; f <= fStop; f += step) {
setFrequency(f);
displayFreq();
delay(delayMs);
}
}
🧾 Espansioni Possibili
- Aggiungi un menù OLED per scegliere forma d’onda (quadra/sinusoidale)
- Salva ultime frequenze in EEPROM
- Porta USB-C con isolamento per strumenti da banco
- App Android Bluetooth per controllare la frequenza
✅ Conclusione
Hai ora una piattaforma DDS completamente controllabile:
- Manualmente con encoder
- Graficamente via display
- Remotamente via smartphone o PC
GENERALI | MODELLO | AD9850 Module DDS Signal Generator |
MATERIALI | pcb + componenti | |
COMPATIBILITA’ | ARDUINO | |
COMPONENTI ELETTRICI | VOLTAGGIO DI INPUT | 3,3 – 5 V |
PESO E DIMENSIONI | PESO DEL PRODOTTO | 15g |
PESO DEL PACCHETTO | 0.55 kg | |
DIMENSIONI DEL PRODOTTO (L x W x H) | 4.6 x 2.5 x 2 | |
DIMENSIONI DEL PACCHETTO (L x W x H) | 10 x 5 x 5 cm | |
CONTENUTO DELLA CONFEZIONE | CONTENUTO DELLA CONFEZIONE | 1 x Modulo |
Abbiamo disponibili datasheet di tutti i componenti, qualora non fosse presente nella scheda download del prodotto inviaci un messaggio dal modulo contattaci e lo pubblicheremo il prima possibile nel nostro sito.
Add a review
You must be logged in to post a review.


































Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/circuitointegrato
Tutto ok, ottimo venditore. Spedizione rapidissima.
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/circuitointegrato
ok
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/circuitointegrato
tutto assolutamente perfetto! ottimo venditore, velocissimo ed economico
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/domoticland
Tutto Ok! Spedizioni Ultraveloci!!
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/domoticland
ok
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/domoticland
perfetto
Item Reviewed: Generatore di segnali a sintesi diretta AD9850 Modulo DDS
Feedback ricevuto nel nostro negozio eBay http://stores.ebay.it/domoticland
positive