In Part 2 I described a flat coil sensor which changes inductance according to the magnetic susceptibility of what is in front of it. To make this useful in the field I need something to display the change.
I was going to count the high-frequency microcontroller clock over, say 500 periods of the low-frequency sensor signal. That turns out to be a terrible way to do this. I don’t have the gear to measure it, but I suspect the jitter from slicing the 1.5kHz sensor signal is too high. The result is that the third significant digit twitters a lot. By counting changes in the sliced sensor signal (thus doubling the frequency) over a fixed period I get the twitter down to one part in >12000 counts 1 over a four-second signal acquisition time.
I can live with that. Since
χm = (f1²-f2²)/(f1² × 4 π)
an error of one part in 12000 gives me an error of 13 µCGS (12000²-11999²)/(12000² × 4 π) = 13µCGS. In practice since my coil will only ever intercept about half the effective susceptibility of the target I will take an error of about 25CGS – I imagine the correction factor for the effective susceptibility would be about 2 or more. Callahan’s scale seems to indicate less than 100 was poor, 100 to 300 was good, so I’m in the right ballpark on accuracy. I can use exactly the same rig for a lab version where the sample is enclosed in a solenoid and integrate over a longer time at a lower frequency, but for field use a 4 second integration time is about right.
The MCU clock frequency is 1MHz, and the timer rolls over at 65536, which is kind of inconvenient. If I set it to roll over at 50000 and prescale by 2 I get 0.1sec resolution, which is easier to get a frequency from. Although I used a PIC 16F628 the nonexistent maths support is a pain, and an Arduino is probably the right sort of price/performance. On the PIC I used JAL which only does integer maths, and to try and keep within the limited dynamic range of integer maths was a bear. In the end I gave up and transformed the maths to get rid of those mahoosive squares and get it within the capacity of sdwords (-2,147,483,648 to 2,147,483,647)
χm = (f1²-f2²)/(f1² × 4 π)
where D is the difference between the integer frequencies such that D=f2-f1
χm = (f1²-(f1+D)(f1+D))/f1²
= (f1² – f1² – 2f1D- D²)/ f1²
= – (2f1D- D²)/ f1²
Now assuming D << F1 we can lose the D² term in the noise
which is much more tractable in integer maths. I simulated the difference between this and the exact equation in Excel
Of note is that I’m only 3% off at the 10,000 µCGS level – there is less range of negative values because diamagnetic effects are weak unless you run into a superconducting rock… I start to reach a 10% error at the 20,000 µCGS level. Callahan seems to think soils top out at 2,000µCGS, at which I’m less than 1% off by cheating using a linear approximation. This will not be my greatest source of error 🙂
When I build the lab version of this I will use Arduino and the power of C and floating-point maths to do this right, because the solenoid sensor can enclose the sample so the effective susceptibility will be much larger. But for a hand-held survey machine the beauty of the PIC is that it’s low-power compared to that static 7mA drag of an Arduino doing nothing – my PIC machine draws about 6mA, so I would get a battery life of over a week from 1300 mAh NiMH batteries.
Results – there is no significant paramagnetic rock in East Anglian soils
well, the ones I measured near Ipswich. This puzzles me as East Anglia is the breadbasket of Britain but there we go. There is no significant presence of rock in East Anglia, but I would have thought the glacial erosion would have brought some paramagnetic material (which tends to be associated with igneous rock) in the soils, but if it has then it’s at too low a proportion for me to detect, the soils would classify as poor on Callahan’s scale.
Indeed the only significant amount of stone, flint, which are petrified sponges, is not paramagnetic. This is not a particularly earth-shattering discovery as flint is a form of quartz. Since one LSB count is 25uCGS and quartz is diamagnetic, about -1E-6 CGS I’m not going to pick the signal up.
Measuring paramagnetism series
- the operating frequency is ~1500 Hz so counting transitions gives me 2 x 1500 * 4 = 12000 counts in four seconds ↩