Яка користь від використання електроніки на основі ARM?


22

Більшість електроніки використовують мікроконтролери, такі як AVR, але я бачу мікросхеми ARM у новій електроніці. Як кажуть, чіпи ARM є більш потужними, але в яких сферах, пов'язаних з 3D-друком, це могло б допомогти? З якими особливостями бореться AVR і де ARM може бути кращим?

Рух з високою швидкістю? Дельта принтери? Графічний дисплей?

І справді обмеження AVR є?

Відповіді:


23

Контролери 3D-принтерів повинні робити дуже багато матеріалів дуже, дуже швидко. Виконання кінематичних та динамічних обчислень при одночасному відправленні багатьох тисяч точно синхронізованих крокових імпульсів за секунду - це дуже, дуже важко . 8-бітна лінія мікроконтролерів AVR, використовувана в старих контролерах 3D-принтерів, це, в основному, епоха процесора Mr Coffee. Вони повністю, абсолютно вивірені на час процесора, просто виконуючи основні функції друку на простих (наприклад, декартових) принтерах, а додавання додаткового розрахункового навантаження призведе до їх уповільнення і спричинить уповільнення, заїкання, паузу тощо.

"Але мій 8-бітовий принтер працює добре", - кажете ви. Ні, це не так. Ваша продуктивність друку обмежена нею, усвідомлюєте ви це чи ні. Тепер слайсери автоматично приховують від вас багато недоліків у роботі прошивки. Наприклад, стандартна практика значного уповільнення швидкості друку по периметру значною мірою є результатом того, що 8-бітні процесори мають недостатні ресурси для двох речей:

  1. Виконання розрахунків відцентрових прискорень для кривих на декількох сегментах gcode
  2. Слідкуйте за передачею / обробкою та плануванням руху gcode для gcode з безліччю дуже малих сегментів, наприклад, в органічних моделях або гладких дугах

Якщо представлена ​​серія дуже маленьких сегментів в гладкій дузі або складної кривої, 8-бітне програмне забезпечення, ймовірно, задихнеться від необхідної швидкості обробки команд і введе заїкання в друк. Ці неймовірно короткі паузи дозволяють залишковому тиску в екструдері виштовхувати зайву пластику, роблячи невеликий замах на друк. Тому більшість зрізів автоматично зменшують криві та виводять gcode із зменшеною роздільною здатністю, щоб полегшити навантаження на мікропрограмне забезпечення. Проблема вирішена, правда?

Але є ще одне питання - алгоритми управління рухом GRBL, що лежать в основі всіх основних контролерів 3D-принтера з відкритим кодом, були розроблені з великою кількістю ярликів і злому, щоб 8-бітові процесори могли виконувати досить швидко. Наприклад, основний алгоритм розглядає лише зміну швидкості або швидкості на куті між двома сегментами і використовує це, щоб вирішити, коли уповільнитись / прискорити рух по напрямку руху. Він не обчислює і не враховує центральне / радіальне прискорення. Це дійсно ефективний злом під час друку боксерських моделей з низькою роздільною здатністю, але він виходить з ладу на гладких кривих з великою кількістю маленьких сегментів. Прошивка не виявляє помітної зміни швидкості на куті будь-яких двох майже лінійних сегментів в грані кривої, і, таким чином, не сповільнюється для кривої.

Друк складних периметрів неприскореним означає, що командна подача повинна бути дуже низькою, щоб отримати хорошу якість. Більшість принтерів обмежені приблизно 40 мм / с або менше на складних периметрах, незважаючи на те, що вони можуть працювати, можливо, 80-120 мм / с на заливці низької складності, перш ніж потрапляти на інші обмеження швидкості.

Між обмеженнями швидкості обробки команд та недоліками планувальника руху, що вимагаються процесорами з низькою потужністю, швидкість друку на практиці повинна бути набагато нижчою, ніж це суворо вимагає фізика та принтер. Все це відбувається від 8-бітових процесорів. Обхідні шляхи та найкращі практики для вирішення цієї проблеми настільки глибоко закладені в інструментальні ланцюги та екосистему, що мало хто розуміє, що існує навіть проблема. Але це реальна межа, яку можна подолати: швидкісний процесор із більш жорстким планувальником руху може генерувати більш високі середні швидкості друку з кращою якістю друку.

Однак, прошивки на базі АРМ лише повільно рухаються до більш просунутих планувальників руху. Зараз це велика область розвитку, яка насправді рухає майбутній перехід від низькокласних ARM, таких як Cortex M3, до ще швидших процесорів. Насправді не все так важко збільшити 84 МГц Arduino завдяки, накопичивши купу функцій прошивки.

Використання 8-бітових процесорів також робить принтери НАУЧНІшими. Найбільшим споживачем часу на процесорі в типовому 8-бітовому принтері є крокове переривання, яке спрацьовує крокові імпульси, щоб змусити двигуни рухатися. Цілком типово для> 60% всіх тактових циклів на Атмега-AVR переходити до крокових імпульсів. Оскільки це відбувається як переривання, інші завдання з обробки, які повинен виконувати принтер - як розрахунки прискорення та управління нагрівачем, - стискаються у короткі проміжки між подіями крокового переривання.

Без ретельного проектування прошивки крок імпульси повністю "витіснить" інші функціональні можливості, такі як оновлення РК-дисплея та розрахунки прискорення. Щоб дозволити більш високу швидкість руху без використання всіх ресурсів процесора, 8-бітові прошивки мають режим під назвою "подвоєння кроків", який спрацьовує два (або чотири, або вісім) крокових імпульсів на крокові переривання, щоб половина (або чверть, або восьма частина) ) стільки крокових переривань можна використовувати для отримання однакової швидкості руху. Ця практика скасовує вузькі місця процесора, але це спричиняє більш чіткі та гучні рухи двигуна, оскільки ступінчасті імпульси спрацьовують у спалах, а не постійній частоті. Фактично, рівень мікроступінгового двигуна функціонально знижується до більш грубого режиму, коли кроковий переривник спрацьовує подвійними або чотирма кроками. Тож мотори стають гучнішими, менш точними,

Цікавим побічним ефектом є те, що якщо ви переключите принтер на основі Марліна з 1/16 мікроступінгового на 1/32 мікроскопічного та зберігаєте однакові швидкості друку, прошивка просто почне подвоювати крок, знижуючи ефективний рівень мікроскопії прямо назад до 1/16.

Прошивки на основі ARM також використовують подвоєння кроків, але дозволені швидкості кроків, як правило, ~ 8 разів вище, перш ніж використовувати подвійний / чотирифазний крок. Це може означати більш високі швидкості та / або плавніший рух.

Інша проблема з 8-бітовими AVR - це відсутність апаратної плаваючої точки і необхідність витрачати багато тактових циклів на високоточні обчислення або обробку дуже великої кількості. Кінематика Delta, функції автоматичного вирівнювання, обчислення кроків із надзвичайно високим підрахунком кроків для великих принтерів та інші розширені функціональні функції займають багато тактових циклів на 8-бітовому процесорі. Поганий дизайн мікропрограмного забезпечення або необережне додавання функції, яка вимагає декількох додаткових квадратних коренів і функцій триггеру, можуть повністю зірвати процесор. Цей вид повзучості та коду функцій серйозно вплинув на ефективність Марліна з часом, коли люди просять все більше старого AVR.

Для порівняння, 32-бітний процесор не просто має більш швидкий та більше тактовий цикл, він також може робити набагато складнішу математику за меншу кількість тактових циклів, тому що має спеціалізовану апаратну функціональність, яка забезпечує багато кроків 8 біт процесор повинен робити в програмному забезпеченні.

Чи працюють 8-бітні процесори? Звичайно, вони дивно працюють добре, що вони є, і що ми просимо від них. Але вони безперечно обмежують продуктивність та особливості сучасних 3D-принтерів. Навіть нинішнє покоління 32-бітових процесорів вже поглинається високошвидкісними принтерами та математичними можливостями. 8-бітовий процесор вже на два покоління відстає від того, що було б кваліфіковано як "сучасний" контролер 3D-принтера.


Якщо математика та обчислення в реальному часі є проблемою, то чому не так багато зусиль у повністю програмованій логіці, як FPGA, використовується для керування кроковим керуванням тощо?
Відновіть Моніку - ζ--

Чи не FPGA дорогі?
Лев Ервін

Додаткова вартість та складність. Навіщо координувати два мікросхеми, коли ви можете використовувати один швидший чіп? Насправді існує декілька проектів на базі FPGA, але жоден з них не досяг критичної маси для використання користувачів.
Райан Карлайл

1
@RyanCarlyle Поняття, що два мікросхеми потрібно узгодити, не є правильним. FPGA може обробляти послідовне введення, аналіз, планування та вхід в один пакет (з можливістю використання програмного забезпечення MCU). Вартість, однак, є фактором.
Відновіть Моніку - ζ--


11

Як правило, AVR насправді менш потужний, ніж багато ядер ARM, що використовуються сьогодні. Більшість принтерів з AVR не мають копроцесорів з плаваючою комою, хоча багато кроку та керування рухом можна виконати в математиці, що є лише цілим числом (за винятком G2 / G3). Марлін може перервати для керування кроком до 10000 разів на секунду на AVR, переводячи до 40000 кроків в секунду. Це не особливо корисно без механічних компонентів, які можуть рухатись із такою швидкістю і все ще друкують значущі результати (або набагато точніші і мають набагато більшу кількість кроків на мм при однаковій швидкості).

Графічний дисплей не є особливо податковою справою робити на низьких швидкостях - висока швидкість або дивні інтерфейси можуть зажадати трохи більше енергії або спеціального переривання.

Часи , коли ARM може бути важливі для більш математики-важких і особливо з плаваючою точкою важких установок , таких як дельта, де кожен крок вимагає багато з плаваючою точкою і Тріг операцій, а також навігації в меню на 16MHz AVR (ATmega2560) описується як "болісно повільний", але Марлін все-таки домагається надрукування значущих результатів на принтерах в дельта-стилі.

Зрозуміло, що ядро ​​ARM, яке швидше виконує м'яку плаваючу крапку, або підтримує жорстку плаву (апаратне забезпечення, яке робить операції з плаваючою комою дуже ефективними) побачить вигоду для таких процесів.


3

Як правило, мікроконтролери, такі як AVR, є одноядерними / однопотоковими - тому, працюючи в певному циклі, щоб запустити контролер двигуна, можливо, вам не вистачить ресурсів, щоб зробити що-небудь ще, наприклад, ефективно переходити по меню.

Багато процесорів ARM зараз на день є багатоядерними / багатопотоковими, це означає, що ви можете мати один потік, що працює над вашим друком, а інший безкоштовний для того, що користувач може захотіти зробити.

тобто будь-який процесор AVR, що працює на локальному веб-сервері, щоб дозволити віддалений доступ до принтера, був би болісно базовим, де ARM, як правило, дозволяв би значно більше гнучкості.


Зауважте, що якщо вбудована програма не використовує хорошого багатопотокового коду, накладні витрати на міжпотокові та міжпроцесові комунікації можуть бути надзвичайно великими.
Відновіть Моніку - ζ--

Не плутайте багатоядерні процесори високопродуктивних додатків з оптимізованими в режимі реального часу процесорами M класу. Так, є двоядерний Cortex-M з вражаючою продуктивністю, але вони не є багатопотоковими.
Шон Хуліхане

2

Процесор AVR має достатню продуктивність для стандартного друку. Але це не вистачає продуктивності для

  • дельта-принтери (див. відповідь на гексафракцію )
  • меню відображення (на моєму принтері RepRap, який використовує ATmega2560, це дуже повільно)
  • веб-інтерфейс (Ethernet)

Порівняння технічних характеристик повинно бути самоосмислювальним. Цей конкретний процесор ARM щонайменше в 10 разів швидше протилежний ATmega2560:

CPU ARM-Cortex M3 LPC1769 (використовується в Smoothieboard )

  • ЦП: Cortex-M3 , 1 ядро
  • архітектура: ARMv7-M (32-розрядна)
  • частота: 96-120 МГц
  • пам'ять
    • Спалах: 512 кБ
    • ОЗУ: 64 кБ

Мікроконтролер ATmega2560

  • архітектура: 8-розрядна
  • частота: 16 МГц
  • пам'ять
    • флеш-пам’ять 256 Кб, з них завантажувач завантажений 8 Кб
    • SRAM: 8 Кб
    • EEPROM: 4 Кб

1

Процесори AVR є 8 бітними, тому вони можуть отримувати дані лише з 8 біт пам'яті одночасно - в той час як ARM - 32 біт і може одночасно отримувати дані 32 біта. Дозвіл позиції вимагає мінімального значення 24 біт - це означає, що AVR приймає 3 вибору даних для позиції - тоді як ARM приймає 1 збір даних.

Що ще гірше, процесори AVR внутрішньо ділять тактову частоту на 3, так що 40 МГц AVR працює зазвичай на 13,3 МГц, тоді як ARM - 1 тактовий цикл на транзакцію шини та обробку інструкцій - це включає 32 біт на 32 біт, кратний в 1 тактовий цикл.

Карта пам'яті в процесорах ARM має 32-бітну ширину або 4 ГБ, тоді як 8-бітні процесори мають лише адресну шину в 16 біт або 64 Кб - це означає, що комутація банків починає працювати в будь-якій програмі понад 64 Кб - для цього потрібні інструкції та час, щоб робити, хоча з ARM це не проблема.

Вартісні аспекти приблизно такі ж, як і AVR - для цього потрібна лише перероблена прошивка.

Що стосується FPGA:

  • Вони коштують стільки ж або дорожче, ніж процесор
  • Вони швидкі, спеціалізовані, пристрої і можуть бути налаштовані на спеціалізовані завдання
  • Вони мають додаткові фактори витрат:
    • набагато більше розв'язувальних ковпачків потрібно через швидкість ланцюгів в FPGA.
    • Потрібні додаткові джерела живлення, наземні літаки та плани живлення - що, як правило, означає (і вимагає) мінімум чотиришарову дошку або, можливо, 6 шарів, що збільшує вартість електроніки

Результат додавання FPGA до AVR обійдеться набагато дорожче, ніж перехід на більш потужний процесор ARM.


1
Привіт і Ласкаво просимо до SE.3DPrinting! Ваша відповідь може отримати багато користі від правильного використання великих літер, покращення макета та правильного використання розміру пам'яті. Будь ласка, оновіть відповідь.
0скар

Привіт Джеймс і велике спасибі за дуже цікаву та інформативну відповідь. Однак я погодився б із 0-шарковим… правильна написання великої літери, послідовне використання правильних одиниць СІ (тобто МГц, ГБ, КБ тощо) суттєво поліпшить читабельність вашої відповіді, як і зменшення використання декількох тире ( - -і - - - -) які досить відволікають, тбг.
Greenonline
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.