
I am going to start working on discrimination. The simplified block diagram above shows the steps leading up to discrimination. The received signal is demodulated giving a pair of signals I,Q. These are rotated to give calibrated signals X,Y. These are filtered to separate the rapidly changing target signal from the slowly changing ground signal giving XF,YF. Each signal sample can be given an ID that is some function of XF,YF. I will use arctan(XF/YF). Discrimination will be based on the phase angle that is given by arctan(XF/YF).
The coil is over the target only a fraction of the time. The rest of the time XF,YF is just noise and so is the phase angle. So the discriminator should only look at the phase angle when there is a target signal present. The logical way to look for the presence of a target signal would be to watch the ground balanced signal. At this stage of testing I am using a constant ground signal rather than a variable ground signal, so I am not bothering to completely ground balance. The Y signal is close enough to a ground balanced signal for testing purposes. So the inputs to the discriminator will be YF and the phase angle.
When the discriminator sees that the signal is strong enough it will look at the phase angle. If the phase angle is in the accepted range it will begin a beep. If the phase angle is not in the accepted range any beep in progress will be terminated.
This table contains 1/3 of a second of data from the detector as a penny swings over the coil. The first two columns are the XF and YF values. The third column is the phase angle, but I have only bothered to calculate the phase angle for the samples near the peak of the signal.
XF YF angle
-13 -15
-6 -13
8 4 63
27 21 52
34 29 50
34 27 52
20 24 40
9 18 27
2 -3
5 -5
The discriminator is going to be watching the YF column of this table. We don't want the discriminator to be doing anything when the signal is low, so we will use a fixed threshold of say +10. The discriminator will ignore any sample with YF less than 10. The first signal it sees over 10 is the 21. Then it looks at the phase angle. Say we have set the discriminator to accept anything over 45 degrees. So this is an accepted signal and the discriminator starts a beep. At this time we would also set a moving threshold to the current signal strength of 21. So it will now ignore any signals weaker than 21. The next signal is 29 so it looks at the phase angle. This is also an accepted signal so it lets the beep continue, and it sets the moving threshold to 29. All the rest of the entries in the table have YF less than 29 so they would all be ignored.
If there are no rejected signals the beep will terminate after some fixed amount of time. The moving threshold will also have to be reset, either by clearing it when the beep ends, or by letting it decay over time.
Robert Hoolko