Détection de fréquence Arduino (4 / 4 étapes)

Étape 4: Détection de hauteur généralisée

Dans ce code, j’ai généralisé mon algorithme de détection de fréquence afin qu’il pouvait gérer les vagues d’un grand nombre (nous l’espérons tous) façonne.  Lors de l’écriture de ce code, j’ai voulu s’en tenir avec le point que j’ai fait à l’étape 1 sur ne pas utiliser les pics et les vallées comme marqueurs mesurent la période du signal (minimiser les erreurs dues au bruit).  Je voulais aussi écrire quelque chose qui était aussi simple que possible (il faut exécuter à 38,5 kHz) tout en étant suffisamment robustes pour traiter beaucoup de waveshapes.  J’ai décidé d’utiliser une technique semblable à un déclencheur de l’oscilloscope.

Fondamentalement ce que j’ai fait choisir une tension que j’ai toujours su que serait dans les limites de ma vague (2, 5V).  Puis je regardais chaque fois que la vague ont franchi ce niveau avec une pente ascendante, nous appellerons ces « événements de seuil ».  Si cela est arrivé plusieurs fois en un seul cycle, j’ai choisi l’événement seuil avec la plus grande pente comme le début de mon cycle. Semblable à la dernière étape, j’ai utilisé une variable appelée « temps » (incrémenté à un taux de 38,5 kHz) pour mesurer le temps entre les événements de seuil et stockées il s’agit d’un tableau appelé minuterie [].  J’ai aussi enregistré la pente à chacun de ces événements de seuil dans un tableau appelé pente [].  Puis j’ai comparé les éléments de la minuterie [] et [] pente pour savoir où il y avait un match.  Une fois qu’une correspondance a été trouvée, j’ai ajouté les éléments de minuterie [] pour déterminer la durée du cycle et envoyé cette valeur à une variable globale appelée « période ».  Puis dans la fonction loop() principale (toutes les étapes que je viens de décrire se produisent dans la routine d’interruption ADC) j’ai utilisé la valeur de période pour calculer la fréquence et l’imprimer.  Je dois aussi ajouter que j’ai mis une variable dans le code appelé « noMatch » qui m’a aidé à décider qu’il avait été trop longtemps puisque j’ai eu un bon match et que je devrais juste réenregistrer les éléments de minuterie [] et [] pente.

Lorsque vous écrivez ceci, j’ai pensé à un grand nombre de scénarios possibles qui pourraient briser l’algorithme.  La vague la plus délicate dans mon esprit est un quel seuil de passes la 2.5V plusieurs fois dans un cycle à pentes similaires et échelonnées tout au long du cycle de la même façon.  Je vous avez une vague comme ça, vous devriez garder slopeTol très faible (0-3) et vous pourriez trouver que timerTol abaissement (à 5 peut-être) aide à suivre la vague correctement.  En outre, si vous voulez mesurer les ondes avec des pentes très raides (comme les vagues d’impulsion) définissez la valeur de slopeTol jusqu'à 100 ou même tout le chemin jusqu'à 256 de les suivre mieux.

Généralement, ce morceau de code semble très bien gérer beaucoup de formes, vous pouvez voir quelques-unes de mes résultats dans les images ci-dessus.  Le signal entrant est indiqué en jaune et l’événement de seuil qui effectue le suivi de l’Arduino est indiquée par une impulsion d’axe 12 (bleu).

J’ai aussi ajouté un peu de code pour arrêter de calculer et d’imprimer des données de fréquence lorsque l’amplitude de l’onde est inférieur à un certain niveau.  (S’il y a peu ou pas de signal alors le code qui précède parfois crache un tas d’ordures).  C’est ici :

			
          

Articles Liés

Lampe RGB à détection sonore en utilisant Arduino

Lampe RGB à détection sonore en utilisant Arduino

SalutTout d'abord ce projet n'est pas encore fini !Dans ce projet, j'ai fais une lampe aux couleurs multiples à l'aide de LED RGB. Mon idée est d'essayer de laisser la lampe changer couleur s'il détecte un son dans la région. Si vous s'énerver avec l
Détection d’angle mort : Arduino + distance capteur + Matlab GUI

Détection d’angle mort : Arduino + distance capteur + Matlab GUI

Ce projet vise à étudier la possibilité d'utiliser un capteur de distance ultrason HC-SR04 pour fournir une indication d'un véhicule dans l'angle mort de pilotes. S'il vous plaît poster des questions ci-dessous et je serai heureux d'y répondre.Plus d
Clair détection + données journalisation arduino blanc

Clair détection + données journalisation arduino blanc

Je ne peux pas écrire anglais, que c'est tous des pays-bas aux anglais traduits par google traducteurce que tu l'as faitJe suis tellement finicking que la lumière la plus brillante point avec 1 Rechercher ldr.dans l'avenir pour moi de servir un panne
Fréquence détection à l’aide de DSP des Techniques fiables

Fréquence détection à l’aide de DSP des Techniques fiables

détection de fréquence précise est importante pour de nombreux projets tels que guitare/Piano Tuners, analyseurs de Vibration, moniteurs de fréquence cardiaque, analyse capteur MEMs et Instruments de laboratoire.Il y a eu de nombreux exemples de proj
Algorithme de détection de Pitch Arduino (à l’aide de AMDF)

Algorithme de détection de Pitch Arduino (à l’aide de AMDF)

Dernière mise à jour: 16 janvier 2016 (récemment ajouté un code matlab améliorée (step7) avec échantillons et beaucoup de notes)Avant-propos : Ce Instructable est écrite dans un style pour montrer comment j'ai analysés, testés, mis en œuvre et optimi
Accordeur de guitare Arduino

Accordeur de guitare Arduino

Construisez votre propre accordeur de guitare électrique à l'aide de l'Arduino ! J'ai décidé de faire cela parce que je voulais expérimenter avec entrée audio et la détection de fréquence. J'ai utilisé la méthode de Amanda Ghassaei pour la détection
Guitare de changement de couleur rougeoyante

Guitare de changement de couleur rougeoyante

Au Royaume du rock and roll, il est important de se démarquer. Avec des millions de gens dans ce monde qui peuvent jouer de la guitare, simplement bien jouer juste ne va pas couper. Vous avez besoin de quelque chose en plus à se lever comme un Dieu d
Traçage de données de l’Arduino

Traçage de données de l’Arduino

Arduino n'a pas beaucoup en termes de possibilités d'analyse et de débogage intégrée, il peut donc être très utile de disposer d'une installation pour tracer les données qui sont envoyées de Arduino via le Port série.Il y a plusieurs façons de le fai
Comment faire une télécommande sentient web-marionnette de piratage de Twitter, Google, Skype, Arduino et traitement !

Comment faire une télécommande sentient web-marionnette de piratage de Twitter, Google, Skype, Arduino et traitement !

Comment pour manipuler un objet physique sur le web en utilisant les services web communs et leurs données accessibles simplement nourrit, avec certains ajouté ouvrir des choses source de décoder et de manipuler ces données et en fin de compte utilis
Détecteur de fréquence à l’aide de PIC 12F683 processeur

Détecteur de fréquence à l’aide de PIC 12F683 processeur

ce projet décrit le matériel et j'ai développé un logiciel qui permet à un microprocesseur PIC de petite 8 bits de fonctionner comme un détecteur de fréquence unique ou un décodeur de tonalité.Un tel circuit peut être utilisé pour détecter la présenc
Un commutateur capacitif pour Arduino

Un commutateur capacitif pour Arduino

Il s'agit d'un moyen simple de réaliser et d'utiliser des commutateurs capacitifs avec un Arduino ou un dispositif similaire comme un Pi de framboise. Ces commutateurs sont toucher sensible, peuvent être n'importe quel forme ou taille et peuvent être
Générateur de signal sinusoïdal triphasé 3 basé sur Arduino Due

Générateur de signal sinusoïdal triphasé 3 basé sur Arduino Due

le but de cette action est d'aider quelqu'un qui essaye d'utiliser du Due une plus grande performance + manque de référence + fiche technique non utile.ce projet est capable de générer jusqu'à 3 phase sinusoïde @ 256 échantillons / cycle à basse fréq
Arduino de capteur de mouvement

Arduino de capteur de mouvement

Bonjour tout le mondeAlarmes de capteur de mouvement permettent aux individus et entreprises protéger leurs maisons et les chantiers des intrus. Ces appareils fonctionnent à l'aide de lumière, un micro-ondes, vibrations et autres méthodes pour détect
Change Tracker

Change Tracker

J'ai décidé de donner un tel titre après avoir réalisé comment les changements dans la vie sont importantes. Heureusement, dans le monde de l'électronique, ces changements peuvent être quantifiés et peuvent également être utilisés dans les systèmes d