1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          跟著思兼學習Klipper穩中求勝

          來源:互聯網轉載 時間:2024-01-29 08:29:36

          前言

          本文感謝富源盛 (Fysetc) 贊助的 Spider King 主板。最初接觸8軸主板就是當時買的 mks monster8 v1 和三叉戟自帶的 spider v1.1。后來關注 fys 的 mix 二合一主板,期望很高,實際情況有很大落差,這次交流之后也解開了一些既往的困惑。每家 3D 打印機主板制造商都有其設計思路,可以從產品上反映出來,"閱讀一本書,就像是和作者對話",在仔細了解一個硬件的同時,也會有這種感覺。

          【KlipperBoxConfigs 配置文件數據庫】已加入 fys-spiderking-407 主板支持,提供引腳定義文件和一鍵編譯、升級固件功能。

          原創文章,轉載引用請務必注明鏈接,水平有限,如有疏漏,歡迎指正交流。

          文章如有更新請訪問 DFRobot 社區 或者 cnblogs 博客園。

          歡迎對 Klipper 固件,以及對改版 CNC 加工的 Voron 三叉戟、v0、v2.4 感興趣的朋友加群交流(QQ Group:490111638)

          為了方便,我們約定:Spider King 使用 SKing 縮寫,四軸BIG5160插槽簡稱大4槽,四軸普通插槽簡稱小4槽。

          0、文檔資料

          • 項目主頁:http://git.fysetc.com.cn/FYSETC/FYSETC-SPIDER-KING ,包括 原理圖、引腳圖、固件源碼與配置參考、尺寸圖、3D打印支架模型等
          • taobao 介紹頁面
          • WIKI 頁面 | 國內打開慢
          • 從原理圖可知原項目代號 Spider_Pro,可能做出來覺得 SpiderKing 這個名字更配得上它吧。

          開箱視頻可以移步 《富盛源FYSETC 蜘蛛王主板開箱視頻》by 惡化 和 《開箱FYSETC-SPIDER-King 3D打印機10軸主板 支持4路6A 6路3A 可更換核心》。還有餅子的 《給蜘蛛king上十個電機搖一搖》。我就寫點別的吧。

          1、外觀對比

          尺寸:177*108mm,整體要比 mks monster8 和 btt octopus 略大一圈,屬于富源盛家的旗艦級產品。各主板對比圖前文有,主要是 mcu核心板、板子中間的隔離模塊以及 BIG5160 驅動插槽比較占地方。

          2、硬件規格及備注

          2.1 核心亮點

          • 可更換式控制核心板設計
          • 工業級標準設計,高壓外設信號全隔離,給核心板最好的保護
          • 10軸驅動系統,支持 4 軸強力驅動(支持 BIG5160 驅動,最大 55V@6A)

          2.2 接口概覽

          • 10軸驅動接口,其中4路支持高壓
          • 5路可控可調壓風扇,其中2路可調壓 4Pin PWM 調速風扇
          • 6路熱敏接口,全部支持PT1000
          • 6路加熱接口,每路都獨立供電
          • 6路限位開關接口
          • 1個接近開關、1個BLtouch接口
          • 帶隔離的 CANBus 接口
          • 無獨立的斷料檢測、斷電檢測、打完關機模塊接口
          • EXP1、EXP2、EXP3 拓展接口
          • 樹莓派 26Pin 連接器
          • ESP32WiFi 模塊接口,配模塊
          • 1個獨立RGB接口
          • TMC5160 編碼器引腳(ABN)

          2.3 可更換的控制核心板設計

          將 mcu 做成模塊,可以 獨立使用,包括 boot0、reset,下載引腳等。

          這種設計官方介紹是可以方便更換、升級核心,也就是核心板 + 底板的模式,比較靈活。比如升級到 STM32H7 核心以獲得更高的性能。

          問題來了:

          • 不同核心板之間,有多大差異吸引玩家去更換,價格?巨大性能提升?
          • 核心燒了,方便更換而不用整塊主板更換。但是在這塊保護超足的主板上,這種情況幾乎很難發生
          • 核心可以匹配不同功能的底板,裁剪或者豐富功能

          目前只有 F407 核心板,萬里長征第一步,這種設計還是挺新穎的。

          2.3.1 STM32F407 核心板

          出廠自帶 RepRapFirmware (RRF) 固件。短接跳帽從USB啟動,顯示設備為

          Bus 001 Device 005: ID 16c0:27dd Van Ooijen Technische Informatica CDC-ACM class devices (modems)

          板載一個 reset 按鈕和 FLASH 指示燈,短接 boot03.3v 進入 dfu 模式可以燒錄固件(此時 FLASH 燈亮起)。

          注意,使用usb供電時,SKing 主板上的 5V 燈不亮,應該是采用了隔離的緣故。正式安裝使用時,拔掉 5V USB 供電跳帽。

          2.4 保護電路子系統

          【5000V全IO隔離】采用工業級標準設計,板載大功率隔離電源,控制核心板所有高壓外設 隔離,就像開啟多重影分身的鳴人多方位無死角呵護著雛田。

          • 高壓輸入信號:海凌科 Hi-Link URB2405YMD-20WR3 | DCDC 隔離寬電壓輸入模塊電源
          • 步進電機驅動:川土微-Chipanalog CA-IS3741HW | 四通道標準數字隔離器
          • CANBus:金升陽-Mornsun TDH541SCANH | 帶隔離電源的CAN收發器,信號傳輸速率高達1兆位每秒(Mbps)
          • MOSFET 輸出保護
          • 6N137 光電耦合器

          你就說這樣穩不穩吧。

          2.5 10 軸驅動系統

          驅動供電分為兩部分,是獨立分開供電的,與 Octopus 設計不同:

          1. 6路最大 35V@3A 的驅動插槽
          2. 4路最大 55V@6A 的強力驅動插槽,支持 57 步進電機

          2.5.1 供電與電壓選擇

          前文介紹了 Octopus 的方案,全部 10 軸都支持高壓供電,且可以使用跳帽來選擇電壓,當都使用主板供電時,可以不接獨立驅動供電。

          而 SKing 則采用 4+6 分開獨立供電 的方式,想要使用 4 軸需要額外供電,此 4 軸支持 12-55V 供電。6 軸支持 12-28V 供電。6路傳統模式沒太多說的,講講 4 路強力驅動。

          2.5.2 四路強力驅動插槽

          由于沒有電壓選擇功能,此 4 路供電相同:

          • 當使用 48V 供電時,支持 QHV5160 和 BIG5160驅動
          • 當使用 24V 供電時,支持 QHV5160、 BIG5160 和 TMC2209 v4.0 驅動。理論上也能使用其他驅動的StandAlone 模式,或者焊接背面焊盤手動設置 SPI/UART 通訊來連接 TMC2208 等驅動。

          目前 TMC2209 v4.0 和 BIG5160 都是搭配主板售賣,尚未零售。

          帶來的問題

          我們規劃 3D 打印機運動部分時,常規可能會選擇 X/Y 電機使用 TMC5160 高壓驅動,那么剩下兩個驅動插座就不能接 TMC2209 使用,浪費了兩個插座。除非各軸都使用 TMC5160 高壓或者像 K3/VzBot 那樣 X/Y 使用四個電機的情況,總的來說,可能帶來浪費插座的情況,當然,10軸本身大多數情況下是冗余備份設計,使用上并無大礙。

          此外注意4軸使用端子座而不是 XH2.54 連接電機,適配更大電流。

          2.5.3 預留 TMC5160 編碼器引腳

          觀察主板時我們發現4小槽無限位歸零那里有4個引腳,而不是傳統的2個引腳,對照引腳圖和TMC5160驅動可知,此為連接 ABN 編碼器使用,期待未來更多相關信息和模塊。

          ABN編碼器接口:TMC5160可以外接增量式編碼器,編碼器不僅用于失步的判斷,還可實現運動控制器的歸零功能(替代參考開關)??删幊填A分頻器設置編碼器分辨率以適應電機分辨率。TMC5160內部包含一個32位編碼器計數器。

          進一步閱讀資料:

          1. TMC5160控制/驅動IC 讓步進電機性能更強大

          2. TMC5160和TMC2160的使用

          3. 基于TMC5160StallGuard2實戰案例分享 | 關于無限位歸位參考

          4. 數據手冊 第13頁

          2.5.4 自動識別 TMC 通訊模式

          此功能通過 STC 單片機(宏晶 STC8G1K08A | SOP8 STC8G1K08 系列1T8051)實現。目前僅支持三款驅動:

          • FYS TMC2209 v4.0
          • QHV5160 v2.0
          • BIG5160

          插入上述驅動,在配置文件中設置即可可以自動識別 SPI/UART/Standalone 三種模式。

          使用不支持自動識別的其他驅動

          想要使用其他驅動需要短接如下焊盤來手動指定 SPI 或是 UART 模式,對于非 Fysetc 的驅動,注意檢查驅動通訊引腳,不同廠家的 TMC 驅動 UART 引腳順序可能有所不同。

          我希望能有獨立的跳帽來選擇更方便,但是得到反饋是板子上空間不夠了。

          2.6 樹莓派 26Pin 連接器

          眾所周知啊,除了初版樹莓派,現在都是 40-Pin 了,所以官方配套一根 26-Pin 的排線,我這恰巧沒有。查看原理圖可知引出了三部分功能:

          1. 為上位機反向供電
          2. UART 通訊連接上下位機/ESP32
          3. SPI總線通訊連接上位機/ESP32無線模塊/下位機主板(PB12-15,spi2),不用的設備 CS 要不要拉高避免干擾

          這里的 SPI 用于 RRF固件,不過既然是總線通訊,也可以引出一路用于連接加速度計(連接到上位機、下位機都可以),當然,現在更推薦使用 USB-ADXL345 模塊了。相信此 SPIBus 未來還有更多其他用途。

          當然了,不止能插樹莓派,只要是 40Pin 兼容的開發板都可以使用,比如香橙派等。甚至單獨使用這些引腳也是可以的,比如使用 USB-TTL 模塊連接 UART 引腳。

          2.7 硬件接口備注

          • 文檔錯誤,板載沒有測試 LED 燈與 WS2812 控制引腳 PD3 相連

          • BIG5160 驅動絲印印刷有瑕疵,且沒有標明方向,與 2209 驅動和主板絲印相反,安裝時務必注意 不要裝反 了,這么高電壓,相信場面一定很刺激。

          • EXT-5V 用于輸出,給高功率燈帶等設備用的

          • PT1000 上拉電阻是 4k7 與 Octopus 不同

          • 核心板上有 24LC32(4K EEPROM) 存儲,估計是 Marlin 固件使用

          • 發熱部分集中散熱的設計,不知道在哪,有條件的朋友可以用熱成像儀測試下,懷疑在中間

          • 隨機附送一個 ESP32 模塊,且有一個燒錄 USB 接口很不錯,其實可以采用零售的方式降低成本,畢竟越來越多的人不選擇 RRF 固件了

          • 接近開關可選 5v/24v 電壓

          • 支持12cm風扇直接固定散熱,買個可調速的 12v PC 風扇,有靜音又涼快

          • 拓展接口豐富,支持 EXP1 和 EXP2 Ramps 接口,及 EXP3-Duet 串口屏接口,當然也可以轉為他用

          • 限位開關電壓選擇

            • 默認情況下,1和2連接,6個IO接口電壓都是3.3v
            • 0/1/2支持24v,3/4/5支持5v,如需如此則切斷1/2,焊接2/3。

          3、固件編譯與燒錄

          編譯參數:STM32F407,8M,32KB。

          3.1 SD 卡刷

          下載 klipper.bin 并重命名為 firmware.bin 拷貝到格式化為 FAT32 文件系統的 SD卡中插入主板,斷電或者按下RESET按鈕,稍等片刻20s左右即可完成燒錄,之后文件名稱會變成 FIRMWARE.CUR。

          3.2 DFU 線刷

          1. 按住boot0按鈕,再按下reset按鈕,稍等片刻設備進入DFU燒錄模式

            cd ~/klippersudo dfu-util -p 1-1 -R -a 0 -s 0x08008000:leave -D out/klipper.bin
          2. (推薦)如果系統已經燒錄了新版 Klipper 系統,則無需使用boot0按鈕即可自動進入dfu模式,編譯后直接燒錄

            cd ~/klippermake flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f407xx_fys-sking-407-if00
          3. 注意dfu燒錄固件并不會破壞sd卡升級功能

          4、Klipper 的 mcu 性能測試

          雖然 Sking 的高性能 STM32H7 核心模塊還沒發布,但是我很想知道 F407 和 H723 性能對比如何。傳統的有 coremark 等測試程序,這里我們想看看 klipper 相關的性能對比。查閱 Klipper 文檔,可知 Klipper 目前有上位機性能測試、下位機性能測試、命令傳輸性能測試。本次我們關注下位機性能測試,剩下的下次再說。

          官方提供的方法,與 mcu 直接通訊,基礎知識見前文:跟著思兼學習Klipper(21)新一代全能選手: Octopus Max EZ 簡要使用記錄

          4.1 Step Rate Benchmark Test | 理論測試

          Klipper 默認將 Gcode 命令轉換為機器語言,當然我們也可以直接與下位機主板通訊。這與 /tmp/printer 不同。參考文檔包括:

          • Manually sending commands to the micro-controller
          • Protocol
          • Micro-controller Benchmarks
          • MCU commands | 注意文檔配置對象部分有錯誤
          • 以及 Klipper 源代碼等

          這里的 Step rate benchmark test 用于mcu 同時控制一個或多個步進電機,發出運動指令,逐漸降低每個指令之間的間隔,找到 mcu 能負擔的最小間隔,通過換算得到單位時間內步進電機控制性能,反映 mcu 的性能。直觀就是 STM32 32位處理器要比 mega2560 能支持的打印速度更快。

          【不同 mcu 性能對比】Source:klipper3d.org

          注意:

          • 因為它真的會控制電機移動,請不要實機測試或者使用其他不用的引腳,比如 led 等。
          • 文檔中寫的比較容易令人困惑,重新整理如下
          # 使用 console.py 連接 mcu,注意設備號# 支持canbus連接:~/klippy-env/bin/python ~/klipper/klippy/console.py -c can0 1b93bb79de21sudo systemctl stop klipper~/klippy-env/bin/python ~/klipper/klippy/console.py /dev/serial/by-id/usb-Klipper_stm32f407xx_fys-sking-407-if00# 屏蔽干擾信息, [stats] 可以改成其他關鍵字SUPPRESS stats# 初始化H723/F407,定義指定數量對象,選擇合適的步進電機引腳(step/dir_pin).以下內容直接復制黏貼,使用 shift+insert 黏貼,ctrl+c 在 Linux 下是退出# 文檔中有不同 mcu 的參考引腳配置,多數情況下可以直接使用allocate_oids count=3config_stepper oid=0 step_pin=PE9 dir_pin=PD3 invert_step=-1 step_pulse_ticks=0config_stepper oid=1 step_pin=PA15 dir_pin=PA8 invert_step=-1 step_pulse_ticks=0config_stepper oid=2 step_pin=PE2 dir_pin=PE3 invert_step=-1 step_pulse_ticks=0finalize_config crc=0# 設置變量,開始時間start_clock 和 次數ticks# 定義三個電機,0 1 2。也可以只定義單個電機# 下面代碼段同樣整段直接復制黏貼SET start_clock {clock+freq}SET ticks 10reset_step_clock oid=0 clock={start_clock}set_next_step_dir oid=0 dir=0queue_step oid=0 interval={ticks} count=60000 add=0set_next_step_dir oid=0 dir=1queue_step oid=0 interval=3000 count=1 add=0reset_step_clock oid=1 clock={start_clock}set_next_step_dir oid=1 dir=0queue_step oid=1 interval={ticks} count=60000 add=0set_next_step_dir oid=1 dir=1queue_step oid=1 interval=3000 count=1 add=0reset_step_clock oid=2 clock={start_clock}set_next_step_dir oid=2 dir=0queue_step oid=2 interval={ticks} count=60000 add=0set_next_step_dir oid=2 dir=1queue_step oid=2 interval=3000 count=1 add=0# 如果沒有報錯則稍等片刻,修改上方ticks的值,再次復制黏貼,直到報錯:"Rescheduled timer in the past" 或者 "Stepper too far in past" ,代表 ticks 值太小了(導致 stepping rate 太快)# 一般 ticks 每次減半,報錯則使用下方命令清除 shutdown 狀態,重新選擇合適的值。clear_shutdown# 找到合適的 ticks 值,使用如下公式計算 stepper performance## 由于文檔沒有更新,部分命令使用方法可以使用 LIST 和查閱源碼,例如# https://github.com/Klipper3d/klipper/blob/master/src/stepper.c | config_stepper

          小結:

          • stepper performance K = 3 × freq ÷ ticks ÷ 1000,其中 3 是步進電機數量

          • 此值僅針對 TMC 驅動有參考意義

          • 獲得的數值僅是理論值,當控制其他變量后,可以對比不同 mcu 的性能

          • mcu支持 STEPPER_BOTH_EDGE=1 的(使用console.py連接時最后面)可以設置如下參數進行優化

            invert_step=-1 step_pulse_ticks=0

            否則設置

            step_pulse_ticks為100ns

          查看源碼,搜索 STEPPER_BOTH_EDGE 可知目前支持此特性的主控芯片包括 :

          • hc32f460
          • atsam
          • lpc176x
          • atsamd
          • rp2040
          • stm32
          • ar100
          • AVR 不支持
          • pru 不支持

          The benchmarks are run with parameters suitable for TMC Drivers. For micro-controllers that support STEPPER_BOTH_EDGE=1 (as reported in the MCU config line when console.py first starts) use step_pulse_duration=0 and invert_step=-1 to enable optimized stepping on both edges of the step pulse. For other micro-controllers use a step_pulse_duration corresponding to 100ns.

          step_pulse_duration: The minimum time between the step pulse signal edge and the following "unstep" signal edge. This is also used to set the minimum time between a step pulse and a direction change signal. The default is 0.000 000 100 (100ns) for TMC steppers that are configured in UART or SPI mode, and the default is 0.000 002 (which is 2us) for all other steppers.

          【上述內容涉及 step_pulse_duration 】和丟步有關,有待進一步研究。最后測試結果和官方表格類似。

          4.2 Klipper Speed test | 真假實機環境測試

          基于以下來源:https://pastebin.com/yPfSMBGF 修改,這也就是大家常見的測速宏:

          • 支持設置速度、加速度、移動距離
          • 支持自動X/Y方向直線、矩形、圓形、十字形移動
          • 支持一次設定不同參數,依次自動加速

          如上圖,真實測試,涉及因素包括電機響應速度,MCU同一時間能處理的脈沖數,步進電機驅動能處理的脈沖數,電機不丟步下能達到的速度。通過調參,找到最優設置。對步進電機驅動各項寄存器參數進行優化。

          4.2.1 假實機測試

          上述實機測試好是好,但是:

          • 我們只關注 mcu 性能,需要排除其他影響因素
          • 實際跑測短板太多,達不到理論最大值,超高速還會對機器造成較大損害

          所以這里我們要排除電機因素,僅觀察上位機能達到的理論數據,為此我們創建一個測速用參考文件,不需要熱床、風扇、擠出機,僅需要xyz,不定義TMC驅動(避免通訊失敗報錯以及24V供電),僅讓上位機輸出step/dir/en 驅動信號。

          4.2.2 運動員登場 | mcu 壓測 printer.cfg

          [include misc/board.cfg][include misc/fake_speed_test.cfg][include misc/fluidd.cfg][printer]# cartesiankinematics: corexymax_velocity: 1000max_accel: 100000square_corner_velocity: 5.0max_z_velocity: 5max_z_accel: 100######################################################################  X/Y/Z 步進電機設置 | X/Y/Z Stepper Settings#####################################################################[stepper_x]step_pin: MOT0_STEPdir_pin: !MOT0_DIR     # X軸電機方向引腳設置,可以通過添或刪除引腳前面的!來改變電機方向enable_pin: !MOT0_ENmicrosteps: 64         # 推薦16細分以達到較好的精度和靜音效果position_max: 1000# step_pulse_duration: 0.000004rotation_distance: 40  # 同步輪周長mm(2GT-20T帶輪40,2GT-16T帶輪32)endstop_pin: ^!ESTOP0  # X_MINposition_endstop: 0    # X Offset,用于設置打印平臺偏移[stepper_y]step_pin: MOT1_STEPdir_pin: !MOT1_DIRenable_pin: !MOT0_ENmicrosteps: 64position_max: 1000# step_pulse_duration: 0.000004rotation_distance: 40endstop_pin: ^!ESTOP2  #  Y_MINposition_endstop: 0    # Y Offset[stepper_z]step_pin: MOT2_STEPdir_pin: !MOT2_DIRenable_pin: !MOT0_ENmicrosteps: 16step_pulse_duration: 0.000004rotation_distance: 4   # 根據情況修改position_endstop: 0.5                    # disable to use BLTouchendstop_pin: ^!ESTOP4                    # disable to use BLTouch, Z_MINposition_min: 0position_max: 300
          • 是的,這就沒了
          • 關注細分參數
          • board.cfg 改成不同主板的引腳定義文件,比如 maxez/rp2040/sking 等
          • fake_speed_test.cfg 是我們的假跑宏

          4.2.3 比賽場地與規則介紹 | fake_speed_test.cfg

          # original_url: https://pastebin.com/yPfSMBGF# 參數:# ACCEL_STEPS (文字,逗號隔開整數):測試的加速度值,調用方式:ACCEL_STEPS="5000, 10000, 20000"# TEST_STEPS (文字,逗號隔開文本):測試目標,如:TEST_STEPS="x_test,y_test,rect_test,diag_test"#- 選項:#  - x_test    = 移動x軸#  - y_test    = 移動y軸#  - rect_test = 矩形移動#  - diag_test = xy對角移動#  - circle_test = 圓形移動Moves in a circle twice# DISTANCE_STEPS (文字,逗號隔開浮點數):測試移動距離, DISTANCE_STEPS="30, 22, 45.221"# SPEED_STEPS (文字,逗號隔開浮點數): 測試移動速度, SPEED_STEPS="100, 120, 120.22"# feed_rate_test TEST_STEPS="x_test,y_test,rect_test,diag_test" SPEED_STEPS="200, 400" DISTANCE_STEPS="400" ACCEL_STEPS="10000, 50000"# 清空當前日志并生成負載圖; python3 ~/klipper/scripts/graphstats.py ~/printer_data/logs/klippy.log -o ~/loadgraph.png; systemctl stop klipper; echo > ~/printer_data/logs/klippy.log; systemctl start klipper[gcode_macro FEED_RATE_TEST]description: 打印機速度測試,僅涉及XY空跑或者虛擬跑。original_url: https://pastebin.com/yPfSMBGF# TODO: 判斷是否開啟 respondgcode:  {% if printer.configfile.config.respond is not defined %}    {action_raise_error("This gcode_macro requires the [respond] section in your printer.cfg")}  {% endif %}  # Ugly code to convert a string into an array in jinja  # TEST_STEPS conversion  # TODO: 讀取參數設置  {% set ns_test_steps = namespace(collector="", arr=[]) %}  {% for char in params.TEST_STEPS|default("x_test,y_test,rect_test,diag_test")|string %}    {% if char == "," or loop.last %}      {% if loop.last %}        {% set ns_test_steps.collector = ns_test_steps.collector ~ char %}      {% endif %}      {% set ns_test_steps.arr = ns_test_steps.arr + [ns_test_steps.collector|string] %}      {% set ns_test_steps.collector = "" %}    {% else %}      {% set ns_test_steps.collector = ns_test_steps.collector ~ char %}    {% endif %}  {% endfor %}  # SPEED_STEPS conversion  {% set ns_speed_steps = namespace(collector="", arr=[]) %}  {% for char in params.SPEED_STEPS|default("80.0")|string %}    {% if char == "," or loop.last %}      {% if loop.last %}        {% set ns_speed_steps.collector = ns_speed_steps.collector ~ char %}      {% endif %}      {% set ns_speed_steps.arr = ns_speed_steps.arr + [ns_speed_steps.collector|float] %}      {% set ns_speed_steps.collector = "" %}    {% else %}      {% set ns_speed_steps.collector = ns_speed_steps.collector ~ char %}    {% endif %}  {% endfor %}  # DISTANCE_STEPS conversion  {% set ns_distance_steps = namespace(collector="", arr=[]) %}  {% for char in params.DISTANCE_STEPS|default("40.0")|string %}    {% if char == "," or loop.last %}      {% if loop.last %}        {% set ns_distance_steps.collector = ns_distance_steps.collector ~ char %}      {% endif %}      {% set ns_distance_steps.arr = ns_distance_steps.arr + [ns_distance_steps.collector|float] %}      {% set ns_distance_steps.collector = "" %}    {% else %}      {% set ns_distance_steps.collector = ns_distance_steps.collector ~ char %}    {% endif %}  {% endfor %}  # ACCEL_STEPS conversion  {% set ns_accel_steps = namespace(collector="", arr=[]) %}  {% for char in params.ACCEL_STEPS|default(printer.toolhead.max_accel|string)|string %}    {% if char == "," or loop.last %}      {% if loop.last %}        {% set ns_accel_steps.collector = ns_accel_steps.collector ~ char %}      {% endif %}      {% set ns_accel_steps.arr = ns_accel_steps.arr + [ns_accel_steps.collector|int] %}      {% set ns_accel_steps.collector = "" %}    {% else %}      {% set ns_accel_steps.collector = ns_accel_steps.collector ~ char %}    {% endif %}  {% endfor %}# TODO: 讀取機器變量  # Variable  assignment  {% set center_x_position = printer.toolhead.axis_maximum.x / 2 %}  {% set center_y_position = printer.toolhead.axis_maximum.y / 2 %}  # Conversion steps variable assignment  {% set accel_steps = ns_accel_steps.arr %}  {% set test_steps = ns_test_steps.arr %}  {% set distance_steps = ns_distance_steps.arr %}  {% set speed_steps = ns_speed_steps.arr %}  SAVE_GCODE_STATE NAME=speed_testing_macro  {% set testRunCounter = namespace(value=0) %}  RESPOND PREFIX="Speed-Test - " MSG="使用以下參數進行測試:"  RESPOND PREFIX="- " MSG="distance_steps={distance_steps}"  RESPOND PREFIX="- " MSG="speed_steps={speed_steps}"  RESPOND PREFIX="- " MSG="accel_steps={accel_steps}"  RESPOND PREFIX="- " MSG="test_steps={test_steps}"  RESPOND PREFIX="" MSG="--------------------"# TODO: 歸位,虛假和實際  # Homing  {% if printer.toolhead.homed_axes != "xyz" %}    # G28    SET_KINEMATIC_POSITION X=0 Y=0 Z=0  {% endif %}  G90  G1 X{center_x_position} Y{center_y_position} Z25 F4000  {% for distance_step in distance_steps %}    {% for speed_step in speed_steps %}      {% set speed_feedrate_step = speed_step * 60 %}      {% for accel_step in accel_steps %}        {% set testRunCounter.value = testRunCounter.value + 1 %}        M204 S{accel_step}        RESPOND PREFIX="Speed-Test - " MSG="Test-Run {testRunCounter.value} => distance: {distance_step} speed: {speed_step} acceleration: {accel_step}"                {% for test_step in test_steps %}          _{test_step|upper} FEEDRATE={speed_feedrate_step} DISTANCE={distance_step}        {% endfor %}      {% endfor %}    {% endfor %}  {% endfor %}  RESTORE_GCODE_STATE NAME=speed_testing_macro[gcode_macro _X_TEST]description: Moves the head left/rightgcode:  {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}  {% set distance = params.DISTANCE|default(100)|float %}  G91  G1 x{distance} F{speed_feedrate}  G1 x-{distance * 2} F{speed_feedrate}  G1 x{distance} F{speed_feedrate}  G90  M118 Done_X_TEST[gcode_macro _Y_TEST]description: Moves the head forward/backwardgcode:  {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}  {% set distance = params.DISTANCE|default(100)|float %}  G91  G1 y{distance} F{speed_feedrate}  G1 y-{distance * 2} F{speed_feedrate}  G1 y{distance} F{speed_feedrate}  G90  M118 Done_Y_TEST[gcode_macro _RECT_TEST]description: Moves the head in a rectanglegcode:  {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}  {% set distance = params.DISTANCE|default(100)|float %}  G91  G1 x-{distance} F{speed_feedrate}  G1 y-{distance} F{speed_feedrate}  G1 x{distance * 2} F{speed_feedrate}  G1 y{distance * 2} F{speed_feedrate}  G1 x-{distance * 2} F{speed_feedrate}  G1 y-{distance} F{speed_feedrate}  G1 x{distance} F{speed_feedrate}  G90  M118 Done_RECT_TEST[gcode_macro _DIAG_TEST]description: Moves the head diagonally. First spinning the stepper_x, then the stepper_y. (CoreXY)gcode:  {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}  {% set distance = params.DISTANCE|default(100)|float %}  G91  G1 x{distance} y{distance} F{speed_feedrate}  G1 x-{distance * 2} y-{distance * 2} F{speed_feedrate}  G1 x{distance} y{distance} F{speed_feedrate}  G1 x{distance} y-{distance} F{speed_feedrate}  G1 x-{distance * 2} y{distance * 2} F{speed_feedrate}  G1 x{distance} y-{distance} F{speed_feedrate}  G90  M118 Done_DIAG_TEST[gcode_macro _CIRCLE_TEST]description: Moves the head in a circle twice.gcode:  {% set speed_feedrate = params.FEEDRATE|default(4800)|float %}  {% set distance = params.DISTANCE|default(100)|float %}  {% if printer.configfile.config.gcode_arcs is not defined %}    {action_raise_error("The circle test requires the [gcode_arcs] section in your printer.cfg")}  {% endif %}  {% for count in range(2) %}    G2 I{distance} J{distance} F{speed_feedrate}  {% endfor %}  M118 Done_CIRCLE_TEST
          • 將物理歸位 G28 改為指定坐標 SET_KINEMATIC_POSITION X=0 Y=0 Z=0
          • 每項測試結束后增加返回信息 Done_XXXX_TEST 避免干等
          • 調用方法:feed_rate_test TEST_STEPS="x_test,y_test,rect_test,diag_test" SPEED_STEPS="200, 400" DISTANCE_STEPS="400" ACCEL_STEPS="10000, 50000"
          • 上述分別代表測試項目,測試速度,測試距離以及加速度。會自動排列組合依次測試,注意雙引號,也可以從網頁上宏界面輸入參數。

          4.2.4 裁判員登場 | graphstats.py

          我們使用 Klipper 自帶的系統負載生成工具。

          # 清空日志systemctl stop klipperecho > ~/printer_data/logs/klippy.logsystemctl start klipper# ——>開始比賽<——# 生成負載圖python3 ~/klipper/scripts/graphstats.py ~/printer_data/logs/klippy.log -o ~/loadgraph.png
          • fluiid 好像支持歸檔舊日志,我這里直接清空了,反正用不到
          • 也可以拷貝一份日志進行分析

          大概結果如下:

          這個圖后面再做分析,寫累了。

          4.2.5 合適的加速度和速度選擇

          參考 Prusa 計算器,太高的速度和加速度對于一般用戶來說意義也不大,瓶頸在擠出頭。

          5、建議與問題

          1. 驅動插槽顏色 | 建議恢復顏色區分兩排,避免反插,當然現在使用fys的驅動,不存在這一問題
          2. 核心板 | 有沒有設計其他底板的計劃,還是僅用來升級更換 SKing 的核心
          3. BIG5160絲印 | 與主板、2209驅動絲印相反,建議標注安裝方向或者統一。且絲印一面1.1一面1.0
          4. RGB接口 | 建議增加可選電壓,方便使用大功率 12v 彩色燈板
          5. TMC驅動自動識別 | 建議加上跳帽選擇而不僅僅是焊盤方式,方便使用舊版驅動

          6、小結

          Fysetc Spider King 這塊主板,讀下來的感覺就是一個字:穩。工業標準的理念貫穿其中,就是太貴了,普通用戶買不起,聽說以后隨著物料成本的降低也會降價,先做期待。

          標簽:spider king-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          巴黎野玫瑰劇情?劇情:《巴黎野玫瑰》是一部由高蒙電影公司出品的劇情片,由讓-雅克貝內克斯執導,讓于格安格雷德、比阿特麗斯卡瓦羅和文森特林頓聯合主演。影片講述了法國巴黎的一對年輕夫婦,過著坎坷的愛情和悲慘的生活。這部電影于1986年4月9日在法國上映。巴黎野玫瑰劇情?巴黎的一對年輕夫婦過著坎坷的愛情故事和悲慘的人生故事。巴黎野玫瑰好看嗎?雖然畫面不適合兒童,但是有很多的場景。但確實是部好電影。關于極...

          “老兵不死,只是凋零”這句話什么意思,或者說怎么理解?“老兵不死,只會凋零?!庇⑿劢K將老去,但人們會永遠記住英雄們在他們那個時代的偉大事跡,但當他們老去的時候,人們會逐漸忘記他們“老兵永遠不會死,他們只會悄然消失”是麥克阿瑟的名言,也是全世界老兵的共同心聲。無論是哪個國家的老兵,聽到這句極具感染力的話,都會有無比的感觸“老兵不死,只是漸凋零?!钡木唧w意思是什么?老戰士永遠不會死,他們只是逐漸消失。...

          買一個電腦電源大約多少錢?買個電腦電源,價格基本在200~600左右。200元基本是劣質電源。輸出功率可以達到200瓦左右。這種動力基本支持,現在主流硬件有點勉強。不建議購買。400元左右的電源支持,目前市面主流硬件還可以。如果你買的是基本用的電腦,做文字處理,上網。你可以開始了。但是如果用電腦做大量的數據運算,玩大型游戲。那么就需要買一個600元左右的大功率電源。電腦主機換一個電源多少錢?電腦的...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>