Buonasera a tutti!
Sto lavorando con una scheda Arduino mega2560 e un sensore max9814.
Quello che vorrei fare è misurare i dB presenti in un ambiente.
Io conosco il gain del sensore (60dB, che posso far variare a seconda di come collego il pin del Gain) e la sensitivity del sensore (= -44 che in V/RMS sarebbe 0.00631).
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis= millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(A3);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = ((peakToPeak * 5) / 1024) * 0.707; // convert to volts
double first = log10(volts/0.00631)*20; // The microphone sensitivity is -44 ±2 so V RMS / PA is 0.00631
double second = first + 94 - 44 - 60; // The microphone sensitivity is -44 ±2
Serial.println("misurazione: ");
Serial.print(second);
}
ho trovato questo sketch online e l'ho modificato secondo le mie caratteristiche...
secondo voi può essere una soluzione accettabile??
Grazie mille per il consiglio.
Alberto.