I have an Extech sound level meter, model 407703A, (http://www.extech.com/instruments/product.asp?catid=18&prodid=504) at work. This is an analog sound level meter and it has an analog output that provides an AC rms voltage (0.707V max). I really don't have any clue as to how I might go about capturing this information. Any help would be greatly appreciated.
No electronic expert but these are the steps to be taken:
- Connect ground to Arduino ground
- Connect signal to an analog input
- Set the analog reference to INTERNAL - analogReference() - Arduino Reference
This last step will use a max reference of 1.1 volt. This means that your 0 - 0.7Volt will map not to the full range of 0-1023 but to approx 0..650 . Should be enough to discriminate 50+ levels You might use the map function for that. The following sketch should get you started.
void setup()
{
Serial.begin(115200);
Serial.println("Sound Monitor 0.0");
analogReference(INTERNAL);
}
void loop()
{
int raw = analogRead(A0);
Serial.print(" Raw value: "); Serial.println(x);
int cooked = map(raw, 0,650, 0, 50)
Serial.print("Cooked value: "); Serial.println(cooked);
}
This means that your 0 - 0.7Volt will map not to the full range of 0-1023 but to approx 0..650
Is it really a 0 to 0.707 volt output, or a -0.707 to +0.707 volt output? The negative voltages won't be good for the Arduino.
Good point Paul,
if so you might need an opamp to move the voltage to 0..1.4Volt, and you cannot use the analog reference(INTERNAL) then. However if you need to use an opamp you better directly make 0..5V of it.
PaulS: you're right about the -0.707V to 0.0707 range. I confirmed this with my multimeter.
robtillaart: I had not run across the INTERNAL reference previously. This will be helpful in the future.
Thanks for the help!