Bart the Robot Spins His Wheels

Bart NMC round 1The initial test session with Bart the robot was a bust. But after reviewing the manual, we realized that a few jumpers needed to be set. These jumpers mark a control board as the end of the daisy-chain, and the end unit is where the NMC protocol’s roll-call procedure started. Bart probably had a few other NMC modules in his prime, and one of them would have been the end because neither of the current-day modules were configured as such. Since neither knew to act as the end unit, there was no module to respond to the start of the roll-call procedure, and NMC communication fails.

Once we marked our current-day motor control module as the end of the chain, the NMC roll-call was successful and our NMC test program was able to communicate with the boards. We were able to obtain readings from the encoder, and see it respond as we rotated the wheels by hand. That got us excited, and the first few motor commands we sent resulted in motor movement which got us even more excited.

Sadly, that initial enthusiasm was dampened by further experimentation. We tried to understand how the motor commands translated to actual motor movement but our experimentation returned very confusing results. The motors would work well on one move, and when we tweaked what we thought was a single small variable, it does something completely and unpredictably different.

Eventually we fell back to sending the same command over and over, and confirmed that the controller does not do the same thing in response. Same command sent repeatedly would result in wildly different speeds each time. Sometimes it even tries to spin the motor in the opposite direction resulting in an error condition and reset.

And every time we experienced a reset, the board would not consistently reconnect to the computer software. We would frequently have to disconnect and power cycle everything before we could resume experimentation.

Our hypothesis is that these control boards were left on Bart – and not salvaged for his successor – because they were malfunctioning. It’s just as likely something on the board degraded in the past 17 years. Either way, an unpredictable motor control board won’t do Bart any good. These closed-loop motor controllers would have been fantastic if we could get them running, so it was worth a bit of time and money to try them out. But now that we have our answer, it’s time to leave them behind.

Trying to Talk To Bart the Robot

Bart NMC round 1The motivation to learn about stepper motors came from Bart the robot. The previous owners had pretty much cleaned out Bart components, but the locomotion subsystem is mostly intact. This consists of two wheel assemblies, each of which is driven by a beefy-looking stepper motor with a quadrature encoder attached to the other end of the shaft. This assembly is attached to a control board of some sort, implying closed-loop control. The board looks superficially intact so the obvious first step is to see if we can make them run.

The control board is made by J.R.Kerr LLC, a company that has since been acquired, but apparently there’s some sort of tech support obligation still in effect. Contacting the new owners confirmed the product is long out of production and no longer on the actively supported product list, but they suggested we look at documentation one of its still-supported relatives “PIC-SERVO 3PH” to get a rough idea. From such documentation we learned the product line communicate to each other via a protocol called “NMC” over RS-485 hardware. The official adapter “SSA-485” costs more than what we’d want to spend just for exploration, but there are vendors on Amazon selling RS-485 adapter for impulse-buy money.

The adapter takes care of the hardware. For the software, a NMC Test Utility was available from the software downloads page. As the only person with a Windows machine, my laptop was roped into test duty.

The first exploration session was a failure – there was no response from the control boards at all. But there were no smoke and no fire, which is good. Probing the board confirmed components were receiving power, but there was no communication and certainly no motor motion.