Hover board Hub motor less torque than expected

Hello Friends.

I hope someone can help me. I can’t get the torque it should have.

I’m doing some tests trying to have a god torque control from odrive. In my tests I’m using a Odrive 3.6 56V and a incremental encoder. I did the process described at hoverboard guide, change the encoder parameter to incremental and the cpr of course. You can find the process below.

odrv0.axis0.motor.config.pole_pairs = 15
odrv0.axis0.motor.config.resistance_calib_max_voltage = 4
odrv0.axis0.motor.config.requested_current_range = 25
odrv0.axis0.motor.config.current_lim = 20
odrv0.axis0.motor.config.current_control_bandwidth = 100
odrv0.axis0.motor.config.torque_constant = 8.27 / 16 #hoverboard KV
odrv0.axis0.encoder.config.mode = ENCODER_MODE_INCREMENTAL
odrv0.axis0.encoder.config.cpr = 2400
odrv0.axis0.encoder.config.bandwidth = 100
odrv0.axis0.controller.config.pos_gain = 0
odrv0.axis0.controller.config.vel_gain = 0
odrv0.axis0.controller.config.vel_integrator_gain = 0
odrv0.axis0.controller.config.vel_limit = 10
odrv0.axis0.controller.config.control_mode = CONTROL_MODE_TORQUE_CONTROL

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
odrv0.axis0.controller.input_torque = 1

You can see my setup and data in the link below. It is a spreadsheet.

The graphic below show the result of the tests I made.

The problem is that even if the drive delivers a lot of current, the final torque doesn’t pass 1.5 Nm when it should reach 10 Nm. If I switch to speed control mode, the control works well too, but still with very low torque.
Could this be a problem of the encoder type?

I hope somebody can help me.

Yes it sounds like it.

Are you certain that the encoder is exactly 2400cpr?
Why did you need to reduce the encoder and current controller bandwidth? I’d leave those at default unless you have a special reason to change them.

Requested current range is only applied on boot. If you want to change it, you should save config and reboot immediately. I don’t think it’s a good idea to use the 25A range if you need 20A, you would be nearing saturation of the current sensor.

Also see this thread:

Also, i think your pos_gain and vel_gain should be non-zero.

pos and vel gains shouldn’t matter for torque control though.

Don’t you need them for the speed control mode? But i agree, sounds like something with the encoder, and those control bandwidths are strange.

If you’re using an incremental encoder, your encoder bandwidth should be ~ 1000 not 100. Current control bandwidth can stay 100, but you can experiment with changing that also.

Thanks for responding.

Are you certain that the encoder is exactly 2400cpr?”:
R: I did some tests here, the encoder and reduction ratio seems to ok. No problems about this.

I changed the parameters, as you suggested.

odrv0.axis0.motor.config.current_lim = 12 # I’m not very confident about this value, but as the motor is 350W and receives a voltage of 36V, so I suppose we shouldn’t go much beyond 10A. The strange thing is that te current I measure on the input of odrive is much lower than the Iq_measured. Can someone explain to me the diference of this parameters? And which value should I use?

  • current_lim
  • current_lim_margin
  • requested_current_range

odrv0.axis0.encoder.config.bandwidth = 1000

Nothing changed until now. If anyone have a suggestion I will be very happy to test.

Another thing I didn’t told is I’m having the same problem when I used Hall sensor. this makes me think that it is not a sleeping problem.

That’s to be expected. The voltage required to push 12A through the winding resistance of a stopped motor is much lower than your supply voltage. e.g. at 0.1 Ohm it would be 1.2V and you would draw 14.5W from the power supply. As you raise the power supply voltage, the current required for 14.5W goes down.

Hello Towen. Sorry about this question. I think I’m missing something here. I understudy Ohm Low, but how do I find the 250W the manufacturer presents. what is the math?