跳轉至

常見問題

我如何向專案捐款?

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

如何計算 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 嗎?

推薦的硬體是 Raspberry Pi 2、Raspberry Pi 3 或 Raspberry Pi 4。

Klipper 可以在 Raspberry Pi 1和Raspberry Pi Zero上執行,但這些板子沒有足夠的處理能力來執行 OctoPrint。在這些較慢的機器上直接從 OctoPrint 列印時,經常會出現列印停滯。(印表機的移動速度可能比 OctoPrint 發送移動命令的速度快。)如果你希望在這些較慢的板子上執行,請考慮在列印時使用 "virtual_sdcard "功能(詳情請參見配置參考)。

要在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 崩潰了,加熱器會一直加熱嗎?

Klipper 的設計防止了這種情況。一旦主機啟用了一個加熱器,主機軟體需要每 5 秒鐘確認一次啟用狀態。如果微控制器沒有收到每 5 秒的確認,它就會進入"關閉"狀態,該狀態會關閉所有加熱器和步進電機。

詳情請見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