accurately measure 10 Khz Freq

Hello,
I am currently doing a inductance measuring project where i want to either provide a constant 10Khz sine wave or measure it presisely, so I have made ‘Wheatstone bridge’ oscillator, but problem is it changes freq with temperature a lot ( 4%).
so i wanted to have a constant source (AD9833 is one of the option but costly.), so i was thinking to measure a freq instead so it will keep my measured value under the 1% tolerance.
I used Freq measure, pulse in and Freq Counter lib, got best result in freq counter lib. but still it was not that good.

for constant 9961Hz freq(Measured on calibrated fluke) I was getting around 10013 to 10089 Hz which is nearely 0.52% to 1.02%. which is a lot deviation for me.
Here is my code:-

/* FreqCount - Example with serial output
 * http://www.pjrc.com/teensy/td_libs_FreqCount.html
 *
 * This example code is in the public domain.
 */
#include <FreqCount.h>

void setup() {
  Serial.begin(57600);
  FreqCount.begin(1000);
}

void loop() {
  if (FreqCount.available()) {
    unsigned long count = FreqCount.read();
    Serial.println(count);
  }
}

So is there any better solution of measuring freq more precisely, or any external cheaper module that i can use, or is there any way to generate constant sine wave ?

Thanks in advance.

yatin:
Hello,
I am currently doing a inductance measuring project where i want to either provide a constant 10Khz sine wave or measure it presisely, so I have made ‘Wheatstone bridge’ oscillator, but problem is it changes freq with temperature a lot ( 4%).
so i wanted to have a constant source (AD9833 is one of the option but costly.), so i was thinking to measure a freq instead so it will keep my measured value under the 1% tolerance.
I used Freq measure, pulse in and Freq Counter lib, got best result in freq counter lib. but still it was not that good.

for constant 9961Hz freq(Measured on calibrated fluke) I was getting around 10013 to 10089 Hz which is nearely 0.52% to 1.02%. which is a lot deviation for me.
Here is my code:-

/* FreqCount - Example with serial output

void setup() {
  Serial.begin(57600);
  FreqCount.begin(1000);
}

void loop() {
  if (FreqCount.available()) {
    unsigned long count = FreqCount.read();
    Serial.println(count);
  }
}




So is there any better solution of measuring freq more precisely, or any external cheaper module that i can use, or is there any way to generate constant sine wave ?

Thanks in advance.

Suspect you are driving the oscillator too hard. Run at the very minimum voltage to get consistent operation, then amplify the output to the level you need.

Did you spec the components for temperature changes? Which component is giving the problem?

Paul

One solution to temperature-dependent circuits is to build them an oven. Keep the whole thing at a constant 45°C. You don’t need a very accurate thermostat as a few degrees change will make a very small difference in output.

Suspect you are driving the oscillator too hard. Run at the very minimum voltage to get consistent operation, then amplify the output to the level you need.

Did you spec the components for temperature changes? Which component is giving the problem?

Paul

I am making 1VRms sine wave, and basic component which is giving me more problem is Capacitor.

One solution to temperature-dependent circuits is to build them an oven. Keep the whole thing at a constant 45°C. You don't need a very accurate thermostat as a few degrees change will make a very small difference in output.

I need to use it in different ambient temperature cant freeze temperature to small zone. i need 0.1 percent accuracy either in creation or in measurement.

Isn't there any way to precisely measure 10kHz around square wave with 0.1% accuracy in arduino? using timer 1 or some thing?

Isn't there any way to precisely measure 10kHz around square wave with 0.1% accuracy in arduino? using timer 1 or some thing?

Most Arduinos use a resonator rather than a crystal, and resonators are temperature sensitive. Consequently, the arduino processor clock is not accurate enough for what you are trying to do.

If you've got a spare RTC lying around, you can get a signal from the SQ pin that's generally not bad as the clocks are crystal driven. Programmable for 1Hz, 4, 8 or 32KHz, you could hook this up to use in a calibration loop for the arduino.