I am having trouble making my Castle Creations 1406- 1900kv sensored motor spin with the odrive v3.6 56V. I contacted the manufacturer and got the following information on this motor:
- pole pairs: 2
- cpr: 12
- sensors: open drain
- power rating: voltage dependent - 180W at 6V
- max. continuous current: 30 amps
I configured the odrive using the values recommended on the website in the hoverboard / hall section. Below I will walk you through the commands I ran and how the motor behaved throughout.
odrv0.axis0.motor.config.current_lim = 20 odrv0.axis0.motor.config.calibration_current = 10 odrv0.axis0.motor.config.pole_pairs = 2 odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT` odrv0.axis0.motor.config.resistance_calib_max_voltage = 4 odrv0.axis0.motor.config.requested_current_range = 25 odrv0.axis0.motor.config.current_control_bandwidth = 100 odrv0.axis0.encoder.config.mode = ENCODER_MODE_HALL odrv0.axis0.encoder.config.cpr = 12 odrv0.axis0.encoder.config.bandwidth = 100 odrv0.axis0.controller.config.pos_gain = 1 odrv0.axis0.controller.config.vel_gain = 0.02 odrv0.axis0.controller.config.vel_integrator_gain = 0.1 odrv0.axis0.controller.config.vel_limit = 1000 odrv0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL odrv0.save_configuration() odrv0.reboot()
Next I calibrated the motor and then had the odrive list out all the data pertaining to the motor. On the website they got the values phase_inductanace = 0.00033 and phase_resistance = 0.17934. Are my values concerning? Could this be my problem?
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION # the odrive beeped odrv0.axis0.motor # phase_inductance = 9.24095 # phase_resistance = 0.03376 odrv0.axis0.motor.config.pre_calibrated = True
Next I calibrated the encoder and the motor spun in both directions which was encouraging. My offset_float value was almost twice as big as what they had on the website, which is offset_float = 0.5126959
odrv0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION # The motor spun in both directions after this command! odrv0.axis0.encoder # offset_float = 0.99989
I then saved and rebooted and tried to run the motor using AXIS_STATE_CLOSED_LOOP_CONTROL. The motor did not spin.
odrv0.save_configuration() odrv0.reboot() odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL odrv0.axis0.controller.vel_setpoint = 120 # My motor should have spun here but instead did nothing odrv0.axis0.controller.vel_setpoint = 500 # Still no motion odrv0.axis0.requested_state = AXIS_STATE_IDLE
My motor is quite different from the motors typically used with the odrive. Based on the specs of the motor I listed above, should I be configuring the odrive with different values?
Note: I soldered in 22nF capacitors between the A, B, C and ground pins.
Note: I am using the “odrive control utility v 0.5.1” but have not updated the firmware since buying the odrive. the odrive is a v3.6 and came with v0.4.12 firmware. Could this be my problem?
Any help is greatly appreciated! Thank you!