Hi everyone, This is my first project, so apologies if some of this is commonly asked. I am making a two axis machine that will carry a sensor head, so the torque required from the motors is quite low. The motors drive belts directly (no gear ratios) and are currently using full steps. I am using NEMA 23 stepper motors, specs: - Step Angle:1.8° - Rated current:3.0A DC - Rated Voltage: 3.6V - Winding dc resistance (25℃): 1.2Ω±10% - Winding inductance: 4mH±20% - Holding torque:≥2.45N.m Driven with a DRV8825 stepper motor driver, connected to a V3 stepper motor shield on an Arduino UNO. The stepper driver cannot operate at the amps of the motors, however due to the low torque requirements for the build, I was informed that they would work just fine - and do under certain conditions. When I first plugged it all together and used the standard settings, it worked perfectly when I jogged the motors in each direction. However, when I adjusted the steps/mm from the standard 250 to what I measured, approximately 3 steps/mm for each axis, the motors would vibrate a lot, only run for higher distances (ie. 30mm, but for 1mm it would not move at all really) run very slowly and not smoothly. I figured it must be the feed rate, or perhaps the resolution was not enough, so I increased max speeds and max acceleration, jog distance and feed rate. This made the axis move faster, however not as fast as initially, and the motion was still not smooth and had heavy vibration. I was wondering what sort of settings I should use in GRBL to improve this, or if I should use microsteps to smooth the operation? Or perhaps the steps/mm is just too small, and I should increase it by a factor of 10 and just remember when I code that it is steps/cm not steps/mm. My GRBL settings are as follows, X-axis operating smoothly and Y-axis very poor. (ignore z-axis, it is not in use) >>> $$ $0 = 25 (step pulse, usec) $1 = 10 (step idle delay, msec) $2 = 0 (step port invert mask:00000000) $3 = 0 (dir port invert mask:00000000) $4 = 0 (step enable invert, bool) $5 = 0 (limit pins invert, bool) $6 = 0 (probe pin invert, bool) $10 = 3 (status report mask:00000011) $11 = 0.010 (junction deviation, mm) $12 = 0.002 (arc tolerance, mm) $13 = 0 (report inches, bool) $20 = 0 (soft limits, bool) $21 = 1 (hard limits, bool) $22 = 1 (homing cycle, bool) $23 = 3 (homing dir invert mask:00000011) $24 = 25.000 (homing feed, mm/min) $25 = 500.000 (homing seek, mm/min) $26 = 250 (homing debounce, msec) $27 = 1.000 (homing pull-off, mm) $100 = 250.000 (x, step/mm) $101 = 3.185 (y, step/mm) $102 = 250.000 (z, step/mm) $110 = 500.000 (x max rate, mm/min) $111 = 500.000 (y max rate, mm/min) $112 = 500.000 (z max rate, mm/min) $120 = 10.000 (x accel, mm/sec^2) $121 = 10.000 (y accel, mm/sec^2) $122 = 10.000 (z accel, mm/sec^2) $130 = 80.000 (x max travel, mm) $131 = 80.000 (y max travel, mm) $132 = 200.000 (z max travel, mm) I have videos of the two axis, one operating smoothly and one with the vibration, and can work out a way to attach these if that helps Thanks in advance for your time
Definitely try microstepping (8x) and change your steps/mm to suit. Also, you could try gradually increasing your acceleration settings ($120 etc) - maybe keep doubling them until you get a problem.