Hello everyone,
I’m using FL80BLS120 motor (48V, 1400RPM, 8 poles, sensored) with Odrive V3.6 (56V version).
Unfortunately, I can’t make the motor spin.
My motor doesn’t calibrate when I send : odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
I tried changing config.resistance_calib_max_voltage
and config.calibration_current
but it didn’t work.
Also, I can read encoder position with: odrv0.axis0.encoder.pos_estimate
But can’t set position with: odrv0.axis0.controller.input_pos = 5
(5 for instance).
Here’s what dump_errors(odrv0)
prints:
system: not found
axis0
axis: Error(s):
UNKNOWN ERROR: 0x00000040
motor: Error(s):
MOTOR_ERROR_PHASE_RESISTANCE_OUT_OF_RANGE
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: no error
motor: no error
sensorless_estimator: no error
encoder: no error
controller: no error
Here’s what odrv0.axis0
prints:
clear_errors(obj: object_ref)
config:
calibration_lockin: ...
can_heartbeat_rate_ms: 100 (uint32)
can_node_id: 0 (uint32)
can_node_id_extended: False (bool)
dir_gpio_pin: 2 (uint16)
enable_step_dir: False (bool)
enable_watchdog: False (bool)
general_lockin: ...
sensorless_ramp: ...
startup_closed_loop_control: False (bool)
startup_encoder_index_search: False (bool)
startup_encoder_offset_calibration: False (bool)
startup_homing: False (bool)
startup_motor_calibration: False (bool)
startup_sensorless_control: False (bool)
step_dir_always_on: False (bool)
step_gpio_pin: 1 (uint16)
turns_per_step: 0.0009765625 (float)
watchdog_timeout: 0.0 (float)
controller:
anticogging_valid: False (bool)
config: ...
error: 0 (int32)
input_pos: 0.0 (float)
input_torque: 0.0 (float)
input_vel: 0.0 (float)
move_incremental(obj: object_ref, displacement: float, from_input_pos: bool)
pos_setpoint: 0.0 (float)
start_anticogging_calibration(obj: object_ref)
torque_setpoint: 0.0 (float)
trajectory_done: True (bool)
vel_integrator_torque: 0.0 (float)
vel_setpoint: 0.0 (float)
current_state: 1 (int32)
encoder:
calib_scan_response: 0.0 (float)
config: ...
count_in_cpr: 8191 (int32)
error: 0 (int32)
hall_state: 5 (uint8)
index_found: False (bool)
interpolation: 0.5 (float)
is_ready: False (bool)
phase: -0.002682924270629883 (float)
pos_abs: 0 (int32)
pos_circular: 0.9999065399169922 (float)
pos_cpr: 0.9999065399169922 (float)
pos_cpr_counts: 8191.234375 (float)
pos_estimate: -9.34600830078125e-05 (float)
pos_estimate_counts: -0.765625 (float)
set_linear_count(obj: object_ref, count: int32)
shadow_count: -1 (int32)
spi_error_rate: 0.0 (float)
vel_estimate: 0.0 (float)
vel_estimate_counts: 0.0 (float)
error: 64 (int32)
fet_thermistor:
config: ...
error: 0 (int32)
temperature: 34.724571228027344 (float)
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 2674834 (uint32)
max_endstop:
config: ...
endstop_state: False (bool)
min_endstop:
config: ...
endstop_state: False (bool)
motor:
DC_calib_phB: 0.39669981598854065 (float)
DC_calib_phC: -0.5165843367576599 (float)
armed_state: 0 (int32)
config: ...
current_control: ...
current_meas_phB: 0.0056268274784088135 (float)
current_meas_phC: 0.23446762561798096 (float)
effective_current_lim: 10.0 (float)
error: 1 (int32)
gate_driver: ...
is_calibrated: False (bool)
phase_current_rev_gain: 0.02500000037252903 (float)
timing_log: ...
motor_thermistor:
config: ...
error: 0 (int32)
temperature: 0.0 (float)
requested_state: 0 (int32)
sensorless_estimator:
config: ...
error: 0 (int32)
phase: 0.0 (float)
pll_pos: 0.0 (float)
vel_estimate: 0.0 (float)
step_dir_active: False (bool)
trap_traj:
config: ...
watchdog_feed(obj: object_ref)
Thanks for the helpers in advance
EDIT: I used odrv0.erase_configuration()
and retried the calibration.
The motor moved only one way very slowly and stoped.
I rechecked for errors, and now it is this:
system: not found
axis0
axis: Error(s):
UNKNOWN ERROR: 0x00000100
motor: no error
sensorless_estimator: no error
encoder: Error(s):
ENCODER_ERROR_CPR_POLEPAIRS_MISMATCH
controller: no error
axis1
axis: no error
motor: no error
sensorless_estimator: no error
encoder: no error
controller: no error