Trong đồ án này nhóm sử dụng chƣơng trình viết sẵn, có tên là GRBL. Lý do nhóm sử dụng chƣơng trình viết sẵn này vì:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65
- Đây là một chƣơng trình hoàn chỉnh (không phải dạng thƣ viện với các hàm con lấy ra sử dụng) đƣợc nghiên cứu và phát triển dựa theo các loại máy CNC trong thực tế.
- Chƣơng trình điều khiển máy khắc laser này mô phỏng theo cách hoạt động của máy CNC, sử dụng nhiều các phép tính toán để có thể tính toán các chuyển động, các chế độ làm việc theo mã lệnh G-code (là loại mã đƣợc sử dụng trong các máy CNC).
- Chƣơng trình này đã đƣợc cập nhật chỉnh sửa nhiểu lần để có thể hoạt động hiệu quả và tận dụng cấu hình của vi điều khiển ATmega328P.
- Là mã nguồn mở cho phép mọi ngƣời có thể tự do sử dụng không dùng cho mục
đích thƣơng mại.
Giải thuật điều khiển và lƣu đồ chƣơng trình, nhóm đều viết dựa theo chƣơng trình GRBL. Trong quá trình tự tìm hiểu và nghiên cứu có thể sẽ có thiếu sót.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66
GIẢI THUẬT ĐIỀU KHIỂN MÁY KHẮC LASER BẮT ĐẦU
KHỞI TẠO CÁC NGÕ VÀO, NGÕ RA
CẤU HÌNH CÁC THÔNG SỐ LÀM VIỆC CỦA MÁY
ĐƢA MÁY VÀO TRẠNG THÁI
CẢNH BÁO
TÍNH TOÁN DỮ LIỆU TỪ KHỐI
G-CODE
ĐIỀU KHIỂN ĐỘNG CƠ BƢỚC VÀ ĐẦU KHẮC LASER NÚT ABORT Đ BIẾN HỦY CHƢƠNG TRÌNH BẰNG 1 S NÚT FEED HOLD Đ BIẾN TẠM DỪNG BẰNG 1 S NÚT RESUME Đ XÓA BIẾN TẠM DỪNG BIẾN BẮT ĐẦU BẰNG 1 NÚT E- STOP KHÓA MÁY MÁY VÀO TRẠNG THÁI CHỜ S
KIỂM TRA BIẾN TRẠNG THÁI BIẾN HỦY CHƢƠNG TRÌNH S BIẾN TẠM DỪNG Đ MÀY VÀO TRẠNG THÁI TẠM DỪNG XÁC ĐỊNH VỊ TRÍ BAN ĐẦU
HOẶC MỞ KHÓA MÁY Đ S KIỂM TRA NÚT NHẤN S BIẾN BẮT ĐẦU Đ S Đ Đ XỬ LÝ DỮ LIỆU CHUYỂN THÀNH CÁC KHỐI LỆNH G-CODE HOẶC LỆNH HỆ
THỐNG XÓA BIẾN KẾT THÚC XÓA BIẾN TẠM DỪNG BIẾN BẮT ĐẦU BẰNG 1 CÓ DỮ LIỆU Đ S THỰC HIỆN XONG Đ
XÓA BIẾN BẮT ĐẦU BIẾN KẾT THÚC
BẰNG 1 S
S
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67
Khi cấp điện, hệ thống sẽ khởi tạo các ngõ vào, ngõ ra và cài đặt các thông số làm việc cho máy khắc laser.
Sau đó, hệ thống đƣa máy vào trạng thái báo động để khóa máy. Để máy có thể hoạt động đƣợc thì phải xác định vị trí ban đầu cho máy (tìm gốc tọa độ cho vùng làm việc của máy) hoặc mở khóa máy. Có thể dùng một trong hai cách trên tùy vào mục đích sử dụng của ngƣời vận hành.
Xét trƣờng hợp đầu tiên là khi chƣơng trình đƣợc nạp vào vi điều khiển là mới hoàn toàn chƣa chỉnh sửa các thông số làm việc và máy cũng vừa mới lắp ráp. Chính vì thế ta sẽ cần chạy thử riêng ở từng trục của máy để xác định xem động cơ có quay đúng hƣớng điều khiển hay số bƣớc trên mili-mét có đúng hay không (đây là tham số để máy có thể di chuyển đúng khoảng cách đƣợc yêu cầu),… nói chung là để điều chỉnh các thông số làm việc đúng với khung máy và động cơ bƣớc tƣơng ứng. Vì thế ta chọn lệnh mở khóa máy để có thể tự do điều khiển và điều chỉnh.
Xét trƣờng hợp tiếp theo là sau khi đã chỉnh sửa các thông số làm việc hoàn chỉnh sẵn sàng để vận hành, ta cần phải xác định vùng làm việc của máy để máy có thể làm việc chính xác. Vì vậy cần phải xác định tọa độ gốc của vùng làm việc.
Tiếp đến, máy vào trạng thái chờ, sẵn sàng làm việc. Khi có dữ liệu truyền đến, hệ thống sẽ xử lý dữ liệu, chuyển đổi thành các khối lệnh G-code (các lệnh chuyển động) hoặc lệnh hệ thống (các lệnh cấu hình máy hoặc chuyển động đặc biệt). Sau đó, hệ thống sẽ đặt biến kết thúc bằng 0, biến tạm dừng bằng 0 và đặt biến bắt đầu bằng 1.
Tiếp theo, hệ thống kiểm tra các nút nhấn. Nếu nhƣ không nhấn bất kì nút nào trong lúc máy vận hành, hệ thống sẽ tiếp tục kiểm tra các biến trạng thái và phát hiện biến bắt đầu bằng 1, các dữ liệu trong khối lệnh G-code đƣợc tính toán qua nhiều bƣớc để cho ra xung điều khiển, điều khiển động cơ bƣớc và laser hoạt động đúng theo dữ liệu đã cho. Khi thực hiện xong một chuyển động, hệ thống đặt biến bắt đầu bằng 0 và biến kết thúc bằng 1. Hệ thống đƣa máy về trạng thái chờ và phát hiện có dữ liệu thì sẽ tiếp tục nhƣ trên cho đến khi không còn dữ liệu nào thì máy sẽ vào trạng thái chờ, sẵn sàng cho công việc tiếp theo.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68
Nếu nhấn nút E-Stop, thì toàn bộ hệ thống sẽ khởi động lại từ đầu (đây chính là nút Reset vi điều khiển), dùng cho trƣờng hợp khẩn cấp khi trong quá trình vận hành có gặp bất kì sự cố gì, máy sẽ dừng ngay lặp tức và đƣợc đƣa vào trạng thái báo động.
Nếu nhấn nút Abort (hủy) khi máy đang làm việc, biến hủy chƣơng trình bằng 1, hệ thống kiểm tra các biến trạng thái và phát hiện biến hủy chƣơng trình bằng 1 thì sẽ đƣa máy vào trạng thái báo động và khóa máy.
Nếu nhấn nút Feed Hold (tạm dừng) khi máy đang làm việc, biến tạm dựng bằng 1, hệ thống kiểm tra và phát hiện biến tạm dừng bằng 1 thì sẽ đƣa máy vào trạng thái tạm dừng và quay lại kiểm tra nút nhấn. Khi này hệ thống sẽ dừng cấp xung điều khiển cho động cơ bƣớc và laser. Chỉ khi nào phát hiện biến tạm dừng bằng 0 khi nhấn nút Resume (tiếp tục) thì hệ thống sẽ tiếp tục vận hành hoặc khi nhấn nút E-Stop hoặc Abort để thoát ra và khóa máy.
Trên đây chỉ là tổng quát về cách hệ thống hoạt động từ lúc khởi động đến khi hoàn thành xong công việc.
Ta tiếp tục tìm hiểu về lƣu đồ chƣơng trình chính của máy khắc laser (đƣợc viết dựa theo hàm main.c trong chƣơng trình)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69
LƢU ĐỒ GIẢI THUẬT MÁY KHẮC LASER BẮT ĐẦU
KHỞI TẠO CÁC NGÕ VÀO/RA CÀI ĐẶT CÁC THÔNG
SỐ LẦM VIỆC KHỞI TẠO CÁC BIẾN
TOÀN CỤC HỆ THỐNG ĐỒNG BỘ HÓA VỊ TRÍ IN TIN NHẮN CHÀO KIỂM TRA VÀ GỬI THÔNG BÁO
VỀ TRẠNG THÁI HIỆN TẠI CỦA
MÁY
HỆ THỐNG CHÍNH CỦA GRBL BẮT ĐẦU Ở ĐÂY
XỬ LÝ VÀ PHÂN TÍCH DỮ LIỆU LÊN KẾ HOẠCH ĐỂ ĐIỀU KHIỂN CÓ DỮ LIỆU Ở CỔNG NỐI TIẾP Đ KIỂM TRA CÁC BIẾN THỜI GIAN
THỰC VÀ THỰC THI CÁC LỆNH
LIÊN QUAN
HỦY CHƢƠNG TRÌNH ĐƢA MÁY VÀO
TRẠNG THÁI BÁO ĐỘNG DÙNG CHẾ ĐỘ HOMING Đ S S ĐƢA MÁY VÀO TRẠNG THÁI CHỜ RESET CÁC BIẾN HỆ THỐNG (KHỞI TẠO GIÁ TRỊ
0)
RESET HỆ THỐNG CHÍNH CỦA GRBL (KHỞI TẠO HỆ
THỐNG CHÍNH) Đ ĐƢA MÁY VÀO TRẠNG THÁI BÁO ĐỘNG S ĐƢA CỜ BÁO BẮT ĐẦU LÊN MỨC 1 KIỂM TRA CÁC BIẾN THỜI GIAN
THỰC VÀ THỰC THI CÁC LỆNH
LIÊN QUAN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70
Trên đây là lƣu đồ giải thuật chính của máy khắc laser. Khi cấp nguồn cho mạch điều khiển, chƣơng trình sẽ khởi tạo các biến toàn cục hệ thống nhầm chứa các thông tin về báo động lỗi, trạng thái làm việc,…
Tiếp đến là khởi tạo hệ thống bao gồm nhƣ cấu hình tốc độ Baud và ngắt của giao tiếp UART, nạp các thông số cấu hình đƣợc lƣu trong bộ nhớ EEPROM, cấu hình các chân cấp xung cho driver động cơ bƣớc và các ngắt của timer, cấu hình các chân ngõ vào của vi điều khiển cho nút nhấn và ngắt thay đổi trạng thái chân, cho phép ngắt toàn cục.
Sau đó, hệ thống kiểm tra có sử dụng chế độ Homing không? Đây là chế độ yêu cầu ngƣời dùng máy phải thực hiện việc xác định tọa độ gốc (0,0) của vùng làm việc trƣớc khi đƣa dữ liệu từ máy tính vào. Mặc định của chƣơng trình là chƣa kích hoạt chế độ này, nên ta phải kích hoạt chế độ này lên (sẽ đƣợc nói ở phần sau).
Máy sẽ vào trạng thái báo động (Alarm) nếu dùng Homing hoặc chờ (Idle) nếu không dùng Homing.
Tiến đến là vòng lặp của chƣơng trình chính (main loop), mỗi khi hủy việc truyền dữ liệu vào thì chƣơng trình sẽ quay lại đây. Khởi tạo giá trị đầu cho các biến hệ thống (reset các biến này khi hủy việc truyền dữ liệu).
Rồi khởi tạo lại hệ thống chính nhƣ xóa các bộ đệm cổng nối tiếp, thiết lập trạng thái mặc định cho bộ phân tích G-code, khởi tạo chân cấp xung cho driver laser, cấu hình chân ngõ vào của vi điều khiển cho công tắc hành trình và ngắt thay đổi trạng thái chân, xóa bộ đệm khối G-code và bộ đệm kế hoạch, khởi tạo các biến dùng trong bộ tính toán bƣớc (reset các biến khi hủy việc truyền dữ liệu).
Tiếp theo là đồng bộ hóa vị trí của G-code và bộ kế hoạch theo vị trí máy. Ở bƣớc này sẽ quy đổi số bƣớc thành khoảng cách (mili-mét) nhờ vào tham số số bƣớc trên mili- mét đã đƣợc đề cập ở phần tổng quát giải thuật điều khiển máy khắc laser.
Và sau đó là in tin nhắn chào “Grbl 1.1e ['$' for help]”. Khi chƣơng trình chạy tới đây, tức là phần khởi tạo đã hoàn thành và máy đã sẵn sàng để làm việc.
Chƣơng trình chính (main) sẽ gọi một vòng lặp khác để thực hiện công việc. Trong vòng lặp đó mọi công việc từ lấy dữ liệu ở cổng nối tiếp, đến việc xử lý và phân tích dữ liệu, rồi cuối cùng là tạo ra các khối công việc nạp vào bộ đệm sẵn sàng cho việc thực thi.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71
Ta gọi nó là hệ thống chính của GRBL. Bên cạnh đó, cỏn có một hệ thống phụ là một trình phục vụ ngắt có nhiệm vụ lấy dữ liệu trong các khối công việc của bộ đệm và sử dụng nó để điều khiển động cơ bƣớc và laser.[5]
Hệ thống chính sẽ kiểm tra trạng thái hiện tại của máy và gửi thông báo.
Tiếp đến, hệ thống chính sẽ kiểm tra dữ liệu nhận đƣợc từ máy tính ở cổng nối tiếp. Hệ thống chính liên tục lấy dữ liệu từ cổng nối tiếp để xử lý, phân tích và tính toán dữ liệu, chuyển thành các khối công việc rồi nạp vào bộ đệm. Sau đó, hệ thống sẽ kiểm tra các biến thời gian thực và thực thi các lệnh liên quan nhƣ kiểm tra nút nhấn, tính toán gia tốc cho các chuyển động và hệ thống phụ hoạt động. Khi bộ đệm đầy, hệ thống chính sẽ không gửi phản hồi về máy tính để lấy thêm dữ liệu nữa và chờ cho đến khi hệ thống phụ thực hiện xong chuyển động và xóa khối vừa thực thi. Khi bộ đệm trống, hệ thống chính sẽ gửi phản hồi về máy tính để máy tính tiếp tục gửi dữ liệu và hệ thống chính sẽ tiếp tục làm việc. Cứ nhƣ vậy cho đến khi nào máy tính truyền hết dữ liệu và khối công việc trong bộ đệm đƣợc thực thi hết.
Nếu nhƣ không hủy chƣơng trình đang chạy thì vòng lặp hệ thống chính của GRBL sẽ thực thi đến khi hết dữ liệu trong bộ đệm. Ngƣợc lại, hệ thống sẽ vào trạng thái báo động, sau đó trở về vòng lặp chƣơng trình chính và sẽ reset lại toàn bộ.
Trƣớc khi đi vào phân tích sâu hơn về hệ thống bên trong, ta cần biết dữ liệu sẽ đƣợc biến đổi nhƣ thế nào.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72 CHUỖI DỮ LIỆU TỪ SERIAL CÁC LỆNH G- CODE CÁC LỆNH HỆ THỐNG CÁC KHỐI CÔNG VIỆC XUNG ĐIỀU KHIỂN BỘ PHÂN TÍCH G-CODE BỘ LÊN KẾ HOẠCH BỘ TÍNH TOÁN BƢỚC BẮT ĐẦU TRỞ VỀ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73
Chuỗi dữ liệu từ máy tính đƣợc truyền vào mạch điều khiển đi qua cổng nối tiếp (serial). Sau đó đƣợc xử lý và phân tích để chuyển thành các lệnh G-code hoặc lệnh hệ thống và đƣợc tạo thành các khối G-code. Tiếp đến các khối G-code đƣợc đƣa vào bộ lên kế hoạch, hệ thống sẽ tính toán vận tốc, số bƣớc, hƣớng quay của động cơ,… và giá trị điện áp cấp cho mạch điều khiển laser, rồi nạp vào bộ đệm kế hoạch. Cuối cùng, bộ tính toán bƣớc sẽ lấy dữ liệu của các khối công việc trong bộ đệm kế hoạch để tính toán gia tốc cho chuyển động từ đó điều khiển động cơ bƣớc theo dữ liệu đƣợc tính toán.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74
LƢU ĐỒ XỬ LÝ VÀ PHÂN TÍCH DỮ LIỆU-LÊN KẾ HOẠCH ĐỂ ĐIỀU KHIỂN
BẮT ĐẦU XỬ LÝ DỮ LIỆU LỆNH G-CODE Đ TẠO KHỐI LỆNH G-CODE S LỆNH HỆ THỐNG Đ LỆNH LIÊN QUAN ĐẾN CHUYỂN ĐỘNG S THIẾT LẶP CÁC THÔNG SỐ LÀM VIỆC S GỬI THÔNG BÁO
SAI TỪ LỆNH TÍNH TOÁN KHOẢNG CÁCH SỐ BƢỚC CẦN THỰC HIỆN HƢỚNG QUAY CỦA ĐỘNG CƠ LÊN KẾ HOẠCH VẬN TỐC KHỞI ĐỘNG CHO CÁC KHỐI TÍNH TOÁN VẬN TỐC GIAO
NHAU TỐI ĐA VẬN TỐC DUY TRÌ CHO MỖI
KHỐI
XẾP CÁC KHỐI VÀO BỘ ĐỆM KỆ HOẠCH
TRỞ VỀ
Đ
Hình 4.27: Lưu đồ chương trình con về xử lý và phân tích dữ liệu-lên kế hoạch để điều khiển
Trên đây là lƣu đồ về xử lý và phân tích dữ liệu – lên kế hoạch điều khiển. Dữ liệu đƣợc truyền từ máy tính vào sẽ đƣợc xử lý trƣớc nhƣ bỏ khoảng trắng, bỏ chú thích (phần nằm trong dấu ngoặc tròn) và chuyển các ký tự nhỏ (thƣờng) thành ký tự lớn (in hoa).
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75
Sau đó, hệ thống sẽ phân tích dữ liệu đó, nếu là lệnh G-code thì sẽ bắt đầu tạo khối lệnh G-code. Dữ liệu trong khối lệnh G-code sẽ đƣợc dùng để tính toán khoảng cách, số bƣớc cần thực hiện và chiều quay của động cơ. Tiếp theo bộ lên kế hoạch (planner) sẽ tính toán vận tốc giao nhau giữa các chuyển động khác hƣớng, việc này giúp điều chỉnh tốc độ khi chuyển hƣớng chuyển động, giúp động cơ không bị trƣợt bƣớc và máy sẽ hoạt động không chính xác. Tính toán vận tốc duy trì cho chuyển động của các khối và xếp chúng vào bộ đệm kế hoạch. Cuối cùng, bộ lên kế hoạch sẽ tính toán vận tốc khởi động của các khối trong bộ đệm và lên kế hoạch sao cho vận tốc giao nhau giữa các khối không vƣợt quá giá trị vận tốc giao nhau tối đa hoặc giá trị vận tốc duy trì của các khối liền kề, tốc độ khởi động của khối tiếp theo không đƣợc vƣợt quá tốc độ thoát của khối trƣớc đó.
Nếu dữ liệu vào là lệnh hệ thống thì cũng có hai trƣờng hợp. Trƣờng hợp thứ nhất là lệnh hệ thống để cấu hình cài đặt cho máy, thiết lặp các thông số làm việc cho máy khắc. Trƣờng hợp thứ hai là lệnh hệ thống liên quan đến chuyển động, ở đây cụ thể là lệnh di chuyển đến vị trí đầu “$H” (Homing). Lúc này chu trình làm việc cũng giống nhƣ khi có lệnh G-code nhƣng các thông số liên quan đến chuyển động này đƣợc thiết lập thông qua lệnh hệ thống và chuyển động của nó cũng đơn giản hơn. Chỉ di chuyển một trục theo một hƣớng đến khi gặp đƣợc công tắc hành trình thì xác lập đƣợc tọa độ ban đầu của trục đó, sau khi xong một trục thì sẽ làm trục còn lại.[3]
Nếu nhƣ dữ liệu đƣa vào không phải lệnh G-code hoặc lệnh hệ thống thì sẽ đƣợc coi là sai lệnh và sẽ gửi thông báo.
Sau đó hệ thống sẽ tiến hành kiểm tra các biến hệ thống để thực thi các lệnh liên quan.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76
LƢU ĐỒ KIỂM TRA CÁC BIẾN HỆ THỐNG VÀ THỰC THI CÁC LỆNH LIÊN QUAN
BẮT ĐẦU
KIẾM TRA BIẾN CỜ CẢNH BÁO
KIẾM TRA BIẾN CỜ TRẠNG THÁI
NẠP DỮ LIỆU CHO BỘ TÍNH TOÁN BƢỚC
TRỞ VỀ
Hình 4.28: Lưu đồ chương trình con về kiểm tra các biến hệ thống và thực thi các lệnh liên quan
a) Đầu tiên, hệ thống sẽ kiểm tra biến cờ báo động.
Nếu nhƣ có cờ báo động đƣợc đƣa lên thì sẽ thiết lặp trạng thái báo động và gửi