Medición de sonido en arduino - error al disminuir la ventana de muestra

0

Encontré que este código ya está disponible y funciona bien, pero cuando reduzco la ventana de muestreo a 0.25 ms, el monitor serie no puede identificar ningún sonido y siempre muestra el mismo valor. He intentado cambiar millis () a micros () y también he intentado unos cuantos valores de signalmin pero no ayuda. ¿Alguna idea de qué se debe hacer para esta pequeña ventana de muestreo? El micrófono que estoy usando es czn-15e.

const int sampleWindow = 10; // 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 1000 mS
   while (millis() - startMillis < sampleWindow)
   {
      sample = analogRead(0);
      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.0) / 1024;  // convert to volts

   Serial.println(volts);
}

'

    
pregunta Piyush

1 respuesta

1

Un google rápido indica que la frecuencia de muestreo máxima en un arduino es de alrededor de 9.6 kHz. Así que vas a obtener 2 o 3 muestras por medida. Siendo realistas, necesitas varios ms para obtener un rango significativo, la idea de calcular un rango pico a pico en un puñado de muestras simplemente no tiene sentido.

No estoy seguro de por qué no obtienes un número cuando usas micros (), pero aunque diera un número, no tendría mucho significado.

Debe usar algo que pueda muestrear mucho más rápido o debe volver a evaluar lo que está tratando de hacer y ver si hay una mejor manera de cumplir sus requisitos.

    
respondido por el Andrew

Lea otras preguntas en las etiquetas