Tự động hóa

Hướng dẫn cài đặt marlin

Marlin còn được chỉnh sửa để sử dụng trên các máy CNC mini. Có thể nói Marlin được sử dụng rộng rãi bậc nhất trong số các máy dạng mã nguồn mở hiện nay.
Các đặc điểm nổi bật của Marlin đối với các máy in 3D Reprap gồm có:
  • Hỗ trợ tự động bù thăng bằng bàn nhiệt trước khi in bằng đầu dò (thể sử dụng cả động cơ servo cho cơ cấu đầu dò)
  • Hỗ trợ người dùng khi bù thăng bằng bàn nhiệt thủ công
  • Có tính năng rút ngược nhựa in khi gia công (người dùng có thể chọn rút ngược nhựa in bằng firmware hay bằng slicer)
  • Tính năng ngăn chặn sự cố nhiệt độ (quá nhiệt) thông minh
  • Tính năng sao lưu, cập nhật eeprom của vi điều khiển
  • Hỗ trợ đo nhiệt độ bằng cảm biến nhiệt điện trở hoặc cặp nhiệt ngẫu
  • Điều khiển máy in hoàn toàn bằng màn hình LCD và thẻ nhớ SD
  • Hỗ trợ các dạng máy in 3D Cartesian, Delta Polar và SCARA
  • Giao tiếp với máy tính thông qua cổng USB (COM ảo)
  • Hỗ trợ tối đa 4 bộ đùn nhựa
Nội dung của bài hướng dẫn này bao gồm:
  • Download Marlin cho các mạch điều khiển máy in 3D, CNC mini.
  • Link hướng dẫn thiết lập Marlin cho các máy in 3D Reprap sử dụng mạch điều khiển với Ramps 1.4.
  • Nạp Marlin đã tùy chỉnh vào mạch điều khiển máy in 3D, CNC mini.

I. Download Marlin cho các mạch điều khiển

Marlin có thể dùng cho nhiều mạch điều khiển máy in 3D khác nhau, trong đó phồ biến nhất là mạch điều khiển gồm có:
  • Mạch vi điều khiển Arduino Mega 2560.
  • Board Ramps 1.4.
  • 4 hoặc 5 driver động cơ bước A4988 hoặc DRV8825.
  • Bộ điều khiển máy in bằng LCD và thẻ SD (không bắt buộc phải có nhưng MME khuyên bạn nên sử dụng vì rất tiện lợi và an toàn)
  • Các cảm biến vị trí (Endstop).
  • Cảm biến đầu dò (không bắt buộc, chỉ cần dùng khi muốn sử dụng tính năng tự động bù cân bằng bàn nhiệt)
Chi tiết các ghép nối các bộ phần của mạch điều khiển có thể xem ở link sau: (đang cập nhật)
Các bạn có thể download Marlin tại link sau: http://www.marlinfirmware.org/index.php/Download. Lưu ý chỉ nên download bản stable (ổn định) mới nhất. Tại thời điểm viết bài này, phiên bản stable mới nhất của Marlin là 1.0.2-1. Download xong và giải nén ta thu được thư mục của firmware (ví dụ Marlin-1.0.2-1), trong đó các file cấu hình của Marlin sẽ nằm trong thư mục con Marlin-1.0.2-1/Marlin
Để sử dụng, thiết lập, nạp Marlin cho các mạch điều khiển máy in Reprap cần phải có chương trình biên dịch tích hợp Arduino. Download Arduino tại link sau: download. Lưu ý, nên chọn phiên bản mới nhất ở dạng *.exe (file cài đặt), tại thời điểm viết bài hướng dẫn này phiên bản mới nhất là 1.6.5 (bạn đọc có thể download bản 1.65 nếu các phiên bản mới hơn không tương thích tại link sau: download).
Sau khi cài đặt Arduino, kết nối mạch vi điều khiển Arduino Mega 2560 với máy tính. Khi kết nối thành công, vào thư mục con Marlin ở trên, mở file “Marlin.ino” (có biểu tượng Arduino màu xanh). Chương trình Arduino sẽ mở ra như sau:
Trước khi chỉnh sửa thiết lập của Marlin, cần phải làm các bước sau:
  • Chọn loại mạch vi điều khiển (Arduino Mega 2560): Vào mục Tool => Board => Chọn Arduino Mega or Mega 2560
  • Chọn vi điều khiển (Arduino Mega 2560): Vào mục Tool => Processor => Chọn ATmega2560 (Mega2560)
  • Chọn Cổng kết nối giữa máy tính và mạch vi điều khiển:
Thiết lập Marlin:
Các thiết lập của Marlin được tùy chỉnh trong file “Configuration.h”. Để sửa file “Configuration.h”, trong giao diện Arduino, click chọn “Configuration.h” như hình sau:
Để xem các thiết lập của Marlin cho các loại máy in 3D (khá dài), bạn đọc xem tại các link sau:
  • Thiết lập Marlin cho máy in 3D Cartesian
  • Thiết lập Marlin cho máy in 3D Delta
  • Thiết lập Marlin cho máy in 3D Polar
Các bài hướng dẫn nêu trên sẽ được hoàn thiện và đăng trong thời gian sắp tới, bạn đọc hãy để ý và theo dõi.

Nạp Marlin cho mạch điều khiển Arduino Mega 2560:

Sau khi thiết lập xong, click vào biểu tượng “Upload”. Phần mềm Arduino sẽ biên dịch và nạp firmware Marlin vào mạch điều khiển Arduino Mega 2560 (có thể lâu tới vài phút).
Khi đã nạp xong, bạn đọc có thể sử dụng bộ điều khiển LCD để kiểm tra các hoạt động của mạch điều khiển (điều khiển động cơ bước, điều khiển nhiệt độ…)

Thiết lập Marlin cho máy in 3D Cartesian (phần 1)

Máy in 3D dạng Cartesian (3 trục Đề-các) là dạng nguyên lý máy in 3D phổ biến nhất hiện nay. Firmware Marlin mặc định hỗ trợ sẵn dạng máy in này trong thiết lập.
Để chuẩn bị thiết lập firmware Marlin, bạn đọc vui lòng chuẩn bị firmware, mạch vi điều khiển (Arduino Mega 2560) và phần mềm biên dịch Arduino như trong bài hướng dẫn.
Các nội dung được trình bày trong Thiết lập Marlin cho máy in 3D Cartesian (phần 1) này gồm có:
  • Thiết lập thông tin mạch điều khiển
  • Thiết lập về nhiệt độ
  • Thiết lập điều khiển PID nhiệt độ cho đầu đùn
  • Thiết lập điều khiển PID nhiệt độ cho bàn nhiệt
  • Các thiết lập ngăn chặn sự cố nhiệt độ cho máy in
Trong file “Configuration.h”, thiết lập các thông số hoạt động của máy in như sau.

Thiết lập thông tin mạch điều khiển:

Marlin_Car_2
Thiết lập loại mạch điều khiển:
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_ULTIMAKER
#endif
Dùng để xác định loại mạch điều khiển cho máy in. Nếu bạn đọc sử dụng mạch điều khiển bằng Arduino Mega2560 và Board Ramps 1.4 thì cần viết lại đoạn code trên như sau:
#ifndef MOTHERBOARD
#define MOTHERBOARD X
#endif
Trong đó:
  • X = 33 nếu muốn điều khiển 1 đầu đùn nhựa, 1 quạt thổi và bàn nhiệt (hay dùng nhất)
  • X = 34 nếu muốn điều khiển 2 đầu đùn nhựa (0 và 1) và bàn nhiệt
  • X = 35 nếu muốn điều khiển 1 đầu đùn nhựa và 2 quạt thổi
  • X = 35 nếu muốn điều khiển 2 đầu đùn nhựa (0 và 1) và 1 quạt thổi
Thiết lập tên máy in:
// #define CUSTOM_MENDEL_NAME “This Mendel”
Dùng để đặt tên cho máy in. Bạn đọc có thể đặt tên tùy ý tuy nhiên không được có dấu và quá dài. Nếu muốn đặt tên máy in là MME, cần sửa lại đoạn code trên như sau:
#define CUSTOM_MENDEL_NAME “MME”
Thiết lập số đầu đùn nhựa:
#define EXTRUDERS 1
Dùng để xác định số đầu đùn của máy in (mặc định như đoạn code trên là 1 đầu đùn). Số đầu đùn tối đa có thể thiết lập là 4, tuy nhiên chỉ nên để tối đa 2 đầu đùn khi sử dụng mạch điều khiển Ramps 1.4.
Thiết lập loại nguồn sử dụng:
#define POWER_SUPPLY 1
Dùng để xác định loại nguồn sử dụng. Bạn đọc có thể để giá trị mặc định (bằng 1), khi đó nếu sử dụng nguồn ATX mạch điều khiển có thể bật/tắt tự động nguồn trước/sau khi vận hành máy in.

Thiết lập nhiệt độ:

Marlin_Car_3
Thiết lập cảm biến nhiệt độ:
#define TEMP_SENSOR_0 -1
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
Dùng để thiết lập loại cảm biến cho đầu đùn thứ nhất (0), thứ hai (1 – nếu có), thứ ba (2 – nếu có), thứ tư (3 – nếu có) và bàn nhiệt (nếu có). Thành phần nào không sử dụng cảm biến nhiệt, nên để giá trị bằng 0. Như vậy nếu bạn đọc dựng máy in 1 đầu đùn, 1 bàn nhiệt, sử dụng cảm biến nhiệt độ kiểu điện trở nhiệt của MME có hệ số beta = 3950 thì sẽ sửa đoạn code trên như sau:
#define TEMP_SENSOR_0 60
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 60
Thiết lập sai khác nhiệt độ cho phép giữa các đầu đùn:
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
Trong khi làm việc, nếu nhiệt độ đo được giữa đầu đùn thứ hai (1) và đầu đùn thứ nhất (0) chênh lệnh quá giá trị cho phép (như trong đoạn code trên là 10 độ C) thì máy sẽ dừng quá trình in. Thiết lập này chỉ áp dùng cho máy in có nhiều đầu đùn.
Thiết lập kiểm tra ổn định nhiệt độ đầu đùn:
#define TEMP_RESIDENCY_TIME 10 // (seconds)
#define TEMP_HYSTERESIS 3 // (degC)
#define TEMP_WINDOW 1 // (degC)
Khi bắt đầu gia công, máy in sẽ đợi tới khi nhiệt độ đầu đùn đo được nằm trong khoảng giá trị yêu cầu (do người dùng đặt, ví dụ 190 hoặc 200 độ C) +- TEMP_WINDOW độ C. Kể từ đó máy in sẽ đếm một quãng TEMP_RESIDENCY_TIME giây. Trong quãng thời gian này nếu nhiệt độ đầu đùn không dao động quá +- TEMP_HYSTERESIS độ C nhiệt độ đầu đùn được xem là ổn định và máy sẽ bắt đầu in.
Như trong đoạn code trên, giả sử người dùng đặt giá trị nhiệt độ khi in là 190 độ C, khi bắt đầu gia công máy in sẽ nung đầu đùn tới nhiệt độ 189 độ C. Sau đó máy in sẽ kiểm tra trong vòng 10 giây tiếp theo. Trong 10 giây đó nếu nhiệt độ đầu đùn nằm trong khoảng 187 – 193 độ C thì máy mới bắt đầu in.
Thiết lập nhiệt độ tối thiểu cho phép:
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
Dùng để thiết lập nhiệt độ tối thiểu cho phép với đầu đùn thứ nhất, hai, ba (0; 1; 2) và bàn nhiệt. Trước khi in nếu nhiệt độ các bộ phận trên đo được nằm dưới ngưỡng cho phép, máy in sẽ không cấp nguồn tới các đầu nung để đảm bảo an toàn. Nếu ở những vùng vào mùa đông nhiệt độ xuống dưới 5 độ C, thì nên giảm các giá trị trong đoạn code trên xuống.
Thiết lập nhiệt độ tối đa cho phép:
#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define BED_MAXTEMP 150
Dùng để thiết lập nhiệt độ tối đa cho phép với các đầu đùn và bàn nhiệt. Đầu nung sẽ bị ngắt nguồn điện nếu nhiệt độ của bộ phận tương ứng tăng cao quá giá trị nhiệt độ thiết lập trong đoạn code trên.
Marlin_Car_4
Thiết lập dòng điện cấp cho bàn nhiệt:
//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4
Bàn nhiệt là phụ tải tốn công suất nhất trên máy in 3D. Nếu nguồn điện cấp cho máy in yếu, có thể khắc phục tạm thời bằng cách giảm cường độ dòng điện theo một hệ số chia (HEATER_BED_DUTY_CYCLE_DIVIDER). Ví dụ muốn giảm cường độ dòng điện cấp cho bàn nhiệt còn một nửa, cần thay đổi đoạn code trên thành như sau:
#define HEATER_BED_DUTY_CYCLE_DIVIDER 2
Lưu ý khi giảm cường độ dòng cấp cho bàn nhiệt, thời gian đợi nung nóng bàn nhiệt sẽ tăng lên đáng kể.

Thiết lập điều khiển PID nhiệt độ cho đầu đùn:

PID là thuật toán điều khiển tự động rất hiệu quả đối với máy in 3D, giúp quá trình điều khiển nhiệt độ nhanh đạt tới giá trị yêu cầu đồng thời giá trị nhiệt độ ít dao động trong quá trình máy vận hành.
Marlin_Car_5
Thiết lập giá trị nhiệt độ kích hoạt PID:
#define PID_FUNCTIONAL_RANGE 10
Khi điều khiển nhiệt độ đầu đùn, máy in sẽ chỉ điều khiển bằng phương pháp PID khi giá trị nhiệt độ đo được nằm trong khoảng giá trị yêu cầu +- sai số ứng với giá trị PID_FUNCTIONAL_RANGE (có giá trị mặc định = 10 độ C như đoạn code trên).
Nếu để PID_FUNCTIONAL_RANGE quá lớn, nhiệt độ đầu đùn có thể lâu đạt tới giá trị yêu cầu. Nếu để PID_FUNCTIONAL_RANGE quá nhỏ, có thể xảy ra hiện tượng nhiệt độ đầu đùn tăng/giảm quá giá trị yêu cầu quá nhiều.
Thiết lập các hệ số cho PID:
#define DEFAULT_Kp 22.2
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114
Mỗi một máy in có một bộ thông số PID phù hợp khác nhau, giá trị của các thông số này phụ thuộc vào rất nhiều yếu tố và cần kinh nghiệm, thời gian để tinh chỉnh. Bạn đọc có thể chọn các hệ số Kp; Ki; Kd như trong đoạn code trên theo thứ tự các bước như sau.
  • Đầu tiên, đặt Ki =0; Kd =0; Kp thấp
  • Tăng dần Kp tới khi tốc độ tăng nhiệt độ chấp nhận được (không quá chậm) và nhiệt độ dao động quanh giá trị yêu cầu với biên độ ổn định. Ghi giá trị Kp lúc này lại, đặt tên là Ku. Cố gắng đo xem thời gian (chu kỳ) dao động của nhiệt độ lúc này là bao nhiêu giây (Tu)
  • Thay đổi giá trị Kp = Ku*0.6; Ki = 2*Kp/Tu; Kd = Kp*Tu/8
  • Tiếp tục thay đổi giá trị Ki và Kd từ từ tới khi nhiệt độ được điều khiển nhanh và ít dao động nhất. Nếu tăng Ki thì nhiệt độ đầu đùn nhanh đạt tới giá trị yêu cầu, tuy nhiên thời gian để nhiệt độ đó ổn định lại kéo dài. Nếu tăng Kd thì nhiệt độ đầu đùn tăng chậm hơn một chút và có cải thiện mức độ ổn định

Thiết lập điều khiển PID nhiệt độ cho bàn nhiệt:

Marlin_Car_6
Kích hoạt điều khiển PID cho bàn nhiệt:
//#define PIDTEMPBED
Để kích hoạt tính năng điều khiển PID nhiệt độ bàn nhiệt, sửa lại đoạn code trên như sau:
#define PIDTEMPBED
Thiết lập các hệ số cho PID điều khiển bàn nhiệt:
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4
Cách thiết lập các hệ số cho PID điều khiển nhiệt độ bàn nhiệt tương tự như đối với điều khiển đầu đùn vừa nêu trên.

Thiết lập ngăn chặn sự cố nhiệt độ cho máy in:

Marlin_Car_7
Thiết lập nhiệt độ tối thiểu trước khi di chuyển đầu đùn:
#define PREVENT_DANGEROUS_EXTRUDE
…….
#define EXTRUDE_MINTEMP 170
Dùng để kích hoạt chế độ bảo vệ đầu đùn. Khi nhiệt độ đầu đùn thấp hơn giá trị EXTRUDE_MINTEMP (trong đoạn code trên có giá trị 170 độ C), máy in sẽ không cho phép di chuyển đầu đùn hoặc đùn nhựa in. Khi đang dựng máy, nếu muốn kiểm tra hoạt động của các động cơ bước,… mà chưa lắp xong bộ đùn nhựa, bạn đọc có thể tắt tính năng bảo vệ này đi để có thể điều khiển các động cơ bước bằng cách thay đổi đoạn code thành:
//#define PREVENT_DANGEROUS_EXTRUDE
Thiết lập chức năng kiểm tra sự cố cảm biến nhiệt độ:
Nếu cảm biến nhiệt độ bị hỏng hoặc bị lỏng (do rung lắc, chuột bọ cắn…), nhiệt độ máy in đo được sẽ thấp hơn giá trị thực tế. Nếu không có tính năng bảo vệ này máy in sẽ luôn cấp điện để nung nóng bộ phận có cảm biến nhiệt độ bị hỏng (đầu đùn và bàn nhiệt). Khi đó nhiệt độ các bộ phận trên có thể quá nóng và có thể làm hỏng các chi tiết của máy in, thậm chí gây ra tai nạn hoặc hỏa hoạn.Marlin_Car_8
Marlin có tính năng kiểm tra cảm biến nhiệt độ bằng cách theo dõi kể từ lần đầu nhiệt độ đạt tới giá trị yêu cầu và giảm xuống, mất bao lâu nhiệt độ mới tăng trở lại giá trị yêu cầu – SAI SỐ. Nếu quá thời gian cho phép mà nhiệt không tăng trở lại, đồng nghĩa với việc xảy ra sự cố (cảm biến nhiệt hoặc đầu nung nhiệt bị hỏng) thì máy in sẽ dừng lại hoàn toàn. Để bật tính năng này, bạn đọc sửa đoạn code trong ảnh thành như sau:
#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds
#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius
#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds
#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius
Trong đoạn code trên SAI SỐ với các đầu đùn là 4 độ C, với bàn nhiệt là 2 độ C.

Phần 2 sẽ hướng dẫn thiết lập firmware Marlin về phần cơ khi và truyền động của máy in 3D dạng Cartesian.
Trước khi thực hiện các nội dung trong hướng dẫn này, bạn đọc hãy xem và kiểm tra bài hướng dẫn Thiết lập Marlin cho máy in 3D Cartesian (phần 1).
Nội dung bài hướng dẫn này bao gồm:
  • Thiết lập phần cơ khí
  • Thiết lập phần truyền động
  • Thiết lập bộ điều khiển LCD và thẻ nhớ SD
Trong file “Configuration.h”, thiết lập các thông số hoạt động của máy in như sau.

Thiết lập phần cơ khí:

Thiết lập đảo tín hiệu kích hoạt Endstop cho 3 trục X; Y; Z:
Marlin_Car_9
Mỗi trục mặc định có 2 Endstop (MAX và MIN). Bạn đọc có thể để tất cả các giá trị giữ nguyên như đoạn code trên. Khi kiểm tra hoạt động của các Endstop trên máy in 3D, nếu có Endstop nào báo sai thì đổi lại giá trị ứng với Endstop đó trong đoạn code trên thành “false”.
Ví dụ: thông thường Endstop sẽ được kích hoạt khi nhấn vào công tắc hành trình của nó. Khi kiểm tra nếu phát hiện Endstop X_MIN hoạt động ngược lại (kích hoạt khi nhả công tắc hành trình) thì cần sửa đoạn code trên thành:
const bool X_MIN_ENDSTOP_INVERTING = false;
Nếu bạn đọc sử dụng Endstop cơ của MME hoặc Endstop quang của MME thì đoạn code trên không cần phải sửa.
Thiết lập đảo hướng âm (dương) các trục tọa độ:
Mặc định Marlin quy định gốc tọa độ nằm ở góc phía trước bên trái bàn nhiệt và hướng dương của các trục tọa độ (X; Y; Z; E – trục tời nhựa in) ứng với hướng chuyển động của đầu đùn nhựa đi ra xa gốc tọa độ.
Marlin_Car_10
Nếu bạn đọc muốn đổi hướng của trục nào (X; Y; Z hoặc các trục E) thì thay giá trị ứng với các trục đó từ “true” thành “false” và ngược lại.
Thiết lập hướng chuyển động của đầu đùn khi về Home:
Home là vị trí máy sẽ di chuyển đầu đùn về trước khi in (thông thường Home trùng với gốc tọa độ tuy nhiên trong một số trường hợp thì không).
Marlin_Car_11
Nếu bạn đọc muốn đầu đùn khi về Home sẽ di chuyển tới Endstop tại vị trí nhỏ nhất của trục (ví dụ tọa độ X0; Y0;…) thì đặt giá trị của dòng lệnh tương ứng với trục đó bằng -1 (như mặc định ở trên). Nếu ngược lại thì đặt giá trị của dòng lệnh tương ứng với trục đó bằng 1.
Thiết lập kích thước bàn nhiệt (tọa độ các điểm mút của bàn nhiệt):
Marlin_Car_12
Thông thường chỉ cần điều chỉnh các giá trị X_MAX_POS; Y_MAX_POS; Z_MAX_POS ứng với kích thước gia công của máy in (tính theo mm).

Thiết lập phần truyền động:

Đối với máy in 3D dạng Cartesian, các bộ phận truyền động bào gồm: truyền động đai trục X; truyền động đai trục Y; truyền động vít me trục Z (một số biến thể sẽ hơi khác một chút).
Marlin_Car_13
  • #define NUM_AXIS 4: thiết lập số trục của máy in, nếu máy in dùng 1 đầu đùn thì số trục là 4 (trục X; Y; Z; E). Nếu sử dụng 2 đầu đùn nhựa thì số trục sẽ là 5,…
  • #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}: thiết lập số bước động cơ trên mỗi trục phải thực hiện để đầu đùn di chuyển theo trục đó 1 mm. số bước này của mỗi động cơ sẽ được viết vào trong dấu {} và phân cách bằng dấu “,” theo thứ tự X; Y; Z; E. Đối với bộ truyền đai răng GT2, puli 20 răng, động cơ bước 1.8 độ thì con số phải thiết lập là 80 bước/mm.
  • #define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 25}: thiết lập tốc độ di chuyển tối đa theo mỗi trục X; Y; Z; E (mm/s)
  • #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}: thiết lập gia tốc di chuyển đầu đùn theo mỗi trục tối đa của máy (khi di chuyển đầu đùn chạy không in). Tính theo mm/s2)
  • #define DEFAULT_ACCELERATION          3000: thiết lập gia tốc di chuyển đầu đùn theo mỗi trục trong quá trình in (mm/s2)
  • #define DEFAULT_RETRACT_ACCELERATION  3000: thiết lập gia tốc kéo ngược nhựa in (mm/s2)
  • #define DEFAULT_XYJERK 20.0: thiết lập hạn chế tốc độ khi đầu đùn đột ngột đối hướng chuyển động trong mặt phẳng XY (mm/s). Giá trị này càng nhỏ thì quá trình in càng chính xác tuy nhiên thời gian in sẽ tăng.
    #define DEFAULT_ZJERK 0.4: thiết lập thay đổi gia tốc khi đầu đùn đột ngột đối hướng chuyển động trong trục Z (trong một vài trường hợp đặc biệt)
    #define DEFAULT_EJERK 5.0: thiết lập thay đổi gia tốc khi sợi nhựa đột ngột thay đổi vận tốc đùn

Thiết lập bộ điều khiển LCD và thẻ nhớ SD:

Nếu bạn đọc sử dụng bộ điều khiển LCD và thẻ nhớ SD tại MME thì quá trình thiết lập đơn giản như sau:
Marlin_Car_14
Sửa đoạn code trong hình trên thành:
#define REPRAP_DISCOUNT_SMART_CONTROLLER
——————————————————————————————
Sau khi hoàn thành xong các bước trong hướng dẫn Thiết lập Marlin cho máy in 3D Cartesian phần 1 và phần 2 này, về cơ bản máy in đã có thể hoạt động tốt. Một số tính năng tiện ích khác (tự động bù thăng bằng bàn nhiệt,…) sẽ được trình bày trong bài viết khác trong thời gian tới.
Bạn đọc có thể kiểm tra bộ điều khiển LCD làm việc bằng cách đấu nối Mạch vi điều khiển ATmega 2560Board RAMPS 1.4Bộ điều khiển LCD / thẻ nhớ SD, nạp chương trình vừa viết trong 2 hướng dẫn (phần 1; 2). Nếu thực hiện đúng, màn hinhd LCD sẽ hiển thị như sau:
Marlin_Car_15
Marlin_Car_16Marlin_Car_17
(Màn hình báo lỗi “Err: MAXTEMP” do các cảm biến nhiệt đọ chưa được nối vào board RAMPS 1.4.)
 tham khảo thêm:

II. LẬP TRÌNH CODE

Mình xin nhắc lại một chút về firmware mình sử dụng trong dự án này là Marlin của Reprap. Các bạn có thể tải về theo đường link cuối bài hoặc bất kì link nào trên internet. Mình không nhắc lại cách thức cài đặt arduino (với các bạn mới làm quen xin hãy đi theo đúng tiến trình, đừng bắt tay ngay vào làm cái này).
Sau khi đã vào được file Marlin.ino các bạn tìm đến tab configuration. Tại tab này chúng ta sẽ tiến hành chỉnh sửa code cho máy in.

Bước 1: Cài đặt ngày giờ và tên tác giả

(cái này thực sự thì không cần thiết nhưng các bạn cũng có thể chỉnh nếu thích ^^ )

  1. #define STRING_VERSION_CONFIG_H __DATE__ "16/5/2016 1930h " __TIME__ // build date and time
  2. #define STRING_CONFIG_H_AUTHOR "(none, default config)"// Who made the changes.

Bước 2: Cài đặt tốc độ giao tiếp qua cổng serial giữa máy in và máy tính


  1. #define BAUDRATE 250000
Như dòng code trên là chúng ta đang để mức 250000, các bạn có thể chỉnh các con số khác như 230400, 115200, 74880 ... Nhưng các bạn lưu ý tốc độ bạn đặt trong code phải giống với tốc độ bạn đặt khi sử dụng phần mềm.

Bước 3: Cài đặt board mạch điều khiển (ví dụ  như mình sử dụng board mạch arduino mega+ramps 1.4)


  1. #define MOTHERBOARD 33 
Arduino mega+ramps 1.4 sử dụng 1 extruder+bed+fan thì được đặt là 33, sử dụng 2 extruder+bed là 34, sử dụng 1 extruder+ 2 fan là 35, sử dụng 2 extruder + fan là 36. Các board khác như Sanguino, GEN ... các bạn hãy tìm trong file boards.h trong thư mục Marlin.

Bước 4: Cài đặt cảm biến nhiệt độ


  1. //// Temperature sensor settings:
  2. // -2 is thermocouple with MAX6675 (only for sensor 0)
  3. // -1 is thermocouple with AD595
  4. // 0 is not used
  5. // 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
  6. // 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
  7. // 3 is Mendel-parts thermistor (4.7k pullup)
  8. // 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
  9. // 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
  10. // 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
  11. // 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
  12. // 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
  13. // 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
  14. // 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
  15. // 10 is 100k RS thermistor 198-961 (4.7k pullup)
  16. // 11 is 100k beta 3950 1% thermistor (4.7k pullup)
  17. // 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
  18. // 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
  19. // 20 is the PT100 circuit found in the Ultimainboard V2.x
  20. // 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
  21. //
  22. // 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
  23. // (but gives greater accuracy and more stable PID)
  24. // 51 is 100k thermistor - EPCOS (1k pullup)
  25. // 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
  26. // 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
  27. //
  28. // 1047 is Pt1000 with 4k7 pullup
  29. // 1010 is Pt1000 with 1k pullup (non standard)
  30. // 147 is Pt100 with 4k7 pullup
  31. // 110 is Pt100 with 1k pullup (non standard)
  32.  
  33. #define TEMP_SENSOR_0 5
  34. #define TEMP_SENSOR_1 0
  35. #define TEMP_SENSOR_2 0
  36. #define TEMP_SENSOR_BED 5
Các bạn phải chọn loại cảm biến mà mình sử dụng là loại gì để điền kí tự cho đúng vào các dòng code bên dưới. Với mình thì mình sử dụng cảm biến nhiệt độ 100K như loại 5 cho cả extruder và bed nên mình để là 5 (cho TEMP_SENSOR_0 và TEMP_SENSOR_BED, 2 cái còn lại mình để là 0 vì mình không sử dụng). Nếu các bạn sử dụng các loại cảm biến khác thì hãy tìm trong danh sách ở bên trên và điền vào cho hợp lý. Nếu các bạn không sử dụng cảm biến thì để là 0. Đây cũng là một công đoạn quan trọng ảnh hưởng khá nhiều tới tốc độ làm việc, tuổi thọ của máy in, chất lượng sản phẩm và tiết kiệm nhựa in. Nếu các bạn chọn không đúng thì có thể dẫn tới máy đo không đúng nhiệt độ, quá cao hoặc quá thấp sẽ làm máy in không hoạt động và hoạt động không tốt.

Bước 5: Cài đặt nhiệt độ tối đa


  1. #define HEATER_0_MAXTEMP 280
  2. #define BED_MAXTEMP 100
Mình để nhiệt độ tối đa cho extruder của mình là 280 độ C và cho bàn in là 100 độ C. Các bạn hãy căn cứ vào chất lượng linh kiện làm máy và công suất nguồn để đặt cho hợp lý. Ví dụ nguồn của các bạn hơi yếu thì không nên để nhiệt độ bàn cao quá. Ngoài ra bạn còn phải chú ý tới loại nhựa bạn sử dụng: PLA thì nhiệt độ in nên để 200-230, ABS thì là 230-250 độ C vì thế đừng để nhiệt độ tối đa thấp quá. Tất cả những mục này bạn hoàn toàn có thể đặt lại khi sử dụng phần mềm điều khiển.

Bước 6: Cài đặt kích thước tối đa của không gian in (cài đặt khoảng tọa độ cho các trục XYZ).


  1. #define X_MAX_POS 170
  2. #define X_MIN_POS 0
  3. #define Y_MAX_POS 130
  4. #define Y_MIN_POS 0
  5. #define Z_MAX_POS 150
  6. #define Z_MIN_POS 0
Với máy của mình hiện mình đang để là trục X 170mm, Y 130mm, Z 150mm. Các bạn có thể chỉnh lại theo kích thước mà máy của bạn cho phép, tuy nhiên bạn không thể để tọa độ âm.

Bước 7: Cài đặt số bước của động cơ trên mỗi đơn vị chiều dài (mm).

Cái này thì mình cũng đã nói ở phần 1, xin được nhắc lại như sau:

  1. #define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,4000,84}
Đây là dòng chúng ta sẽ chỉnh số bước của động cơ trên 1 mm. Công thức tính cho trục X và Y là: số step*16/(số răng của puli*2). Động cơ của mình là 200 step*16/(16 răng*2) =100. Với trục Z, ta tính theo bước ren của trục bạn sử dụng. Mình dùng trục 5mm với bước ren 0,8mm nên sẽ có 200*16/0,8 = 4000. Với extruder bạn phải căn cứ vào tỉ lệ các bánh răng mà extruder sử dụng, của mình là loại 38 răng, mỗi răng 1mm nên sẽ có200*16/38= xấp xỉ 84.

Bước 8: Cài đặt tốc độ, gia tốc


  1. #define DEFAULT_MAX_FEEDRATE          {500, 500, 1, 25}    // (mm/sec)
  2. #define DEFAULT_MAX_ACCELERATION {500,500,40,10000}
Các mục này các bạn có thể chỉnh sửa tùy thuộc vào công suất động cơ và kích thước máy của các bạn. Tuy nhiên, không nên để cao quá để tránh việc rung!
Sau khi đã chỉnh sửa xong các bạn hãy upload vào board arduino của mình sau đó kết nối các linh kiện còn lại (extruder, cảm biến nhiệt độ, bàn đốt ...) vào mạch nhé.

III. CÀI ĐẶT, HIỆU CHỈNH PHẦN MỀM BIÊN DỊCH G-CODE

Trong khuôn khổ bài viết này mình sẽ sử dụng phần mềm Repetier-Host. Do máy tính của mình để tiếng Nga nên rất khó để minh họa cho các bạn, vì vậy các bạn hãy xem video hướng dẫn bên dưới.
IV. SỬ DỤNG MÁY IN VÀ MỘT SỐ KINH NGHIỆM CỦA MÌNH
Sau khi các bạn đã làm quen với phần mềm điều khiển máy in 3d (phần mềm biên dịch G-code) chúng ta bắt đầu test và sử dụng máy in nhé.
  • Việc đầu tiên các bạn cần có file hình cho máy in (thường là file .stl). Bạn có thể sử dụng phần mềm vẽ 3d bất kì (autocad, solider, google sketch up,...) để tạo hình sau đó export thành file .stl.
  • Cắm nguồn cho máy in, kết nối máy in với máy tính.
  • Chọn file .stl, sau đó chọn vị trí muốn in ra.
  • Chọn độ dày mỗi lớp, chọn độ đặc của sản phẩm.
  • Ấn nút bắt đầu in.

Các kinh nghiệm của bản thân mình

  • Các bạn hãy mua 1 chai cồn axeton sau đó lấy ít nhựa in (loại ABS) bỏ vào đó. Sau một thời gian nó sẽ bị axeton hòa tan, ta có một dung dịch lỏng. Trước mỗi lần in hãy bôi một lớp mỏng dung dịch này lên bề mặt của bàn in. Làm như vậy thì sản phẩm của chúng ta sẽ bám bàn in rất tốt, và phương pháp này rẻ hơn nhiều so với việc sử dụng loại băng dính chuyên dụng - băng keo chịu nhiệt màu vàng to bảng(các bạn có thể sẽ thấy trên internet).
  • Các bạn dùng 1 tấm kính mỏng 2-3mm đặt lên bên trên bàn in. Lấy mấy cái kẹp giấy kẹp chặt vào bàn in. Làm vậy ta có thể bảo vệ được bàn in không bị bẩn và lâu hỏng, cũng như là tăng độ nhẵn cho bàn (vì mặt của bàn in hơi mấp mô (có hàng chữ in nổi).
  • Phải căng chỉnh thật cân bàn in và độ cao giữa 2 trục Z. Đây là một trong những yếu tố quan trọng nhất ảnh hưởng đến chất lượng sản phẩm.
  • Nhiệt độ đối với nhựa ABS: extruder là 250, bed là 90. Nhiệt độ đối với nhựa PLA: extruder là 230, bed là 70.
  • Sử dụng phần mềm điều khiển Cura sẽ giảm thời gian in rất nhiều (thường là giảm 50-90 % thời gian in so với Repetier-Host). Tuy nhiên phần mềm này lại không cho phép các bạn Pause.
  • Motor đẩy nhựa của extruder càng để gần với đầu in của máy thì sẽ cho chất lượng in càng cao và càng làm giảm khả năng bị tắc nhựa. Mình cũng đã thay đổi kết cấu máy của mình để phù hợp hơn.
  • Phải làm giảm tối đa độ rung của các trục (đặc biệt là trục Z khi mà đặt motor extruder vào gần đầu phun).

About Mr. Facebook

0 nhận xét:

Đăng nhận xét