dac-onde.ino
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);
}
}