Taula de continguts:

Mesurador de VU analògic habilitat per Bluetooth: 6 passos
Mesurador de VU analògic habilitat per Bluetooth: 6 passos

Vídeo: Mesurador de VU analògic habilitat per Bluetooth: 6 passos

Vídeo: Mesurador de VU analògic habilitat per Bluetooth: 6 passos
Vídeo: Casio G-Shock GMW-B5000D-1E - честный обзор и отзыв, плюсы и недостатки. Стальные Касио Джишок 5000. 2024, Desembre
Anonim
Mesurador de VU analògic habilitat per Bluetooth
Mesurador de VU analògic habilitat per Bluetooth

Aquest va ser el meu projecte per a una de les meves classes universitàries anomenada SMP. Mentre utilitzàvem la placa de desenvolupament STM32F103RB, vaig basar el meu projecte en això, partint d’un simple mesurador de VU. A continuació, he afegit algunes funcions addicionals, com ara suport Bluetooth, per transmetre valors des de l’ADC a una aplicació per a Android per crear un gràfic simple de dB.

Pas 1: components utilitzats

  • Taula de desenvolupament STM32F103RB
  • Mòdul bluetooth HC-05 zs040
  • Tauler analògic de mesurador de VU (enllaç)
  • Micròfon electret
  • Amplificador operatiu quad LM324N
  • 2 transistors TIP120
  • 3 díodes 1N4148
  • Diversos condensadors i resistències

Tot i que podeu allunyar aquest circuit del carril de 5V de la placa, també he utilitzat una font d'alimentació externa de 5V.

Pas 2: seguidor del sobre

Seguidor del sobre
Seguidor del sobre
Seguidor del sobre
Seguidor del sobre

La peça principal d’aquest disseny és el seguidor de l’embolcall que pren el senyal del micròfon electret i genera una tensió proporcional a l’amplitud del senyal del micròfon.

El senyal cru del micròfon es passa primer per un amplificador amb un guany de 150.

El senyal es passa a través del seguidor de l'embolcall real, que només ha de generar les parts del senyal positives.

La darrera part és restar la tensió de desplaçament d’1,65 V de la sortida del seguidor de l’embolcall per proporcionar un senyal de 0 V si no hi ha so, 1,65 V per a so mitjà i 3,3 V per a so alt que hauria de ser compatible amb la funció incorporada ADC de la junta.

Aquest seguidor del sobre s’implementa a partir d’aquesta gran resposta de StackExchange.

Pas 3: PWM per al comptador analògic

Per fer funcionar l’agulla de l’indicador, he configurat el temporitzador TIM4 de la placa de microcontroladors amb una freqüència d’uns 500 Hz.

En provar successivament diferents cicles de treball, m’he conformat amb alguns valors que eren suficients per aconseguir que l’agulla passés de 0 a 100.

Detallaré el procés de mostrar un valor exacte al següent pas aplicant algunes matemàtiques.

Pas 4: calibració del micròfon

Calibració del micròfon
Calibració del micròfon
Calibració del micròfon
Calibració del micròfon

Després de fer el seguidor del sobre, vaig escriure un codi senzill per utilitzar l'ADC i vaig comprovar que el valor de lectura canvia en funció de la intensitat de l'habitació.

Per tal de "traduir" aquest valor a una lectura de dB real, he utilitzat un generador de tons en línia amb una freqüència de 550 Hz i el meu Android per proporcionar una lectura de referència.

He representat aquests valors i he utilitzat l'eina Curve Fit de MatLAB per obtenir una funció que assigna les lectures ADC a aproximacions reals dels nivells de dB (o almenys prou a prop de les lectures del meu telèfon).

Podem veure que això segueix l’escala logarítmica del micròfon.

També vaig fer el mateix per assignar la posició de l’agulla als valors PWM. Vaig reunir aquests valors incrementant el valor PWM en 10 successivament fins que la necessitat va tocar la lectura a la seva escala.

Combinant aquestes dues funcions, he obtingut una manera senzilla de mostrar la lectura de l'ADC a un valor real a l'indicador de manòmetre.

Pas 5: aplicació per a Android

L’aplicació utilitza aquesta fantàstica biblioteca per comunicar-se mitjançant sèrie Bluetooth per intercanviar informació de bytes.

La principal advertència d’aquest sistema és que la longitud màxima de les paraules enviades per Bluetooth és de 8 bits i el valor ADC es representa com a 12 bits. Per superar aquest problema, he dividit un valor ADC en 2 valors separats de 6 bits (MSB i LSB) amb els 2 bits restants utilitzats per identificar el tipus de missatge (MSB, LSB, CHK).

Per tant, per a un únic valor ADC que vulguem emetre, dividim el valor real en 2 missatges. Per comprovar la integritat d'aquests missatges, he enviat un tercer missatge amb el XOR dels dos primers missatges.

Després de comprovar la integritat del valor, podem aplicar la mateixa funció per obtenir el nivell de dB i representar-lo al nostre gràfic en viu.

Pas 6: resum

Tot i que la part del microcontrolador d’aquest projecte funciona bastant bé amb la visualització de la intensitat dins d’una habitació, he trobat alguns problemes en enviar dades per Bluetooth a causa de la pèrdua de paquets.

El codi font d’aquest projecte es pot trobar aquí:

  • Aplicació complementària d'Android: repositori
  • Codi del microcontrolador - repo

No dubteu a contribuir si us sembla útil d’alguna manera.

Recomanat: