Project by MarkMakies; Roverling Mk.ⅠⅠ

I have just shared a new project: “Roverling Mk.ⅠⅠ”

IntroductionA few months back I created a basic mobile platform using parts from an old 3D printer.  It was fun but not very practical.
I designed Roverling Mark II so I could experiment with a practical, configurable, and reliable mobile plat…

Read more


Roverling MKII is now been integrated with a newly designed Pulse Induction Metal Detector. So far 3 months and It is still a work in progress but is working a lot better than I expected.

The aim is to detect and accurately map a wide area for ferrous and non-ferrous metals for later investigation and digging. And maybe riches.

I’m just starting the integration part of the design now, and will publish all details when it is complete.

If you want to follow progress I post regular updates and details on Instagram. #Roveling or @markmakies will get you there.


Hi Mark,

As a mechatronics enthusiast I am always keen to see projects with more of a robotics swing. I look forward to seeing how you progress.

Hi Everybody,

I’m looking for some ideas to solve a particular problem. I have a robotic platform towing a metal detector at a speed of about 0.5 m/s. It is able to identify between ferrous and non-ferrous metals. It will travel over a predefined area autonomously, just like a smart mower, but smarter, and using well defined search pattern, straight lines and slight overlap .

My first thoughts was to just let it do its thing for a few hours and then look at the data, on the desktop - basically a heat map of the area with a Z axis representing the value received from the detector. Positive for ferrous (retards response pulse) and negative for non-ferrous (advances response curve). The magnitude, Y axis below, representing size of object proportionally and inversely proportional to the depth squared (or maybe cubed - not sure). The value shown on the chart is a 32 bit value representing the delta from the baseline. Not that it is important, but the baseline voltage is about 4V, represented by 0 on the chart and the vertical resolution is 4.6mV/div.

On this chart the X axis represents time as the detector travels along (slowly). Going from left to right, in seconds, approximately:

10s : no metal samples
5s: passing over a silver serving spoon, depth 150mm
5s: nothing
5s a piece of galvanized pipe, 10cm long
5s nothing
5s copper pipe, 20cm long
5s nothing of interest

However I want a simpler system. At the moment I need to go back over the data, on the desktop after downloading, identify locations of interest, then back into the field, find the location, probably refine location, and then dig.

What I would really like is some automatic marking. Maybe a couple of marking spray cans that would give a short green or red spray on the ground at that location. Maybe drop something or stick a small flag/marker on/into the ground. This would mean no desktop or telemetry required, making it much easier to use anywhere.

Looking for any ideas.


For background info, all my design notes are available on my blog.


Hi Mark.

It’s been fun following this build. :slight_smile:

What about water and food colouring?
Is there any reason you couldn’t use a water pump to push colored water out the base of the bot?
On detection, the pump turns on, and pushes red water through a spray or even just little drip on the ground.

Just a thought; cheap and simple?
Pix :heavy_heart_exclamation:

1 Like

Thanks Pix,

Good idea and simple. It also solves another problem: I don’t want to put anything electrical or metal near the sensor coils, but the bot is about 50cm further forward, so if marking from the bot I would need to know what direction it was heading at that time to determine the exact spot where something was detected.

However the sensor coil doesn’t see a small plastic stationary tube filled with fluid (to be confirmed). This means I can put the pump and its noisy EM emissions on the bot with the other noisy things and run a plastic tube across the tow bar, much like a trucks’ trailer air brakes. The outlet / nozzle can then be positioned just aft of the coil, marking the exact spot of detection.

And to colour the water I already have red agricultural dye on hand that is specifically formulated to mark vegetation when spraying herbicides. I’ll just need another colour - looks like Bunnings have a blue one.

Consistent dosage, no dripping, no leaking, easy no mess refill, finding space on the chockers bot and not getting any on my hands will be a challenge though.


1 Like

So prior to designing the PCB I need to tidy up a few things. Firstly the leads to the coils have been shortened from nearly 2m for testing to about 50cm. As expected this reduced the parasitic capacitance greatly, evidenced by the fact that the damping resistor on the transmit coil needed to be increased from 220R to 490R. In turn this has made the coil even faster, now with a 20us pulse, I can sample as soon as 5.8us (meaning gold is now easier to detect).

Next task was to replace the bench top power supply with a Ryobi battery pack that I use for all my projects, where I can. Now you would think that the battery would be a lot more quiet than my ancient PS. It took me a frustrating day’s worth of investigation to find out that is not the case. Every 128ms I collect a digitally filtered 32 bit representation of the decaying voltage. As you can see below, in the final column, there is not much variation over time in the current measurement compared to the established baseline, less than 1mV. But every 15 seconds or so, bang, a massive variation for about half a second and then all is good again until another 15 seconds.

  10866ms  0x6a797184   4.1591558456V   diff:  -0.531mV 
  10988ms  0x6a7ae6b2   4.1593780518V   diff:  -0.309mV 
  11131ms  0x6a79da94   4.1592183113V   diff:  -0.469mV 
  11254ms  0x6a77b9d9   4.1588935852V   diff:  -0.794mV 
  11377ms  0x6a773a09   4.1588172913V   diff:  -0.870mV 
  11500ms  0x6a781620   4.1589488983V   diff:  -0.739mV 
  11642ms  0x6a680a63   4.1565003395V   diff:  -3.187mV 
  11765ms  0x69c88efc   4.1321654320V   diff:  -27.522mV 
  11888ms  0x688ad5af   4.0836844444V   diff:  -76.003mV 
  12011ms  0x687c80b7   4.0814976692V   diff:  -78.190mV 
  12154ms  0x69b79a6b   4.1295781136V   diff:  -30.109mV 
  12276ms  0x6a64f890   4.1560320854V   diff:  -3.655mV 
  12399ms  0x6a799e2b   4.1591825485V   diff:  -0.505mV 
  12542ms  0x6a797779   4.1591591835V   diff:  -0.528mV 
  12665ms  0x6a7891de   4.1590223312V   diff:  -0.665mV 

The yellow line represents the end of the excitation pulse, the green represents the last 5V of received decay and the rising blue edge is exact sample point (acquisition time is around 300ns). With scope persistence up full you can see the ‘shadows’ in the transmit pulse and receive pulse dipping down but for a moment. More than enough to muck up any kind of accurate detection.

So I put the scope on my Ryobi battery pack, and even without any load, this is the unexpected response. It must be doing some kind of internal check every 15 seconds. Ahhhhh.

Zooming in on those spikes shows that the whole episode takes around 1ms and a voltage drop of about half the battery voltage!

No more Ryobi battery packs for sensitive applications.

1 Like

Battery packs sometimes turn off the output while they are checking to see whether or not a charger is connected. That’s not quite what you are seeing, but it may be related.

1 Like

Next problem to solve – drifting component parameters, especially when going to full power on the drive circuitry. This phenomenon doesn’t work well with the static baselining I have been doing up to now, but it has it’s place for pinpointing edges so I’ll keep it in the system.

What I really thought I needed was a high pass filter. I found a much better solution using statistics, in particular the standard deviation function. In the below chart, the blue line is the filtered/decimated ADC 32 bit data, decimal scale on the right axis. The green is the standard deviation, and the red is the standard deviation multiplied by the sign of the difference of the sample at the beginning and end of the sample. Bottom scale is time in ms.

From left to right, first blue run with 20us pulse, passing samples at 150mm Ag, Fe, Fe, Ag. Next run turned up pulse width to 50us which heats up the power resistors somewhat. I didn’t wait for it to stabilise so drift down is evident. Samples Ag, Ag, Fe, Fe. You’ll notice a much bigger response to ferrous metals. In the last run turned the pulse (effective power) down to 5us. Samples Ag and Ag followed by a very slow pass over samples Ag & Ag.


Following on from the Standard Deviation edge detector, a simple state machine has been realised to better detect a change and its direction. Now that this has been refined, it works very well up to about 20cm after which the noise kicks in – so time to reduce noise, even though I’m still on a solderless breadboard.

The plan was to un-teather the USB connection that has been used for code development but that was not as easy as it seems. In order to collect data whilst unconnected I used the RP2040 on-board flash memory, big mistake as it causes at least a 10 fold increase in the noise floor, even with another 1/2 dozen caps thrown at it. Once I figured this out I configured a single UART TX pin to output the data instead, without having to connect USB and it’s power component.

What surprised me the most, is that the noise is LESS by about 50% when power to the RP Pico is through USB – either a PC or plug pack, rather than through a on-board 7805 from the 20V supply. Nothing I have tried has managed to reduce this a – I suspect a proper PCB may help.

Another major breakthrough was a change to the pulse & sampling frequency. I was using 4kHz initially, but it is nowhere near a prime and the noise seems to contain a bit of a beat frequency. Changing this to 3719Hz reduced the noise by half.

Current baseline noise standard deviation over 10 sample in free air is

200uV USB powered, no flash
250uV Battery powered, no flash
900uV USB powered, using flash
4000uV Battery powered, using flash

Also of concern is the solderless breadboards, as posted in another thread they don’t last forever and do wear out, resulting in dodgy connections. Having said that I still have one from the 1980’s that I use occasionally - I recall it being expensive at the time. The spring steel contacts (and an unknown coating) seem a lot better designed and made and the plastic is much stronger.


Hi Mark
Another couple of problems with breadboards.
All those antennas you have floating around. Unfortunately there is not a lot you can do at this stage of development except be aware of the problem, particularly with high impedances such as Cmos inputs. Does not help the noise problem.

Secondly stray capacitance with these boards. With things like metal detectors being very sensitive to inductance and capacitor changes this could have quite a bearing on what you are trying to do.

Example: I recently had occasion to lash up a 7555 timer in monostable mode. Now I know the recommended minimum pulse width is in the region of 10µS but I thought I would try for 2µS. I achieved 3µS. The extra I put down to stray C. To verify I removed the timing Cap. The result a very nice 1µS pulse with the timing being done with stray C. I estimated this to be about 50pF. and I was only using about 4 or 5 square cm of breadboard.

About the same vintage as my Wish board.
Cheers Bob


Hi Robert,
What is a Wish board? Mine has a ‘W’ in a western style font embossed on it. Same thing?

Hi Mark
I think so. There were a lot of different boards. Mine has the word “Wish” on it and is model 502-L. I think some just had the “W”. It has proved to be very durable but I seem to remember pretty expensive at the time. Still the same. I think you can still get them. At a price.
Cheers Bob

1 Like