ARM 기반 전자 제품을 사용하면 어떤 이점이 있습니까?


22

대부분의 전자 제품은 AVR과 같은 마이크로 컨트롤러를 사용하지만 새로운 전자 제품에서 ARM 칩을보고 있습니다. ARM 칩은 더 강력하다고 말하지만 3D 프린팅과 관련된 영역에서 어떤 도움이 될 수 있습니까? AVR이 어려움을 겪는 기능과 ARM이 더 나은 위치는 무엇입니까?

고속 운동? 델타 프린터? 그래픽 디스플레이?

그리고 AVR이 실제로 한계가 있습니까?

답변:


23

3D 프린터 컨트롤러는 매우 많은 작업을 매우 빠르게 수행해야합니다. 초당 수천 개의 정확하게 동기화 된 스텝 펄스를 전송하면서 운동학 및 역학 계산을 수행하는 것은 실제로 매우 어렵습니다 . 구형 3D 프린터 컨트롤러에 사용되는 8 비트 AVR 마이크로 컨트롤러 라인은 기본적으로 1990 년대 후반 Mr Coffee 프로세서입니다. 단순한 (예 : 직교) 프린터에서 기본 인쇄 기능을 실행하기 만하면 프로세서 시간을 완전히 최대한 활용할 수 있으며 계산 부하를 추가하면 속도가 느려지고 속도가 느려지고 끊김, 일시 정지 등이 발생합니다.

"하지만 내 8 비트 프린터는 제대로 작동합니다." 아닙니다. 인식 여부에 관계없이 인쇄 성능이 제한됩니다. 슬라이서는 이제 많은 펌웨어 성능 단점을 자동으로 숨 깁니다. 예를 들어, 주변에서 인쇄 속도를 크게 늦추는 표준 관행은 8 비트 프로세서가 두 가지 자원이 부족한 결과입니다.

  1. 여러 gcode 세그먼트에서 곡선에 대한 구 심적 가속 계산 수행
  2. 유기적 모델 또는 부드러운 아크와 같이 매우 작은 세그먼트가 많은 gcode의 gcode 전송 / 처리 및 모션 계획 유지

매끄러운 원호 또는 복잡한 곡선으로 일련의 매우 작은 세그먼트가 제공 될 때 8 비트 펌웨어는 필요한 명령 처리 속도를 질식시키고 인쇄물에 끊김 현상을 일으킬 수 있습니다. 압출기의 잔류 압력으로 인해 플라스틱에 약간의 여분의 압력이 가해져 프린트에 약간의 충격이 가해집니다. 따라서 대부분의 슬라이서는 자동으로 커브를 데시 메이션하고 해상도가 낮은 gcode를 출력하여 펌웨어의 부하를 줄입니다. 문제가 해결 되었습니까?

그러나 또 다른 문제가 있습니다. 모든 주요 오픈 소스 3D 프린터 컨트롤러의 기본 GRBL 모션 제어 알고리즘은 8 비트 프로세서가 충분히 빠르게 실행될 수 있도록 많은 단축키와 해킹으로 설계되었습니다. 예를 들어, 기본 알고리즘은 두 세그먼트 사이의 모서리에서 속도 또는 속도 변화 만보고 동작 방향을 따라 감속 / 가속 할시기를 결정하는 데 사용합니다. 구심 / 방사선 가속도는 계산하거나 고려하지 않습니다. 이것은 박스형, 저해상도 모델을 인쇄 할 때 실제로 효과적인 해킹이지만, 작은 세그먼트가 많은 부드러운 곡선에서는 비참하게 실패합니다. 펌웨어는 패싯 커브 내에서 거의 선형 인 두 세그먼트의 모서리에서 감지 할 수있는 속도 변화를 감지하지 않으므로 커브 속도가 느려지지 않습니다.

복잡한 주변을 가속하지 않고 인쇄한다는 것은 좋은 품질을 얻으려면 명령 된 이송 속도가 매우 낮아야한다는 것을 의미합니다. 대부분의 프린터는 복잡한 속도에서 약 40mm / s 이하로 제한되지만, 다른 속도 제한에 도달하기 전에 복잡성이 낮은 충전재에서 80-120mm / s를 실행할 수 있습니다.

저전력 프로세서에 필요한 명령 처리 속도 제한과 모션 플래너의 단점 사이에서 실제적으로 인쇄 속도는 물리 및 프린터 하드웨어에 필요한 것보다 훨씬 낮아야합니다. 이 모든 것이 8 비트 프로세서에서 나옵니다. 이 문제를 해결하기위한 해결 방법과 모범 사례는 툴체인과 에코 시스템에 깊이 뿌리 내려있어 거의 문제가 없음을 인식하는 사람은 거의 없습니다. 그러나 극복 할 수있는 진정한 한계입니다.보다 엄격한 모션 플래너를 실행하는 고속 프로세서는 더 나은 인쇄 품질 로 높은 평균 인쇄 속도를 생성 할 수 있습니다.

그러나 ARM 기반 펌웨어는 고급 모션 플래너로 천천히 이동하고 있습니다. 이것은 현재 큰 개발 영역으로, 실제로 Cortex M3과 같은 저가형 ARM에서 더 빠른 프로세서로 전환 할 것입니다. 실제로 많은 펌웨어 기능을 사용하여 84MHz Arduino Due를 최대로 사용하기가 쉽지는 않습니다.

8 비트 프로세서를 사용하면 프린터가 LOUDER가됩니다. 일반적인 8 비트 프린터에서 프로세서 시간을 가장 많이 소비하는 것은 스텝 펄스를 발생시켜 모터를 움직이게하는 스테퍼 인터럽트입니다. Atmega AVR에서 모든 클록 사이클의 60 % 이상이 소성 단계 펄스로 이동하는 것이 일반적입니다. 이는 인터럽트로 발생하기 때문에 가속 계산 및 히터 제어와 같이 프린터가 수행해야하는 다른 처리 작업은 스테퍼 인터럽트 이벤트 사이의 짧은 공간으로 압축됩니다.

주의 깊게 펌웨어를 설계하지 않으면 스텝 펄스는 LCD 디스플레이 업데이트 및 가속 계산과 같은 다른 기능을 완전히 "집어냅니다". 모든 프로세서 리소스를 사용하지 않고 더 높은 모션 속도를 허용하기 위해 8 비트 펌웨어에는 "step doubling"이라는 모드가있어 스테퍼 인터럽트 당 2 개 (또는 4 개 또는 8 개)의 스텝 펄스를 발생시켜 절반 (또는 1/4 또는 8 시간) ) 동일한 스테퍼 인터럽트를 사용하여 동일한 모션 속도를 생성 할 수 있습니다. 이 방법은 프로세서의 병목 현상을 제거하지만 스텝 펄스가 일정한 주파수가 아닌 버스트로 발생하기 때문에 모터 동작이 거칠고 커집니다. 실제로, 스테퍼 인터럽트가 더블 또는 쿼드 스텝을 발생 시키면 모터의 마이크로 스테핑 레벨이 기능적으로 더 거친 모드로 떨어집니다. 모터가 더 크고 정확하지 않습니다.

흥미로운 부작용은 Marlin 기반 프린터를 1/16 마이크로 스테핑에서 1/32 마이크로 스테핑으로 전환하고 동일한 인쇄 속도를 유지하면 펌웨어는 단순히 단계 배가를 시작하여 효과적인 마이크로 스테핑 레벨을 아래로 낮추는 것입니다. 1/16.

ARM 기반 펌웨어도 스텝 배가를 사용하지만 더블 / 쿼드 스테핑을 사용하기 전에 허용 가능한 스텝 속도는 일반적으로 ~ 8 배 높습니다. 이는 더 빠른 속도 및 / 또는 부드러운 움직임을 의미 할 수 있습니다.

8 비트 AVR의 또 다른 문제는 하드웨어 부동 소수점이없고 고정밀 계산 또는 많은 수의 처리에 많은 클럭 사이클을 소비해야한다는 것입니다. 델타 운동학, 자동 레벨링 기능, 대형 프린터의 경우 매우 높은 스텝 수로 움직임 계산 및 기타 고급 기능은 모두 8 비트 프로세서에서 많은 클럭 사이클을 필요로합니다. 불완전한 펌웨어 설계 또는 부주의하게 몇 개의 제곱근과 삼각 함수가 필요한 기능을 추가하면 프로세서가 완전히 멈출 수 있습니다. 이러한 종류의 기능 크립 및 코드 팽창은 사람들이 점점 더 오래된 AVR을 요구함에 따라 시간이 지남에 따라 말린의 성능에 심각한 영향을 미쳤습니다.

이에 비해 32 비트 프로세서는 더 빠른 클럭과 더 많은 클럭 사이클을 가질뿐만 아니라 8 비트를 처리하는 전용 하드웨어 기능이 있기 때문에 더 적은 클럭 사이클로 훨씬 더 복잡한 연산을 수행 할 수 있습니다. 프로세서는 소프트웨어에서 수행해야합니다.

8 비트 프로세서가 작동합니까? 물론, 그들은 자신이 무엇인지, 우리가 요구하는 것에 놀랍게 잘 작동합니다. 그러나 현대 3D 프린터의 성능과 기능을 의심 할 여지없이 제한합니다. 오늘날의 현재 32 비트 프로세서조차도 고속 프린터와 수학이 많은 기능으로 이미 최대가되고 있습니다. 8 비트 프로세서는 이미 "현대"3D 프린터 컨트롤러에 해당하는 2 세대보다 늦습니다.


실시간 수학 및 계산이 문제가되는 경우 스테퍼 제어 등을 구동하는 데 사용되는 FPGA와 같은 완전히 프로그래밍 가능한 로직에 많은 노력이없는 이유는 무엇입니까?
복원 모니카-ζ--

FPGA는 비싸지 않습니까?
Leo Ervin

추가 비용과 복잡성. 하나의 더 빠른 칩을 사용할 수 있는데 왜 두 개의 칩을 조정합니까? 실제로 수많은 FPGA 기반 프로젝트가 있지만 사용자 흡수에 중요한 프로젝트는 없습니다.
Ryan Carlyle

1
@RyanCarlyle 두 개의 칩을 조정해야한다는 개념은 올바르지 않습니다. FPGA는 하나의 패키지에서 직렬 입력, 구문 분석, 계획 및 스테핑을 처리 할 수 ​​있습니다 (소프트 코어 MCU 가능). 하지만 비용은 중요한 요소입니다.
복원 모니카-ζ--


11

일반적으로 AVR은 오늘날 사용되는 많은 ARM 코어보다 성능이 떨어집니다. AVR이있는 대부분의 프린터에는 부동 소수점 보조 프로세서가 없지만 정수 단계 수학 (G2 / G3 제외)으로 많은 단계 및 이동 제어를 수행 할 수 있습니다. Marlin은 AVR에서 초당 최대 10000 번의 스텝 처리 를 위해 초당 40000 개의 스텝으로 번역을 중단 할 수 있습니다 . 이 속도로 움직여도 의미있는 결과를 인쇄 할 수있는 기계적 구성 요소가없는 경우에는 특히 유용하지 않습니다.

그래픽 디스플레이에서 할 수있는 특히 부담스러운 일이 아니다 조금 더 많은 전력 또는 전용 인터럽트를해야 할 수 있습니다 높은 속도 또는 이상한 인터페이스 - 속도.

ARM은 중요 할 수있는 시간은 모든 움직임은 16MHz 일 AVR의 메뉴에있는 많은 부동 소수점과 삼각 작업 및 탐색을 필요로 델타, 같은 더 수학 무거운 특히 부동 소수점 무거운 설정에 대한 있습니다 (ATMEGA2560) 설명 로 "천천히 고통스럽게"하지만, 말린 델타 스타일의 프린터에서 의미있는 결과를 인쇄에 성공 않습니다.

소프트 부동 소수점 수행 속도가 더 빠르거나 하드 부동 (부동 소수점 연산을 매우 효율적으로 수행하는 하드웨어)을 지원하는 ARM 코어는 이러한 프로세스에 이점을 제공합니다.


3

일반적으로 AVR과 같은 마이크로 컨트롤러는 단일 코어 / 단일 스레드이므로 모터 루프를 실행하기 위해 while 루프에서 작업하는 동안 메뉴를 효율적으로 탐색하는 등 다른 작업을 수행 할 리소스가 부족할 수 있습니다.

요즘 많은 ARM 프로세서는 멀티 코어 / 멀티 스레드이므로 하나의 스레드가 인쇄 작업을 수행 할 수 있고 다른 스레드는 사용자가 원하는 다른 작업을 수행 할 수 있습니다.

즉, 로컬 웹 서버를 실행하여 프린터에 대한 원격 액세스를 허용하는 모든 AVR 프로세서는 고통 스러울 정도로 기본적입니다.


펌웨어가 우수한 멀티 스레드 코드를 사용하지 않으면 스레드 간 및 프로세스 간 통신으로 인한 오버 헤드가 매우 높을 수 있습니다.
Monica Monica 복원-ζ--

멀티 코어 고성능 애플리케이션 프로세서를 실시간으로 최적화 된 M 클래스 프로세서와 혼동하지 마십시오. 예, 뛰어난 성능의 듀얼 코어 Cortex-M이 있지만 멀티 스레드는 아닙니다.
Sean Houlihane

2

AVR 프로세서는 표준 인쇄에 충분한 성능을 가지고 있습니다. 그러나 성능이 부족합니다.

  • 델타 프린터 ( 헥사 프랙 션 답변 참조 )
  • 디스플레이 메뉴 (ATmega2560을 사용하는 RepRap 프린터에서 매우 느림)
  • 웹 인터페이스 (이더넷)

기술 사양 비교는 자체 설명해야합니다. 이 특정 ARM CPU는 ATmega2560과 반대로 10 배 이상 빠릅니다.

CPU ARM-M3 LPC1769 텍스 (에 사용 Smoothieboard )

  • CPU : Cortex-M3 , 1 코어
  • 아키텍처 : ARMv7-M (32 비트)
  • 주파수 : 96-120 MHz
  • 기억
    • 플래시 : 512 kB
    • 램 : 64 kB

마이크로 컨트롤러 ATmega2560

  • 아키텍처 : 8 비트
  • 주파수 : 16 MHz
  • 기억
    • 플래시 메모리 256KB 중 8KB가 부트 로더에서 사용됨
    • SRAM : 8KB
    • EEPROM : 4KB

1

AVR 프로세서는 8 비트이므로 한 번에 8 비트 만 메모리에서 데이터를 가져올 수 있지만 ARM은 32 비트이며 한 번에 32 비트를 가져올 수 있습니다. 위치 분해능에는 최소 24 비트 값이 필요합니다. 즉, AVR은 위치에 대해 3 개의 데이터 페치를 가져 오는 반면 ARM은 1 개의 데이터 페치를 가져옵니다.

설상가상으로 AVR 프로세서는 내부적으로 클럭을 3으로 나눕니다. 따라서 40MHz AVR은 13.3MHz로 실행되고 ARM은 버스 트랜잭션 및 명령 처리 당 1 클럭주기입니다. 여기에는 1의 32 비트 x 32 비트 배수가 포함됩니다 클럭 사이클.

ARM 프로세서의 메모리 맵은 32 비트 또는 4GB 인 반면 8 비트 프로세서는 16 비트 또는 64KB의 주소 버스 만 있습니다. 즉, 64KB를 초과하는 모든 프로그램에서 뱅크 스위칭이 실행됩니다. 완료-ARM에서는 문제가되지 않습니다.

비용 측면은 AVR과 거의 동일하며 재 설계된 펌웨어 만 있으면됩니다.

FPGA의 경우 :

  • 프로세서와 같거나 더 많은 비용
  • 빠르고 전문적인 장치이며 특수한 작업을 위해 구성 할 수 있습니다.
  • 그들은 추가 비용 요소가 있습니다 :
    • FPGA의 회로 속도 때문에 더 많은 디커플링 캡이 필요합니다.
    • 추가 전원 공급 장치, 접지면 및 전원 계획이 필요합니다. 이는 최소 4 개의 층 보드 또는 6 개의 층을 의미하고 전자 장치의 비용을 증가시키는 경향이 있습니다.

FPGA를 AVR에 추가하면 더 강력한 ARM 프로세서를 사용하는 것보다 훨씬 많은 비용이 듭니다.


1
SE.3DPrinting에 오신 것을 환영합니다! 당신의 대답은 올바른 대문자, 레이아웃 개선 및 메모리 크기의 올바른 사용으로 많은 혜택을 얻을 수 있습니다. 답변을 업데이트하십시오.
0scar

James 님, 매우 흥미롭고 유익한 답변에 감사드립니다. 그러나 나는 0scar에 동의 할 것입니다 ... 올바른 대문자 사용, 올바른 SI 단위 (예 : MHz, GB, KB 등)의 일관된 사용은 여러 대시 사용을 줄이는 것처럼 대답의 가독성을 크게 향상시킵니다. ( - -- - - -) TBH 오히려 산만되어있다.
Greenonline
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.