Pages: [1]   Go Down
Author Topic: Interface geophone with Arduino and ADC  (Read 5534 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi..

I´m trying to interface a geophone with a Arduino, also i wish to connect the geophone to a ADC.


-The geophone has two pins (+ -)
-Coil resistance 395ohm

Geophone->Arduino
I wish to connect the geophone directly to the Arduino without any kind of amplification..how can i connect it to the Arduino analog pins? Connecting like a thermistor?

Geophone->ADC
Also i´m working with a ADS1211 24bit ADC, each channel has a "Inverting Input Pin" and a "NonInverting Input Pin"..but all schematics that i found using ADC involves amplification, so i´m a bit lost.


Thanks.
« Last Edit: September 22, 2011, 04:00:48 pm by nadabro » Logged

Montreal
Offline Offline
Faraday Member
**
Karma: 29
Posts: 2590
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

What is geophone?
Have a datasheet or link ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wikipedia explains smiley
Quote
A geophone is a device which converts ground movement (displacement) into voltage, which may be recorded at a recording station. The deviation of this measured voltage from the base line is called the seismic response and is analyzed for structure of the earth.

Its used for seismic or geological monitoring/study (mining)..its really very sensitive. They have a natural frequency of (1Hz or 4.5Hz or 10Hz, etc).. my geophone doesnt hava a datasheet..but this one has almost the same specifications:
http://www.geophone.com/techpapers/SM-24%20ST%20Brochure.pdf
Logged

Dallas, Texas
Offline Offline
God Member
*****
Karma: 0
Posts: 861
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't know what the maximum voltage out you expect is. It looks like it can produce quite a spike if accidentally struck. You might want to put a Zener or some sort of voltage suppression diode across it to protect the ADC. On the other hand, that ADC has such a large dynamic range you could just us an appropriate voltage divider. I don't think you need to worry about an amplifier.
Logged

Montreal
Offline Offline
Faraday Member
**
Karma: 29
Posts: 2590
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It has one parameter, sensitivity = 28.8 V/m/s. Even the value looks big, I don't think this device operates in m/s scale ( correct me, if I'm mistaken ), it should be around 10^3 times less, millimeter per second.
It would mean few mV signal, and hardware configuration 'd depends on what arduino board do you have.
Uno doesn't have amplifier, you would need external OPA. Probably same with other boards, as internal OPA is only x200 gain. Second problem, low resolution 10-bit arduino ADC, which brings low dynamic range. You can improve it by making logarithmic amplifier, but anyway it would be far away compare to 24 - bit external ADC.
Logged

Dallas, Texas
Offline Offline
God Member
*****
Karma: 0
Posts: 861
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

The geophone is basically an accelerometer, it looks like. That's why I commented that bumping it might cause the output to go pretty high. On the other hand, the bandwidth is pretty low, so that may not be a problem.

OP has a 24-bit ADC. Lets say the input was 30V scaled to 2.5 to protect the ADC. That still gives the equivalent of 1.7 µV resolution. Consider a 2.5V reference and only 30mV full scale input to a 24-bit ADC that still gives you 19-bit resolution. I think the external ADC will be plenty for the job.
Logged

Montreal
Offline Offline
Faraday Member
**
Karma: 29
Posts: 2590
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Geophone->Arduino
I wish to connect the geophone directly to the Arduino without any kind of amplification..how can i connect it to the Arduino analog pins? Connecting like a thermistor?

 In post above I was trying to say that direct connection to arduino is not appropriate, except application where geophone capture vibration from nearby rail road station / community train. But it possible, you need two resistor to create a DC bias, and an electrolytic cap.

Quote
Geophone->ADC
Also i´m working with a ADS1211 24bit ADC, each channel has a "Inverting Input Pin" and a "NonInverting Input Pin"..but all schematics that i found using ADC involves amplification, so i´m a bit lost.

This will work, use figure #12 in datasheet for ADC.

Quote
OP has a 24-bit ADC. Lets say the input was 30V scaled to 2.5 to protect the ADC. That still gives the equivalent of 1.7 µV resolution. Consider a 2.5V reference and only 30mV full scale input to a 24-bit ADC that still gives you 19-bit resolution.
Have to confess, I'm lost in this math, as we are dealing with AC and there is "effective resolution" show up. In table III  it is 20 and depends on G and Turbo goes down to 19 for bitrate 50 (by the way, what is frequency range required, as 10 Hz probably, just low end?)


Logged

Dallas, Texas
Offline Offline
God Member
*****
Karma: 0
Posts: 861
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Like a lot of devices like the 2411, the accuracy is less than the resolution. It's still plenty good and it does include a PGA in case OP needs some amplification.

Apparently, 8.8 E-03 m/sec is a typical high velocity and the bandwidth is limited to the spurious frequency which in this case is 240 Hz. If I got the decimal point right, maybe 0.25 volts maximum signal.
« Last Edit: September 22, 2011, 06:08:16 pm by EmilyJane » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Geophone->Arduino
I wish to connect the geophone directly to the Arduino without any kind of amplification..how can i connect it to the Arduino analog pins? Connecting like a thermistor?

 In post above I was trying to say that direct connection to arduino is not appropriate, except application where geophone capture vibration from nearby rail road station / community train. But it possible, you need two resistor to create a DC bias, and an electrolytic cap.

Quote
Geophone->ADC
Also i´m working with a ADS1211 24bit ADC, each channel has a "Inverting Input Pin" and a "NonInverting Input Pin"..but all schematics that i found using ADC involves amplification, so i´m a bit lost.

This will work, use figure #12 in datasheet for ADC.

Thanks for the answer smiley

So from what i understand using the geophone directly to the arduino with no amplification, wont give any good results..because the singal is too small, correct?

But since i already have the ADS1211 ADC, i will go directly to the external ADC.

On Figure12 of the datasheet


-All i need is to replace the "+-10V" from AinP/N with the geophone pins? No need to GND or VCC?
-The resistors values need to be changed? The geophone has a coil resistance of 395ohm +-10%..
-The ADC has inbuilt gain amplifier (up to 16), should i use the max?


The idea is to record earthquakes, earthquakes have a frequency of 0.00001 to xxHz, lower is the natural frequency of the geophone (1Hz geophone should be perfect, but its way more expensive), more capable is to record earthquakes. I also have 4.5Hz geophones, but since the 10Hz its more cheaper than the 10Hz..this one will be my "guinea pig". Its possible to recover lower frequencies from the geophone using filters, but i will add those later.
Logged

Dallas, Texas
Offline Offline
God Member
*****
Karma: 0
Posts: 861
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Just observe the differences between the pin names on your ADS1211 from the ADS1210 in figure 12 and you should be fine. The input impedance of the device is high enough that the 3K resistors will not affect your signal and the device has its own input bias source. Give it a go!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Just observe the differences between the pin names on your ADS1211 from the ADS1210 in figure 12 and you should be fine. The input impedance of the device is high enough that the 3K resistors will not affect your signal and the device has its own input bias source. Give it a go!

Thanks for the help..i think its working smiley

I didint get 3k resistors, i´m testing with 3.3k. The ADS1211 is mounted in a breadboard (following the figure 12) with a lot of wires wondering around (dont have jumpers), so i dont expect low noise with a good resolution (first learn/understand on breadboard, later move to PCB). I´m using the ADS1213 Library from Murdock (which i appreciate the help he gave me on the connections/code)

Some results (+- 30SPS) with gain set to 1:



Code:
Geophone is idle

-3856
-5832
-5112
-1353
-804
-1964
948
1507
-2652
-1913
-972
-1128
-3744
-4141
-7297
-2565
667
-1892
-289

shaking Geophone

-3025
-13529
-195597
-396208
185875
657732
428532
-145712
-802364
-463412
428772
364247
-253573
-111948
383495
248736
-278073
-197424
-251696
-130160
75736
54071
508128
202776
-420773
-225784
-110368

I can even measure a small tap on the table near the geophone..

With gain set 16

Code:
Idle

207751
201575
204328
204303
208927
203871
201591
201400
187428
186084
185327
192100
210116
209836
205179

shaking

181884
176580
-192561
-1804164
-3679832
139192
1868779
4068600
5836608
1377640
-4632277
-4285684
-2587160
1900844
8388607
2803759
-6843552
92108
-3424485
-8388607
-1312969
5859808
8388607
3835843
-4427800
-4608464
-4713253
-3684741
3603428
8388607
2812287
-7272129
-5609077


With gain set 1, up to 6 digits,
with gain set 16, up to 7 digits.


What do you think about the results?
Do you think using 3.3k resistor instead 3k is influencing the results?


The final piece of the puzzle is to get rid of high frequencies using a lowpass filter or a bandpass filter. Anything higher than 20Hz should not interest.
-Internal filter (ADS1211 Datasheet page 11/12)
-Max7401 - 8th-Order Bessel Filter I´ve two of these
-Simple Low pass filter

What do you think its my best option?





« Last Edit: September 23, 2011, 03:08:13 pm by nadabro » Logged

Dallas, Texas
Offline Offline
God Member
*****
Karma: 0
Posts: 861
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

That looks good! I don't think the 3K3 resistor makes any difference. I'd have to study the datasheet a little more about the filter to give any kind of relevant answer. I'd try a simple low pass filter first and note the results.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks for reviewing:)

I will try first the simple low pass filter, it should by applied for each input:

Before R1/R2?
After R1/R2 and before R3/R4?
Or after R3/R4?

About the internal ADC filter i´ve to study a bit more about filters to understand what is better for my purpose..
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'm too having a Geophone with 5 pins (X,Y,Z , Earth and Common).

My queries :

1) By default I should not opt for Arduino's ADC?
2) External ADC and Amplifier both should be used for good result?
3) Also I don't understand why a Geophone gives both AC and DC voltage in my case on Multimeter along with providing frequency response?

Thanks.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I realize this is an old thread at this point and I hope some are still following it as I have a question about interfacing with an ADS1211.  After reading through several posts including this one, I am trying to use the library Murdock posted (http://arduino.cc/forum/index.php/topic,53063.30.html) on Apr 19, 2011 (ADS1213) to log data from a geophone.  I've read through the spec sheet for the ADS1211 several times and think I have a beginners handle on how it works. 

I followed the wiring diagram from the Murdock's post referenced above along with nadabro's on this thread, including using the arduino's internal timer but all I get out is a bunch of 0's.  Is there anyhting that I might be missing?  I would like to use the internal clock instead of an external crystal if possible but if that is my problem please let me know.

I'm sure you need more information to help me so please let me know what you need.  Right now my code is the example code for switching channels in the ADS1213 library (I like to start with the examples until I understand them enough to change them for my needs).  Thanks for any help you can provide.
Logged

Pages: [1]   Go Up
Jump to: