dac-onde.ino

Arduino Due · Archivo : dac-onde.ino · Lenguaje : Arduino · Uso : Générer une onde sinusoïdale analogique sur la vraie sortie DAC

A diferencia de los Arduino AVR, la Due tiene dos salidas DAC reales de 12 bits: la senoide sale directa, sin filtro ni PWM. En el osciloscopio se ve una curva limpia centrada en 1,65 V.

Hardware necesario

Un Arduino Due (AT91SAM3X8E, ARM Cortex-M3 a 84 MHz) conectado por USB a su puerto « Programming ». Ojo: lógica de 3,3 V, nunca 5 V en los pines. Osciloscopio (o amplificador + altavoz vía condensador).

Cableado

Sonda en la pin A0 (DAC0) y masa en GND.

Funcionamiento

analogWrite(DAC0, v) manda al DACC de 12 bits (0-3,3 V); la tabla de 64 puntos se reproduce en bucle abierto. En el Arduino IDE, elija « Arduino Due (Programming Port) » y Subir; el monitor serie va a la velocidad fijada en el código.

Para ir más lejos

Una segunda salida en DAC1 (A1) en cuadratura para estéreo, o tabla más grande para más pureza.

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

← Volver a la ficha