dac-onde.ino

Arduino Due · Fichier : dac-onde.ino · Langage : Arduino · Usage : Générer une onde sinusoïdale analogique sur la vraie sortie DAC

Contrairement aux Arduino AVR, la Due possède deux vraies sorties DAC 12 bits : la sinusoïde sort directement, sans filtre ni PWM. Sur oscilloscope, on voit une courbe propre centrée sur 1,65 V.

Matériel requis

Une Arduino Due (AT91SAM3X8E, ARM Cortex-M3 84 MHz) reliée par USB à son port « Programming ». Attention : logique 3,3 V, jamais 5 V sur les broches. Oscilloscope (ou amplificateur + HP via condensateur).

Branchement

Sonde sur la broche A0 (DAC0) et masse sur GND.

Fonctionnement

analogWrite(DAC0, v) pilote le convertisseur DACC 12 bits (0-3,3 V) ; la table de 64 points est parcourue en boucle ouverte. Dans l'Arduino IDE, choisissez « Arduino Due (Programming Port) » puis Téléverser ; le moniteur série tourne à la vitesse choisie dans le code.

Pour aller plus loin

Seconde sortie sur DAC1 (A1) en quadrature pour un signal stéréo, ou table plus grande pour un signal plus pur.

dac-onde.ino

// Onde sinus sur DAC0 (broche A0) : la Due a un vrai convertisseur.
const int DAC = DAC0; // broche A0
const int N = 64;     // points de la table

float sinus(int i) {
  return 2048.0 + 2047.0 * sin(2.0 * PI * i / N);
}

void setup() {
  analogWriteResolution(12); // 0..4095 sur la DAC
}

void loop() {
  for (int i = 0; i < N; i++) {
    analogWrite(DAC, (int)sinus(i));
    delayMicroseconds(100); // frequence ~ 1/(64*100us) = 156 Hz
  }
}

← Retour à la fiche