dac-onde.ino

Arduino GIGA R1 · Fichier : dac-onde.ino · Langage : Arduino · Usage : Générer une tension continue avec le DAC 12 bits

Deux DAC 12 bits véritables : la GIGA sort une tension analogique propre, pas un PWM filtré. La rampe se vérifie au multimètre, la sinusoïde fait un générateur de signal d'appoint.

Matériel requis

Une carte Arduino Giga R1 (STM32H747 double cœur M7 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentée par USB-C ou 5-24 V. Un multimètre (ou oscilloscope) sur A0 ; amplificateur opérationnel si besoin de puissance.

Branchement

Sonde sur A0 et GND. Le DAC peut fournir ~3 mA : suffisant pour un ADC externe ou un filtre, pas pour un haut-parleur.

Fonctionnement

analogWrite sur une broche DAC écrit directement le convertisseur (pas de timer) ; la résolution 12 bits donne des pas de 0,8 mV. La sinusoïde à 100 points est un échantillonneur maison. Dans l'Arduino IDE, installez la plateforme « Arduino Zephyr-based Boards » (ou Mbed), choisissez « Arduino Giga R1 », puis Téléverser. Logique 3,3 V.

Pour aller plus loin

Générateur de balayage de fréquence (chirp), ou commande d'un module RF par tension de biais.

dac-onde.ino

// DAC0 (A0) : rampe en escaliers de 0 a 3,3 V — a verifier au multimetre.
// La GIGA a 2 DAC 12 bits reels (A0, A1), rares en Arduino.
const int DAC = A0;

void setup() {
  analogWriteResolution(12);
  Serial.begin(115200);
}

void loop() {
  for (int pas = 0; pas <= 4095; pas += 256) {
    analogWrite(DAC, pas);
    float v = pas * 3.3f / 4095.0f;
    Serial.printf("code %4d -> %.3f V attendus\n", pas, v);
    delay(250);
  }
  // Petite sinusoide 10 Hz sur 100 points (sortie audio bas de gamme)
  for (int t = 0; t < 100; t++) {
    float e = 2048 + 2000 * sinf(t * 2 * PI / 100);
    analogWrite(DAC, (int)e);
    delay(5);
  }
}

← Retour à la fiche