A simple Earthquake detector

Let me admit at the outset, that due to a scandalous absence of earthquakes in Northern Ireland this project has never been tested on any meaningful earth-movement whatsoever. However, the setup is sensitive enough to detect passing cars, bad-tempered neighbours slamming doors 10 metres away and pile drivers at a distance of more than a mile.

Most earthquake detectors use a heavy weight attached to a coil moving inside a magnetic field. Earth movement will cause the ground and attached magnet to move. The suspended weight and coil tend to stay stationary and hence a signal is generated. Elaborate electronic filters and damping need to be employed to get a meaningful signal.

My project avoids some of these problems by the use of ready made detectors with a low impedance and their own built in damping. Here is a block diagram of the system:

Block diagram of earthquke detector

The motion sensors

Below is the entire apparatus. A and B are two old and now dysfunctional hard drives. Removing the discs gives access to the pickup arm which in turn is driven by what is known as a 'voice coil'. This coil is suspended between two very powerful magnets. Energising the coil will react with the magnetic field and drive the pickup across the disc surface. Like all such arrangements it can be used in reverse, i.e. if you move the pickup arm, a current is produced in the voice coil, which when amplified, can be interpreted by a computer program.


C is a very heavy weight made from roofing lead. This is suspended from the ceiling with a length of picture wire. D is an arrangement of activators attached to the weight. These links are made from solid copper wire. They are in close contact with the drive's pickup arm, which is pressed against the activators by the springy cable which connects the pickup assembly to the rest of the hard drive. One sensor will detect horizontal, the other lateral movement. When the ground moves, the suspended lead weight tends to remain stationary and so the two moving pickup arms will push against the activators, thereby generating a small current in the voice coils.

E and F are two lead weights that keep the apparatus steady. G is a switch arrangement allowing selection between the two coils. Either A or B, or A and B in series. The latter is the most effective configuration.

As far as I know no-one has ever used hard drives for this purpose and I like to think that the 'Lueg earth quake detector' is an original invention.

The arrangement is very effective because the two voice coils were originally designed to drive the pickup arms at high speed, which means that they have a very low resistance. This in turn means that they do not suffer from electro magnetic interference. I found no need to filter out mains hum even though four computers and a monitor were operating just a metre away.

The Amplifier 

This is a fairly standard design using two 741 operational amplifiers. The circuit is powered by a dual 15V power supply.

Circuit diagram of earthquake detector amplifier

The incoming signal from L1 and L2 is connected via the selector switches and R1 or R2 to the inverting input of a 741 op-amp. This in conjunction with R3 gives a gain of either -1000 or -300, depending on which resistor you select with L1. The high gain is possible because we are dealing with very low frequencies. An earthquake typically has a frequency of 1Hz or lower. VR1 is a 10k trimmer connected to the offset null pins. This is necessary because the ac output of the circuit needs to be shifted positive to match the A to D converter. Adjusting VR1 shifts the output signal until it is in the centre of the trace display. The output of the all this is fed into a unity gain buffer which produces enough current to drive any 8 bit a/d converter. R5 and the LED give a power ON indication. The value of R5 needs to be adjusted to suit your power supply.

If you live in an area shaking with frequent earthquakes then you do not need this high sensitivity and you can choose lower values for R1 and/or R2 to reduce the gain. But remember - R4 should be close in Value to R1 and R2. The gain of the circuit is -(R3/R1 or R2), so if you want say a gain of -100, you would make one of the resistors 10k in value.

PCB layout for earthquake detector

If you etch your own circuit board, the ink-side of the negative should be on the copper side of the board.

The system connected

The system

The complete electronic set-up is on the right. The small amplifier circuit described above is connected to the Velleman interface board. The rather ugly black and grey box is the dual 5V power supply.

For an alternative design, see this link.

As usual, if you have any questions at all,

drop me a line

The program

The program is as simple as possible. It continuously displays the reading from the analogue input in graphical form. Once the screen is full, it blanks the screen and starts again. 

Here is the self-extracting .exe file

Here is the BBC Basic program file

   10 REM Quaker
   20 REM Simple earth quake detector demonstration
   30 REM Needs Velleman K8055 USB Experiment Interface board
   40 REM Jochen Lueg
   50 REM Limavady, December 2009
   70 MODE 15
   90 REM Find dll routines addresses
  100 PROCinit
  120 VDU5
  130 REM Turn board 0 on
  140 SYS USB_OpenDevice%,0
  150 CLG
  170 MOUSE ON
  190 COLOUR 5
  200 MOVE 10,1000
  210 PRINT"Press the left mouse button to start"
  220 MOVE 10,960
  230 PRINT "Press the right button to pause"
  240 REPEAT
  250   MOUSE x%,x%,b%
  260 UNTIL b%=4
  270 CLG
  280 GCOL 5
  290 REM Start at the top of the screen and repeat until you reach the bottom - 5 traces


  310 REPEAT
  320   CLG
  330   FOR Y%= 1800 TO 200 STEP -200
  350     FOR X%= 0 TO 2559 STEP 2
  360       SYS A%,1 TO V%
  370       PLOT 5, X%,Y%+V%*4
  380       MOUSE x%,y%,b%
  390       IF b%=1 THEN
  400         REPEAT
  410           MOUSE x%,y%,b%
  420         UNTIL b%=4
  430       ENDIF
  440     NEXT
  450     MOVE 0,Y%-200
  460   NEXT
  480 SYS USB_CloseDevice%
  500 *QUIT
  520 END
  540 DEFPROCinit
  550 REM  Typing errors in routine name do not generate an error message - they just hang up the program.
  560 SYS"LoadLibrary","K8055D.dll" TO USB_Board%
  570 SYS"GetProcAddress",USB_Board%,"OpenDevice" TO USB_OpenDevice%
  580 SYS"GetProcAddress",USB_Board%,"ReadAnalogueChannel",1 TO USB_ReadAnalogue%
  590 SYS"GetProcAddress",USB_Board%,"SetAllDigital"  TO USB_SetAllDigital%
  600 SYS"GetProcAddress",USB_Board%,"CloseDevice" TO USB_CloseDevice%
  610 SYS"GetProcAddress",USB_Board%,"ClearAllDigital" TO USB_ClearAllDigital%
  620 SYS"GetProcAddress",USB_Board%,"ClearDigitalChannel" TO USB_ClearDigitalChannel%
  630 SYS"GetProcAddress",USB_Board%,"SetDigitalChannel" TO USB_SetDigitalChannel%
  640 SYS"GetProcAddress",USB_Board%,"ReadAnalogChannel" TO A%


Return to the interfacing index

To the Limavady site
Tudor with sign