Motors slightly moving while they shouldnt - 56V 3.6 D5065 270KV 8192 CPR

Hello all,

I’m Lucas and this is my first post here on the forum. I am still quite new to the topic and have a problem with my setup:

Odrive board 56V 3.6
2x D5065 270KV motors
2x 8192 CPR Encoder
CISCO server power supply with 42V / 17A

I need to use the motors to move a minimum load about 100g up and down as fast as I can on a about 50cm long vertically hung linear guide. The motors are connected to the carriage with toothed belts and toothed belt pulleys.

The board is currently controlled by an Arduino.

I have the problem that the motors make slight movements from time to time, the slides move up and down a few millimeters. Especially after a completed movement they move for a while before they more or less stop.

I have tried different settings. The problem also occurs when I just have the motors with the encoders on the ODrive board, so no connection to the Arduino and nothing but the encoders attached to the motor.

Unfortunately I can’t use the Liveplotter on my Mac, there are always error messages.

Is it a setting error? Or a connection? What would be the perfect settings for high speed and low load? Did I miss something? Could it be any other reason? Is the error known?

Attached the content of the backup of my config file.

Would be great if someone could give me a hint.

Thanks a lot in advance.

Best regards
Lucas

Config File:

{“config”: {“brake_resistance”: 2.0, “enable_uart”: true, “enable_i2c_instead_of_can”: false, “enable_ascii_protocol_on_usb”: true, “dc_bus_undervoltage_trip_level”: 8.0, “dc_bus_overvoltage_trip_level”: 59.92000198364258}, “axis0”: {“config”: {“startup_motor_calibration”: false, “startup_encoder_index_search”: false, “startup_encoder_offset_calibration”: true, “startup_closed_loop_control”: true, “startup_sensorless_control”: false, “enable_step_dir”: false, “counts_per_step”: 2.0, “watchdog_timeout”: 0.0, “step_gpio_pin”: 1, “dir_gpio_pin”: 2}, “motor”: {“config”: {“pre_calibrated”: true, “pole_pairs”: 7, “calibration_current”: 10.0, “resistance_calib_max_voltage”: 2.0, “phase_inductance”: 1.5775220163050108e-05, “phase_resistance”: 0.043368615210056305, “direction”: -1, “motor_type”: 0, “current_lim”: 30.0, “current_lim_tolerance”: 1.25, “inverter_temp_limit_lower”: 100.0, “inverter_temp_limit_upper”: 120.0, “requested_current_range”: 60.0, “current_control_bandwidth”: 1000.0}}, “controller”: {“config”: {“control_mode”: 3, “pos_gain”: 20.0, “vel_gain”: 0.0005000000237487257, “vel_integrator_gain”: 0.0010000000474974513, “vel_limit”: 100000.0, “vel_limit_tolerance”: 1.2000000476837158, “vel_ramp_rate”: 10000.0, “setpoints_in_cpr”: false}}, “encoder”: {“config”: {“mode”: 0, “use_index”: false, “find_idx_on_lockin_only”: false, “pre_calibrated”: false, “zero_count_on_find_idx”: true, “cpr”: 8192, “offset”: -4931, “offset_float”: 0.11415624618530273, “enable_phase_interpolation”: true, “bandwidth”: 1000.0, “calib_range”: 0.019999999552965164, “calib_scan_distance”: 50.26548385620117, “calib_scan_omega”: 12.566370964050293, “idx_search_unidirectional”: false, “ignore_illegal_hall_state”: false}}, “sensorless_estimator”: {“config”: {“observer_gain”: 1000.0, “pll_bandwidth”: 1000.0, “pm_flux_linkage”: 0.0015800000401213765}}, “trap_traj”: {“config”: {“vel_limit”: 20000.0, “accel_limit”: 5000.0, “decel_limit”: 5000.0, “A_per_css”: 0.0}}}, “axis1”: {“config”: {“startup_motor_calibration”: false, “startup_encoder_index_search”: false, “startup_encoder_offset_calibration”: true, “startup_closed_loop_control”: true, “startup_sensorless_control”: false, “enable_step_dir”: false, “counts_per_step”: 2.0, “watchdog_timeout”: 0.0, “step_gpio_pin”: 7, “dir_gpio_pin”: 8}, “motor”: {“config”: {“pre_calibrated”: true, “pole_pairs”: 7, “calibration_current”: 10.0, “resistance_calib_max_voltage”: 2.0, “phase_inductance”: 1.5142390111577697e-05, “phase_resistance”: 0.04892570897936821, “direction”: 1, “motor_type”: 0, “current_lim”: 30.0, “current_lim_tolerance”: 1.25, “inverter_temp_limit_lower”: 100.0, “inverter_temp_limit_upper”: 120.0, “requested_current_range”: 60.0, “current_control_bandwidth”: 1000.0}}, “controller”: {“config”: {“control_mode”: 3, “pos_gain”: 20.0, “vel_gain”: 0.0005000000237487257, “vel_integrator_gain”: 0.0010000000474974513, “vel_limit”: 100000.0, “vel_limit_tolerance”: 1.2000000476837158, “vel_ramp_rate”: 10000.0, “setpoints_in_cpr”: false}}, “encoder”: {“config”: {“mode”: 0, “use_index”: false, “find_idx_on_lockin_only”: false, “pre_calibrated”: false, “zero_count_on_find_idx”: true, “cpr”: 8192, “offset”: 4833, “offset_float”: 1.1049063205718994, “enable_phase_interpolation”: true, “bandwidth”: 1000.0, “calib_range”: 0.019999999552965164, “calib_scan_distance”: 50.26548385620117, “calib_scan_omega”: 12.566370964050293, “idx_search_unidirectional”: false, “ignore_illegal_hall_state”: false}}, “sensorless_estimator”: {“config”: {“observer_gain”: 1000.0, “pll_bandwidth”: 1000.0, “pm_flux_linkage”: 0.0015800000401213765}}, “trap_traj”: {“config”: {“vel_limit”: 20000.0, “accel_limit”: 5000.0, “decel_limit”: 5000.0, “A_per_css”: 0.0}}}}

Hey guys. Does anyone use this setup without any glitch/errors and could send me her/his configfile or give me a hint whats wrong with my configuration?

I would be super thankful :pray:

Just sounds like a tuning issue. The motors have a fair amount of cogging, maybe you’re seeing that? I would get the GUI working to inspect it.

Hi Wetmelon,

thanks a lot for your reply. Ok. I will try setting up Linux on some old computer these days to be able to use liveplotter. But what exactly should I look for and how could I solve the issue then? Well I will see if I can figure it out on my own or otherwise maybe post some screenshots hoping somebody could give me a hint

Thanks again :slight_smile:

Not the liveplotter, the GUI (do a forum search) works on everything.

Have you checked the tuning guide? Control | ODrive