Motor spins with the VEL_LIMIT, but does not respond to inputs

Hey everyone,
I am currently starting my first projects with ODrive and I have encountered a problem with an ODrive 3.6 56V and a Wheatstone 130WD-M10010-48V (130Series brushless DC motor - Jiangsu Wheatstone Electrical Technology Co.,Ltd.). There is also an AMT encoder attached.

I use the motor in control mode “velocity mode” and the input mode is “vel ramp”. I wrote a Python script to control the motor and a similar script is already working perfectly for another motor (ODrive D6374 150KV), but now it has some strange behaviour on this larger motor.
The motor and encoder were successfully calibrated, so I only have to do an Index Search at every startup. This works fine and I can enter the Closed Loop control without any errors.
However, after assigning my first input via “input_vel”, the motor ignores my input and instead starts with the value of odrv0.axis0.controller.config.vel_limit, that I set in the configuration of the ODrive. (It also ignores the velocity ramp, it immediately starts with the maximum allowed RPM).
In this state, I cannot enter any commands except requesting a new state like AXIS_STATE_IDLE or FULL_CALIBRATION_SEQUENCE. Then, the motor stops, contains Error codes and I have to manually restart everyting. This is certainly not the preferred solution and will be even dangerous, once the motor is attached to an actual load.

The interesting part is, that dump_errors() gives me no errors (until I request the wrong state). I can still read every value using the odrivetool and assign new values, which are stored and shown in odrivetool, but the motor does not accept any of these inputs.

This problem does not occur every time at startup!
I would guess, that in 2 out of 3 cases, it works perfectly fine, but in this third case it just spins very fast and uncontrollably, which is a major risk for my application. The unpredictability of this error irritates me heavily.

Has someone already encountered such a problem or any idea, how to solve this?
It would help me a lot! :slight_smile:

Here is my controller config:

And for reference, the relevant part of my script:

Bad index search (either during calibration or after restart) can easily cause this behaviour. Did you add the 22nF cap to the index pin?

I had not added it before, but now I soldered a 22nF ceramic capacitor between Z and GND and the problem still remains. :confused:

Thank you for your answer and help though :+1:

1 Like

I think I solved the problem now. After adding the capacitor, I had to do a FULL_CALIBRATION_SEQUENCE again and also changed a few lines of code in my script, so that the VEL_LIMIT is set to a very low value for every startup procedure and gets increased only afterwards step by step.

This results in a (currently) pretty reliable and well working system. :grinning: :+1: