This is only a preview of the April 2019 issue of Silicon Chip. You can view 38 of the 96 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Items relevant to "Flip-dot Message Display":
Items relevant to "Introducing the iCEstick: an easy way to program FPGAs":
Items relevant to "Ultra low noise remote controlled stereo preamp – Part 2":
Items relevant to "iCEstick VGA Terminal":
Items relevant to "Arduino Seismograph revisited – improving sensitivity":
Purchase a printed copy of this issue for $10.00. |
Using a Geophone
with our Arduino
Seismograph
Our Arduino Seismograph
from April 2018 uses
a 3-axis MEMS
accelerometer to
measure the force of
tremors and other
vibrations. Typically
seismographs will
measure displacement,
not force; but the good
news is that you can
measure it electronically
using a “geophone” sensor.
by Tim Blythman
R
eader Michael, from western NSW, kindly sent us
a model 20DX geophone sensor, suggesting that
this would be a great add-on to our seismograph project
(siliconchip.com.au/Article/11030).
The geophone sensor is based around a sprung mass (a
magnet) moving inside a coil. It generates a voltage proportional to the velocity of the magnet. This is different from
the MEMS type sensors, which produce a value proportional to acceleration. While larger and heavier, the simple mechanical geophones are also much more sensitive
than their MEMS counterparts.
The geophone sensor is marked with the code “10 395”,
meaning it has a nominal minimum frequency of 10Hz, and
a coil resistance of 395W. Similar units are available from
many online sellers. The unit we are using is designed for
use in a vertical orientation, although units designed for
horizontal use are also available.
Rather than building another seismograph from scratch,
we decided to add the geophone sensor to our seismograph
project. It records seismographic data as WAV files, which
can be either manipulated and viewed with programs such
as Audacity, or simply played back as audio.
The data from the geophone sensor is added as a fifth
channel to the WAV data, complementing the existing Zaxis (vertical) channel, so all the data can be viewed together and compared.
Interfacing the geophone
As the output of the geophone sensor is just an analog
voltage, we can read this using the Arduino’s ADC
80
Silicon Chip
(analog-to-digital converter). As it is an
AC signal, we need to DC bias the signal
to centre the sensor’s zero-point in the ADC
sample range.
To improve the resolution of the readings, instead of
using the 5V supply rail as the ADC reference, we’re using the micro’s internal 1.1V reference. Because the potentiometer used to adjust sensitivity also uses the ADC,
you need to add a series resistor to reduce its adjustment
range to 0-1.1V.
16 ADC readings are taken from the geophone and averaged. The result is then fed through the same digital filter that is applied to the signals from the accelerometer.
Circuit description
The revised circuit is shown in Fig.1. A voltage divider
comprising 51kW and 10kW resistors generates a ~0.55V
rail for biasing the geophone. This is half of the nominally
1.1V ADC reference generated by the Arduino, so it allows
the geophone output to swing over the full ADC range.
This biasing rail is filtered by a 220µF capacitor as the
divider impedance is much higher than the geophone’s,
and otherwise, its frequency response would suffer. This
capacitor also filters out any supply noise on the 3.3V rail.
Any drift due to changes in the 3.3V supply voltage is rejected by a 0.5Hz software-defined high-pass filter.
We decided not to generate this reference rail by drawing current from the Arduino’s AREF pin as that pin can
source only a minimal amount of current.
VR2, connected across the geophone, dampens its output
Australia’s electronics magazine
siliconchip.com.au
Fig.1: the additions
to the existing
Seismograph circuit
are quite simple.
The geophone is DC
biased with a 0.55V
rail generated by
two resistors and
one capacitor. It’s
loaded with a 1kW
trimpot which also
allows its sensitivity
to be adjusted. The
resulting signal then
goes through an RC
low-pass filter and
into Arduino analog
input pin A3.
to provide a flat frequency response (see Fig.2) and also allows its sensitivity to be adjusted, reducing the voltage fed
to the Arduino’s A3 analog input depending on its rotation.
Generally, we suggest you leave VR2 set fully clockwise,
although you may need to back it off a bit if you’re expecting to measure a large quake accurately.
The signal then goes through a low-pass filter with a
-3dB point of 1.6kHz, made from a 1kW resistor and 100nF
capacitor.
Further filtering is performed in the software. The 1kW
series resistor also protects the Arduino from large (clipping) signals from the geophone, while the 100nF capacitor provides a low impedance for the ADC’s sample-andhold circuitry.
The 360kW resistor added in series with VR1 matches
its range to the 1.1V internal reference instead of 5V, as
before. We found that this provides more consistent geophone measurements than getting the ADC to switch between the two different reference voltages dynamically.
Five rows of stripboard are connected to the POWER
section of the Arduino headers, and six rows go to the
analog section. The empty row between these sections is
used as our bias reference. The three extra rows below the
analog section hold potentiometer VR2 and connect to the
geophone sensor.
Due to the way the board is soldered to the Arduino
headers, the components are fitted to the copper track side.
Construction
Since this is a simple circuit, we built it on stripboard.
You will need a board with 15 rows, and at least six connected pads available in each row. If you have 18 rows,
then the add-on board will neatly cover one side of an Arduino Uno Rev3 board. The component layout is shown
in Fig.3. No track cuts are required.
We used a vertical (right-angle mounting) mini trimpot
for VR2 in our prototype, but you can also use a horizontal trimpot, as shown in Fig.3
siliconchip.com.au
Fig.2: this frequency response graph from the 20DX
datasheet shows how its normal response (A) is damped
by resistive loading. The 1kW trimpot in our circuit gives
us the relatively flat response shown by line B in red.
Australia’s electronics magazine
April 2019 81
Fig.3: this
circuit can
easily be built
on stripboard.
Unusually, we’re
mounting most of
the components
on the copper
side of the board.
Make sure the
component leads
can’t short to
anything. The top
three rows are
optional.
So be careful when mounting them to
ensure their leads can’t short to any
tracks or other component leads and
mount the capacitors high enough
that you can get your iron under them
to solder the leads safely.
One wire link is needed (shown in
red); we suggest that you use insulated Bell wire. Note how one lead of
the 100nF MKT capacitor is soldered
directly down into a hole in the A3
row, while the other lead is bent to go
around the 220µF capacitor and connect to one of the GND rows.
We used a small 3-way female header strip and jumper wire off-cuts to
connect the geophone sensor to the
board. The + lead of the geophone sensor should connect to the end nearest
the bottom edge of the board.
Finally, fit the 6-pin and 8-pin male
headers to the underside, to connect to
the Arduino. The easiest way to do this
is to plug the headers into the sockets
on the Arduino board or shield and
The small change needed to the main
shield. The 360kW resistor is soldered
between the Arduino’s A2 pin and
where the trimpot was attached to A2.
This allows the same trimpot setting
to be used in spite of the change
in voltage reference for the ADC
peripheral.
82
Silicon Chip
Parts List
then place the stripboard over the top
and solder the pins. This ensures the
two rows remain aligned.
You will also need to add the 360kW
resistor to the trimpot on the original
board. Detach the lead connected to
A2, and fit the resistor between A2
and the trimpot lead.
We did this by cutting the trimpot
pin and then desoldering the stub. You
can now plug the stripboard ‘shield’
into the corresponding Arduino pins,
wire up the geophone sensor, and
you’re ready to install the new software.
If you haven’t already built the Arduino Seismograph, refer to the April
2018 article for instructions.
Revised software
The new software is very similar to
that used in the April 2018 project.
Some extra code has been added to set
up the ADC reference voltage and to
sample and record the extra channel.
The WAV header data has changed
because there are now five channels
rather than four. There is an extra line
in setup() to set the 1.1V ADC reference, and extra code in loop() to sample, filter and output the new channel
to the SD card.
We’re assuming that you have already installed the Arduino IDE (integrated development environment).
You can now download the revised
sketch from our website, use the IDE to
compile it and upload it to the Arduino board. The file is named “Arduino_
Seismograph_with_Geophone.ino”.
It’s used in the same way as the
original version. Insert an SD card
into the slot and restart the Arduino
board. Open the Arduino Serial Monitor at 115,200 baud to follow the program’s progress and check for errors;
you should see something similar to
that shown in Screen 1.
If there are no errors, allow the
Australia’s electronics magazine
1 Arduino Seismograph unit (see
April 2018 issue)
1 geophone sensor (20DX or
similar)
1 piece of stripboard (at least 15
rows with at least six pads each)
1 5-pin male header or
1 8-pin male header (with 18+ row
stripboard)
1 6-pin male header
1 3-pin female header socket
1 short length of Bell wire
2 jumper leads to connect geophone sensor to header socket
Capacitors
1 220µF 6.3V electrolytic
1 100nF MKT polyester
Resistors (all 0.25W 1% metal film)
1 51kW 1 10kW 1 1kW 1 360kW
1 1kW mini trimpot (VR2)
sketch to run for a minute or so. You
can emulate seismic activity by gently bumping the spot the seismograph
is sitting on.
Press pushbutton S1 to stop logging and write the data to the SD card;
there will be a message on the serial
monitor when this has finished, and
the indicator LED will light up continuously.
Remove the SD card and open the
files with Audacity. You should see
something similar to what we did,
with five channels displayed. Any activity will show up as undulations in
the traces (see Screen 2).
Here we can see movement on the
two bottom channels, both of which
are reading the Z axis. The bottommost channel is the geophone sensor,
while the one above this is the MEMS
accelerometer Z axis.
Based on the sensitivity of the geophone sensor with a 1kW damping resistor at around 20V per m/s, full-scale
readings correspond to ±0.0275m/s.
That’s assuming that the attenuation
trimpot is set to provide the maximum level. At any other setting, it
will take faster motion to give fullscale readings.
In the April 2018 article, we mentioned that, with the default settings,
the readings consume around 30MB of
siliconchip.com.au
SD card space per day. With the added
channel in this version, that increases
to around 38MB per day, or just over
1GB per month.
A simpler approach
If you have a geophone sensor, but
don’t want to build the full Seismograph including the MEMS accelerometer, you could use the small stripboard circuit presented here with a
bare Arduino Uno (or compatible)
board and our test sketch. This sketch,
named “Geophone_Sensor_Test.ino”,
was written so that we could test our
geophone sensor in isolation.
Fit the stripboard interface to the
Uno board and upload the test sketch.
Open the Serial Plotter at 115,200 baud
and you can view the output of the
sensor in real-time. The vertical scale
is merely the raw ADC data values, in
the range 0-1023.
Mounting
As noted, the geophone sensor we
used is designed for vertical mounting.
Our tests involved placing the sensor
on its flat end on a desk, and we found
that it was quite sensitive like that.
For the best performance in measuring seismic activity, the sensor should
be rigidly attached to the underlying
bedrock (or something else attached to
it, like a concrete foundation). Many
appear to use mechanical mounts such
as bolts, but a good construction adhesive should make a reasonable subSC
stitute.
Screen 2: the seismograph writes data to the SD card as five-channel WAV files,
which can be loaded with Audacity. Other audio editing software packages may
not be able to handle five channels of audio in one file.
Screen 1: this sample Serial Monitor output is from the
“Arduino_Seismograph_with_Geophone.ino” sketch
immediately after power-up. If you get any error messages,
check your wiring and the SD card.
siliconchip.com.au
Screen 3: we are sending the output of the “Geophone_
Sensor_Test.ino” sketch to the Serial Plotter. During this,
the geophone sensor was being held by hand and did not
appear to be moving much. So it really is quite sensitive.
Australia’s electronics magazine
April 2019 83
|