GRBL là gì: nạp GRBL cho Arduino, CNC shield, sơ đồ chân và nối động cơ
GRBL là firmware biến Arduino Uno, Nano thành bộ điều khiển máy CNC, laser: sơ đồ chân GRBL 1.1, CNC shield V3, năm bước nạp GRBL bằng Arduino IDE, kiểm tra và lỗi thường gặp.
GRBL là firmware mã nguồn mở biến một bo Arduino Uno (hoặc Nano) thành bộ điều khiển máy CNC. GRBL đọc G-code gửi qua cổng USB, tính toán đường đi có tăng tốc, giảm tốc, rồi phát xung STEP, DIR cho driver động cơ bước, bật tắt và chỉnh tốc độ spindle hoặc công suất laser. Phần lớn máy CNC mini cỡ 3018 và máy khắc laser diode giá rẻ đều chạy GRBL hoặc một firmware phát triển từ GRBL.
Bài này giải thích GRBL làm được gì, sơ đồ chân của GRBL 1.1 trên Arduino Uno, Nano, bố trí của CNC shield V3, cách nạp GRBL bằng Arduino IDE và cách kiểm tra sau khi nạp.

1. GRBL là gì, làm được gì
- Chạy trên vi điều khiển ATmega328P (Arduino Uno, Nano). Phiên bản phổ biến hiện nay là GRBL 1.1.
- Điều khiển 3 trục X, Y, Z bằng xung STEP, DIR; phát được khoảng 30 nghìn xung mỗi giây.
- Hiểu G-code chuẩn: G0, G1, G2, G3, G90, G91, G54, G10, G38.2 (dò Z)…
- Tăng tốc, giảm tốc và nhìn trước nhiều đoạn đường để chạy mượt qua các góc.
- Spindle và laser: bật tắt, chỉnh tốc độ bằng PWM; có chế độ laser riêng (bài 12).
- Về gốc, giới hạn mềm, giới hạn cứng với công tắc hành trình; nút tạm dừng, chạy tiếp, dừng.
- GRBL không có giao diện: cần một phần mềm trên máy tính để gửi G-code (LaserGRBL, LightBurn, Candle, Universal Gcode Sender…, bài 14, 15).
2. Sơ đồ chân GRBL 1.1

Bảng trên lấy theo mã nguồn GRBL 1.1 (tệp cpu_map.h). Chỗ hay nhầm nhất là D11 và D12:
- GRBL 0.8 (bản cũ) đặt công tắc Z ở D11 và bật spindle ở D12. CNC shield V3 in nhãn theo bản cũ này.
- GRBL 1.1 dùng PWM phần cứng để chỉnh tốc độ spindle, công suất laser, nên D11 thành chân PWM và công tắc Z chuyển sang D12.
- Vì vậy trên CNC shield V3 chạy GRBL 1.1: công tắc Z cắm vào hàng chân có nhãn SpnEn, còn tín hiệu PWM của laser, spindle lấy ở hàng chân Z+ / Z−.
3. CNC shield V3

- Cắm chồng lên Arduino Uno, có sẵn đế cho 4 driver kiểu StepStick (A4988, DRV8825…).
- Cắm driver đúng chiều: chân EN của driver trùng với chữ EN trên shield.
- Jumper vi bước: ba jumper dưới mỗi driver (bài 7).
- Cọc nguồn: cấp 12–24 V cho driver; Arduino vẫn lấy nguồn qua USB. Không cấp ngược cực.
- Trục A: có thể nhân bản tín hiệu của X hoặc Y bằng jumper để chạy hai động cơ cho một trục (máy có hai động cơ Y). GRBL 1.1 không điều khiển trục thứ tư độc lập.
- Nối động cơ: giắc 4 chân cạnh mỗi đế driver, thứ tự 2B, 2A, 1A, 1B theo nhãn in trên shield; mỗi cặp là một cuộn (bài 6).
4. Nạp GRBL cho Arduino

- Vào trang dự án GRBL (kho mã nguồn gnea/grbl), tải mã nguồn dạng file nén và giải nén. Bên trong có thư mục tên
grbl: đây là thư mục cần dùng. - Mở Arduino IDE, chọn Sketch > Include Library > Add .ZIP Library… rồi chọn thư mục
grblvừa giải nén. - Mở File > Examples > grbl > grblUpload. Không cần sửa gì trong ví dụ này.
- Chọn Tools > Board là Arduino Uno (hoặc Arduino Nano) và Tools > Port là cổng COM của bo. Nano đời cũ có thể cần chọn Processor: ATmega328P (Old Bootloader).
- Bấm Upload. Arduino IDE báo "Sketch uses … bytes" và một cảnh báo bộ nhớ thấp là bình thường với GRBL.
Arduino Nano dùng chip nạp CH340 cần cài driver trên Windows; cách làm ở bài bắt đầu với Arduino Nano CH340 (link ở cuối bài).
5. Kiểm tra sau khi nạp

- Mở Tools > Serial Monitor, chọn tốc độ 115200 baud và kiểu xuống dòng Both NL & CR.
- Bấm nút reset trên bo: phải thấy dòng
Grbl 1.1h ['$' for help](chữ cái cuối có thể khác tùy phiên bản). - Gõ
$Iđể xem phiên bản,$$để xem toàn bộ thông số cấu hình,?để xem trạng thái. - Nếu trạng thái là
Alarm, gõ$Xđể mở khóa (bài 12 giải thích các mã ALARM). - Đóng Serial Monitor trước khi mở phần mềm gửi G-code; một cổng COM chỉ một chương trình dùng được tại một thời điểm.
Lần đầu cho động cơ chạy, gửi lệnh nhỏ như G91 G0 X5 (đi tới 5 mm theo X, tọa độ tương đối) và xem trục đi đúng chiều, đúng quãng đường chưa. Sai chiều thì đảo hai dây một cuộn hoặc sửa $3; sai quãng đường thì sửa $100–$102 (bài 12).
6. Dùng Arduino Nano thay cho Uno

- Nano dùng cùng chip ATmega328P nên nạp đúng bản GRBL như Uno và dùng đúng sơ đồ chân ở mục 2.
- Nano không cắm được CNC shield V3. Có thể nối tới driver qua breadboard, qua đế ra chân cọc vít cho Nano, hoặc dùng loại shield làm riêng cho Nano.
- Nối GND của Nano với GND của nguồn 24 V và của các driver.
7. Lỗi thường gặp
| Hiện tượng | Nguyên nhân hay gặp |
|---|---|
| Không thấy cổng COM | cáp USB chỉ có dây sạc, thiếu driver CH340 |
| Upload báo lỗi đồng bộ (not in sync) | sai bo, sai Processor (Nano Old Bootloader), cổng đang mở ở chương trình khác |
| Serial Monitor ra ký tự lạ | chưa chọn 115200 baud |
| Động cơ không quay, không giữ trục | chưa cấp nguồn vào cọc xanh của shield, driver cắm ngược, chưa cắm jumper EN trên một số shield |
| Máy báo ALARM ngay khi bật | công tắc Z nối vào D11 thay vì D12, công tắc NC mà $5=0, nhiễu ở dây công tắc |
| Laser không chỉnh được công suất | lấy tín hiệu ở chân SpnEn (D12) thay vì Z+ / Z− (D11) |
8. Xem thêm
- Bài trước trong loạt: Nguồn điện, đi dây, công tắc hành trình. Bài sau: Cấu hình GRBL.
- Bắt đầu với Arduino Nano CH340: sơ đồ chân, driver và nạp code.
- Arduino Nano và đế ra chân cọc vít cho Arduino Nano tại PYWORLD.
- Dây USB nạp code có đủ dây dữ liệu.
Xem thêm