Realizzazione sound level meter (fonometro)

Progetti Arduino
Rispondi
sabruri1
Messaggi: 13
Iscritto il: sab 27 feb 2021, 0:25

Realizzazione sound level meter (fonometro)

Messaggio da sabruri1 »

Buongiorno a tutti!

Come già accennato nel post delle presentazioni, sto realizzando un sound meter, non proprio in Arduino ma su un microcontrollore della ST (F446RE). Uso un microfono più un integrato che fa da amplificatore della maxim, il MAX4466. Tutto contenuto all'interno di una schedina Adafruit 1063.

Per misurare il livello di pressione sonora, acquisisco i dati dalla schedina tramite l'ADC dell'F446RE con risoluzione pari a 12 bit e dunque uno spazio di valori compreso tra 0 e 4095.

Io conosco i valori di:
  • Sensitività del microfono: -44dB
  • Guadagno dell'amplificatore: 41dB
  • Bias in tensione introdotto dall'amplificatore: Vcc/2 = 1.65V
Il livello di pressione sonora, è dato dalla seguente equazione:
equation.png
equation.png (3.26 KiB) Visto 2888 volte
Dove Sdb è la sensitività del microfono, p0 è il livello di pressione sonora di riferimento 94dB, e gain è il guadagno introdotto dall'integrato pari a 41dB.

Vrms la calcolo invece così:
equation(1).png
equation(1).png (4.26 KiB) Visto 2888 volte
Infine, xi è il valore ottenuto dall'ADC ed N è il numero di samples sul quale effettuo il conto: 800, con una frequenza di campionamento pari a 8K.

Il problema, in tutto ciò è che ottengo un valore in assoluto silenzio pari a 58dB. Quando con altri fonometri ne ottengo a stento 38. Sembrerebbe quindi esserci uno shift di 20dB e non riesco in nessun modo a comprenderne il motivo. La cosa strana è che lo shift sembra esserci solo quando c'è silenzio, o comunque in presenza di poco rumore. Man mano che il rumore aumenta, il valore che ottengo sembra essere corretto.

Ho provato a scriverne una versione per Arduino, e ottengo gli stessi risultati.

Per quanto mi riguarda, penso sia qualcosa di hardware che non va nel modulo di amplificazione. Qui trovate le specifiche dei componenti che sto usando:

Specifiche della capsula microfono
Modulo Adafruit per l'amplificazione del segnale
Datasheet MAX4466

P.S. Ho settato il potenziometro VR1 del modulo dell'adafruit per avere una resistenza di 100k. Motivo per cui ottengo il guadagno di 41dB.

Qualcuno ha idea di cosa altro possa provare? :D :D
Grazie mille a tutti :)
Avatar utente
pgv
Messaggi: 483
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Realizzazione sound level meter (fonometro)

Messaggio da pgv »

Senza averci pensato e limitandomi a leggere le specifiche del microfono, trovo quanto segue:
note: We use the “Pascal (Pa)” indication of sensitivity as per the recomendation of I.E.C. (International
Electrotechnical Commission). The sensitivity of “Pa” will increase 20dB compared to the “ubar”
indication. Example: -60dB (0dB = 1V/ubar) = -40dB (1V/Pa)
che parla di una differenza dal valore sospetto di 20 dB dovuta all'utilizzo dell'unita' "Pa" rispetto all'unita' "ubar".
Sara' mica tutto qui?
sabruri1
Messaggi: 13
Iscritto il: sab 27 feb 2021, 0:25

Re: Realizzazione sound level meter (fonometro)

Messaggio da sabruri1 »

Vista anche io quella cosa, sfortunatamente tutte le mie unità di misura iniziali sono in V/Pa e loro la sensitività del microfono la danno già in V/Pa trasformata in dB.
sensitivity (S)-44 ±2 dBf = 1KHz, 1Pa 0dB = 1V/Pa
Ho anche pensato, vabbè magari si saranno sbagliati e l'hanno fornita in ubar. Ma avrebbe poco senso perchè il 90% dei microfoni di quel tipo hanno quella sensitività sempre espressa in V/Pa
sabruri1
Messaggi: 13
Iscritto il: sab 27 feb 2021, 0:25

Re: Realizzazione sound level meter (fonometro)

Messaggio da sabruri1 »

Ciao ragazzi, riprendo l'argomento perché ho notato alcune cose.
Vi allego due circuiti.
Il primo è quello descritto dalla maxim sul datasheet del max4466 come circuito "tipico".
Screenshot 2021-03-03 at 21.37.48.png
Screenshot 2021-03-03 at 21.37.48.png (166.88 KiB) Visto 2759 volte
Il secondo è quello invece che ho io, realizzato dalla Adafruit.
Screenshot 2021-03-03 at 21.44.00.png
Screenshot 2021-03-03 at 21.44.00.png (99.65 KiB) Visto 2759 volte
Ci sono quattro differenze che non mi sono chiarissime:
  • R1 ed R2 dovrebbero essere da 2k mentre nel mio Adafruit sono da 1k
  • La tensione di alimentazione dovrebbe essere 5V. Quelli di Adafruit, poiché la maggior parte degli ADC lavora a 3.3 e non tollerano tensioni negative, hanno portato la tensione a 3.3 e aggiunto un bias di Vcc/2
  • Tutti I componenti non sono alimentati direttamente da Vcc ma da Avcc che ha in mezzo FB2 (non ho proprio capito cosa sia) stesso dicasi per GND
Possono secondo voi questi fattori influire sul guadagno finale dell'amplificatore??
Grazie a tutti :)
Avatar utente
pgv
Messaggi: 483
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Realizzazione sound level meter (fonometro)

Messaggio da pgv »

Non voglio assolutamente offendere, sono sicuro che ci hai gia' pensato, ma un attimo di strabismo capita a tutti... Hai provato a "titillare" il trimmer chiamato "VR1" sul circuitino della AdaFruit? Quello che dovrebbe modificare il guadagno.
sabruri1
Messaggi: 13
Iscritto il: sab 27 feb 2021, 0:25

Re: Realizzazione sound level meter (fonometro)

Messaggio da sabruri1 »

pgv ha scritto: gio 4 mar 2021, 9:12 Non voglio assolutamente offendere, sono sicuro che ci hai gia' pensato, ma un attimo di strabismo capita a tutti... Hai provato a "titillare" il trimmer chiamato "VR1" sul circuitino della AdaFruit? Quello che dovrebbe modificare il guadagno.
Ciao pgv, intanto grazie per il tuo interesse. Figurati, non è assolutamente un'offesa...ogni cosa può aiutare a capire.
Sì, ho provato a ruotare il potenziometro e ho anche misurato la resistenza ai suoi capi durante la rotazione. In effetti spazia da 0K a 100K.

Ecco, a proposito di ciò mi è venuta in mente una cosa. Spaziando da 0 a 100, la serie tra VR1 e R7 varia tra 22k e 122k. Quindi il guadagno in dB dovrebbe variare tra 26dB e 41dB. Ovvero un delta di 41 - 26 = 15dB.
Ho fatto una prova, in condizioni di silenzio assoluto con guadagno massimo leggo 58dB.
Stessa condizione ma guadagno minimo, e senza modificare all'interno del codice il guadagno dell'amplificatore, leggo 50dB. Quando invece dovrei leggere (se tutto funzionasse correttamente) 58 - 15 = 43dB.

L'escursione teorica dovrebbe essere di 15dB, quella reale è di soli 8dB. Altra stranezza...
sabruri1
Messaggi: 13
Iscritto il: sab 27 feb 2021, 0:25

Re: Realizzazione sound level meter (fonometro)

Messaggio da sabruri1 »

Altra cosa a proposito di R1 e R2. Su electronics stack exchange, un utente mi disse
Electret mic, spec'ed to work into 2.2K load to 3V. You are losing > 6dB because R1 is too low, and possibly more if there isn't 3V at C1. So that's one thing to fix.
Ho provato a sostituire R1 con una da 2K ed effettivamente ho letto piuttosto che 58dB, 52dB sempre in condizioni di silenzio assoluto. Comunque mancano altri 15dB circa :D :D
Rispondi