Paso 5: Ejemplo 3: DAC
Conecté la salida de DAC hasta un osciloscopio. Si necesita ayuda para entender como para lectura y uso del osciloscopio salida este tutorial. Me he cargado el código siguiente en el Arduino:
Configurar una interrupción de temporizador incrementos de la variable t en una frecuencia de 40kHz. Una vez que t alcanza 627 restablece a cero (esto ocurre con una frecuencia de 40.000/628 = 63 Hz). Mientras tanto, en el bucle principal del Arduino envía un valor entre 0 (00000000 en binario) y 255 (11111111 en binario) a los pines digitales 0 al 7 (PORTD). Calcula este valor con la siguiente ecuación:
PORTD=byte(127+127*sin(t/100));
Así como incrementos de t de 0 a 627 la función seno se mueve a través de un ciclo completo. El valor enviado a PORTD es una onda senoidal con frecuencia 63Hz y amplitud 127, oscilante alrededor de 127. Cuando esto se envía a través de la escala de resistencia de 8 bits DAC imprime un oscilante señal aproximadamente 2.5V con frecuencia de 63 Hz y una amplitud de 2, 5V.
La frecuencia de la onda senoidal se puede doblar al multiplicar el término (t/100) por 2, cuadruplicado multiplicando por 4 y así sucesivamente...
También tenga en cuenta que si aumentas la frecuencia de la interrupción de temporizador demasiado reduciendo el prescaler o OCR2A la onda senoidal no emite correctamente. Esto es porque la función sin() es computacionalmente costosa, y a frecuencias alta interrupción no tiene suficiente tiempo para ejecutar. Si usted está usando alta frecuencia interrupciones, en lugar de realizar un cálculo durante la rutina de interrupción, considerando almacenar valores en un array y simplemente llamando a estos valores usando algún tipo de índice. Usted puede encontrar un ejemplo de que en mi arduino onda generador por almacenar 20.000 valores del pecado en una matriz, he podido ondas senoidales de salida con una frecuencia de muestreo de 100KHz.