Dc_bus_over_regen_current

Hi,

I have the problem when increasing trap_traj.config.decel_limit above 50
max_regen_current = 80

And when I raise the max_regen_current to 100 the system freezes completly

It makes a clacking sound when it starts to brake

3.6 58V FW 0.5.1
36V supply
Motor 6374 170KV
AMT103-V @ 4096
Res. 0R33

seems to be the same issue like this one:

THX 4 help !!

In [86]: odrv0.axis0
Out[86]:
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: True (bool)
startup_encoder_index_search: False (bool)
startup_encoder_offset_calibration: True (bool)
startup_homing: False (bool)
startup_motor_calibration: True (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: 79.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: 56.45629119873047 (float)
start_anticogging_calibration(obj: object_ref)
torque_setpoint: -0.0 (float)
trajectory_done: False (bool)
vel_integrator_torque: 0.011456375010311604 (float)
vel_setpoint: 52.01197052001953 (float)
current_state: 1 (int32)
encoder:
calib_scan_response: 4664.0 (float)
config: …
count_in_cpr: 4085 (int32)
error: 0 (int32)
hall_state: 5 (uint8)
index_found: False (bool)
interpolation: 0.5 (float)
is_ready: True (bool)
phase: 0.27559351921081543 (float)
pos_abs: 0 (int32)
pos_circular: 0.9974861145019531 (float)
pos_cpr: 0.9974979162216187 (float)
pos_cpr_counts: 4085.75146484375 (float)
pos_estimate: 98.99751281738281 (float)
pos_estimate_counts: 405493.8125 (float)
set_linear_count(obj: object_ref, count: int32)
shadow_count: 405493 (int32)
spi_error_rate: 0.0 (float)
vel_estimate: 0.0 (float)
vel_estimate_counts: 0.0 (float)
error: 48 (int32)
fet_thermistor:
config: …
error: 0 (int32)
temperature: 33.61985778808594 (float)
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 6802828 (uint32)
max_endstop:
config: …
endstop_state: False (bool)
min_endstop:
config: …
endstop_state: False (bool)
motor:
DC_calib_phB: -3.4248931407928467 (float)
DC_calib_phC: -3.1456527709960938 (float)
armed_state: 0 (int32)
config: …
current_control: …
current_meas_phB: -0.20080256462097168 (float)
current_meas_phC: 0.3256516456604004 (float)
effective_current_lim: 100.0 (float)
error: 16384 (int32)
gate_driver: …
is_calibrated: True (bool)
phase_current_rev_gain: 0.05000000074505806 (float)
timing_log: …
motor_thermistor:
config: …
error: 0 (int32)
temperature: 0.0 (float)
requested_state: 0 (int32)
sensorless_estimator:
config: …
error: 0 (int32)
phase: -2.952199935913086 (float)
pll_pos: -2.9515061378479004 (float)
vel_estimate: 0.0007067311671562493 (float)
step_dir_active: False (bool)
trap_traj:
config: …
watchdog_feed(obj: object_ref)

In [84]: odrv0
Out[84]:
axis0:
clear_errors(obj: object_ref)
config: …
controller: …
current_state: 1 (int32)
encoder: …
error: 48 (int32)
fet_thermistor: …
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 5687562 (uint32)
max_endstop: …
min_endstop: …
motor: …
motor_thermistor: …
requested_state: 0 (int32)
sensorless_estimator: …
step_dir_active: False (bool)
trap_traj: …
watchdog_feed(obj: object_ref)
axis1:
clear_errors(obj: object_ref)
config: …
controller: …
current_state: 1 (int32)
encoder: …
error: 16 (int32)
fet_thermistor: …
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 5687599 (uint32)
max_endstop: …
min_endstop: …
motor: …
motor_thermistor: …
requested_state: 0 (int32)
sensorless_estimator: …
step_dir_active: False (bool)
trap_traj: …
watchdog_feed(obj: object_ref)
brake_resistor_armed: False (bool)
brake_resistor_saturated: False (bool)
can:
config: …
error: 0 (int32)
set_baud_rate(obj: object_ref, baudRate: uint32)
config:
brake_resistance: 0.33000001311302185 (float)
dc_bus_overvoltage_ramp_end: 59.92000198364258 (float)
dc_bus_overvoltage_ramp_start: 59.92000198364258 (float)
dc_bus_overvoltage_trip_level: 59.92000198364258 (float)
dc_bus_undervoltage_trip_level: 20.0 (float)
dc_max_negative_current: -20.0 (float)
dc_max_positive_current: inf (float)
enable_ascii_protocol_on_usb: True (bool)
enable_dc_bus_overvoltage_ramp: False (bool)
enable_i2c_instead_of_can: False (bool)
enable_uart: True (bool)
gpio1_pwm_mapping: …
gpio2_pwm_mapping: …
gpio3_analog_mapping: …
gpio3_pwm_mapping: …
gpio4_analog_mapping: …
gpio4_pwm_mapping: …
max_regen_current: 80.0 (float)
uart_baudrate: 115200 (uint32)
enter_dfu_mode(obj: object_ref)
erase_configuration(obj: object_ref)
fw_version_major: 0 (uint8)
fw_version_minor: 5 (uint8)
fw_version_revision: 1 (uint8)
fw_version_unreleased: 1 (uint8)
get_adc_voltage(obj: object_ref, gpio: uint32) → voltage: float
get_oscilloscope_val(obj: object_ref, index: uint32) → val: float
hw_version_major: 3 (uint8)
hw_version_minor: 6 (uint8)
hw_version_variant: 56 (uint8)
ibus: 0.0 (float)
ibus_report_filter_k: 1.0 (float)
reboot(obj: object_ref)
save_configuration(obj: object_ref)
serial_number: 63098193261878 (uint64)
system_stats:
i2c: …
min_heap_space: 41560 (uint32)
min_stack_space_axis0: 1620 (uint32)
min_stack_space_axis1: 1684 (uint32)
min_stack_space_can: 796 (uint32)
min_stack_space_comms: 3864 (uint32)
min_stack_space_startup: 1708 (uint32)
min_stack_space_uart: 3924 (uint32)
min_stack_space_usb: 2028 (uint32)
min_stack_space_usb_irq: 1796 (uint32)
stack_usage_axis0: 428 (uint32)
stack_usage_axis1: 364 (uint32)
stack_usage_can: 228 (uint32)
stack_usage_comms: 232 (uint32)
stack_usage_startup: 340 (uint32)
stack_usage_uart: 172 (uint32)
stack_usage_usb: 2068 (uint32)
stack_usage_usb_irq: 252 (uint32)
uptime: 712561 (uint32)
usb: …
test_function(obj: object_ref, delta: int32) → cnt: int32
test_property: 0 (uint32)
user_config_loaded: True (bool)
vbus_voltage: 36.26374435424805 (float)

Hi! Did you use psu or battery? Do you have any errors when called dump_errors(odrv0) from odrivetool?

hi, its driven by a powersupply
the error message is the title of the post.
the brake res. is not a bit warm. I tried 2R and 0R33

This has to be larger in magnitude than max_regen_current. So for 80A, this value has to be <= -81

ok thx I try right now

Hi,

well it didnt work but at least now I have a different error with these values:

odrv0.config.max_regen_current = 50
odrv0.config.dc_max_negative_current = -60

In [13]: dump_errors(odrv0)
system: not found
axis0
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.DRV_FAULT
DRV fault: not found
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.DRV_FAULT
DRV fault: not found
sensorless_estimator: no error
encoder: no error
controller: no error

when I try with these, the board freezes:

odrv0.config.max_regen_current = 60
odrv0.config.dc_max_negative_current = -70

hope my HW is not damaged

THX 4 help

[SOLVED]

Hi there,

I finally found the problem !!

I was exeeding the max vel possible due to the kv of the motor.
this lead to the breaking problem

I was requesting 200 rev / sec but the motor can only do 72 with its
grafik

with max vel of 65
odrv0.axis0.trap_traj.config.vel_limit = 65
odrv0.axis0.trap_traj.config.accel_limit = 500
odrv0.axis0.trap_traj.config.decel_limit = 500

it works fine and looks like this

1 Like

Picoscope. Fancy.