Please HELP for troubleshooting the behavior of Maxon motor system

Dear All,

Our project is to use PID control to create a friction-less mode with our test rig. The picture of test rig is attached here.

This test rig includes:

  • A maxon motor system ( 200w maxon EC-4pole motor,

  • a planetary gearhear GP 32C, 51:1 gear reduction ratio

  • and a MR type incremental encoder with 500 CPT).

  • Motor driver board: Maxon ESCON Module 50/5.

  • Teensy 3.2 development board to implement PID control to the motor system for frictionless mode using torque reading from torque sensor

  • A external gear transmission system with a combined gear reduction ratio 4:1.

  • Anglient power supply to supply 22v volts for the motor.

  • An aluminum bar and a reaction torque sensor TRT500 are connected to the driven gear of the external gear transmission.

In the ESCON module, we mapped the operating voltage (0-3.3V) used in Teensy to +-4 amp current. We use this map to control the output torque of motor which is based on the current. The PID control algorithm we implemented is coming from this link.Arduino Playground - HomePage

The friction-less mode works fine when my hands just push the aluminum bar at a moderate speed back and forth. But if my hand exerts more force on the bar and pushes the bar at a faster speed to test our friction-less mode, the Arduino code for PID control would not be running and the frictional-less mode would not be able to be applied to the motor system. As a result, the aluminum just suddenly swings towards a direction itself. We are not sure if it has to do with the level of current drawn to the motor system to cope with the increased torque and speed exerted by my hand to the aluminum bar. Does this have to do with some brownout effect of my power supply?

The PID controller code is implemented in the while loop. The while loop condition is set as when there is NO serial data sent in.

while (!Serial.available()) {
//Serial.println("do pid stuff");
PID_torq_controller(); //##this function needs to be verified
if (millis() - timer_09_13_check > 100) {
Serial.print(Output_torq); Serial.print("\t"); Serial.print(motor_angle); Serial.print("\t"); Serial.print(Vol); //##
Serial.print("\t"); Serial.println(millis() - timer_09_13_check);
// Serial.println(actual_torq);
timer_09_13_check = millis();
}

Thank you so much.

Ji

Update. I read again the manual of the motor drive board ESCON 50/5 module. It has a built-in motor choke 3X30 uH; 5A. Page 2-7 in this link https://www.maxonmotorusa.com/medias/sys_master/8810873815070/409510-ESCON-50-5-Hardware-Reference-En.pdf

Do you guys think it has something to do that?

@33chen I am having a the same problem with my Maxon 36/3 controller? did you get your solved. Would be really helpful if you have a work around.