FORUM
Hello everyone,
I am using a 4-pole, 24v BLDC motor with Hall sensors and trying to control its position. I used the Motion Terminal calibration wizard to calibrate the hall sensor offset and tune the PI coefficients. However, I am facing the following problems:
1- On Speed Control Mode, for all speed references above 250 RPM it works perfectly fine but below that number, it rotates discontinuously.
2- On Position Control Mode, it follows the reference position, however, it doesn't stop completely and it keeps fluctuating for 20~30 degrees.
3-Sometimes, before following the reference (both speed and position), it turns backward and then follows the command.
It's my first experience using SOLO and any help would be greatly appreciated.
Hello @mmj,
Using Hall sensors, you will usually need to put the Speed and Position controller gains much higher compared to other sensors with higher resolution ( like incremental Encoders ), please note that your motor has 4 poles with 3 hall sensors, which provide only 12 pulses per revolution per sensor, so achieving very low speeds is going to be challenging with this resolution.
To that end I recommend you test the following gains for Speed controlling tests and test them both at low speeds and high speeds.
Speed controller Kp = 0.5 , Speed controller Ki= 0.005
Speed controller Kp = 0.9 , Speed controller Ki= 0.001
Speed controller Kp = 1.2 , Speed controller Ki= 0.0
Speed controller Kp = 1.1 , Speed controller Ki= 0.0005
Once you have a reliable speed-controlling performance you can test the position controlling with some gains like:
Position controller Kp = 30.0 Position controller Ki = 0.0
Position controller Kp = 50.0 Position controller Ki = 0.0
Position controller Kp = 50.0 Position controller Ki = 0.001
With Hall sensors, you can even increase the position controller Kp gain all the way up to even 90 or 100 as the resolution of your sensors are very low.
you can also use our St-curve for smooth Speed and Position profile generation following the videos in the article below:
https://www.solomotorcontrollers.com/blog/embedded-motion-profile-engine/
let me know if these could help you with your problem.
Milad
If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.
Thank you @milad,
First of all, it works like a charm. But, I will add some more explanations for future reference.
For the speed control loop, the best PID coefficient were those calculated by Motion Terminal. The lowest rpm that motor rotate smoothly is 250, considering the 1/10 reduction ratio of gearbox, the actual output is 25 RPM which is more than enough for my application.
For the position control loop, I put P=1000 and I=0.001. No more vibration and works great.
By the way, in motion terminal, when I was monitoring the position, by changing the reference position, motor did not reach the reference. But, when I stoped the monitoring and the changed the reference position, motor worked well. Maybe there is a bug or something wrong with my browser.
Cheers.
Hello @mmj,
Thanks for the updates.
By the way, in motion terminal, when I was monitoring the position, by changing the reference position, motor did not reach the reference. But, when I stoped the monitoring and the changed the reference position, motor worked well. Maybe there is a bug or something wrong with my browser.
Thanks for sharing this, I'll forward it to the software team to have a look at it, will keep you posted.
Milad
If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.