Inability to home motor

Hi there,

I’m currently working on connecting a BLDC motor to a linear rail, and before I do this I’m ensuring that I can home the motor on the rail with a mechanical switch. I’m currently trying to home the motor but instead of the motor rotating the engage the switch, the function instantly throws a procedure 14 error (Not_Calibrated) instead.

I’m using the following equipment:
Controller - ODrive S1
Motor - BLDC Motor
Encoder - Absolute Encoder
and I’m programming the controller in Python.

I have repeatedly calibrated both the motor and the encoder and saved the configurations, using both the Full_Calibration_Sequence command, and individually calibrating the motor and encoder (using the Motor_Calibration and Encoder_Offset_Calibration commands). Running these calibration commands will consistently throw a procedure 5 error (Pole_Pair_CPR_Mismatch). Additionally, this error is only thrown after the encoder calibration and is not present during the motor calibration. I have a strong suspicion that this error is what is causing the procedure 14 error to be thrown during the homing function. Additionally, I have verified that the encoder seems to be reading the position of the motor correctly as I have been outputting the encoder position and it has lined up with the position of the rotor.

I’ve tried to chase down the procedure 5 error and I’m getting stuck. Since the encoder is an absolute encoder it seems like I can ignore the CPR value. I’ve also checked that I’m using the number of pole pairs, not poles, and this motor has 4 pole pairs.

Any advice on fixing the CPR Mismatch issue would be greatly appreciated. Thanks so much!