Arduino alta velocidad osciloscopio con interfaz de PC (3 / 7 paso)

Paso 3: Configurar la interrupción para el software activado versión

Ha habido varios excelentes instructables en configuración de captura de datos rápida de arduino.

He desarrollado el siguiente de una variedad de fuentes.

Utilizar la variable prescalar para el control de la frecuencia de la interrupción de muestreo.

Básicamente hemos creado una interrupción que agarra los datos automáticamente a una frecuencia controlable.

Una vez que la interrupción se inicia, los datos se capturan en una rutina de interrupción.

Si disparo está encendido, los datos no se transfieren al búfer hasta que se cumple la condición desencadenante.

La variable adport especifica el puerto analógico. (ADMUX | = adport)

La frecuencia se define utilizando un prescalar. (Registro ADCSRA: bits ADPS2, ADPS1 y ADPS0.)

Estos bits determinan el factor de división entre la frecuencia de reloj del sistema y el reloj de entrada para el ADC.

.

5V de Arduino se utiliza como una referencia de voltaje. (El bit de REFS0)

Tenga en cuenta que el voltaje en mi puerto USB parece conducir mi Arduino en 4.76V.

Si conecto una fuente de alimentación para el Arduino la línea '5V' es en 5.06V

Si usted está buscando precisión, fuente de alimentación externa.

.

Establecer el número de bits utilizados en la captura de puerto analógico. Para la velocidad de 8 bits se leen. La broca ADLAR controla la presentación de la conversión ADC ajuste escribir uno para ADLAR a izquierda. De lo contrario, el valor se ajusta derecho. Esto tiene un efecto inmediato en el registro de datos del ADC.

.

Establecer los bits en ADCSRA para la prescalar de frecuencia. (ADPS0, ADPS1, ADPS2 bits)

.

Establecer la interrupción en varias ocasiones Auto Trigger cuando se lee el puerto analógico. (El bit ADATE y ADIE)

Permitir que el ADC. (El pedacito de ADÉN)

Observe el uso de la función de OSE. Esto y la función de la cbi son muy útiles para el ajuste y bits de registro de datos de claro.

Iniciar la interrupción ADC. (La ADSC bit)

.

Lectura continua del puerto adc 'adport' con una interrupción de la instalación

//
CLI(); deshabilitar interrupciones por lo que podemos cambiar registros sin ser interrumpido

borrar registros ADCSRA y ADCSRB

ADCSRA = 0;

ADCSRB = 0;

ADMUX | = adport; establecer muestreo continuo de pin analógico adport

ADMUX | = (1 << REFS0); tensión de referencia conjunto de AVCC

ADMUX | = (1 << ADLAR); izquierda alinear el valor de ADC - por lo que podemos leer más 8 bits del registro ADCH sólo

Establecer la prescalar. 8 es la mayor frecuencia realizable

8 Khz 143 prescalar (después de la reducción de la velocidad de interrupción tolerable)
Si (prescalar == 8) ADCSRA | = (1 << ADPS1) | (1 << ADPS0);

prescalar 16 - 72 Khz de muestreo

Si (prescalar == 16) ADCSRA | = (1 << ADPS2);

prescaler 32-16mHz/32 = 500 kHz - produce 37 Khz de muestreo

Si (prescalar == 32) ADCSRA | = (1 << ADPS2) | (1 << ADPS0);

64 prescalar produce 19,2 Khz de muestreo

if(prescalar==64) ADCSRA | = (1 << ADPS2) | (1 << ADPS1);

128 prescalar - 9,4 Khz de muestreo si (prescalar == 128) ADCSRA | = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

ADCSRA | = (1 << fecha); activar el gatillo automático

ADCSRA | = (1 << ADIE); Activar interrupción completa de conversión ADC

SBI(ADCSRA,Aden); permiten ADC

ADCSRA | = (1 << ADSC); iniciar medidas de ADC en interrupción

startTime=micros(); registrar el tiempo de modo que podemos calcular el período y la frecuencia

Permitir interrupciones y apagado vamos!

SEI();

.

El código de interrupción

La interrupción del adc es atendida por la rutina de ISR(ADC_vect).

Bufcount variable es la posición en el búfer, cuyo tamaño es BUF_SIZE (= 1000).

Bandera activada es cierto cuando los datos pueden ser capturados.

Cuando el buffer está lleno writeit bandera está verdadera y el adc está deshabilitado. (cbi(ADCSRA,ADEN);)

Para activar la interrupción ya sea activa se establece en true en la configuración y las salidas de datos recodificación inmediatamente.

O el elemento de datos de transfondo se compara con la anterior oldval.

Si la diferencia es mayor que el gatillo y disparado está establecido en true y los datos se almacenan en el búfer.

La variable trigcount se utiliza para contar el número de datos artículos leídos durante el disparo.

Este número se agrega al tamaño de búfer durante el cálculo de la frecuencia para mantener la precisión de la frecuencia observada.

.

Esta es la clave para el programa!
{ISR(ADC_vect)}

Si {} (disparada)

bufa [bufcount] = ADCH;

bufcount ++; contador de búfer de incremento

Si (bufcount == BUF_SIZE) {}

CBI(ADCSRA,Aden); desactivar la ADC

EndTime=micros(); endtime récord para el cálculo del intervalo

writeit = true; bandera que una escritura es necesario

}

} else {}

busca un disparador

transfondo = ADCH;

trigcount ++;

viaje = oldval de transfondo;

if(!trigplus) viaje = - viaje;

Si (viaje > trigger) activa = true; otro oldval = transfondo;

}

}

Artículos Relacionados

Johnny5 Arduino Robot DfRobotshop rover con interfaz de control remoto html

Johnny5 Arduino Robot DfRobotshop rover con interfaz de control remoto html

En este post explico paso a paso cómo construir un Arduino basado en Robot y programar con Javascript. Explico que opciones de diseño que hice, que Marcos y tecnologías utilizan y como programar y configurar el robot.Puede encontrar más información s
Gatillo de Arduino alta velocidad fotografía

Gatillo de Arduino alta velocidad fotografía

[youtube]jsXu4jV2BiI[/youtube]
Cómo hacer un sintetizador de sonido de Arduino con interfaz MIDI

Cómo hacer un sintetizador de sonido de Arduino con interfaz MIDI

Con este sintetizador puede hacer Arduino reproducir formas de onda totalmente personalizados. Debido a la interfaz MIDI, puede conectarse a cualquier equipo que cuentan y jugar con el sonido que desee.Paso 1: materialesArduino (en este caso Arduino
Edison de Intel como servidor de I/O de alta velocidad: entrada-salida análoga y Digital transmisión a través de conexión WiFi al PC cliente

Edison de Intel como servidor de I/O de alta velocidad: entrada-salida análoga y Digital transmisión a través de conexión WiFi al PC cliente

Este instructable es escrito como un diseño de referencia para aquellos que necesitan recopilar datos de los sensores y enviar por WiFi en un relativamente de alta velocidad. Con esta solución, fácilmente se alcanzan tasas de hasta 1000 veces por seg
Convertir un transmisor de FM en un módem de paquetes de alta velocidad gratis.

Convertir un transmisor de FM en un módem de paquetes de alta velocidad gratis.

Hola. Aquí se muestra cómo puede convertir cualquier transmisor en un módem de paquetes de alta velocidad. Con un transmisor inalámbrico de tipo Walmart. Usted puede esperar una tasa de conexión máxima de aproximadamente 60.4 kb/s. Esto puede parecer
Fotografía de alta velocidad con Arduino y CHDK

Fotografía de alta velocidad con Arduino y CHDK

este proyecto utiliza un microcontrolador Arduino y un disparador de rotura de la viga de láser para disparar a través de USB remoto una cámara Canon modificada con firmware CHDK (Canon Hack Development Kit).Influencias inmediatas son la fotografía d
Alta velocidad de encargo sistema DAQ con FPGA

Alta velocidad de encargo sistema DAQ con FPGA

Este tutorial describe un método muy eficiente de la construcción de una tarjeta de adquisición de datos de alta velocidad. Este proyecto representa una solución muy barata de la construcción de un osciloscopio digital, así como una manera de medir a
Fotografía de alta velocidad de Arduino

Fotografía de alta velocidad de Arduino

En este instructable le demostraré cómo hice un aparejo de fotografía de alta velocidad de Arduino controlado para poder tomar imágenes de salpicaduras de líquido. Esta plataforma también permite fotografiar otras cosas sensibles tiempo sin modificac
Casa calentador Controler con interfaz de usuario de SMS basados en Arduino

Casa calentador Controler con interfaz de usuario de SMS basados en Arduino

el proyecto proporciona instrucciones y código para construir un regulador de calefacción para su hogar o remoto caserío, que puede ser controlado y supervisado por GSM a través de comandos SMS. Comencé a diseñarlo como necesitábamos un controlador c
Fotopuerta ARDUINO para fotografía de alta velocidad

Fotopuerta ARDUINO para fotografía de alta velocidad

En las últimas semanas que he estado buscando en internet para fotografía de alta velocidad utilizando un ARDUINO, así que ahora más del 90% de los proyectos he encontrado sonido usado como el gatillo. Si está intentando obtener una imagen de un esta
Alta velocidad foto Arduino: HighSpeeduino!

Alta velocidad foto Arduino: HighSpeeduino!

Hoy es el día de la alta velocidad fotografía!El concepto es tomar una fotografía de la exposición 'largo', decir de 4 segundos, en un cuarto oscuro (muy) (un cuarto de baño en nuestro caso). ¿Terminas con una imagen completamente negra, correcta? Si
Arduino teclado con interfaz de la computadora

Arduino teclado con interfaz de la computadora

Se trata de una introducción sobre como hacer un teclado con unos botones, un multiplexor y un arduino que puede hablar con una interfaz de computadora que puede reproducir tonos a través de los altavoces de los equipos.Lista de piezas:1 x Arduino1 p
Tarjeta de audio externa USB con interfaz óptico S/PDIF POF

Tarjeta de audio externa USB con interfaz óptico S/PDIF POF

el propósito del proyecto era crear una tarjeta audio USB externa, que podría ser capaz de:1) sirva como de costumbre externa tarjeta de audio USB con auriculares/salida de línea y entrada de línea audio2) puede transmitir los datos de audio digitale
Fotografía al aire libre de alta velocidad

Fotografía al aire libre de alta velocidad

fotografía de alta velocidad se realiza generalmente en un cuarto oscuro con equipo dedicado (control remoto flash por ejemplo)...El instructivo aquí propuesta permite hacer fotografía de alta velocidad fuera y disfrutar del sol!, en menos de 2 horas