Hi, I would like to verify my understanding of using auto square with GRBL. Background: I have rebuilt my CNC machine and I am now using dual Y motors. I would like to have the machine auto square. I am using a CNC Shield. EDIT: I have the second y motor running from the A driver that is paired to the y motor with reversed STEP/dir jumper on for driver A. To verify; I will need 2 end stops on the same end of the CNC machine. One for each motor. I am using NO switches. I will need to wire them in parallel. The only change I would need to do in GRBL is $5=1 if I decide to go with NC instead, correct? This will auto square the machine when homing, correct? Thank you.
I can't help you with autosquare in GRBL, but if two NO switches are wired in parallel one of them is redundant - either switch will complete the circuit. For two NC switches wired in parallel BOTH switches need to be operated to BREAK the circuit. Alex.
@Alex Chambers, I am going by the attached image. I understand what you are saying. I am confused about that also.
I think that image shows how to set up hard limits - one switch at each end of the same axis. For auto squaring I assume you would have two switches at the same end of the Y axis, but connected to different inputs on the controller. Anything after that is completely beyond me, but hopefully someone else on here can help. Good luck. Alex.
The only reference on here to auto squaring was a post by Hytech2k who mentioned that Mach3 has that capability - he didn't say how to do it though. It might be worth messaging him and asking. Alex.
I'm confused as to the utility of auto-squaring anyway. Unlike auto-levelling, it doesn't seem to serve a meaningful purpose. If you set your switches to the machine and the machine is out of square, it can't calibrate square anyway. If you can square your switches, just square the machine. If your steppers both move the same amount per step, it can't really get out of square very easily. If they don't, you have to separately calibrate them anyway to the point where a sequence of "square" XZ planes can be at any arbitrary angle to each other. If you try to drive the gantry with a single motor at a time, the gantry will rack and you won't get a valid result anyway. The only meaningful use for this is the same as for out-of-square stock, where you define arbitrary planes as XYZ based on your probing routine and don't need to worry about your workholding. And if you don't need to worry about your workholding, you don't need to worry about your machine either. The only things that meaningfully exist are the linear axes with their limits and the work itself. But I could be missing something really obvious.
Hi, The auto square feature helps with the racking of the gantry. I use belts, and if I accidentally hit one side of the gantry, it throws it out of wack. I have been checking it manually, however, students will be using this and would like an automatic solution that is performed with ever homing sequence. Take care,
Ah, gotcha. So have a switch exactly in line with one of the existing limit switches, so that both motors drive until the first one triggers, then the remaining side pushes into the second switch, whereupon you know (assuming the switches are close enough to the outsides of the gantry width, or you'll obviously get some degree (heh) of cosine error) that the gantry is square. It's more of a phase difference correction than a real squaring. I actually like it, since the ease of belt-racking has come up on my current/most recent build. There's no obvious way of doing that in grbl that I can think of off-hand, especially since you'd really need to initially calibrate it by having both switches actuate simultaneously (within some predefined limit) with a pre-squared gantry, I suppose by having the non-limit switch on a micrometer mount. Grbl definitely has some I/O limitations, so you'd probably need to figure out a set of subsystem hardware that could accomplish it using the probing pin. It would need to differentiate the two switches, prevent grbl from alarming out after hitting the limit switch outside of initial homing, drive the two y-axis motors independently, and have some simple internal logic that would allow it to operate under either motor hitting first, or getting a simultaneous reading. At that point, you almost may as well take grbl out of the picture and write an Arduino sketch from scratch. The only other solution would be some kind of software add-on (maybe for bCNC since it's Python, or something else that plays nice) that could read and override limit/probe inputs and optionally differentiate between Y1 and Y2 stepper drivers, perhaps using the coolant/air blast pins if you're not already using them. A dedicated hardware approach would probably be more effective and reliable (no need to worry about software/firmware updates...) though. However, many of my original points still apply. You have to know the machine is square to begin with. Optionally, a more KISS approach; have a pair of square metal blocks that are screwed tight to the machine (perhaps within the range of the overtravel of one of the limits) that are perfectly square to each other, and simply push the gantry into them while the motors are disabled/unpowered. That's likely what I would/will do.
Thanks for the reply, Rob. I was curious about this feature with the CNC Shield and GRBL. I read that the MPCNC, which uses Marlin, has this feature. I was hoping to be able to do this with my current hardware and GRBL. I was thinking that I could use the Y+ end stop pin some how. I suppose the CNC Shield would need to have a pin assigned to the A driver for that to work. It looks like I will probably use some sort of block method as we mentioned. Take care,
I keep looking at the pinout of the CNC Shield. Are the x-, x+ / y-, y+ / z-,z+ using the same pins respectively? As far as I can tell only pins 9,10,11 are assigned for end stops off of the Arduino.
If you can go simple, go simple! I have some 74HC00 quad NAND gates on their way so that I can do single-wire active-switch active-low limits, because I'm a fool who doesn't listen to my own advice and likes blinking LEDs (sound familiar, @Batcrave?). Yes, only three axis pins. You wire the switches such that either end of the axis activating will flip the logic state of the line, whether active high (parallel) or active low (series). The CNC breakout board (which I originally was using, but got rid of for overcomplicating things as well as StepSticks being terrible) makes things sound more useful than they are. Realistically, you're plugging one switch into each of those limit terminals, and it's doing the series/paralleling/whatever internally.
Thanks again. Sadly, like you, I like to over complicate things sometimes. At this point it is a principal of "can I figure this out".
Excellent advice! As I am on this CNC journey I find myself often over complicating things! Saw a cncrouterparts.com build video that seemed to show some kind of auto square feature...interesting.
The problem you face here is the A stepper is hardwire cloned to the Y. What you have to figure out is how to unclone A so they can operate independently of each other in order to square the system.
GRBL has it built in now as of 1.1h. It can be done easily in Marlin as well ( what I currently run but am setting up a GRBL controller to play with ). I definitely like having it setup as part of my homing routing. Specially on machines with 1000+mm gantry. Check the release log: gnea/grbl
FWIW. Small machines hold themselves square on startup through mechanical rigidity so a single home switch is sufficient. Holding square becomes more difficult and can even become totally impractical with large machines with very long gantries (wide gantry rail spacing). On commercial machines, we used to call homing Y/Y2 to separate switches "Gantry Alignment". Some machines will allow independent electronic control of what GRBL calls the "back off" distance and the Y / Y2 offset. We called these the "Distance to Home" and "Gantry Offset" values. Because these could be set electronically, the position of the Y and Y2 limit switches was not critical. For example, gantry offset for proper alignment could be set with the HMI through independent (but very slow!) jogging of the Y and Y2 axes. If mechanical limit switches were used, these were activated via ramps so they stayed open (NC switches were ALWAYS used for various reasons) for a distance past the trip point and wouldn't be crushed on overtravel. Since the "Distance to Home" could be set to any value within the travel limits of the machine, the home position could be anywhere on the table relative to the switches.
I think the greatest benefit of auto squaring the gantry is that if a job fails somehow in the middle, power failure, hitting work holding and missing steps, etc., you can re-square the gantry, restart the job and Bob's your uncle! Manual squaring will get you close, but will never get you back into the exact position you were before your gantry was thrown out of whack. Does this happen often? No, but I've definitely lost work due to either power failure or work holding position and was unable to get the machine back into perfect alignment well enough to save the work.