Go Down

Topic: Fréquence d'échantillonage (Read 334 times) previous topic - next topic

mignonfripe

Feb 23, 2018, 10:31 am Last Edit: Feb 23, 2018, 10:43 am by mignonfripe
Bonjour ! Je suis sur un projet qui nécessite un micro (j'utilise le grove sound sensor : http://wiki.seeed.cc/Grove-Sound_Sensor/ ). Sur la fiche technique il est marqué qu'il a une fréquence d'échantillonage entre 16kHz et 20 kHz.
Cependant j'ai besoin uniquement d'échantilloner sur 5kHz, je voulais donc savoir si il y avait un moyen de réduire cette fréquence d'échantillonage grâce à un code arduino !
Merci d'avance !

ChPr

... Sur la fiche technique il est marqué qu'il a une fréquence d'échantillonage entre 16kHz et 20 kHz. ...
Je pense que vous avez mal interprété la notice technique. Les données concernent la bande passante du microphone qui est de 16 Hz à 20 kHz.

Après, c'est vous qui fixez la fréquence à laquelle vous interrogez votre détecteur.

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

mignonfripe

Ah mince. Dans ce cas-là quelles sont les fonctions arduino qui permettent de changer la fréquence d'échantillonage ?

ChPr

J'ai peur que vous vous mépreniez. Vous aurez bien noté que ce détecteur est un détecteur de niveau de bruit, mais pas un capteur de son au sens où vous pouvez "échantillonner" l'onde captée. Voici ce qui est dit :

Warning

This sound sensor is used to detect whether there's sound surround or not, please don't use the module to collect sound signal. For example, you can use it to make a sound control lamp, but not as a recording device.


Maintenant, pour cadencer (vous noterez que je n'ai pas dit échantillonner) vos relevés, vous pouvez utiliser les fonctions millis() ou micros().

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

mignonfripe

Certes, nous avions noté cet élément en regardant la fiche technique, mais notre professeur a insisté pour que nous l'utilisions comme un détecteur de fréquence. En faisant des mesures à l'oscilloscope, on a réussi à trouver un signal correct et à séparer les fréquences avec une FFT (via l'oscilloscope). Je voudrais donc savoir si il est possible de filtrer les sons pour avoir seulement ceux autour de 110 ou 440 Hz (fréquence du La de guitare) ou alors de réduire la fréquence d'échantillonage pour capter plus précisément le son qui nous intéresse et en mesurer la période donc la fréquence à l'aide d'un code Arduino. 

lesept

Je ne connais pas ce capteur, mais s'il s'agit de faire une FFT sur l'Arduino il y a une bibliothèque pour ça
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

ChPr

Votre but étant d'analyser les fréquences de 110 Hz et 440 Hz, avec quelle précision voulez-vous les connaître ?

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

68tjs

Faisons une RAZ (retour à zéro pour les plus jeunes qui ne connaissent que le mot Reset).

Ce capteur est bien analogique car il constitué d'un microphone suivi de deux amplificateurs analogiques.
Ce capteur est déconseillé pour les enregistrements sonores car sa bande passante n'est aucunement garantie.
Ceci dit le prof à raison (quand on est élève le prof a toujours raison) il peut servir à recueillir des signaux autour de 440 Hz.

Venons en à la fréquence d'échantillonage, sujet qui ressurgi beaucoup en ce moment.
1) Quelle carte arduino est utilisée ?
La réponse est hyper importante pour connaitre les capacités du microcontrôleur qui équipe la carte.

2) AMHA d'analogicien il faudra un filtre physique autour de la fréquence du "LA", peut-être que les "digitaux" proposeront une méthode mathématique sans filtre physique.

3) l' "univers arduino" configure le matériel à raz les pâquerettes, c'est ce qu'il faut pour ne pas noyer les débutants mais cela masque que les microcontrôleurs ont des performances intrinsèques bien supérieures a celles qu'ils ont "à la mode arduino".
La première des choses à faire est de vérifier si la config arduino est utilisable ou s'il faudra aller plus dans les détails de la configuration du micro.

Info : le théorème de Shannon dit que pour échantillonner un signal il faut que la fréquence d'échantillonnage soit supérieure au double de la plus haute fréquence à échantillonner.
En conséquence vérifier la fréquence d'échantillonnage de micro de la carte "à la mode arduino" que tu possèdes et télécharger la datasheet du microcontrôleur qui l'équipe pour voir l'étendue de ses possibilités.

C'est peut-être du chinois pour toi mais procède par étape, renseigne toi et pose des questions au fur et à mesure que tu avance et cela deviendra moins nébuleux.

mignonfripe

Votre but étant d'analyser les fréquences de 110 Hz et 440 Hz, avec quelle précision voulez-vous les connaître ?

Cordialement.

Pierre
Je pense qu'une précision de +-10Hz sera acceptable.
1) Quelle carte arduino est utilisée ?
J'utilise une Arduino Uno, je peux me procurer une leonardo si besoin.

Et merci pour vos réponses ! Les vacances viennent de commencer pour moi mais je pourrais poser plusieurs questions au prof à la rentrée grâce à vous.

68tjs

La léonardo apportera quoi de plus ?

Puisque les vacances commencent profites en pour télécharger les datasheets et comparer les performances du micro de la uno (atmega328p) et celui de la léonardo (atmega32U4).

Note qu'il n'y a pas de sous entendu dans ma question : je ne connais pas le micro de la léonardo.  C'est simplement que proposer une autre carte c'est bien mais il faut que la proposition apporte un plus.

Info pour aider la compréhension de la datasheet:
Les informations qui donnent le temps nécessaire à un échantillonage sont données en temps brut (malgré l'apparance c'est le plus difficile à gérer) ou en nombre de cycles horloges.

Attention il y a plusieurs horloges dans un micro : l'horloge principale  qui est fixe à 16 MHz et les autres qui sont des sous multiples de cette horloge principale et qui sont modifiables.
En conséquence pour l'ADC ce qui compte pour le temps c'est le nombre de cycles de l'horloge de l'ADC.
La liste des valeur d'horloges possibles se trouve dans le chapitre ADC de la datasheet.

Dernier point et peut être rappel :
La configuration de l'ADC par arduino est très concervatrice et choisi la fréquence minimale.
Il faut commencer par vérifier si elle convient pour échantillonner une fréquence d'environ 450 Hz  avant de tout changer.

ChPr

Je pense qu'une précision de +-10Hz sera acceptable. ...
Si cette précision vous suffit, alors, un traitement par FFT tels que proposés par les bibliothèques de FFT ira très bien.

Si vous échantillonnez à environ 1 kHz (au moins le double de votre plus haute fréquence (440 Hz)) avec 512 pas de calcul, vous aurez un pas de fréquence de l'ordre de 2 Hz. NOTA : pour que ça passe, il vous faut un Arduino MEGA 2560 (8 ko de RAM). Les autres UNO et compagnie avec leur 2 ko de RAM ne suffisent pas

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

Go Up