No Holding Torque, Input Errors, and MicroStepping Doesn't Work


#1
  1. We’ve been playing the current flow to each motor and no matter what we do, there seems to be absolutely no holding torque. We had a motor hooked up with NO LOAD, and when we tried to move it, it moved without any trouble whatsoever.

  2. Another issue we are facing is that some motors don’t run when you hold a joystick on the controller. They only move if you repeatedly tap the joysticks in a direction. We have switched the motor wires to a terminal that is normally powering a motor that DOES move smoothly while the joystick is held in one direction, and when we do so, the new motor also works if you hold the joystick in a direction. Basically, some terminals allow the motors to be operated by holding the controller’s joysticks in one direction, while other terminals will only allow a motor to be operated if you repeatedly tap the joystick in a direction.

  3. Also, our microstepping seems to not be working or isn’t working how the creators intended. The default number of microsteps in the code is 16. Meaning that rather than the motor going 1.8 degrees per step, it goes a 16th of that. We kept lowering the number of microsteps and finally we got to 1 microstep (which effectively means no microstepping since 1.8 / 1 = 1.8). This finally made the movement of a motor smooth. If we increase this number(by whole numbers), the movement becomes jittery again.

Has anyone experienced any of these issues?


#2

Hi Ronnie,

What SlushEngine, stepper motors, RPi, power supply voltage and amps are you using? And do you have any coding, so that I can see the parameters you have specified.

Thanks.


#3

Slush Engine Model: D 7 Axis Stepper Drive

Motors:
2 Nema 23 Motor 2.8A
1 Nema 17 Motor 2A
1 Nema 17 Motor 1.7A
1 Nema 17 Motor 1.7A 1:5 Gear Box
1 Nema 14 Motor 0.8A
1 Nema 14 Motor 0.45A
1 MG996R High Torque Servo Motor

Power Supply: 24V 10A (came with the kit)

Raspberry Pi 3 Model B+

Code:
from inputs import get_gamepad
import RPi.GPIO as GPIO
import Slush
import math
import time

#setup all of the axis for the SlushEngine
b = Slush.sBoard()
joints = [Slush.Motor(0), Slush.Motor(1), Slush.Motor(2), Slush.Motor(3), Slush.Motor(4), Slush.Motor(5)]

#reset the joints to clear previous errors
for joint in joints:
joint.resetDev()
joint.setMicroSteps(16) // As stated in the original post, we had to change the number of
microsteps from 16 to 1 just to get a motor to run smoothly.

#some initalization stuff that needs cleanup
joints[0].setMaxSpeed(150)
joints[1].setMaxSpeed(150)
joints[2].setMaxSpeed(250) // We’ve been changing these values to see if we’d get
joints[3].setMaxSpeed(150) various results. We have indeed noticed some changes
joints[4].setMaxSpeed(150) with the performance of the motor we tested it on.
joints[5].setMaxSpeed(150)

#joint current limits. Still setting manually because testing (hold A, run A, acc A, dec, A)
joints[0].setCurrent(65, 85, 75, 70)
joints[1].setCurrent(65, 85, 85, 65)
joints[2].setCurrent(50, 50, 50, 50) //We’ve been changing the values of each of these
joints[3].setCurrent(75, 75, 75, 75) //4 numbers in the hopes that it would yield various
joints[4].setCurrent(85, 85, 85, 85) //results. We set the Hold Current to it’s max value, which
joints[5].setCurrent(65,65, 65, 65) is listed as 200, and the motors moved with a simple
hand turn.


#4

Hi Ronnie,

One thing I noticed is that the value of the overcurrent would trigger the OCD protection and make some of the motors completely unable to hold torque.

If you try joint[?].setOverCurrent(9999) , do you get any different result with the torque? I’d then reduce the number by 375 at a time until you fin a value that does not trigger this. I also wouldn’t recommend using a value of 9999 in a production system as it could fry the chips.

Admittedly, while the max value is 200, I haven’t had to set any of the motors over 100 for them to run. (and they tend to run hot)

Let me know if it helps.


#5

We actually did some evaluation on some of the electrical components( motors, Slush, Pi, etc.) and during these tests found that the power supply that was sent wasn’t functioning properly. Should have been holding around 24V DC but with just 1 motor in the multimeter was showing us that the voltage was fluctuating from 16-20V DC. We switched the power supply with another 24V DC at 10 Amps and saw that there was a stable voltage being shown( 23.9 V DC).

Switching the defective power supply with a new, working one seemed to solve issues 1 and 2 stated in the original post. I’ll definitely see if you recommendation with the overcurrent helps with anything as well, but for the most part I believe the issue has been solved.

If anything else pops up or the issues turn out to not be solved, I’ll be back.