Hi, iam trying to use the ODrive with a Maxon 651607 (250Kv) and already tried following your suggestions as mentioned here but i am still unable to control the motor as i always get the ERROR_PHASE_RESISTANCE_OUT_OF_RANGE (the wiring is correct since I had no problem controlling the motor before I re-installed the drivers - see this post for the issue that caused this). Python gives me a phase resistance of 0.0. I measure the resistance between the phases at around 0.5-1 Ohm. Currently I supply the oDrive with 24V and current limited to 2.5A. I tried with MOTOR_TYPE_GIMBAL but the measured phase resistance is still 0.0.
I did a full reset of the ODrive but that didn’t help so I also played around with the resistance_calib_max_voltage and the calibration_current to make sure the two equations mention here are met but that did not change anything:
resistance_calib_max_voltage > calibration_current * phase_resistance
resistance_calib_max_voltage < 0.5 * vbus_voltage
I would appreciate any help
What values of
calibration_current did you try?
Thanks for the quick reply!
calibration_current = 2
resistance_calib_max_voltage = 6
Those values should work for that motor. I would suggest you double check your wiring to the motor. An easy mistake to make is to clamp the wire insulation in the screw terminal.
The cables have ferrules crimped on the end and I checked the resistance on the terminal block as well as directly across the motor. I don’t see how it could be the connection.
Are you sure that you are calling the correct axis? People, myself included, often mix them up and that results in this error.
As far as I can tell I am. I have attached my setup, maybe that helps.
EDIT: I just realised I misstated the Kv rating in the initial post, it is 125 Kv
You didn’t calibrate the motor between changing settings?
odrv0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION. That’s where it measures the phase_resistance. It’ll just read 0.0 otherwise
I’d like to do that but now the Odrive has stopped responding (I haven’t touched it since I took that screenshot yesterday and removed the power). Windows still recognises a connection (windows sound) but there is no sign of the Odrive in the Device Manager, neither in run nor in forced DFU mode. I have tried different cables but same result.
If you open the Zadig tool, you can select list all devices. Is it listed there? If it is, check that libsub is selected as the default driver. If it isn’t listed, do you have an ST-Link v2? That will connect even if the USB is broken.
Thanks for the foto, it helps clarify your setup. Can you show us the rest of your setup?
This is really odd. As I was checking the drivers the Odrive showed up in the Odrivetool again. All interfaces, bootloader, native interface and CDC interface run on the libusb0 driver which means windows seems to install new drivers for the Odrive since I have had to re-install the libusb-win32 driver for the native interface multiple times now. It seems to work with the libusb0 driver installed on the native interface right now but the “Getting Started Guide” suggests that the libusb-win32 should be installed for the native interface. Should I leave it or reinstall the libusb-win32 driver?
The rest of the setup consists of a 50W 2Ohm brake resistor and an AMT102-V encoder connected to the motorshaft. There are other electronics on that picture but I have disconnected the microcontroller in order to rule out issues inovked by that. There is nothing else connected. (It will hopefully form the basis for a Cubli as developed by the ETH Zürich)
@Wetmelon Here is the above procedure with the libusb0 driver on the native interface and calibration commands to update the resistance values. (Note: The motor does not move when the calibration state was requested)
I have since further tried to re-install the libusb-win32 driver however zadig keeps showing the driver as libusb0
The native interface should be libusb, so that’s correct. Pretty sure libusb-win32, once installed, is reported as libusb0, so it’s working fine.
Ah thats fine then. That then still leaves the original problem though. No resistance measurement even when calibration is called.
I really don’t know what else to try. I even tried a different motor and it gives the same result.
When you use dump_errors(odrv0), do you get a PHASE_RESISTANCE error or something else?
I get the following error(s)
Have you tried increasing the max voltage to say 10 volts?
Yes I have. There seems to be no difference
Please email email@example.com with an explanation of the problem and a link to this thread. I fear you may have a dud.
I e-mailed firstname.lastname@example.org and they were very nice and sent me a new board. I received the board a couple of days ago and have since confirmed that it works just like expected.
The cause for the original fault is still unknown and I am happy to sacrifice the other one for autopsy if you want any specific components tested (I have a reflow station so can test off board if need be) to figure out what this strange behavior was about.
Thanks everyone for your help!