Hi all,
I’m new and this post is just for talk about the FOC library.
I would like know how many motor I can use with arduino.
It’s possible use 12 motor bldc 12 / 24 v (dog robot) and if anyone can help me to understand the connection (power / encoder / motor) will be appreciate.
I’m new in this things and I can’t image how this connection will be possible. If anyone can just talk with me and explain easy will be great.
Just for info to staff: the chrome have a bug with the “create new topic” section i need use firefox
As @Juan-Antonio_Soren_E correctly says, controlling 12 BLDCs using SimpleFOC from a single MCU is not realistically possible. Even on a very fast MCU. Each BLDC requires a minimum of 3 PWM pins on MCU timers, and finding 36 pins in the right combination to work will not be practically possible. And also attaching 12 sensors to the same MCU, and reading them in real-time is not realistic.
To make your life simpler you should look at the kind of system architecture where you have 12 motor controllers, each of which has a small MCU, just enough to run SimpleFOC. And these 12 motor controllers are in turn controlled by a more powerful central MCU or SBC, lets call this one the “motion controller”.
Then each motor controller can deal with a single motor and sensor, running the FOC algorithm and doing the low-level real-time stuff. And the central motion controller can communicate with the 12 motor controllers on a more abstract level (just setting target values for the low level controllers, or just commanding “forward 20radians”).
For the motion controller to talk to 12 motor controllers there are different options: I2C (although 12 devices can be a lot for a single I2C bus), CAN-bus or even WiFi (on an ESP32 for example).
There’s actually a few open source robot dogs out there already (search up “James Bruton”) and some people here on the forum working on such things too! Hackaday is also a good website for such things. By taking a look at these open source designs you should be able to get an idea of the parts involved.
But also feel free to ask more questions here, I’m sure there are plenty of people who have good advice to give on these topics!
Let us know more about your project as it progresses, it sounds like you’re planning something cool!
One BLDC controlling 12 motors, as @runger noted, would be really an extremely ambitious and exorbitantly expensive enterprise. There are no MCUs capable of doing that, for example the high end STM32H745XIH3 has two cores, 240 pins, 32 analog channels, but only two motor control timers, so it controls only two motors at a time. The only ones that could control three motors are some of the STM32G4xx series.
Best bet, get 12 cheap individual BLDCs and string them on a CANBus with a powerful central MCU. But then, again, you need to write your own application layer protocol on top of CANBus.
Please post your solution, it will be very educational.
Thank you so much all for your detailed explanation. I’m very happy to have from a person with a lot experience in electronic, the help for understand how will be possible do what i think.
The electronic world it’s new for me and i know that my question are very “basic” and “not professional” but was difficult understand how to proceed.
I did some test with a normal simple dc motor (without encoder) for start with arduino, connection, diagram etc etc and when i saw your website and the bldc motor i thougth for increse my level and try something with that.
If I’m not wrong, the good example for the CAN-bus are the automotive world. Connect a lot device in a easy diagram connection.
I will look “James Bruton” and “Hackaday” for study something.
I will try to use, in stack, foc shield for 2 bldc for the leg and another 2 bldc for the hip and use the CAN-bus for learn on one arm.
I think this will cost time because I’m basic but I will keep update my progress here, in case some person have same question.
Thank you for your time (and if i have another question for proceed with my study i will write here )