Author Topic: BLDC Motor - open loop / synchronous  (Read 3702 times)

0 Members and 1 Guest are viewing this topic.

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
BLDC Motor - open loop / synchronous
« on: December 11, 2016, 12:52:42 am »
Hey there.
I've never done anything with such motors before.

From my vague understanding of the subject, I thought, as I only need a motor to run at a nicely steady speed, and do not require any fancy dynamic controlling, I should be able to use a BLDC motor without any sensing hardware in a way like good old 3-phase synchronous motors hooked to 3-phase mains... just that I use 12V PWM generated by a MCU + 3 half bridge circuits.
Is this correct?
I built the half bridges, seem to work, then set up 3 PWM channels to drive them, PWM freq at 10kHz, modulating with a sine at e.g. 1Hz to 30Hz ramp over 2 seconds for a first test, and each next PWM channel has a phase offset of 120° from the previous with regards to that modulating sine.
If I put the 3 PWM outs through 3x RC breadboard LPFs and then to 3 oscilloscope channels, I see 3 nice sines with 120° offset as it should be. (LPFs only used to make this test)
The half bridge outputs are connected to the 3 wires of the BLDC motor.
It's a small RC airplane type motor. No mechanical load is attached to the motor, besides the 2 perpendicular-to-the-axis screws that came with it.
The half bridges are a bad cobble together job of some bigger NPN + PNP I had lying around (+ 2N3904 to drive them) - but as the motor does make some visible movements, I guess it does sorta work so that it could theoretically turn the motor ;)

The rotor swings back and forth a little (around 1 pole position?), but does not turn. I can hear the 10 kHz. The order of the PWM outputs (phases) is correct.

What else do I need to do / adjust to get this running?
 

Offline Benta

  • Super Contributor
  • ***
  • Posts: 5869
  • Country: de
Re: BLDC Motor - open loop / synchronous
« Reply #1 on: December 11, 2016, 03:34:55 pm »
Hi, fun project.
You have two approaches here:

Brushless DC (BLDC)
Permanent magnet synchronous motor (PMSM)

The motor is physically the same, but the drive strategies are completely different.

For BLDC, you should analyze it as a normal PM DC motor. This means (and this is important) that your H-bridges are controlled by the motor, not by you. This control is normally implemented with Hall-sensors or by measuring back-EMF from the motor.
Speed control is then implemented by varying the supply voltage to the H-bridges (PWM).
Note that this is for analysis. In practice, you'll of course emulate the variable supply voltage by PWMing the bridges directly.

PMSM is another story. Here you generate and supply a three-phase AC voltage and let it run as a synchronous motor.
This is fine, but you run into the eternal problem: how do you start a synchronous motor?
Your rocking rotor is exactly a symptom of this.
There are a lot of clever ICs out there solving the problem, one option could be to start it in BLDC mode and then switch to synchronous mode when it's running near synchronous speed.

One final comment: in my opinion, 10 kHz is a bit high, you'll get quite a lot of iron losses. Consensus among the RC model people seems to be that around 3 kHz works well.

 

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
Re: BLDC Motor - open loop / synchronous
« Reply #2 on: December 11, 2016, 04:42:01 pm »
Heh, it seems my half bridges were just too crappy and delivered not nearly enough current.
I had PNPs lying around which can do 10A collector current max, so I found a circuit using only PNPs as power transistors.
Now, currently set PWM freq to 3 kHz and rotating at only 1 Hz, it does rotate and I even need some force on the rotor to get it out of step, but may poor PSU which can do only 3A (per channel) is in const current mode, and it's at 7..8V output instead 12V.
It seems this thing really wants do draw quite some amperes. Is this normal for such puny looking RC airplane motors?
I guess it's not too great of an idea to put the 2 channels of my lab PSU in parallel, as their regulators would "fight" each other?

Yeeah, the second strategy you mentioned is what I want, just that I don't have analog power amps, I assumed If I modulate 3 PWM channels with a sine that's doing the rotation frequency, with 120 degrees phase difference from ch1 to ch2, and from ch2 to ch3, that the overall power each  coil gets over a certain time interval would be such as if I had 3 actual sines like the synchronous motor.
I start this modulating sine at a low frequency and ramp it up, the motor does start this way.
 

Offline Benta

  • Super Contributor
  • ***
  • Posts: 5869
  • Country: de
Re: BLDC Motor - open loop / synchronous
« Reply #3 on: December 11, 2016, 05:37:59 pm »
Good, you've got your motor started.
Now you need to fix the rest of your drive strategy.
As you are now doing three-phase synchronous control, we're talking about constant V/Hz drive.
The reason your motor is pulling a lot of current is, that you are delivering low frequency at full voltage. This is a no-no.

You'll need to PWM the sinewaves so you have a constant relation between voltage and frequency.
eg, if the motor is specified for 20 Vrms at 50 Hz, you should only supply 2 Vrms at 5 Hz.

This is usually not specified for BLDC motors, but Kv (rpm/V) normally is and gives you a rough idea.

 

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
Re: BLDC Motor - open loop / synchronous
« Reply #4 on: December 12, 2016, 07:27:30 pm »
The RPM/V for my motor is stated as 1700.
If I compute the output for that, well, it seems completely off, I seem to need a lot more current.
Could this just be different when doing 3 phase mode compared to the typical RC plane way of controlling the motor?

By the way, this sh*t is loud as hell.
Would building 3 analog push/pull amplifiers, filtering the PWM and feeding 3 actual sine phases be feasible at all?
I don't want to use the motor in an RC model, I want to experiment with POV displays, on my desk, so I thought a synchronous motor might be nice for that, no oscillating regulation of any kind, just a rotational field which locks the motor with its rotation. But having that infernal noise all the time was not what I had in mind ;)
 

Offline Benta

  • Super Contributor
  • ***
  • Posts: 5869
  • Country: de
Re: BLDC Motor - open loop / synchronous
« Reply #5 on: December 12, 2016, 08:58:13 pm »
Well, let's try to compute it.

At 1700 rpm, field frequency is around 28 Hz.
At 1 VDC, that would work out at around 1.4 Vpp AC 3-phase voltage.

It's a starting point, you'll need to experiment and measure a bit, right voltage might be -50% or +100%.

Concerning noise, is that the 3 kHz? Other noise should not be apparent.
You'll always hear it, whether BLDC or PMSM drive, but you might have hit a resonant spot. Experiment with changing the modulating frequency, say between 2 and 4 kHz. It's not critical.

Have fun,

Benta.
 

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
Re: BLDC Motor - open loop / synchronous
« Reply #6 on: December 12, 2016, 10:50:10 pm »
Yes it's the 3 kHz. With 3 real sines, not pulsing, that wouldn't be present, only the native rotation frequency, no? Or what else could be present?
I have been told it would be less efficient to use analog power amplifiers. If it could make things more quiet, I guess that would be a lesser concern of mine - depending on how much less efficient, of course :D
 

Offline Zero999

  • Super Contributor
  • ***
  • Posts: 19494
  • Country: gb
  • 0999
Re: BLDC Motor - open loop / synchronous
« Reply #7 on: December 13, 2016, 08:55:30 am »
Yes it's the 3 kHz. With 3 real sines, not pulsing, that wouldn't be present, only the native rotation frequency, no? Or what else could be present?
I have been told it would be less efficient to use analog power amplifiers. If it could make things more quiet, I guess that would be a lesser concern of mine - depending on how much less efficient, of course :D
You are right that an analogue output stage would be less noisy but the efficiency would be horrible, around 60%. Another option is to increase the switching frequency to above 20kHz which would also reduce the efficiency and increase the switching losses but it won't be as bad as analogue.
 

Offline Benta

  • Super Contributor
  • ***
  • Posts: 5869
  • Country: de
Re: BLDC Motor - open loop / synchronous
« Reply #8 on: December 13, 2016, 11:31:57 am »
An option could be LC filtering the three lines, but the coils would be a bit bulky.

 

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
Re: BLDC Motor - open loop / synchronous
« Reply #9 on: December 13, 2016, 12:24:44 pm »
I was also told that using full H-bridges could improve this?
I built half bridges just because I had somebody else seen doing that for this kind of motor, I had no ready ICs at home, only discrete parts, and it meant less soldering on weekend :-D
I might buy some H-bridge ICs if that helps.
 

Offline Benta

  • Super Contributor
  • ***
  • Posts: 5869
  • Country: de
Re: BLDC Motor - open loop / synchronous
« Reply #10 on: December 13, 2016, 01:41:49 pm »
Three H-bridges would just be a waste of transistors and lead to more losses.

 

Offline TinkeringSteveTopic starter

  • Frequent Contributor
  • **
  • Posts: 289
Re: BLDC Motor - open loop / synchronous
« Reply #11 on: December 14, 2016, 12:15:20 am »
It's funny, now with 20 kHz PWM freq, it actually draws less current than before, it purrs like a cat.
But the current still seems excessive, subjectively anyway, I don't know what this should draw, but I know I've seen steppers pull 100mA and turn much quicker and deliver some force with it.

While now when I use the attached schematic* powered with 10V, and I set the PWM to ~ 48% (significantly less and the motor stutters slightly), which is about at best 4,8V peak at each coil,
all three bridges together, accodring do the display on my lab PSU, draw 1A, while the speed is only about 1/10 Hz.
With 3 kHz PWM, the same setup, just slightly quicker rotation as it wouldn't rotate as slowly, the whole thing would draw 1.8A.

Ok, so I fiddeld a bit... I have 2 pots on the MCU, one controls max PWM value, one the rotation frequency. I found a setting that worked with significantly less than 1A and a much higher speed than mentioned above - but after 10 seconds or so the motor began to stutter every 2 seconds or so.
The power transistors don't yet have heat sinks, I can touch them then but only briefly. Does this have any bearing here? (heat sinks are in the mail still ;))
But I'm a bit confused now...


* I don't use the puny diodes shown there, but UF4007 (UF = UltraFast) instead.
The actual power transistor type used is an MJE2955T, which also can handle 10A like the one chosen in spice.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf