Stepper Motor Vibration Velmex BiSlide

Hey everyone I work doing experiments at a university and we have a setup that uses a Velmex Bi-Slide; this came with a Vexta unipolar motor (PK266-03A-P1) and Velmex driver. I recently attatched a force sensor and I noticed that there were large spikes whenever the traverse started and stopped. I checked the motor driver and it only did 1/2 steps so I figured it must be something to do with impulsive loads since the weight of my system is ~5lb. To test this I hooked up the motor in a bipolar configuration and used a SainSmart Driver This was with accel stepper codes:

#include <AccelStepper.h>
AccelStepper stepper(AccelStepper::DRIVER, 9, 8);
//AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5

void setup()

void loop()

I have set it to 1/16 stepping and found that this reduced that initial peak by a lot. But there is alot of vibration in the leadscrew. With the previous Velmex driver you could not feel any vibration with your hand on the traverse but now with this sainsmart driver you can noticeably tell that there is a significant vibration. So although this does help the initial peak in that force sensor the vibration will create a different problem for me. So my question: Is there a way to significantly reduce this vibration? Am I doing something wrong that is leading to this vibration? Why does the Velmex drive not have this vibration?

Lead screws must have good thrust bearings on either end. Is this the vibration you are sensing or is it the leadscrew rotation that is vibrating?


If you posted a video that would be most helpful.

I would try reducing the current to the motor.
What current are you running it at?

Lead screws must have good thrust bearings on either end. Is this the vibration you are sensing or is it the leadscrew rotation that is vibrating?

The stepper is vibrating which is causing the leadscrew to vibrate. When ran by the Velmex driver there is no vibration. Any ideas?

Did you try various current, torque and decay settings?

Did you try various current, torque and decay settings?

I haven't tried various decay settings, just have it set to no decay. I wasn't sure what that even did so I figured I would leave it on full blast.

My motor is rated at 2.6 amps and my driver is current limiting to 3 amps, I have it set to the maximum setting for amperage. When the motor is moving the variable power supply is only drawing ~1.5 amps at 12v. I also tried limiting this to the 1 amp setting, this made the noise/vibration smaller but again I think that was just because there was less torque and energy going into the motor not that it "fixed" the problem.

Not sure if maybe the problem is with the arduino? I should be able to go low speeds with the arduino and need something faster for quicker movement right?

Again for some reason using this arduino driver seems to make the motor and/or lead screw vibrate and when using the generic driver from the manufacture there seems to be no vibrations.

How did you set the accel rate in AccelStepper?
Can you post a link to the Velmex driver?

How did you set the accel rate in AccelStepper?
Can you post a link to the Velmex driver?

I didn't set an acceleration, doesn't AccelStepper do that automatically when not imputed?
I don't think it matters right now anyway since it vibrates even when it is at a constant velocity. But I could be totally wrong.

One thing though is that it doesn't vibrate nearly as much to at all when moving at faster speeds so it seems to vibrate only when moving slowly.


Okay so I moved onto a DM542T this makes the traverse move much smoother at the lower velocities but anything close to what the max speed from the Velmex driver I get a heavy vibration and noise. I have isolated this problem down to something happening at the leadscrew/nut. Could it be something wrong with an acceleration profile? Even if I accelerate very slowly up to my max speed I get a very load grinding noise. Any thoughts?

Vibration is due to resonance - the step frequency is hitting a natural mechanical resonance.
Try a different speed, different microstepping rate.

Its always an issue with steppers, typically higher microstepping factors reduce the severity of
a resonance by reducing the amplitude of the driving force, but if there is no mechanical damping
its hard to avoid if you hit a critical frequency. Viscoelastic couplers can be one way to help
mechanically, belt-drive is much less prone to this than lead-screw.

[ Also changing the current level will shift the resonance ]

Okay so I am thinking you are right about the resonance issue. Is there some way to calculate what value that will happen at? I will research this. I took the weight off of the traverse and now when pushing it by hand I no longer get the girding noise, also when I mimic the exact profile used by the velmex I get a much smoother noise and not the grinding. I am guessing they set up their profiles to quickly ramp over the resonant frequency? Anyway now the last challenge is to figure out how to use my large numbers in acellstepper since I am going to go from half steps up to 1/8 or 1/16. With my largest number being 11,810 * 8 = 94480. whenever I put in these large values I get the traverse moving the wrong way and wrong profile so I am assuming there is some overflow. I’ll update you all later today what I find.

The main issue I guess ins’t that I cant get long enough numbers just that it doesn’t follow the steps correctly.

In my code I am using:

Steps = 11810
Vel (step/s) = 3937
Accel (steps/s/s) = 4000
Takes ~ 4 seconds to move

But when I double all of those values and double the microstepping to 4 instead of 2.

Steps = 23620
Vel (step/s) = 7874
Accel (steps/s/s) = 8000
Takes ~ 6.5 seconds to move

So am I losing steps then? If I am I don’t see why I should with only 1/4 steps and no load on the traverse.

In the end I got it working nicely with 1/2 steps. Not sure why there was such bad grinding but it must have had something to do with resonance. After copying the profiles from the other driver it seemed to work fine. Only issue is I need to run at more than 1/2 steps which the arduino can't do since the processor works at the 8Mhz.