題:
使用基於ARM的電子產品有什麼好處?
Lars Pötter
2016-02-10 02:56:39 UTC
view on stackexchange narkive permalink

大多數電子設備都使用微控制器,如AVR,但我看到新電子設備中的ARM芯片。據說ARM芯片功能更強大,但是在3D打印相關的哪些領域可以提供幫助呢? AVR所具有的功能有哪些?ARM可以做得更好嗎?

高速運動?台達打印機?圖形顯示嗎?

AVR確實是其中的限制嗎?

五 答案:
Ryan Carlyle
2016-02-11 05:18:08 UTC
view on stackexchange narkive permalink

3D打印機控制器必須非常非常快地完成很多工作。在每秒發送成千上萬個精確同步的步進脈衝的同時執行運動學和動力學計算非常困難。在較舊的3D打印機控制器中使用的8bit AVR微控制器系列基本上是1990年代末Coffee處理器。僅在簡單的(例如笛卡爾)打印機中執行基本打印功能,它們就完全,完全地耗費了處理器時間,並且添加額外的計算負荷會使它們陷入癱瘓,並導致速度降低,卡頓,暫停等等。

“但是我的8位打印機工作正常,”您說。不,不是。無論您是否意識到,打印性能都受到它的限制。切片器現在可以自動向您隱藏許多固件的性能缺陷。例如,大大降低外圍打印速度的標準做法很大程度上是由於8位處理器的資源不足而導致兩件事: >

  • 了解gcode的傳輸/處理和運動計劃,以處理很多非常小的片段,例如在有機模型或平滑弧中
  • ol>

    當出現一系列非常小的片段時在平滑的弧線或複雜的曲線段中,8位固件可能會阻塞所需的命令處理速率,並給打印造成卡頓現象。這些令人難以置信的短暫停頓使擠出機中的殘餘壓力可以擠出一些多餘的塑料,從而在印刷品上產生一點點刺痛。因此,大多數切片器會自動抽取曲線並以降低的分辨率輸出gcode,以減輕固件的負擔。問題解決了吧?

    但是還有另一個問題-所有主要的開源3D打印機控制器的GRBL運動控制算法都設計有許多捷徑和技巧,可以使8位處理器執行得足夠快。例如,基本算法僅查看兩個線段之間拐角處的速度或速度變化,並使用其來決定何時沿運動方向減速/加速。它不計算或不考慮向心/徑向加速度。在打印方形的低分辨率模型時,這是一種非常有效的技巧,但在具有許多小段的平滑曲線上卻失敗了。固件無法在多面曲線內的任何兩個近似線性段的拐角處檢測到任何明顯的速度變化,因此不會降低曲線的速度。因此,複雜的幾何圖形可以以恆定的速度有效地打印,而不會加速。儘管在達到其他速度限制之前,可以在低複雜度填充上運行80-120mm / s,但大多數打印機在復雜邊界上的限制為大約40mm / s或更小。

    在命令處理速率限制之間由於低功耗處理器需要運動計劃器的缺點,因此打印速度實際上必須比物理和打印機硬件嚴格要求的速度低得多。這些全部來自8位處理器。解決此問題的變通方法和最佳實踐已深入到工具鍊和生態系統中,幾乎沒有人意識到甚至存在問題。但這是可以克服的真正限制:運行更嚴格的運動計劃器的高速處理器可以產生更高的平均打印速度,並且打印質量更好。

    也就是說,基於ARM的固件僅在逐步向更高級的運動計劃器發展。目前,這是一個很大的發展領域,實際上正在推動即將從諸如Cortex M3之類的低端ARM轉向更快的處理器。通過堆積一系列固件功能來最大化一個84 MHz的Arduino Due,實際上並不難。

    使用8位處理器也使打印機更輕巧。在典型的8位打印機中,處理器時間的最大消耗者是步進中斷,該中斷會觸發步進脈衝以使電動機運動。在Atmega AVR上,超過60%的所有時鐘週期都會觸發脈衝。因為這是作為中斷發生的,所以打印機必須執行的其他處理任務(例如加速度計算和加熱器控制)被擠入步進中斷事件之間的短暫間隔中。

    如果不進行仔細的固件設計,則步進脈衝將完全“擠出”其他功能,例如LCD顯示更新和加速度計算。為了在不使用所有處理器資源的情況下實現更高的運動速率,8位固件具有一種稱為“步進倍增”的模式,該模式會在每個步進中斷中觸發兩個(或四個或八個)步進脈衝,從而使一半(或四分之一或八分之一) )可以使用許多步進中斷來產生相同的運動速度。這種做法可以消除處理器的瓶頸,但會導致電機運動更加粗糙和響亮,因為步進脈衝以突發方式而非恆定頻率發射。實際上,當步進中斷觸發雙步或四步觸發時,電動機的微步級功能會下降到較粗模式。因此,電機會變得更大聲,精度更低,並且在極端情況下可能會出現共振問題。

    一個有趣的副作用是,如果將基於Marlin的打印機從1/16微步進切換到1/32微步進,並保持相同的打印速度,則固件將簡單地開始步進加倍,從而將有效的微步進級別降低返回到1/16。

    基於ARM的固件也使用步進倍增,但是在使用雙倍/四倍步進之前,允許的步進速率通常高約8倍。這可能意味著更高的速度和/或更平滑的運動。

    8位AVR的另一個問題是缺少硬件浮點,並且需要花費許多時鐘週期進行高精度計算或處理非常大的數字。三角運動學,自動調平功能,大型打印機以極高的步數來計算移動量以及其他高級功能在8位處理器上都需要大量的時鐘週期。固件設計不佳或不小心添加了需要額外的平方根和触發功能的功能,可能會使處理器完全癱瘓。隨著人們對舊AVR的需求越來越多,隨著時間的流逝,這種功能變遷和代碼膨脹嚴重影響了Marlin的性能。

    相比之下,32位處理器不僅具有更快的時鐘和更多的時鐘週期,而且還能夠在更少的時鐘週期內完成更複雜的數學運算,因為它具有專用的硬件功能8位處理器必須在軟件中執行的許多步驟中。

    8位處理器可以工作嗎?當然,它們對於它們本身以及我們對它們的要求令人驚訝地工作良好。但是毫無疑問,它們限制了現代3D打印機的性能和功能。即使是當今的當今32位處理器,高速打印機和具有大量數學運算功能的設備也已被最大限度地利用。 8bit處理器已經比“現代” 3D打印機控制器落後了兩代。

    如果實時數學和計算是一個問題,那麼為什麼在諸如FPGA之類的完全可編程邏輯中沒有太多的努力來驅動步進控制等?
    FPGA不貴嗎?
    額外的成本和復雜性。當您可以使用一個更快的芯片時,為什麼還要協調兩個芯片?實際上有許多基於FPGA的項目,但是沒有一個項目對用戶的使用產生重大影響。
    @RyanCarlyle需要協調兩個芯片的概念是不正確的。 FPGA可以處理一個包中的串行輸入,解析,計劃和單步執行(可能使用軟核MCU)。成本是一個因素。
    我迄今為止看到的所有使用FPGA的嘗試都使用了兩個芯片,但是感謝您指出這一點。
    HTTP://Mobile geek是.的/我怕-content/uploads/2012/11/citizen-Kane-clapping-gif.gif
    nanofarad
    2016-02-10 06:34:47 UTC
    view on stackexchange narkive permalink

    通常,AVR實際上沒有今天使用的許多ARM內核強大。大多數帶有AVR的打印機都沒有浮點協處理器,儘管很多步和運動控制都可以在僅整數運算中完成(G2 / G3除外)。 Marlin可以在AVR上中斷每秒最多10000次的步處理,相當於每秒40000步。如果沒有可以以這些速度運動的機械組件仍然可以打印出有意義的結果(或者更精確,並且在類似的速度下具有更高的每毫米步數),則這不是特別有用。

    速度下圖形顯示並不是一件特別費力的事情-高速或怪異的界面可能需要更多的電源或專用的中斷。

    對於更多的數學運算特別是浮點運算繁重的設置(例如增量),ARM可能很重要,其中每步動作都需要許多浮點運算和触發操作,並描述了在16MHz AVR(atmega2560)上的菜單中導航例如“非常慢”,但Marlin確實在增量式打印機上成功打印出有意義的結果。

    很顯然,ARM內核在執行軟浮點運算時速度更快,或者支持硬浮點運算。 (非常有效地執行浮點運算的硬件)將對此類過程有所幫助。

    Matt Clark
    2016-02-10 10:49:33 UTC
    view on stackexchange narkive permalink

    通常,諸如AVR之類的微控制器是單核/單線程的-因此,在運行while循環以運行電動機控制器時,您可能缺少執行其他任務的資源,例如有效地導航菜單。

    現在許多ARM處理器現在都是多核/多線程的,這意味著您可以讓一個線程處理您的打印,而另一個則免費供用戶執行任何其他操作。

    ie任何運行本地Web服務器以允許遠程訪問打印機的AVR處理器都是非常痛苦的基礎,而ARM通常會提供更大的靈活性。

    請注意,如果固件未使用好的多線程代碼,則線程間和進程間通信的開銷可能會非常高。
    不要將多核高性能應用處理器與實時優化的M級處理器混淆。是的,有雙核Cortex-M具有令人印象深刻的性能,但它們不是多線程的。
    amra
    2016-02-11 04:05:50 UTC
    view on stackexchange narkive permalink

    AVR處理器對於標準打印具有足夠的性能。但是對於

    • delta打印機(請參閱 hexafraction答案
    • 顯示菜單(在使用ATmega2560的RepRap打印機上,它的運行速度非常慢),它的性能不足
    • Web界面(以太網)

    技術規格的比較應該可以自我解釋。與ATmega2560相比,該特定的ARM CPU至少快10倍:

    CPU ARM-Cortex M3 LPC1769(用於 Smoothieboard

    • CPU: Cortex-M3,1核
    • 體系結構:ARMv7-M(32位)
    • 頻率:96-120 Mhz
    • 內存
      • 閃存:512 kB
      • RAM:64 kB

    微控制器 ATmega2560

    • 架構:8位
    • 頻率:16 MHz
    • 內存
      • 閃存256引導加載程序使用的KB為8 KB
      • SRAM:8 KB
      • EEPROM:4 KB
    JamesP166
    2018-09-26 02:13:45 UTC
    view on stackexchange narkive permalink

    AVR處理器是8位的-因此它們一次只能從存儲器中獲取8位數據-而ARM是32位並且可以一次獲取32位數據。位置解析至少需要24位值-這意味著AVR需要對該位置進行3次數據獲取-而ARM需要進行1次數據獲取。

    更糟糕的是,AVR處理器內部將時鐘除以3,因此一個40 MHz的AVR通常以13.3 MHz運行,而ARM每個總線事務和指令處理為1個時鐘週期-這包括在1個時鐘週期內32位乘32位的倍數。

    ARM處理器為32位寬或4 GB,而8位處理器僅具有16位或64 KB的地址總線-這意味著庫切換在64 KB以上的任何程序中都起作用-這需要指令和時間來完成-而對於ARM,這不是問題。

    成本方面與AVR差不多,只是需要重新設計固件。

    與FPGA一樣:

    • 它們的成本相同或更高比處理器
    • 它們更快,更專業的設備並且可以針對特殊任務進行配置
    • 它們具有其他成本因素:
      • 需要更多的去耦電容,因為FPGA中電路的速度。
      • 需要額外的電源,地平面和電源計劃-這往往意味著(並要求)最少4層板,或者可能是6層板,這增加了電子設備的成本

    將FPGA添加到AVR的結果將比使用功能更強大的ARM處理器花費更多。

    嗨,歡迎來到SE.3DPrinting!正確的大小寫,佈局改進和內存大小的正確使用可以使您的答案受益匪淺。請更新答案。
    嗨,詹姆斯,非常感謝您的有趣和有益的回答。但是,我同意0scar ...正確的大小寫,正確使用正確的SI單位(即MHz,GB,KB等)將大大提高答案的可讀性,同時減少使用多個破折號(`--`和`----`)相當分散注意力,tbh。


    該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
    Loading...