Hello! I am having a bit of trouble doing the charaterization of a motor (D6374) in order to determine its aproximate inertia and torque constant. For the procedure, I have to request that the driver places a specific amount of current onto the motor and then write down its settling speed. The issue that I am having is that it appears as if the current is not placed at the correct values that I require and the acceleration never reaches zero, i.e., the motor speeds up either untill it reaches its speed limit or when it exceeds the limit for the DC Bus voltage.
Here are some of my configs:
controller.config
anticogging:
anticogging_enabled: True (bool)
calib_anticogging: False (bool)
calib_pos_threshold: 1.0 (float)
calib_vel_threshold: 1.0 (float)
cogging_ratio: 1.0 (float)
index: 0 (uint32)
pre_calibrated: False (bool)
axis_to_mirror: 255 (uint8)
circular_setpoint_range: 1.0 (float)
circular_setpoints: False (bool)
control_mode: 1 (uint8)
electrical_power_bandwidth: 20.0 (float)
enable_gain_scheduling: False (bool)
enable_overspeed_error: True (bool)
enable_torque_mode_vel_limit: True (bool)
enable_vel_limit: True (bool)
gain_scheduling_width: 10.0 (float)
homing_speed: 0.25 (float)
inertia: 0.0 (float)
input_filter_bandwidth: 2.0 (float)
input_mode: 1 (uint8)
load_encoder_axis: 1 (uint8)
mechanical_power_bandwidth: 20.0 (float)
mirror_ratio: 1.0 (float)
pos_gain: 20.0 (float)
spinout_electrical_power_threshold: 10.0 (float)
spinout_mechanical_power_threshold: -10.0 (float)
steps_per_circular_range: 1024 (int32)
torque_mirror_ratio: 0.0 (float)
torque_ramp_rate: 0.009999999776482582 (float)
vel_gain: 0.5 (float)
vel_integrator_gain: 0.0 (float)
vel_integrator_limit: inf (float)
vel_limit: 50.0 (float)
vel_limit_tolerance: 35.0 (float)
vel_ramp_rate: 1.0 (float)
motor.config
I_bus_hard_max: inf (float)
I_bus_hard_min: -inf (float)
I_leak_max: 0.10000000149011612 (float)
R_wL_FF_enable: False (bool)
acim_autoflux_attack_gain: 10.0 (float)
acim_autoflux_decay_gain: 1.0 (float)
acim_autoflux_enable: False (bool)
acim_autoflux_min_Id: 10.0 (float)
acim_gain_min_flux: 10.0 (float)
bEMF_FF_enable: False (bool)
calibration_current: 20.0 (float)
current_control_bandwidth: 2000.0 (float)
current_lim: 60.0 (float)
current_lim_margin: 8.0 (float)
dc_calib_tau: 0.20000000298023224 (float)
inverter_temp_limit_lower: 100.0 (float)
inverter_temp_limit_upper: 120.0 (float)
motor_type: 0 (uint8)
phase_inductance: 2.1585083231911995e-05 (float)
phase_resistance: 0.041853055357933044 (float)
pole_pairs: 7 (int32)
pre_calibrated: True (bool)
requested_current_range: 60.0 (float)
resistance_calib_max_voltage: 2.0 (float)
torque_constant: 0.055133331567049026 (float)
torque_lim: inf (float)
encoder.config
abs_spi_cs_gpio_pin: 1 (uint16)
bandwidth: 3000.0 (float)
calib_range: 0.019999999552965164 (float)
calib_scan_distance: 50.26548385620117 (float)
calib_scan_omega: 12.566370964050293 (float)
cpr: 400 (int32)
direction: 1 (int32)
enable_phase_interpolation: True (bool)
find_idx_on_lockin_only: False (bool)
hall_polarity: 0 (uint8)
hall_polarity_calibrated: False (bool)
ignore_illegal_hall_state: False (bool)
index_offset: 0.0 (float)
mode: 0 (uint16)
phase_offset: 224 (int32)
phase_offset_float: 1.0104387998580933 (float)
pre_calibrated: False (bool)
sincos_gpio_pin_cos: 4 (uint16)
sincos_gpio_pin_sin: 3 (uint16)
use_index: False (bool)
use_index_offset: True (bool)
In order to set the current I am simply using input_torque = 0.055 * current
.
In the following example, I am plotting the measured (blue) and setpoint (orange) currents.This data was obtained after sending the command input_torque = 0.055 * 3
If I understand correctly, the controller is limiting the setpoint current in order to not exceed the speed limit. But in this case, the speed will not settle on the values that I actually require. Furthermore, if I happend to increase the speed limit, the DC Voltage is exceeded.
Is there a specific manner to set the current in order to not exceed the speed limit but at the same time guarantee it reaches it maximim speed? Are there any resources where I could find more technical information regarding this specific motor?