Controlling 120 DC motors with one Arduino board.

General project help for Adafruit customers

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
Hdemirchian
 
Posts: 3
Joined: Sun Oct 10, 2021 5:26 pm

Controlling 120 DC motors with one Arduino board.

Post by Hdemirchian »

I would highly appreciate it if someone could guide me to a helpful schematics or document where I could learn how to and with which boards to build a system that I could control 120 DC motors.
I want to be able to control the motors' direction and keep the speed to the max.
I am not worried about the code because I am a programmer and I can figure it out. I just need help with finding the right hardware and instructions for wiring them.

Sincerely,
Henry

User avatar
sj_remington
 
Posts: 1021
Joined: Mon Jul 27, 2020 4:51 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by sj_remington »

Will each motor be controlled individually?

Brushed or brushless motors?

It is usually not possible to instantaneously switch motor direction without damaging the motor, so the condition of maximum speed at all times is unrealistic.

Is there a feedback signal from each motor? If so, what type?

What type of motor controller and/or type of control signal will you be using?

Note that the "right hardware" for motor control depends entirely on the voltage and current or power rating of the motor, so please specify those parameters, or post a link to the motor data sheet or product page.

User avatar
Hdemirchian
 
Posts: 3
Joined: Sun Oct 10, 2021 5:26 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by Hdemirchian »

Sorry for not including the motors' specs with my question.
Here they are:
Will each motor be controlled individually?
Yes. Some of them will go up, while others will go down. Some will not move at all. And some will stop halfway, while others will move all the way to the end of the screw length.

Brushed or brushless motors?
Brushless motors. They are DC 6V GA 12-N20-M4 500RPM Micro Speed Gear motors with a metal gearbox.

It is usually not possible to instantaneously switch motor direction without damaging the motor, so the condition of the maximum speed at all times is unrealistic.
That's fine. They will either be moving up or down and will stop at the end. They will not change direction on a fly.

Is there a feedback signal from each motor? If so, what type?
No feedback signal. It only has 2 inputs.

What type of motor controller and/or type of control signal will you be using?
I am not sure about the controller. I am a newbie. I have an Arduino board and a bunch of Onyehn 16 Channel PWM Servo Motor Driver PCA9685 IIC Module 12-Bit to be able to connect 120 motors.

User avatar
sj_remington
 
Posts: 1021
Joined: Mon Jul 27, 2020 4:51 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by sj_remington »

Those are BRUSHED D.C. motors, basic specifications here: https://abra-electronics.com/electromec ... 6v500.html

For bidirectional travel and stop, you need an H-bridge for each motor, capable of easily handling the start/stall current of the selected motor (up to 1 Ampere). That means at least two digital outputs per motor, or at least 240 digital outputs total, connected to 120 single or 60 dual H-bridge chips.
and will stop at the end

How will the end be detected, and the "stop" be accomplished? You can't just run a motor into an end stop and leave it to cook.

If end detection is done digitally by the Arduino, you will need at least 120 digital inputs for the system, plus another 120 digital inputs if both ends of the travel must be individually detected. So, more than 480 port pins total for the project.

This is not possible with a single Arduino. It could be done with a few dozen Arduinos (say, one Arduino per four motors), using port expanders. The project is guaranteed to generate splitting headaches for anyone involved.

User avatar
Hdemirchian
 
Posts: 3
Joined: Sun Oct 10, 2021 5:26 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by Hdemirchian »

Thanks for your help.
I am planning to use a timer (programmatically) to figure out if the motor is at the end or not.
If we go with that route (in other words without extra port usage for detecting the end of the screw), do you think I can use just one Arduino and a bunch of Onyehn 16 Channel PWM Servo Motor Driver PCA9685 to connect all of my 120 motors and control them?
I actually started connecting those drivers and running them, but I was losing the power of the motors. They were going much slower than if they were connected directly to the power source.

User avatar
sj_remington
 
Posts: 1021
Joined: Mon Jul 27, 2020 4:51 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by sj_remington »

a bunch of Onyehn 16 Channel PWM Servo Motor Driver PCA9685 to connect all of my 120 motors
No. You need an H-bridge for each motor.

A timer won't work reliably to determine motor travel endpoints, leading to probable destruction of the motor.

User avatar
sj_remington
 
Posts: 1021
Joined: Mon Jul 27, 2020 4:51 pm

Re: Controlling 120 DC motors with one Arduino board.

Post by sj_remington »

Perhaps brushed DC motors are not the best or even a good choice to solve your mechanical problem.

Consider explaining the actual goal of the project to forum members, and this thread might progress along more useful lines.

User avatar
adafruit_support_bill
 
Posts: 88154
Joined: Sat Feb 07, 2009 10:11 am

Re: Controlling 120 DC motors with one Arduino board.

Post by adafruit_support_bill »

I agree that more information about the application would be helpful. As sj_remington says, open-loop control via timers is not a good way to go. Motor speed will vary due to numerous variables and will either come up short of the destination position, or stall out against the physical limits.

There are some tricks you can do with limit switches that don't require actual feedback to the processor. e.g. https://www.hamradio.me/station/elevato ... tower.html

Locked
Please be positive and constructive with your questions and comments.

Return to “General Project help”