HobbyKing.com New Products Flash Sale
Reply
Thread Tools
Old Jun 15, 2012, 04:39 PM
Registered User
patriots21's Avatar
Philippines, NCR, Manila
Joined Jun 2012
9 Posts
Discussion
BLDC Motor Current Control

Good day to all, I'm having a hard time grasping the idea of how current/torque control is achieved in 3-phase BLDC motors which are driven using PWM signals. You see, I plan to implement dual loop control for each of my quadcopter's BLDC motor. An outer loop is for the voltage (speed) and the inner loop is for the current (torque).

Considering that a quadcopter's load is pretty much constant (i.e. its weight), how exactly is the delivered torque controlled. I have an idea on how this is all works for my application but I need external opinions for verification, so that's why I'm here.

First off, let's take out the off-the-shelf ESCs out of the picture. So I will be making my own motor driver, this is required for my application. The way I view torque control is simply limiting the maximum current draw of a particular motor. This is the first thing I want to verify: is torque control = current limiting.

As far as my experience tells me, BLDC motors are typically controlled by PWM pulses and that the larger the duty cycle, the faster my propellers spins. But how about the torque, is it constant as my load is relatively contant? PWM controls the motor by adjusting the average power that is delivered to it, right? So the way I view it for my application, is that the my external speed controller outputs some sort of a current required value to the internal current controller which then figures out what duty cycle is required based on this current value outputted by the speed controller and the feedback from the current sensor. Effectively, I should be controlling average power to provide a certain speed given a certain torque output, is that it?

The last thing I want to know/verify is in what way does the torque affect the flight of a certain air vehicle say a helicopter or a quadcopter?

I hope my questions are stated clearly enough. Inputs would be really appreciated. I'm new here, so please let me know if I crossed any of the lines that have been set here. Thanks.
patriots21 is offline Find More Posts by patriots21
Reply With Quote
Sign up now
to remove ads between posts
Old Jun 15, 2012, 04:51 PM
Registered User
Toronto Canada
Joined Dec 2002
5,330 Posts
Quote:
Originally Posted by patriots21 View Post
So the way I view it for my application, is that the my external speed controller outputs some sort of a current required value to the internal current controller which then figures out what duty cycle is required based on this current value outputted by the speed controller and the feedback from the current sensor. Effectively, I should be controlling average power to provide a certain speed given a certain torque output, is that it?
I am curious why there is the need for controlling current and then using that parameter to change the PWM duty cycle?

Because a motor's RPM is determined by voltage (and basically duty cycle), this would mean that the RPM was determined by controlling the current. There are easier ways to control motor RPM.


Quote:
Originally Posted by patriots21 View Post
PWM controls the motor by adjusting the average power that is delivered to it, right? .
PWM controls the average or RMS voltage to the motor. The RPM of the motor will respond to a value of voltage somewhere between the average and RMS value depending on the PWM frequency and inductance of the armature. The current drawn is primarily a function of load.
Martyn McKinney is offline Find More Posts by Martyn McKinney
Last edited by Martyn McKinney; Jun 15, 2012 at 05:40 PM.
Reply With Quote
Old Jun 15, 2012, 05:39 PM
Senile Member
Lnagel's Avatar
Moab, Utah, USA
Joined Apr 2003
5,485 Posts
Quote:
Originally Posted by patriots21 View Post
As far as my experience tells me, BLDC motors are typically controlled by PWM pulses and that the larger the duty cycle, the faster my propellers spins.
This much is true.

Quote:
Originally Posted by patriots21 View Post
But how about the torque, is it constant as my load is relatively contant?
This is the first error in your logic. The load on the motor is not relatively constant. The load on the motor is not the the quadcopter's weight. The load on the motor is the drag of the propeller. The faster the propeller turns, the greater the load on the motor and the greater the torque required to turn that propeller. In other words, torque is not constant, it varies with the speed of the propeller.

Quote:
Originally Posted by patriots21 View Post
PWM controls the motor by adjusting the average power that is delivered to it, right?
This is the second error in your logic. PWM controls the motor by adjusting the average voltage that is delivered to it. The motor then spins at a speed dependent upon that voltage and the motor's Kv.

The third error in your logic is assuming that power is delivered to the motor. Power is not delivered to the motor. The motor consumes power by drawing current from the battery through the ESC. The motor will pull whatever current it needs to spin at the speed determined by the input voltage.

Quote:
Originally Posted by patriots21 View Post
So the way I view it for my application, is that the my external speed controller outputs some sort of a current required value...
There is no such thing as a current required value.

Quote:
Originally Posted by patriots21 View Post
...to the internal current controller...
There is no such thing as an internal current controller.

Quote:
Originally Posted by patriots21 View Post
...which then figures out what duty cycle is required based on this current value outputted by the speed controller...
The duty cycle is determined by the length of the control pulse from the transmitter and nothing else.

Quote:
Originally Posted by patriots21 View Post
...and the feedback from the current sensor.
There is no such thing as a current sensor.

Quote:
Originally Posted by patriots21 View Post
Effectively, I should be controlling average power to provide a certain speed given a certain torque output, is that it?
You have it backwards. The transmitter control pulse determines the PWM duty cycle. The PWM duty cycle determines the average voltage applied to the motor. The average voltage applied to the motor determines the motor's speed and therfore the propeller's speed. The propeller's speed determines the load on the motor. The load on the motor determines the amount of current the motor draws.

The only thing that is controlled is the voltage applied to the motor. The motor then pulls as much current and consumes as much power as it needs to turn the load at the speed dictated by that applied voltage.

Larry
Lnagel is online now Find More Posts by Lnagel
Reply With Quote
Old Jun 15, 2012, 06:03 PM
Wake up, feel pulse, be happy!
C₄H₁₀'s Avatar
United States, AK, Fairbanks
Joined Aug 2009
12,267 Posts
The motor's torque constant (Kt) is inversely proportional to its voltage constant, Kv (which I've also seen called the "velocity constant"). Kv would be measured in RPM per volt, and Kt is measured in torque per amp.

Obviously it'll take a given amount of torque to spin a prop at a certain speed, so your torque constant essentially tells you how much current it takes to do this. Limiting current will directly limit torque, just as limiting voltage will directly limit RPMs. If torque is limited, RPMs will be limited accordingly since the amount of torque you need to spin the prop will increase (exponentially) with RPMs.

The ESC is pulsing the battery's voltage to the motor. Average voltage to the motor is controlled by adjusting the duty cycle of the drive FETs. Longer duty cycle means more apparent average voltage, so the motor wants to spin faster but can't spin as fast as it wants due to the exponential drag on the prop (increasing load). The increasing difference between (Kv*Vin) and actual RPMs when adding throttle results in a net reduction of back EMF, resulting in greater current drawn.

I don't see why you'd want to limit torque through current governing because you're essentially doing the same thing as you would if you just did it by adjusting drive FET duty cycle to control voltage... But hey, it's your project
C₄H₁₀ is online now Find More Posts by C₄H₁₀
Reply With Quote
Old Jun 15, 2012, 06:43 PM
Senile Member
Lnagel's Avatar
Moab, Utah, USA
Joined Apr 2003
5,485 Posts
Quote:
Originally Posted by C₄H₁₀ View Post
I don't see why you'd want to limit torque through current governing because you're essentially doing the same thing as you would if you just did it by adjusting drive FET duty cycle to control voltage... But hey, it's your project
I may be wrong, but I don't think it's that he wants to. I think it is rather that he has a misconception about how it works and is putting the cart before the horse.

Sorry, but wanting to discard traditional ESCs and make his own control circuit is a good indicator that he doesn't have a clue as to how these systems work.

Larry
Lnagel is online now Find More Posts by Lnagel
Reply With Quote
Old Jun 15, 2012, 06:46 PM
Wake up, feel pulse, be happy!
C₄H₁₀'s Avatar
United States, AK, Fairbanks
Joined Aug 2009
12,267 Posts
... And Larry has just said exactly what I was thinking in no uncertain terms
C₄H₁₀ is online now Find More Posts by C₄H₁₀
Reply With Quote
Old Jun 15, 2012, 09:22 PM
Dieselized User
gkamysz's Avatar
Chicagoland
Joined Feb 2000
7,163 Posts
This recent topic might help.

http://www.rcgroups.com/forums/showthread.php?t=1664402

Greg
gkamysz is offline Find More Posts by gkamysz
Reply With Quote
Old Jun 16, 2012, 01:03 AM
We want... Information!
Bruce Abbott's Avatar
Hastings, New Zealand
Joined Jan 2001
5,058 Posts
Quote:
Originally Posted by patriots21 View Post
So the way I view it for my application, is that the my external speed controller outputs some sort of a current required value to the internal current controller which then figures out what duty cycle is required based on this current value outputted by the speed controller and the feedback from the current sensor. Effectively, I should be controlling average power to provide a certain speed given a certain torque output, is that it?
The speed controller just feeds a proportion of the battery voltage to the motor, and is open-loop.

The motor draws whatever current it needs to spin at the speed required to generate a voltage matching the supply voltage (minus whatever voltage is lost across the winding resistance). In this way the motor internally 'regulates' its speed, and rpm is proportional to the applied voltage.

A quad-copter's flight stabilizer uses gyros to sense movement (roll, pitch, yaw) then uses that information to control the voltage to each motor, thus varying the rotor speed (and therefore the thrust produced). It does not directly monitor or control current or torque.

Motor current (and torque) will vary depending on how much aerodynamic load is felt by the rotor. Higher motor speed increases current because more torque is required to spin the rotor faster. Higher vertical airspeed decreases current because the incoming airflow reduces rotor loading. Current also momentarily increases and decreases as the motor speeds up and slows down, due to inertia of the motor and rotor. Since motor speed is constantly being modulated by gyro feedback, the current in each motor will also vary constantly. However this varying current is an effect of the motors trying to match rpm to voltage, not the cause.

Quote:
The last thing I want to know/verify is in what way does the torque affect the flight of a certain air vehicle say a helicopter or a quadcopter?
As the rotor receives torque to spin in one direction, so the motor body feels the exact opposite torque. The result is that the copter body tries to spin around. To eliminate this problem you can either have two rotors spinning in opposite directions, or a tail rotor which holds the body steady against the main rotor torque. The balance of forces required to prevent spinning is extremely critical, so gyro feedback is essential. However, you then have the ability to deliberately spin (yaw) the body one way or the other, by varying the speed of one rotor relative to the other. Alternatively you can vary the pitch of a tail rotor, to increase or reduce thrust at constant rpm.

With two or more lifting rotors that are not coaxial there will always be some imbalance between the thrusts produced by each rotor, so the craft will tend to fall over. A quad-copter uses four rotors because it can then independently vary the speed of each rotor (stabilized by gyro feedback) to maintain a level attitude. By adding imbalance to each rotor in different amounts, it can also deliberately spin around or tilt in any direction. To spin around it would increase the speed of the two rotors spinning in one direction, while decreasing the speed of the other two. The result is no change in lift, but a net torque on the body.
Bruce Abbott is online now Find More Posts by Bruce Abbott
Reply With Quote
Old Jun 17, 2012, 08:14 AM
Registered User
patriots21's Avatar
Philippines, NCR, Manila
Joined Jun 2012
9 Posts
Thanks a lot guys, this clarifies a lot.

Larry seems to be bringing the thunder. Your input was great, I just don't appreciate all "the there is no such thing as this and that".

It's my fault for not clarifying what exactly I want to do. Practically, a feedback/closed-loop control system is what I want to do. So there is a current sensor, there is a voltage sensor, there is an internal current loop and all that, at least as far as my application goes. I may have forgotten as well to state just how little I know about how quads and this universe work, so completely on me, my bad.

I'm no RC hobbyist, this is an academic thing and I understand this is going to be a learning process.
patriots21 is offline Find More Posts by patriots21
Last edited by patriots21; Jun 17, 2012 at 08:42 AM.
Reply With Quote
Old Jun 17, 2012, 02:53 PM
Senile Member
Lnagel's Avatar
Moab, Utah, USA
Joined Apr 2003
5,485 Posts
Quote:
Originally Posted by patriots21 View Post
Larry seems to be bringing the thunder. Your input was great, I just don't appreciate all "the there is no such thing as this and that".
I appologize if I offended you. I still don't understand your goal and why you need to monitor and regulate current. Again, meaning no offense, but it sounds like you are trying to reinvent the wheel. In any case, good luck in your indeavors.

Larry
Lnagel is online now Find More Posts by Lnagel
Reply With Quote
Reply


Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Cool Diy bldc motor 10-20 kw Diaz DIY Electronics 4 Nov 05, 2013 04:14 AM
Discussion Converting a 1/8 Ac Motor into a 48v bldc motor ashkar_malik Electric Motor Design and Construction 45 May 12, 2012 12:07 AM
Help! BLDC Motor, running slow Astiolo Power Systems 3 Apr 29, 2012 12:24 AM
Discussion time analyzing when running in full power(no PWM output) of BLDC controller liangxiao DIY Electronics 5 Mar 21, 2012 07:13 AM
Discussion Typical thrust and current for BLDCs chak ROV - Remotely Operated Vehicles 1 Oct 21, 2011 12:43 AM