For a project we use a brushless DC (BLDC) motor. Everything works fine until we tried to reach high velocities. I will first explain my setup, and than explain our problems using some graphs. Unfortunately I don't have enough points to put al my images in separate links, so they can be found here.

1.0 Setup

The following hardware is used in the setup:

  • BLDC motor: Tiger motor U8 (135kV)
  • Motion controller: SOMANET DC 1K
  • Encoder: RM08 12 bit absolute encoder

An overview of the setup can be found in image (1)

enter image description here

1.1 Requirements and Parameters

We need about 4800 [RPM] from the motor. The Tiger motor has a kv value of 135 [RPM/V], connecting it to a 48 [V] supply means it theoretically should be able to go up to 6500 [RPM]. The specsheat includes a scenario where it reaches 5000 [RPM] while a propeller is connected to it, so 4800 [RPM] with no load should not be a problem.

2.0 Problem

We are not even getting close to the 4800RPM, a plot of the motor velocity vs phase current is shown in image (2). We can identify 2 problems from this plot.

2.1 Inefficient commutation

The first thing which was remarkable from the test is that about 10 [A] was already required to turn at 3200 [RPM] without any load connected. This seems to be caused by inefficient commutation, we figured there are two main possible causes for this.

2.1.1 Phase offset error

Their might be an error in the phase offset used, this will cause an linear increase in required current with velocity. This can be best solved by finetuning the offset at a high velocity. However our curve does not seem linear, thus this does not seem to be the case.

2.1.2 Delay error

There is a certain amount of delay in between requesting the position from the RM08 and applying the new voltage. This delay can cause the current to exponential increase with motor velocity, which is true in our case.

By adding up al delays we found a total delay of ~0.1 ms in the system (see image (3)). Spinning at 3000RPM = 50Hz and using 21 pole pairs means that the electrical turning frequency is 1050Hz, than a delay of 0.1 ms would cause a 37.8 electrical degree error, This likely causes the inefficiency!

2.2 Control going crazy

if we try to go above ~3200 RPM, the motor starts pulling a lot of current and makes a lot of noise. This means the motor is not operational above 3000RPM, this seems to be the most urgent problem at the moment.

Voltage dependency

Normally the motor velocity is limited by back-EMF, if the back EMF would be causing this issue the problem would be voltage dependent. Therefore some measurements where done at different voltage levels, see image (4) and 卌.

The moment where the motor stops following the velocity sweep seems to increase linearly with voltage. Another interesting outcome is that at 30V the motor just stops following the velocity sweep, while at the higher voltages (40V and 43V) the motor suddenly dropped to a lower velocity. Note that the 46V test stopped before this moment because to high current peaks were flowing trough the SOMANET (35A). However it seems unlikely the back-EMF is the problem since Tiger has been able to reach 5000RPM themselves.


For the first problem we thought we could use something like:

Pcorr = Penc + t_delay * Vel.


  • Vel: angular velocity
  • t_delay: the delay compensation gain
  • Penc: the encoder position for the rotor
  • Pcor: the delay compensated position

However this didn't save the problem at all. Do you have any other suggestions?

For the second problem we can't think of any cause, can you think of any?

enter image description here

enter image description here

enter image description here

enter image description here

  • 1
    \$\begingroup\$ I bet, the problem is in encoder. The magnetostrictive encoders are not used for servo controls feedback. They would output the position with lag. \$\endgroup\$ May 28 '17 at 13:55
  • \$\begingroup\$ Can you use back emf rotor position detection once spinning at a moderate speed? That's fairly normal for BLDC drivers spinning propellers, in fact most for such usage have no hall or encoder sensors at all. Your prop might start to be big enough that open loop starting could be hard, but even if you use a sensor/encoder for starting, a switchover at speed probably makes sense. \$\endgroup\$ May 28 '17 at 15:27
  • \$\begingroup\$ examine INDEX and rotor phase encoder position, and output state vs static torque or if you don't know , report issues to After-sale service:service01@rctigermotor.com \$\endgroup\$ May 28 '17 at 15:32
  • \$\begingroup\$ You should use vector current control. \$\endgroup\$ May 28 '17 at 15:51
  • \$\begingroup\$ Somanet supports Field-Oriented Control (FOC) and Sensorless Commutation, but we have no idea on setup. He "should" be using 400kbs comm rate too. \$\endgroup\$ May 28 '17 at 15:54

Normally the motor velocity is limited by back-EMF. Not!

  • This is false. rather (V-BEMF)/DCR=I, is minimum no load Current and thus Torque is limited by BEMF and max torque ~ 80% RPM/RPMoc or no load RPM
  • Velocity is limited by commutation errors , Voltage , friction and temperature rise that arises from conduction lossses.
  • Commutation errors include ringing during dead-time, insufficient dead-time, poor impedance control during dead-time (RC snubber) , excess C with very low RdsOn, ESR, excess ESL in cables, poor high Q switching, **commutation phase error **
  • for BLDC fans when Hall Sensor has a tiny negative phase shift, it results in dither or no spin. If positive phase error, less torque, but in your case you have short circuit, so examine torque vs static rotor position at very low voltage (to limit Trise,)if you suspect phase error, or do adj. with trial and error. With no load, (prop) Max current should be max only at 0 RPM Imax= {Vmax/DCR} = 10x I ( rated max) at full Rate RPM and current at Vmax should be <<10% of Imax at full load with no external,load. This is just surge start current. but at full RPM, these are friction, excitation conduction , & eddy current losses.

So my conclusion is you have a LOT of commutation problems, but the solution will be obvious when you discover the root cause.

  • \$\begingroup\$ If I were to guess the root cause , I would say it is the presettable zero position for the Absolute ENcoder which uses Hall Sensor inside the Am4096 IC inside 12 bit RM08S \$\endgroup\$ May 28 '17 at 15:45
  • \$\begingroup\$ Thanks for your answer! I don't really get the velocity not being limited by back EMF part. I always understood it as that a voltage is generated proportional to the velocity, opposing the input voltage (V = deltaB * L * V, L: length of coil). This voltage is called back EMF. Thus when increasing velocity this voltage increases until it becomes as high as your input voltage. Since at this point no current can flow to the coils anymore you can't accelerate any further. Thus maximum velocity is reached. Please correct me if I'm wrong, you have a few more years of experience on this subject. \$\endgroup\$
    – ProjectM
    May 29 '17 at 19:41
  • \$\begingroup\$ About your suggested problem. I think this is solved by calibrating the motor. Before we do tests we determine the phase offset between the RM08 and the magnetic field of the stator. This way we set our own zero position. but thanks a lot for your input, we will have a look into it. \$\endgroup\$
    – ProjectM
    May 29 '17 at 19:54
  • \$\begingroup\$ RPM is controlled by forward EMF (or MMF) thus RPM/V and torque is limited due to BEMF cancelling forward EMF thus for most DC motors max torque ( and upto 10x current) is from start at full voltage. \$\endgroup\$ May 30 '17 at 8:04

The cause turned out to be quite simple, but unfortunately unsolvable.

SOMANET limits the duty cycle of the PWM signal. At a 12kHz PWM frequency is goes from 22% to 78%, at 15kHz it is even limited earlier. Therefore we can only reach 50% of our expected velocity. They say it will be improved in the future, however when exactly and how big the improvement will be is still unclear.

Do you guys know whether this is common, or just bad engineering?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.