Lợi ích của việc sử dụng một thiết bị điện tử dựa trên ARM là gì?


22

Hầu hết các thiết bị điện tử sử dụng bộ điều khiển vi mô như một bộ vi xử lý, nhưng tôi thấy các chip ARM trong các thiết bị điện tử mới. Chip ARM được cho là mạnh hơn, nhưng trong lĩnh vực nào liên quan đến in 3D, điều này có thể giúp gì? Các tính năng mà AVR phải vật lộn với và nơi ARM có thể tốt hơn?

Chuyển động tốc độ cao? Máy in Delta? Hiển thị đồ họa?

Và có thực sự giới hạn ở đó không?

Câu trả lời:


23

Bộ điều khiển máy in 3D phải làm rất nhiều thứ rất, rất nhanh. Thực hiện các tính toán động học và động lực học trong khi gửi hàng ngàn xung bước được đồng bộ hóa chính xác mỗi giây thực sự rất khó khăn . Dòng vi điều khiển 8 bit AVR được sử dụng trong các bộ điều khiển máy in 3D cũ hơn về cơ bản là bộ xử lý Mr Coffee cuối những năm 1990. Chúng hoàn toàn, tối đa hóa tối đa thời gian của bộ xử lý, chỉ thực hiện các chức năng in cơ bản trong các máy in đơn giản (ví dụ Cartesian) và thêm tải tính toán bổ sung sẽ làm chúng chậm lại và gây chậm, nói lắp, tạm dừng, v.v.

"Nhưng máy in 8 bit của tôi hoạt động tốt," bạn nói. Không, nó không. Hiệu suất in của bạn bị giới hạn bởi nó, cho dù bạn có nhận ra hay không. Máy cắt giờ tự động che giấu rất nhiều thiếu sót về hiệu năng của phần sụn từ bạn. Ví dụ, thực tiễn tiêu chuẩn về việc làm chậm đáng kể tốc độ in trên chu vi phần lớn là kết quả của bộ xử lý 8 bit có tài nguyên không đủ cho hai điều:

  1. Thực hiện tính toán gia tốc hướng tâm cho các đường cong trên nhiều phân đoạn mã
  2. Theo kịp với truyền / xử lý gcode và lập kế hoạch chuyển động cho gcode với nhiều phân đoạn rất nhỏ, chẳng hạn như trong các mô hình hữu cơ hoặc các cung tròn trơn tru

Khi được trình bày với một loạt các phân đoạn rất nhỏ trong một đường cong mượt mà hoặc đường cong phức tạp, phần sụn 8 bit có thể sẽ bị nghẹt với tốc độ xử lý lệnh được yêu cầu và đưa ra tình trạng nói lắp vào bản in. Những lần tạm dừng cực kỳ ngắn này cho phép áp suất dư trong máy đùn đẩy ra một số nhựa thừa, tạo ra một chút zit trên bản in. Vì vậy, hầu hết các máy thái sẽ tự động xác định các đường cong và gcode đầu ra với độ phân giải giảm để giảm tải cho phần sụn. Vấn đề được giải quyết, phải không?

Nhưng có một vấn đề khác - thuật toán điều khiển chuyển động GRBL nằm dưới tất cả các bộ điều khiển máy in 3D nguồn mở chính được thiết kế với rất nhiều phím tắt và hack để cho phép bộ xử lý 8 bit thực hiện đủ nhanh. Ví dụ, thuật toán cơ bản chỉ xem xét sự thay đổi tốc độ hoặc vận tốc ở góc giữa hai phân đoạn và sử dụng thuật toán đó để quyết định khi nào nên giảm tốc / tăng tốc theo hướng chuyển động. Nó không tính toán hoặc xem xét gia tốc hướng tâm / hướng tâm nào. Đây là một cách hack thực sự hiệu quả khi in các mô hình hình hộp, độ phân giải thấp, nhưng nó thất bại thảm hại trên các đường cong mượt mà với nhiều phân đoạn nhỏ. Phần sụn không phát hiện bất kỳ thay đổi vận tốc đáng kể nào ở góc của bất kỳ hai đoạn gần tuyến tính nào trong đường cong mặt, và do đó không làm chậm đường cong.

In chu vi phức tạp không tương thích có nghĩa là tốc độ tiến dao được chỉ huy phải rất thấp để có chất lượng tốt. Hầu hết các máy in được giới hạn ở khoảng 40mm / giây hoặc ít hơn trên các vành đai phức tạp, mặc dù có thể chạy có lẽ 80-120mm / giây khi nạp vào độ phức tạp thấp trước khi đạt các giới hạn tốc độ khác.

Giữa các giới hạn tốc độ xử lý lệnh và các thiếu sót của trình hoạch định chuyển động được yêu cầu bởi các bộ xử lý công suất thấp, tốc độ in phải thấp hơn nhiều trong thực tế so với yêu cầu nghiêm ngặt của vật lý và phần cứng máy in. Tất cả điều này đến từ bộ xử lý 8 bit. Các cách giải quyết và thực tiễn tốt nhất để giải quyết vấn đề này đã bị cuốn sâu vào các công cụ và hệ sinh thái mà rất ít người nhận ra thậm chí còn có vấn đề. Nhưng đó là một giới hạn thực sự có thể vượt qua: bộ xử lý tốc độ cao chạy bộ lập kế hoạch chuyển động nghiêm ngặt hơn có thể tạo ra tốc độ in trung bình cao hơn với chất lượng in tốt hơn .

Điều đó nói rằng, các phần mềm dựa trên ARM chỉ đang dần chuyển sang các nhà hoạch định chuyển động tiên tiến hơn. Đây là một lĩnh vực phát triển lớn hiện đang thực sự thúc đẩy sự thay đổi sắp tới từ các ARM cấp thấp như Cortex M3 sang các bộ xử lý thậm chí còn nhanh hơn. Thực sự không khó để tối đa hóa Arduino 84 MHz bằng cách chồng chất lên một loạt các tính năng phần sụn.

Việc sử dụng bộ xử lý 8 bit cũng làm cho máy in trở nên LOUDER. Người tiêu dùng lớn nhất về thời gian xử lý trong một máy in 8 bit thông thường là ngắt bước tạo ra các xung bước để làm cho động cơ chuyển động. Nó khá điển hình cho> 60% tất cả các chu kỳ xung nhịp trên một Atmega AVR để đi đến các xung bước bắn. Bởi vì điều này xảy ra dưới dạng gián đoạn, các tác vụ xử lý khác mà máy in phải thực hiện - như tính toán gia tốc và điều khiển bộ gia nhiệt - bị nén vào khoảng trống ngắn giữa các sự kiện ngắt bước.

Nếu không có thiết kế phần sụn cẩn thận, các xung bước sẽ hoàn toàn "lấn át" các chức năng khác như cập nhật màn hình LCD và tính toán gia tốc. Để cho phép tốc độ chuyển động cao hơn mà không cần sử dụng tất cả tài nguyên bộ xử lý, các phần mềm 8 bit có chế độ gọi là "nhân đôi bước", tạo ra hai (hoặc bốn hoặc tám) bước xung trên mỗi bước gián đoạn để một nửa (hoặc một phần tư hoặc một phần tám ) vì nhiều ngắt bước có thể được sử dụng để tạo ra cùng tốc độ chuyển động. Cách thực hành này làm tắc nghẽn bộ xử lý, nhưng nó gây ra chuyển động động cơ mạnh hơn và to hơn vì các xung bước được bắn theo cụm thay vì tần số không đổi. Trong thực tế, mức độ vi bước của động cơ được giảm chức năng xuống chế độ thô hơn khi ngắt bước kích hoạt các bước kép hoặc bốn bước. Vì vậy, các động cơ trở nên to hơn, ít chính xác hơn,

Một tác dụng phụ thú vị là nếu bạn chuyển đổi máy in dựa trên Marlin từ bước micro 1/16 sang bước micro 1/32 và giữ nguyên tốc độ in, phần sụn sẽ đơn giản bắt đầu tăng gấp đôi, giảm mức bước vi hiệu quả của bạn xuống ngay 1/16.

Các phần mềm dựa trên ARM cũng sử dụng nhân đôi bước, nhưng tốc độ bước cho phép thường cao hơn ~ 8 lần trước khi sử dụng bước kép / quad. Điều đó có nghĩa là tốc độ cao hơn và / hoặc chuyển động mượt mà hơn.

Một vấn đề khác với các máy 8 bit là thiếu điểm nổi phần cứng và cần dành nhiều chu kỳ xung nhịp cho các tính toán có độ chính xác cao hoặc xử lý số lượng rất lớn. Động học Delta, chức năng tự động cân bằng, tính toán di chuyển với số bước cực cao cho máy in lớn và các chức năng nâng cao khác đều mất rất nhiều chu kỳ xung nhịp trên bộ xử lý 8 bit. Thiết kế phần sụn kém hoặc bất cẩn thêm một tính năng yêu cầu thêm một số căn bậc hai và chức năng trig hoàn toàn có thể làm hỏng bộ xử lý. Kiểu creep và mã hóa tính năng này đã ảnh hưởng nghiêm trọng đến hiệu suất của Marlin theo thời gian khi mọi người hỏi ngày càng nhiều hơn về bộ máy AVR cũ.

So sánh, bộ xử lý 32 bit không chỉ có xung nhịp nhanh hơn và chu kỳ xung nhịp nhiều hơn, nó cũng có thể thực hiện phép toán phức tạp hơn nhiều trong ít chu kỳ xung nhịp hơn, bởi vì nó có chức năng phần cứng chuyên dụng, đảm nhiệm nhiều bước 8 bit bộ xử lý phải làm trong phần mềm.

Bộ xử lý 8 bit có hoạt động không? Chắc chắn, họ làm việc tốt đáng ngạc nhiên cho những gì họ là và những gì chúng ta yêu cầu họ. Nhưng họ chắc chắn giới hạn hiệu suất và tính năng của máy in 3D hiện đại. Ngay cả thế hệ bộ xử lý 32 bit hiện nay cũng đã được tối đa hóa bằng máy in tốc độ cao và các tính năng nặng về toán học. Bộ xử lý 8 bit đã chậm hơn hai thế hệ so với bộ điều khiển máy in 3D "hiện đại".


Nếu toán học và tính toán thời gian thực là một vấn đề, vậy thì tại sao không có nhiều nỗ lực trong logic lập trình đầy đủ như FPGA được sử dụng để điều khiển bước điều khiển và tương tự?
Tái lập lại Monica - -

Không phải là đồ họa đắt tiền?
Leo Ervin

Thêm chi phí và sự phức tạp. Tại sao phối hợp hai chip khi bạn có thể sử dụng một chip nhanh hơn? Thực tế có một số dự án dựa trên nền tảng đồ họa ngoài kia, nhưng không có dự án nào đạt được khối lượng quan trọng cho sự hấp thụ của người dùng.
Ryan Carlyle

1
@RyanCarlyle Quan niệm rằng hai chip cần được phối hợp là không chính xác. Một FPGA có thể xử lý nối tiếp, phân tích cú pháp, lập kế hoạch và bước trong một gói (có thể có MCU lõi mềm). Chi phí là một yếu tố mặc dù.
Phục hồi Monica - -


11

Nhìn chung, AVR thực tế ít mạnh hơn nhiều lõi ARM được sử dụng hiện nay. Hầu hết các máy in có AVR không có bộ đồng xử lý dấu phẩy động, mặc dù rất nhiều bước điều khiển chuyển động và chuyển động có thể được thực hiện trong toán học chỉ có số nguyên (ngoại trừ G2 / G3). Marlin có thể gián đoạn để xử lý bước lên tới 10000 lần mỗi giây trên AVR, chuyển thành 40000 bước mỗi giây. Điều này không đặc biệt hữu ích nếu không có các bộ phận cơ học có thể di chuyển ở những tốc độ đó mà vẫn in được kết quả có ý nghĩa (hoặc chính xác hơn nhiều và có số bước trên mỗi mm cao hơn nhiều ở tốc độ tương tự).

Hiển thị đồ họa không phải là một thứ đặc biệt đánh thuế ở tốc độ thấp - tốc độ cao hoặc giao diện lạ có thể cần thêm một chút năng lượng hoặc ngắt chuyên dụng.

Thời điểm mà ARM có thể quan trọng là đối với các thiết lập nặng hơn về toán học và đặc biệt là dấu phẩy động như delta, trong đó mọi di chuyển đều yêu cầu nhiều thao tác dấu phẩy động và trig, và điều hướng trong các menu trên AVR 16 MHz (atmega2560) được mô tả là "chậm một cách khó khăn", nhưng Marlin đã thành công trong việc in kết quả có ý nghĩa trên máy in kiểu delta.

Rõ ràng, lõi ARM nhanh hơn khi thực hiện điểm nổi mềm hoặc hỗ trợ hardfloat (phần cứng hoạt động rất hiệu quả) sẽ thấy lợi ích cho các quy trình như vậy.


3

Nói chung, các bộ vi điều khiển như AVR là lõi đơn / luồng đơn - vì vậy trong khi làm việc trong một vòng lặp để chạy bộ điều khiển động cơ, bạn có thể thiếu tài nguyên để làm bất cứ điều gì khác, như điều hướng menu một cách hiệu quả.

Nhiều bộ xử lý ARM hiện nay một ngày là đa lõi / đa luồng, có nghĩa là bạn có thể có một luồng xử lý bản in của mình, trong khi một bộ xử lý khác là miễn phí cho bất kỳ điều gì khác mà người dùng có thể muốn làm.

tức là bất kỳ bộ xử lý AVR nào chạy máy chủ web cục bộ để cho phép truy cập từ xa vào máy in sẽ rất cơ bản, trong đó ARM thường cho phép linh hoạt hơn nhiều.


Lưu ý rằng nếu phần sụn không sử dụng mã đa luồng tốt, thì chi phí từ giao tiếp giữa các luồng và liên tiến trình có thể rất cao.
Tái lập lại Monica - -

Đừng nhầm lẫn bộ xử lý ứng dụng hiệu suất cao đa lõi với bộ xử lý lớp M được tối ưu hóa theo thời gian thực. Vâng, có Cortex-M lõi kép với hiệu năng ấn tượng, nhưng chúng không đa luồng.
Sean Houlihane

2

Bộ xử lý AVR có hiệu suất đủ để in tiêu chuẩn. Nhưng nó thiếu hiệu suất cho

  • máy in delta (xem câu trả lời hexafraction )
  • menu hiển thị (quá chậm trên máy in RepRap của tôi sử dụng ATmega2560)
  • giao diện web (ethernet)

So sánh các thông số kỹ thuật nên tự giải thích. CPU ARM đặc biệt này nhanh hơn ít nhất 10 lần so với ATmega2560:

CPU ARM-Cortex M3 LPC1769 (được sử dụng trong Smoothieboard )

  • CPU: Cortex-M3 , 1 lõi
  • kiến trúc: ARMv7-M (32-bit)
  • tần số: 96-120 Mhz
  • ký ức
    • Flash: 512 kB
    • RAM: 64 kB

Vi điều khiển ATmega2560

  • kiến trúc: 8 bit
  • tần số: 16 MHz
  • ký ức
    • Bộ nhớ flash 256 KB trong đó 8 KB được sử dụng bởi bộ tải khởi động
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

Bộ xử lý AVR là 8 bit - do đó chúng chỉ có thể tìm nạp dữ liệu từ bộ nhớ 8 bit mỗi lần - trong khi ARM là 32 bit và có thể tìm nạp dữ liệu 32 bit mỗi lần. Độ phân giải vị trí yêu cầu tối thiểu 24 bit giá trị - điều này có nghĩa là AVR mất 3 lần tìm nạp dữ liệu cho vị trí - trong khi ARM mất 1 lần tìm nạp dữ liệu.

Tệ hơn nữa, các bộ xử lý AVR phân chia nội bộ xung nhịp cho 3, do đó, một AVR 40 MHz thường chạy ở mức 13,3 MHz, trong khi ARM là 1 chu kỳ cho mỗi giao dịch xe buýt và xử lý lệnh - bao gồm bội số 32 bit 32 bit trong 1 chu kỳ đồng hồ.

Bản đồ bộ nhớ trên bộ xử lý ARM rộng 32 bit hoặc 4 GB trong khi bộ xử lý 8 bit chỉ có bus địa chỉ 16 bit hoặc 64 KB - có nghĩa là chuyển đổi ngân hàng phát huy tác dụng trên bất kỳ chương trình nào trên 64 KB - điều này cần có hướng dẫn và thời gian để được thực hiện - trong khi với ARM thì đây không phải là vấn đề.

Các khía cạnh chi phí là tương tự như các AVR - nó chỉ yêu cầu phần sụn được thiết kế lại.

Đối với các GPU:

  • Chúng có giá bằng hoặc hơn bộ xử lý
  • Chúng nhanh, chuyên dụng, thiết bị và có thể được cấu hình cho nhiệm vụ chuyên biệt
  • Họ có các yếu tố chi phí bổ sung:
    • rất nhiều mũ tách rời là cần thiết vì tốc độ của các mạch trong FPGA.
    • Yêu cầu nguồn cung cấp bổ sung, máy bay mặt đất và kế hoạch điện - có nghĩa là (và yêu cầu) tối thiểu một bảng 4 lớp, hoặc có thể là 6 lớp, làm tăng thêm chi phí cho thiết bị điện tử

Kết quả của việc thêm một GPU vào một AVR sẽ tốn kém hơn rất nhiều so với việc đi đến một bộ xử lý ARM mạnh hơn.


1
Xin chào và chào mừng đến với SE.3DPrinting! Câu trả lời của bạn có thể có lợi rất nhiều từ cách viết hoa đúng, cải thiện bố cục và sử dụng đúng kích thước bộ nhớ. Hãy cập nhật câu trả lời.
0scar

Xin chào James và cảm ơn rất nhiều vì câu trả lời rất thú vị và bổ ích của bạn. Tuy nhiên, tôi đồng ý với 0scar ... viết hoa đúng, sử dụng nhất quán các đơn vị SI chính xác (ví dụ: MHz, GB, KB, v.v.) sẽ cải thiện đáng kể khả năng đọc câu trả lời của bạn, cũng như giảm việc sử dụng nhiều dấu gạch ngang ( - -- - - -) khá mất tập trung, tbh.
Greenonline
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.