Để máy hoạt động cần phải có vi điều khiển để điều khiển hoạt động của máy, để vi điều khiển có thể điều khiển chính xác các thiết bị phần cứng trong máy cần phải có firmware phù hợp với các thông số phù hợp tương thích với phần cứng của máy. Đối với mô hình máy in 3D, sử dụng firmware Marlin là firmware phổ biến nhất dễ dàng tùy biến các thông số để phù hợp với các cấu hình phần cứng của các loại máy in 3D khác nhau. Các thông số cần thiết lập cho firmware bao gồm: thiết lập thông số board mạch, cảm biến nhiệt, các thông số cho động cơ bước, bộ đùn nhựa, đầu dò (nếu có), thông số bộ PID điều khiển tốc độ động cơ, ….
Thiết lập thông số Baudrate: Để việc truyền và nhận giữ liệu được đồng bộ thì giữa vi điều khiển và phần mềm giao tiếp phải cùng một thông số baudrate. Baudrate là thông số chỉ số bit truyền trong 1s. Để thiết lập thông số baudrate, thay đổi chỉ số của dòng lệnh thành thông số baudrate cần thiết lập. Một số thông số có thể sử dụng như 9600, 11250, 25000, …
#define BAUDRATE 250000.
Thiết lập thông số về board mạch: Có nhiều board mạch có thể sử dụng để điều khiển máy in 3D như RAMPS, MELZI, … mỗi board mạch sẽ có thông số thiết lập khác nhau để tương thích với firmware. Thiết lập thông số board mạch trong dòng lệnh dưới :
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif.
Thiết lập số lượng đầu phun: Thay đổi số lượng đầu phun trong dòng lệnh sau:
#define EXTRUDERS 1
Thiết lập giá trị cảm biến nhiệt: tương tự như thiết lập thông số board mạch thì mỗi loại cảm biến nhiệt có 1 giá trị khác nhau, firmware marlin hỗ trợ tối đa 3 cảm biến nhiệt cho đầu phun nhựa và 1 cảm biến nhiệt cho bàn nhiệt.
#define TEMP_SENSOR_0 6
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
Thiết lập tọa độ di chuyển cho máy: để máy motor quay đúng chiều theo hệ tọa độ thì ta cần phải thiết lập thông số trong firmware. Dùng phương pháp thử sai để thiết lập các thông số này. Cho các trục tọa độ di chuyển theo một phương nhất định, nếu trục tọa độ di chuyển ngược hướng thì thay đổi câu lệnh từ True thành False hoặc ngược lại. Thiết lập tọa độ máy trong các câu lệnh ở dưới:
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
Thay đổi hướng về home của 3 trục tọa độ: Trước khi máy bắt đầu in thì các trục tọa độ phải về gốc tọa độ để gia nhiệt cho đầu phun, bàn nhiệt, … Để các trục di chuyển về gốc tọa độ phù hợp ta cần thiết lập hướng di chuyển cho các trục. Phương pháp thiết lập tương tự như thiết lập tọa độ di chuyển cho máy, nếu hướng về home không mong muốn thì đổi giá trị từ -1 thành 1 hoặc ngược lại. Các thông số được thiết lập trong các câu lệnh sau:
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
Thiết lập không gian làm việc cho máy: Cần phải giới hạn không gian làm việc của máy theo như phần cứng đã thiết kế là lắp đặt. Các thiết lập về không gian làm việc của máy được thay đổi ở những câu lệnh dưới đây:
#define X_MAX_POS 200
#define X_MIN_POS 0
#define Y_MAX_POS 200
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0
Thiết lập số trục tọa độ: Firmware hỗ trợ điều khiển tối đa 5 trục tương ứng với 3 truc X, Y, Z và 2 trục tọa độ tương ứng với 2 đầu phun nhựa. Thay đổi các thông số trong câu lệnh sau:
#define NUM_AXIS 4
Thiết lập tốc độ về home: Thông số thiết lập tốc độ khi đưa các trục về gốc tọa độ, thay đổi các thông số trong câu lệnh:
#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}
Thiết lập các thông số về tốc độ tối đa và gia tốc tối đa của các trục trong các câu lệnh sau:
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000}
Thiết lập module LCD: Nếu sử dụng LCD để giao tiếp điều khiển máy in ta thay đổi thiết lập trong firmware bằng cách thêm dòng lệnh sau trong firmware:
#define REPRAP_DISCOUNT_SMART_CONTROLLER
Thiết lập thông số step/mm: Đây là thông số quan trọng nhất khi điều khiển, nó xác định giá trị số vòng quay cần thiết của động cơ để vít me hoặc đai dịch chuyển được 1mm. Để thiết lập các thông số này cần thực hiện qua 2 bước:
Bước 1: Tính toán sơ bộ giá trị step/mm.
Bước 2: Tinh chỉnh lại các thông số.
Tính toán sơ bộ các giá trị: tùy thuộc vào bộ truyền và cách điều khiển động cơ mà các thông số này khác nhau
Đối với bộ truyền đai:
H là khoảng di chuyển thủ công, (H = 50mm) I là khoảng dịch chuyển thực tế.
Đối với các trục X, Y, Z ta in thử mẫu in dạng hôp có kích thước 50x50x50 mm, sau đó đo lại các kích thước và thực hiện tính toán lại các thông số như công thức ở trên.
Lặp lại các bước canh chĩnh trên nhiều lần để có thể đạt giá trị chính xác nhất. Sau khi có các giá trị cần thiết, thiết lập lại các thông số trong các dòng lệnh sau:
#define DEFAULT_AXIS_STEPS_PER_UNIT {160,160,320,185}