Controlling many DC motors via PWM

Hi all,

today a friend posed me an interesting problem. I am a little out of my depth here, so I hope you can set me on the right path. This is technically not an Arduino question, but I think it's close enough.

The main point is controlling around 50 DC motors with a single PWM signal. (Single direction, variable speed).

The motors are all identical, but may be subjected to different loads. Specs of the motors:

rated voltage: 24V
no-load current: <100 mA
stall current: 2A

The PWM signal is coming from a siemens s7-300 PLC. Its specs:

Voltage: +- 10 V
current: 0 - 20 mA
pulse frequency: <2.5kHz

Now, if it were just one motor it'd be a no-brainer, just toss in a MOSFET. Considering that motors might be subjected to different loads, I consider giving each motor it's own MOSFET. However, for this many motors, I'm beginning to get worried that the combined gate current of MOSFETs might be too much for the PLC.

Has anyone here tackled a problem like this, or has the knowledge/experience to point me to a solution?

Things I have considered so far:

  • a dual MOSFET module like this per motor. Apparently these give a very low S-D resistance. Adding a fly-back diode required.

  • a 4 channel MOSFET module like this this. These come with a optocoupler in place. How does this influence gate current? Again fly-back diode required.

  • I am open to other suggestions (please!). A ready-made module would be convenient considering the number, but building my own is possible.

  • Switching to a lower-power motor is an option, but not preferred. Alternative would be a 0.6A stall current at 24 V.

Thanks so much for your input!

In days long gone RC controles used one PPM signal for N RC servos. PPM was fed into a counter (falling flank), counter fed a MUX, next PPM went through the MUX, when the timeframe was too long the counter was reset to zero - that's where this funny PPM signal with 1 to 2 ms pulsewidth in 20 ms frame comes from. Speed controllers in those days just stretched the signal by a factor of 10, that gave a PWM woth 50 Hz. Later controlers just repeated the signal till the next PPM Pulse was received ...

TimMJN:
Hi all,

today a friend posed me an interesting problem. I am a little out of my depth here, so I hope you can set me on the right path. This is technically not an Arduino question, but I think it's close enough.

The main point is controlling around 50 DC motors with a single PWM signal. (Single direction, variable speed).

Then you only need one (big enough) motor controller/MOSFET and PWM signal.

The motors are all identical, but may be subjected to different loads. Specs of the motors:

If you drive them from the same signal and they have different loads they will run at different speeds - you are happy with that?

rated voltage: 24V
no-load current: <100 mA
stall current: 2A

The PWM signal is coming from a siemens s7-300 PLC. Its specs:

Voltage: +- 10 V
current: 0 - 20 mA
pulse frequency: <2.5kHz

+/-10V is not usually used for MOSFETs, since that prevents the standard zener protection circuit used across the gate/source.

Now, if it were just one motor it'd be a no-brainer, just toss in a MOSFET. Considering that motors might be subjected to different loads, I consider giving each motor it's own MOSFET.

No reason to do that.

However, for this many motors, I'm beginning to get worried that the combined gate current of MOSFETs might be too much for the PLC.

A good reason not to use one MOSFET per motor...

Has anyone here tackled a problem like this, or has the knowledge/experience to point me to a solution?

Condition your PWM signal to logic-level to drive a MOSFET gate driver chip. Drive the MOSFET or MOSFETs from
the gate driver chip. Job done.

Things I have considered so far:

  • a dual MOSFET module like this per motor. Apparently these give a very low S-D resistance. Adding a fly-back diode required.

They should handle 10A or so, with ease.

  • a 4 channel MOSFET module like this this. These come with a optocoupler in place. How does this influence gate current? Again fly-back diode required.

IRF540 is not logic level, but here that's not an issue for 10V or a gate driver, but its got much more on-resistance than the AOD4184A based module.

  • I am open to other suggestions (please!). A ready-made module would be convenient considering the number, but building my own is possible.

  • Switching to a lower-power motor is an option, but not preferred. Alternative would be a 0.6A stall current at 24 V.

Thanks so much for your input!

Firstly with this many motors you'll probably have to group into bundles of N, simply for power supply reasons, so figure out and size the power supplies first, then you'll know how many amps your MOSFET
needs to be per bundle.

Then make one bundle and test it before buying components for the others (in case there are issues you have to fix).

With 5 bundles of 10 you'll only have to split the PLC output 5 ways, for instance, which is more sane.

Build one spare set too, for quick replacement if anything fails. Engineer it well so it isn't likely to fail!

MarkT, thank you so much for you're incredibly useful reply. I will take your advice, do some research and try to design a schematic. If it's okay with you, I'll post it here and possibly ask for some feedback.

Thanks again!