So here is the scoop - and what an “educational experience” this robot has become.
Who knew that 6 inches of cable could drop 0.2 - 0.3 volts. I didn’t know that I needed to spec a variable voltage regulator to allow for the voltage drop in a 6 inch cable.
The Gizmo Junkies wall wart is “spec’d” at 5.3v 2A and puts out 5.44v at the wall wart. By the time the juice gets to the Pi down the cable Gizmo Junkies provided with the wall wart, the voltage is at … wait for it … can we guess? exactly 5.25 volts - the upper limit of the Raspberry Pi power requirement specification. Talk about a thorough design - I am impressed.
The Raspberry Pi power requirement spec is 5v +/- 5% which gives a seemingly wide range from 4.75v to 5.25v.
I was very happy with my Pololu S18V20F5 5v 2A step-up / step-down switching supply when I saw 4.97 to 4.99 volts coming out. I never thought to measure what the voltage is at the Pi six inches away. I bought one of the shortest USB to mini-USB cables I could find on Amazon. Pretty ones too! Turns out at idle the voltage reading at the 40 pin connector is 4.82 - 4.86v with that 6" cable. When I cranked up fibonacci.py at 100% of one core and pulled 500mA of that 4.97 to 4.99v through the cable, the voltage varied from 4.67 to 4.77v at the 40 pin connector.
The Raspberry Pi says “wait just a minute there cowboy” at exactly 4.75v declaring an under-voltage event and throttling the processor back from 1.2GHz to 600MHz, which draws a little less current, which means slightly less voltage drop in that 6 inches of two tiny wires. The Pi3 sees the voltage go up and eventually runs the clock back to 1.2GHz and the trouble comes right back.
I grabbed my thirty year old rolls of “hookup wire” and built me a 6 inch twisted pair cable and soldered the hair thick conductors of the mini-USB connector at the end. Now my Pi 3 is drinking a solid 4.93v at idle and 4.90 at 500mA running that fib sequence on one core. The proc says it is starting to sweat (65.5 degC) but did not register an under-voltage at boot or under this load.
In fact - I just ran four remote WiFi ssh shells, two running fib.py, one looping a status which reads the HC-SR04 ultrasonic sensor, checks the ADC readings of the IR sensor distance sensor, the main battery voltage, and total current draw (635ma at 7.4v), and the last shell looping checking the vcgencmd to get proc temperature (I stopped everything at 80.1 degC), proc frequency (1.2GHz) and the throttled flags (all 0x00000 - no under-voltage, no throttling!).
The board above the Pi 3 got pretty warm, and the 40pin connector “5v0” went down to 4.88v, but the bot survived the load with no “events”.
I’m going to buy the S18V20ALV variable output supply so that I can have more safety factor, and use the “pretty” cable I started this journey with.
Just a note for anyone reading - Brandon in support responded quickly and showed great interest. A big thank you to him.