SMC03 over-current protection

I’m trying to use two SMC03’s to feedback speed control two diaphragm pumps (to gas-sparge the filtration membranes in my wife’s bioreactor, fun!), and I think I’m hitting the driver chip’s current limit at start-up. Unfortunately the pump manufacturer doesn’t supply much information on the motor.

At 12V the motor just won’t start for any speed command. Running the pump straight from the 12V power supply, it only draws about 0.6A once it gets going, but I don’t have a simple way to measure the start-up current spike. If that is what’s killing it, I don’t think I’m going over what the chip can handle by much. Running from a 9V alkaline battery, the motor starts up just fine, but unfortunately slower than we need it to run.

The project budget is pretty much gone at this point, so I was hoping not to have to trade these in towards two SMC04’s. I was thinking of soldering a second driver chip in paralel onto each controller, but I see that TI isn’t making the TPIC0107B any more, and I haven’t been able to find a supplier with any left in stock.

So, I guess my questions boil down to:

Have you (Pololu guys) found a pin-compatible replacement chip for the SMC03’s?

Does anyone know of a place I could pick up two TPIC0107Bs?

Alternatively, does anyone have an idea for a sneaky way to suppress the over-current protection on the TPIC0107B?


Hi, Adam,

I’m sorry to hear about your problem. We don’t know of a pin-compatible replacement chip, so we’re going to have to discontinue this motor controller once our current stock of TPIC0107Bs runs out. We know of better chips (e.g. the Freescale MC33887), anyway. I don’t know how well the chips will take being stacked, but we can send you a few if that’s your last resort. Can you do something to limit the current to the motor controller? Perhaps you could wire up a voltage regulator or more specific chip (I don’t know of one) to limit the current, or you could go with more primitive components like in-line resistors or inductors. Maybe a 1 or 2 ohm resistor (with the appropriate power dissipation capacity) might be enough to limit that initial surge.

- Jan

Excellent idea Jan, with 1ohm it starts up every time. With 1/2 ohm it starts about half of the time, so I think I’m right at the perfect resistance. Why didn’t I think of that! Radio shack isn’t good for much these days, but they do still stock nice big 1ohm 10W wirewound resistors.

So, do you have plans for a similar ~$50, medium current feedback motor controller in the works?


P.S. Tanna is very happy and says you should all come over for Dinner if you’re ever in Ann Arbor.

Great! The replacement unit is in the works to the extent that it’s on our list of about 20 things we need to make; there’s nothing more specific right now.

Thanks for the invitation! We’d love to have you over if you’re ever in Vegas, too. You should be able to find some kind of can’t-miss convention that your lab can send you to, right?

- Jan

NIST had a convention in Las Vegas about two and a half years ago, and a team from my lab went, but I was the new guy at that point so I stayed here molding spare tracks and sprockets. We’ll what the future holds…


After a little PID tuning the controllers are working just great:

Just out of curiosity, what do the red and green LEDs indicate? The manual only says that they represent “various statuses”. In serial/speed control mode they seem to flash for some positive and negative feedback (respectively) threshold most of the time, but sometimes one or both will just stay on, which is a little confusing.


Wow, that looks beautiful! Here are the LED functions:

Feedback modes:
red on: motor speed at max
green on: error magnitude less than or equal to 1
(In RC mode, both LEDs on for no signal)
(In serial mode, red or green light flashes for serial too slow or to fast)

serial input, no feedback
red LED: motor error
green LED: on if motor speed not 0

RC input, no feedback
red LED on: bad RC signal
green LED on: good RC signal

analog input, no feedback
red LED for one direction, green LED for other direction

I also added this to the FAQ if you’re looking for it in the future.

- Jan

Late followup:

I’m guessing not, but Is there a sneaky way to read the PID parameters back from the SMC03A motor controllers? These two are tuned up great and working well, but I’m finally documenting them and I can’t seem to find the parameters I ended up using when I tuned them almost a year ago (and I’d rather not mess with them now!).


There is a sneaky way! There parameters you can set have addresses 0-8. If you try to use a higher address (e.g. add 0x10), no write will be performed, but the controller will read the value at the address specified by the low 4 bits. The controller should send out two bytes: the address and then the value.

- Jan

Sneaky! Worked great.


Well, it’s almost two years later (and about a week before we skip town!), and other than needing replacement diaphragms (normal maintenance) the original pump system is going strong.

However, the student who took over my wife’s project after she graduated decided he needed higher gas-sparging rates so it was clearly time for (channeling Tim Allen) More Power:

Okay, so its hard to tell just from looking at them, but those are larger pump heads on larger DC motors, with a max flow rate of 15 liters/minute (the old ones topped out at 5). Conveniently, the bigger motors are more efficient, drawing only 0.8A at 12V (compared to 1.0A for the old ones), but their current spikes are even more monstrous.

I didn’t have nearly as much time to work on this one, so it’s a little less pretty (plastic cups protecting the tachometers instead of acrylic pipe, etc…) but it works perfectly. Also, especially after having built a similar system with the SMC03As, it was an absolute joy to work with the Jrks and the configuration utility. The GUI is very intuitive and the visual feedback is invaluable! It cut the system tuning time down by a factor of 20 at least!

I did run into one minor issue with the Jrks. I know its been brought up before that the Jrk acceleration parameter only limits increasing duty cycles, but lets them decrease to zero in a single PID cycle. I started running these pumps with 0.1uF caps and a slight acceleration limit, which worked fine for increasing the speed, but which would send my power supply into self-shutdown whenever I stopped the motors. I ended up having to go with 10uF caps to prevent this.

I can understand how it could be desirable for a robot to be able to emergency-stop (this could also be achieved with the Motor Off command), but in a lot of situations automatic smooth ramping of both increasing and decreasing speed would be really nice. Ideally acceleration and deceleration could be separate parameters. I understand that would be a pain, since you would need to run a firmware revision AND modify the configuration utility. As a quick fix, maybe you could create an alternative version of the firmware that applies the acceleration parameter both ways and let the customers decide which version to load.

Just a thought, and other than that minor detail I’m super-happy with the Jrks!


1 Like

I agree very much with Adam. I was able to run my project with the larger power supplies (and Adam’s capacitor trick would suffice as well) but the rapid deceleration and change of direction was very hard on the mechanical systems.