Hệ thống điều khiển trên máy in 3D quyết định toàn bộ quá trình hoạt động của máy. Board mạch như là đầu não của máy, làm nhiệm vụ điều khiển các linh kiện: Cảm biến, động cơ bước, điện trở gia nhiệt cho cụm đầu in và bàn in và các thiết bị khác đi kèm. Máy in 3D nhận dữ liệu ở dạng G-code NC được tạo ra từ các phần mềm hỗ trợ quá tình in 3D, hệ thống điện làm nhiệm vụ điều khiển toàn kết cấu cơ khí theo các dòng lệnh trong toàn bộ chương trình được nạp vào trong máy.
Nguyên lý chung của hệ thống điều khiển trên máy in 3D là vậy, nhưng với mỗi hãng sản xuất khác nhau sẽ có những thay đổi. Bài viết này giới thiệu về hệ thống điều khiển trên máy in 3D RepRap (sử dụng các thiết bị và linh kiện điện tử đơn giản nhất, giá rẻ), kể từ khi công nghệ in 3D ra đời rất nhiều thiết bị được sản xuất để phục vụ cho lĩnh vực này. Thông qua bài viết này, mọi người sẽ hiểu rõ được nguyên lý của hệ thống điều khiển tự động trên máy in 3D
1/ Cấu tạo phần hệ thống điện trên máy in 3D
Phần điều khiển có những nhiệm vụ là
- 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.
- Điều khiển thêm một số chức năng phụ khác(Tuỳ thuộc vào từng loại máy)
1.1/ Vi điều khiển
Board điều khiển trong đồ án này nhóm quyết định sử dụng board Arduino Mega 2560 do board mạch dễ sử dụng ngay cả với những người không chuyên, sự phổ biến dễ tìm kiếm, ngôn ngữ lập trình dễ hiểu, phần cứng được kết nối dễ dàng.
Board mạch Arduino mega 2560 là board mạch vi xử lý được thiết kế nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Board mạch được xây dựng trên nền tảng vi xử lý ATmega 2560 8bit. Board mạch có 54 chân digital I/O, 16 chân analog input, sử dụng bộ tạo dao động 16Mhz. Có thể sử dụng nguồn thông qua cổng USB hoặc nguồn DC từ 6 đến 20V.
Vi xử lý | Atmega 2560 |
Điện áp hoạt động | 5 V |
Điện áp vào (khuyên dùng) | 7 – 12 V |
Điện áp vào (tối đa) | 6 – 20 V |
Digital I/O Port | 54 (15 chân PWM) |
Analog Port | 16 |
Dòng điện trên các chân I/O | 20 mA |
Dòng điện vào | 50 mA |
Bộ nhớ Flash | 256 KB (8 KB cho bootloader) |
SRAM | 8 KB |
EEPROM | 4 KB |
Bộ dao động | 16 MHz |
Chiều dài board | 101,52 mm |
Chiều rộng board | 53,3 mm |
Khối lượng board | 37 g |
Vi điều khiển có thể lập trình và flash code dễ dàng bằng phần mềm Arduino IDE. Có thể sử dụng ngôn ngữ lập trình C/C++ để lập trình. Nhìn chung ngôn ngữ lập trình của nó tương đối đơn giản và dễ hiểu ngay cả với người không chuyên về vi điều khiển. Phần mềm được dùng để flash code cho board Arduino Mega 2560 là phần mềm Arduino IDE. Phần mềm có giao diện trực quan, dễ sử dụng. Hệ thống thư viện và mã nguồn dành cho arduino mega khá lớn do đó thuận tiện cho quá trình sử dụng.
1.2/ Board kết nối
Để kết nối các thiết bị ngoại vi như driver, công tắc hành trình ta có thể nối dây trực tiếp vào board vi điều khiển, tuy nhiên với số lượng driver nhiều số lượng dây nhiều sẽ dễ kết nối sai dây dấn đến mạch điện ko điều khiển được và nặng hơn có thể dẫn dến cháy board arduino. Một điều nữa là khi số lượng dây nối quá lớn thì tính thẩm mỹ không cao.
Một giải pháp để giải quyết vấn đề này là sử dụng một board giao tiếp trung gian để kết nối giữa board vi điều khiển vào các thiết bị khác. Có nhiều board trung gian được phát triển hiện nay như RAMPS, Melzi, Generation.
Mỗi loại board mạch đều có ưu điểm riêng, để lựa chọn một board mạch phù hợp cho công việc cần phải tính đến các yếu tố như giá thành, khả năng hỗ trợ của board mạch, khả năng mở rộng, sự tiện lợi đơn giản khi lắp đặt, sự phổ biến của board mạch. Kết hợp các yếu tố trên để có thể lựa chon board mạch cần cho máy. So sánh giữa các board kết nối thường dùng thỉ board RAMPS là board mạch có thể đáp ứng những yêu cầu trên
RAMPS là board mạch được thiết kế để kết nối các thiết bị điện cần thiết cho một máy in 3D với kích thước nhỏ gọn và giá thành rẻ. Board được thiết kế với các plug in có thể thể sử dụng với các driver cho động cơ bước và dễ dàng mở rộng. Các linh kiện trong board mạch có thể thay thế dễ dàng khi có hư hỏng. Board RAMS được thế kế để giao tiếp với board Arduino Mega 2560 với nền tảng mạnh mẽ và hỗ trợ mở rộng board mạch khá tốt. Board mạch dược thiết kế để dễ dàng kết nối và lắp đặt với các thiết bị khác.
Một số đặc tính của board RAMPS
- 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.
1.3/ Driver động cơ bước
Một bộ phận không thể thiếu điều khiển động cơ bước đó là driver. Driver như là một mạch phân phối xung cho động cơ, làm nhiệm vụ cấp điện cho động cơ bước hoạt động. Có 2 loại driver được sử dụng khá nhiều trong các máy in 3D hiện nay là driver A4988 và DRV8825.
- Driver A4988 có giải điện áp hoạt động từ 8 V – 35 V. Nhiệt độ tối đa 1500C.
- Điện thế điều khiển 3,3 V – 5 V.
- Dòng trung bình (RMS): 1 A, dòng đỉnh: 2 A.
- 5 Độ phân giải khác nhau: đủ bước, nửa bước, 1/4, 1/8, 1/16. Sơ đồ khối
- Driver A4988 có chế độ lựa chọn vi bước khác nhau tùy vào 3 chân MS1, MS2, MS3.
- Tùy vào kiểu số chân MS nối với VCC khác nhau ta có thể điều khiển với các vi bước khác nhau.
MS1 | MS2 | MS3 | Vi bước |
Không nối | Không nối | Không nối | Đủ bước |
VCC | Không nối | Không nối | Nửa bước |
Không nối | VCC | Không nối | 1/4 |
VCC | VCC | Không nối | 1/8 |
VCC | VCC | VCC | 1/16 |
Để sử dụng chế độ vi bước lớn nhất 1/16 ta kết nối 3 jumper vào board mạch.
1.4/ Công tắc hành trình
Công tắc hành trình là thiết bị phản hồi nhằm giới hạn hành trình chuyển động của máy. Board RAMPS hỗ trợ tối đa 6 chân cắm công tắc hành trình, một vị trí min và một vị trí max cho mỗi trục.
Đặc điểm của công tắc hành trình là nó là các tiếp điểm của nó có thể đóng hay mở khi các bộ phận di động của máy thực hiện một hành trình di động nhất định. Nếu công tắc hành trình dùng để chuyển đổi mạch ở cuối hành trình thì ta gọi là công tắc cuối hành trình. Tùy theo kết cấu công tắc hành trình có thể chia thành các loại: kiểu nhấn, kiểu đòn, kiểu quay, …. Trong đồ án này, sử dụng công tắc hành trình kiểu nhấn.
Công tắc hành trình luôn có 3 chân chân COM, chân NC, chân NO. Do đó cũng tương tự có 2 kiểu đấu dây công tắc hành trình là đấu kiểu NO và đấu kiểu NC.
- Đối với kiểu NC: nối chân S trên board RAMPS với chân NC, nối chân (-) trên board mạch với chân C.
- Đối với kiểu NO: nối chân S trên board RAMPS với chân NO, nối chân (-) trên board mạch với chân C.
1.5/ Màn hình LCD
Màn hình LCD có chức năng hiển thị tọa độ, các thông số và trực tiếp in ấn mà không cần phải thông qua kết nối với máy tính. Ở đây ta dùng module LCD 2004.
1.6/ Cảm biến nhiệt
Cảm biến nhiệt cho phép ta biết được giá trị nhiệt độ của đều phun nhựa, bàn nhiệt (nếu có), từ đó quản lý và điểu khiển được giá trị nhiệt độ này trước cũng như trong quá trình in. Board RAMPS hỗ trợ cho ta 3 khe cắm cảm biến nhiệt cho đầu phun nhựa và bàn nhiệt. Sử dụng 2 dây nối cho cảm biến nhiệt, kết nối vào bo mạch tại các vị trí T0, T1, T2 cho đầu phun 1, bàn nhiệt (nếu có), đầu phun 2 (nếu có).
Điện trở gia nhiệt
Điện trở gia nhiệt có tác dụng đốt nóng gia nhiệt cho cục nóng giúp cho nhựa nóng chảy. Điện trở gia nhiệt được kết nối vào cổng D10 trên board mạch RAMPS.
Sau khi kết nối board mạch và các linh kiện điện tử, chúng sẽ có một hệ thống điện hoàn chỉnh.
2/ Thiết lập thông số Firmware cho hệ thống điều khiển
Để 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ố.
Để có thể thiết lập được các thông số trong phần firmware của máy in 3D, cần phải tính toán từ kết cấu cơ khí: Truyền động đai và truyền động vít me là các thành phần cần phải tính toán để có được thống số của máy sau đó nhập vào trong firmware.
Đố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}