microstepping and torque

ey!

I am driving a nema 17 like stepper (42BYGH34-0400A) with a dvr8825 driver and an arduino. I am using the stepper to spin an acrylic disc (70cm diameter, 3mm thick) vertically. For this, I glued the flange coupler directly to the acrylic disc, and I attached the stepper to a metal structure. (see pictures)

My idea is to spin the disc as slow as possible, and to try to hide the steps as much as possible as well, and for this porpoise, I set the driver to work at 1/32 steps. It works pretty decently, but sometimes the stepper doesn’t have enough torque, so I decided to try the system with lower microstepping, like 1/16, but before this, I wanted to test the system again in full steps. The result, the stepper wouldn’t move the disc at all.

Of course I have been playing around with the potentiometer of the dvr8825 to provide just the right current, but regardless this, the stepper wouldn’t spin the disc at full steps. Like if somehow the stepper would have less torque in full steps than in 1/32 steps.

I am a bit puzzled.

I now unmounted the flange coupler and the stepper to test it without a load, and the stepper turns of course at full steps, but as soon as it has load wont spin anymore… and I was actually going back to full steps in order to have more torque…

ideas? suggestions? reflexions?

CODE FULL STEPS

const int M10 = 22; 
const int M11 = 24;
const int M12 = 26;

const int stepPin1 = 28; 
const int dirPin1 = 30; 

int velocidad = 20;

#include <AccelStepper.h>

AccelStepper stepper1(AccelStepper::DRIVER, stepPin1, dirPin1);

void setup() {
  pinMode(M10,OUTPUT);
  pinMode(M11,OUTPUT);
  pinMode(M12,OUTPUT); 
  
  digitalWrite(M10,LOW); 
  digitalWrite(M11,LOW);  
  digitalWrite(M12,LOW); 
  
  stepper1.setMaxSpeed(velocidad);
  stepper1.setSpeed(velocidad);	
}

void loop() {  
  stepper1.runSpeed();
}

CODE 1/32 STEPS

const int M10 = 22; 
const int M11 = 24;
const int M12 = 26;

const int stepPin1 = 28; 
const int dirPin1 = 30; 

int velocidad = 20;

#include <AccelStepper.h>

AccelStepper stepper1(AccelStepper::DRIVER, stepPin1, dirPin1);

void setup() {
  pinMode(M10,OUTPUT);
  pinMode(M11,OUTPUT);
  pinMode(M12,OUTPUT); 

  digitalWrite(M10,HIGH); 
  digitalWrite(M11,HIGH); 
  digitalWrite(M12,HIGH); 
     
  stepper1.setMaxSpeed(velocidad);
  stepper1.setSpeed(velocidad);
}

void loop() {  
  stepper1.runSpeed();
}

47219462_350411288878254_6484824730565083136_n.jpg

47231394_264479597759694_4165857508180623360_n.jpg

Your symptions may point to using too low of a voltage on the motor/controller.

Paul

Aha. I havent thought of this.

dvr8825 requires a motor supply voltage of 8.2 – 45 V. I am currently using a 12V 3A power supply.

I have just tried a 24V 15A power supply. It seems it responds a bit better now, but still, the behaviour is very erratic. It has difficulties to start spinning (something that doesnt happen with 1/32 steps), it misses steps or it even spins backwards...

Could it be that 24V is still too low?

it looks like that motor nameplate is 12v

you should try to use a voltage that is 5 times (to 30 times) the nameplate to get any performance out of it.
if you use the nameplate voltage, you can use transistors or FET's to drive it. there is no need to use a driver.

A driver dumps the power in hard and fast and then chops the current once it has charged the coil.
simply speaking, stepper performance is a function of the ratio

The ratio of supplied voltage by nameplate voltage.

Stepper Motor Basics

mjm

I wouldnt be able to provide more than 45V using this driver, as its specifications states, right?
(Pololu - DRV8825 Stepper Motor Driver Carrier, High Current)

Also, and trying to understand why the system works much better with 1/32 steps rather than with full steps: the stepper in 1/32 steps has less torque, but also requires less power? and that is why with the same power I can drive more reliable the same system in 1/32 steps than in full steps?

Another question. I am starting to think in using planetary gears to make the steps smaller, rather than using microsteps, because the discs seem to be too heavy for microsteps. If I would use planetary gears in full steps, the stepper would require less torque to move the gears in comparison with the torque that it requires to move the disc without gears?

The DRV8825 performs extremely poorly when microstepping with certain types of motors, and yours may be one of them. Post a link to the data sheet.

See this thread and the article that prompted it.

camilozk:
mjm

I wouldnt be able to provide more than 45V using this driver, as its specifications states, right?
(Pololu - DRV8825 Stepper Motor Driver Carrier, High Current)

Also, and trying to understand why the system works much better with 1/32 steps rather than with full steps: the stepper in 1/32 steps has less torque, but also requires less power? and that is why with the same power I can drive more reliable the same system in 1/32 steps than in full steps?

Another question. I am starting to think in using planetary gears to make the steps smaller, rather than using microsteps, because the discs seem to be too heavy for microsteps. If I would use planetary gears in full steps, the stepper would require less torque to move the gears in comparison with the torque that it requires to move the disc without gears?

That, sort of, depends on which of the three sets of gears you drive and which one drives the table.

Paul

I have already seen hackaday´s article about microstepping. Anyway, what I am actually pointing out in this thread, is how much better my system works with 1/32 steps rather than in full steps.

Model 42BYGH34-0400A
Dimensions 42x42x34mm (Length x Width x Thickness)
Step Angle 1.8°
Rated Voltage 12V
Rated Current 0.4A
Number of phase 2
Resistace Per Phase 30O±10%
Rotor Intertia 34g.cm2
Holding Torque 28N.cm
Detent Torque 1.6N.cm

Paul_KD7HB:
That, sort of, depends on which of the three sets of gears you drive and which one drives the table.

I dont understand. and you quoted the whole post where more than one question is asked. thanks for further clarifications.-

My guess is that with full steps the motor is being asked to accelerate too quickly. Your disc probably has a lot of inertia. You can test this by giving the disc a helping hand (literally ) when starting and then see if the motor can keep it moving.

How many steps per second is your Arduino implementing?

Is it an option to use a reduction gear between the motor and the disc? Or maybe you should try a motor with more torque?

...R

camilozk:
I dont understand. and you quoted the whole post where more than one question is asked. thanks for further clarifications.-

As you know, planetary gears have three sets of gears, sun, planet, and ring. You can drive any one of the three and hold one of the remaining to get step-up, or step-down ratios.

Paul

Have you calculated the torque required to step that disk at the desired rate?

Big disk, small motor.

My guess is that with full steps the motor is being asked to accelerate too quickly. Your disc probably has a lot of inertia. You can test this by giving the disc a helping hand (literally ) when starting and then see if the motor can keep it moving.

it does start moving when help by hand

How many steps per second is your Arduino implementing?

I am using the accelstepper library, with which I am not really familiar yet. As you can see in the first post, SetSopeed = 20 (20 steps per second)

Is it an option to use a reduction gear between the motor and the disc? Or maybe you should try a motor with more torque?

I am actually asking about planetary gears in #4

As you know, planetary gears have three sets of gears, sun, planet, and ring. You can drive any one of the three and hold one of the remaining to get step-up, or step-down ratios.

thanks paul for the clarification. I dont know yet much about planetary gears, and I certanly didnt know about what you are explaining. The gears I saw in ebay or aliexpress are attachments to the nema, and I dont think I can drive or hold selectively the gears.

for example:

or:

https://www.ebay.com/itm/Nema17-23-34-Planetary-Gearbox-Gear-Ratio5-1-10-1-15-1-20-1-30-1-40-1-50-1-100-1/201841477171?hash=item2efeb08633:rk:1:pf:0&var

camilozk:
it does start moving when help by hand

I am using the accelstepper library, with which I am not really familiar yet. As you can see in the first post, SetSopeed = 20 (20 steps per second)

runSpeed() has no acceleration. Try runToPosition() to test what accelerations you can use. Then work with the library to apply that acceleration to the continuous running you require.