While troubleshooting control issues with our robot, we noticed an unusual fault with one of the four Spark MAXes powering our drivetrain. The initial symptom was that, at apparently random times while driving, the drivetrain would stop responding normally: full-input turning would result in minimal motion, and what movement did occur was slow and jerky.
During one of the periods when these problems were occurring, we noticed unusual LED behavior on one of our Spark MAXes. Sometimes the LED would appear to be completely off, and other times it would seem to oscillate very quickly (many times per second) between magenta and the proper color (red or green, depending on the driver commands); see Spark-MAX-1. While attempting to diagnose the issue with the robot disabled, we noticed that physically pushing the robot along the ground would cause the LED to flicker between off and magenta. (The LEDs on the other three MAXes behaved normally throughout testing.)
We were able to trace the issue to an apparent problem with the encoder circuitry in that particular Spark MAX. With the MAX powered from a benchtop supply, and with only the Neo’s encoder connected (not the power wires), the LED on the MAX would flicker magenta when the Neo’s shaft was rotated by hand. For the most part, when the Neo shaft was not being rotated, the LED would slowly blink magenta, as is normal; however, if the shaft was in one of a few very narrow positions, the LED would show the magenta-orange “brushless encoder error” blink (see Spark-MAX-2. A brand-new Neo, when plugged into the MAX, resulted in the same behavior, pointing to a problem in the MAX. After disassembling the MAX, we couldn’t find any metallic swarf, bent pins, or other physical problems.
Other than the LED behavior, the only anomaly noted was that the bad MAX drew about 85 mA at 12 V when idling, as compared to about 72 mA for a new one. Re-flashing the firmware was successful, but did not fix the issue.