Pages: [1] 2   Go Down
Author Topic: détection du son + analyse  (Read 1704 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je réalise un projet ayant pour but la réalisation d'une main robotisé marchant par le son . On joue une note à la flûte (donc un son pur,par exemple avec un la :440Hz) et les doigts se referment (à l'aide de servomoteurs). Donc normalement je n'ai pas besoin d'utiliser les FFT vu que mon son est pur . Mais mon problème est que je n'arrive pas à comprendre comment je peux détecter une fréquence.

Mon idée était d'avoir un microphone branché à l'Arduino mais après c'est le vide totale, je ne sais pas si il existe des fonctions permettant une détections de fréquences, ou dois je réaliser un montage en complément ? bref je suis un peu perdu et désemparé ^^'.

Une aide me serait bien utile, Merci
cordialement.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

On joue une note à la flûte (donc un son pur,par exemple avec un la :440Hz) et les doigts se referment (à l'aide de servomoteurs). Donc normalement je n'ai pas besoin d'utiliser les FFT vu que mon son est pur .
Ton son ne sera jamais pure à 100%, si c'était le cas ta flute serait un vrai générateur de fonction sortant une sinusoïde parfaite smiley-wink

Mais mon problème est que je n'arrive pas à comprendre comment je peux détecter une fréquence.

Mon idée était d'avoir un microphone branché à l'Arduino mais après c'est le vide totale, je ne sais pas si il existe des fonctions permettant une détections de fréquences, ou dois je réaliser un montage en complément ? bref je suis un peu perdu et désemparé ^^'.
Cherche "goertzel" sur google tu devrais être content smiley-wink

Je te joint un de mes anciens projets sur goertzel justement.
Je t'avertis tout de suite le code ne marche pas super bien, la détection est toujours à +/-40Hz de la fréquence voulu.
Pour régler le problème il faudrait revoir la partie échantillonnage avec un timer + centrer la freq. d'échantillonnage sur les bandes de fréquences à détecter.
Mais j'ai pas le temps ... et j'ai aussi pas mal la flemme de le faire smiley-mr-green

* goertzel_opti.zip (2.47 KB - downloaded 23 times.)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup, je vais déjà regarder ça puis je vais voir ce que je peux faire  smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinon je n'arrive pas à ouvrir ton dossier ^^': "Error 503 Service Unavailable"
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinon je n'arrive pas à ouvrir ton dossier ^^': "Error 503 Service Unavailable"
Ha ... les serveurs arduino.cc sont (encore) plantés ... smiley-roll

Bon attendant que ça remarche :
http://www60.zippyshare.com/v/22816712/file.html
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup, mais une dernière question en faite j'ai le choix entre : goertzel ou FFT ?
Bonne soirée !  smiley

Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup, mais une dernière question en faite j'ai le choix entre : goertzel ou FFT ?
En réalité les deux algo sont basé sur le même principe, mais pas pour les même applications.
La transformation de Fourier (FFT) a pour but d'avoir le spectre d'un signal découpé par tranche de fréquence.
L'algo de Goertzel a pour but de détecter l'amplitude (et par extension la présence) d'une certain fréquence dans un signal.

L'algo de goertzel est utile pour détecter des fréquences bien précise en nombre réduit, la FFT est utile pour détecter toute une gamme de fréquence sans distinction.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3590
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il a également la possibilité de faire un filtre audio hardware
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup sky

Sinon B@tto , parlerais tu de réaliser des filtres passe bande? car si c'est le cas, on m'a expliqué que c'était très galère à mettre en pratique étant donnée que des résistance et les condensateur ont une marge d'erreur ce qui fait que le montage n'est pas précis...
Si tu parles d'autres choses peux tu me dire ce que tu entends précisément par hardware (un shield?)
Logged

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
on m'a expliqué que c'était très galère à mettre en pratique étant donnée que des résistance et les condensateur ont une marge d'erreur ce qui fait que le montage n'est pas précis.
"On" devrait déjà donner plus de renseignements sur le peigne de fréquence avant de dire que c'est galère.
Quel est le nombre de fréquences attendues ?
Quel est l'espacement (en Hz) entre les fréquences ?
Une fréquence ne fera pas pile 440 Hz par exemple mais 440 Hz +/- x Hz. Quel est la valeur de ce x ?

Effectivement si ces données ne sont pas connues ce ne sera pas "galère" mais "impossible" et il faudra se rabatre sur une analyse de Fourier.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il a également la possibilité de faire un filtre audio hardware
Toute de suite la solution de facilité smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

68tjs: et bien je veux jouer les notes d'une octave à la flute (262 Hz 294 Hz  330 Hz 349 Hz 392 Hz 440 Hz 494 Hz, soit do re mi fa sol la si)
Pourquoi ces galères?,Et bien un de mes profs m'a expliqué que "oui" ça allait très bien marcher sur simulink et isis proteus(donc en théorie), mais en pratique pour réaliser un passe bande précis c'était très difficile.

Après si vous me dites que le "x"(espace entre les fréquences) est suffisant (ici en l’occurrence on tourne autour de 20 à 40 hz) et bien je vais tester ça.
smiley
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et pour l'avoir vu utiliser avec succès dans des produits commerciaux, la détection des pics + mesure de période marche assez bien sur microcontroleur tout en étant beaucoup moins consommateurs de cpu que les méthodes de traitement de signal.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2180
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Deux points :
1)Je ne doute pas que tu avais toute l'information sur les valeurs de fréquence mais nous n'avions connaissance que d'une valeur de fréquence donc pour moi, n'étant pas joueur de flûte, impossible de conclure et donc d'éliminer une solution.

2) Maintenant que le cahier des charges est connu, je dirais qu'avec 3 fréquences bien éloignées les une des autres cela aurait valu le coup de regarder de près surtout si tu as du matériel de mesure à ta disposition pour la mise au point.
Mais avec un peigne de 7 fréquences rapprochées et l'imprécision de la fréquence émise car je ne pense pas qu'avec une flûte  le "la" fera exactement 440hz +/-1hz la partie n'est pas jouable avec des filtres analogiques.
Si tu peut utiliser un analyseur de spectre il sera intéressant que tu joue de la flûte devant un micro relié à l'analyseur de spectre, histoire de chiffrer les valeurs de niveau et de fréquence pour chaque fréquence discrète  ainsi que le niveau  des  harmoniques.

Pour rester (peut-être) dans le domaine des filtres je te donne une info toute chaude : il y a 1 heure en cherchant tout autre chose je suis tombé sur la note d'application AVR223 sur des filtres numériques réalisés avec un ATMega, filtres numériques donc du logiciel. Si tu as des connaissances dans le filtrage numérique cela vaut peut-être le coup que tu y jette un oeil.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je vous remercie tous pour vos réponses, je ne peux pas répondre grand chose pour le moment vu que je ne connais pas toutes les techniques cité ci dessus, donc je vais me pencher sur celles la et je vous tiens au courant smiley-wink si d'autres ont aussi des suggestions je suis toujours preneur et curieux
Merci beaucoup en tout cas! smiley
Logged

Pages: [1] 2   Go Up
Jump to: