Table des matières:

Vumètre analogique compatible Bluetooth : 6 étapes
Vumètre analogique compatible Bluetooth : 6 étapes

Vidéo: Vumètre analogique compatible Bluetooth : 6 étapes

Vidéo: Vumètre analogique compatible Bluetooth : 6 étapes
Vidéo: How to make VU Meter without any ic without transistors without PCB 2024, Novembre
Anonim
VU-mètre analogique compatible Bluetooth
VU-mètre analogique compatible Bluetooth

C'était mon projet pour l'un de mes cours universitaires appelé SMP. Comme nous utilisions la carte de développement STM32F103RB, j'ai basé mon projet là-dessus, en partant d'un simple VU-mètre. J'ai ensuite ajouté des fonctionnalités supplémentaires telles que la prise en charge Bluetooth pour diffuser les valeurs de l'ADC vers une application Android afin de créer un graphique dB simple.

Étape 1: Composants utilisés

  • Carte de développement STM32F103RB
  • Module Bluetooth HC-05 zs040
  • Panneau VU-mètre analogique (lien)
  • Micro à électret
  • Amplificateur-op quadruple LM324N
  • 2 transistors TIP120
  • 3 diodes 1N4148
  • Divers condensateurs et résistances

Bien que vous puissiez piloter ce circuit hors du rail 5V de la carte, j'ai également utilisé une alimentation externe 5V.

Étape 2: suiveur d'enveloppe

Suiveur d'enveloppe
Suiveur d'enveloppe
Suiveur d'enveloppe
Suiveur d'enveloppe

La pièce principale de cette conception est le suiveur d'enveloppe qui prend le signal du microphone à électret et délivre une tension proportionnelle à l'amplitude du signal du microphone.

Le signal brut du microphone passe d'abord par un amplificateur avec un gain de 150.

Le signal passe ensuite par le suiveur d'enveloppe réel qui ne doit sortir que les parties de signal positives.

La dernière partie consiste à soustraire la tension de décalage de 1,65 V de la sortie du suiveur d'enveloppe pour fournir un signal de 0 V pour aucun son, 1,65 V pour un son moyen et 3,3 V pour un son fort qui devrait être compatible avec le intégré ADC du conseil d'administration.

Ce suiveur d'enveloppe est implémenté à partir de cette excellente réponse StackExchange.

Étape 3: PWM pour le compteur analogique

Pour faire fonctionner l'aiguille de la jauge, j'ai configuré le temporisateur TIM4 de la carte du microcontrôleur avec une fréquence d'environ 500 Hz.

En essayant successivement différents cycles de service, je me suis fixé des valeurs suffisantes pour que l'aiguille passe de 0 à 100.

Je vais détailler le processus d'affichage d'une valeur exacte à l'étape suivante en appliquant quelques mathématiques.

Étape 4: Calibrage du microphone

Étalonnage du microphone
Étalonnage du microphone
Étalonnage du microphone
Étalonnage du microphone

Après avoir terminé le suiveur d'enveloppe, j'ai ensuite écrit un code simple pour utiliser l'ADC et vérifié que la valeur lue change effectivement en fonction du volume à l'intérieur de la pièce.

Afin de "traduire" cette valeur en une lecture réelle en dB, j'ai utilisé un générateur de sons en ligne avec une fréquence de 550 Hz et mon Android pour fournir une lecture de référence.

J'ai tracé ces valeurs et utilisé l'outil Curve Fit de MatLAB pour obtenir une fonction qui mappe les lectures ADC à des approximations réelles des niveaux de dB (ou au moins suffisamment proche des lectures de mon téléphone).

Nous pouvons voir que cela suit l'échelle logarithmique du microphone.

J'ai également fait la même chose pour mapper la position de l'aiguille sur les valeurs PWM. J'ai rassemblé ces valeurs en incrémentant la valeur PWM de 10 successivement jusqu'à ce que le besoin atteigne la lecture sur son échelle.

En combinant ces 2 fonctions, j'ai obtenu un moyen simple d'afficher la lecture de l'ADC à une valeur réelle sur l'indicateur de jauge.

Étape 5: Application Android

L'application utilise cette bibliothèque intéressante pour communiquer via une série Bluetooth afin d'échanger des informations sur les octets.

Le principal inconvénient de ce système est que la longueur maximale des mots envoyés via Bluetooth est de 8 bits et que la valeur ADC est représentée par 12 bits. Pour surmonter ce problème, j'ai divisé une valeur ADC en 2 valeurs distinctes de 6 bits (MSB et LSB) avec les 2 bits restants utilisés pour identifier le type de message (MSB, LSB, CHK).

Par conséquent, pour une seule valeur ADC que nous souhaitons diffuser, nous divisons la valeur réelle en 2 messages. Pour vérifier l'intégrité de ces messages, j'ai envoyé un troisième message avec le XOR des 2 premiers messages.

Une fois l'intégrité de la valeur vérifiée, nous pouvons appliquer la même fonction pour obtenir le niveau dB et le tracer sur notre graphique en direct.

Étape 6: Résumé

Bien que la partie micro-contrôleur de ce projet fonctionne assez bien pour afficher le volume à l'intérieur d'une pièce, j'ai rencontré quelques problèmes lors de l'envoi de données via Bluetooth en raison de la perte de paquets.

Le code source de ce projet se trouve ici:

  • Application compagnon Android - dépôt
  • Code du microcontrôleur - dépôt

N'hésitez pas à contribuer si vous trouvez cela utile de quelque manière que ce soit.

Conseillé: