How best can I control multiple (30) dc motors?

Hi there,

I wonder if you could make a suggestion for me? I have ~30 independent small ~1A bidirectional DC gearmotors to drive, the speed and direction signals ultimately come from a USB port. How would you suggest that I arrange this, which products would you suggest I use? I see the arduino mega that claims to produce 14 pwm signals but at low power ...

Thanks so much,

jb

You're going to need to look for some Transistors that can handle a little more than an amp per.

I just bought some ULN2803A which is a 7 transistors in a chip, all using the same ground/power. It can handle up to 50V, 500MA per channel, I haven't needed more power than that yet.

But yes, the pins can only source (put out), 40 MA per pin, up to 5 pins at once. (200MA total for the whole chip) Which, obviously would be easily out done just by one motor! :stuck_out_tongue:
You'll need the second power supply, grounds connected between the Arduino and that supply.. then looks like you'll be wanting alot of transistors.
There are also motor drivers, but I haven't had much experience with those, and I'm not sure if there are currently any that can do 30 motors, 1 amp each.
Hope this gives some helpful information, I'm sure RuggedCircuits and a few others will be able to offer you some highly detailed explanations :smiley:

What kind of control do you need over them? Do you need on/off, fwd/off/rev, speed control?

You might consider the 754410 quad half-H bridge chip. Each one can drive two motors up to 1.1A continuous, 4.5-36V. Depending on what kind of control you need you might need a bit of glue logic between the Arduino and the drivers.

Independent PWM on all 30 channels is a bit more complicated.

Thank you for the ideas, Cap'n and ajb.

I am looking at either the Solarbotics' GM22 or GM21, which stall at 950mA and 750mA respectively at 6V. I am looking for good independent bidirectional PWM speed control on all channels. I don't expect them all to be stalled at once by any means; no-load current is about 7% of these current numbers, so realistically 300mA/channel will work if the outputs will protect themselves against thermal ills.

I have never used the Mega - do you know if this has a good resolution on the PWM signal frequencies? I presume when it advertises it drives 14 of them that this means they are all independent ... right?

I see the ULN2803A from TI for $1. It is an array of 8 Darlingtons, so it can only sink current - 500mA max per channel, trouble with Darlingtons is the high saturation voltage - at 350mA it has a drop of 1.6V, which would burn 560mW per channel. (But hi-side only). Lacking any serious heat sinking arrangement, that means it would heat up by 35C per channel. Also, it has no current sourcing provision, so it'd not do bidirectional.

I do see some Arduino shield products for only 2 motors each that seem to have a whole pile of circuitry including the PWM control, which seems rather redundant if the Mega is there in the first place to provide the PWM timing signals.

The 754410 from TI for $2 has two Darlington-like Full-H drivers up to 1A each, thermal shutdown, it is rated for 2W continuous package dissipation, but at 500mA the driver and sink sides combine to spec a drop of 2.9V, so it would be maxxed out thermally if each of the two motors was using 330mA (1W/channel)

An earlier Dual Darlington bridge product is the $3 L293D also from TI, with a 3.6V drop at 600mA, so it might burn 1W/channel at 300mA too.

Less marginal perhaps is the Dual Darlington bridge Thompson L298 for $3. It has a similar enough 3.2V drop at 1A, but the package allows for a heat sink to be attached.

Any of these separate driver chip arrangements would need wiring to be arranged - Solarbotics does make a kit for this for $20, but this is starting to look like an awful heap of parts and unattached boards!

Any more suggestions would be really welcomed. Thanks guys!

Combining a TLC5940 with the on-board PWM would give you 30 channels for speed control.

Alltronics has used L293D's (pulled from sockets) for a dollar apiece.

If you're going to have the motors running a high percentage of the time, I'd definitely plan on putting heatsinks on the chips.

Ran

Well, the 5940 is only a pull-down device - not much use as a DC motor driver. The L293 is yet another dual Darlington arrangement, with a 3.0V combined drop. Nothing sparkling there.

Another option suggested by Jan Malasek of Pololu: the qik 2s9v1 http://www.pololu.com/catalog/product/1110

or the driver board alone http://www.pololu.com/catalog/product/713

This uses the $1 Toshiba TB6612FNG chip, a dual MOS (not Darlington) Full-H driver. Very attractively, it is spec'd at only 700mV drop at 1A (700mW) and 210mV drop at 300mA (60mW) per channel. Has thermal shutdown. Chip Power limit at 50C ambient is 700mW, but due to the low resistance I wouldn't expect to see this hit until 700mA/channel or so.

TB6612FNG Spec sheet: http://www.toshiba.com/taec/components2/Datasheet_Sync//261/27197.pdf

Oops, should've been more specific: the TLC5940 does PWM, so you'd use it to supplement the on-board PWM channels to give you a total of 30 for speed control inputs to H-bridge chips.

Those Toshiba drivers definitely do look much nicer than the L293D, at first glance. If you've got the budget to put 15 of those boards in your project, I'd certainly recommend trying them as an alternative. But I don't have any direct experience with them, so I can't give you either a solid endorsement or a warning.

Ran

Oh, I see now Ron. That makes much sense. For the 30 motor drivers, I would say that the on-chip 8 bits frequency resolution is fine (as well as the 12-bit resolution supplied by the 5940).

However, I also have 15 or so low-power LEDs that I will be powering (20mA but only one at a time), for which the 5940 would be good.

And another 20-40 high power LEDs (100mA?, I haven't done my homework here yet) that I want to light up an area in adjustable color, intensity, and direction, so many of these will be on simultaneously. Here, the 12-bit resolution sounds much nicer than the Arduino's on-chip 8-bits.

So, for those 2 LED applications it sounds like I should inspect the 5940 in more detail - such as how cleanly the shift/latch mechanism works, whether there is a newer version that is slicker is some way ...

Thanks for the suggestion! jb

I've seen several threads on this forum started by people using the TLC5940. There may even be an example for it in the Playground area.

By searching here, you can get specific info on how people have made it work with the Arduino.

Ran

Is it possible to charlieplex motors using diodes?

Is it possible to charlieplex motors using diodes?

No not really.

You would be have a motor that is constantly being pulsed on and off. This would mean that the motors would not run at full speed but at a rate determined by your charlieplex refresh rate.

Also charlieplex relies on direct drive from an output that you can turn off or tri-state. You can't do this with drivers and there isn't enough current capability to drive the motors direct from an arduino.