Sensore max9814

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.

Non conosco il sensore, ma questa if sarà sempre vera... La analogRead restituisce valori compresi tra 0 e 1023...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.