A self-balancing robot is a great way to get introduced to control theory and robotics in general. The ability for a robot to sense its position and its current set of circumstances and then to make a proportional response to accomplish its goal is key to all robotics. While hobby robots might use cheap servos or brushed motors, for any more advanced balancing robot you might want to reach for a brushless DC motor and a new fully open-source controller.
The main problem with brushless DC motors is that they don’t perform very well at low velocities. To combat this downside, there are a large number of specialized controllers on the market that can help mitigate their behavior. Until now, all of these controllers have been locked down and proprietary. SmoothControl is looking to create a fully open source design for these motors, and they look like they have a pretty good start. The controller is designed to run on the ubiquitous ATmega32U4 with an open source 3-phase driver board. They are currently using these boards with two specific motors but plan to also support more motors as the project grows.
We’ve seen projects before that detail why brushless motors are difficult to deal with, so an open source driver for brushless DC motors that does the work for us seems appealing. There are lots of applications for brushless DC motors outside of robots where a controller like this could be useful as well, such as driving an airplane’s propeller.
20 thoughts on “Balancing Robot Needs Innovative Controller And Motor”
I have always wanted to make one of these
Hmm, I wonder if this does field oriented control.. it might be somewhat difficult to calculate the transforms fast enough on an atmega, but FOC does improve performance at low speeds a lot.
Probably impossible, at least with any usable speed… FOC needs a lot of floating point math and if the MCU doesn’t have an FPU, you’d need quite the clock speed ;-)
You inly need to do a couple of multiplications and additions, I don’t think it is hard to get that running on an 8 bit microcontroller. If floating point is too much, one can do fixed point with much lesser instruction cycles.
“Until now, all of these controllers have been locked down and proprietary.”
This one has been around for a while now: http://vedder.se/2015/01/vesc-open-source-esc/
And it’s actually really damn good.
It actually has a number of problems ranging from being nearly impossible to put heatsinks on, underspec’d components, unsuitability for mass-producing the design, the bare capacitor hanging in the breeze, and a a design that leads to spurious errors.
More refined designs are available, but don’t buy/use the original unless you’re aware of its problems.
For a great bldc controller at a remarkable price, check out IQineticws (http://iqinetics.com). I haven’t seen anything that comes close at a comparable price.
Hmm, that definitely looks interesting! But what is the price? I can’t find where to buy one.
they say: “Available for OEM partnerships”
“Balancing Robot Needs Innovative Controller…”
No problem; simply find a mentally- and technically-challenged individual who believes in ‘fuzzy logic’, and he/she will design one for you. Using ‘fuzzy logic’, of course. To make your job easier, these types usually believe in ear-candling, cold fusion, telepathy, telekinesis, levitation, faster-than-light travel, anti-gravity machines, weird water, and the like. Oh: and of course: solving electrical engineering control-systems problems with Fuzzy Logic.
…last sentence should have been
“…solving extremely complex electrical engineering control-systems problems…”
Xd perhaps particle swarm antineuron genetic algorithms can help as well
WTF why is “SmoothControl” not “[SmoothControl]”?!?!
poor tired writers :(
have a look at Microchip´s appnotes for driving BLDCs, theres nothing propietary
is the code available ? I see only the schematic
The day this bleg starts calling BLDC by its name, which is “synchronous motor”, my job here will be done. What’s DC in a BLDC? BLDC come from the combination of a permanent magnet synchronous motor and a circuit that uses hall effect sensors to tell which windings to power the same way as a regular motor uses a mechanical mechanism to do the same. If you give up the hall effect trick and start doing proper FOC, the nomenclature BLDC doesn’t make any sense.
The difference between a regular synchronous motor and a BLDC is the fact that the BLDC controller relies on feedback. It doesn’t matter if you use hall-effect, FOC or BEMF, the motor controller relies on that information to decide when to switch phases. And it knows how fast the motor is spinning and under how much load it is, allowing it to alter the timing and apply more current to force the motor to run at the desired speed. And the DC in BLDC most probably comes from the fact that you don’t need an AC power source.
A regular synchronous motor doesn’t require any feedback to run. You just connect it to an AC power source and it will run at a given speed. Even if you use a frequency converter to vary speed, there is no electronic feedback on whether the motor is actually spinning or if the stator field is advancing due to the motor being under load.
Of course, a BLDC motor can run as a synchronous AC one, if you omit the ESC and apply a three-phase AC power source. But that’s not the point of it.
Thanks for your comments. Strictly speaking the BLDC is exactly the same as a synchronous motor (SM) with permanent magnets. The SM needs a synchronisation mechanism, in high power application this may be done using a modification of the machine that makes it be a hybrid between a SM and an induction machine but if you want to use this type of machine in a variable speed drive, sensorless control will struggle to avoid the machine losing synchronism under sudden changes of the mechanical loading or high operation speeds. The name BLDC is a commercial name someone invented to convince DC motor users to use a different technology that replaced the brushes by a power electronic that used hall effect sensors to have a rough indication of the position of the rotor and know when to change which winding to power (that’s how it works, for example, in computer fans). When you use a power electronic converter with proper field oriented control, the concept of BLDC loses its meaning because the whole thing is no longer equivalent to a DC machine but something else. This is a long argument that doesn’t lead anywhere, there seems to be a lot of inertia to use the term BLDC because people got used to it.
The difference between a BLDC and a PMSM motor is that a BLDC is made for trapezoidal bemf, the PMSM sinusoidal bemf. so one is optimized for switched DC the other for sinewaves, They both require feedback unless you want to run them as bad stepper motors.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)