跳轉至

常見問題

我如何向專案捐款?

謝謝您的支持。有關信息,請參閱 贊助商頁面

如何計算 rotation_distance 配置參數?

參見旋轉距離文件

我的串列埠在哪裡找?

查詢 USB 串列埠的一般方法是從主機上的 ssh 終端執行 ls /dev/serial/by-id/*。 它可能會產生類似於以下內容的輸出:

/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

在上述命令中找到的名稱是穩定的,可以在配置檔案中使用它,同時可用於刷寫微控制器的程式碼。 例如,一個 flash 命令:

sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
sudo service klipper start

更新后的配置可能如下所示:

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

請務必從上面執行的「ls」命令中複製並貼上名稱,因為每個印表機的名稱都不同。

如果您使用多個微控制器並且它們沒有唯一的 ID(在帶有 CH340 USB 晶片的板上很常見),那麼請按照上面的說明使用命令 ls /dev/serial/by-path/* 代替。

當微控制器重新啟動裝置更改為/dev/ttyUSB1

按照「我的串列埠在哪裡找?」部分中的說明來防止這種情況發生。

「make flash」命令不起作用

該程式碼嘗試使用每個平臺最常用的方法來刷寫裝置。 不幸的是,刷寫方法存在很多差異,因此「make flash」命令可能不適用于所有主板。

如果您遇到間歇性故障或您確實有標準設定,請仔細檢查刷寫時 Klipper 是否未執行(sudo service klipper stop),確保 OctoPrint 未嘗試直接連線到裝置(打開 網頁中的連線選項卡,如果串列埠設定為裝置,則單擊斷開連線),並確保為您的電路板正確設定了 FLASH_DEVICE(請參閱上面的問題)。

但是,如果「make flash」對您的電路板不起作用,那麼您將需要手動刷寫。 檢視 config directory 中是否有一個配置檔案,裡面有刷機的具體說明。 此外,請檢視電路板製造商的文件,看看它是否描述瞭如何刷寫裝置。 最後,可以使用諸如「avrdude」或「bossac」之類的工具手動刷寫裝置——有關更多資訊,請參閱引導載入程式文件

如何更改序列波特率?

Klipper的推薦波特率是 250000。這個波特率在 Klipper 支援的所有微控制器板上都很好用。如果你發現網上的指南推薦了一個不同的波特率,那麼請忽略這部分指南,繼續使用預設值 250000。

如果你還是想改變波特率,那麼需要重新配置微控制器為新的波特率(在make menuconfig過程中),然後將更新的程式碼編譯並刷寫到微控制器中。Klipper 的 printer.cfg 檔案也需要更新以匹配該波特率(詳見配置參考。例如:

[mcu]
baud: 250000

OctoPrint 網頁上顯示的波特率對內部 Klipper 微控制器的波特率沒有影響。使用 Klipper 時,始終將 OctoPrint 的波特率設定為250000。

Klipper 微控制器的波特率與微控制器啟動載入程式的波特率無關。有關啟動載入程式的額外資訊請參閱啟動載入程式文件

我可以在 Raspberry Pi 3 以外的其他裝置上執行 Klipper 嗎?

The recommended hardware is a Raspberry Pi Zero2w, Raspberry Pi 3, Raspberry Pi 4 or Raspberry Pi 5. Klipper will also run on other SBC devices as well as x86 hardware, as described below.

Klipper will run on a Raspberry Pi 1, 2 and on the Raspberry Pi Zero1, but these boards don't have enough processing power to run Klipper well. It is common for print stalls to occur on these slower machines when printing (The printer may move faster than Klipper can send movement commands.) It is not reccomended to run Klipper on these older machines.

要在Beaglebone上執行,請參閱Beaglebone特別安裝說明

Klipper 可以在其他計算機上執行。Klipper 主機軟體只需要在Linux(或類似)系統的計算機上執行 Python。然而,如果你想在其他計算機上執行它,你將需要一些 Linux 管理知識來安裝該計算機上系統的依賴包。參見 install-octopi.sh 指令碼,以進一步瞭解必要的 Linux 安裝方法。

如果你想在低端處理器上執行 Klipper 主機軟體,請注意,你至少需要一臺具有 "雙精度浮點 "運算硬體的計算機。

如果你想在共享的通用計算機或伺服器上執行 Klipper 主機程式,請注意 Klipper 有一些實時排程要求。如果在列印過程中,主機也在執行密集型的通用計算任務(如硬碟碎片整理、3D渲染、大量swapping (虛擬記憶體交換)等),可能會導致 Klipper 報告列印錯誤。

注意:如果你沒有使用 OctoPi 映象,一些Linux發行版啟用了一個 "ModemManager"(或類似的)軟體包,它干擾序列通訊。(這可能導致 Klipper 報告看似隨機的 "與MCU失去通訊 "錯誤)。如果你在這些發行版上安裝Klipper,你可能需要禁用該軟體包。

我可以在同一臺主機上執行多個 Klipper 實例嗎?

可以執行 Klipper 主機軟體的多個實例,但這樣做需要一定的 Linux 知識。 Klipper 安裝指令碼最終會導致執行以下 Unix 命令:

~/klippy-env/bin/python ~/klipper/klippy/klippy.py ~/printer.cfg -l /tmp/klippy.log

只要每個實例都有自己的印表機配置檔案、自己的日誌檔案和自己的偽 tty,就可以執行上述命令的多個實例。 例如:

~/klippy-env/bin/python ~/klipper/klippy/klippy.py ~/printer2.cfg -l /tmp/klippy2.log -I /tmp/printer2

如果你選擇這樣做,你將需要實現必要的啟動、停止和安裝指令碼。install-octopi.shklipper-start.sh指令碼提供了一些例子。

我必須使用 OctoPrint 嗎?

Klipper 不依賴 OctoPrint。其他軟體也可以向 Klipper 發送命令,但這樣做可能需要一些 Linux 管理知識。

Klipper 通過 「/tmp/printer」 檔案建立了一個「虛擬串列埠」,該檔案模擬了一個標準的3D印表機串列埠。理論上任何能配置並使用 「/tmp/printer」 作為印表機串列埠的軟體都可以與Klipper一起工作。

為什麼在歸位印表機之前我不能移動步進器?

程式碼這樣做是爲了減少意外將頭撞到床或墻壁的機會。 印表機歸位后,軟體會嘗試驗證每個移動是否在配置檔案中定義的 position_min/max 範圍內。 如果電機被禁用(通過 M84 或 M18 命令),那麼電機將需要在運動前再次歸位。

如果您想在通過 OctoPrint 取消列印后移動列印頭,請考慮更改 OctoPrint 取消順序來為您執行此操作。 它是通過 Web 瀏覽器在 OctoPrint 中配置的:設定-> GCODE 指令碼

如果您想在列印完成後移動頭部,請考慮將所需的移動新增到切片機的「自定義 g 程式碼」部分。

如果印表機歸位過程中需要一些額外的移動(或者根本上沒有歸位運動),那麼可以在配置檔案中定義safe_z_home或 homing_override分段。如果你需要為診斷或除錯目的移動一個步進,可以在配置檔案中新增一個 force_move 分段。參見配置參考以瞭解關於這些選項的詳情。

為什麼 Z position_endstop 在預設配置中設定為 0.5?

對於笛卡爾式印表機,Z position_endstop 定義了當限位觸發時噴嘴離床的距離。如果可能的話,建議使用 Z-max 限位使歸位時列印頭遠離床(因為這可以減少碰撞的發生)。如果必須朝向床歸位,那麼建議將限位固定在噴嘴距離床還有一小段距離時觸發。這樣,當歸位 Z 軸時,噴嘴會在接觸床之前停止。有關詳細資訊,請參閱 列印床調平文件

我從 Marlin 轉換了我的配置並且 X/Y 軸工作正常,但是在歸位 Z 軸時我只聽到刺耳的噪音且印表機不動

長話短說:首先,請確保您已按照 配置檢查文件 中描述的步驟驗證了步進驅動配置。如果問題仍然存在,請嘗試降低印表機配置中的 max_z_velocity 設定。

具體原理:在實踐中,Marlin 通常只能以每秒 10000 步左右的速度發送步進。如果要求它以需要更高的步進率的速度移動,那麼 Marlin 會盡可能快地步進。Klipper 能夠實現更高的步進率,但步進電機可能沒有足夠的扭矩以更高的速度移動。因此,對於一個具有高傳動比或高微步設定的 Z 軸,實際的最大速度可能小於 Marlin 中配置的值。

我的 TMC 電機驅動在列印過程中關閉了

如果在「獨立模式」中使用 TMC2208(或 TMC2224)驅動,那麼請確保您正在使用最新版本的 Klipper。2020年3月中旬,Klipper 中修復了 TMC2208 「StealthChop」 驅動的問題。

我不斷收到隨機的"與MCU失去通訊"錯誤

這通常是由主機和微控制器之間的 USB 連線中硬體錯誤引起的。注意這些問題:

  • 在主機和微控制器之間應該使用高質量USB線,並確保插頭牢固。
  • 如果使用樹莓派,請為樹莓派使用優質電源,並使用優質USB電纜將該電源與Pi連線。如果你從OctoPrint得到 "電壓不足 "的警告,這也與電源有關,必須解決。
  • 請確保印表機的電源沒有過載。(微控制器 USB 晶片的電壓波動可能會導致該晶片欠壓復位。)
  • 確認步進電機、加熱器和其他印表機電線沒有被壓壞或磨損。(印表機移動時可能對故障的電線施加壓力,導致其失去接觸、短暫短路或產生過多的噪音。)
  • 有報告稱,當印表機的電源和主機的5V電源混合時,USB噪音很大。(如果你發現當印表機的電源打開或USB電纜插入時,微控制器會通電,那麼這表明5V電源被混用了)。配置微控制器,使其只使用一個電源可能會有幫助。(另外,如果微控制器主板不能配置其供電來源,也可以修改USB電纜,使其主機和微控制器之間不共享5V電源。)

我的樹莓派在列印時不斷重啟

這很可能是由於電壓波動引起的。請遵循"與MCU失去通訊"錯誤同樣的故障排除步驟。

當設定restart_method=command時, AVR 裝置在重啟時就會宕機

一些舊版本的AVR載入程式在看門狗事件處理方面有一個已知的錯誤。這通常表現在printer.cfg檔案中的restart_method設定為 "command"的時候。當這個錯誤發生時,AVR裝置會宕機直到電源被移除並重新上電(電源或狀態LED也可能不停的閃爍直到斷電)。

解決辦法是使用 "command "以外的重啟方法,或者在AVR裝置上刷寫一個新的載入程式。刷寫一個新的載入程式是一個一次性的步驟,通常需要一個外部程式設計器--更多細節請參見Bootloaders

如果 Raspberry Pi 崩潰了,加熱器會一直加熱嗎?

The software has been designed to prevent that. Once the host enables a heater, the host software needs to confirm that enablement every 3 seconds. If the micro-controller does not receive a confirmation every 3 seconds it goes into a "shutdown" state which is designed to turn off all heaters and stepper motors.

詳情請見MCU 命令文件中的 "config_digital_out" 命令。

此外,微控制器軟體在啟動時為每個加熱器配置了最低和最高溫度範圍(詳見配置參考中的min_temp和max_temp參數)。如果微控制器檢測到溫度超出了該範圍,那麼它也將進入 "關機 "狀態。

另外,主機軟體還實現了檢查加熱器和溫度感測器是否正常工作的程式碼。詳情見配置參考

如何將 Marlin 引腳編號轉換為 Klipper 引腳名稱?

簡要回答:在sample-aliases.cfg檔案中有一個對映。使用該檔案作為指引來尋找實際的微控制器引腳名稱。(也可以將相關的board_pins配置部分複製到你的配置檔案中,在你的配置中使用別名,但最好是翻譯並使用實際的微控制器引腳名稱。) 請注意,sample-aliases.cfg檔案使用以 "ar "開頭的引腳名稱替換 "D"(例如,Arduino引腳D23是Klipper別名ar23)和以 "analog "開頭的引腳名稱替換 "A"(例如,Arduino引腳A14是Klipper別名analog14)。

詳細答案:Klipper使用微控制器定義的標準引腳名稱。在 Atmega 晶片上,這些硬體引腳的名稱類似於PA4PC7PD2

很久以前,Arduino專案決定避免使用標準的硬體名稱,而採用他們自己的基於遞增數字的引腳名稱--這些Arduino名稱一般看起來像D23A14。這是一個不幸的選擇,導致了大量的混亂。特別是Arduino的引腳號碼經常不能轉換為相同的硬體名稱。例如,D21在一個常見的Arduino板上是PD0,但在另一個常見的Arduino板上是PC7

爲了避免這種混淆,Klipper 核心程式碼使用微控制器定義的標準引腳名稱。

我必須將裝置連線到特定型別的微控制器引腳嗎?

這取決於裝置和引腳的型別:

ADC 引腳(或模擬引腳):熱敏電阻和類似的「模擬」感測器必須連線到微控制器上具有「模擬」或「ADC」功能的引腳。如果您在 Klipper 上為一個模擬感測器配置為使用不具備模擬功能的引腳,Klipper 將報告「Not a valid ADC pin」錯誤。

PWM引腳(或定時器引腳)。Klipper預設不在任何裝置上使用硬體PWM。因此,一般來說,可以將熱端、風扇和類似的裝置連線到任何的通用IO引腳。然而,風扇和output_pin裝置可以選擇配置為使用hardware_pwm: True,在這種情況下,微控制器在這個引腳上必須支援硬體PWM(否則,Klipper將報告 "不是有效的PWM引腳 "錯誤)。

IRQ引腳(或中斷引腳)。Klipper不使用IO引腳上的硬體中斷,所以沒有必要將裝置連線到這些微控制器引腳上。

SPI 引腳:使用硬體 SPI 時,需要將引腳連線到微控制器的 SPI 引腳。但是,大多數裝置都可以配置為使用「軟體 SPI」,在這種情況下,可以使用任何通用 IO 引腳。

I2C 引腳:使用 I2C 時,必須將引腳連線到微控制器支援 I2C 的引腳。

其他裝置可以連線到任何通用的IO引腳。例如,步進電機、加熱器、風扇、Z探頭、舵機、LED、通用的hd44780/st7920液晶顯示器和Trinamic UART控制線都可以連線到任何通用的IO引腳。

如何取消 M109/M190 "等待達到目標溫度"的請求?

導航到OctoPrint終端標籤頁,在終端框中輸入M112命令。M112命令將使Klipper進入 "關機 "狀態,它將使OctoPrint從Klipper斷開。導航到OctoPrint連線區,點選 "連線",使OctoPrint重新連線。導航回到終端標籤頁,輸入FIRMWARE_RESTART命令以清除Klipper的錯誤狀態。完成這一系列操作將取消先前的加熱請求,可以開始新的列印。

怎麼檢查印表機是否發生了丟步?

在某種程度上,是的。將印表機歸位,發出 GET_POSITION命令,執行列印,再次歸位,再發出 GET_POSITION。然後比較 mcu:行中的值。

這可能有助於調整步進電機電流、加速度和速度等設定,而不需要實際列印東西和浪費材料:只要在 GET_POSITION命令之間執行一些高速移動。

請注意,限位開關本身的觸發位置略有不同,所以導致限位開關觸發結果可能有幾個微步的誤差。步進電機本身只能以4個整步為增量損失步數。(因此,如果使用16個微步,那麼步進器電機上的失步將導致 "MCU: "步進計數器偏離64微步的倍數。)

為什麼 Klipper 會報錯?我收了一盤面條(我又打廢了)!

簡短的回答:我們想知道印表機是否檢測到問題,這樣就可以解決潛在的問題,就可以獲得高質量的列印件。我們絕對不希望印表機默默地生產低質量的列印件。

詳細答案:Klipper被設計成能夠自動解決許多瞬時問題。例如,它自動檢測到通訊錯誤,並會重新傳輸;它提前安排行動,並在多層緩衝命令,以便即使有間歇性干擾也能精確控制時序。然而,如果軟體檢測到它無法恢復的錯誤,或者它被命令採取無效的行動,或者它檢測到它無法執行其被命令的任務,那麼Klipper將報告錯誤。在這些情況下,產生低質量印刷件(或更糟)的風險很大。我們希望通過提醒使用者,使他們有能力解決潛在的問題,提高列印的整體質量。

有一些相關的問題。為什麼Klipper不暫停列印?為什麼不先警告?為什麼不在列印前檢查錯誤?為什麼不忽略使用者輸入的命令中的錯誤?等等?目前,Klipper使用G-Code協議讀取命令,不幸的是,G-Code命令協議不夠靈活,導致現在並不能使用這些替代方案。開發者對改善異常事件中的使用者體驗很感興趣,但預計這將需要大量的底層工作(包括從G-Code的遷移到別的方式)。

我怎樣才能升級到最新的軟體?

升級軟體的第一步是檢視最新的配置變更檔案。作為軟體升級的一部分,偶爾有時候軟體會有一些變化需要使用者更新他們的設定。在升級前最好檢視該檔案。

當準備升級時,一般的方法是ssh進入樹莓派並執行:

cd ~/klipper
git pull
~/klipper/scripts/install-octopi.sh

然後可以重新編譯和刷寫微控制器的程式碼。例如:

make menuconfig
make clean
make

sudo service klipper stop
make flash FLASH_DEVICE=/dev/ttyACM0
sudo service klipper start

然而,通常是隻有主機軟體發生變化。這時可以只更新和重新啟動主機軟體:

cd ~/klipper
git pull
sudo service klipper restart

如果在使用這個快速方式后,軟體警告說需要重新刷寫微控制器或出現其他不常見的錯誤,那麼請按照上面所述的完整升級步驟進行。

如果任何錯誤持續存在,那麼請仔細檢查config changes檔案,因為可能需要修改印表機配置。

請注意,RESTART和FIRMWARE_RESTART g-code命令不會載入新的軟體--需要使用上述 "sudo service klipper restart "和 "make flash "命令才能使軟體變化生效。

如何解除安裝Klipper?

在韌體端,沒有什麼特別需要做的。只要刷寫新韌體就可以了。

在樹莓派上,解除安裝指令碼在這裡scripts/klipper-uninstall.sh。例如:

sudo ~/klipper/scripts/klipper-uninstall.sh
rm -rf ~/klippy-env ~/klipper
Back to top