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?
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?
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:
Réponses:
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é;
Il s'agit d'un simple amplificateur inverseur avec un gain de 100. Voici la formule pour calculer le gain;
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.
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;
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:
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;
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;
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;
Pour ce faire, nous utiliserons un amplificateur différentiel ou en d'autres termes un " soustracteur ".
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:
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:
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:
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.
la source
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.
la source
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 ...
la source