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!
Here is my controller config: