Direct Drive Upgraded X-Carve not moving X/Y properly

Fellow Carvers,

So I have recently upgraded my 1000m x 1000m X-carve with TBD’s full suite of options including; super grade screw-drive upgrade kit, super grade direct-drive z-axis, and the newest upgrade, super grade linear rail kit. I use my machine a lot and thought it would be worth the near 1500 to get all the goods.

So after getting everything installed, I find myself running into a variety of issues. The most pressing issue is that I can not get my machine to move in proper increments.

Backstory, I primarily use Vectric Aspire, for those of you that are familiar with Vectric, it comes with VTransfer. I have always used this in place of UGS or anything else.

So when I plug my machine in and connect to VTransfer, my machine is in an error state right from the get go. I home the machine and find my new home position is off the wasteboard (this is fine since the machine limit switches require it to be where it now is. I jog to what I want it to be (after homing sequence has run properly, to include my z probe) and then make this my new home position. I load up a toolpath file to try and print a square with a couple of test words inside it. No such luck, the machine moves about .75" and bottoms out till I hit the E-stop. This is in VTransfer.

I then downloaded UGS and ran that program. The machine is not in an error state. It shows connected and in idle. From here I run the home sequence which works fine. I then look to jog the machine to where I want the home to be. Now it gets weird. I tell the machine to move 8mm and it only moves 1.63mm. Plus it does this in the absolute slowest way possible. I then adjust the $100 and $101 settings hoping to speed it up or at least get the machine to move the correct amount. Still not working. I have asked Luke from TBDcnc to help but I know that he is busy so our correspondence is slow going. I have been at a standstill for over 2 weeks now just trying random things and I have no idea what the issue is.

I have gone onto Inventables easel program and messed with it on there and it will jog “what seems like the correct distance/speed, per click” but that is it. No other changes that I have tweaked or messed with concerning Gcode config have made any difference.

Also, in the beginning, I was trying to see how many mm the wasteboard was so I jogged the machine manually to the back of the wasteboard. It was something like 4500mm which didn’t make sense.

I know this explanation may be crap but I have to start somewhere, I can post video and pics if that helps, I just need to know what of.

Thanks for any help I get guys!

How did you “tell it to move 8mm”?
Does the machine think it moved 8mm?

Can you post your grbl settings?

$0 = 10 (Step pulse time, microseconds)
$1 = 255 (Step idle delay, milliseconds)
$2 = 0 (Step pulse invert, mask)
$3 = 6 (Step direction invert, mask)
$4 = 0 (Invert step enable pin, boolean)
$5 = 0 (Invert limit pins, boolean)
$6 = 0 (Invert probe pin, boolean)
$10 = 115 (Status report options, mask)
$11 = 0.020 (Junction deviation, millimeters)
$12 = 0.002 (Arc tolerance, millimeters)
$13 = 0 (Report in inches, boolean)
$20 = 0 (Soft limits enable, boolean)
$21 = 0 (Hard limits enable, boolean)
$22 = 1 (Homing cycle enable, boolean)
$23 = 3 (Homing direction invert, mask)
$24 = 25.000 (Homing locate feed rate, mm/min)
$25 = 750.000 (Homing search seek rate, mm/min)
$26 = 250 (Homing switch debounce delay, milliseconds)
$27 = 1.000 (Homing switch pull-off distance, millimeters)
$30 = 1 (Maximum spindle speed, RPM)
$31 = 0 (Minimum spindle speed, RPM)
$32 = 0 (Laser-mode enable, boolean)
$100 = 40.000 (X-axis travel resolution, step/mm)
$101 = 40.000 (Y-axis travel resolution, step/mm)
$102 = 188.976 (Z-axis travel resolution, step/mm)
$110 = 8000.000 (X-axis maximum rate, mm/min)
$111 = 8000.000 (Y-axis maximum rate, mm/min)
$112 = 500.000 (Z-axis maximum rate, mm/min)
$120 = 500.000 (X-axis acceleration, mm/sec^2)
$121 = 500.000 (Y-axis acceleration, mm/sec^2)
$122 = 50.000 (Z-axis acceleration, mm/sec^2)
$130 = 790.000 (X-axis maximum travel, millimeters)
$131 = 790.000 (Y-axis maximum travel, millimeters)
$132 = 100.000 (Z-axis maximum travel, millimeters)

In the jog controls tab on UGS it has a listed step size. Step size was set to 8mm, pressing the jog button (X+) one time would signal the machine to move that many steps I thought. This is where its actual move distance was only 1.63mm. This is also where it moves painstakingly slow taking about 3-5 seconds to make this movement.

You are going to have to change your values for the pitch of the threads not what was set for the belts. You can see how your screw axis for the Z is different for $102.

You can measure the increment it moves for one press of the key in UGS. Then calculate that number with an actual measurement you want to move. The resulting number multiplied by the current number should provide the new number. 1 inch desired distance per keystroke/ .25 actual distance per keystroke= 4 times the setting number.

As an example. $100=160…(4 x 40.000)

from here:

Grbl needs to know how far each step will take the tool in reality. To calculate steps/mm for an axis of your machine you need to know:
The mm traveled per revolution of your stepper motor. This is dependent on your belt drive gears or lead screw pitch.
The full steps per revolution of your steppers (typically 200)
The microsteps per step of your controller (typically 1, 2, 4, 8, or 16). Tip: Using high microstep values (e.g., 16) can reduce your stepper motor torque, so use the lowest that gives you the desired axis resolution and comfortable running properties.
The steps/mm can then be calculated like this: steps_per_mm = (steps_per_revolution*microsteps)/mm_per_rev
Compute this value for every axis and write these settings to Grbl.

Did TBD not provide an estimated steps per mm as a starting point for setting up with the new screw drives?

Not to my knowledge. Luke at TBD has not mentioned it to me in or correspondence yet either.

What did you change the values to?

8mm/1.63mm * 40steps/mm = 196.319

If you know the pitch of the screw, you can just do the math that way.

Asked the machine to move 1inch in each direction. Here’s what I got.
X =.948
Y =.948
Z =3.781

Not sure if it should take that long but all 3 axis took ~1 minute to move the distance. I only timed the Y move.

And when I adjusted 100 and 101 the first time I set them equal to Z to start. That was 188.976

Multiply whatever number you have in $100 and 101 by 1.0548 and replace it with that result. G0 commands will move at the rate specified. G1 commands will move at whatever feed rate you give it. Check your $110, $111, and $112. Those are the max rates.

$110, $111 and $112 – [X,Y,Z] Max rate, mm/min
This sets the maximum rate each axis can move. Whenever Grbl plans a move, it checks whether or not the move causes any one of these individual axes to exceed their max rate. If so, it’ll slow down the motion to ensure none of the axes exceed their max rate limits. This means that each axis has its own independent speed, which is extremely useful for limiting the typically slower Z-axis.
The simplest way to determine these values is to test each axis one at a time by slowly increasing max rate settings and moving it. For example, to test the X-axis, send Grbl something like G0 X50 with enough travel distance so that the axis accelerates to its max speed. You’ll know you’ve hit the max rate threshold when your steppers stall. It’ll make a bit of noise, but shouldn’t hurt your motors. Enter a setting a 10-20% below this value, so you can account for wear, friction, and the mass of your workpiece/tool. Then, repeat for your other axes.
NOTE: This max rate setting also sets the G0 seek rates.

1 Like

Got the movements to within a thou so thank you so much for that! I’m gonna start the rates like Martin instructed. Ill let you know how that goes! You guys are awesome.

I think I’m missing something of what you’re saying. I enter G0 X50 and it works, then G0 X200 which moves further but works fine as well (and by fine I mean it appears to be normal speed). Now you are saying that I should adjust my corresponding 110,111 or 112 value (based on the axis) and try the move again. Repeat until I get the stall and take 10-20% off that number and set it as my max?

If my first attempt with the command G0 X50 worked then wouldn’t that suggest my max speed is fine at 8000? If so then why would ugs move so slowly when jogging after I ask it to move an inch.
Just trying to better understand.

I just wanted to mention that the max rate is dictated by those numbers in $ 110,111,and 112. If you had changed them lower than the 8000 when you were making changes, that could impact your top speed. G0 commands should move at that listed rate. A G1 x50.0 F200 would be slower.

I can’t say why it’s moving slower during a jog. Does everything move freely? I upgraded to 9mm belts and didn’t have to change anything but the $100, and 101 from the stock numbers. I’d wonder if the screws require a change in torque settings via dip switches on the x controller or acceleration rates.

To get a better idea of how things work you can send G1 commands via UGS and change the feedrates. in the command to see what it does.

Everything moves as it should so far. I am going to run a test piece and see how it goes. I have no idea on any of that currently. I’m learning it all as I go.
Since I have my grbl settings adjusted will this be the same if I was to switch back and run a file on VTransfer?
Side note, when entering G0 or G1 X50 for instance, do you know what increment 50 is in?

After testing with G0X50, G0X100, and finally G0X200, I thought I would be able to enter G0X-350 and it would return to home. it crashed >.<

I’ve never used anything other than Cambam and Meshcam and no changes are made to GRBL with them, so I’d imagine if you remove any illegal Gcodes from Vtransfer after you get the code, it should work fine. If you have an X carve post processor, it should convert to things that the x carve likes.

I’m pretty sure the F rates are in mm. You would need to set your G20 or 21 as well. G20 is in inches. G21 is metric. A G20 setting followed by a G0x-350 would want to move 350 inches.

Because I strictly work in inches, I always add a G20 and G90 to my programs or command list. G90 and G91 are also ones you need to get familiar with.

Yes, unless V-transfer changes them…it shouldn’t.

Default is mm for grbl.

Default motion is absolute (G90). G0X-350 will be a move to 350mm left of your work X0.

Ohh, so your saying G0X-350 made my machine want to go back to 0 and then -350?
That makes sense as then this happened.

Playing around I entered these commands, see comments.

G0Y200X100 (moved up and right a correct amount)
ok
G0X50 (moved left…)
ok
G0X10 (moved left again…)
ok

Yup… Think of a number line from elementary school.

If you change to G91, all moves will be relative to your current location. G91 G0X20 will always move 20 to the right.
Be careful jumping back and forth between G90 and G91.

If you enter a g91, then each distance will be the distance you enter from the last position.