[Analogique] Récupérer l'enveloppe d'un signal sonore.
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Récupérer l'enveloppe d'un signal sonore.



  1. #1
    Authotin

    Récupérer l'enveloppe d'un signal sonore.


    ------

    Bonjour,

    Février approche à grand pas, et les terminales commencent à vraiment s'intéresser à leur projet de fin d'année. Nous sommes dans ce cas.
    Nous tentons de réaliser un Capteur Sonore Pédagogique Intelligent (CSPI), capable d'allumer une LED lorsque le micro reçoit un niveau sonore dans la classe supérieur à 75 dB. Mais afin de pouvoir faire tout ça sur Arduino, il est d'abord nécessaire d'obtenir un signal utilisable avec une carte Arduino: le signal reçu par le micro est analogique, or il nous faudrait un signal logique. On nous a informé que pour en faire autant, il nous faudrait récupérer l'enveloppe du signal sonore en question, après avoir filtré ses composantes seulement positives.

    Le professeur nous a fait un exemple rapide, mais nous n'avons pas réellement compris et il est quelque peu occupé pendant les heures de travail. Il a ajouté, sur la carte Arduino, entre la sortie du signal sonore et son retour vers la carte, une suite de condensateur et de résistance auxquels nous n'avons pas compris grand chose...

    Nous cherchons donc des explications sur la façon de récupérer cette fameuse enveloppe.

    Seconde nécessité, moins importante (puisqu'on est en présence d'un prototype), améliorer le gain du micro. Il s'agit d'un micro à électret de base qui ne permet aucun réglage. D'où le problème, à un mètre de distance, il ne capte déjà plus le son.

    Merci par avance de votre aide!

    -----

  2. #2
    inviteb565bafd

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Bonjour,

    C'est certain que pour faire de l'acquisition audio depuis un micro il faut un amplificateur. Etant donné la bande de fréquences, je dirais que presque n'importe quel ampli op classique et pas cher peut suffire (TL082, NE5532...) ou à base de transistor.

    Les micro électrets nécessitent d'être alimenté par le biais d'une résistance, et la sortie découplée par un condensateur. N'ayant pas plus d'info sur votre matériel, difficile de dire si ces composants sont présents ou non sur votre système.
    Vous trouverez plein d'info intéressantes ici pour l’alimentation, et ici pour un exemple d'amplification. Il y a plein d'autres exemples sur ce site qui peuvent être intéressants.

    Le signal audio peut être négatif, il sera donc nécessaire de lui ajouter une composante continue (Vcc/2 par exemple) et de faire attention à ce que l'amplitude ne dépasse pas la tension max de l'ADC.

    Pour la partie acquisition, il y a plusieurs solutions envisageables, soit ADC interne de l'Arduino, soit ADC externe (SPI, Parallèle...).

    Je ne sais pas quelles sont vos bases en traitement du signal, mais la fréquence d'échantillonnage doit être au moins 2 fois supérieure à la fréquence max (en audio c'est autour de 20 kHz), et quant au traitement des données numériques, c'est une autre affaire...

  3. #3
    inviteb9f49292

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    le signal reçu par le micro est analogique, or il nous faudrait un signal logique
    Non, il faut transformer ton signal analogique en un signal numérique, avec un composant qui s'appelle "convertisseur analogique numérique" (ADC en anglais), et il y a de grande chance que ton arduino en possède un (je ne connais pas trop cette bêstiole). Du coup ton signal sera transformé en une suite de chiffre accessible par le programme de ton arduino.
    Néanmoins il faudra certainement un préampli entre le microphone et le convertisseur analogique-numérique.

    L'histoire de l'enveloppe etc... c'est très confus, mais je crois comprendre qu'il s'agirait de transformer le signal analogique en "PWM" (pulse width modulation) pour le brancher sur une entrée PWM de l'arduino, et c'est bien souvent ce que fait le 1er étage d'un ADC... Si c'est ça il faut effectivement commencer par un redressage double alternance (le pont de diode comme en sortie d'un transformateur), suivi d'un filtrage passe-bas (bien souvent une simple capacité)... Mais là tu as juste l'enveloppe et après le transformer en PWM c'est pas fini...

    Je pense que pour un niveau de terminal l'ADC c'est plus accessible...

  4. #4
    Jack
    Modérateur

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Pour l'enveloppe, un circuit type démodulation AM devrait suffire

  5. A voir en vidéo sur Futura
  6. #5
    invitef86a6203

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Le détecteur de niveau 75db n'a quasiment aucune application et ne sert pas à grand chose.

    Une idée simple et plus aboutie;
    Qui permettrait de commander non pas une LED mais bien plus .

    Peut être est ce trop compliqué pour un débutant?
    Peut être que ça ne correspond pas non plus , à l'idée du prof, mais le discours du post #1 , m'inspire un récepteur de code morse.
    Le code étant entrée grâce au micro.
    Quelque soit la fréquence ce qui compte c'est la modulation très basse fréquence de l'ordre de 3 hertz par exemple ou moins .
    Cela nécessite un ampli passe bas.

    On pourra donc aussi utiliser un arduino générateur mais pas forcément aussi la voix. (ça serait mieux pour la mise au point.)
    Le générateur servant ausi d'entraineur pour apprendre à faire du "ti ti taa" ou "taa ti ti" ou autre...

    un site qui donne des schémas et explication.
    http://www.wikiwand.com/fr/Circuit_d...'enveloppe

    Un code morse simple par exemple 2 court un long (soit ti ti ta) le long ferait le double du court.
    Admettons donc que les codes soit sur 3 bits
    Il faudra faire 3 mesures de temps puis les comparer avec une bonne marge d'erreur par exemple 20%

    On peut pour mettre au point utiliser un autre arduino pour générer le code

    Code:
    tone(pin, frequency), 
    delay(300);
    noTone();
    
    delay(100);
    
    tone(pin, frequency), 
    delay(300);
    noTone();
    
    delay(100);
    
    tone(pin, frequency), 
    delay(600);
    noTone();
    Pour la partie Arduino une entrée digital toute simple.
    on mémorise le millis() lorsque le signal arrive
    if (digitalRead(inPin) ==1) start = millis;
    Pius à la descente du signal on compte le temps écouler

    while((digitalRead(inPin) ==0) ,
    temps1 = millis() - start ;

    cela 3 fois de suite;
    Si le temps d'attente entre 2 montés est trop longue recommencer depuis le début

    Après comparer les 3 temps pour voir si les temps entre dans vos limite de temps
    Et pour finir faire une table de saut avec switch()
    Comme 3 bit font 8 cas , seulement 8 cas à traiter ou 8 leds
    Le même code pouvant faire On/Off
    Dernière modification par Antoane ; 16/01/2017 à 15h03. Motif: Réparation balises [code]

  7. #6
    jiherve

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Bonjour,
    Pour interfacer votre microphone avec un µC il faut amplifier/redresser/filtrer ce que tout bon AOP saura faire:
    https://en.wikipedia.org/wiki/Precis...#Peak_detector voir second schéma , il faudra placer un filtre passe bas en sortie, ne pas oublier une résistance(assez grande) en // sur le condo sinon c'est un détecteur crête qui oublie difficilement. Avec un AOP à alim symétrique la sortie sera exclusivement positive sans avoir recours à une masse virtuelle donc bon manger pour CAN!
    JR
    l'électronique c'est pas du vaudou!

  8. #7
    invite7070fa42

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Salut,

    un exemple tout fait avec schéma et vidéo:

    http://www.learningaboutelectronics....or-circuit.php


    Tu remarqueras que le petit circuit entrée est branchée sur une entrée analogique "analog input", c'est ainsi qu'est nommé l'entrée du convertisseur analogique/numérique de l'arduino, c'est à dire l' ADC.

  9. #8
    jiherve

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Re
    Schéma tueur de µC car il génère du négatif et le 386 est capable de pousser qqs Watts.
    Les softeux/arduinistes ne lisent/comprennent pas les datasheet!
    JR
    l'électronique c'est pas du vaudou!

  10. #9
    jiherve

    Re : Besoin d'aide: récupérer l'enveloppe d'un signal sonore...

    Re
    p%#§§n de 5min!
    Atmega 328P (le proc courant des arduino)
    Absolute Maximum Ratings
    Voltage on any Pin except RESET with respect to Ground . . . . . . . . . .-0.5V to VCC+0.5V
    DC Current per I/O Pin . . . . . . . . . . . . . . . . . . 40.0mA
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. [Numérique] passer d'un signal binaire à la génération d'un signal sonore
    Par invite83ff31e4 dans le forum Électronique
    Réponses: 6
    Dernier message: 07/07/2016, 08h34
  2. Calcul de l'enveloppe d'un signal
    Par invite3945ebf7 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 03/07/2009, 13h57
  3. transformée de Hilbert et enveloppe d'un signal
    Par erff dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 06/06/2008, 11h51
  4. Récupérer enveloppe signal filtré
    Par invitea13192b9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/03/2007, 12h47
  5. Enveloppe temporelle d'un signal
    Par invite4b9cdbca dans le forum Physique
    Réponses: 25
    Dernier message: 03/03/2007, 13h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...