Main Content

Arduino Based Pulse Induction Detector

The IdeaHaving build some metal detectors in the past with varying results I wanted to explore the capabilities of the Arduino in that direction.
There are some good examples of how to build metal detectors with the Arduino, some here as instructables. But when looking at them, they normally require either quite some external components for the analog signal treatment or the sensitivity is quite low.
When thinking about metal detectors, the main topic is how to sense the slight changes of voltage in signals related to the search coil. These changes are normally very small. The most obvious approach would be in using the analog inputs of the ATmega328. But looking at the specifications there are two basic problems: they are (often) to slow and the resolution is (in most cases) to low.
At the other hand, the Arduino is running at 16MHz and has quite some timing capabilities i. e. a resolution of 0.0625S if using clock speed. So instead of using the analog input for sensing, the simplest way of sensing small dynamic changes in voltage is to compare the change in voltage drop over time at a fixed reference voltage.
For this purpose the ATmega328 has the neat feature of an internal comparator between D6 an D7. This comparator is able to trigger an interrupt, enabling precise event handling. Leaving beside the neatly coded timing routines like millis() and micos() and going into the internal timer of the ATmega328 with much higher resolution, the Arduino is a great basis for metal detecting approaches.
So from a source code view, a good start would be to program the internal comparator for change in polarity of the inputs and use an internal counter with the highest speed possible for change in timing of the changes.”

Link to article