Please help me.
Environment :
Motor: RS PRO 536-6030
Encoder: AS5601
ODrive: 24V odrive 3.6v
I have set the maximum speed of the motor as follows
odrv0.axis0.controller.config.vel_limit = 50
Position control of the motor has been performed.
odrv0.axis0.controller.input_pos = 0
odrv0.axis0.controller.input_pos = 100
However, the motor only moves very slowly.
I monitored the speed with liveplotter. The maximum speed was only 8 [turns per second].
The performance of the motor seems to be good enough at 4000 rpm.
I tried with other motors, encoders, and ODrive, but the same thing happened.
Ok and you have it set for 8 pole_pairs and appropriate encoder .cpr? Did you set the current_limit? Are you using INPUT_MODE_PASSTHROUGH?
What voltage are you giving the odrive?
Thank you kindly ! ! !
Now I checked these setting.
pole pairs => 4 # The data sheet says the motor has 8 poles, so I entered half that value.
encoder cpr => 64 # I wrote the value as described in the encoder's support page.
current_lim => 20
input_mode => 1 # INPUT_MODE_PASSTHROUGH
Supply voltage => 21.19 [V]
So, Now I run this command,
odrv0.erase_configuration()
And, set the configs
odrv0.axis0.controller.config.vel_limit = 20
odrv0.axis0.motor.config.current_lim = 20
odrv0.axis0.encoder.config.cpr = 64 # I wrote the value as described in the encoder's support page.
odrv0.axis0.motor.config.pole_pairs = 4 # The data sheet says the motor has 8 poles, so I entered half that value.
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_HIGH_CURRENT
odrv0.axis0.motor.config.torque_constant = 8.27 / 4000 * 24
odrv0.config.enable_brake_resistor = True
odrv0.axis0.controller.config.pos_gain = 20
odrv0.axis0.controller.config.vel_gain = 0.0016
odrv0.axis0.controller.config.vel_integrator_gain = 0
Then, I save, calibrate, and set the loop control.
odrv0.save_configuration()
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
dump_errors(odrv0)
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
dump_errors(odrv0)
There is no error.
These appear to have worked, so I used the position command to rotate the motor.
odrv0.axis0.controller.input_pos = 50
However, the speed seemed slow. So, I used liveplotter to display the speed.
start_liveplotter(lambda:[odrv0.axis0.encoder.vel_estimate])
The value was roughly 7.8.
What should I try next?
Why did you do this? That will probably cause it to run really poorly. You need to increase the vel_gain and make the integrator gain non-zero…
Hi
I have the same problem with my 6374 motor, I’m using trajectory input mode but the maximum speed during coasting is 464 rpm(7.7 r/s).
odrv0.axis0.trap_traj.config.vel_limit = 15
odrv0.axis0.trap_traj.config.accel_limit = 2
odrv0.axis0.trap_traj.config.decel_limit = 2
odrv0.axis0.motor.config.torque_constant = 8.27 / 170
odrv0.axis0.controller.config.vel_limit = 20
odrv0.axis0.controller.config.pos_gain = 20
odrv0.axis0.controller.config.vel_gain = 0.3
odrv0.axis0.controller.config.vel_integrator_gain = 0.4
Power supply is 24V 10A
odrv0.axis0.motor.config.current_lim = 10