91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

適用于初學(xué)者的DIY RepRap 3D 打印機(jī)教程—第3部分:代碼

石玉蘭 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-01 18:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。pYYBAGPzDtqAFxBqAAUqL7fg2K4109.jpg

如果您是初次接觸該項目,請先參考該項目第1部分和第2部分的內(nèi)容再進(jìn)行下一步的工作: 適用于初學(xué)者的DIY RepRap 3D 打印機(jī)教程—第1部分:構(gòu)建 以及 適用于初學(xué)者的DIY RepRap 3D 打印機(jī)教程—第2部分: 接線。

在DIY RepRap 3D打印機(jī)系列的最后一部分中,我們將配置皮帶和擋塊,添加LCD顯示屏,并編寫程序代碼對打印機(jī)進(jìn)行測試。讓我們開始吧!

最終打印機(jī)規(guī)格:
臺式機(jī)占地面積:11in x 13in x 13in
最大建造空間:105mm x 130mm x 80mm

硬件:

從第1部分中得到的3D打印機(jī)框架

Arduino Mega

Ramps 1.4

任意大小的SD

5x A4988帶有散熱器的步進(jìn)電機(jī)驅(qū)動器

6 x 機(jī)械終端擋塊

20 x 公對母線

Discount RepRap的智能全屏圖形顯示器

電源(12V 30A, OEM)

三芯電纜和連接器(見圖 X)

6 x ?”環(huán)形壓接連接器

大規(guī)格導(dǎo)線

邏輯線

電工膠帶

膠帶,魔術(shù)貼,或其他電纜管理解決方案。

軟件

Arduino IDE

Marlin 3D 打印機(jī)固件

Cura 3D 打印切片軟件

工具

烙鐵

焊錫

剝線鉗

壓接器

概覽

連接皮帶裝置

連接機(jī)械擋塊

測試所有組件

連接屏幕

下載并配置Marlin固件

收尾工作

您的第一臺打印機(jī)

步驟1:連接皮帶裝置

本教程中的皮帶配置如圖1所示。您可能會對配置中的一些地方感到不解,我將會對其意圖進(jìn)行說明。

poYBAGPzDt-AVBueAASKlVq-w0Y858.jpg

圖1:皮帶配置

該系統(tǒng)使用了兩條皮帶,每條皮帶環(huán)繞一個步進(jìn)電機(jī),然后連接到擠出機(jī)滑塊的對角線上。也就是說,當(dāng)僅運行一個步進(jìn)電機(jī)時,皮帶將會沿對角線運動。如果兩個電機(jī)都沿相同方向旋轉(zhuǎn),則擠出機(jī)沿x軸移動;如果它們沿相反方向旋轉(zhuǎn),則擠出機(jī)沿y軸移動。這使得打印機(jī)可以沿對角線快速運動,從而節(jié)省了打印的時間和功耗。

為了設(shè)置此裝置,將同步帶切至2 x 140 cm長。這完全取決于打印機(jī)的尺寸,因此請先設(shè)置好皮帶,再按照尺寸進(jìn)行裁切。從一側(cè)開始,將一條皮帶夾在擠出機(jī)滑塊的一角。最終結(jié)果應(yīng)如下圖所示(圖2)。

poYBAGPzDuWAQSakAAUBxTNQuKE860.jpg

圖2:僅連接了一根皮帶的打印機(jī)

以下是安裝技巧:

將平滑側(cè)纏繞在堆疊的底部同步皮帶輪上。

將皮帶的齒側(cè)纏繞在步進(jìn)電機(jī)上的同步皮帶輪上。

將皮帶的齒側(cè)纏繞在緊挨著的兩個角處的底部軸承上。

將齒側(cè)纏繞在底部同步皮帶輪上,并將其夾緊在反對角線上。

使用頂部同步皮帶輪和軸承在另一個步進(jìn)電機(jī)上重復(fù)上述步驟。

步驟2:測試所有組件

在繼續(xù)進(jìn)行該項目之前,我們將對所有組件分別進(jìn)行測試,確認(rèn)能否正常工作。請確認(rèn)已下載Arduino IDE。將以下代碼復(fù)制并粘貼到Arduino環(huán)境中。

#define X_STEP_PIN      54

#define X_DIR_PIN       55

#define X_ENABLE_PIN       38

#define X_MIN_PIN           3

#define X_MAX_PIN           2

#define Y_STEP_PIN         60

#define Y_DIR_PIN          61

#define Y_ENABLE_PIN       56

#define Y_MIN_PIN          14

#define Y_MAX_PIN          15

#define Z_STEP_PIN         46

#define Z_DIR_PIN          48

#define Z_ENABLE_PIN       62

#define Z_MIN_PIN          18

#define Z_MAX_PIN          19

#define E_STEP_PIN         26

#define E_DIR_PIN          28

#define E_ENABLE_PIN       24

#define Q_STEP_PIN     36

#define Q_DIR_PIN          34

#define Q_ENABLE_PIN       30

#define SDPOWER            -1

#define SDSS               53

#define LED_PIN            13

#define FAN_PIN         9

#define PS_ON_PIN          12

#define KILL_PIN           -1

#define HEATER_0_PIN       10

#define HEATER_1_PIN    8

#define TEMP_0_PIN          13   // ANALOG NUMBERING

#define TEMP_1_PIN          14   // ANALOG NUMBERING

void setup() {

 pinMode(FAN_PIN , OUTPUT);

 pinMode(HEATER_0_PIN , OUTPUT);

 pinMode(HEATER_1_PIN , OUTPUT);

 pinMode(LED_PIN  , OUTPUT);

 pinMode(X_STEP_PIN  , OUTPUT);

 pinMode(X_DIR_PIN , OUTPUT);

 pinMode(X_ENABLE_PIN , OUTPUT);

 pinMode(Y_STEP_PIN  , OUTPUT);

 pinMode(Y_DIR_PIN , OUTPUT);

 pinMode(Y_ENABLE_PIN , OUTPUT);

 pinMode(Z_STEP_PIN  , OUTPUT);

 pinMode(Z_DIR_PIN , OUTPUT);

 pinMode(Z_ENABLE_PIN , OUTPUT);

 pinMode(E_STEP_PIN  , OUTPUT);

 pinMode(E_DIR_PIN , OUTPUT);

 pinMode(E_ENABLE_PIN , OUTPUT);

 pinMode(Q_STEP_PIN  , OUTPUT);

 pinMode(Q_DIR_PIN , OUTPUT);

 pinMode(Q_ENABLE_PIN , OUTPUT);

  digitalWrite(X_ENABLE_PIN , LOW);

   digitalWrite(Y_ENABLE_PIN , LOW);

   digitalWrite(Z_ENABLE_PIN , LOW);

   digitalWrite(E_ENABLE_PIN , LOW);

digitalWrite(Q_ENABLE_PIN , LOW);

}

void loop () {

 if (millis() %1000 <500)

digitalWrite(LED_PIN, HIGH);

 else

  digitalWrite(LED_PIN, LOW);

 if (millis() %1000 <300) {

   digitalWrite(HEATER_0_PIN, HIGH);

digitalWrite(HEATER_1_PIN, LOW);

digitalWrite(FAN_PIN, LOW);

 } else if (millis() %1000 <600) {

   digitalWrite(HEATER_0_PIN, LOW);

   digitalWrite(HEATER_1_PIN, HIGH);

digitalWrite(FAN_PIN, LOW);

 } else  {

   digitalWrite(HEATER_0_PIN, LOW);

   digitalWrite(HEATER_1_PIN, LOW);

digitalWrite(FAN_PIN, HIGH);

 }

 if (millis() %10000 <5000) {

   digitalWrite(X_DIR_PIN , HIGH);

   digitalWrite(Y_DIR_PIN , HIGH);

   digitalWrite(Z_DIR_PIN , HIGH);

   digitalWrite(E_DIR_PIN , HIGH);

   digitalWrite(Q_DIR_PIN , HIGH);

 }

 else {

   digitalWrite(X_DIR_PIN , LOW);

   digitalWrite(Y_DIR_PIN , LOW);

   digitalWrite(Z_DIR_PIN , LOW);

   digitalWrite(E_DIR_PIN , LOW);

   digitalWrite(Q_DIR_PIN , LOW);

 }

 

   digitalWrite(X_STEP_PIN , HIGH);

   digitalWrite(Y_STEP_PIN , HIGH);

   digitalWrite(Z_STEP_PIN , HIGH);

   digitalWrite(E_STEP_PIN , HIGH);

   digitalWrite(Q_STEP_PIN , HIGH);

 delay(1);

   digitalWrite(X_STEP_PIN , LOW);

   digitalWrite(Y_STEP_PIN , LOW);

   digitalWrite(Z_STEP_PIN , LOW);

   digitalWrite(E_STEP_PIN , LOW);

   digitalWrite(Q_STEP_PIN , LOW);

}



This code should activate all the steppers, fans, and heaters. The only problem with this code is that it does not activate both z-axis steppers; it only activates one. If you encounter any problems with any of the components, try isolating them and only running them in the code. If you would like to test the z-axis and thermistor, download the following codes:







#ifndef THERMISTORTABLES_H_
#define THERMISTORTABLES_H_

#define OVERSAMPLENR 16

#if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1)  || (THERMISTORHEATER_2 == 1) || (THERMISTORBED == 1) //100k bed thermistor

const short temptable_1[][2] PROGMEM = {
{       23*OVERSAMPLENR ,       300     },
{       25*OVERSAMPLENR ,       295     },
{       27*OVERSAMPLENR ,       290     },
{       28*OVERSAMPLENR ,       285     },
{       31*OVERSAMPLENR ,       280     },
{       33*OVERSAMPLENR ,       275     },
{       35*OVERSAMPLENR ,       270     },
{       38*OVERSAMPLENR ,       265     },
{       41*OVERSAMPLENR ,       260     },
{       44*OVERSAMPLENR ,       255     },
{       48*OVERSAMPLENR ,       250     },
{       52*OVERSAMPLENR ,       245     },
{       56*OVERSAMPLENR ,       240     },
{       61*OVERSAMPLENR ,       235     },
{       66*OVERSAMPLENR ,       230     },
{       71*OVERSAMPLENR ,       225     },
{       78*OVERSAMPLENR ,       220     },
{       84*OVERSAMPLENR ,       215     },
{       92*OVERSAMPLENR ,       210     },
{       100*OVERSAMPLENR        ,       205     },
{       109*OVERSAMPLENR        ,       200     },
{       120*OVERSAMPLENR        ,       195     },
{       131*OVERSAMPLENR        ,       190     },
{       143*OVERSAMPLENR        ,       185     },
{       156*OVERSAMPLENR        ,       180     },
{       171*OVERSAMPLENR        ,       175     },
{       187*OVERSAMPLENR        ,       170     },
{       205*OVERSAMPLENR        ,       165     },
{       224*OVERSAMPLENR        ,       160     },
{       245*OVERSAMPLENR        ,       155     },
{       268*OVERSAMPLENR        ,       150     },
{       293*OVERSAMPLENR        ,       145     },
{       320*OVERSAMPLENR        ,       140     },
{       348*OVERSAMPLENR        ,       135     },
{       379*OVERSAMPLENR        ,       130     },
{       411*OVERSAMPLENR        ,       125     },
{       445*OVERSAMPLENR        ,       120     },
{       480*OVERSAMPLENR        ,       115     },
{       516*OVERSAMPLENR        ,       110     },
{       553*OVERSAMPLENR        ,       105     },
{       591*OVERSAMPLENR        ,       100     },
{       628*OVERSAMPLENR        ,       95      },
{       665*OVERSAMPLENR        ,       90      },
{       702*OVERSAMPLENR        ,       85      },
{       737*OVERSAMPLENR        ,       80      },
{       770*OVERSAMPLENR        ,       75      },
{       801*OVERSAMPLENR        ,       70      },
{       830*OVERSAMPLENR        ,       65      },
{       857*OVERSAMPLENR        ,       60      },
{       881*OVERSAMPLENR        ,       55      },
{       903*OVERSAMPLENR        ,       50      },
{       922*OVERSAMPLENR        ,       45      },
{       939*OVERSAMPLENR        ,       40      },
{       954*OVERSAMPLENR        ,       35      },
{       966*OVERSAMPLENR        ,       30      },
{       977*OVERSAMPLENR        ,       25      },
{       985*OVERSAMPLENR        ,       20      },
{       993*OVERSAMPLENR        ,       15      },
{       999*OVERSAMPLENR        ,       10      },
{       1004*OVERSAMPLENR       ,       5       },
{       1008*OVERSAMPLENR       ,       0       } //safety
};
#endif
#if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORBED == 2) //200k bed thermistor
const short temptable_2[][2] PROGMEM = {
  {1*OVERSAMPLENR, 848},
  {54*OVERSAMPLENR, 275},
  {107*OVERSAMPLENR, 228},
  {160*OVERSAMPLENR, 202},
  {213*OVERSAMPLENR, 185},
  {266*OVERSAMPLENR, 171},
  {319*OVERSAMPLENR, 160},
  {372*OVERSAMPLENR, 150},
  {425*OVERSAMPLENR, 141},
  {478*OVERSAMPLENR, 133},
  {531*OVERSAMPLENR, 125},
  {584*OVERSAMPLENR, 118},
  {637*OVERSAMPLENR, 110},
  {690*OVERSAMPLENR, 103},
  {743*OVERSAMPLENR, 95},
  {796*OVERSAMPLENR, 86},
  {849*OVERSAMPLENR, 77},
  {902*OVERSAMPLENR, 65},
  {955*OVERSAMPLENR, 49},
  {1008*OVERSAMPLENR, 17},
  {1020*OVERSAMPLENR, 0} //safety
};

#endif
#if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORBED == 3) //mendel-parts
const short temptable_3[][2] PROGMEM = {
               {1*OVERSAMPLENR,864},
               {21*OVERSAMPLENR,300},
               {25*OVERSAMPLENR,290},
               {29*OVERSAMPLENR,280},
               {33*OVERSAMPLENR,270},
               {39*OVERSAMPLENR,260},
               {46*OVERSAMPLENR,250},
               {54*OVERSAMPLENR,240},
               {64*OVERSAMPLENR,230},
               {75*OVERSAMPLENR,220},
               {90*OVERSAMPLENR,210},
               {107*OVERSAMPLENR,200},
               {128*OVERSAMPLENR,190},
               {154*OVERSAMPLENR,180},
               {184*OVERSAMPLENR,170},
               {221*OVERSAMPLENR,160},
               {265*OVERSAMPLENR,150},
               {316*OVERSAMPLENR,140},
               {375*OVERSAMPLENR,130},
               {441*OVERSAMPLENR,120},
               {513*OVERSAMPLENR,110},
               {588*OVERSAMPLENR,100},
               {734*OVERSAMPLENR,80},
               {856*OVERSAMPLENR,60},
               {938*OVERSAMPLENR,40},
               {986*OVERSAMPLENR,20},
               {1008*OVERSAMPLENR,0},
               {1018*OVERSAMPLENR,-20}
       };

#endif
#if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORBED == 4) //10k thermistor
const short temptable_4[][2] PROGMEM = {
  {1*OVERSAMPLENR, 430},
  {54*OVERSAMPLENR, 137},
  {107*OVERSAMPLENR, 107},
  {160*OVERSAMPLENR, 91},
  {213*OVERSAMPLENR, 80},
  {266*OVERSAMPLENR, 71},
  {319*OVERSAMPLENR, 64},
  {372*OVERSAMPLENR, 57},
  {425*OVERSAMPLENR, 51},
  {478*OVERSAMPLENR, 46},
  {531*OVERSAMPLENR, 41},
  {584*OVERSAMPLENR, 35},
  {637*OVERSAMPLENR, 30},
  {690*OVERSAMPLENR, 25},
  {743*OVERSAMPLENR, 20},
  {796*OVERSAMPLENR, 14},
  {849*OVERSAMPLENR, 7},
  {902*OVERSAMPLENR, 0},
  {955*OVERSAMPLENR, -11},
  {1008*OVERSAMPLENR, -35}
};
#endif

#if (THERMISTORHEATER_0 == 5) || (THERMISTORHEATER_1 == 5) || (THERMISTORHEATER_2 == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (104GT-2)
const short temptable_5[][2] PROGMEM = {
{1*OVERSAMPLENR, 713},
{18*OVERSAMPLENR, 316},
{35*OVERSAMPLENR, 266},
{52*OVERSAMPLENR, 239},
{69*OVERSAMPLENR, 221},
{86*OVERSAMPLENR, 208},
{103*OVERSAMPLENR, 197},
{120*OVERSAMPLENR, 188},
{137*OVERSAMPLENR, 181},
{154*OVERSAMPLENR, 174},
{171*OVERSAMPLENR, 169},
{188*OVERSAMPLENR, 163},
{205*OVERSAMPLENR, 159},
{222*OVERSAMPLENR, 154},
{239*OVERSAMPLENR, 150},
{256*OVERSAMPLENR, 147},
{273*OVERSAMPLENR, 143},
{290*OVERSAMPLENR, 140},
{307*OVERSAMPLENR, 136},
{324*OVERSAMPLENR, 133},
{341*OVERSAMPLENR, 130},
{358*OVERSAMPLENR, 128},
{375*OVERSAMPLENR, 125},
{392*OVERSAMPLENR, 122},
{409*OVERSAMPLENR, 120},
{426*OVERSAMPLENR, 117},
{443*OVERSAMPLENR, 115},
{460*OVERSAMPLENR, 112},
{477*OVERSAMPLENR, 110},
{494*OVERSAMPLENR, 108},
{511*OVERSAMPLENR, 106},
{528*OVERSAMPLENR, 103},
{545*OVERSAMPLENR, 101},
{562*OVERSAMPLENR, 99},
{579*OVERSAMPLENR, 97},
{596*OVERSAMPLENR, 95},
{613*OVERSAMPLENR, 92},
{630*OVERSAMPLENR, 90},
{647*OVERSAMPLENR, 88},
{664*OVERSAMPLENR, 86},
{681*OVERSAMPLENR, 84},
{698*OVERSAMPLENR, 81},
{715*OVERSAMPLENR, 79},
{732*OVERSAMPLENR, 77},
{749*OVERSAMPLENR, 75},
{766*OVERSAMPLENR, 72},
{783*OVERSAMPLENR, 70},
{800*OVERSAMPLENR, 67},
{817*OVERSAMPLENR, 64},
{834*OVERSAMPLENR, 61},
{851*OVERSAMPLENR, 58},
{868*OVERSAMPLENR, 55},
{885*OVERSAMPLENR, 52},
{902*OVERSAMPLENR, 48},
{919*OVERSAMPLENR, 44},
{936*OVERSAMPLENR, 40},
{953*OVERSAMPLENR, 34},
{970*OVERSAMPLENR, 28},
{987*OVERSAMPLENR, 20},
{1004*OVERSAMPLENR, 8},
{1021*OVERSAMPLENR, 0}
};
#endif

#if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor
const short temptable_6[][2] PROGMEM = {
  {28*OVERSAMPLENR, 250},
  {31*OVERSAMPLENR, 245},
  {35*OVERSAMPLENR, 240},
  {39*OVERSAMPLENR, 235},
  {42*OVERSAMPLENR, 230},
  {44*OVERSAMPLENR, 225},
  {49*OVERSAMPLENR, 220},
  {53*OVERSAMPLENR, 215},
  {62*OVERSAMPLENR, 210},
  {73*OVERSAMPLENR, 205},
  {72*OVERSAMPLENR, 200},
  {94*OVERSAMPLENR, 190},
  {102*OVERSAMPLENR, 185},
  {116*OVERSAMPLENR, 170},
  {143*OVERSAMPLENR, 160},
  {183*OVERSAMPLENR, 150},
  {223*OVERSAMPLENR, 140},
  {270*OVERSAMPLENR, 130},
  {318*OVERSAMPLENR, 120},
  {383*OVERSAMPLENR, 110},
  {413*OVERSAMPLENR, 105},
  {439*OVERSAMPLENR, 100},
  {484*OVERSAMPLENR, 95},
  {513*OVERSAMPLENR, 90},
  {607*OVERSAMPLENR, 80},
  {664*OVERSAMPLENR, 70},
  {781*OVERSAMPLENR, 60},
  {810*OVERSAMPLENR, 55},
  {849*OVERSAMPLENR, 50},
  {914*OVERSAMPLENR, 45},
  {914*OVERSAMPLENR, 40},
  {935*OVERSAMPLENR, 35},
  {954*OVERSAMPLENR, 30},
  {970*OVERSAMPLENR, 25},
  {978*OVERSAMPLENR, 22},
  {1008*OVERSAMPLENR, 3}
};
#endif

#if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01
const short temptable_7[][2] PROGMEM = {
  {46*OVERSAMPLENR, 270},
  {50*OVERSAMPLENR, 265},
  {54*OVERSAMPLENR, 260},
  {58*OVERSAMPLENR, 255},
  {62*OVERSAMPLENR, 250},
  {67*OVERSAMPLENR, 245},
  {72*OVERSAMPLENR, 240},
  {79*OVERSAMPLENR, 235},
  {85*OVERSAMPLENR, 230},
  {91*OVERSAMPLENR, 225},
  {99*OVERSAMPLENR, 220},
  {107*OVERSAMPLENR, 215},
  {116*OVERSAMPLENR, 210},
  {126*OVERSAMPLENR, 205},
  {136*OVERSAMPLENR, 200},
  {149*OVERSAMPLENR, 195},
  {160*OVERSAMPLENR, 190},
  {175*OVERSAMPLENR, 185},
  {191*OVERSAMPLENR, 180},
  {209*OVERSAMPLENR, 175},
  {224*OVERSAMPLENR, 170},
  {246*OVERSAMPLENR, 165},
  {267*OVERSAMPLENR, 160},
  {293*OVERSAMPLENR, 155},
  {316*OVERSAMPLENR, 150},
  {340*OVERSAMPLENR, 145},
  {364*OVERSAMPLENR, 140},
  {396*OVERSAMPLENR, 135},
  {425*OVERSAMPLENR, 130},
  {460*OVERSAMPLENR, 125},
  {489*OVERSAMPLENR, 120},
  {526*OVERSAMPLENR, 115},
  {558*OVERSAMPLENR, 110},
  {591*OVERSAMPLENR, 105},
  {628*OVERSAMPLENR, 100},
  {660*OVERSAMPLENR, 95},
  {696*OVERSAMPLENR, 90},
  {733*OVERSAMPLENR, 85},
  {761*OVERSAMPLENR, 80},
  {794*OVERSAMPLENR, 75},
  {819*OVERSAMPLENR, 70},
  {847*OVERSAMPLENR, 65},
  {870*OVERSAMPLENR, 60},
  {892*OVERSAMPLENR, 55},
  {911*OVERSAMPLENR, 50},
  {929*OVERSAMPLENR, 45},
  {944*OVERSAMPLENR, 40},
  {959*OVERSAMPLENR, 35},
  {971*OVERSAMPLENR, 30},
  {981*OVERSAMPLENR, 25},
  {989*OVERSAMPLENR, 20},
  {994*OVERSAMPLENR, 15},
  {1001*OVERSAMPLENR, 10},
  {1005*OVERSAMPLENR, 5}
};
#endif

#define _TT_NAME(_N) temptable_ ## _N
#define TT_NAME(_N) _TT_NAME(_N)

#ifdef THERMISTORHEATER_0
 #define heater_0_temptable TT_NAME(THERMISTORHEATER_0)
 #define heater_0_temptable_len (sizeof(heater_0_temptable)/sizeof(*heater_0_temptable))
#else
#ifdef HEATER_0_USES_THERMISTOR
 #error No heater 0 thermistor table specified
#else  // HEATER_0_USES_THERMISTOR
 #define heater_0_temptable 0
 #define heater_0_temptable_len 0
#endif // HEATER_0_USES_THERMISTOR
#endif

#ifdef THERMISTORHEATER_1
 #define heater_1_temptable TT_NAME(THERMISTORHEATER_1)
 #define heater_1_temptable_len (sizeof(heater_1_temptable)/sizeof(*heater_1_temptable))
#else
#ifdef HEATER_1_USES_THERMISTOR
 #error No heater 1 thermistor table specified
#else  // HEATER_1_USES_THERMISTOR
 #define heater_1_temptable 0
 #define heater_1_temptable_len 0
#endif // HEATER_1_USES_THERMISTOR
#endif

#ifdef THERMISTORHEATER_2
 #define heater_2_temptable TT_NAME(THERMISTORHEATER_2)
 #define heater_2_temptable_len (sizeof(heater_2_temptable)/sizeof(*heater_2_temptable))
#else
#ifdef HEATER_2_USES_THERMISTOR
 #error No heater 2 thermistor table specified
#else  // HEATER_2_USES_THERMISTOR
 #define heater_2_temptable 0
 #define heater_2_temptable_len 0
#endif // HEATER_2_USES_THERMISTOR
#endif

#ifdef THERMISTORBED
 #define bedtemptable TT_NAME(THERMISTORBED)
 #define bedtemptable_len (sizeof(bedtemptable)/sizeof(*bedtemptable))
#else
#ifdef BED_USES_THERMISTOR
 #error No bed thermistor table specified
#endif // BED_USES_THERMISTOR
#endif

#endif //THERMISTORTABLES_H_











#include "thermistortables.h"



#define X_STEP_PIN         54

#define X_DIR_PIN          55

#define X_ENABLE_PIN       38

#define X_MIN_PIN           3

#define X_MAX_PIN           2



#define Y_STEP_PIN         60

#define Y_DIR_PIN          61

#define Y_ENABLE_PIN       56

#define Y_MIN_PIN          14

#define Y_MAX_PIN          15



#define Z_STEP_PIN         46

#define Z_DIR_PIN          48

#define Z_ENABLE_PIN       62

#define Z_MIN_PIN          18

#define Z_MAX_PIN          19



#define E_STEP_PIN         26

#define E_DIR_PIN          28

#define E_ENABLE_PIN       24



#define Q_STEP_PIN         36

#define Q_DIR_PIN          34

#define Q_ENABLE_PIN       30



#define SDPOWER            -1



#define EXTRUDERS 3



#define TEMP_SENSOR_AD595_OFFSET 0.0

#define TEMP_SENSOR_AD595_GAIN   1.0



#define THERMISTORHEATER_0 1

#define THERMISTORHEATER_1 1

#define THERMISTORHEATER_2 1



#define HEATER_0_USES_THERMISTOR 1

#define HEATER_1_USES_THERMISTOR 1

#define HEATER_2_USES_THERMISTOR 1



 static void *heater_ttbl_map[EXTRUDERS] = { (void *)heater_0_temptable

#if EXTRUDERS > 1

                                           , (void *)heater_1_temptable

#endif

#if EXTRUDERS > 2

                                           , (void *)heater_2_temptable

#endif

#if EXTRUDERS > 3

 #error Unsupported number of extruders

#endif

 };

 

   static int heater_ttbllen_map[EXTRUDERS] = { heater_0_temptable_len

#if EXTRUDERS > 1

                                            , heater_1_temptable_len

#endif

#if EXTRUDERS > 2

                                            , heater_2_temptable_len

#endif

#if EXTRUDERS > 3

 #error Unsupported number of extruders

#endif

 };

 

 #define PGM_RD_W(x)   (short)pgm_read_word(&x)



#define SDSS               53

#define LED_PIN            13



#define FAN_PIN            9



#define PS_ON_PIN          12

#define KILL_PIN           -1



#define HEATER_0_PIN       10



#define HEATER_1_PIN       8

#define TEMP_0_PIN         15   // ANALOG NUMBERING

#define TEMP_1_PIN         14   // ANALOG NUMBERING

#define TEMP_2_PIN         13   // ANALOG NUMBERING



void setup() {

 

 pinMode(TEMP_0_PIN  , INPUT);

 pinMode(TEMP_1_PIN  , INPUT);

 pinMode(TEMP_2_PIN  , INPUT);

 

 pinMode(FAN_PIN , OUTPUT);

 pinMode(HEATER_0_PIN , OUTPUT);

 pinMode(HEATER_1_PIN , OUTPUT);

 pinMode(LED_PIN  , OUTPUT);

 

 pinMode(X_STEP_PIN  , OUTPUT);

 pinMode(X_DIR_PIN    , OUTPUT);

 pinMode(X_ENABLE_PIN    , OUTPUT);

 

 pinMode(Y_STEP_PIN  , OUTPUT);

 pinMode(Y_DIR_PIN    , OUTPUT);

 pinMode(Y_ENABLE_PIN    , OUTPUT);

 

 pinMode(Z_STEP_PIN  , OUTPUT);

 pinMode(Z_DIR_PIN    , OUTPUT);

 pinMode(Z_ENABLE_PIN    , OUTPUT);

 

 pinMode(E_STEP_PIN  , OUTPUT);

 pinMode(E_DIR_PIN    , OUTPUT);

 pinMode(E_ENABLE_PIN    , OUTPUT);

 

 pinMode(Q_STEP_PIN  , OUTPUT);

 pinMode(Q_DIR_PIN    , OUTPUT);

 pinMode(Q_ENABLE_PIN    , OUTPUT);

 

  digitalWrite(X_ENABLE_PIN    , LOW);

   digitalWrite(Y_ENABLE_PIN    , LOW);

   digitalWrite(Z_ENABLE_PIN    , LOW);

   digitalWrite(E_ENABLE_PIN    , LOW);

   digitalWrite(Q_ENABLE_PIN    , LOW);

   Serial.begin(115200);

}



float analog2temp(int raw, uint8_t e) {



 #ifdef HEATER_0_USES_MAX6675

   if (e == 0)

   {

     return 0.25 * raw;

   }

 #endif



 if(heater_ttbl_map[e] != 0)

 {

   float celsius = 0;

   byte i;  

   short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);



   raw = (1023 * OVERSAMPLENR) - raw;

   for (i=1; i raw) && ((float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i-1][0])) >0))

     {

       celsius = PGM_RD_W((*tt)[i-1][1]) +

         (raw - PGM_RD_W((*tt)[i-1][0])) *

         (float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i-1][1])) /

         (float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i-1][0]));

       break;

     }

   }



   // Overflow: Set to last value in the table

   if (i == heater_ttbllen_map[e]) celsius = PGM_RD_W((*tt)[i-1][1]);



   return celsius;

 }

 return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET;

}



unsigned long prevMillis;



void loop () {

 

 if (millis() %1000 <500)

   digitalWrite(LED_PIN, HIGH);

 else

  digitalWrite(LED_PIN, LOW);

 

 if (millis() %1000 <300) {

   digitalWrite(HEATER_0_PIN, HIGH);

   digitalWrite(HEATER_1_PIN, LOW);

   digitalWrite(FAN_PIN, LOW);

 } else if (millis() %1000 <600) {

   digitalWrite(HEATER_0_PIN, LOW);

   digitalWrite(HEATER_1_PIN, HIGH);

   digitalWrite(FAN_PIN, LOW);

 } else  {

   digitalWrite(HEATER_0_PIN, LOW);

   digitalWrite(HEATER_1_PIN, LOW);

   digitalWrite(FAN_PIN, HIGH);

 }

 

 if (millis() %2000 <1000) {

   digitalWrite(X_DIR_PIN    , HIGH);

   digitalWrite(Y_DIR_PIN    , HIGH);

   digitalWrite(Z_DIR_PIN    , HIGH);

   digitalWrite(E_DIR_PIN    , HIGH);

   digitalWrite(Q_DIR_PIN    , HIGH);

 }

 else {

   digitalWrite(X_DIR_PIN    , LOW);

   digitalWrite(Y_DIR_PIN    , LOW);

   digitalWrite(Z_DIR_PIN    , LOW);

   digitalWrite(E_DIR_PIN    , LOW);

   digitalWrite(Q_DIR_PIN    , LOW);

 }

 

 

   digitalWrite(X_STEP_PIN    , HIGH);

   digitalWrite(Y_STEP_PIN    , HIGH);

   digitalWrite(Z_STEP_PIN    , HIGH);

   digitalWrite(E_STEP_PIN    , HIGH);

   digitalWrite(Q_STEP_PIN    , HIGH);

 delay(1);

 

 

 

   

   digitalWrite(X_STEP_PIN    , LOW);

   digitalWrite(Y_STEP_PIN    , LOW);

   digitalWrite(Z_STEP_PIN    , LOW);

   digitalWrite(E_STEP_PIN    , LOW);

   digitalWrite(Q_STEP_PIN    , LOW);

   

   if (millis() -prevMillis >500){

   prevMillis=millis();

   int t = analogRead( TEMP_0_PIN);

   Serial.print("T0 ");

   Serial.print(t);

   Serial.print("/");

   Serial.print(analog2temp(1024 - t,0),0);

   

   Serial.print(" T1 ");

   t = analogRead( TEMP_1_PIN);

   Serial.print(t);

   Serial.print("/");

   Serial.print(analog2temp(1024 - t,1),0);

   

   Serial.print(" T2 ");

   t = analogRead( TEMP_2_PIN);

   Serial.print(t);

   Serial.print("/");

   Serial.println(analog2temp(1024 - t,2),0);

   

 }

   

}

步驟3:連接機(jī)械終端擋塊

機(jī)械終端擋塊有兩種類型:兩個引腳和三個引腳。本教程中,我們使用三個引腳的終端擋塊,這與兩個引腳終端擋塊的安裝幾乎相同。對于三個引腳的終端擋塊,將綠色信號線插入RAMPS的S引腳,黑色接地線插入負(fù)極,紅色正極線插入正極。

poYBAGPzDu2AagpJAAau05d0G5s884.jpg

圖3:機(jī)械終端擋塊連接

對于兩個引腳的終端擋塊,需要將紅色正極線插入RAMPS的S引腳,將黑色接地線插入負(fù)極。應(yīng)使用6個終端擋塊:每個軸最大值處和最小值處。圖4顯示了完成了所有連接的RAMPS板。

pYYBAGPzDvOAYnTpAAczrRTscck465.jpg

圖4:連接到RAMPS的機(jī)械終端擋塊

可能需要反復(fù)試驗才能找到終端擋塊的最佳位置。

步驟4:連接屏幕

取出您的全圖形智能控制器。將兩條帶狀電纜與屏幕和擴(kuò)展板連接。把擴(kuò)展板按壓到RAMPS的末端。用膠帶將屏幕粘貼到奶箱上可以避免機(jī)械干擾的位置。圖5顯示了組件的設(shè)置方式。

pYYBAGPzDvmAZKPgAAcrk59p1pA909.jpg

圖5:屏幕放置視圖

步驟5:下載并配置Marlin

Marlin被用于打印機(jī)的運行,而非用于編寫整個代碼。它將文件轉(zhuǎn)換為G代碼,調(diào)整打印床平整度,并創(chuàng)建一個用戶友好的界面??梢栽谝韵挛恢谜业組arlin固件:https://github.com/MarlinFirmware/Marlin。下載文件并在Arduino IDE中打開。

Marlin可用于許多不同的應(yīng)用程序,例如RAMPS。因此,我們需要進(jìn)行一些配置。

首先,需要判斷一下自己使用的是什么板。教程中將假設(shè)您使用了RAMPS 1.4。如果您使用的是另一塊板,請檢查Marlin中的 boards.h 文件,以找到適合您的板的變量。打開Marlin中的 Configuration.h 文件。

搜索該命令行:#define MOTHERBOARD。刪除初始值并輸入與RAMPS 1.4 EFB板關(guān)聯(lián)的數(shù)字43。

搜索該語句:#define CUSTOM_MACHINE_NAME “3D Printer”。您可以根據(jù)自己的需要更改機(jī)器名稱。

搜索該語句:#define MACHINE_UUID “00000000-0000-0000-0000-000000000000”。將UUID更改為一個隨機(jī)生成的UUID,使它成為用于藍(lán)牙通信的唯一地址。

搜索該語句:#define EXTRUDERS 1。如果使用了一臺擠出機(jī),請確保將其設(shè)置為1;如果使用了兩臺,請確保將其設(shè)置為2。此外,在本節(jié)中,您可以為第二臺擠出機(jī)定義其他參數(shù)。

搜索該語句:#define POWER_SUPPLY 1。如果使用的是OEM電源,則將1換為0。如果您使用的是ATX,請使用1。如果您使用了其他電源,請參閱相關(guān)文檔。

搜索該語句:#define TEMP_SENSOR_0。這定義了擠出機(jī)的熱敏電阻阻值。大多數(shù)為100K,應(yīng)定義為1。請查看相關(guān)文檔來確定您的熱敏電阻阻值。在本節(jié)中的剩余部分中可以對您所使用的其他熱敏電阻阻值進(jìn)行定義。

搜索該語句:#define HEATER_0_MINTEMP。本部分確定熱端的安全溫度范圍。請確保在本節(jié)中輸入安全值。

搜索該語句: #define EXTRUDE_MINTEMP 170。這表示如果擠出機(jī)的溫度低于170攝氏度,打印機(jī)將不會移動。如果您的熱敏電阻產(chǎn)生了問題,請切記這一要點。

搜索該語句:#define THERMAL_PROTECTION_HOTENDS。取消該行的注釋,可以啟用更智能的熱量控制功能。該功能使用熱敏電阻測量溫度,并設(shè)置了一個計時器。如果自測量開始,溫度顯著升高,那么將會停止打印。這樣可以防止會導(dǎo)致打印機(jī)過熱的熱敏電阻的松動。

搜索該語句:#define COREXY。這是本教程中使用的皮帶配置的名稱。本節(jié)中還可以對其他特殊配置進(jìn)行設(shè)置。

搜索該語句:#define INVERT_X_DIR。在本部分中,您可以對任何軸的方向進(jìn)行更改。這對于調(diào)試很有用。

搜索該語句:#define DEFAULT_AXIS_STEPS_PER_UNIT。本節(jié)是配置過程的關(guān)鍵部分,您可以在此設(shè)置每單位長度的步數(shù)。這取決于您的同步皮帶輪,螺桿和擠出機(jī)的型號。在本教程中,我們使用了:G2T同步帶和同步帶輪,一個Mk8擠出機(jī)和一個8mm螺距的螺釘。這表示我們要輸入的值為:78.74, 78.74, 2560, 和 95

搜索該語句:#define EEPROM_SETTINGS。請確保其可以執(zhí)行。您可以通過該語句在無需重新加載固件的前提下對固件設(shè)置進(jìn)行更改。

搜索該語句:#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)。該語句用來選擇用戶界面的語言。請確保使用 language.h 文件將其設(shè)置為您的首選語言。

搜索該語句:#define SDSUPPORT。取消此行的注釋,您就可以使用智能控制器上的SD卡插槽進(jìn)行打印。這可以使打印機(jī)成為獨立于您的計算機(jī)的系統(tǒng)。

搜索該語句:#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER。取消此行注釋,您就可以使用本文中所使用的智能控制器。如果您想要使用其他控制器,請在列表中搜索找到該控制器,并將其注釋取消掉。

最后,上傳您的代碼并進(jìn)行測試。點擊按鈕以顯示菜單,找到準(zhǔn)備(Prepare)菜單。找到移動軸選項。確保對每個軸都進(jìn)行了測試。以下視頻將顯示一切正常情況下的測試結(jié)果。

步驟6:收尾工作

夾住頂板的邊緣。請確保所有的電纜都正確連接并收納妥當(dāng)。

請確保所有坐標(biāo)軸歸位于最小值。

請確保所有組件都可以正常工作。在必要時對設(shè)置進(jìn)行調(diào)整。

步驟7:您的第一臺打印機(jī)

現(xiàn)在,您可以準(zhǔn)備開始第一次3D打印了。通過以下鏈接下載3D打印切片程序Cura: https://ultimaker.com/en/products/cura-software。

下載后,打開程序并根據(jù)您的打印機(jī)對其進(jìn)行配置。選擇自定義FDM打印機(jī)。輸入最大構(gòu)建尺寸:105mm x 130mm x 80mm。對其他需要輸入的尺寸用尺子進(jìn)行測量。請確保G代碼風(fēng)格為RepRap Marlin。

現(xiàn)在,您只需要一張裝有要打印的STL文件的SD卡即可?;赗epRap的理念,我建議您以打印用于改進(jìn)此打印機(jī)的零部件開始。

點擊此處閱讀第1部分:構(gòu)建 >

點擊此處閱讀第2部分:接線 >

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73990
  • 3D打印
    +關(guān)注

    關(guān)注

    28

    文章

    3638

    瀏覽量

    118063
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    3D打印又火了!全球最大工廠將落地深圳

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)近日,拓竹科技與匯納科技達(dá)成戰(zhàn)略合作,宣布將在深圳建成全球首個超大型3D打印工廠。按照規(guī)劃,匯納科技將于2026年一季度前完成15000臺拓竹3D打印機(jī)
    的頭像 發(fā)表于 11-30 07:34 ?1w次閱讀
    <b class='flag-5'>3D</b><b class='flag-5'>打印</b>又火了!全球最大工廠將落地深圳

    3D打印機(jī)散熱風(fēng)扇:熱管理核心與選型優(yōu)化指南

    調(diào)速、IPX5防水這些功能,電壓有12V、24V、48V可選,工業(yè)級3D打印機(jī)、機(jī)箱機(jī)柜這些場景都能適配。(二)核心類型劃分按照氣流方向和結(jié)構(gòu)來3D
    發(fā)表于 01-19 15:05

    3D打印機(jī)的完美驅(qū)動芯片TMC2208,低成本,高性能,真靜音

    你是否曾為3D打印機(jī)的“嗡嗡”聲而煩惱?或者在深夜打印時,擔(dān)心噪音打擾到家人休息?今天,我們來聊聊一款能讓你的打印機(jī)安靜下來的小芯片——TMC2208。它以其低成本、高性能和真靜音的特
    的頭像 發(fā)表于 12-18 15:18 ?376次閱讀
    <b class='flag-5'>3D</b><b class='flag-5'>打印機(jī)</b>的完美驅(qū)動芯片TMC2208,低成本,高性能,真靜音

    3D打印機(jī)主控:MEGA2560與STM32系列深度解析

    系列的主控板因其開源生態(tài)、強(qiáng)大性能和廣泛支持,成為3D打印機(jī)中最主流的兩大選擇。 ? MEGA2560:3D打印開源生態(tài)的奠基者 ? MEGA2560是
    的頭像 發(fā)表于 12-14 00:10 ?7330次閱讀

    深入解析DLP300S:開啟低成本DLP 3D打印新時代

    領(lǐng)域的重要分支,以其高精度、高速度的特點,備受關(guān)注。今天,我們就來深入了解一款適用于低成本TI DLP? 3D打印機(jī)的關(guān)鍵器件——DLP300S。 文件下載: dlp300s.pdf 一、DLP300S
    的頭像 發(fā)表于 12-11 10:20 ?492次閱讀

    DLPC1438:TI DLP? 3D 打印機(jī)數(shù)字控制器的全面解析

    DLPC1438:TI DLP? 3D 打印機(jī)數(shù)字控制器的全面解析 在 3D 打印技術(shù)蓬勃發(fā)展的今天,一款優(yōu)秀的數(shù)字控制器對于實現(xiàn)高質(zhì)量、高分辨率的
    的頭像 發(fā)表于 12-11 10:20 ?442次閱讀

    DLP301S:TI DLP? 3D打印機(jī)的理想之選

    DLP301S:TI DLP? 3D打印機(jī)的理想之選 在電子工程領(lǐng)域,3D打印技術(shù)不斷革新,相關(guān)的硬件設(shè)備也在持續(xù)升級。今天,我們來深入了解一款適用
    的頭像 發(fā)表于 12-11 09:20 ?646次閱讀

    航空航天用工業(yè) 3D 打印機(jī)口碑榜:Raise3D 以精準(zhǔn)與可靠,賦能高端制造突破

    在航空航天領(lǐng)域,零件制造對精度、可靠性和材料兼容性的要求達(dá)到極致,工業(yè) 3D 打印機(jī)作為關(guān)鍵生產(chǎn)裝備,其性能直接決定研發(fā)效率與產(chǎn)品安全。在眾多品牌中,Raise3D 憑借多年技術(shù)沉淀與行業(yè)實踐,成功
    的頭像 發(fā)表于 11-18 14:35 ?519次閱讀

    如何為你的3D打印機(jī)選擇合適材料?

    3D打印材料多樣,從入門的PLA塑料到工業(yè)級金屬粉末,選擇取決于打印機(jī)類型、性能需求及應(yīng)用場景。
    的頭像 發(fā)表于 09-19 16:55 ?2054次閱讀
    如何為你的<b class='flag-5'>3D</b><b class='flag-5'>打印機(jī)</b>選擇合適材料?

    UltiMaker S6 3D打印機(jī)助力Isringhausen提升開發(fā)效率

    在瞬息萬變的重型車輛市場,產(chǎn)品迭代速度就是生命線。全球座椅系統(tǒng)領(lǐng)導(dǎo)者Isringhausen,正借助UltiMaker S6 3D打印機(jī),將原型開發(fā)效率推向新高度,讓創(chuàng)新引擎全速運轉(zhuǎn)!
    的頭像 發(fā)表于 08-19 15:00 ?1045次閱讀

    基于樹莓派的工業(yè)級 3D 打印機(jī)

    基于計算模4的3D打印機(jī)功能強(qiáng)大、可靠且易于使用!Formlabs采用樹莓派計算模塊4為其最新款3D打印機(jī)Form4提供動力,提升了其旗艦系列打印機(jī)
    的頭像 發(fā)表于 06-29 08:22 ?1163次閱讀
    基于樹莓派的工業(yè)級 <b class='flag-5'>3D</b> <b class='flag-5'>打印機(jī)</b>!

    Molex莫仕與3D打印機(jī)制造商Prusa Research達(dá)成合作

    Molex莫仕正與快速發(fā)展的3D打印新銳力量Prusa Research達(dá)成合作以實現(xiàn)共同發(fā)展。這家總部位于捷克的3D打印機(jī)制造商,擁有逾千名員工,致力于為全球多元化的忠誠度極高的客戶
    的頭像 發(fā)表于 06-07 16:53 ?1274次閱讀

    高精度微型導(dǎo)軌在3D打印機(jī)中有多重要?

    作為實現(xiàn)精密機(jī)械運動的關(guān)鍵部件,微型導(dǎo)軌憑借其高精度滾動摩擦設(shè)計、低摩擦系數(shù)及長壽命特性,正成為3D打印機(jī)中不可或缺的導(dǎo)向元件。
    的頭像 發(fā)表于 05-27 17:53 ?727次閱讀
    高精度微型導(dǎo)軌在<b class='flag-5'>3D</b><b class='flag-5'>打印機(jī)</b>中有多重要?

    在樹莓派上安裝 Cura :輕松控制你的3D打印機(jī)!

    3D打印機(jī)和RaspberryPi是好朋友。使用RaspberryPi來控制3D打印機(jī)相當(dāng)普遍,因為它帶來了許多好處(低功耗、連接性、遠(yuǎn)程訪問等)。我(目前)還沒有
    的頭像 發(fā)表于 03-25 09:36 ?1702次閱讀
    在樹莓派上安裝 Cura :輕松控制你的<b class='flag-5'>3D</b><b class='flag-5'>打印機(jī)</b>!

    樹莓派“牽手”Formlabs:3D打印機(jī)界的“工業(yè)新寵”誕生記

    Hey,小伙伴們!今天來給大家講講樹莓派和Formlabs這對“科技CP”的甜蜜故事,看看他們是怎么在3D打印領(lǐng)域擦出不一樣的火花,打造出工業(yè)級的“硬核”打印機(jī)——Form4!樹莓派的“工業(yè)新寵
    的頭像 發(fā)表于 03-25 09:25 ?1144次閱讀
    樹莓派“牽手”Formlabs:<b class='flag-5'>3D</b><b class='flag-5'>打印機(jī)</b>界的“工業(yè)新寵”誕生記