2026-01-15 2:29 AM
Good day,
I'm trying to get motor profiler running on an X-Nucleo-IHM17M1. The only compatible Nucleo board I have is a F303RE.
To enable the motor profiler application, it requires the selection of 3 shunt current sensing. According to this link, it seems that both the IHM17M1 and F303RE support 3 shunt current sensing.
Yet, when I try and configure the project, only single shunt is available. This is not the case for the other Nucleo boards.
That said, I do receive the following warning when creating the project.
Is there any solution for this, or should I use a different Nulceo board?
Solved! Go to Solution.
2026-01-15 4:00 AM
Hello JandreFrey,
The reason why the NUCLEO-F303 coupled with the IHM17 does not support Three Shunt operation is because of the available ADCs. There are two flavours of Three Shunt theoretically available in your case : one using 1 ADC, one using 2 ADCs.
Let's first have a look at the available pins for each Current Phase :
Phase U : ML34 -> PB0 -> ADC3_IN12
Phase V : MR24 -> PB1 -> ADC3_IN1
Phase W : MR16 -> PB12 -> ADC4_IN3
MR26 -> PB15 -> ADC4_IN5
MR15 -> PA7 -> ADC2_IN4
For the 1-ADC topology, the three current sensing pins must have the same ADC, which is not the case here : PB0 and PB1 only have ADC3, whereas the three available pins for Phase W do not offer any ADC3 channel
For the 2-ADC topology, we require one of the phase to give access to 2 different ADCs, which is not the case for any of the available pins.
This is why, despite the fact that the F303RE and the IHM17 both support 3-Shunt driving on their own, it cannot be done using these two boards together. Therefore, you should use a different Nucleo board.
2026-01-15 4:00 AM
Hello JandreFrey,
The reason why the NUCLEO-F303 coupled with the IHM17 does not support Three Shunt operation is because of the available ADCs. There are two flavours of Three Shunt theoretically available in your case : one using 1 ADC, one using 2 ADCs.
Let's first have a look at the available pins for each Current Phase :
Phase U : ML34 -> PB0 -> ADC3_IN12
Phase V : MR24 -> PB1 -> ADC3_IN1
Phase W : MR16 -> PB12 -> ADC4_IN3
MR26 -> PB15 -> ADC4_IN5
MR15 -> PA7 -> ADC2_IN4
For the 1-ADC topology, the three current sensing pins must have the same ADC, which is not the case here : PB0 and PB1 only have ADC3, whereas the three available pins for Phase W do not offer any ADC3 channel
For the 2-ADC topology, we require one of the phase to give access to 2 different ADCs, which is not the case for any of the available pins.
This is why, despite the fact that the F303RE and the IHM17 both support 3-Shunt driving on their own, it cannot be done using these two boards together. Therefore, you should use a different Nucleo board.
2026-01-17 8:16 AM
Hi Gaël,
Thank you for these details. This makes sense.
I've also tried starting a project without doing motor characterisation. I've tested both FOC and 6STEP control, and neither seem to work.
For FOC sensorless, the motor spins up in open loop, but fails when PLL is supposed to take over. The closed loop does work using hall effect sensors, but only if I manually increase the speed P and I gains. However, the motor does seem to cap out at around 5000RPM, even though the motor limit is set to 50000RPM. I suspect this is due to incorrect motor characterisation, as the parameters are only based on datasheet values. It is a very small motor (Faulhaber 0620 006B) so it has extremely small inductance, inertia and friction values.
For 6STEP, the IHM17 U,V,W outputs simply don't even switch on (LED's stay off and no measurable output voltage). Here I've tried both sensorless and hall effect, with no luck. I did also ensure the hardware config (jumper pads) are correctly set and the hall effect is wired in the correct order.
My question is whether this kind of behaviour is simply due to poor motor characterisation, or do you suspect something else is at play. I'm not sure which details to share, so if there's anything I could share to help identify the issue, please let me know.
Kind regards,
Jandre
2026-01-19 1:21 AM
Hello JandreFrey,
As this is now a different topic, I advise you next time to create a different post for your new question, with reference to this post if need be. This way, you can ensure that your question does not go unseen by our support team.
Since I am here anyway, I will try to answer as best as I can.
First of all, since you skipped the motor profiling and used the values from the datasheet, it is important for you to know that the Speed PID gains computed by the Workbench are off by a factor of PolePair. This is a current limitation of the MCSDK. A workaround is to divide your Inertia and Friction values by the number of PolePair of the motor to compute the correct Speed Kp and Ki.
Knowing the motor has very low inductance, be aware that a higher PWM Frequency can be useful to achieve better control. In a nutshell : low inductance => high current dynamics => better sampling resolution required
Concerning your speed capped to 10% of the max speed, could you please tell me your voltage and current level when speed is capped ? You can use the Motor Pilot to retrieve the alpha-beta coordinate values.
Both for 6-Step and FOC, could you please tell me if the Motor Pilot returns any error ?
2026-01-19 5:09 AM
Hi Gael,
Apologies, next time I will create a new thread. For now, since I have posted here, I will reply to your post.
I have tried tuning the gains according to your suggestions, with no success. I can only barely get the motor spinning. Most times it simply does not spin up.
I have increased the PWM freq to 48 kHz. The motor now goes up to 7000RPM which is still VERY low. It also gets quite hot, so I think something is still very wrong.
Here are the graphs from when the setpoint is set above 7kRPM:
And below 7kRPM:
I'm yet to get a new Nucleo to perform characterisation.
Something worth noting is that the motor friction and inertia is too small for the entry box in the wizard. they default to 0.001. This might throw off the speed gain calculation.
Regards,
Jandre
2026-01-19 6:20 AM
EDIT: I was able to increase the motor RPM considerably by supplying the full 6V and increasing allowed current.
The motor does now spin up to 10-12kRPM. It is rated up to 50kRPM, but I guess there's going to be a limit with the PWM and controller bandwidth. Here are the logs at 10kRPM.
However, I do still struggle to get it started. Should a ramp-up be implemented, or is the controller supposed to automatically ramp up the motor?
As for sensorless control, I do get a startup failure (FAULT_OVER) error when closed-loop takes over from sensorless, which I suspect has to do with the back-EMF sensing. Plotted below is what the back-emf observer outputs when the motor is ramped in open loop to 4kRPM and held there for 5 seconds.
The 6-STEP simply does not turn on the outputs, and shows no errors.
2026-01-20 2:25 AM
Hello JandreFrey,
I am glad you found a way to increase the reached speed. As you said, it indeed falls under your responsibility to tune your current ramp up to achieve a good switch over from open loop to close loop control. A conservative way to approach the problem is to set a high current level with law speed ramp (ensure the motor stays hooked up), until relatively high speed (the higher the B-EMF, the easier it is to estimate the speed).