Go Down

Topic: Annulateur actif sonore (Read 3964 times) previous topic - next topic

Simmis711

Bonjour,

Etudiant en CPGE, je voudrais, dans le cadre de mes TIPE mettre un place un rétro contrôle pour automatiser le contrôleur actif de son que j'essaye d'élaborer.
Les sons à annuler (des sons purs et simples) sont émis de la source 1 (cf pièces jointes), et le système que j'ai actuellement me permet d'atténuer manuellement des sons de fréquences inférieures à 500Hz (au delà, ça marche moins bien) grâce à un signal adéquat émis en source 2.
Je voudrais maintenant faire varier les sons émis par la source 1 (par exemple émettre différentes notes de musique, do, ré mi...) et faire en sorte que la source 2 s'adapte à ces variations pour atténuer correctement le signal indésirable, ce via un micro controleur.

Je compte donc acheter la carte arduino uno et un module d'analyse sonore pour récupérer la fréquence, le niveau sonore...
Je suis par contre totalement étranger à la programmation, d'où ce post. Mon projet vous semble-t-il réalisable ? Quels perfectionnement pourrais-je faire ? La programmation serait-elle très compliquée à effectuer ?

Merci d'avance pour vos réponses.



Artouste



Je compte donc acheter la carte arduino uno et un module d'analyse sonore pour récupérer la fréquence, le niveau sonore...
Je suis par contre totalement étranger à la programmation, d'où ce post. Mon projet vous semble-t-il réalisable ? Quels perfectionnement pourrais-je faire ? La programmation serait-elle très compliquée à effectuer ?

Merci d'avance pour vos réponses.




bonjour
A chaud je vois mal un arduino gerer cela (encore que si le temps de reaction n'est pas un critere  important ça peut etre envisageable)
meme si tu ne travaille qu'en fondamentale, il faut gerer precisemment  la phase relative.
quand tu parle de module d'analyse sonore , tu pense à quoi en particulier ?
là je vois plus un DSP qu'un arduino pour ton projet

skywodd

Bonjour,

Je suis de l'avis d'Artouste, un DSP serait plus adapté mais niveau prog c'est pas la même chose.
Voir même un circuit purement analogique vu le temps de latence infime à respecter.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

skizoh

Salut, si c'est une nouvelle note toutes les 2 minutes ça va, le arduino aura un peut de retard mais arrivera à faire quelque chose de pas trop dégueu, par contre si c'est plein de notes différentes dans tous les sens et qu'à chaque notes il doit s'adapter la ça deviens un peut dur pour un arduino...

Après pour un prototype à réaliser rapidement c'est un bon compromis, pour un projet à industrialiser avec une qualité minimum requise la ça risque d'être tendu.

Skizo !

Super_Cinci

#4
Nov 06, 2013, 02:02 pm Last Edit: Nov 06, 2013, 02:06 pm by Super_Cinci Reason: 1
tu t'attaques à très gros je crois... car si le second micro(phone) permet d'annuler totalement les indésirables au point précis où il est, en sortie de ton tube carré, les indésirables seront toujours là, voire amplifiés selon la fréquence et la phase, donc audibles. Il va te falloir calculer précisément la réponse sonore de ton caisson pour chacune des sources, tant en fréquentiel qu'en déphasages, ainsi que prévoir les ondes résiduelles à l'endroit où tu mets tes capteurs. es-tu sûr de ne pas avoir visé un peu trop haut? même en thèses de doctorat ils ne visent pas ce niveau...

Je ne dis pas ça pour te décourager, mais je cherche juste à être un petit peu réaliste... au mieux tu arriveras à atténuer (mais pas supprimer) une fréquence pour un point précis de l'espace extérieur, mais si l'auditeur se déplace, c'est mort. ton DSP va devoir résoudre des matrices d'équations différentielles à une 12aine de dimensions (ou peut-être même 24), à toi de voir si c'est réalisable...

je me souviens avoir entendu parler d'une tentative dans une voiture, avec des micros dans les appuie-tête, et l'objectif était que l'autoradio génère des signaux qui anulent le bruit du moteur et des vibrations de la route... c'étati il y a 20 ans... les constructeurs ont préféré jouer sur l'insonorisation de la voiture, donc au final, supprimer la source 1...

Christian_R

En simplifiant le problème, tu peux te ramener à une propagation à une seule dimension.
Ligne droite entre une source sonore, un micro, un haut-parleur en opposition de phase et une oreille.
En simplifiant encore plus, on ne supprime que la fréquence fondamentale (la plus intense).

Le système doit en temps réel déterminer cette fréquence, Arduino en est capable.
Pour trouver la phase, c'est beaucoup plus critique, mais ça me semble jouable, pour des notes pas trop aiguës.

Je suggère de ne pas passer par des calculs (transformation de Fourrier, c'est trop bourrin et lent) mais de ruser un peu avec du "zéro-crossing" : Filtrage analogique (RC) pour retirer les harmoniques élevées, et détection (par une interruption) de chaque passage par zéro du signal. Le délai entre pulses donne la période, et la phase est exactement synchrone avec les détections.
Christian

fdufnews


En simplifiant le problème, tu peux te ramener à une propagation à une seule dimension.
Ligne droite entre une source sonore, un micro, un haut-parleur en opposition de phase et une oreille.

Je peux me tromper mais il me semble que :
si on simplifie autant alors, le milieu étant homogène et connu, donc le temps de propagation connu, la chaîne de traitement se réduit à une ligne à retard.
Le son se propage à 330m/s dans l'air.
La distance est de 1m entre la source et le point ou on veut annuler le son.
Donc il faudrait envoyer une onde en opposition de phase retardée de 3ms pour annuler le signal en ce point.

Simmis711

#7
Nov 07, 2013, 08:28 pm Last Edit: Nov 07, 2013, 08:30 pm by Simmis711 Reason: 1
La temps de réponse n'a pas besoin d'être très court : je compte changer de note toutes les 3-4 secondes environ.
Je ne cherche également qu'a atténuer les sons, les annuler totalement étant quasiment impossible.
De plus je compte ne prendre que des sons "purs", ne m'intéresser qu'à la fondamentale.
L'annulation active marchant mieux avec les basses fréquences l'idée du filtre passe bas éliminant les hautes fréquences est plutôt intéressant !
Du coup l'arduino serait reliée à un micro fréquencemètre pour avoir le niveau sonore et la fréquence du son. Serait-il possible d'avoir la phase ? Si oui de quelle façon ?

D'après mes indications penseriez-vous que l'arduino suffirait ?
Je suis conscient que mon problème peut vite devenir très compliqué, mais je me cantonne à une situation simple.
Je peux en effet approximer les ondes comme étant planes, ce qui simplifie les systèmes d'équations.

Artouste


...
Du coup l'arduino serait reliée à un micro fréquencemètre pour avoir le niveau sonore et la fréquence du son. Serait-il possible d'avoir la phase ? Si oui de quelle façon ?

D'après mes indications penseriez-vous que l'arduino suffirait ?
Je suis conscient que mon problème peut vite devenir très compliqué, mais je me cantonne à une situation simple.
Je peux en effet approximer les ondes comme étant planes, ce qui simplifie les systèmes d'équations.

la phase est là  une notion relative
elle peut eventuellement etre deduite par construction si tu reste sur de la petite BF
tu te limite à quelle F° max ?

Simmis711

400/500 Hz. Plus précisement j'ai fait une série de mesure à 150HZ et une à 500 pour montrer que l'atténuation diminuait au fur et à mesure que la fréquence augmentait.
Pour la phase je l'avais direct du coup, je pouvais la régler sur les gbf mais le top serait que le capteur puisse donner une valeur sans que j'ai besoin de régler moi même la phase de la source 2 en fonction de celle de la source 1... Automatiser le tout quoi

Artouste


400/500 Hz. Plus précisement j'ai fait une série de mesure à 150HZ et une à 500 pour montrer que l'atténuation diminuait au fur et à mesure que la fréquence augmentait.
Pour la phase je l'avais direct du coup, je pouvais la régler sur les gbf mais le top serait que le capteur puisse donner une valeur sans que j'ai besoin de régler moi même la phase de la source 2 en fonction de celle de la source 1... Automatiser le tout quoi

ok
je vais faire comme le miroir , reflechir au mieux  :smiley-mr-green:

tu t'accorde quel delai ( Delta T)  pour une reaction stabilisée sur une F° ?

Simmis711

Quelques secondes pas besoin de moins. Je veux juste illustrer que l'automatisation du processus peut vite devenir très difficile à appliquer, pas faire quelque chose de très approfondi

Go Up