I like my Simple Motor Controller 24v23 v1.4. I haven’t hooked it up to a motor yet; I’m just writing my software at this point. But so far as the software goes, I’m generally happy with my purchase.
I have a single complaint/feature request though: I really wish that the Simple Motor Controller’s ERR line were active-low. I think active-low is typical of fault detection lines.
I think the way the ERR line is supposed to work is that if any one of the devices on the ERR bus activated the line, all the devices would see it and shut down, right? That approach doesn’t work so reliably on an active-high inputs, especially when things are going wrong, which is exactly the situation where I would be using my ERR line.
The most serious case to consider for a fault detection line is where physical damage is happening and may escalate to people getting hurt. In the case of robot motor controllers, that would be one where control lines are being physically cut by the mechanical parts of the robot as it is destroying itself. As the machine’s metal parts cut the control lines, ERR will briefly be grounded. If the ERR line were active-low, that would raise the signal and allow any motors still powered to be shut down.
A less dramatic but more sinister case is one where some device is actively driving the active-high line low, either by bad design or a run-time failure. Either way, it would drain current away from the ERR line to ground. In microelectronics, current drains win over current sources. No matter how hard another device tries to raise the ERR line, the voltage won’t rise.
Lastly, with an active-high input, it takes work to push voltage up and raise the signal. As a fault detection bus, it should have a chance at detecting when a device on the bus has lost its own power supply. I understand that the other devices on the bus aren’t necessarily Pololu products, and it’s not your job to make sure they properly signal their failure. But with an active-high ERR line, it’s impossible to raise the signal when you’ve lost power. If ERR were an active-low line, the line driver for the device losing power could at least ground the line, which doesn’t require power.
From what I see, it should be easy enough for Pololu to publish an alternate firmware that makes the ERR line active low. It looks like the ERR terminal goes to a STM103TB microcontroller, input pin PB2, which has software-selectable pull-up resistor.