GRBL
From Robert-Depot
Contents
To compile GRBL and upload to the Arduino
- Download GRBL: https://github.com/grbl/grbl/archive/master.zip
- unzip grbl-master
- Open Terminal.
- Set the following environment variabels (i.e. run these commands in the terminal):
export AVRPATH=/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr
export DEVPATH=/dev/tty.usbmodem1411
- (note: DEVPATH should match the name of your currently connected arduino. you can find this from arduino software under Port selection)
export GRBLHEX=grbl.hex
- Add the avr compiler's to your PATH. type this into the terminal:
export PATH="$PATH:$AVRPATH/bin"
- Change to the grbl directory:
cd ~/Downloads/grbl-master
- NOTE: replace
~/Downloads
with the full path where you downloaded GRBL.
- NOTE: replace
- Compile GRBL. In the grbl-master director, type:
make
. GRBL should compile. - Upload GRBL to the arduino. From the grbl-master directory, run:
$AVRPATH/bin/avrdude -C$AVRPATH/etc/avrdude.conf -pm328p -carduino -P$DEVPATH -D -Uflash:w:$GRBLHEX
adapted from here: https://github.com/grbl/grbl/wiki/Flashing-Grbl-to-an-Arduino
Upload to Nano V3.0 (slower baud rate)
Needs 57600 baud rate instead of default uno 115200
$AVRPATH/bin/avrdude -C$AVRPATH/etc/avrdude.conf -b57600 -pm328p -carduino -P$DEVPATH -D -Uflash:w:$GRBLHEX
How to connect pins of Arduino for GRBL
https://github.com/grbl/grbl/wiki/Connecting-Grbl
What the GRBL settings mean, and how to change them
GCode Command Reference
These are the standard GCode commands implemented by GRBL:
My GRBL Settings
$0=28.175 (x, step/mm) $1=28.175 (y, step/mm) $2=250.000 (z, step/mm) $3=10 (step pulse, usec) $4=17780.000 (default feed, mm/min) $5=17780.000 (default seek, mm/min) $6=56 (step port invert mask, int:00111000) $7=25 (step idle delay, msec) $8=500.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=0 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=0 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=25.000 (homing feed, mm/min) $20=250.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm)
current 20130703 pre-homing save
Grbl 0.8c ['$' for help] G20ok G91M3ok $0=6.964 (x, step/mm) $1=6.964 (y, step/mm) $2=6.964 (z, step/mm) $3=10 (step pulse, usec) $4=20320.000 (default feed, mm/min) $5=65000.000 (default seek, mm/min) $6=56 (step port invert mask, int:00111000) $7=25 (step idle delay, msec) $8=900.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=1 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=0 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=25.000 (homing feed, mm/min) $20=250.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm)
With Homing
$0=28.175 (x, step/mm) $1=28.175 (y, step/mm) $2=250.000 (z, step/mm) $3=10 (step pulse, usec) $4=500.000 (default feed, mm/min) $5=10000.000 (default seek, mm/min) $6=56 (step port invert mask, int:00111000) $7=25 (step idle delay, msec) $8=500.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=0 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=1 (homing cycle, bool) $18=255 (homing dir invert mask, int:11111111) $19=400.000 (homing feed, mm/min) $20=2000.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm)
trying to improve continuation of stroke behavior
$0=6.964 (x, step/mm) $1=6.964 (y, step/mm) $2=6.964 (z, step/mm) $3=10 (step pulse, usec) $4=20320.000 (default feed, mm/min) $5=65000.000 (default seek, mm/min) $6=56 (step port invert mask, int:00111000) $7=25 (step idle delay, msec) $8=900.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=1 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=1 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=400.000 (homing feed, mm/min) $20=10000.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm) ok
GRBL 1 - 20131129
$0=6.964 (x, step/mm) $1=6.964 (y, step/mm) $2=6.964 (z, step/mm) $3=10 (step pulse, usec) $4=20320.000 (default feed, mm/min) $5=65000.000 (default seek, mm/min) $6=56 (step port invert mask, int:00111000) $7=25 (step idle delay, msec) $8=900.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=1 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=1 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=400.000 (homing feed, mm/min) $20=10000.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=1.000 (homing pull-off, mm)
GRBL2 - 20131210
['$H'|'$X' to unlock] $0=14.000 (x, step/mm) $1=14.000 (y, step/mm) $2=250.000 (z, step/mm) $3=10 (step pulse, usec) $4=2540.000 (default feed, mm/min) $5=15240.000 (default seek, mm/min) $6=32 (step port invert mask, int:00100000) $7=25 (step idle delay, msec) $8=1000.000 (acceleration, mm/sec^2) $9=0.050 (junction deviation, mm) $10=0.100 (arc, mm/segment) $11=25 (n-arc correction, int) $12=3 (n-decimals, int) $13=0 (report inches, bool) $14=1 (auto start, bool) $15=0 (invert step enable, bool) $16=0 (hard limits, bool) $17=1 (homing cycle, bool) $18=0 (homing dir invert mask, int:00000000) $19=1000.000 (homing feed, mm/min) $20=5000.000 (homing seek, mm/min) $21=100 (homing debounce, msec) $22=2.550 (homing pull-off, mm)
Buffer overflows
// Serial send and receive buffer size. The receive buffer is often used as another streaming // buffer to store incoming blocks to be processed by Grbl when its ready. Most streaming // interfaces will character count and track each block send to each block response. So, // increase the receive buffer if a deeper receive buffer is needed for streaming and avaiable // memory allows. The send buffer primarily handles messages in Grbl. Only increase if large // messages are sent and Grbl begins to stall, waiting to send the rest of the message. // #define RX_BUFFER_SIZE 128 // Uncomment to override defaults in serial.h // #define TX_BUFFER_SIZE 64