Interrumpe el temporizador de Arduino (5 / 6 paso)

Paso 5: Ejemplo 3: DAC

En este proyecto utilicé una interrupción de temporizador a la salida una onda senoidal de una frecuencia específica de Arduino. Había soldado un simple 8 bit DAC R2R a los pines digitales 0-7.  Este DAC fue construido de 10k y 20 resistencias de k en un multi-nivelado divisor de tensión.  Voy a publicar más sobre la construcción de la DAC en otro instructivo, para ahora he incluido la foto arriba.
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.

Artículos Relacionados

Temporizador de Arduino

Temporizador de Arduino

Hola a todos, este instructable es todo acerca de cómo crear un cronómetro / temporizador utilizando Arduino.Características de este temporizador: (ver para más detalles de profundidad cómo usar estas características en la sección "Código/Sketch"
Temporizador de Arduino Pinewood Derby

Temporizador de Arduino Pinewood Derby

El verano pasado, SLO MakerSpace decidido organizar un taller de 'Hacer cosas' NOVA para nuestra comunidad local. Una de las actividades del taller es un Pinewood Derby.La buena noticia es que aquellos son siempre muy divertidas. La mala noticia es q
Niños de pantalla temporizador con Arduino

Niños de pantalla temporizador con Arduino

Este dispositivo da un padre realmente robusto medio de controlar la cantidad de tiempo en pantalla (TV / DVD / consola) los niños tienen cada día. Trabaja por tener un interruptor de tiempo inteligente que controla la señal HDMI pasando entre un dis
Temporizador de Arduino 8 A.C. toma de corriente (enchufe) / asesino de vampiro

Temporizador de Arduino 8 A.C. toma de corriente (enchufe) / asesino de vampiro

Un dispositivo que está utilizando constantemente energía, aun cuando no en uso se refiere comúnmente como un dispositivo de "Vampiro", ya que siempre esté chupando energía.Cosas como cargadores de celular, cargadores de iPod/iPad/iPhone, Laptop
Circuito temporizador de Arduino para línea de producción

Circuito temporizador de Arduino para línea de producción

Donde trabajo tenemos Maquinaria semiautomática y un objetivo de velocidad.Así que pensé cómo podría construir un dispositivo de tiempo para que el operador puede mantener una tasa constante de conducir la máquina como lo son también la persona clave
Hacer un temporizador de Arduino

Hacer un temporizador de Arduino

Hola, para mi compadre y yo estamos configurando para que podamos hacer PCB´s. Actualmente estamos haciendo un cuadro de exposición UV (posiblemente otro instrucable) y para esta caja, necesitábamos un contador de tiempo, así que esto es lo que hemos
Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Detector de movimiento PIR con Arduino: Funciona en el modo de consumo de energía más bajo

Este video demuestra rápido y acercamiento fácil de reducir el consumo de energía de ATMEGA 328p basado en placas Arduino en torno al 70-75% mediante sensores PIR o PID para detección de movimiento.Este proyecto introduce a raíz de las cosas-1) inter
Entrada de Arduino Audio

Entrada de Arduino Audio

Enviar sonido a tu Arduino. Este Instructable le mostrará cómo preparar el audio para que puedan ser muestreado y procesada por un Arduino para hacer proyectos sensibles sonidos y efectos de audio. (Este artículo es un compañero de otro Instructable
Crear interrupción interna en Arduino

Crear interrupción interna en Arduino

Interrupción es un proceso por donde podrá realizar ciertas colmillo a través de la función de interrupción sin interrupción de su programa continuo. Por ejemplo, suponga que usted desea dormir 2 horas y después de usted quiere ir a su trabajo. Ahora
Barco piloto automático - basado en Arduino

Barco piloto automático - basado en Arduino

Aquí es cómo construir un piloto automático que puede dirigir un RC barco a waypoints! Es fácil de construir, basado en la popular plataforma Arduino e ideal para aficionados que quieren alguna soldadura práctica! Con este piloto automático, un barco
Arduino láser Tripwire

Arduino láser Tripwire

Hey, los fabricantes de allí, los hackers y simplemente inventores! Este instructable es un divertido y fácil proyecto de Arduino para principiantes (o avanzado) que te muestra cómo hacer... ejem... rodillo de tambor por favor!Un sistema de seguridad
Temporizador para el cargador de baterías para automóviles

Temporizador para el cargador de baterías para automóviles

Este instructable utiliza un Arduino para controlar un cargador de mantenimiento de la batería automotora.El cargador se enciende por 1/2 hora cada tres días.La batería se mantendrá cargada cuando guarde su coche o motocicleta en el largo invierno.Pa
Vocal de Arduino efectos caja

Vocal de Arduino efectos caja

Esta inclinación de la caja de efectos vocales Arduino powered cambia y distorsiona las señales de audio entrantes para producir una amplia variedad de efectos vocales. Este proyecto es mi primer experimento con procesamiento de señal digital en tiem
Super Simple Arduino Powered Roomba Scheduler

Super Simple Arduino Powered Roomba Scheduler

como la mayoría de la gente era escéptico acerca de cómo un robot aspirador, así como un funcionamiento de ensayo pensé que iba a comprar el ahora obsoleto iRobot Roomba 530, que fue fuertemente descontados (están todavía disponibles en Australia, mo