Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs

Dashboard
Notifications
Mark all as read
Q&A

Driving PMSM machine as an AC induction machine

+1
−1

Is it possible to drive a PMSM motor - here I am referring to an AC motor with permanent magnets(stator wounded, rotor with PM) - in a way that there is no externally mounted rotor position sensor(no hall, encoder, or resolver) using the scalar VFD method(V/f (Volts per frequency)) as one would typically drive an AC induction machine(stator wounded, rotor squirrel-cage)?

The load that the PMSM motor would drive is a fan(yes, I know the torque-rpm curve of it is nonlinear rather than linear) so there is no stall-torque issue.

If the presented scenario is possible, then the questions are:

  • Is the efficiency lower in this scenario in comparison with the one when there is a rotor position sensor(hall, encoder or resolver)?
  • How could you control the torque?
  • How could you control the RPM?
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

2 comment threads

Let's **not** start with assuming *that torque vs. rpm of the load is linear.* (for extremely good re... (1 comment)
Define your abbreviations (1 comment)

1 answer

+2
−0

A motor with stator winding and permanent magnets on the rotor, is very different from an AC induction motor. As a result, they require very different drive.

You can just apply an AC signal to an induction motor, and there will be a net startup torque. The actual torque is a somewhat complicated function of the rotor speed, and the difference between the drive frequency and the actual rotor frequency.

If you apply an AC signal to a brushless permanent magnet motor, then the net torque is 0 with the rotor still. In effect, you have a phase-locked system. When the rotor is running at the same frequency as the AC drive, then there is a torque depending on the phase angle between the drive and the rotor. When there is any "slip", meaning the drive and rotor frequency don't match, then the net torque over a whole cycle is zero.

It doesn't make sense to run a brushless permanent magnet motor with AC open loop. Since the torque is a function of the phase difference between the drive and the rotor, not the frequency difference, you have to know the rotor's phase to do much of anything useful. This is often done with rotor position feedback, like with Hall sensors. However, it can be done by looking at the back EMF generated, finding its zero crossings, and thereby finding where you are within the rotor's cycle.

This last method is sometimes called sensorless drive. The microcontroller generating the pulses to drive the stator coils can also sense the voltage of each connection to the motor. This lets it look at the open-circuit voltage of any undriven coil, from which the rotor position is deduced.

The above means the motor needs to be running before the rotor position can be known. This is usually dealt with by applying the full drive level with a low frequency at startup. The frequency is low enough so that the rotor will "catch" the drive as it goes past the rotor position, taking into account the inertia of the rotor and whatever torque might be required to move at startup.

It takes a minimum of 90° phase sweep to guarantee the maximum torque position is hit. After that, the open-loop drive is sped up enough to be able to read the back EMF generated by the rotor. Once that happens, the rotor position is known, and the rotor speed can be ramped up quickly by keeping the drive position 90° ahead of the rotor position to the extent possible.


If Hall sensors give you information where you are in the electrical cycle with 60 deg resolution, how could you keep your stator field vector leading 90 deg continuously? I believe the same logic applies with regards to BEMF zero-crossings.
  • You don't.
  • By interpolation.

If you are commutating the drive to the coils only every 60° anyway, then you can use the output of the Hall sensors directly. The best you can do then is that the center of the drive waveform is 90° ahead of the rotor.

There are certainly basic motor controllers that work this way. When the power is low and efficiency not a primary concern, then this is a valid approach since it is so simple. Keep in mind that this what you got with two brushes against three coil connections in old brushed DC motors.

When the center of the drive waveform is optimally aligned with the rotor postion, then the center of each phase will be at 90° from the rotor angle, and the edges ±30° from that. The center then has relative pull of sin(90°) = 1.0, and the edges sin(60°) = 0.87. I'm not going to do the integral to get the average, but it will certainly exceed 90% over a whole phase. For many applications, that's a worthwhile tradeoff for the simplicity.

In some cases you continuously change each drive signal, usually by PWM and computing the duty cycle in a microcontroller anew each pulse. In that case, the micro can also do interpolation of the position signals it gets. This assumes the rotor speed will not change much in 60° (magnetic) of rotation. That's usually a good enough approximation. You get to re-synch every 60°, even if you're off a bit by then.

Note that as computed above, the efficiency gain is not that much. In some cases, a few percent more efficiency matters directly. In other cases, the driving factor is not having to get rid of the extra heat in the motor.

Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment thread

Hall Sensors (1 comment)

Sign up to answer this question »

This community is part of the Codidact network. We have other communities too — take a look!

You can also join us in chat!

Want to advertise this community? Use our templates!