Promo !

Module Générateur de Signaux DDS AD9850

Le prix initial était : 12,49 €.Le prix actuel est : 10,03 €. Hors TVA

Générateur de signaux à synthèse directe AD9850 Module DDS

Disponible sur commande

Domande su questo prodotto? Scrivi a Lana su WhatsApp

🎬 Le produit en vidéo

Description

📡 Module Générateur de Signaux par Synthèse Numérique Directe AD9850 (Module DDS) – Description Complète et Guide d’Utilisation avec Arduino


🔧 Description Générale du Module AD9850 DDS

Le Module AD9850 DDS (Direct Digital Synthesis) est un générateur de signaux sinusoïdaux, carrés et triangulaires à fréquence variable, largement utilisé dans le domaine du hobby, de l’amateur radio et de l’éducation pour générer des signaux de test et de développement.

✅ Caractéristiques Techniques Principales:

  • Puce principale: Analog Devices AD9850
  • Tension d’alimentation: 5V DC
  • Fréquence de sortie: de 0 Hz jusqu’à environ 40 MHz (sinusoïde recommandée jusqu’à 20 MHz pour la pureté du signal)
  • Résolution en fréquence: 32-bit tuning word (fréquence très précise)
  • Interface de contrôle : Série (parallèle disponible mais moins utilisée avec Arduino)
  • Sorties de signal :
    • Sortie sinusoïdale filtrée
    • Sortie d’onde carrée (TTL, jusqu’à 5Vpp)
  • Connecteurs : Connecteur pin standard 2,54 mm
  • Composants intégrés :
    • Oscillateur quartz à 125 MHz
    • Filtre passe-bas pour la sortie sinusoïdale
    • Amplificateur opérationnel pour pilotage direct

⚙️ Pinout du Module AD9850

PIN Description
VCC Alimentation 5V
GND Mass
D7 – D0 Bus de données parallèle (non utilisé en série)
W_CLK Clock d’écriture
FQ_UD Mise à jour de la fréquence (latch)
DATA Donnée sérielle
RESET Réinitialisation du chip
SQ_OUT Sortie d’onde carrée
SIN_OUT Sortie d’onde sinusoïdale filtrée

🧠 Comment fonctionne le DDS (Direct Digital Synthesis) ?

Le principe DDS consiste à générer numériquement une onde sinusoïdale à l’aide d’un accumulateur de phase, d’une mémoire ROM contenant des valeurs de sinusoïde, et d’un convertisseur DAC. Cela permet une variation précise et rapide de la fréquence de sortie avec une excellente stabilité.


🔌 Connexion du module AD9850 à Arduino

✨ Schéma de connexion Arduino UNO:

Arduino Module AD9850
5V VCC
GND GND
D2 RESET
D3 DATA
D4 W_CLK
D5 FQ_UD

🧪 Exemple de Code pour Arduino

Vous pouvez contrôler facilement le module AD9850 avec une bibliothèque dédiée ou directement via le code. Voici un exemple de base sans bibliothèque, pour générer un signal à 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);
}

📚 Guide Avancé : Ce Que Vous Pouvez Faire

🔄 Changer la Fréquence Dynamiquement

Vous pouvez écrire une fonction qui lit des valeurs d’un potentiomètre ou en série et met à jour la fréquence en temps réel.

🎛️ Modulations Possibles

  • FSK : en changeant rapidement la fréquence
  • PSK : en changeant la phase
  • AM (limitée) : avec circuit externe
  • Sweep : génération de balayage de fréquence pour les tests de réponse en fréquence

📈 Sortie sur Oscilloscope

Connecter SIN_OUT directement à un oscilloscope ou à un amplificateur. Le signal peut être faible pour des charges à haute impédance.


📦 Bibliothèques alternatives (optionnelles)

Pour faciliter l’utilisation, vous pouvez utiliser une bibliothèque Arduino comme :

DDS_AD9850
Installable depuis GitHub : https://github.com/F4GOJ/AD9850

Exemple avec bibliothèque :

#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
}

🛠️ Conseils d’utilisation

  • Filtrez bien l’alimentation pour éviter le bruit
  • Évitez les fréquences trop élevées si vous voulez un signal sinusoïdal « propre »
  • Pour générer des ondes triangulaires, un filtrage supplémentaire est nécessaire (non pris en charge nativement)
  • Utilisez SQ_OUT si vous avez besoin d’un signal TTL précis

🧾 Applications typiques

  • Générateur de test pour amplificateurs
  • Génération de signaux RF pour les amateurs radio
  • Analyse de réponse en fréquence
  • Interface avec mélangeur pour expériences SDR
  • Générateur de signaux pour instruments musicaux

Parfait ! Je vous propose une guide complète pour construire un générateur de signaux AD9850 avec Arduino, intégrant toutes les trois fonctions que vous avez citées :


🎛️ PROJET : Générateur de Signal DDS AD9850 Multifonction

🔹 Fonctionnalités :

  1. Contrôle de fréquence par encodeur rotatif
  2. Affichage sur écran OLED
  3. Contrôle optionnel par Bluetooth / série (smartphone ou PC)

🧰 Composants Nécessaires :

Composant Quantité Notes
Arduino UNO/Nano 1 Le Mega fonctionne aussi
Module AD9850 DDS 1 Fréquence jusqu’à 40 MHz
Encoder rotatif avec bouton 1 Modèle EC11
Afficheur OLED 128×64 I2C (SSD1306) 1 0,96″ recommandé
Module Bluetooth HC-05/HC-06 (optionnel) 1 Pour contrôle à distance
Boutons optionnels 1-2 Pour réinitialisation/épuration
Plaque d’essai ou PCB 1 et câblage

⚙️ Schéma de Connexion

✳️ Connexion AD9850

AD9850 Arduino
VCC 5V
GND GND
W_CLK D4
FQ_UD D5
DATA D3
RESET D2
SIN_OUT Oscilloscope, amplificateur etc

🔄 Encodeur Rotatif

Encodeur Arduino
CLK D6
DT D7
SW (bouton) D8

📺 Afficheur OLED (SSD1306 I2C)

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

📡 Module Bluetooth HC-05 (optionnel)

HC-05 Arduino
VCC 5V
GND GND
TX RX (D0)
RX TX (D1, avec diviseur!)

🧪 Code Arduino (Fonctions de base intégrées)

📦 Bibliothèques requises:

  • U8g2lib pour OLED
  • RotaryEncoder gestion manuelle
  • SoftwareSerial par Bluetooth (si utilisé)

Installez depuis le gestionnaire de bibliothèques :

  • U8g2 by olikraus

✅ Code simplifié :

#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();
}

📡 Contrôle par Bluetooth / Serial Monitor

Ajoutez cette fonction pour recevoir un commande série du type : F2000000 → change la fréquence à 2 MHz

Ajout à 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();
 }
 }
}

🔄 Balayage Automatique (optionnel)

Ajoutez une fonction pour balayer entre deux fréquences :

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

🧾 Extensions Possibles

  • Ajoutez un menu OLED pour choisir forme d’onde (carrée/sinusoidale)
  • Sauvegardez les dernières fréquences dans l’EEPROM
  • Port USB-C avec isolation pour banc d’instruments
  • Application Android Bluetooth pour contrôler la fréquence

✅ Conclusion

Vous avez maintenant une plateforme DDS entièrement contrôlable:

  • Manuellement avec encodeur
  • Graphiquement via afficheur
  • Rémotement via smartphone ou PC

GÉNÉRAUX

MODÈLE

Module AD9850 DDS Générateur de Signal

MATÉRIAUX

pcb + composants

COMPATIBILITÉ

ARDUINO

COMPOSANTS ÉLECTRIQUES

TENSION D’ENTRÉE

3,3 – 5 V

POIDS ET DIMENSIONS

POIDS DU PRODUIT

15g

POIDS DU COLIS

0.55 kg

DIMENSIONS DU PRODUIT

(L x W x H)

4.6 x 2.5 x 2

DIMENSIONS DU COLIS

(L x W x H)

10 x 5 x 5 cm

CONTENU DU PAQUET

CONTENU DU PAQUET

1 x Module

Nous avons les fiches techniques de tous les composants, si elles ne sont pas présentes dans le téléchargement du produit, envoyez-nous un message via le formulaire de contact et nous les publierons sur notre site dès que possible.

Tutoriel : Comment utiliser le générateur de signaux AD9850 DDS

Le module AD9850 DDS est un générateur de signaux à synthèse directe idéal pour les makers qui souhaitent créer et modifier des signaux sinusoïdaux avec précision. Ce composant est particulièrement utile pour les projets de communication radio, de test et de mesure.

Ce qu’il faut

  • Arduino Uno ou compatible
  • Câble USB type A-B
  • Connexions cavalier
  • Logiciel Arduino IDE

Étapes

  1. Connecter le module AD9850 DDS aux broches digitales de l’Arduino (vérifier le datasheet pour les broches spécifiques)
  2. Télécharger et installer la bibliothèque DDS dans le logiciel Arduino IDE
  3. Charger l’exemple de sketch fourni avec la bibliothèque sur l’Arduino
  4. Modifier les paramètres du sketch en fonction de vos besoins (fréquence, amplitude du signal)
  5. Vérifier le fonctionnement du module en surveillant la sortie dans le Serial Monitor de l’Arduino IDE
  6. Si nécessaire, ajuster les paramètres du signal pour optimiser les performances du projet

Exemple de code

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

Mini-projet

Créer un générateur de signal AM avec AD9850 DDS : moduler un signal audio sur une fréquence portante établie par le module DDS

Erreurs courantes

  • Définir la fréquence du signal en dehors de la plage autorisée (vérifier le datasheet)
  • Ne pas charger correctement l’exemple de sketch dans le logiciel Arduino IDE
  • Omettre l’installation de la bibliothèque DDS nécessaire au fonctionnement du module
  • Ne pas vérifier la connexion physique entre AD9850 et Arduino

Accessoires conseillés

  • Module LCD 16×2
  • Amplificateur audio
  • Antenne de réception
  • Régulateur de tension LM317

Questions fréquentes

Quelle est la fréquence minimale et maximale que je peux générer avec AD9850 DDS?
La fréquence varie en fonction du clock fourni (vérifiez le datasheet)

Comment puis-je contrôler le module AD9850 DDS sans utiliser Arduino?
Vous pouvez utiliser un microcontrôleur compatible ou un circuit logique pour envoyer des commandes au module

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “Module Générateur de Signaux DDS AD9850”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *