Config problems

Hi all,

I recently received an ODrive and i am trying to use it with a turnigy 28-30s 900kv.

So far the full calibration executes but it leaves a ERROR_CPR_OUT_OF_RANGE error on the encoder.

The polepairs are configured to be 3 but this might be the problem because when i set the encoder to ready = true and requesting closed loop state, the motor starts making a soft screeching sound and does not respont to pos_setpoint inputs (indicating bad commutation).

I reduced the standard velocity gain to 10e-3 and the velocity integral to 0.
The position gains only affect the current.
When i turn the motor by hand it does not correct itself to its original position.

I tried changing pole pairs but i have no succes so far.

Anyone who can help me out?


You shouldn’t be setting is_ready = true manually. CPR_OUT_OF_RANGE means either your pole-pair setting is wrong, your encoder CPR setting is wrong, or you’re not getting good data from the encoder. This can be due to a wiring issue or a mechanical slippage.


There shouldn’t be any slip as the encoder is realy tightly connected to the BLDC.
I will try a different BLDC with different encoder and see what will happen.

Just to be sure: there are 12 permanent magnets and 9 poles, this should equal to 3 polepairs. Making one mechanical cycle would require 3 electrical cycles, thus is assume that the polepair paramater is polepairs * electrical cycles?

From the docs:

Tanks, got it working.

The noise came from a very high p_gain for the current controller.

You shouldn’t be changing the P or I gains for the current control manually. It’s setup to give a critically damped PI control according to the desired control bandwidth. You can reduce the bandwidth via odrivetool, though