Set up the Homing Cycle - gnea/grbl GitHub Wiki
Prerequisites:
- Correctly configured axes.
Home switches pins and wiring
3 digital input pins are used for signaling Grbl:
- Pin 9 X Axis limit/Home input pin
- Pin 10 Y Axis limit/Home input pin
- Pin 12 Z Axis limit/Home input pin
Another place that explains the Limit switch configuration: Wiring-Limit-Switches
Limit switches usually have three terminals:
One is common terminal (COM
), one is normally open (NO
) to the common terminal and another one is normally closed (NC
) to common.
In this case, we are going to use two terminals, normally open (NO
) and common (COM
).
Use of (NC
) instead of (NO
) is enabled by configuring $5=1
.
All the common lines go to the arduino's GND, the NO
lines go to the pin for that axis. This will result in this wiring:
- *X- limit
NO
-> Arduino Pin 9 - *X- limit
COM
-> Arduino Pin GND - *X+ limit
NO
-> Arduino Pin 9 - *X+ limit
COM
-> Arduino Pin GND - *Y- limit
NO
-> Arduino Pin 10 - *Y- limit
COM
-> Arduino Pin GND - *Y+ limit
NO
-> Arduino Pin 10 - *Y+ limit
COM
-> Arduino Pin GND - *Z- limit
NO
-> Arduino Pin 12 - *Z- limit
COM
-> Arduino Pin GND - *Z+ limit
NO
-> Arduino Pin 12 - *Z+ limit
COM
-> Arduino Pin GND
Enable Home Cycle and Setup Home Parameters
Homing is controlled by parameter $22
. Type $22=1
to enable it, $22=0
to disable it. Homing can be triggered by typing $H
.
Homing direction
The homing directions are controlled by setting $23
setting it to a value defined below:
Homing direction | Value |
---|---|
X+ Y+ Z+ | 0 |
X- Y+ Z+ | 1 |
X+ Y- Z+ | 2 |
X- Y- Z+ | 3 |
X+ Y+ Z- | 4 |
X- Y+ Z- | 5 |
X+ Y- Z- | 6 |
X- Y- Z- | 7 |
- Default setting (
$23=0
), the home location is the top right of your work area, with the spindle all the way up. $23=1
Top left home location.$23=2
Bottom right of your work area to be the home location.$23=3
Bottom left.$23=4
Spindle down home location.
Homing Cycle Steps
By default, the homing cycle goes through the following steps:
- Z axis
- Z Axis will move up (positive) with Fast Rate (
$25
) - When Z home switch triggered, Z stop for a short time (
$26
) and back off a distance ($27
) - Z Axis will move up slowly util it touches the Z home switch again (
$24
) - Z Axis backs off a small distance (
$27
)
- Z Axis will move up (positive) with Fast Rate (
- X and Y axis
- X, Y Axis move both to Homing direction at fast rate (
$25
) - The first Axis triggers the switch will stop and wait for the second axis to trigger
- When second axis triggers the switch, both axis back off a distance (
$27
) - Both X and Y axis will move toward switches again slowly, until both switches triggered again (
$24
) - Both X and Y axis will back off a small distance (
$27
)
- X, Y Axis move both to Homing direction at fast rate (
Homing speed
As described above, homing is done in two distinct phases per axis: feed and seek. The feed speed is controlled by setting $25
. In this phase, GRBL is just trying to find the limit switch within a reasonable amount of time.
After the feed phase, the seek phase does exactly the same thing, but at a low speed, controlled by setting $24
. This phase is all about accurately finding the trigger point for the limit switch.
Homing travel
GRBL will give up searching for a limit switch after 1.5x the max travel distance. The max travel distance is controlled by $130
, (for x), $131
(for y) and $132
(for z). These numbers are also used for soft-limits, and should be set slightly below the length of your axes.
After the feed phase, the axis moves back a little, to un-trigger the switch. This distance is controlled by setting $27
. Set this number high enough so the limit switch is cleared, even when the feed phase overshoots.
TODO (documentation)
- How to configure for custom homing cycles.
- Common issues.
- What's the homing cycle for? How do you use it? Is it really that useful? YES.
- Explain work coordinate systems(WCS) and G28/30 move to predefined locations
- Explain how to save WCS and G28/30 coordinate frames using G10 and G28.1/30.1.
- Explain how WCS and G28/30 are used in common scenarios (All above explained perfectly in this video https://www.youtube.com/watch?v=fGtbkVJBXyE )
- Provide clear link to LinuxCNC g-code descriptions.