Detección de frecuencia Arduino (4 / 4 paso)

Paso 4: Detección de pitch generalizada

En este código generalizado mi algoritmo de detección de frecuencia por lo que se podrían manejar las olas de muchos (esperemos que todos) formas.  Al escribir este código que quería seguir con lo que hice en el paso 1 sobre el no uso de los picos y valles como marcadores de medir el período de la señal (minimizar el error debido al ruido).  También quería escribir algo que era tan simple como sea posible (tiene que ejecutar en 38.5 kHz) sin dejar de ser lo suficientemente robustos como para manejar un montón de waveshapes.  Decidí utilizar una técnica similar a un disparo de osciloscopio.

Básicamente lo que hice fue elegir un voltaje que sabía que siempre estaría en los límites de mi onda (2.5V).  Entonces miré a cada vez que la onda cruza este nivel con una pendiente hacia arriba, vamos a llamar a estos eventos de"umbral".  Si esto sucedió varias veces en un ciclo que elegí el evento umbral con la pendiente más grande que el comienzo de mi ciclo. Similar al ultimo paso, he utilizado una variable llamada "tiempo" (se incrementa a una tasa de 38.5 kHz) para medir el tiempo entre eventos de umbral y almacenado se trata de un array llamado [contador].  También grabé la pendiente en cada uno de los eventos de umbral en un array llamado [cuesta].  Luego comparé los elementos de [contador] y [] pendiente de averiguar donde había un partido.  Una vez que se encuentra una coincidencia, agregué elementos de contador de tiempo [] para determinar la duración del ciclo y enviar este valor a una variable global llamada "periodo".  Luego en la función loop() principal (todos los pasos que he de describir ocurren en la rutina de interrupción del ADC) utiliza el valor del periodo para calcular la frecuencia e imprimirlo.  También debo añadir que puse una variable en el código llamado "noMatch" que me ayudó a decidir que había sido demasiado largo puesto que tuve un buen partido y que sólo debo regrabación de los elementos de [contador] y [] pendiente.

Al escribir esto pensé en un montón de posibles escenarios que podrían romper el algoritmo.  La ola más difíciles en mi mente es uno que pasa los 2.5V umbral muchas veces en un ciclo en similares cuestas y espaciadas a lo largo del ciclo del mismo modo.  Tiene una onda como esta, tienes que tener slopeTol muy baja (0-3) y tal vez encuentre que timerTol bajar (a tal vez 5) ayuda a seguir la onda correctamente.  También, si desea medir ondas con pendientes muy pronunciadas (como las ondas de pulso) se debe establecer el valor de slopeTol hasta 100 o incluso hasta 256 a seguirlo mejor.

Generalmente este pedazo de código parece manejar muy bien un montón de formas, se pueden ver algunos de mis resultados en las imágenes de arriba.  En amarillo se muestra la señal de entrada y el evento de umbral que es el seguimiento de Arduino está indicado por un pulso del pin 12 (azul).

También he añadido un poco de código para parar calcular e imprimir datos de frecuencia cuando la amplitud de la onda cae por debajo de cierto nivel.  (Si hay poca o ninguna señal entonces el código anterior a veces escupe un montón de basura).  Aquí está:

			

          

Artículos Relacionados

Detección de frecuencia confiable que utilizando técnicas de DSP

Detección de frecuencia confiable que utilizando técnicas de DSP

precisión de frecuencia de detección es importante para muchos proyectos como afinadores de guitarra y Piano, analizadores de vibraciones, monitores de ritmo cardíaco, MEMs Sensor de análisis e instrumentos de laboratorio.Ha habido muchos ejemplos de
Arduioscillo-el generador de frecuencia Arduino voltímetro

Arduioscillo-el generador de frecuencia Arduino voltímetro

¿Qué hago?   El propósito de este proyecto es crear un generador de frecuencia voltímetro asequible y práctico con materiales ahí en su banco de trabajo. Este enlace te llevará a mi youtube video explicando el dispositivo http://www.youtube.com/watch
Detección mediante sensor Arduino y llama de fuego

Detección mediante sensor Arduino y llama de fuego

Sensor de llama está integrada a arduino para detectar la llama. LED y zumbador son conectado a arduino para indicar la llama.Componentes de hard ware necesarios:-1) sensor llama (salida analógica)Arduino 2)3) tablero de pan4) LEDZumbador 5)6) cables
Detección de incendios - Arduino y LEGO Mindstorms del bosque

Detección de incendios - Arduino y LEGO Mindstorms del bosque

Este proyecto tiene los siguientes componentes:Arduino A: Detecta el fuego y el agua (el uso del agua se explica en el video)B: de Arduino Te dice la distancia entre el objeto o fuego y el propio proyecto.LEGO Mindstorms: Permite el proyecto mobile-l
Algoritmo de detección de Pitch de Arduino (usando AMDF)

Algoritmo de detección de Pitch de Arduino (usando AMDF)

Última actualización: 16 de enero de 2016 (añadido recientemente un código de matlab mejora (step7) con muestras y un montón de notas)Prólogo: Este Instructable es escrito en un estilo para mostrar cómo analizado, probado, implementado y había optimi
Guitarra brillante cambia de Color

Guitarra brillante cambia de Color

En el Reino del rock and roll es importante establecer uno mismo aparte. Con millones de personas en este mundo que pueden tocar la guitarra, simplemente jugando bien no va a cortar. Usted necesita algo extra para levantarse como un Dios del rock. Co
Trazar datos de Arduino

Trazar datos de Arduino

Arduino no tiene mucho en términos de capacidad de análisis y depuración incorporada, así que puede ser muy útil tener un centro de datos que se enviaron sobre el puerto serie de Arduino.Hay varias formas de hacer eso incluyendo procesamiento, Python
Luces de Navidad Musical accionado Arduino

Luces de Navidad Musical accionado Arduino

después de explorar la Web de Instructables he encontrado unos pocos proyectos que enarboló mi interés y los que me llevan a pensar, podría hacer algunas luces de Navidad musical. Mayoría de lo que gasté mi tiempo en vino de Instructable de Amanda Gh
Sintonizador de la guitarra de Arduino

Sintonizador de la guitarra de Arduino

Construir su propio sintonizador de guitarra eléctrica utilizando el Arduino! Decidí hacer esto porque quería experimentar con entrada de audio y detección de frecuencia. Usé el método de Amanda Ghassaei para la detección de frecuencia de Arduino par
Crear tu propio juego de Simon Says y Arduino DIY Electro masa!

Crear tu propio juego de Simon Says y Arduino DIY Electro masa!

Para empezarEl objetivo de este Instructable es convertir a la masa del electro en un botón capacitivo del tacto con Arduino utilizando la librería de arduino CapSense y luego usarlo para crear un Simon Says juego. Utilizaremos un botón de arranque c
Detector de frecuencia usando PIC 12F683 procesador

Detector de frecuencia usando PIC 12F683 procesador

este proyecto describe el hardware y el software que he desarrollado y que permite a un microprocesador de 8 bits pequeño PIC funcionar como un detector de frecuencia única o decodificador de tono.Tal circuito puede utilizarse para detectar la presen
Cambia Tracker

Cambia Tracker

He decidido darle tal título tras darse cuenta de cómo los cambios en la vida son importantes. Afortunadamente, en el mundo de la electrónica, estos cambios se pueden cuantificar y también pueden ser utilizados en sistemas de control. Este instructab
Movimiento accionada sistema remoto DSLR

Movimiento accionada sistema remoto DSLR

He aquí, un movimiento de largo alcance disparado sistema remoto DSLR! Construir un dispositivo que automáticamente toma fotos de objetos en movimiento cuando no estás alrededor. Es la configuración de fotografía de vida silvestre independiente perfe
Timbre de la puerta a través de vidrio

Timbre de la puerta a través de vidrio

Enlace al video, como no aparece en todas partes: http://www.youtube.com/watch?v=K7FI8O0eBBI¿Cómo lanzáis un timbre a través de un panel de vidrio? Definitivamente no es imposible, pero requiere alguna magia de Arduino. En este instructable vamos a i