Best way to Control 375 basic DC Motors?

Hey I'm new to electrical/mechanical engineering (I have experience in software) and I have a project that requires 375 super basic dc motors to be controlled, I have to be able to control direction, but speed control would just be a bonus, (not necessary).

It will be wall powered (not battery).

I understand that you can't control that many motors with one controller, so my question is how many motors can you control in this fashion with an Arduino mega and l298n controllers or something like that (so that I can control big groups of motors with each Arduino, and then control all the Arduinos with a raspberry pi or another Arduino or something, or if anybody has any better ideas for controlling this many basic dc motors in general.

I expect to have to use a computer power supply to power this many but if anyone has feedback on that that would be great too.

Again, every single motor has to be individually controllable, which I understand makes this project very difficult but I really want to see if it's possible.

Thank you in advance, and sorry for my ignorance on this type of stuff like I said I'm new to electrical/mechanical.

There are no stupid questions. But the answer is of course. Now, Time, Cost, Effort will dictate how far you get.
Start with a simple controller, a driver, a motor. Get your feet wet. Now scale up to whatever that controller can do. Then multiply the process.
But, Considerations will include:
Power - how much, where, for what?
Distribution - where are the motors, controllers, etc. located.
Control - a PC, switches, phone, what is your control source?
Communication - so you have a control node and distributed motor controllers; what connects them? Do you need synchronicity?
Sounds interesting!

1 Like

You need one driver per motor. A MOSFET if unidirectional, H-bridge if bidirectional.

One Arduino could control a few motor drivers. Maybe six, if bidirectional. One motor power supply per Arduino and six small motors might be reasonable.

Start thinking about how you would network all those Arduinos. RS485 multidrop comes to mind, but 375/6 = 62 nodes on one network is almost certainly out of the question.

1 Like

Software engineering is no different. You have been given good suggestions. Now, like software, consider how you will find and repair failures when the occur? You write of control, but only command. Do you need to know if a motor actually responds to your command?

1 Like

Hi, @jacesimons10
Welcome to the forum.
You could use port expanders to control the fwd/stop/rev for your motors, basically multiplexing each motor.
How ever the speed of the process may need fast controllers.
How quickly do you want to update the combination of motor instructions to the display?

As stated you will need a H-Bridge for each motor, then a gnd, supply and 2 two control wires per motor, so you need to also workout the physical layout of motors and cabling.

Is this a kinetic artwork.

Tom.. :smiley: :+1: :coffee: :australia:

2 Likes

Welcome jacesimons10, enjoy the forum it sounds like an ambitious but fun project. CAN would work nicely as your communication link. You could implement common commands such as stop all, then one transmission would shut all of them down. The Nano or other inexpensive units with the MPC2515 module would be an easy build. Cory Fowler has posted a free library that works nicely with this module. It has both a send and receive programs included with it. For me it worked the first time I tried it. Note: you must have a receive module on the network for it to work, it generates the ACK signal. Each module could report back status by command or whenever it wanted. 250K baud would be an over kill but easily accomplished. I would recommend against the L298N devices they burn up a lot of power as heat. Find one that you like with MOSFET outputs. Expect about a 3V drop to each motor.

I would suggest posting a simple block diagram of how you think this should be assembled. Although you are using simple motors they have things we need to know about such as type, current, voltage, etc. Easiest is to post a link to its technical information.

1 Like

One idea that just struck me, after reeling from the numbers of motors you want to control, is that maybe you could drive them as a matrix. Similarly to the way arrays of LEDs are driven. The duty cycle would be much lower, but you could (theoretically) equalize it with a higher supply voltage. A 20 by 20 array would drive 400 motors. If a driver module has two outputs, then you only need 20 modules to drive 400 motors that way. The development might be tricky. Things like starting torque might be different. So it depends a lot on your application need.

1 Like

@anon57585045 I think the switching of the motors on and off would result in a lot of electrical noise; it's like a big array of inductors, or relay coils. Yuck.

But until the OP gives up some more information, this is all hot air.

1 Like

Might help to know your interpretation of "basic DC motor".
littleDCmotor

big_DC_Motor

5 Likes

I don't think so- I should be more specific, each motor will turn the gear in a rack and pinion system. Does that change the answer at all?

Could you go into more detail about multiplexing is and how I would do such a thing? I have a physical layout modeled up so I understand how each motor and the controllers would fit into the contraption, so thank you for the help.

It is kind of like kinetic artwork how did you know?! :slight_smile:

I'm sorry but I do not know what ACK signal means or MPC25215 or any of that other stuff, except L298N and MOSFET I was taught briefly about those by someone else I've talked to about the project.
Unfortunately I don't have motors or anything picked out, so I don't have technical information, I was hoping some people here would be able to point me in the right direction in terms of what motors to go with, etc.

Yeah I thought about the same thing, driving them in terms of coordinates on a grid. How would you set such a thing up electrically, though? Whatever motor it ends up being, all 375 will be the same kind, so is starting torque still a concern there?

What kind of information would help answer the question? My apologies I am new to this and don't know what is important for this type of thing. Like I said in another reply I don't have any of the hardware yet, so I don't have technical information or anything like that, I'm trying to decide what hardware to go with yk?

haha yeah okay like the small one, it just needs to turn a gear in a small (about 4 inches long) rack and pinion system, so I'm guessing it would need relatively low wattage, is that correct?

What is that giant motor used for haha

Do you have any recommendations for hardware I should use to 'get my feet wet'?

Power- I don't know, I was thinking like using a high wattage computer power supply or something, does that make sense for this? Does that answer the question?
Distribution- The motors will all be located within a few inches of its neighbors, like a grid
Control - I'm thinking like a central raspberry pi/arduino would run the bulk of the software and then would dispatch the commands in an array or something to each controller, which would then feed those to its child motors.
Communication - Could you define synchronicity for this? Do you mean like do I need the motors to communicate with each other or something?

Oh and I saw some people talking about networking, I'm not sure if by networking you mean something like electrical networking like with wires communicating with the motors, but if you mean literally internet networking like controlling it with my computer, then refer to my idea of having an army of motor controllers that are all controlled by one central thing, like another arduino or raspberry pi. Which then could be networked seperately.

How do you know that it would control exactly six? Like could you explain to me how you figure that out so I could know how to calculate how many motors a given controller could control on my own?

CAN was designed as a very robust communication protocol initially designed for automotive applications. To try to make it simpler to understand; in order for it to guarantee the data gets through it monitors what it sends and a remote has to send one bit back to acknowledge it received the message. This is all transparent to you except you need to know you need one or more modules receiving the message. You simply set up a buffer with an address and up to 8 bytes of data and tell it to send it, it does everything else. If it fails it will let you know. When it receives data it will let you know. It does a lot more but it is all transparent to you.

1 Like

Sounds like you need a low speed motor, like an 28BYJ-48 stepper motor.
Or is 12RPM too slow.
A single basic Arduino has no problems driving 100 of them through power shift registers.
Leo..