Comment puis-je obtenir + 5v pour le bruit fort, 0v pour le silence du microphone à électret (ou d'autres composants)?


12

J'ai posé quelques questions ici pour arriver à une bonne, les premières questions que j'ai posées sont liées à la fin. J'ai utilisé Fritzing pour composer quelques schémas de mes pensées initiales, mais au moins j'ai besoin d'aide avec les valeurs sur les composants, que je ne comprends que vaguement et j'ai choisi ce qui semble être des valeurs raisonnables ou communes.

En gros, j'ai un Arduino qui a 6 entrées analogiques. Il utilise un ADC 10 bits pour lire la tension sur l'une des broches analogiques, donc 0 = 0v, 511 = 2,5v et 1023 = 5v, et toutes les valeurs entre les deux. Cela fait une lecture LINEAR DC, donc je ne recherche pas la logique 1-0 ici.

Je l'ai accroché aux lumières LED, et je veux les faire réagir à la musique. Ce que je veux, c'est une résolution maximale avec un minimum de composants, et je pense que j'utilise beaucoup trop de composants et que cela rend trop complexe. Peut-être que les microphones Electret ne sont pas ce que je veux ici, je suis ouvert à autre chose. Je préfère ne pas utiliser d'amplificateurs opérationnels pour économiser de l'espace sur mon PCB.

Ce que je veux, c'est un simple capteur de niveau de bruit. Je ne cherche pas à reproduire l'audio, ni à avoir de la clarté ou quoi que ce soit, mais j'aimerais, aussi proche que possible, obtenir:

  • Perfect Silence = aussi proche de 0v DC (stable, pas AC) que possible
  • Bruit moyen = environ 2,5 V CC (stable, pas CA)
  • Bruit fort = aussi proche de 5v DC (stable, pas AC) que possible

Je comprends avec un BJT que le meilleur que je puisse obtenir sera de 0,6v à 4,4v, mais cela est assez acceptable. Ce qui ne l'est cependant pas, c'est la moitié de l'onde, de 0,6v à 2,5v. Cela semble gaspiller la moitié de ma résolution disponible sans raison. Cependant, s'il existe d'autres configurations qu'un BJT qui peuvent me rapprocher du 0v-5v, je serais intéressé à leur donner un coup de feu; tant qu'ils sont simples.

En voici une plus simple, j'espère que cela est possible, mais cela nécessite que le signal électret ait suffisamment d'amplitude pour piloter le circuit détecteur d'enveloppe (diode, résistance et condensateur) pour obtenir uniquement la moitié positive. Je ne pense pas que ce soit possible à cause de la chute vers l'avant de la diode, mais peut-être que cela peut être réorganisé ou fait avant le plafond de sortie? Quelles devraient être les valeurs du détecteur d'enveloppe et des résistances de l'amplificateur? Un potentiomètre de sensibilité doit-il être placé sur le signal, ou RE, ou RL, et quelle doit être sa valeur? Linéaire ou logarithmique?

Facile

Cependant, peut-être que la sortie d'électret ne peut pas survivre au détecteur d'enveloppe, au shunt de sensibilité et toujours piloter un transistor NPN. Sinon, voici une version plus complexe. Dois-je suivre cette voie? Est-ce que l'obtention de la sortie souhaitée du circuit nécessite vraiment tous ces composants?

Complexe

Voici quelques-unes des dernières questions que j'ai posées avant de mieux comprendre ce que j'essayais d'articuler, pour plus de détails. Voici ce que le détecteur d'enveloppe est censé faire, et je ne sais pas comment le régler pour la sortie de l'électret:

Détecteur d'enveloppe Schéma


Je pense que c'est encore assez large. La question que vous devriez vous poser est "qu'est-ce que cela signifie pour un son d'être fort?" La perception humaine de l'intensité sonore est complexe et peut dépendre de la fréquence, de la durée du son, de l'humeur, de la consommation de café, etc. La perception humaine du "silence" dépend également fortement de l'environnement et du bruit ambiant. Vous devrez traduire ces perceptions subjectives en définitions plus objectives avant de pouvoir réaliser un circuit électrique pour les mesurer.
Phil Frost

Voici quelques termes de recherche qui vous aideront: "détecteur de crête" "circuit RC" "constante de temps" "fréquence d'angle" "filtre passe-bas" "dB SPL"
Phil Frost

J'ai ce potentiomètre de sensibilité dans la conception pour tenir compte de cela (il doit être suffisamment large pour qu'il puisse être «effectivement tout silencieux» ou «toujours fort», et je peux régler à partir de là). Je ne sais pas si cela devrait être à la place de RL, RE (contrôler le gain ou quelque chose), ou shunter le signal. Je ne sais pas comment je pourrais être plus précis, pourriez-vous aider à clarifier ce qui est nécessaire de plus?
Ehryk

1
Si vous changez la tension de référence ADC du contrôleur en bande interdite 2V56, vous n'avez pas besoin de la tension de sortie 0-5V. Vous atteindrez la pleine résolution de 0 à 2,56 V. Selon le contrôleur exact, vous avez différentes tensions de bande interdite à utiliser comme référence.
jippie

1
Recherchez «redresseur actif à petit signal» et trouvez un circuit comme techonlineindia.com/Libraries/tol/Signal3.sflb.ashx qui supprime la tension de seuil de diode de l'équation.
jippie

Réponses:


27

Bien que vous puissiez faire tout cela avec juste un amplificateur et un microcontrôleur (Arduino), autant que je sache, vous voulez l'option analogique. J'ai essayé de créer un circuit qui produit le niveau de voix sur le microphone. La plage est de 0V à 4V. Cependant, vous pouvez facilement le mettre à niveau de 0V à 5V en changeant simplement l'OP-AMP. Maintenant, allons-y;

Tout d'abord, j'ai remplacé l'amplificateur à transistor par l'OP-AMP. Voici ce que j'ai trouvé;

entrez la description de l'image ici

Il s'agit d'un simple amplificateur inverseur avec un gain de 100. Voici la formule pour calculer le gain;

Vout=RfRinVin=100kRinVin=100Vin

Comme vous pouvez le voir, U1 prend le signal d'entrée, l'inverse puis le multiplie par 100. Vous pouvez changer R2 ou R3 et vous verrez que le gain de U1 change. L'inversion du signal d'entrée n'a pas d'importance ici, comme vous le comprendrez plus tard. Regardons la sortie de cet amplificateur, et vous verrez qu'il y a une forte croissance sur le signal d'entrée.

entrez la description de l'image ici

Dans le graphique ci-dessus, vous verrez que la sortie a une tension de décalage CC de 2,5 volts. C'est à cause du terrain virtuel que nous avons utilisé. Si nous créons une masse virtuelle, cela signifie que nous portons la terre à un autre niveau de tension. Dans ce cas, nous l'avons déplacé à 2,5 V. Avec la nouvelle configuration, nous avons créé quelque chose qui ressemble à -2,5 V, 0 V et 2,5 V au circuit. Pour ce faire, j'ai dû créer un nouveau rail de tension de 2,5 volts. Étant donné que ce rail de tension ne fournira pas beaucoup de puissance (moins de 1 mA), il est facile à créer;

entrez la description de l'image ici

V+=V

Après l'amplification, nous devrions mettre le signal sur un "détecteur d'enveloppe" ou en d'autres termes, "suiveur d'enveloppe". Cela obtiendra le niveau du signal, comme vous le souhaitez et comme vous l'avez montré dans l'image dans votre question. Voici à quoi ressemble un suiveur d'enveloppe de base:

entrez la description de l'image ici

Il a l'air très bien, cependant, notez qu'ici, D3 est une diode et qu'il baisse d'environ 0,6 V sur lui-même. Donc, vous perdez la tension. Pour surmonter cela, nous allons utiliser ce qu'on appelle la "super-diode". C'est super, car la chute de tension est proche de 0V! Pour y parvenir, nous incluons un OP-AMP avec une diode, et c'est tout! L'OP-AMP compensera la chute de tension de la diode, et vous aurez une diode presque idéale;

entrez la description de l'image ici

V+=VVVV+

Maintenant, changez D3 dans le circuit suiveur d'enveloppe ci-dessus avec une super-diode, et vous avez un meilleur suiveur d'enveloppe! Regardons notre résultat;

entrez la description de l'image ici

Nous approchons. Comme vous pouvez le voir, la sortie du suiveur d'enveloppe, qui est la ligne rouge, peut aller de 2,5 V à 4 V. 2,5 V est sans son, 4 V avec un son fort et 3,25 V avec un son moyen. Pour l'adapter à ce que vous vouliez, nous pouvons soustraire la tension de décalage de 2,5 V et l'adapter. Ainsi, lorsque vous soustrayez 2,5 V, cela devient; 0 V pour aucun son, 1,5 V pour un son fort et 0,75 V pour un son moyen, etc. Après cela, si vous multipliez cela par environ 3, vous obtiendrez exactement ce que vous voulez. 0 V pour aucun son, 2,5 V pour un son moyen et 5 V pour un son fort. Pour récapituler, ce que nous voulons, c'est ceci;

Vout=(Vin2.5V)3

Pour ce faire, nous utiliserons un amplificateur différentiel ou en d'autres termes un " soustracteur ".

entrez la description de l'image ici

Lorsque les résistances, R1 = R2 et R3 = R4, la fonction de transfert pour l'amplificateur différentiel peut être simplifiée à l'expression suivante:

Vout=R3R1(V2V1)

Si vous faites V1 = 2,5 V et le rapport R3 / R1 3, vous obtiendrez la sortie que vous souhaitez.

Voici le schéma complet qui fera ce que vous voulez:

entrez la description de l'image ici

J'ai utilisé LM324 OP-AMP ici à des fins de simulation. Cela limitera la tension de sortie maximale à 4V. Afin d'avoir une sortie de gamme complète, vous devez utiliser une sortie rail-à-rail OP-AMP. Je suggère MCP6004 . Modifiez R1 et R2 jusqu'à obtenir le résultat souhaité. Voici ce que j'ai obtenu avec la simulation:

entrez la description de l'image ici

Maintenant, lors de la mesure de ces valeurs dans l'ADC, vous n'obtiendrez pas de sens linéaire , mais le son est mieux compris logarithmique, car nos oreilles entendent de cette façon. Donc, vous devez utiliser des décibels . Si vous n'êtes pas familier avec les décibels, voici un excellent tutoriel vidéo à ce sujet.

Une pièce calme, par exemple, est mesurée à environ 40 dB. Une fête dans une pièce fera monter le niveau de la pièce à 100 dB, voire 110 dB. Dans ce site Web , vous pouvez trouver d'excellentes informations à ce sujet, d'où j'ai également intégré l'image ci-dessous. Pensez aux niveaux de décibels et expérimentez la tension de sortie du circuit. Ensuite, calculez la résolution ADC dont vous aurez besoin. Probablement, vous irez bien avec un ADC 12 bits.

entrez la description de l'image ici


5
C'est une réponse phénoménale; si SE avait un temple de la renommée, je le proposerais. Merci d'être très précis et explicatif! Comment générez-vous ces images, une capture à partir d'un ocsilloscope, d'un logiciel de portée PC ou d'un algorithme de résolution?
Ehryk

1
@Ehryk Merci, mais vous exagérez :). C'est LTSpice que j'utilise.
abdullah kahraman

@Ehryk J'ai mis à jour ma réponse et ajouté plus d'informations sur la mesure du son.
abdullah kahraman

Utilisez circuitlab pour pouvoir partager et demander aux gens d'exécuter immédiatement des simulations! Je vais vous donner 50 représentants pour cela.
Kortuk

1
@Kortuk Je n'ai pas pu le simuler correctement .. CircuitLab Link
abdullah kahraman

7

Vous semblez être sur la bonne voie. Il fait prendre beaucoup de composants discrets pour faire ce genre de chose. Vous ne me croyez peut-être pas, mais l'utilisation d'amplificateurs opérationnels peut rendre tout cela plus simple et plus petit. Je suis sûr que vous pouvez trouver des circuits intégrés encore plus spécifiques qui font plus de ce dont vous avez besoin dans un boîtier plus petit. Je parie qu'il y a un circuit intégré qui fait exactement ce dont vous avez besoin. Cependant, vous en apprendrez plus si vous continuez sans eux, ne serait-ce que pour la valeur académique.

Vous pouvez également simplifier cela en déplaçant la logique dans le microprocesseur. La détection d'enveloppe est facile dans le logiciel, et selon la précision dont vous avez besoin et la sensibilité de votre microphone, vous pourriez même vous en sortir en omettant l'amplificateur après le microphone et en plaçant sa sortie directement dans l'ADC. Cela ne vous donnera pas 0V-5V, mais est-ce important? Vous pouvez le multiplier par une constante dans le logiciel. Ce que vous perdez, c'est la précision d'avoir la gamme complète de l'ADC disponible, mais ce n'est peut-être pas aussi important que la simplicité. Tu décides.


Je ne vous crois pas que les amplis opérationnels puissent le faire plus simplement, j'essayais de minimiser l'immobilier en PCB. Cependant, il devient douloureusement évident qu'un dip 8 broches LM358 sera DRASTIQUEMENT plus simple. Je me demande également si un microphone à électret est également un mauvais choix; il semble ridicule qu'un désir aussi simple (intensité sonore, 0V-5V) soit d'une complexité insensée.
Ehryk

Un électret à lui seul donne ~ 20mV crête à crête. Avec l'ADC de l'Arduino, il s'agit d'une différence de deux entre parfaitement silencieux et le plus fort possible (résolution de 4,9 mV, si 511 lorsqu'il est silencieux, 513 à 509 à fond). Je veux de bonnes gammes de sensibilité, pas "Silent / Medium / Loud" comme seuls dégradés, et cela suppose que la ligne était parfaitement stable.
Ehryk

@Ehryk si vous voulez simplement garder les choses petites, je suis sûr que vous pouvez trouver le LM358 (ou tout autre ampli op commun) dans un grand boîtier de montage en surface comme SOIC . Beaucoup facile à souder à la main avec de bons outils, et vous n'avez pas à percer de trous. À moins d'acheter un capteur qui fait déjà exactement ce dont vous avez besoin, je doute que vous fassiez plus simple qu'un microphone à électret et que vous déplaciez tout sauf la polarisation et l'amplification dans le microcontrôleur.
Phil Frost

4

Tout d'abord, vous n'avez pas besoin de l'arduino à moins que vous ayez besoin de faire plus de traitement - tout ce que vous voulez vraiment est un amplificateur (un ampli-op le ferait, des charges de circuits de base partout dans les googles) pour augmenter la sortie du micro dans la plage 0-5v. Si vous n'êtes pas trop préoccupé par la précision (car c'est pour le plaisir plutôt que pour la mesure scientifique), vous pouvez utiliser un circuit d'écrêtage assez basique, canaliser la sortie dans un déclencheur schmitt ou utiliser un LM3914 pour générer un affichage.

Un peu plus de finesse pourrait être obtenue en créant un circuit AGC pour augmenter et diminuer automatiquement le gain avec le niveau moyen.

Quoi qu'il en soit, vous obtenez un karma positif majeur en abandonnant l'arduino et en le faisant analogique comme le veut la nature;)

Edit: Il y a de fortes chances qu'il y ait aussi beaucoup de circuits de "préampli micro" sur le Web, probablement une puce SOT23 de 0,10 $ pour le faire pour vous ces jours-ci ...


L'arduino contrôle un réseau de LED avec 5 de ses broches PWM, et je le ferai clignoter différentes lettres / motifs à la luminosité de diverses fractions de l'entrée de bruit. Donc - l'arduino est requis, et j'ai en quelque sorte besoin de lui dire, avec une bonne résolution, à quel point il est fort pour qu'il puisse PWM le motif à différents degrés de luminosité de la musique. Je ne sais pas vraiment de quoi vous parlez sans schéma de circuit.
Ehryk

N'observez pas les schémas de circuits, je décris des circuits qui sont des blocs de construction de base, présentés dans tous les manuels, un rapide google devrait créer des circuits de base pour diverses fonctions (pré-ampli, AGC, clipper, etc.) ainsi que les choses plus disco (circuits d'égalisation graphique, pilotes d'affichage, orgues, etc.) qui ont fait l'objet d'électronique de loisir depuis l'invention de Disco.
John U

Le problème est qu'il y a trop d'exemples, avec des composants et des «fonctionnalités» variés, vaguement décrits ou pas du tout décrits. Des diagrammes spécifiques avec des explications sur les raisons pour lesquelles certains composants ont été sélectionnés et les valeurs atteintes sont ce que je trouve le plus utile et ce que je demande habituellement dans mes questions. Cette réponse a été phénoménale et extrêmement utile, par exemple.
Ehryk

Vous demandez lego, je vous propose un morceau de plastique et un scalpel, c'est juste une approche différente.
John U

2
... et je réponds par le fait que j'ai déjà 10 morceaux de plastique et mon propre scalpel, et que je peux en obtenir des centaines de plus en cherchant. De plus, j'ai spécifiquement demandé un lego dans la question, et vous dites «ne vous attendez pas à des legos».
Ehryk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.