完整的文檔下載:
3D打印機制作心得.docx
(23.7 KB, 下載次數: 35)
2017-3-7 11:53 上傳
點擊文件名下載附件
3d打印固件配置 下載積分: 黑幣 -5
在之前我買了一臺3D打印機,但是為了制作出數量多的3D作品出售,我決定制作出一臺3D打印機。你可能問為什么不買一臺呢?因為買一臺的價格最便宜的在700元左右,自己制作在600元左右,還有就是可以更清楚的了解3D打印機的原理。便開始了我的3D打印機制作之旅。最開始是買原材料,這時候就犯難了,不知道需要買那些材料,型號是好多。經過訊問我的好友,在他的幫助下才得知,就連一些拿不穩的零件也是他幫忙給選取的。因為他也在搞3D打印技術,對于機械這方面我了解不是很多。(之后將型號和截圖制作的完整資料免費分享出來)選取型號前后就花了一周的時間,然后就開始搞軟件部分。(軟件截圖和文件)跟我好友借了塊arduino板子,型號為Mega2506 arduino主控板、RAMPS1.4驅動板+5個A4988驅動模塊。頭天晚上我去實驗室的時候遇到3D打印班的老師,就向他請教如何將固件給刷進去。首先在國外官網下載馬林固件,然后用arduino IDE打開馬林文件后綴名為.ino的一個文件,出現很多文件。找到Configurstion.h文件然后向下翻(這里詳細的可以在百度搜教程:馬林固件配置)找到第一項配置 (1)波特率配置 #define BAUDRATE 250000
//#define BAUDRATE 115200
該行是用來決定主控板使用何種波特率來與電腦上的控制軟件進行通信的。通常是用250K和115.2K兩種波特率選擇,要選擇何種波特率,只要將該行前面的”//” 刪除,不選擇何種波特率只需要在該行前添加“//” ,選擇哪種波特率只要更改250000這也數就行。 (2)主控板 —型號配置 根據你的主板型號的不同配置也不同 #ifndef MOTHERBOARD #defineMOTHERBOARD 33 //33這個值標示型號為Mega2506 arduino主板、RAMPS1.4驅動板 #endif 你可以在注釋里可以看到Marlin固件支持的主控板清單,通過修改#defineMOTHERBOARD 這行的數字,選擇對應的主板編號即可。上面這行是選擇RAMPS 1.3 (RAMPS 1.4)33標示單噴頭打印機,34標示雙噴頭打印機的意思,你可以按自己實際情況修改該項。Marlin 固件會根據主板信息定義主控板引腳布局。具體各種主控板的引腳布局可以在pin.h中看到。 (3)溫控設置 現在我來看看溫控方面的設置,溫控設置有點復雜,但是我們不需要考慮那些復雜的PID計算設置問題。基本上我們需要做的是選擇3D打印機機溫度傳感器的類型,如果不是你自己安裝的溫度傳感器,你可以在RepRap wiki中了解溫度傳感器的類型。
熱敏電阻 #define TEMP_SENSOR_0 1 //標示噴頭熱敏電阻100k #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_BED 1 //熱床熱敏電阻100k 如果你仔細閱讀Marlin固件的配置文件,你會發現支持的固件所支持的溫控傳感器的類型對應的編號。TEMP_SENSOR_0是噴嘴的溫控傳感器類型、TEMP_SENSOR_BED是加熱床的溫控傳感器類型,一般來說都是100K 熱敏電阻。 如果你是用RAMPS 1.3 主控板和pin.h中使用默認布局的話,你可以在主控板的T0和T1 接口分別對應TEMP_SENSOR_0 和TEMP_SENSOR_BED。選擇0即關閉該接口。請選擇合適你打印機的溫控傳感器吧。當然我用的是RAMPS 1.4的板子。 (4)溫度限制(最大值) #define HEATER_0_MAXTEMP 275 //最高溫度 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define BED_MAXTEMP 120 //最低溫度溫度,打印巧克力的話設置成45 有些噴嘴和加熱床的最大工作溫度會低于Marlin固件的默認最大溫度,為了減少對噴嘴和加熱床的損害,可以設置最高溫度限制。 (5)固件的機械設定/***********/ 機械設定部分包括限位開關、步進電機、最大制造范圍和運動位移值。
限位開關和上拉電阻 這一節將教你配置3D 打印機每個軸中的限位開關。用G28 命令會讓3D 打印機的3個軸回零方向運動直到碰到限位開關。限位開關如果沒有5V 電源作為產生信號源的話,配置ENDSTOPPULLUPS 會確保讓固件產生一個信號、當限位開關接通時才會產生明確的數字信號0。
如需了解更多請參考RepRap wiki 的(機械限位開關)Mechanical Endstop,OptoEndstop 2.1(光學限位開關) and Gen7 Endstop 1.3.1。(最好就是按機械開關的原理圖來制作限位開關,這樣的效果最好。)
限位開關上拉電阻總體控制–194行
// corse Endstop Settings
#define ENDSTOPPULLUPS //Comment this out (using // atthe start of the line) to disable the endstoppullup resistors
Marlin固件默認是需要限位開關的上拉電阻的。從207行開始固件為每個限位開關分配獨立一個上拉電阻,如果194行被取消則從197行開始的上拉電阻控制都會一并取消。這樣方便你自己的3d 打印機采用不同類型的限位開關。一般來說X軸和Y 軸采用機械限位開關,可以不需要制作3線的數據口,而Z軸的光學開關默認為3線的數據口。這是光學開關就不需要使用到ENDSTOPPULLUPS注釋。
限位開關上拉電阻細分控制 – 196行
#ifndef ENDSTOPPULLUPS
// fine Enstop settings: Individual Pullups.will be ignord if ENDSTOPPULLUPS isdefined
#define ENDSTOPPULLUP_XMAX
#define ENDSTOPPULLUP_YMAX
#define ENDSTOPPULLUP_ZMAX
#define ENDSTOPPULLUP_XMIN
#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
#endif
如果Configuration.h194行被注釋掉的話,則196行的語句將會被執行。你可以獨立控制每個限位開關的上拉電阻,當然這個是要根據你3D 打印機的限位開關類型來確定.
限位開關方向控制 - 216 行
// The pullups are needed if you directlyconnect a mechanical endswitch betweenthe signal and ground pins.
// set to true to invert the logic of theendstops.
const bool X_ENDSTOPS_INVERTING = false;
const bool Y_ENDSTOPS_INVERTING = false;
const bool Z_ENDSTOPS_INVERTING = false;
機械限位開關通常會把連線連在常通(NC) 端,這就會有個一個數字信號1輸入到主控中。如果你的機械限位開關的連線是連在常關(NO)端,這就需要在ENDSTOPS_INVERTING采用 ture 從而是數字信號0反向變為1.對于光學開關來說,則一般不用進行調整。
你應該在電腦控制軟件中實際試驗一下限位開關的方向是否與你的預期相符,如果軸運動時觸動限位開關就停止則說明,該項設置正常。注意!!!在做此測試時,應該給各個軸留出足夠的運動反應空間。以免損壞機器。
關閉最大限位開關– 219 行
//#define DISABLE_MAX_ENDSTOPS
上述這行代碼在marlin 固件Configuration.h(219行),通常情況下是被注釋掉的。如果你的打印機的原點開關安裝在X、Y、Z軸最大位置的話,這個就需要去掉注釋符號。
通常情況下Z軸的限位開關是放在Z軸最大限位,這樣可以使hot end 可以免受擠壓。為了達到這個目的,這樣就需要去掉注釋。但是這行對于那些沒有最大限位開關的主控板是沒有用的哦!
關閉軸 – 228 行
// Disables axis when it’s not being used.
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z true
#define DISABLE_E false // For all extruders
通常情況下上面的代碼是不改動的,所有軸都是選擇 false 的。然而,如果你的3D打印機z軸有手動調整的部件,可以在#defineDISABLE_Z 行選 true ,這樣在打印機打印時,可以手動調整z軸。
步進電機
我們已經來到了設置步進電機部分,這部分主要設置步進電機運行方向、限位開關邏輯、行程、步進長度單位。前面部分的限位開關已經測試好了,所以這部分的測試就相對簡單很多了。
步進電機運轉方向– 233行
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
這部分是決定3d打印機各個軸的運行方向的,默認的選項不一定適合每一種打印機,所以我個人建議是先測試其他項目,最后才測試這部分。 這是當我們經過接口軟件控制 3D立體打印機,我們哪里決定哪一個方向每個軸將會去。當我們將一個指令送到的時候驅使 +10 毫米前進一個軸,我們期待軸移動被期望的方向的 10 毫米。 開始的高抬腿運步的馬馬達方向能難以沒有打開打印機而且表演一個測試預測。因此我會建議離開這些設定直到最后的而且在以測試著手進行之前完成馬林魚固件結構的其它部分。
一經馬林魚固件結構文件被配置充足操作 3D立體打印機,你能運行一個測試檢查每個軸搬進正確的方向。設定他們的完整旅行距離的每個軸中點然后打開打印機。 在經過接口軟件,像是Printrun/pronterface 對 3D立體打印機連接之后,藉由慢跑他們積極的方向的10 毫米測試每個軸。 對于每個軸的高抬腿運步的馬馬達旋轉方向能藉由變更邏輯在馬林魚固件結構中從第233 行被改正。
你會需要也測試擠壓機高抬腿運步的馬馬達方向。 這能沒有細絲被做裝載而且帶來熱的達175 度的結束溫度因此馬林魚固件將會允許擠出。 送一經過 3D立體打印機接口軟件擠出指令而且觀察方向細絲駕駛齒輪滑車旋轉。 對于擠壓機的旋轉方向能藉由變更邏輯從第236 行被改正。 當第一次表演軸歸巢和軸慢跑的時候,準備好按重新設定按鈕或者準備好關掉電源避免撞碎的軸很重要。分開地回家每個軸確定軸正在向結束停止回家。如果你能達成結束停止容易地,在軸已經完成它之前,你能早引起他們為一個安全的測試是旅行。
結束停止家方向 - 第 242 行 // 設定 endstops 的方向當歸巢; 1=最大, -1=最小 #定義 X_HOME_DIR-1 #定義 Y_HOME_DIR-1 #定義 Z_HOME_DIR 1 End Stop Home Direction – line 242 // Sets direction of endstops whenhoming; 1=MAX, -1=MIN #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR 1 基本上你告訴結束停止開關被位于的軸結束的馬林魚固件。 它是通常的對X 和 Y 軸到家至最大的積極位置的零位置和 Z 軸結束停止家的熱結束 。 在上面的代碼片斷和對權利的圖像表示結構。 像斜坡 1.3 的一些主板為每個軸的每個結束有一個聯編者,總計六個聯編者。你將會需要確定在比賽上面的設定結束停止和主板的關聯。
Travel Limits – line249 旅行極限 - 第 249 行 #define X_MAX_POS 130
#defineX_MIN_POS 0
#defineY_MAX_POS 130
#defineY_MIN_POS 0
#defineZ_MAX_POS 107
#defineZ_MIN_POS 0 上述者定義歸巢后的 3D立體打印機的可印刷區域。 對于 X 和 Y軸,你僅僅測量來自家位置的噴嘴的旅行長度。 最大的旅行長度將會或被大小限制那建立月臺或藉著軸的最大旅行距離。 當第一次建立 Z 軸的時候,設定 Z 軸旅行長度短于被測量的一點點最好,直到一個軟件和3D立體打印機的硬件測試被完成。 這將會幫助避免偶然地撞碎那在開始的測試期間把床加入熱的結束。 Z 軸旅行長度可能是罰款調諧的比較遲的在測試已經被滿意之后。 測量單位在毫米中而且為在馬林魚固件結構文件中的最大位置從第 249行被定義。 最小的位置能被為這一個結構留在假設值 0 。
Steps Per Unit – line275 步驟每一單位 - 第 275 行 #defineDEFAULT_AXIS_STEPS_PER_UNIT {106.76, 106.76, 800, 48.14} 每一單位配置步驟將會是在你開始第一次印刷之前,你做的最后一點點之一的微調。 有心機的步驟每一單位正確地將會給 3D立體印刷的分開最好的開始可能的。然而,如果你正在僅僅升級馬林魚固件或者正在從任何其他的固件升級,如果你仍然有它,你能每一來自舊的結構文件的單位身材得到步驟。 每一單位的步驟意謂數字行走一個高抬腿運步的馬馬達必須準備等于 1 毫米軸旅行。 單位在馬林魚固件 configuration.h 文件的第 275 行在 X 、 Y 的次序中,Z 和每一來自相同的設計的另一臺打印機的單位得到步驟的 E. 會到你需要的非常接近, 而且將會幫助你進行一些高抬腿運步的馬馬達測試在你之前認真開始每一單位計算正確的步驟為馬林魚固件結構文件。 步驟每一單位計算 為了要每一單位 (毫米) 計算步驟提出馬林魚固件結構文件,你需要找一個好方法正確地測量軸旅行距離。你可能對暫時的距離有熱的結束,以便細絲能被擠出為了要制造測量。代替熱的結束和被以帶子綁起到床的一個尺使用一個刻度盤指示器能對標準的到處旅行的距離提供一個好正確的方法。得到最好的準確性你應該抽取樣品至少 100 毫米的軸旅行。 你命令打印機使用接口軟件,像是 Pronterface 移動被選擇的軸100 毫米。 你然后測量真實的距離軸到處旅行的。在你下面使用公式能每一單位計算新的步驟。
teps 每一單位公式 NewStepsPerUnit=SampleTravelDist/ActualTravelDist x OldStepsPerUnit 你然后重復上述的公式同樣地許多次當做必需的直到被命令的旅行距離相配真實的距離到處旅行的,每次以 NewStepsPerUnit 作為 OldStepsPerUnit。 Adding LCD Support – line 303 增加 LCD 支持 - 第 303 行 #define ULTRA_LCD 要定義的 ULTRA_LCD 需要中使任何類型的 LCD 支持能夠。為了要增加對 16 × 2個 LCD 展覽的支持,第303 行需要在上面像代碼片斷被不批評,藉由除去前述的向前斜線。 預先設定地,馬林魚固件沒有LCD 或者按編碼器控制嵌板使。能夠 促成第 303 行和無別的將會給你為被連接到主板大頭針如 pins.h 文件所分配的 16 × 2個 LCD 熒屏支援。大頭針任務在被支援主板類型的在每個下面的固件pins.h 文件中被發現。
增加點擊編碼器支持 有能為斜坡 1.3 會被能夠的二流行點擊編碼器控制嵌板的類型。 第一個類型是Ultipanel,能在 Thingiverse 上被發現,而且另一個類型是 RepRapDiscount 的控制器。 對于這一個引導者,我僅僅正在去為Ultipanel 增加筆記因為另一個類型為固件被 RepRapDiscount RepRap wiki 支援。 EnablingULTIPANEL – line307 促成 ULTIPANEL- 第 307 行 #defineULTIPANEL EnablingNEWPANEL – line331 促成 NEWPANEL- 第 331 行 #define NEWPANEL 兩者的第 307 和 331 行不預先設定地被能夠。 為了要使 20 × 4個 LCD 展覽和點擊編碼器能夠, 不批評兩者線藉由除去向前的斜線。 這也也會使 SD 卡片支持能夠, 一個將會在另外的一個引導者被復蓋的特征。 如果第 307 行藉由不批評被能夠,不批評第 303 行將不會是必需的。 當 ULTIPANEL 被定義的時候, ULTRA_LCD 將會自動地被定義。
|