Phần điều khiển

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ VÀ NGHIÊN CỨU MÁY IN 3D COREXY (Trang 61)

Phần mềm điều khiển thực hiện cấp xung, điều khiển chuyển động của động cơ bước các trục chuyển động, điều khiển nhiệt độ đầu phun nhựa, điều khiển bộ tời nhựa, điều khiển quạt làm mát đầu phun, quạt làm mát sản phẩm.

Vi điều khiển: Đồ án này sử dụng board arduino mega 2560, dễ sử dụng, phổ biến, ngôn ngữ lập trình đơn giản và kết nối phần cứng dễ dàng. Board arduino mega 2560 bao gồm:

 54 chân digital (15 có thể được sử dụng như các chân PWM)  16 đầu vào analog,

 4 UARTs (cổng nối tiếp phần cứng),  1 thạch anh 16 MHz,

 1 cổng kết nối USB,  1 jack cắm điện,  1 đầu ICSP,  1 nút reset.

Hình 3. 16 Sơ đồ khối các linh kiện điện tử

Hình 3. 17 Board arduino mega 2560

Board kết nối giúp kết nối các thiết bị ngoại vi như driver, công tắc hành trình một cách an toàn, gọn gàng và mang tính thẩm mĩ cao. Đồ án sử dụng board RAMPS với các đặc tính như:

 Dòng điện cung cấp từ 12V – 24V  Điện áp 5A – 30A

 Tương thích với máy in 3D theo tọa độ Dercartes, robot delta  Có khả năng mở rộng để với các thiết bị ngoại vi khác

 3 mosfet cho quạt tản nhiệt và bộ gia nhiệt, 3 mạch điều khiển nhiệt độ  Cầu chì 5A bảo vệ

 Cấp dòng cho bàn nhiệt lên tới 11A  Cung cấp 5 khe cắm driver

 Hỗ trợ điều khiển 2 tối đa 2 trục Z đối với các máy Prusa  Hỗ trợ LCD SD Card

 Báo tín hiệu bằng LED khi gia nhiệt  Có thể hỗ trợ kết nối servo

 Các chân I2C và SPI để thuận lợi cho việc mở rộng board mạch  Tất cả các chân mosfet đều được kết nối vào chân PWM

 Hỗ trợ kết nối USB chuẩn B

Hình 3. 18 Board RAMPS

Driver stepper motor thực hiện cấp điện cho động cơ bước hoạt động. Đồ án sử dụng driver A4988 vì tính phổ biến và giá thành rẻ.

 Driver A4988 có giải điện áp hoạt động từ 8 V – 35 V

 5 Độ phân giải khác nhau: đủ bước, nửa bước, 1/4, 1/8, 1/16  Dòng trung bình (RMS): 1 A, dòng đỉnh: 2 A

 Điện thế điều khiển 3,3 V - 5 V  Nhiệt độ tối đa 1500C

Hình 3. 19 Driver A4988

3.4 Hệ thống phần mềm điều khiển máy in 3D 3.4.1 Phần mềm điều khiển

Hình 3. 20 Giao diện phần mềm Pronterface

Phần mềm điều khiển máy in giúp thực hiện các thao tác vận hành máy bằng tay đơn giản, dễ dàng hơn so với LCD, có thể thực hiện các thao tác di chuyển các trục, gia nhiệt và đồng thời nhập các lệnh Gcode cho các quá trình test máy, căn chỉnh bàn in. Có nhiều phần mềm điều khiển máy in 3D như repertier host, pronterface …. Trong đồ án, sử dụng phần mềm pronterface. Phần mềm pronterface

là phần mềm miễn phí có ưu điểm là dung lượng phần mềm nhỏ, giao diện trực quan, dễ sử dụng.

Phần mềm CAM là phần mềm có nhiệm vụ cắt lớp mẫu 3D sau đó tạo đường chạy nhựa sau đó xuất ra dưới dạng file Gcode. Có nhiều phần mềm CAM được sử dụng với máy in 3D, trong đề tài nhóm sử dụng phần mềm Slic3r là phần mềm được sử dụng tương đối nhiều. Slic3r có khá nhiều thông số thiết lập cùng với nhiều đường chạy nhựa từ đó có thể tối ưu được chất lượng mẫu in.

Hình 3. 21 Giao diện phần mềm slic3r

3.4.2 Các kiểu chạy nhựa

Slic3r cung cấp khá nhiều đường chạy nhựa khác nhau để có thể lựa chọn đường chạy nhựa tối ưu cho từng loại mẫu in khác nhau.

- Kiểu rectilinear và kiểu line về cơ bản là giống nhay về kiểu chạy tuy nhiên kiểu line giữa các đường chạy nhựa có liên kết với nhau do đó có giảm thời gian các đường chạy không khác với kiểu rectilinear không có sự liên kết với nhau do đó tốn thêm thời gian cho khoảng chạy không in.

- Kiểu hilbertcure các đường chạy nhựa có nhiều đường gấp khúc do đó không nên chạy với tốc độ cao do quán tính và gia tốc tại những vị trí này là khá lớn sẽ là ảnh hưởng đến máy và chất lượng mẫu in.

- Kiểu honeycomb, archimedeanchords, 3dhoneycomb là các kiểu chạy nhựa tượng đối phù hợp với lớp ở phía trong khi với những kiểu chạy nhựa này có thể in với tốc độ cao hơn.

- Kiểu rectilinear, linear, concentric thường dùng cho những lớp đáy và lớp phía trên của mẫu in do đạt được thẩm mĩ cao hơn mặt khác những lớp này không yêu cầu chạy tốc độ cao nên có thể sử dụng được những kiểu này. 3.4.3 Thiết lập Firmware

Do firmware được tải về là firmware mã nguồn mở, được sử dụng cho tất cả các máy in 3D khác nhau, do đó ta phải thiết lập firmware sao cho phù hợp với máy in được thiết kế về các chức năng sử dụng, kích thước vùng in, các chức năng bảo vệ và tốc độ.

Firmware tải về là file Marlin-1.1.x.zip, giải nén ra tìm vào folder Marlin- 1.1.x\Marlin, tìm đến file Marlin.ino mở bằng Arduino IDE. Firmware Marlin 1.1.8 có rất nhiều tab, nhưng để thiết lập cho phù hợp với máy in, mình chỉ cần xét 2 tab: Configuration.h và Configuration_adv.h.

Tab Configuration.h:

Trong tab này, ta cài đặt các thông số chức năng như sau:

 #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 Đường kính sợi nhựa in là 1.75mm

 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 #define TEMP_SENSOR_BED 1

Lựa chọn cảm biến nhiệt sử dụng, trong trường hợp này, 1 là cảm biến nhiệt trở 100k, được sử dụng cho cả đầu đùn và bàn nhiệt.

 #define HEATER_0_MINTEMP 5 #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 #define HEATER_4_MINTEMP 5 #define BED_MINTEMP 5

Cài đặt nhiệt độ tối thiểu cho đầu đùn và bàn in, đây là một chức năng bảo vệ kiểm tra cảm biến nhiệt có bị lỗi hay không.

Nhiệt độ này được cài đặt thấp hơn tầm 5oC so với nhiệt độ thấp nhất của môi trường tại nơi mình ở.

 #define HEATER_0_MAXTEMP 250 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 #define HEATER_4_MAXTEMP 275 #define BED_MAXTEMP 120

Cài đặt nhiệt độ tối đa cho đầu đùn và bàn in, đây là một chức năng bảo vệ kiểm tra cảm biến nhiệt có bị lỗi hay không.

Nhiệt độ này được cài đặt bằng với nhiệt độ tối đa mà mình sử dụng, đối với những máy có họng chặn nhiệt sử dụng ống PTFE, cài đặt nhiệt độ này là 250oC. Bàn in cài đặt là 120oC do không có loại nhựa nào thực sự cần sử dụng bàn in quá nhiệt độ này.

 #define DEFAULT_Kp 22.2 #define DEFAULT_Ki 1.08 #define DEFAULT_Kd 114

Cài đặt thông số PID cho đầu nhiệt.

 #define PREVENT_COLD_EXTRUSION #define EXTRUDE_MINTEMP 170

Cài đặt chống đùn nguội, khi chức năng này được kích hoạt, nếu nhiệt độ đầu đùn dưới 170oC thì động cơ đùn sẽ không quay, tránh cho tình trạng bánh răng đẩy nhựa mài mòn nhựa in do nhựa ko đùn đc.

 #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders

#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed

Cài đặt bảo vệ mất nhiệt cho máy in.

 #define COREXY //#define COREXZ //#define COREYZ //#define COREYX //#define COREZX //#define COREZY

Lựa chọn cơ cấu máy in, trong trường hợp này, lựa chọn COREXY

 #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG

#define X_MIN_ENDSTOP_INVERTING false #define Y_MIN_ENDSTOP_INVERTING false #define Z_MIN_ENDSTOP_INVERTING true #define X_MAX_ENDSTOP_INVERTING false #define Y_MAX_ENDSTOP_INVERTING false #define Z_MAX_ENDSTOP_INVERTING false

#define Z_MIN_PROBE_ENDSTOP_INVERTING true

Cài đặt endstop, trong trường hợp này, máy in sử dụng 3 endstop X Min, Y Min, Z Min, đối với X, Y, endstop sử dụng công tắc hành trình nên xài đặt logic là false (khi bấm endstop tín hiệu lên 1), còn đối với Z, endstop sử dụng cảm biến tiệm cận từ NPN, nên cài đặt logic là true (khi có endstop tín hiệu xuống mức 0). Do Z_MIN_PROBE với Z_MIN_ENDSTOP trong trường hợp này là một nên cài đặt logic cho cả 2 phải giống nhau và đều là true.

 #define DEFAULT_AXIS_STEPS_PER_UNIT{ 80, 80, 400, 500 } #define DEFAULT_MAX_FEEDRATE{300, 300, 5, 25 } #define DEFAULT_MAX_ACCELERATION{3000, 3000, 100, 10000} #define DEFAULT_ACCELERATION 3000 #define DEFAULT_RETRACT_ACCELERATION 3000 #define DEFAULT_TRAVEL_ACCELERATION 3000 #define DEFAULT_XJERK 10.0 #define DEFAULT_YJERK 10.0 #define DEFAULT_ZJERK 0.3 #define DEFAULT_EJERK 5.0 Các cài đặt về chuyển động:

- Dòng đầu tiên cài đặt về số bước của động cơ (đơn vị step/mm)

Động cơ lựa chọn là loại động cơ bước xung 1.8 độ/step, vi bước cài đặt cho driver là 1/16, từ đó tính ra số bước trên một vòng quay là ����/��� 66

Pulley gắn ở động cơ là loại pulley 16 răng, đai răng GT2 (2mm/bước răng) 

một vòng quay của pulley là 40mm.

Sử dụng công thức ở Chương 2, phần 1.c, tính tọa độ X, Y theo di chuyển của 2 động cơ, ta thấy để đầu đùn chỉ di chuyển theo trục X, A và B phải ngược dấu, tức động cơ quay cùng chiều. Giả sử cho động cơ A và động cơ B quay cùng chiều 1 vòng ngược chiều kim đồng hồ, A = 32mm và B = - 32mm, thay vào công thức ta thu được X = -32mm  để X đi 1mm, động cơ phải quay 1/32 vòng, và với 3200 step một vòng, ta thu được thông số step/mm của X là 100 step/mm. Tương tự với Y.

Với Z, ta sử dụng động cơ giống X và Y, và dùng vít me bước 8mm, tức là với một vòng quay của vít me, trục Z đi lên (xuống) 8mm, do đó thông số step/mm của Z là 3200/8=400 step/mm.

Với động cơ đùn, thông số được đưa ra bởi nhà sản xuất.

Do các thông số được tính toán ở điều kiện chuẩn, ở thực tế, một số sai số kĩ thuật có thể khiến cho các thông số này không còn chính xác, dẫn đến sai số, do đó thực tế các thông số này sẽ được tính lại ở bước căn chỉnh.

- Dòng thứ hai cài đặt về tốc độ di chuyển tối đa của đầu đùn và bàn in (đơn vị mm/s)

- Dòng thứ ba cài đặt về gia tốc tối đa của đầu đùn và bàn in (đơn vị mm/s2 ) - Dòng thứ 4, 5, 6 cài đặt về gia tốc mặc định của đầu đùn và bàn in (đơn vị mm/s2 )

- Dòng thứ 7, 8, 9, 10 cài đặt về chỉ số Jerk của đầu đùn và bàn in (đơn vị mm/s2 )

Chỉ số Jerk là chỉ số tốc độ mà đầu đùn hoặc bàn in bắt đầu di chuyển từ vị trí tốc độ bằng 0.

 //#define PROBE_MANUALLY #define FIX_MOUNTED_PROBE

//#define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector. //#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles //#define BLTOUCH

#if ENABLED(BLTOUCH)

//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed #endif

Lựa chọn loại Z Probe sử dụng cho máy in. Trong trường hợp này sử dụng loại FIX_MOUNTED_PROBE, sử dụng cho các loại cảm biến như cảm biến tiệm cận hoặc cảm biến bằng kim phun.

 #define X_PROBE_OFFSET_FROM_EXTRUDER 34 #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 #define Z_PROBE_OFFSET_FROM_EXTRUDER 0

Cài đặt về vị trí tương ứng của Probe so với vị trí kim phun. Giá trị X Y offset được lấy từ thiết kế cơ khí của máy.

Nếu cảm biến ở bên trái kim phun, X mang dấu -, nếu ở bên phải thì mang dấu +. Nếu cảm biến ở phía trước kim phun, Y mang dấu -, nếu ở đằng sau thì mang dấu +.

Thông số Z Offset tạm để mặc định là 0, sẽ được tìm chính xác sau bước căn chính máy.

Nếu cảm biến ở bên dưới kim phun, Z mang dấu -, nếu ở bên trên thì mang dấu +.  #define XY_PROBE_SPEED 8000 #define MULTIPLE_PROBING 2 #define Z_CLEARANCE_DEPLOY_PROBE 10 #define Z_CLEARANCE_BETWEEN_PROBES 5 Cài đặt về chuyển động của probe.

- Dòng thứ nhất là cài đặt về tốc độ di chuyển của đầu đùn khi probe (đơn vị mm/phút).

- Dòng thứ hai là cài đặt về số lần probe tại một điểm, đảm bảo về độ chính xác. - Dòng thứ 3 là cài đặt về khoảng cách bàn in di chuyển lên xuống sau mỗi điểm probe.

- Dòng thứ 4 là cài đặt về khoảng cách bàn in di chuyển lên xuống sau mỗi lần probe tại 1 điểm probe.

 #define INVERT_X_DIR false #define INVERT_Y_DIR true #define INVERT_Z_DIR false #define INVERT_E0_DIR false #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false #define INVERT_E4_DIR false

Cài đặt về chiều chuyển động của các động cơ, có thể thay đổi ở firmware hoặc thay đổi ở ngay trên phần cứng bằng cách đảo chiều dây cắm.

 #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1

Cài đặt về chiều home. “-1” thể hiện cho việc gốc HOME lấy ở điểm (X, Y, Z) = (0, 0, 0)

 #define X_BED_SIZE 200 #define Y_BED_SIZE 200

#define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0

#define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 200

Cài đặt về kích thước vùng in:

- Dòng 1, 2 cài đặt về kích thước bàn in theo hướng X và Y. - Dòng 3, 4, 5 cài đặt về vị trí nhỏ nhất mà đầu đùn có thể đi tới. - Dòng 6, 7 cài đặt về vị trí lớn nhất mà đầu đùn có thể đi tới. - Dòng 8 cài đặt về độ cao tối đa của vùng in.

 //#define AUTO_BED_LEVELING_3POINT #define AUTO_BED_LEVELING_LINEAR //#define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL

//#define MESH_BED_LEVELING Cài đặt về kiểu cân bàn in tự động:

- AUTO_BED_LEVELING_3POINT: Tự động cân bàn in tại 3 điểm.

- AUTO_BED_LEVELING_LINEAR: Tự động cân bàn in đối với bàn in phẳng.

- AUTO_BED_LEVELING_BILINEAR: Tự động cân bàn in đối với bàn in cong.

- AUTO_BED_LEVELING_UBL: Tự động cân bàn in đối với bàn in không đều.

- MESH_BED_LEVELING: Cân bàn in thủ công đối với bàn in không đều. Máy sẽ đưa kim phun đến những điểm cụ thể trên bàn in để người dùng có thể tự điều chỉnh vị trí Z thích hợp cho từng điểm, áp dụng cho máy không có cảm biến cân bàn in.

 #define LEFT_PROBE_BED_POSITION 45 #define RIGHT_PROBE_BED_POSITION 180 #define FRONT_PROBE_BED_POSITION 30

#define BACK_PROBE_BED_POSITION 180

Cài đặt khung mà các điểm probe sẽ được thực hiện, chú ý là các điểm ở đây được tính là tọa độ của cảm biến, không phải của kim phun, tọa độ của cảm biến được tính bằng tọa độ kim phun theo công thức sau:

�� = �� + ������� �� = �� + �������

Trong đó: Xs, Ys là tọa độ của cảm biến Xn, Yn là tọa độ của kim phun

�������,� là vị trí tương đối của đầu phun và kim phun.

Hình trên thể hiện sơ đồ tọa độ của bàn in, gốc HOME nằm ở góc trái phía trước.

 #define MANUAL_X_HOME_POS -21 #define MANUAL_Y_HOME_POS -20 #define MANUAL_Z_HOME_POS 0

Xác định tọa độ tương đối của điểm HOME so với vị trí của endstop, nhiều máy in đặt vị trí của endstop nằm ngoài vị trí gốc của bàn in, do đó giá trị này để đặt điểm HOME về đúng vị trí thực của nó. Chú ý: nếu điểm home nằm ở phía dương của điểm endstop, thì giá trị đưa vào đây là giá trị âm.

 //#define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING)

#define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) 70 #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) #endif

Chức năng này nếu được kích hoạt, khi HOME sẽ HOME trục X rồi trục Y, xong đưa đầu đùn về vị trí giữa bàn in rồi mới HOME Z, để đảm bảo cho Z Probe nằm trong bàn in khi HOME.

 // Homing speeds (mm/m)

#define HOMING_FEEDRATE_XY (50*60) #define HOMING_FEEDRATE_Z (4*60)

Cài đặt tốc độ HOME (đơn vị mm/phút), nếu giá trị này lớn hơn giá trị tốc độ tối đa, thì sẽ lấy theo tốc độ tối đa.

 #define SKEW_CORRECTION

Cài đặt chỉnh vuông góc XY, do chế tạo cơ khí rất khó đạt được sự vuông góc X và Y, do đó chức năng này sẽ làm nhiệm vụ chỉnh lại sao cho X và Y vuông góc với nhau, tính toán cho phần này sẽ được trình bày kĩ hơn ở bên dưới phần căn chỉnh.

 #define SKEW_CORRECTION_FOR_Z

Tương tự căn chỉnh vuông góc XY, ở đây dành cho XZ và YZ.

 #define PREHEAT_1_TEMP_HOTEND 200 #define PREHEAT_1_TEMP_BED 60 #define PREHEAT_1_FAN_SPEED 0 #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 110 #define PREHEAT_2_FAN_SPEED 0

Cài đặt thông số cho chức năng cho quá trình preheat, Preheat 1 là dành cho PLA, Preheat 2 là dành cho ABS.

 #define SDSUPPORT Cho phép sử dụng thẻ nhớ

 #define SD_CHECK_AND_RETRY

Kiểm tra có thẻ nhớ hay không trong lúc máy đang bận. Nếu không kích hoạt

Một phần của tài liệu ĐỀ TÀI THIẾT KẾ VÀ NGHIÊN CỨU MÁY IN 3D COREXY (Trang 61)