В чем преимущество использования электроники на базе ARM?


22

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

Скоростное движение? Дельта принтеры? Графический дисплей?

И действительно ли AVR является ограничением?

Ответы:


23

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

«Но мой 8-битный принтер работает нормально», - говорите вы. Нет, это не так. Ваша производительность печати ограничена этим, понимаете ли вы это или нет. Слайсеры теперь автоматически скрывают от вас множество недостатков производительности прошивки. Например, стандартная практика значительного замедления скорости печати по периметру в значительной степени является результатом того, что 8-битные процессоры имеют недостаточные ресурсы для двух вещей:

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

При представлении серии очень маленьких сегментов в виде гладкой дуги или сложной кривой 8-битное микропрограммное обеспечение, вероятно, захлебнется необходимой скоростью обработки команд и вызовет заикание в отпечатке. Эти невероятно короткие паузы позволяют остаточному давлению в экструдере вытолкнуть немного дополнительного пластика, сделав небольшой след на отпечатке. Таким образом, большинство слайсеров автоматически искажают кривые и выводят gcode с уменьшенным разрешением, чтобы облегчить нагрузку на прошивку. Проблема решена, верно?

Но есть и другая проблема - алгоритмы управления движением GRBL, лежащие в основе всех основных контроллеров 3D-принтеров с открытым исходным кодом, были разработаны с множеством ярлыков и хаков, позволяющих 8-битным процессорам работать достаточно быстро. Например, базовый алгоритм рассматривает только скорость или изменение скорости в углу между двумя сегментами и использует его, чтобы решить, когда следует замедлять / ускорять вдоль направления движения. Он не рассчитывает и не учитывает центростремительное / радиальное ускорение. Это действительно эффективный хак при печати прямоугольных моделей с низким разрешением, но он с треском проваливается на гладких кривых с большим количеством маленьких сегментов. Микропрограмма не обнаруживает заметного изменения скорости в углу любых двух почти линейных сегментов внутри фасеточной кривой и, следовательно, не замедляет ее.

Печать сложных периметров без ускорения означает, что заданная скорость подачи должна быть очень низкой, чтобы получить хорошее качество. Большинство принтеров ограничены до 40 мм / с или менее по сложным периметрам, несмотря на то, что они могут работать, возможно, 80-120 мм / с на заполнении низкой сложности, прежде чем перейти к другим ограничениям скорости.

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

Тем не менее, микропрограммы на основе ARM только медленно продвигаются к более продвинутым планировщикам движения. Сейчас это большая область разработки, которая фактически движет грядущий переход от низкоуровневых ARM, таких как Cortex M3, к еще более быстрым процессорам. На самом деле, не так уж и сложно добиться максимального эффекта 84-мегагерцовой шины Arduino Due, используя множество встроенных функций.

Использование 8-битных процессоров также делает принтеры громче. Самый большой потребитель процессорного времени в типичном 8-битном принтере - это шаговое прерывание, которое запускает импульсы шага, чтобы заставить двигатели двигаться. Для> 60% всех тактовых циклов на AVR Atmega характерно переход к шаговым импульсам запуска. Поскольку это происходит как прерывание, другие задачи обработки, которые должен выполнять принтер, такие как вычисления ускорения и управление нагревателем, оказываются зажатыми в короткие промежутки между событиями прерывания шагового двигателя.

Без тщательного проектирования микропрограммы шаговые импульсы полностью вытеснят другие функции, такие как обновления ЖК-дисплея и расчеты ускорения. Чтобы обеспечить более высокую скорость движения без использования всех ресурсов процессора, 8-битные прошивки имеют режим, называемый «удвоение шага», при котором два (или четыре, или восемь) импульсов шага на одно шаговое прерывание превращаются в половину (или четверть, или восьмую). ) можно использовать столько же шаговых прерываний для получения одинаковой скорости движения. Эта практика устраняет узкие места процессора, но вызывает более грубое и более громкое движение двигателя, потому что импульсы шага запускаются пачками, а не постоянной частотой. Фактически, уровень микропереключения двигателя функционально понижается до более грубого режима, когда прерывание шагового двигателя запускает двойной или четырехступенчатый шаг. Таким образом, двигатели становятся громче, менее точными,

Интересным побочным эффектом является то, что если вы переключите принтер на основе Marlin с 1/16 микрошагов на 1/32 микрошагов и сохраните те же скорости печати, микропрограмма просто начнет удваивать шаг, снижая эффективный уровень микрошагов до уровня 1/16.

Микропрограммы на основе ARM также используют удвоение шага, но допустимые скорости шага, как правило, в ~ 8 раз выше, прежде чем использовать двойной / четырехшаговый степпинг. Это может означать более высокие скорости и / или более плавное движение.

Еще одна проблема с 8-битными AVR заключается в отсутствии аппаратной плавающей запятой и необходимости тратить много тактов на высокоточные вычисления или обработку очень больших чисел. Дельта-кинематика, функции автоматического выравнивания, вычисления перемещений с чрезвычайно большим числом шагов для больших принтеров и другие расширенные функциональные возможности занимают много тактов на 8-битном процессоре. Плохой дизайн прошивки или небрежное добавление функции, требующей нескольких дополнительных квадратных корней и функций триггера, могут полностью погасить процессор. Этот вид ползучести и раздувания кода со временем серьезно повлиял на производительность Марлина, так как люди все больше и больше спрашивают о старом AVR.

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

Работают ли 8-битные процессоры? Несомненно, они работают на удивление хорошо для того, что они есть и что мы просим от них. Но они, безусловно, ограничивают производительность и возможности современных 3D-принтеров. Даже нынешнее поколение 32-битных процессоров уже превосходит по производительности высокоскоростные принтеры и математически сложные функции. 8-битный процессор уже на два поколения отстает от того, что можно квалифицировать как «современный» контроллер 3D-принтера.


Если математика и вычисления в реальном времени являются проблемой, то почему не так много усилий в полностью программируемой логике, такой как FPGA, используемой для управления шаговым управлением и тому подобного?
Восстановите Монику - Feb--

Разве FPGA не дорогие?
Лео Эрвин

Дополнительные затраты и сложность. Зачем координировать две фишки, если вы можете использовать одну более быструю фишку? На самом деле существует ряд проектов на основе ПЛИС, но ни один из них не достиг критической массы для освоения пользователями.
Райан Карлайл

1
@RyanCarlyle Представление о необходимости координации двух чипов неверно. ПЛИС может обрабатывать последовательный ввод, анализ, планирование и пошаговое выполнение в одном пакете (возможно использование MCU с программным ядром). Стоимость является фактором, хотя.
Восстановить Монику - Feb--


11

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

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

Время, когда ARM может быть важен, относится к более сложным математическим и особенно сложным установкам с плавающей запятой, таким как дельта, где каждое движение требует много операций с плавающей запятой и триггера, и описывается навигация в меню на AVR 16 МГц (atmega2560) как «мучительно медленный», но Марлину удается печатать значимые результаты на принтерах в стиле дельта.

Ясно, что ядро ​​ARM, которое либо быстрее выполняет мягкие операции с плавающей запятой, либо поддерживает hardfloat (аппаратное обеспечение, которое выполняет операции с плавающей запятой очень эффективно), увидит пользу для таких процессов.


3

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

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

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


Обратите внимание, что если микропрограмма не использует хороший многопоточный код, издержки при межпотоковой и межпроцессорной связи могут быть очень высокими.
Восстановите Монику - Feb--

Не путайте многоядерные высокопроизводительные процессоры приложений с оптимизированными в реальном времени процессорами класса М. Да, существуют двухъядерные Cortex-M с впечатляющей производительностью, но они не многопоточные.
Шон Хулихейн

2

Процессор AVR обладает достаточной производительностью для стандартной печати. Но ему не хватает производительности для

  • дельта-принтеры (см. шестнадцатеричный ответ )
  • меню дисплея (это ужасно медленно на моем принтере RepRap, который использует ATmega2560)
  • веб-интерфейс (ethernet)

Сравнение технических характеристик должно быть самоочевидным. Этот конкретный процессор ARM по крайней мере в 10 раз быстрее, чем ATmega2560:

Процессор 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, так что AVR 40 МГц обычно работает на частоте 13,3 МГц, в то время как ARM составляет 1 тактовый цикл на транзакцию шины и обработку команд - это включает 32-битное 32-битное кратное 1 тактовый цикл.

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

Аспекты затрат примерно такие же, как и у AVR - для этого требуется переработанная прошивка.

Что касается ПЛИС:

  • Они стоят столько же или больше, чем процессор
  • Они быстрые, специализированные, устройства и могут быть настроены для специализированных задач
  • У них есть дополнительные факторы стоимости:
    • намного больше развязывающих колпачков необходимо из-за скорости схем в FPGA.
    • Требуются дополнительные источники питания, а также заземления и планы электропитания, что обычно подразумевает (и требует) минимум 4-слойную плату или, возможно, 6-слойную, что увеличивает стоимость электроники.

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


1
Привет и добро пожаловать в SE.3DPrinting! Ваш ответ может выиграть от правильной капитализации, улучшения макета и правильного использования объема памяти. Пожалуйста, обновите ответ.
0scar

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