Silicon ChipArduino Seismograph revisited – improving sensitivity - April 2019 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: Nannies want to stop you building mains-powered projects
  4. Feature: Big Brother IS watching you: Facial Recognition! by Dr David Maddison
  5. Project: Flip-dot Message Display by Tim Blythman
  6. Feature: Introducing the iCEstick: an easy way to program FPGAs by Tim Blythman
  7. Project: Ultra low noise remote controlled stereo preamp – Part 2 by John Clarke
  8. Serviceman's Log: A laptop, spilled tea and a crack by Dave Thompson
  9. Project: iCEstick VGA Terminal by Tim Blythman
  10. Review: Altium Designer 19 by Tim Blythman
  11. Project: Arduino Seismograph revisited – improving sensitivity by Tim Blythman
  12. Vintage Radio: Healing 404B Aussie compact by Ian Batty
  13. PartShop
  14. Product Showcase
  15. Market Centre
  16. Advertising Index
  17. Notes & Errata: DAB+/FM/AM Radio, February 2019; Four-channel sound system using a single woofer, February 2019; Low voltage DC Motor and Pump Controller, October & December 2018; USB Port Protector, May 2018
  18. Outer Back Cover

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":
  • Set of four Flip-Dot PCBs (AUD $17.50)
  • Flip-Dot Coil PCB [19111181] (AUD $5.00)
  • Flip-Dot Frame PCB [19111183] (AUD $5.00)
  • Flip-Dot Pixel PCB [19111182] (AUD $5.00)
  • Flip-Dot Driver PCB [19111184] (AUD $5.00)
  • Firmware files for the Flipdot Display project (Software, Free)
  • Flip-dot Display Driver PCB pattern (PDF download) [19111184] (Free)
  • Flip-dot Display Coil PCB pattern (PDF download) [19111181] (Free)
Items relevant to "Introducing the iCEstick: an easy way to program FPGAs":
  • Software files for the iCEstick FPGA tutorial and VGA Terminal project (Free)
Items relevant to "Ultra low noise remote controlled stereo preamp – Part 2":
  • Low-Noise Stereo Preamplifier PCB [01111119] (AUD $25.00)
  • Input Switching Module PCB for the Low Noise Preamplifier [01111112] (AUD $15.00)
  • Input Selection Pushbutton PCB for the Low Noise Preamplifier [01111113] (AUD $5.00)
  • Universal Voltage Regulator PCB [18103111] (AUD $5.00)
  • PIC16F88-I/P programmed for the Low-Noise Stereo Preamp with Six Input Selector [0111111M.HEX] (Programmed Microcontroller, AUD $15.00)
  • PIC16F88-I/P programmed for the Low-Noise Stereo Preamp [0111111B.HEX] (previously 0111111A.HEX) (Programmed Microcontroller, AUD $15.00)
  • Firmware and source code for the Low-Noise Stereo Preamplifier [0111111B.HEX] (previously 0111111A.HEX) (Software, Free)
  • Low-Noise Stereo Preamplifier PCB pattern (PDF download) [01111119] (Free)
  • Low-Noise Stereo Preamplifier Input Switcher PCB pattern (PDF download) [01111112] (Free)
  • Low-Noise Stereo Preamplifier Input Selector Pushbutton PCB pattern (PDF download) [01111113] (Free)
  • Ultra-LD Mk3/Mk4 Amplifier Power Supply PCB [01109111] (AUD $15.00)
  • Ultra-LD Mk.3 Power Supply PCB pattern (PDF download) [01109111] (Free)
  • Universal Voltage Regulator PCB pattern (PDF download) [18103111] (Free)
Articles in this series:
  • Ultra low noise remote controlled stereo preamp, Pt.1 (March 2019)
  • Ultra low noise remote controlled stereo preamp, Pt.1 (March 2019)
  • Ultra low noise remote controlled stereo preamp – Part 2 (April 2019)
  • Ultra low noise remote controlled stereo preamp – Part 2 (April 2019)
Items relevant to "iCEstick VGA Terminal":
  • iCESTICK VGA Adaptor PCB [02103191] (AUD $2.50)
  • Software files for the iCEstick FPGA tutorial and VGA Terminal project (Free)
  • iCEstick VGA Adaptor PCB pattern (PDF download) [02103191] (Free)
Items relevant to "Arduino Seismograph revisited – improving sensitivity":
  • Firmware (.ino sketches) for the Arduino Seismograph with Geophone (Software, Free)
Articles in this series:
  • Low cost, Arduino-based 3-Axis Seismograph (April 2018)
  • Low cost, Arduino-based 3-Axis Seismograph (April 2018)
  • Arduino Seismograph revisited – improving sensitivity (April 2019)
  • Arduino Seismograph revisited – improving sensitivity (April 2019)

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