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
Vrms la calcolo invece così:
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?
Grazie mille a tutti