Improve my circuit (ADC for small signal with negative values)

Hello

I am building a seismograph with a coil that generates some current when a magnet is oscillating above it.

This is my current setup and works OK but probably needs improvements. I have around 50 units delta between lowest value and the highest after ADC.

http://tinyurl.com/y2fnl9xa

I want to improve it, possibly by

  • filtering out frequencies above 10Hz,
  • better AD resolution
  • and less noise when idle / be able to see smaller signals.

What can be done about the first item? The current circuit is pure experimentation, it takes time to charge the caps and get the middle V but that is fine.

I ordered 24bit ADC ASD1232 for the second item and plan to use a better quality regulated 5V power supply as replacement for USB power to reduce noise.

Is it better to provide separate power supply for ADC circuit/module or just clean 5V to the Arduino will produce clean 1.1V for V-ref too?

Please append materials to your post. Most forum members won't go off site.

You can increase the ADC resolution by oversampling and averaging. For example, add up 64 ADC measurements as an unsigned long, and divide by 16 to get 12 bits of resolution out of the Arduino 10 bit ADC.

Lots of great ideas for simple but extremely sensitive seismometers here and here , including how to build a simple amplifier to use with Arduino.

You can not use averaging as you will miss the earthquake. The URL links to the live page that is attached as a picture. My mechanism is like the second seismometer you posted

You can not use averaging as you will miss the earthquake.

Nonsense. I average 256 samples in 45 ms for every measurement using my homemade TC-1 style seismometer, and have detected earthquakes from all over the world.

Here is the PIC code (note the 150 microsecond delay per reading):

      for(i=0; i<256; i++) {
         value = value + (int32_t) read_adc();
         delay_us(150);  //~39 ms delay total
         }

The mechanical bandwidth of my TC-1 is 0.1 to 10 Hz, which is typical for earthquake detection based on S and P waves, and the ADC multisample/average/output rate is 20 Hz, the Nyquist limit for 10 Hz signals.

Fortunately, I have a solid cement slab on the ground in a very quiet location, far from any roads, for the TC-1. Here is a trace for a major earthquake in Chile, recorded with the TC-1 on 12/8/2016:

1 Like

I would try a HX711 breakout board. PGA and 24-bit A/D in one.
With a centre-tapped coil, with the tap biased on E+/2 and the other connections to A+ and A-
With the usual two diodes across the coil to protect the HX711 inputs.
Leo..

8666:
Hello

I am building a seismograph with a coil that generates some current when a magnet is oscillating above it.

This is my current setup and works OK but probably needs improvements. I have around 50 units delta between lowest value and the highest after ADC.

http://tinyurl.com/y2fnl9xa

I want to improve it, possibly by

  • filtering out frequencies above 10Hz,

Use an active filter with opamps such as a Bessel 4/6 pole (minimum phase distortion),
or read at full speed and digitally low-pass filter. The analog filtering approach has the
benefit of removing aliased noise though.

I put a few reasonable parameters into the AD design tool (Filter Design Tool | Filter Wizard | Analog Devices) and got this:

  • 3dB down at 15Hz, -40dB down at 80Hz
  • better AD resolution

Adding an amplification stage will improve the resolution - 50mV is well below 5V range, though
I don't know what headroom you want.

  • and less noise when idle / be able to see smaller signals.

Removing that 1M series resistor would help - series resistance is usually a mistake made
by those that don't understand electronic noise.

Restricting the bandwidth will help with noise of course, so maybe lowpass filter will be enough.

Thanks @MarkT

50mA is enough range if Vref is 1.1V. Not sure if using lower analog reference voltage for AD in the Arduino improves the measurements.

I also found better coils that are perfect circle and higher resistance. 5 kOhms vs 14kOhms makes a big difference. I plan to stuck two and that should give me around 1V peak to peak.

@jremington I do not like the averaging idea. But you are right. I do now 200 samples per second and that is too much but I am still in testing phase. Going down to 50 will eliminate some of the high frequency noise. Are you using jAmASeis? I find the old AmaSeis more polished.

The averaging idea is definitely the way to go - the more samples you take per second, the
more noise you can cancel through averaging or otherwise low-pass filtering in the digital
domain, and without needing extra hardware. The theory is solid, and you usually get
more effective resolution with it, ie less than a LSB, increasing sensitivity.

Yes, I use jAmaSeis. It is a bit awkward but does everything of interest to me.

I forgot to mention that between the coil and the ADC is an op amp low pass filter.

The more you learn about what can be done with fast sampling, averaging, decimating and digital filtering, the better you will like it.

I am impressed

I have a 30kOhm coil now (two in series) and lowered the output to 30 samples per second AND each sample is average of 6 ADC with delay of 1ms.

There is no need to use the low-pass filter in the software now. The oscillations are very clear.

According the docs/forum using the 1.1V internal reference is a stable source and i do not need the absolute value in mV anyway.