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 needs 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:
|
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, ie. if you move the pickup arm,
a current is produced in the voice coil, which when amplified, can be
interpreted by a computer program.
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.
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.
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 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 |
| 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 December 2009 60 70 MODE 15 80 90 REM Find dll routines addresses 100 PROCinit 110 120 VDU5 130 REM Turn board 0 on 140 SYS USB_OpenDevice%,0 150 CLG 160 170 MOUSE ON 180 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 300 |
310 REPEAT 320 CLG 330 FOR Y%= 1800 TO 200 STEP -200 340 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 470 UNTIL FALSE 480 SYS USB_CloseDevice% 490 500 *QUIT 510 520 END 530 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% 650 ENDPROC |
No comments:
Post a Comment