[Andrew] had a servo damaged by someone connecting the power supply to the wrong pins (whoops) which fried the microcontroller and a logic level shifter. With a bit of reverse engineering, he successfully restored basic servo functionality by writing some new code. The new code implements only basic features, but that’s enough to save the device from the junk bin.
Why bother reverse engineering a servo? Well, if dollars are reasons then there are many for saving a HerkuleX DRS-0602 from the junk heap; they cost around 320 USD before shipping. Another reason to try is that the microcontroller turned out to be an AVR XMega, which gave [Andrew] confidence in writing some new code.
If you want to understand more about how these servos work, [Andrew] provides good photos of the insides and identifies the major components and their connections and functions. There are some mysteries (such as details of the motor and embedded encoder, which are FAULHABER 2232DBHHO) but [Andrew] figured out enough to write some basic code to allow the servo to work as a standard servo with a UART interface.
Sometimes curiosity drives reverse engineering and repair efforts, sometimes it’s cost, and sometimes it’s both. A $320 servo is certainly worth trying to save, and so are huge observatory telescopes with obsolete servo amps.
9 thoughts on “Rescue An Expensive Servo With Some Reverse Engineering”
Informations about the motor can be found on the FAULHABER website faulhaber.com, type 2232 in the search box. In the product page more information are provided for accessories like gearboxes or rotary encoders. But it might be necessary to look at the side of the motor to see additional markings or the full part number.
According to his own writing he also could not find:
Searching for type numbers without prefixes sometimes helps to find (very similar) parts.
The datasheets found point to a dual N-channel Fet 30V 7.5A 22mOhm.
I wanted to know why this thing was so expensive, is it just the fancy control circuit that was fried? The torque spec quite impressed me: “77.0kgf.cm” I’m not keen on “kgf” as a unit of force, but that seems to be about 5.5ft*lb, which is really something for a little servo!
kgf * cm is indeed a weird and outdated unit for torque. I wonder why they wouldn’t just give it in newton meters, that’s what I’m used to seeing for motors.
Also seems to be high precision and programmable somewhat, though not sure if that aspect ended up being deleted with less sophisticated firmware in replacement.
A $320 servo killed because the manufacturer couldn’t be bothered to add a $0.10 shunt diode across the power pins? That’s seriously lame. I hope that [Andrew] added one to prevent this from happening again.
Kudos to him for managing the repair.
To me the phrasing indicates that power was connected to the microcontroller IO pins, not that the power pins were connected in reverse. Shunt diode won’t help you there, though I’d think they’d want to have some additional input protection on those pins too since this is an industrial part.
They could easily have a series resistor in the I/O pin for the control signal. It’ll help to protect against the signal pin from overvoltage and accidents like this.
IIRC, servos have the power pin in the middle of their 3-pin connector, so if you accidentally reverse it, you don’t push voltage into the data pin. So this kind of accident shouldn’t happen easily.
However, I suspect this servo maybe has a different connector and pinout?
Please be kind and respectful to help make the comments section excellent. (Comment Policy)