I am in the design phase of a project in which I have to command 3 BLDC motors connected to the same Arduino UNO in open loop (No encoders). Does anybody have any idea of how is this achievable? What hardware do I need? Does anybody have already tried something like this? Is it possible to control 3 BLDC motors in closed loop(with encoders)? Any idea is welcome!
I must use an arduino uno to control in torque three motors (like a DC motor). Does anybody knows if it is possible using some other electronic component in between the arduino and the motor will make this possible? I mean, something like an ESC but that is capable to move the motors in both directions.
The UNO will not be able to drive 3 BLDC motors by itself. But using an external driver, it can do so. If you need torque control, things get more difficult.
Take a look at ODrive and Moteus. They are advanced ESCs that have torque control, and can be controlled via different protocols. They aren’t cheap though.
There are also boards like the Storm32 gimbal controller - it can control 3 BLDC motors itself, but you would need to write a firmware to control it via Serial, or similar, from the Uno.
May I ask why it has to be an Uno, and not another MCU?
Also, may I ask what is your actual goal you are trying to achieve with the 3 motors? Do you really need to control the torque?
For the Arduino Uno, even controlling 3 brushless ESCs with torque control will be a challenge - it only has 1 serial port, so you could only connect one ESC that way. CAN-bus could be a solution, for example in combination with Odrive.
If you are happy with brushed DC motors, there are many solutions that can control the speed using only 1 PWM signal, and so you could control 3 or even more brushed DC motors from a Uno, no problem. But I would not call that controlling the torque.
For brushless motors, one solution I have come across that might realistically work for you without too much effort is the Gyems RMD motors (AliExpress). These integrate the ESC in the motor, and have position and velocity control via RS485 (a kind of serial protocol).
Via a $2 MAX485 adapter you should be able to control 3 of these motors from an Arduino Uno. But I’m not sure I would consider it as controlling the torque, more like the velocity (or position).
Thank you for your answer @runger ! I will look into the motors you sent. I need to use an Arduino uno since I have already prepared a functioning ROS wireless node, and it would be extremely time-consuming doing it with another board. However, if the requirement on the board is strong, the one on the torque control is not. In other words, I would be happy also with a speed control instead of torque control. In your opinion, if I want to control the motor in speed, is it possible to achieve it with 3 brushless motors with 3ESCs (like the reversible ones one used in RC cars)? I will explain a bit about the project I am doing: I am building a satellite simulator platform, think of it as a balancing cube hinged to ground 3 times. In this way, using 3 reaction wheels is capable to obtain every attitude configuration I want. Onboard the “fake spacecraft” there will be an arduino wifi sending data to the PC where a multiplicative extended kalman filter will be running (closing the control loop). The objective is to try some of the control laws that I studied during my master.
Yes, absolutely you will be able to control the motors in this way. The simple ESCs typically have RC-inputs for a flight controller or receiver, so they are controlled by a single PWM signal. Maybe you can also find ones with PWM/DIR (for speed and direction) interfaces, that could be more controllable. Your Arduino can control 3 of these, no problem.
The RC-ESCs tend to be a bit simple, and typically handle fast-turning motors like the ones used in the RC-cars. It might be a bit of a challenge if you need fine control, but balance wheels sound like fast-turning things? It would be definately worth a try, I think.