[CNC] Nạp và cấu hình GRBL cho Arduino Uno để chạy máy CNC mini

Lưu ý: Bấm vào hình trong bài viết để phóng to hình nếu bạn không xem rõ. Sau đó bấm Back (quay lại) trên trình duyêt để quay lại bài viết.
1. Đi dây cho máy:
Sơ đồ đi dây cho máy CNC mini sử dụng Arduino Uno với FW GRBL như sau:
Arduino Uno
CNC Shield
Lắp vào hoàn chỉnh
Step Pulse X-Axis/ Step Pulse Y-Axis/ Step Pulse Z-Axis: chân cấp xung cho driver động cơ bước (tương ứng với trục X, Y và Z)
Direction Pulse X-Axis/Direction Pulse Y-Axis/Direction Pulse Z-Axis: chân chiều quay cho driver động cơ bước (tương ứng với trục X, Y và Z)
Stepper Enable/Disable: chân cho phép/không cho phép chạy động cơ bước
Direction Pulse X-Axis/Direction Pulse Y-Axis/Direction Pulse Z-Axis: chân chiều quay cho driver động cơ bước (tương ứng với trục X, Y và Z)
Limit X-Axis/Limit Y-Axis/Limit Z-Axis: chân kết nối công tắc hành trình
Variable Spindle PWM (*): chân cấp PWM cho spindle (điều khiển tốc độ động cơ phay cho máy CNC, cường độ laser cho máy khắc laser hoặc RC servo cho máy vẽ/viết chữ)
Spindle Direction: chân chiều quay cho động cơ spindle
Đối với CNC Shield:
A2 A1 B1 B2 (header 4p): ngõ ra động cơ bước (phía dưới header 4p có tên của trục, như X, Y Z hoặc A)
12-36V (terminal): chỗ cấp nguồn DC (thường xài DC 12V)
ENDSTOP: chỗ gắn công tắc hành trình (với FW 0.9j, chân PWM là chân 11, tương ứng FW cũ là công tắc hành trình Z nên giờ công tắc hành trình Z là SpnEn)
(*) Chân PWM chỉ điều khiển được các spindle có hỗ trợ điều khiển từ PWM, một số động cơ AC không thể điều khiển được tốc độ nếu không có driver đi kèm
Lưu ý: chỗ FUSE, cầu chì này chỉ có 1A nên rất dễ bị đứt, và loại này không phổ biến.
2. Nạp chương trình và các thiết lập:
  • Tải FW về:
Máy vẽ tranh, viết chữ: https://www.dropbox.com/s/idbkl97obj6f2yw/TKMD_grbl-master_Draw.rar?dl=0
Máy CNC, khắc laser: https://www.dropbox.com/s/55ssiq68xyjfncr/TKMD_grbl-master_Laser.rar?dl=0
****** 2 FW này có chút khác biệt, với máy vẽ tranh, viết chữ, ngõ ra PWM (chân Z+ với GRBL 0.9j) là chân điều khiển RC servo, còn với máy CNC, khắc Laser thì là chân PWM bình thường
  • Copy file nén vừa tải về vào folder libraries của Arduino và giải nén
  • Mở Arduino IDE lên (nên sử dụng bản 1.0.6) và mở chương trình lên (như hình bên dưới), sau đó chọn Upload để đổ FW vào Arduino.Sau khi báo upload thành công thì tắt Arduino IDE.
  • Tải phần mềm Universal GcodeSender để gửi dữ liệu G-code từ máy tính (phần mềm này chạy trên Java nên nếu máy bạn chưa cài Java thì phải cài Java vào trước): https://www.dropbox.com/s/6asiw0812gc488z/G-Code%20Sender%20GRBL.rar?dl=0
  • Cắm cổng USB cho Arduino Uno và mở Universal GcodeSender lên, chọn cổng COM ở Port và nhấn vào Open
 
 Nếu ở màn hình Console hiện lên dòng bên dưới thì coi như cài FW đã thành công
**** Connected to COM23 @ 115200 baud ****
Grbl 0.9j [‘$’ for help]
Giao diện Universal GcodeSender
Vùng Connection: Chọn cổng COM (tùy máy mà khi cắm Arduino vào sẽ tạo ra, nhấn vào mũi tên hướng xuống để chọn cổng đúng), baud (mặc định 115200), nút Open/Close để tắt/mở cổng
Vùng Machine status: Thông báo trạng thái (Active Status) và vị trí máy, vị trí làm việc
Màn hình Console: Hiển thị các lệnh đã nạp và các thông báo
Màn hình Command Table: Hiển thị danh sách các lệnh và tình trạng các lệnh đó
Tab Command: Nhập các lệnh G-Code thủ công
Tab File Mode: Nhập các lệnh G-code từ phần mềm xuất file G-code (nhằm gia công tự động)
Tab Machine Control: Điều khiển máy di chuyển thủ công (thường dùng cân chỉnh máy, dò phôi), nhập khoảng cách cần di chuyển vào Step size và nhấn vào trục cần di chuyển, nhớ chọn đơn vị milimetters
Thiết lập GRBL cho phù hợp với máy CNC mini:
Vào Settings -> Firmware Settings -> GRBL
Bảng thiết lập thông số hiện ra: thứ tự các thông số để cấu hình sẽ bắt đầu bằng $, chúng ta sẽ nhập giá trị lựa chọn vào Value, phần Description là phần diễn giải
Các thông số trong Descriptionbool là nhập vào 0 hoặc 1, còn giá trị nhập vào kiểu mask là kiểu nhị phân 0b00000[thong so 3][thong so 2][thong so 1] (nhớ chuyển giá trị nhị phân này qua số thập phân rồi nhập vô), [thong so 1/2/3]  tương ứng là của trục X/Y/Z
Ví dụ: lựa chọn có sự tác động lên X và Z: 0b00000101, vậy giá trị nhập vào là 5
Các thông số bôi đen là các thông số rất quan trọng
$0           Thời gian mỗi xung cấp cho driver để chạy động cơ, mặc định là 10uS
$1           Thời gian giữ động cơ sau mỗi loạt chuyển động, muốn động cơ luôn được giữ cho thông số bằng 255, giá trị mặc định 25mS
$2           Chọn mức tín hiệu xung ra cho driver điều khiển, chỉ chỉnh khi sử dụng driver có opto cho phép ngõ vào cao hoặc thấp (như driver TB6560/6600..)
$3           Chọn hướng chuyển động cho động cơ mỗi trục.Ví dụ sau khi ráp ta thấy trục Z chạy ngược với mong muốn (nhấn Z+ nó đi xuống và Z- nó đi lên), ta thiết lập lại: $3=4 (0b00000100), hoặc đổi trục X và Z: $3=5 (0b00000101)
$4           Chọn đảo mức tín hiệu cho cho phép chạy động cơ (tương tự $2 và $3)
$5           Chọn đảo mức tín hiệu cho Endstop (công tắc hành trình – các chân Limit), mặc định $5=0, endstop sẽ bị kích hoạt khi chân endstop tương ứng bị tác động mức thấp (0V), nếu chọn $5=1, endstop sẽ bị kích hoạt khi chân endstop tương ứng bị tác động mức cao (5V)
$6           Chọn đảo mức tín hiệu cho cảm biến dò bề mặt phôi
$10         Chọn chế độ phản hồi thông tin khi máy chạy, mặc đinh: $10=3 (chỉ phản hồi vị trí máy và vị trí gia công)
$11         Chọn gia tốc của dao khi gia công, thông số càng lớn dao đi càng nhanh nhưng dễ bị sai số, giá trị mặc định 0.01mm
$12         Chọn sai số khi đi cung tròn, số càng nhỏ đi càng mịn, giá trị mặc định 0.002mm
$13         Chọn chế độ thông báo trạng thái làm việc theo đơn vị Inch, giá trị mặc định là 0 (không chọn Inch, máy sẽ báo về đơn vị mm)
$20         Chọn chế độ giới hạn hành trình bằng phần mềm, sau khi chọn hành trình gia công (thiết lập hành trình gia công này ở $130, $131, $132), máy chỉ cho phép dao chạy trong hành trình này tính từ gốc tọa độ, do đó để chức năng này hoạt động được phải bật cho phép về gốc tọa độ ở $22 (đương nhiên máy phải có endstop)
$21         Chọn chế độ giới hạn hành trình bằng bằng công tắc endstop, bất kỳ công tắc endstop nào bị tác động máy sẽ dừng lại, để máy tiếp tục di chuyển bạn vào Tab Machine Control yêu cầu trục đó di chuyển ra khỏi endstop, khi di chuyển ra khỏi endstop sẽ gặp hiện tượng nhả endstop thì máy lại dừng, bạn làm thêm lần nữa thì nó sẽ ra được.
$22         Chọn cho phép về gốc tọa độ nếu $22=1, sau khi chọn chức năng này, máy sẽ báo Alarm mỗi lần Open, bạn phải nhấn vào nút $H và $X để tiếp tục (trước khi nhấn nhớ kiểm tra dao có bị vướn phôi không, vì sau khi nhấn máy sẽ tự động di chuyển về gốc tọa độ)
$23         Chọn hướng di chuyển về gốc tọa độ (giống như $3)
$24         Chọn tốc độ di chuyển trước khi chạm endstop lần 2, giá trị mặc định 20mm/min
$25         Chọn tốc độ di chuyển trước khi chạm endstop lần 1, giá trị mặc định 100mm/min
$26         Chọn thời gian chờ endstop, giá trị mặc định 250mS
$27         Chọn khoảng di chuyển ngược endstop để chạm lần 2, giá trị mặc định 5mm
Các thông số $20..$27 này khá khó cho các bạn mới làm quen với CNC hoặc gắn endstop chưa phù hợp, do đó không nên thiết lập các thông số này khi chưa quen (dù các thông số này rất hay)
Kinh nghiệp như sau:
Trước hết chọn $21=1 và kiểm tra thử, nếu điều khiển từ Tab Machine Control, trục nào đó đang di chuyển và cố ý chạm công tắc hành trình, nếu trục dừng lại tức là gắn công tắc endstop đã đúng, làm tương tự với các trục còn lại
Sau khi giới hạn hành trình bằng bằng công tắc endstop ở $21 đã được rồi, thử chọn $22=1 và nhấn $H $X, máy tự chạy về gốc tọa độ (nếu hướng chạy về gốc ngược với mong muốn thì chỉnh lại $23)
Các giá trị $24, $25, $26, $27 là nhằm đảm bảo xác định gốc tọa độ chính xác.Giá trị $25 nhỏ sẽ rất tốn thời gian về gốc tọa độ, nhưng nếu giá trị cao sẽ nhanh làm hỏng endstop (và nếu không coi kỹ sẽ bị gãy dao khi dao bị vướn), giá trị $26 là đảm bảo tránh hiện tượng endstop bị nhiễu (giá trị càng cao càng tốt nhưng tốn thời gian), sau khi chạm endstop nó sẽ không gọi ngay điểm đó là gốc mà nó sẽ di chuyển ngược lại 1 đoạn như đã chọn ở $27, sau đó lại chạy vào gốc với tốc độ của $24 (coi như nó chỉ gọi điểm đó là gốc nếu 2 lần chạm giống nhau, điều này giúp tránh hiện tượng endstop tự nhảy do rung động hoặc nhiễu)
$100, $101, $102: chọn số xung cấp cho động cơ tương ứng với di chuyển thẳng 1mm
Do động cơ bước chuyển động xoay (mỗi xung cấp cho động cơ sẽ xoay 1 góc – gọi là 1 bước), chúng ta sẽ dùng các cơ cấu như chuyển động đai kéo, vít-me..để chuyển đổi chuyển động xoay này thành chuyển động thẳng, các thông số này là trung gian cho các chuyển đổi đó.
Cách tính thông số:
Số xung = [(số vi bước) x (số xung động cơ xoay 1 vòng) / (kiểu chuyển động)] x bộ giảm tốc (nếu có)
Trong đó:
Số vi bước: là khả năng chạy vi bước của động cơ mà bạn thiết lập (với DRV8825 cao nhất là vi bước 32, với A4988 và TB6560 cao nhất là 16)
Số xung động cơ xoay 1 vòng: với động cơ có bước là 1.8 độ thì để xoay được 1 vòng (360 độ) nó cần số xung là: 3600/1.80 = 200 xung
Kiểu chuyển động:
Với chuyển động sử dụng bánh đai – dây đai GT2 = số răng trên Puli x 2
Với chuyển động sử dụng vít-me = bước vít-me
Bộ giảm tốc: nếu động cơ gắn trực tiếp vào cơ cấu chuyển động thằng thì giá trị này không cần quan tâm (bằng 1), nếu bạn sử dụng bộ giảm tốc với độ giảm bao nhiêu lần thì số xung sẽ phải nhân lên bấy nhiêu lần.
Ví dụ:
Máy sử dụng động cơ bước 1.8 độ, driver DRV8825, chọn vi bước 32 và không sử dụng giảm tốc
Chuyển động gắn với puli 16 răng và đai GT2: số xung = 32 x 200 / (16 x 2) = 200
Chuyển động gắn với vít-me T8: số xung = 32 x 200 / 8  = 800
$110, $111, $112: chọn tốc độ di chuyển lớn nhất cho các trục X, Y, Z tương ứng.Nên chọn sao cho động cơ chạy mượt (riêng trục Z không nên chọn chạy quá nhanh)
$120, $121, $122: chọn gia tốc di chuyển lớn nhất cho các trục X, Y, Z tương ứng.Nếu chọn gia tốc nhỏ sẽ khó đạt tốc độ tối đa, nhưng chọn cao quá khi chạy động cơ dễ bị sốc hoặc trượt bước
$130, $131, $132: chọn hành trình gia công (vùng không gian cho phép làm việc)
Sau khi thiết lập xong nhấn vào Save để lưu lại.Mở Tab Machine Control lên, nhập vài Step size khoảng cách cần đi thử (ví dụ như 10mm) nhấn vào X+, X-, Y+, Y-, Z+, Z- để xem kết quả, nếu sai kiểm tra lại các thông số $100, $101, $102
Lưu ý: các thông số này được lưu trong eeprom của Arduino, nó sẽ không bị mất đi khi tắt điện hoặc cài lại firmware, do đó sau khi cài firmware phải vào kiểm tra và thiết lập lại cho đúng vì nếu mạch Arduino đã từng được cài GRBL nó sẽ vào lấy các thông số cũ ra để chạy tiếp.
Tham khảo: https://github.com/grbl/grbl/wiki/Connecting-Grbl

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *