Close

Look Ma, no inductors!

A project log for Bobble-Bot

Demonstration robot for learning principles of real-time control using Raspberry Pi, RT Linux, and ROS.

james-holleyJames Holley 09/27/2019 at 23:491 Comment

Hello everyone, it's time to address the elephant in the room... or on the sides of Bobble-Bot.

We've fielded questions about our inductors for a while now, and the short story is, we don't need them!  Here's a picture of the old Bobble-Bot with inductors and a picture of updated Bobble-Bot with some slimmed down sides.

For those of you that are always looking for more details, here's the full scoop.  Bobble-bot includes custom motor controller boards that allow us to interface with hobby motors, yet still perform servo control.  That is, we're using BLDC (brushless direct current) hobby motors to keep the price down - motors that are usually used on quadcopters or RC planes - and adding a sensor and motor controller board that allows us to do fine motor control so we can stay balanced.  Servo control of these types of motors is hard because the motors are really small and don't have a lot of inductance themselves.  This makes current control (and therefore servo control) difficult.  Consider the following circuit (from circuitlab.com where you can do some free online circuit simulations):

What we're trying to do here is understand how we can regulate current through L1.  In a BLDC motor, current maps to torque, and this is especially true at stall conditions, so regulating or controlling current allows the control of motor torque.  The resistance here is small - wires are hooked up directly to the motor, and the inductance here is also small.  Note that these parameters will change depending on what kind of motor you use and the size and gauge of the wires you are using to hook up to it.  For our purposes today explaining the purpose of the inductors, I've just chosen some general numbers that are easy to see what is going on.  

If you run a time domain simulation on this circuit, you will see the following:

Here you see that there's almost no output voltage across the inductor.  The current of an inductor is the change in voltage over time, so what you end up getting is small voltage change, and therefore a small amount of current.  Let's see what happens if we add some more inductance to our circuit.

What I've done here is added our inductors to the side of the robot - big inductors are the training wheels for current control, let's take a look at the effect.

And... BOOM - we've got what we wanted - we now have more output voltage across our motor, but unfortunately, we've done so at the expense of some big pieces of metal attached to the side of the robot.

So what next?  How do we get rid of them?  The next step is to remove the inductors, but then increase the frequency at which we are commanding our motors - this is done by increasing the frequency of the voltage source pictured on the left side of the diagram, or in Bobble-Bot's case, increasing the PWM frequency and control loop frequency of our motor controller.  Here's what that circuit looks like:

And the response:

You can see that we are getting voltage across our inductor again, and that allows current control to be back in the picture for the original circuit.

By putting in some work and speeding up the control algorithm on our motor control boards, we were able to achieve the current control that gave us enough performance to stay balanced without needing the inductors.  This also translates into power savings, faster motor response, and faster overall speed from our motors.  

And of course, what blog post is complete without a video!?  Enjoy!

Discussions

Marcos wrote 09/28/2019 at 04:11 point

I'm happy to see someone has tried adding inductors. A low inductance winding not only makes control difficult, it creates a higher amplitude current ripple that directly translates to higher torque ripple, beating up mechanical stuff like bearings and gearing. Inductors are also used for EMC, but it sucks to have to use them, they are always huge!

  Are you sure? yes | no