dac-onde.ino

Arduino GIGA R1 WiFi · 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 Arduino GIGA R1 WiFi (STM32H747, module radio 1DX : Wi-Fi b/g/n + BLE, antenne u.FL fournie), alimentée par USB-C. 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, plateforme « Arduino Zephyr-based Boards », carte « Arduino Giga R1 » ; montez l'antenne u.FL avant d'utiliser le radio, puis Téléverser.

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