We are trying to configure a Neo 550 to an Odrive S1 Motor controller for the purpose of autonomous steering.
I am currently having trouble calibrating it on the Web GUI. More specifically, I am running into PHASE_RESISTANCE_OUT_OF_RANGE error. When I checked for the odrv0.axis0.config.motor.phase_inductance and odrv0.axis0.config.motor.phase_resistance on the ODrive tool I got zero values for both. I already checked for the following two conditions:
config.motor.resistance_calib_max_voltage > calibration_current * phase_resistance
config.motor.resistance_calib_max_voltage < 0.5 * vbus_voltage
I might not have configured the pole pairs correctly and I didn’t set up the brake resistor yet.
Hi there - looks like you sent an email about this as well, would you like to keep discussion here or over email? Whatever works best for you!
Hi, sorry I didn’t get your email. We can continue the discussion here so that other people can see it.
Right now I have:
odrv.axis0.config.motor.resistance_calib_max_voltage = 12
odrv.axis0.config.motor.calibration_current = 12
Here’s the entire script if you want to look at it:
odrv = odrv0
odrv.config.dc_bus_overvoltage_trip_level = 24
odrv.config.dc_bus_undervoltage_trip_level = 10.5
odrv.config.dc_max_positive_current = 14
odrv.config.dc_max_negative_current = -0.01
odrv.axis0.config.motor.motor_type = MotorType.HIGH_CURRENT
odrv.axis0.config.motor.torque_constant = 0.009018538713195202
odrv.axis0.config.motor.pole_pairs = 7
odrv.axis0.config.motor.current_soft_max = 24
odrv.axis0.config.motor.current_hard_max = 41.2
odrv.axis0.config.motor.calibration_current = 12
odrv.axis0.config.motor.resistance_calib_max_voltage = 12
odrv.axis0.config.calibration_lockin.current = 50
odrv.axis0.controller.config.input_mode = InputMode.PASSTHROUGH
odrv.axis0.controller.config.control_mode = ControlMode.POSITION_CONTROL
odrv.axis0.controller.config.vel_limit = 10
odrv.axis0.controller.config.vel_limit_tolerance = 1.2
odrv.axis0.config.torque_soft_min = -0.97
odrv.axis0.config.torque_soft_max = 0.97
odrv.can.config.protocol = Protocol.NONE
odrv.config.enable_uart_a = False
odrv.rs485_encoder_group0.config.mode = Rs485EncoderMode.ODRIVE_OA1
odrv.axis0.config.load_encoder = EncoderId.RS485_ENCODER0
odrv.axis0.config.commutation_encoder = EncoderId.RS485_ENCODER0
Connected to ODrive S1 3950357D3231 (firmware v0.6.9) as odrv0
This is what I’m getting on odrivetool:
In [1]: odrv0.axis0.config.motor.phase_inductance
Out[1]: 0.0
In [2]: odrv0.axis0.config.motor.phase_resistance
Out[2]: 0.037325840443372726
If I press erase and reboot before calibrating, it turns the encoder off and the motor spins with the No_Reponse error popping up. However, when I get the encoder in range and calibrate after applying and saving the configuration, I run into the phase induction error.
Thank you! Those tips helped pass calibration. And sorry for the confusion, the encoder is mounted via a bracket and is lighting green. However, the magnet is the perfectly centered on the motor and is moving a little. But the distance from the magnet is constant.
After calibration, I am running into the DC_BUS_OVER_REGEN_CURRENT when I try to use position or velocity control. I am planning on hooking up the brake resistor to see if that fixes the problem.
Glad to hear things are working out!
Yes, the brake resistor should solve the over regen issue