Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

3-phase BLDC motor resolver problem

Not open for further replies.


Newbie level 4
Dec 12, 2014
Reaction score
Trophy points
Activity points
I am trying to drive a 3-phase BLDC motor with FOC and have some questions about obtaining resolver offset angle. In the driver I used ABC notation for phases and FOC accepts A phase as 0 angle electrical. The motor cabling uses UVW notation. The motor has 5 pole-pairs. There is already a somewhat working design that is able to drive the motor(hardware designed by other people), but it has hardware problems so I designed a new hardware and used the same logic that is able to drive the motor. There is a resolver for angle detection and the logic uses Angle Tracking Observer to calculate the speed and angle. Logic treats the rotation in CW direction seen from the front of the motor shaft as positive. However, I was told that the resolver is mounted flipped along the y-axis so to get the proper angle and rotation direction, logic multiplies the cos values that it gets from the resolver by -1. Again, I also was told that the offset between the resolver angle and the actual angle of the rotor is -11.5 mechanical degrees, and that it is found by trial and error.

Now, here comes the issue. I tried to drive the motor with a few unsuccessful attempts and at last succeeded by figuring our some mistakes that I did in the design and connecting the ABC phases to VWU respectively. In this case, the offset is set to -11.5 degrees, meaning that we subtract 11.5 from the angle we get from the resolver and use that as rotor angle. Through the serial port, I get some debug data on the calculations inside the FPGA and through this data I verified that FOC actually produces a field that is 90 degrees ahead of the rotor angle (in magnetic field domain of course).

AFAIK, to calibrate the resolver, in terms of space vector PWM notation we can apply 100 vector for 0 degrees electrical angle and read the resolver angle in that position and use as the offset to get the actual rotor angle. So, I switched the phase connection to ABC-to-UVW respectively and rerun the calibration algorithm. What I expected was, since I rotated the phase connection in negative direction by 120 degrees, I would get -11.5 - 24 = -35.5 degrees for the new offset value. Because the magnetic field that is produced should move in the negative direction in mechanical world by 24 degrees because of the number of pole pairs. To my surprise, I actually got 12.5 degrees which is -11.5 + 24 and that would mean that magnetic field moved in positive direction. This doesn't make sense for me.

The logic with 12.5 degrees offset and the ABC-to-UVW phase connection also works, and it actually creates the magnetic field 90 degrees ahead of the rotor angle. The only difference I noticed is an increase in audible noise that the motor produces when rotating. This is caused by the vibration in the motor setup, but this doesn't exist at the same level when the motor is driven in ABC-to-VWU configuration with -11.5 degrees offset. The power consumption is the same in both cases, so the efficiency is also the same.

I was wondering what might be the cause of -24 degrees change in the offset? Am I missing something? I added my childlike drawings for the phase change that I did to give you a better sense of my understanding of the system.


It seems that I cannot edit the post, so I will elaborate what I mean by the calibration algorithm. We just created another basic logic that applies SVPWM vectors one by one and log the angle data and average the offset angle for at least one full rotation.

Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to