FBL2360 Hall Sensors + incremental encoder setup

7 years 5 months ago #29532587 by wojciech
Dear Roboteq,

My setup is following:

- FBL2360 controller,

- FL86BLS98 brushless motor- www.oemmotor.se/Produkter/Motorer/Borstl.../501742-2370599.html,

- incremental encoder with 1024 pulses per revolution.

Now, hall sensors of the motor are plugged to molex connector and incremental encoders to pins 24 and 12 of DB25 connector.
I am able to control the motor in setup:
- 'Trapezoidal' switching mode, 'Hall sensors' as closed loop feedback sensors and closed loop speed position mode.
Also I verified that RPM speed measured with Hall sensors and incremental encoder is the same (so the number of pulses per encoder revolution is correct). So now, I would like to include encoder feedback in the control loop and switch to sinusoidal commutation. I have set encoder use as Feedback in Inputs/Outputs tab.
The setup that seemed correct was:
- Sinusoidal switching mode, 'other' as closed loop feedback sensor (as I would like to use encoder and Hall sensors for that, not Hall sensors alone), then in Sinusoidal settings sinusoidal angle sensor was set to 'Hall + encoder' and mode of closed loop remained as 'closed loop speed position'.
Above setup resulted in unstable control loop and motor switching off as soon as input command was set. I have also tried other configurations that could involve encoders and sinusoidal switching, still no success.
So what should be the correct way to involve incremental encoders in control of brushless motor using FBL2360?
Thank you in advance for your help.

Best Regards

Please Log in or Create an account to join the conversation.

7 years 5 months ago #29532588 by Peters
I have almost the same problem with a MBL 1660 with bldc motor and encoder.
I use Open loop. Hall counter and Encoder count have the same direction.
In open loop it works well with Trapezoidal commutation.
Sinusoidal mode also works fine but only with Sinusoidal angle sensor: Encoder
If I test with: Hall + Encoder the motor rotates not very well and the current is much too high.
I am intrested in your solution

Please Log in or Create an account to join the conversation.

7 years 5 months ago #29532589 by blake
First, ensure that you have the latest firmware on your controller. It is available on our website HERE

Strictly speaking about the feedback sensor, the controller will only use one for speed feedback (either hall or encoder) but not both at the same time. If you have "Other" selected as your closed loop feedback sensor then the controller is using the Encoder. If you'd rather use the hall sensors then change this to "Hall"

I suspect that the reason you are not getting motor movement when using Sinusoidal with Hall+Encoder angle feedback is because of the firmware. Again load the latest firmware and then test again. Test first in open loop. You will need to perform the BND process as described in our user manual. Once you have it going in open loop then you can implement closed loop.

Please Log in or Create an account to join the conversation.

7 years 5 months ago - 7 years 5 months ago #29532590 by wojciech
Thank you for your advice blake.
I have updated the firmware of the controller.
Once again I verified RPMs reported by hall sensors and encoders. They are consistent, the only difference is that at low speed, speed measured by encoders is more noisy which can be expected due to their higher precision.
Then I have tried to set "Other" as feedback sensor and run in sinusoidal mode with "Hall+Encoder" angle feedback. In such mode BND should not be required, is that correct?
In that mode, I was able to control the motor in low speeds, however above certain limit, the motor was going unstable.
I have also tried running the motor with "Other" and sinusoidal mode with "Encoder" feedback. In that case, I performed BND search and it output response indicating success. Again, I was able to control the motor at low speeds and then when I have set higher speed, the motor went unstable.
Both of these tests were run in "Closed loop position speed" mode with P value of 2.0.
What is also interesting is that according to the manual, incremental encoders that I am using should give 1024 pulses per revolution. However in order to make their RPM speed consistent with RPM speed of Hall sensors I had to double that value to 2048. Is it possible that encoders output to many pulses at higher speeds and so the controller cannot handle that and that is why the control crashes? Or there is another problem with encoder signal? Their are powered and grounded from 5 V and GND outputs of DB25 from controller.

EDIT: I have solved an issue with doubled encoder ticks, it occurred because of wrong number of motor's pole pairs. The other issues are still as they were.

Please Log in or Create an account to join the conversation.

7 years 5 months ago #29532591 by blake
Before testing in any closed loop mode, you need to get sinusoidal control working in open loop.

You'll want to ensure that you have the correct PPR value correct (# counts of one full revolution / 4) and that you have the correct number of pole pairs. Review section 8 of our manual for methods to determine the number of pole pairs of your motor.

Another thing to check is that your encoder is counting up with a positive motor command and that it is counting down with a negative motor command.

If you've confirmed all of these and are still unable to get it rotating open loop sinusoidal, then contact me at This email address is being protected from spambots. You need JavaScript enabled to view it. and we can schedule a time to have a remote session to take a look at it together.

Please Log in or Create an account to join the conversation.

7 years 5 months ago #29532592 by wojciech
Thanks for your help, I will follow your guidelines and report the outcome here.

Just one question, why do I have to divide number of encoder's pulses per revolution by four (# counts of one full revolution / 4)?

As for the rest, the number of my pole pairs is correct, same with counting up and down with encoders wrt motor's command.

Please Log in or Create an account to join the conversation.

7 years 5 months ago #29532593 by blake
Your pulses per rev (PPR) will be 1/4 of our counts per rev (CPR). You can get the actual counts per revolution by rotating the motor shaft by hand one full revolution (assuming Enc counts started at 0). See page 54 of our user manual for further details.

Looking forward to your feedback

Please Log in or Create an account to join the conversation.

7 years 4 months ago #29532599 by Peters
Hi Wojcieck,
I am testing a FBL2360 in sinusoidal mode.
Have you solved the problem that the motor gets unstable at higher speed? I also try to use Hall+Encoder as angle sensor for sinusoidal mode.
I does not work well in open loop at higher speeds. The motor gets instable. FOC can not solve this problem. The current is not a nice sine.
If it works well with you I am very interested.

Please Log in or Create an account to join the conversation.

7 years 4 months ago #29532600 by wojciech
Hi again,
Sorry for the silence in the topic, I had to handle lots of different tasks in the meantime.
First of all, I checked if all the parameters that Blake mentioned are correct and indeed they are. I still have not tested the motors in open loop sinusoidal mode but it gave me similar behavior as Peters mentioned in closed loop - getting unstable when running in higher speeds.
So far I'm running the motors in trapezoidal mode using only Hall sensors and thanks to gear between them and the part I'm spinning the performance is acceptable for now. However, I will go back to the problem of using Hall sensors and encoders as soon as possible because I would like to utilize the precision of encoders in my system.
I will update you here as soon as I get something.


Please Log in or Create an account to join the conversation.

Moderators: tonysantoni
Time to create page: 0.072 seconds