Open Loop Velocity Control: L6234D gets hot

Hi All,

I’ve just started testing with the SimpleFOCshield v2 (Aliexpress) and I hooked up a small drone bldc that I had laying around ( I don’t know it’s internal resistance so that might be the problem (as is warned in the description of the shield).

I tested the motor with the open_loop_velocity_example.ino. Some parameters:
BLDCDriver3PWM(5,9,6,8) → seems to be the order as is soldered on my shield
6 pole pairs
12V supply
5 rad/s target velocity
voltage limit = 4V
velocity limit = 6 rad/s.

All seems to work fine, but if I touch the chip it is very hot, I even put a radial fan on it from my 3D printer. My bench power supply shows a current of ~1.3A.

So to my questions:

  • Is it normal for a motor like mine, that the chip can become so hot (see picture/link)?
  • How can I figure out if the shield is capable of driving a motor if I have a datasheet of a motor (e.g. see attached picture of QTR A-65). Does it all boil down to the current usage or should I always check the internal resistance/inducatance?

PS: This project is great! Looking forward to learning more about it.


Hi, and welcome, @marethyu ,

Yes and no. it is normal for the driver to get hot under load. 1.3A is not that much for the L6234 though, which can handle 4A DC and 5A peaks (with cooling).
It is normal for the motor to consume far more current in open loop mode than in closed loop, because the open loop is inherently inefficient.

Note that your voltage limit of 4V is maybe a bit high for this motor in open loop. With a winding resistance of 0.575Ω you have almost 7A at 4V - perhaps a bit close to the drivers limits. [edit] I understand now the datasheet you posted is not the one for the motor you’re testing?

The shield can drive almost any 3 phase BLDC motor… if you pick one that is too big, you won’t be able to supply enough current through the shield to use it to its intended torque, but you’ll still be able to move it.
The resistance is an important parameter to consider. Speaking of the smaller motor types more appropriate for the shield, the high resistance motors (typically) are gimbal type motors, with low KVs intended to run fairly slowly. The low resistance motors have higher KVs and are intended to be run more quickly.
Depending on your application you may want slower, higher pole count motors for positioning applications, or faster, lower pole count motors for things like propellers, race cars etc…

Let us know a little more about your intended use case, and people might have advice for you!

If you have a multi-meter, you can measure the resistance between any two phase wires. Any pair of the 3 phase wires should give more or less same value for the resistance between them. Depending on the winding type of your motor (delta or wye), this will be either 2x the actual phase resistance, or closer to 1x, but either way it is a decent approximation.

1 Like

Hi Runger, thanks a lot for the comprehensive reply.

I’m indeed testing a different small drone motor at the moment (just measured the resistance between two leads which is roughly 0.2 to 0.3 Ohm). However, my plan is to connect the motor of the datasheet that I posted, thus your info is very useful! Do I understand it correctly that the 4V (voltage limit) is he phase voltage and dividing that by the phase resistance will give us the phase current? Is than the phase current the limiting current of the L6234D chip or the supplied DC current? I’m not sure how that then relates to the current rating of the motor, because it seems the current becomes high very fast if we have a low internal resistance.

My use-case for the QTR65 is just to achieve a constant velocity motion with very little load. Also 6 rad/s should be more than fast enough and ‘smooth’ motion is desired. But I’m bound to that motor type.

In the final configuration I do have an encoder available to go closed loop, does that help reduce the current significantly or to smooth the operations? Where does the inherent inefficiency comes from for open loop?

In general I plan to use the QTR65 motor at low velocities, but it has low resistance / high Kv. If i’m able to supply enough voltage/current, I could run that smoothly?

Hi @marethyu ,

Its actually a lot more complicated than that - motors are inductive loads, and BLDCs are driven by time-varying currents, so the motor has impedance rather than resistance, and there are many other factors at play to determine the current flowing through the motor in a given situation.
But as a “upper bound”, for situations where (for example due to a software failure) the motor windings have DC current applied, this measurement is a very useful indication of the kind of current you could expect worse case.

Both I guess. The phase current is whatever is flowing through the phases. It is limited by

  • the power source (for example LiPo batteries will provide huge currents effectively limited by everything burning/melting, while your desktop PSU will typically just cut out at some current limit)

  • the driver architecture (the L6234 has thermal protection, but looks like it doesn’t have a dedicated over-current protection).

  • the motors characteristics (e.g. impedance, back EMF, etc…)

  • the software driving it

That rating is a maximum value, your data sheet gives different values for “ultimate current” - not sure what they mean by this, “peak current” - what the motor can handle for short periods of time (short as in measured in ms), and “maximum continuous current” - 4.86A, with the motor at 100°C - so that gives you a hint that to go this high will require cooling.

Realistically, running a motor at anything close to its maximum ratings will require careful design of the whole system including cooling, over-temperature protection, etc… like with any engineering, its probably a good a good idea to design things to fit well under the maximum parameters.

Yes, very much so. Because you say you have low loads, you can expect very low currents in closed loop mode, and driver and motor will stay cooler.

Roughly speaking, the software just commands a commutation pattern to the motor, and expects it to follow it. This is very wasteful electrically. By closing the loop the FOC algorithm knows exactly the position of the motor and commands a more optimal commutation pattern for the given situation (load, desired speed, current speed etc…). The difference under low load situations is quite big.

For slow moving type applications, gimbal motors are more suited (higher resistance, higher pole count, lower KVs). But you will probably get it working well - it will require more tuning of the PID parameters, I would assume, because the motor will be a bit more “twitchy”.

How smooth it is, that is often more dependent on the quality of your sensor loop (speed of reading the sensor, speed of FOC control loop) and especially on the motor quality. Some motors have more pronounced cogging than others, some are mechanically unbalanced, and lower pole counts are harder to run smoothly slowly than higher pole counts…

The data sheet says “8 poles” - looks like its an in-runner with 4 pole-pairs then? You’ll have try it out… If you have the option of bringing the power supply voltage down closer to the chosen voltage limit the algorithm will have finer control by better exploiting the available PWM range, which may help things.

1 Like