Máy in 3D (phần 2 - Hiệu chỉnh phần mềm và sử dụng máy in)

I. GIỚI THIỆU

Trong phần 1 mình đã chia sẻ với các bạn về quá trình dựng máy in 3d của mình, trong phần thứ 2 này mình xin tiếp tục chia sẻ với các bạn về phần lập trình code, hiệu chỉnh phần mềm và sử dụng máy in 3d.

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 ^^ )

#define STRING_VERSION_CONFIG_H __DATE__ "16/5/2016 1930h " __TIME__ // build date and time
#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

#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)

#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 độ

//// Temperature sensor settings:
// -2 is thermocouple with MAX6675 (only for sensor 0)
// -1 is thermocouple with AD595
// 0 is not used
// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
// 3 is Mendel-parts thermistor (4.7k pullup)
// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup)
// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup)
// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup)
// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup)
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
// 11 is 100k beta 3950 1% thermistor (4.7k pullup)
// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)
// 13 is 100k Hisens 3950  1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" 
// 20 is the PT100 circuit found in the Ultimainboard V2.x
// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
//
//    1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
//                          (but gives greater accuracy and more stable PID)
// 51 is 100k thermistor - EPCOS (1k pullup)
// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup)
// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup)
//
// 1047 is Pt1000 with 4k7 pullup
// 1010 is Pt1000 with 1k pullup (non standard)
// 147 is Pt100 with 4k7 pullup
// 110 is Pt100 with 1k pullup (non standard)

#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#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

#define HEATER_0_MAXTEMP 280
#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).

#define X_MAX_POS 170
#define X_MIN_POS 0
#define Y_MAX_POS 130
#define Y_MIN_POS 0
#define Z_MAX_POS 150
#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:

#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

#define DEFAULT_MAX_FEEDRATE          {500, 500, 1, 25}    // (mm/sec)
#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).

Dưới đây là một số hình ảnh sản phẩm và videos máy in của mình

 

Đây là link các thứ liên quan tới dự án của mình: https://www.dropbox.com/sh/bdd8vwvo333vy3l/AABR9IG43jvEXmPlafKeuqtYa?dl=0 (backup)

CHÚC CÁC BẠN CÓ KÌ NGHỈ CUỐI TUẦN VUI VẺ!

Youtube: 
lên
22 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino

Chắc hẳn trong các bạn ai cũng đã từng có một dự án nào đó liên quan tới truyền tín hiệu không dây và chắc các bạn đã từng làm việc với các module radio frequence 433Mhz. Nếu như đã làm việc với các module này thì không ít trong các bạn có thể đã gặp nhiều vấn đề khó giải quyết liên quan tới xung đột thư viện (như tôi sad). Ngoài ra các module này có khoảng cách thu phát sóng khá ngắn, lại không thể thu phát hai chiều. Vì những lý do trên, tôi đã tìm kiếm một loại module không dây khác để thay thế cho các module 433Mhz nhằm khắc phục các điểm yếu trên.

lên
42 thành viên đã đánh giá bài viết này hữu ích.

Lập trình LCD 1602 với chip 74HC595

Xin chào các bạn! Các bạn đã làm quen với LCD 1602 ở bài viết "Điều khiển LCD bằng Arduino UNO". Mình xin chia sẻ với các bạn một cách khác để kết nối LCD này với board arduino, đó là sử dụng chip 74HC595. Để kết nối màn hình qua cách này chúng ta phải tốn 3 chân của arduino (nhiều hơn 1 chân so với dùng mạch I2C) nhưng chip 595 lại có giá thấp hơn modul I2C 5-10 lần (chỉ khoảng 1-2k VNĐ).devil

lên
14 thành viên đã đánh giá bài viết này hữu ích.