How to decouple RPM and phase control on two BLDC motors?

Hello,


I am working on a test bench with two BLDC motors driven by ESCs and monitored using optical sensors. My goal is to control both:


  • a common target RPM,
  • a target phase difference between the two motors.

To do this, I implemented two control loops:


  • an RPM control loop that adjusts the PWM commands to maintain the target speed,
  • a phase control loop that also adjusts the PWM commands to correct the phase error.

However, I have the impression that the two loops are inherently coupled. The phase controller corrects the phase difference by modifying the motor speeds, while the RPM controller simultaneously tries to eliminate those speed variations and keep both motors at the target RPM.


Because of this, it seems that the two controllers are constantly fighting each other. The phase loop changes the speed to reduce the phase error, and the RPM loop then tries to cancel those changes. I suspect that this interaction may be responsible for the oscillations and poor stability I am observing.


My intuition is that a better solution would be to use a control architecture where the two loops are more decoupled and do not act on the system in exactly the same way.


Does this analysis make sense?


If so, what control architecture would be recommended for this type of problem? For example:


  • master-slave control,
  • cascaded loops,
  • differential/common-mode control,
  • another approach?
 

Attachments

Top