I’ve been trying to use MP6546 to control an 4 pole pair BLDC motor. I’m using linear hall sensors for angle (so multiple electrical revolutions per mechanical revolution).
I’m trying to do FOC but I’m not quite getting the results. For example I want to turn my motor clockwise but setting Ud = 0 and Uq = some value I get the motor to turn for some angle theta but it stays there. As I increase Uq motor just starts oscillating, not rotating.
Do you perhaps have any examples for similar usecase? What’s the relationship between torque, ud and uq?
Let me know if I can provide you with any further info or code examples to help replicate/solve the problem.
In my experience oscillation happens when the hall effect sensors and the phases are not connected in the correct order, or one of the connections is not good. This is because the controller is trying to keep the motor going in one direction, but if the phase connections don’t match the hall connections, then the controller will energize a coil that pushes it backwards instead of keeping it going forwards. So it gets stuck oscillating back and forth between two positions. I would check that you are getting signals for all 3 hall effect sensors and then try swapping the order of the 3 phases and seeing if any of them run smoother. I have also found that some motors run poorly at low throttle, so you might try running at a slightly higher throttle or forcing it to turn past the point it is getting stuck at by hand.
To answer the second part of your question is that the D or direct axis is in line with the magnetic field of the rotor, so excitation in this axis serves to strengthen or weaken the magnetic field of the rotor (which helps control back EMF). The Q or quadrature axis is 90 electrical degrees away from the direct axis and it is responsible for the torque of the motor since it can attract or repel the rotor’s magnetic field at an angle. In field oriented control you are setting the position of the stator’s magnetic field relative to the rotor’s frame of reference, so if you choose Ud=0% and Uq = 100%, the controller will try to always keep the stator’s magnetic field 90 electrical degrees ahead of the rotor regardless of speed.
I can look for a more specific app note if you give me some more details and context for your application.