After my self-education on MLCC derating I spun yet another low-volume prototype run of the servo controller. This one has more than double the effective capacitance by doubling the number of capacitors and by selecting capacitors that have less derating. I also fixed an incorrect pad geometry for the 6 pin ZH connector, optimized the BOM count a bit and reselected parts that were no longer available.
To validate that this controller revision was robust enough to get a full mech’s worth of them made, I wrote up a simple test tool which ran the leg through a continuous jump cycle. The goal was to validate the thermal design of the controller and motor, and while I’m at it, test the robustness of the 3d printed mechanical leg parts.
I knew endurance testing would be a process. That said, this was a pretty interesting one.
First up: The RS485 cable joined into a screw terminal in part of the cable that moved up and down during a jump. This had been coming loose on and off for me previously, and now was a limiting factor. The fix was simple, move the terminal block further down the cable harness so that it didn’t move during a jump.
Next, an even simpler problem. The leg wore through some gaffer tape I had on my sheet of jumping foam and it became stuck to the adhesive. I just moved the leg so that it didn’t jump on tape.
Now, an exercise in thermal management. I gradually decreased the current used during the jump and landing phase until the steady state temperature of the controllers didn’t exceed my somewhat arbitrary 60C. At that point, the 3d printed parts were starting to outgas a bit, so I figured that was a decent upper limit.
With those changes, I was able to get it pogo-sticking pretty reliably for 6 or 7 minutes at a time. Here’s a video of the end of one of those runs, at which point you can see the next problem.
A more vexing problem
As seen above, after jumping for approximately 6 or 7 minutes, eventually the yaw axis would fail in a way that resulted in the electrical phase detection becoming offset. The offset appeared to grow over time. Eventually, this resulted in a loss of control in the lateral axis servo, when the D and Q currents became swapped.
This problem was most mysterious. The lateral motor is basically doing nothing in these tests, the overall torque applied is maybe 1/50th of that which the upper and lower leg motors are generating. My first thought was that perhaps the magnet which was attached to the shaft was faulty or had become demagnetized. So I swapped it out, and while I was at it, added a spacer so that the magnet was closer to the magnetic encoder.
No dice. Same failure, although this time I got 15 minutes of jumping in before it failed.
Another thought was that the rotor was somehow slipping on the axle. However, the set screw was definitely still firmly in place, and this seemed pretty unlikely anyhow, since there was almost no torque on it. The upper and lower leg motor with 100x the torque were not slipping.
Finally, I concluded that the bracket itself was deforming, resulting in the magnet changing alignment with the magnetic sensor. In this configuration, the entire leg is cantilevered out. Additionally, the linear rail fixture results in a large amount of torque being applied to the yaw bracket.
I already had beefier brackets coming in for other reasons. I swapped them in, along with some new leg hardware to be described later. Now with some forced air cooling I was able to even jump a reasonable height without stopping. Here’s an endurance run showing the most aggressive jumping it could do indefinitely.
And here’s another video showing the max height I could get on this jumping fixture, which it could do for about 2 minutes before exceeding my safe temperature limit.
And for fun, a snapshot of my desk while recording one of the endurance videos. It is quite tedious to let the leg jump for hours at a time while hoping nothing goes wrong!