Sommario:

VU Meter analogico abilitato Bluetooth: 6 passaggi
VU Meter analogico abilitato Bluetooth: 6 passaggi

Video: VU Meter analogico abilitato Bluetooth: 6 passaggi

Video: VU Meter analogico abilitato Bluetooth: 6 passaggi
Video: LINN klimax DSM 2024, Dicembre
Anonim
VU Meter analogico abilitato Bluetooth
VU Meter analogico abilitato Bluetooth

Questo era il mio progetto per una delle mie classi universitarie chiamata SMP. Poiché utilizzavamo la scheda di sviluppo STM32F103RB, ho basato il mio progetto su questa, partendo da un semplice VU meter. Ho quindi aggiunto alcune funzionalità extra come il supporto Bluetooth per trasmettere i valori dall'ADC a un'app Android per creare un semplice grafico dB.

Passaggio 1: componenti utilizzati

  • Scheda di sviluppo STM32F103RB
  • Modulo bluetooth HC-05 zs040
  • Pannello VU meter analogico (link)
  • Microfono elettrete
  • LM324N amplificatore operazionale quadruplo
  • 2 transistor TIP120
  • 3 diodi 1N4148
  • Vari condensatori e resistori

Sebbene sia possibile pilotare questo circuito dalla guida 5V della scheda, ho anche utilizzato un alimentatore esterno da 5V.

Passaggio 2: follower busta

Seguace della busta
Seguace della busta
Seguace della busta
Seguace della busta

Il pezzo principale di questo design è l'inseguitore dell'inviluppo che prende il segnale dal microfono a elettrete ed emette una tensione proporzionale all'ampiezza del segnale del microfono.

Il segnale grezzo dal microfono viene prima passato attraverso un amplificatore con un guadagno di 150.

Il segnale viene quindi passato attraverso l'effettivo inseguitore di inviluppo che dovrebbe emettere solo le parti del segnale positivo.

L'ultima parte sottrae la tensione di offset di 1,65 V dall'uscita dell'inseguitore dell'inviluppo per fornire un segnale di 0 V per nessun suono, 1,65 V per suono medio e 3,3 V per suono forte che dovrebbe essere compatibile con il built-in ADC del consiglio.

Questo seguace della busta è implementato da questa fantastica risposta StackExchange.

Passaggio 3: PWM per il misuratore analogico

Per far funzionare l'ago del misuratore, ho configurato il timer TIM4 della scheda del microcontrollore con una frequenza di circa 500 Hz.

Provando successivamente diversi duty cycle mi sono accontentato di alcuni valori che erano sufficienti per far passare la lancetta da 0 a 100.

Descriverò in dettaglio il processo di visualizzazione di un valore esatto nel passaggio successivo applicando alcuni calcoli.

Passaggio 4: calibrazione del microfono

Calibrazione del microfono
Calibrazione del microfono
Calibrazione del microfono
Calibrazione del microfono

Dopo aver eseguito il follower della busta, ho quindi scritto un semplice codice per utilizzare l'ADC e verificato che il valore letto cambia effettivamente in base al volume all'interno della stanza.

Per "tradurre" questo valore in una lettura dB effettiva, ho utilizzato un generatore di suoni online con una frequenza di 550 Hz e il mio Android per fornire una lettura di riferimento.

Ho tracciato quei valori e ho usato lo strumento Curve Fit di MatLAB per ottenere una funzione che mappa le letture ADC su approssimazioni effettive dei livelli dB (o almeno abbastanza vicino alle letture del mio telefono).

Possiamo vedere che questo segue la scala logaritmica del microfono.

Ho anche fatto la stessa cosa per mappare la posizione dell'ago sui valori PWM. Ho raccolto quei valori incrementando il valore PWM di 10 successivamente fino a quando la necessità non ha raggiunto la lettura sulla sua scala.

Combinando queste 2 funzioni ho ottenuto un modo semplice per visualizzare la lettura da ADC a un valore effettivo sull'indicatore del manometro.

Passaggio 5: app per Android

L'app utilizza questa fantastica libreria per comunicare tramite seriale Bluetooth per scambiare informazioni sui byte.

L'avvertenza principale di questo sistema è che la lunghezza massima della parola inviata tramite Bluetooth è di 8 bit e il valore ADC è rappresentato come 12 bit. Per superare questo problema, ho diviso un valore ADC in 2 valori separati a 6 bit (MSB e LSB) con i restanti 2 bit utilizzati per identificare il tipo di messaggio (MSB, LSB, CHK).

Pertanto, per un singolo valore ADC che vogliamo trasmettere, dividiamo il valore effettivo in 2 messaggi. Per verificare l'integrità di quei messaggi, ho inviato un terzo messaggio con lo XOR dei primi 2 messaggi.

Dopo aver verificato l'integrità del valore, possiamo applicare la stessa funzione per ottenere il livello dB e tracciarlo sul nostro grafico in tempo reale.

Passaggio 6: riepilogo

Mentre la parte del microcontrollore di questo progetto funziona abbastanza bene visualizzando il volume all'interno di una stanza, ho riscontrato alcuni problemi durante l'invio di dati tramite Bluetooth a causa della perdita di pacchetti.

Il codice sorgente per questo progetto può essere trovato qui:

  • App complementare per Android - repository
  • Codice microcontrollore - repository

Sentiti libero di contribuire se lo trovi utile in qualche modo.

Consigliato: