Can get motor to run or bip

Ok, sorry for a noob question…
trying to following hoverboard guide.
when I send:
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
no bip or movement on the motor.
I place the 22nf capacitors on the encoders ABZ, and remove just to double check,
tried in anaconda and Cmd python 3.8.6, flash the firmware and start from zero many times.
there is anything else I could check? I can’t find any errors…

Odrive 3.5, 48V firmware updated:

In [1]: odrv0.axis0
Out[1]:
error = 0x0000 (int)
step_dir_active = False (bool)
current_state = 0 (int)
requested_state = 4 (int)
loop_counter = 0 (int)
lockin_state = 0 (int)
is_homed = False (bool)
config:
  startup_motor_calibration = False (bool)
  startup_encoder_index_search = False (bool)
  startup_encoder_offset_calibration = False (bool)
  startup_closed_loop_control = False (bool)
  startup_sensorless_control = False (bool)
  startup_homing = False (bool)
  enable_step_dir = False (bool)
  step_dir_always_on = False (bool)
  turns_per_step = 0.0009765625 (float)
  watchdog_timeout = 0.0 (float)
  enable_watchdog = False (bool)
  step_gpio_pin = 1 (int)
  dir_gpio_pin = 2 (int)
  calibration_lockin: ...
  sensorless_ramp: ...
  general_lockin: ...
  can_node_id = 0 (int)
  can_node_id_extended = False (bool)
  can_heartbeat_rate_ms = 100 (int)
fet_thermistor:
  error = 0x0000 (int)
  temperature = nan (float)
  config: ...
motor_thermistor:
  error = 0x0000 (int)
  temperature = nan (float)
  config: ...
motor:
  error = 0x0000 (int)
  armed_state = 0 (int)
  is_calibrated = False (bool)
  current_meas_phB = 0.0 (float)
  current_meas_phC = 0.0 (float)
  DC_calib_phB = 0.0 (float)
  DC_calib_phC = 0.0 (float)
  phase_current_rev_gain = 0.012500000186264515 (float)
  effective_current_lim = 10.0 (float)
  current_control: ...
  gate_driver: ...
  timing_log: ...
  config: ...
controller:
  error = 0x0000 (int)
  input_pos = 0.0 (float)
  input_vel = 0.0 (float)
  input_torque = 0.0 (float)
  pos_setpoint = 0.0 (float)
  vel_setpoint = 0.0 (float)
  torque_setpoint = 0.0 (float)
  trajectory_done = True (bool)
  vel_integrator_torque = 0.0 (float)
  anticogging_valid = False (bool)
  config: ...
  move_incremental(displacement: float, from_input_pos: bool)
  start_anticogging_calibration()
encoder:
  error = 0x0000 (int)
  is_ready = False (bool)
  index_found = False (bool)
  shadow_count = 0 (int)
  count_in_cpr = 0 (int)
  interpolation = 0.0 (float)
  phase = 0.0 (float)
  pos_estimate = 0.0 (float)
  pos_estimate_counts = 0.0 (float)
  pos_cpr = 0.0 (float)
  pos_cpr_counts = 0.0 (float)
  pos_circular = 0.0 (float)
  hall_state = 0 (int)
  vel_estimate = 0.0 (float)
  vel_estimate_counts = 0.0 (float)
  calib_scan_response = 0.0 (float)
  pos_abs = 0 (int)
  spi_error_rate = 0.0 (float)
  config: ...
  set_linear_count(count: int)
sensorless_estimator:
  error = 0x0000 (int)
  phase = 0.0 (float)
  pll_pos = 0.0 (float)
  vel_estimate = 0.0 (float)
  config: ...
trap_traj:
  config: ...
min_endstop:
  endstop_state = False (bool)
  config: ...
max_endstop:
  endstop_state = False (bool)
  config: ...
watchdog_feed()
clear_errors()

In [2]:In [2]: dump_errors(odrv0)
axis0
  axis: no error
  motor: no error
  fet_thermistor: no error
  motor_thermistor: no error
  encoder: no error
  controller: no error
axis1
  axis: no error
  motor: no error
  fet_thermistor: no error
  motor_thermistor: no error
  encoder: no error
  controller: no error

Looks as if the motor calibration worked. You should have heard a beep, though.
motor_calibration will make a nopise but it does not move the motor. You need to run encoder_offset_calibration next - that’s where the motor should start to move. (or use full_calibration_sequence to do both of these steps at once)

Thanks towen,
There is no bip or movement if send:
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
no bip or movement on the motor.
Am I missing something?

Try sending odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE instead
And report any errors from dump_errors(odrv0, True) if you get them

Hi towen no luck with errors I guess:

Connected to ODrive 206030A44252 as odrv0
In [1]: odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

In [2]: dump_errors(odrv0, True)
axis0
  axis: no error
  motor: no error
  fet_thermistor: no error
  motor_thermistor: no error
  encoder: no error
  controller: no error
axis1
  axis: no error
  motor: no error
  fet_thermistor: no error
  motor_thermistor: no error
  encoder: no error
  controller: no error

In [3]:

That is bizarre, I must say… :thinking:
And the motor still did not move?

Hi Towen, I’ve downgrade the firmware to 4.12 end it works… that’s also bizarre? sorry I really wish to use the new firmware. don’t know that to do now.

Sounds like a bug!
Please go back to the new firmware, check that you still have the error, and then use odrivetool backup-config lubas.json and then send it by PM to @PJohnson. I’m sure the devs will be interested in it.

Then, once you’ve done that, please try using

odrv0.erase_config()
odrv0.save_config()
odrv0.reboot()

and then configure your motor again.

Probably what happened is that your old config from the old firmware is not compatible with the new firmware, i.e. odrivetool is not migrating it properly when it makes the upgrade, and it has left the config in a weird state

when you say erase_config you mean erase_configuration?

tried to update the firmware over python -dfu, there was issue with zigzag driver, so I place the board in DFU and update from DfuseDemo. using the hex from github(not sure if it was the 5.0, or 5.1).
did a erase configuration, reboot, place the values, motor did not run… I will switch back to 4.12 again… is there any other HEX file I should try?

Can you post the exact steps that you made after erasing configuration?

I follow the hoverboard guide literally. now line changed or added.

btw. when I’m using the 5.1 my read from odrv0.vbus_voltage = 12.0 in the 4.12 is 31.22… (i’m using a 8S battery)

@lubas in that case, you forgot to set the board version in tup.config when you compiled the firmware… Or if you used a HEX file, you used one compiled for the 24V version of the board.
Please try compiling it yourself from the Git repo