Go Down

Topic: [RESOLU] AUDIO LINE OUT - ajouter composante continue (Read 5191 times) previous topic - next topic

Skuzmitoo

Sep 03, 2012, 06:26 pm Last Edit: Sep 03, 2012, 09:32 pm by Blizzard27 Reason: 1
Dans le cadre de mon projet je voudrais exploiter le signal audio qui sort de ma chaine hifi par un LINE OUT. Son niveau est donnée pour 2V. Je voudrais ajouter une composante continue a ce signal de 2,5V afin de pouvoir lire l'intégralité du signal avec la fonction AnalogRead() pour réaliser une FFT.

Comment faire pour ajouter une telle composante continue sur ce signal?

barbudor

Schéma ci dessous

Ampli-op : vu la bande passante considéré avec l'arduino, pas besoin d'aller chercher des AOP audio à 50€
Un bon vieux 741 ou similaire fait l'affaire

Les résistances : 2k à 4k7 ca ira bien

Capa NON POLARISE de 1 à 4uF (ou bien 2 capa polarisée en série mais en sens inverse du double de la valeur)

N'oublie pas que l'Arduino a des capacité d’échantillonnage limitée.
Si c'est pour faire de la mesure de niveau il faut peut être faire un circuit de mesure de crête avec filtrage passe-bas.

Skuzmitoo

Oups j'ai oublié de préciser sans AOP si possible car un bête sommateur peu le faire j'y avais penser, j'ai trouver sur le net des gens qui parlaient de restaurateur de tension positive mais j'ai pas trouver de schéma, apparement cela se ferait avec résistance et diode.

Skuzmitoo

Je souhaite traiter le signal avec une librairie FFT en ASM qui fonctionne très bien, et oui cela est pour faire de la lecture de niveau audio.

Skuzmitoo

Bon je me suis resigné, j'utiliserai un AOP en sommateur mais non inverseur :


Pour l'AOP je suis obligé d'utiliser un AOP Single-Supply, Rail-to-Rail car je veux utiliser le 0 - +5V de mon alimentation, c'est un peu luxueux mais je n'ais pas trop le choix, je prendrais donc un AD820.

J'ai marqué résolu mais si quelqu'un a le montage pour ajouter une composante continue sans AOP je suis toujours preneur.

barbudor

Ah, du traitement du signal
Allo, Shannon, Nyquist ? Vous êtes là ?

Bon, en théorie si tu veut faire du traitement du signal propre il faut :
- une fréquence d'échantillonnage stable, donc pas un échantillonnage par soft mais un échantillonnage drivé par un timer, si possible avec DMA ;)
- un filtre passe bas externe pour assurer que ton signal ne comporte pas de fréquence supérieure à 1/2 la fréquence d'échantillonnage

la fréquence d'échantillonnage max avec l'ATmega doit être de l'ordre de 9kHz, ce qui veut dire que tu ne peux échantillonner un signal ne comportant pas de fréquence suppérieure à 4.6kHz. Il faut un filtre qui commence à couper à 3,5 kHz et qui soit aux environ de -48dB à 4.5kHz, c'est à dire un ordre 16 = 16 étages de filtres enchainés...

http://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d'%C3%A9chantillonnage_de_Nyquist-Shannon (un peu léger l'article :()

Bref, rien qui soit dans le domaine de faisabilité d'un ATmega.

Risque : repliement de spectre et ta FFT va te sortir des valeurs fantôme de fréquences autres qui se sont repliées.
Par exemple si tu échantillonne à 8kHz un signal qui comporte un sinus à 7kHz, dans ta FFT que tu considère que de 1 à 4 kHz, tu verra un pic (on dit une raie) à 1kHz
Donc tout faux.

Normalement on travaille en sur-échantillonage : on met un filtre analogique "doux" qui prend 1 ou 2 octave pour atténuer les hautes fréquences, on échantillonne à au moins 4 fois la fréquence requise, puis on fait un filtrage numérique "dur" et on sous-échantillonne.
Mais ca c'est avec des DSP.

barbudor


Bon je me suis resigné, j'utiliserai un AOP en sommateur mais non inverseur :

La capa reste fortement conseillée pour supprimer la composante continue possible entre les 2 circuits.

Skuzmitoo

oui la capa est prévue pour enlever la composante continu, j'ai un condensateur tantale qui doit trainer par là qui fera très bien l'affaire.

Pour ce qui est de la FFT, peu importe les théorèmes qui se cachent derrière, elle réalise ce que je souhaite, a savoir détecter les basses , medium et aigu d'un signal audio, le site sur laquelle je l'ai trouvée est le suivant :http://neuroelec.com/2011/03/fft-library-for-arduino/.

Maintenant si des "fantômes"  :smiley-mr-green: apparaissent ce n'est pas bien grave, c'est pour un jeu de lumière avec des LEDs RGB 3W.

barbudor

Une solution plus simple c'est d'utiliser 3 filtres (passe-bas, passe-bande et passe-haut) suivit de filtre pour détecter uniquement le niveau crête.
Ca fait 3 ampli op, un peu plus de capa/résistances.
c'est simple en terme de soft

Mais c'est pas toi qui en parlait déjà sur un autre topic ?
Il me semble avoir vu un schéma de ce genre dans les dernières semaines.

Skuzmitoo

Oui au début je voulais utiliser des filtres passes bandes et j'ai testé la librairie FFT qui faisait ce que je souhaitais donc j'ai laisser tomber les filtres.

Je viens de commander a l'instant 4 MSGEQ7 en chine pour un prix dérisoire, ce sont des equalizer graphic 7 bandes et avec cela plus besoin de filtres ni de FFT
La datasheet : https://www.sparkfun.com/datasheets/Components/General/MSGEQ7.pdf

barbudor

Sympa bien que le titre ne soit pas exact. C'est plus un analyseur de niveau par bande qu'un "graphic equalizer" qui permet de corriger le son lui même.
Mais ca semble bien adapté à ton projet en tout cas.

Skuzmitoo

Oui le titre n'est pas très adapté en effet, mais la on s'éloigne du sujet initial qui était ajouter une composante continue sans AOP

68tjs

Je prends le train en route.
Il n'est pas besoin d'avoir un ampli op pour ajouter une composante continue : une capa et un simple pont de résistance suffisent.
Les entrées de l'ATMega sont à haute impédance on peut se contenter d'un pont qui consomme au plus 1 mA ce qui donne environ deux résistances de 2 et 3 Kohms (centrage sur 2V -> voir l'explication en dessous).

Valeur de la composante continue:
Sur un ATMega la discrimination du "0" et du "1" se fait à une valeur fixe centrée autour de 2,4V avec très peu d'hystérésis (voir la datasheet). En utilisation en mode digital si on veut éviter les résultats aléatoires il faut s'éloigner de cette valeur de 2,4V.
Je suppose que quand on utilise le convertisseur analogique/digital  la partie digitale est isolée mais je pense qu'il est inutile de chercher les ennuis par plaisir et personnellement je choisirai une composante centrée vers 2 Volt.

Skuzmitoo

Peu tu expliquer comment tu câbles ta capa et ton pont de résistance STP, tu mets la capa en parallèle sur la résistance du pont diviseur ?

68tjs

Schéma en Pj
Ce n'est rien de plus qu'un classique circuit de polarisation d'un transistor monté en amplificateur analogique.

Go Up