Getting started - Motor error 64


Just got started with my ODrive but I cant get any movement out of my motors. I’ll start with my setup:

  • Odrive 56V v3.6 with included brake resistor attached
  • Meanwell 48V-10A power suppy
  • Tamagawa tbl-t 3273N126E21 BLDC motor with
  • 8192 CPR Encoder (It had an absolute encoder but I accidentally broke the glass disk inside… )

The motors are salvaged but should work. The weird thing I noticed is that both resistance and inductance return 0. If I measure myself (multimeter) I get 9,4 Ohm between all three coils.
In [5]: odrv0.axis0.motor.config.phase_resistance
Out[5]: 0.0

In [6]: odrv0.axis0.motor.config.phase_inductance
Out[6]: 0.0

Voltage is correctly detected:
In [2]: odrv0.vbus_voltage
Out[2]: 48.03530502319336

As for the motors I can’t find any more specific information other then what is printed on it:
Brushless DC motor
3000 rpm
2, torque (3,9 for the second motor but I will try this one later)

I’ve tried checking for errors but get the following back.
In [7]: odrv0.axis0.error
Out[7]: 64
I could not find any error code 64 to continue with so I came here for some advice/help.

My intend is to use the ODrive for the X and Y axis for my CNC router.


Try dump_errors(odrv0)

Hello Riewert, thanks for the response. I’ve tried the dump, at first it looked fine:
In [3]: dump_errors(odrv0)
axis: no error
motor: no error
encoder: no error
controller: no error

Second time I got this:
axis: Error(s):
motor: Error(s):
encoder: no error
controller: no error

I continued with the “ERROR_PHASE_RESISTANCE_OUT_OF_RANGE” error.
I found that the resistance of my coils is quite high for the odrive (9,4 Ohms) but I’ve tried to follow the rules:

resistance_calib_max_voltage > calibration_current * phase_resistance
resistance_calib_max_voltage < 0.5 * vbus_voltage

I’ve been testing some values and twice I could hear the motor whine breefly. My guess is that I dont have enough starting torque. I spend quite some time to hear it the second time.

As I don’t have any details about the motor it could also be that I’m mistaken with the pole pairs. If I rotate the motor by hand it snaps in place on 12 positions so my guess was 4 pole pairs.

I’ll continue my trials but all help is welcome ^^.

9.4 ohms is REALLY high. Try this:

motor.config.requested_current_range = 5
motor.config.current_lim = 5
motor.config.resistance_calib_max_voltage = 20
motor.config.calibration_current = 1.5

Hey Wetmelon, I’ve tried your set values and got the same result. I did in the process found out why I could only make it beep twice. I needed to flush the errors before I could restarting the calibration sequence. Now I consistently hear the beep when I run it. Staring to know how this odrive works I guess ^^.

However I did found this post Gimbal motors: Inductance out of range where they use gimbal motors in the same resistance range as my motor is. I’m a bit hesitant to trying the MOTOR_TYPE_GIMBAL as I don’t know what values I need to set for “voltage limit” and “calibration voltage” (“current_lim” and “calibration_current”).

Edit: Ok so the motor does move during the calibration, I did not see it moving the first time and did not put it in an other position afterwards. I does already seem to have a fair bit of torque (fan of the PSU also kicks in ^^). So as for now the issue seems to be that I can’t continue because the calibration sequence still returns ERROR_PHASE_INDUCTANCE_OUT_OF_RANGE.

Eventually I tested the motor as MOTOR_TYPE_GIMBAL. In this post Is gimbal mode like stepper motor control? I found quite a good explanation and the motor specs seemed to fit mine even tough mine is not a gimbal motor. After playing with the voltage lim and calibration voltage I got the motor to work. It seems I can push the motor quite far but it started vibrating quite heavily when I set
odrv0.axis0.motor.config.current_lim = 2. At 3 it moves too aggressive and get some errors. I pushed it back to 1 and all seems quite fine.

If it could be of any help to someone, these are my current setting:
odrv0.axis0.motor.config.requested_current_range = 5
odrv0.axis0.motor.config.current_lim = 1
odrv0.axis0.motor.config.resistance_calib_max_voltage = 20
odrv0.axis0.motor.config.calibration_current = 2

odrv0.config.brake_resistance = 2
odrv0.axis0.motor.config.pole_pairs = 2
odrv0.axis0.motor.config.motor_type = MOTOR_TYPE_GIMBAL
odrv0.axis0.encoder.config.cpr = 8192

It also seemed my pole pairs was not set correctly. The motor locks in place on 12 spots but it seemed 2 pole pairs did the trick. It did not seem logic to me but it works ^^.

I’ll continue playing around and mounting it on my machine, I’ll post any interesting things I notice.
And thanks for the help here on getting me started.