В чем преимущество использования электроники на базе ARM?
В большинстве электронных устройств используются микроконтроллеры, такие как AVR, но я вижу чипы ARM в новой электронике. Говорят, что чипы ARM более мощные, но в каких областях, связанных с 3D-печатью, это может помочь? С какими функциями борется AVR и где РУКА может быть лучше?
Высокая скорость передвижения? Дельта-принтеры? Графический дисплей?
И действительно ли AVR является ограничением?
@Lars Pötter, 👍23
5 ответов
Лучший ответ:
Контроллеры 3D - принтеров должны делать много вещей очень, очень быстро. Выполнение кинематических и динамических расчетов при отправке многих тысяч точно синхронизированных шаговых импульсов в секунду очень, очень сложно. Линейка 8-битных микроконтроллеров AVR, используемых в старых контроллерах 3D-принтеров, в основном представляет собой процессор Mr Coffee эпохи конца 1990-х годов. Они полностью, полностью исчерпали процессорное время, просто выполняя основные функции печати в простых (например, декартовых) принтерах, и добавление дополнительной вычислительной нагрузки приведет к их замедлению и замедлению, заиканию, остановке и так далее.
"Но мой 8-битный принтер работает нормально", - скажете вы. Нет, это не так. Это ограничивает производительность вашей печати, осознаете вы это или нет. Слайсеры теперь автоматически скрывают от вас многие недостатки производительности прошивки. Например, стандартная практика значительного замедления скорости печати по периметру в значительной степени является результатом того, что 8-битные процессоры не имеют достаточных ресурсов для двух вещей:
- Выполнение расчетов центростремительного ускорения для кривых на нескольких сегментах gcode
- В ногу с передачей/обработкой gcode и планированием движения для gcode с большим количеством очень маленьких сегментов, таких как органические модели или плавные дуги
Если представить серию очень маленьких сегментов в виде плавной дуги или сложной кривой, 8-битная прошивка, скорее всего, снизит требуемую скорость обработки команд и приведет к заиканию печати. Эти невероятно короткие паузы позволяют остаточному давлению в экструдере выталкивать лишний пластик, создавая небольшой прыщ на отпечатке. Поэтому большинство слайсеров автоматически уничтожают кривые и выводят gcode с уменьшенным разрешением, чтобы уменьшить нагрузку на встроенное ПО. Проблема решена, верно?
Но есть еще одна проблема-алгоритмы управления движением GRBL, лежащие в основе всех основных контроллеров 3D-принтеров с открытым исходным кодом, были разработаны с большим количеством ярлыков и хаков, позволяющих 8-битным процессорам работать достаточно быстро. Например, базовый алгоритм смотрит только на скорость или изменение скорости в углу между двумя сегментами и использует это, чтобы решить, когда замедляться/ускоряться по направлению движения. Он вообще не вычисляет и не учитывает центростремительное/радиальное ускорение. Это действительно эффективный хак при печати объемных моделей с низким разрешением, но он с треском проваливается на плавных кривых с множеством маленьких сегментов. Микропрограммное обеспечение не обнаруживает заметного изменения скорости в углу любых двух почти линейных сегментов внутри граненой кривой и, таким образом, не замедляется для кривой. Таким образом, сложная геометрия эффективно печатается с постоянной скоростью, без ускорения.
Неускоренные периметры печатного комплекса означают, что требуемая скорость подачи должна быть очень низкой, чтобы получить хорошее качество. Большинство принтеров имеют скорость около 40 мм/с или менее по сложным периметрам, несмотря на то, что они могут работать, возможно, 80-120 мм/с при заполнении с низкой сложностью, прежде чем перейти к другим ограничениям скорости.
Из-за ограничений скорости обработки команд и недостатков планировщика движения, требуемых процессорами с низким энергопотреблением, скорость печати на практике должна быть намного ниже, чем строго требуется физикой и оборудованием принтера. Все это происходит от 8-битных процессоров. Обходные пути и лучшие методы решения этой проблемы настолько глубоко внедрены в цепочки инструментов и экосистему, что очень немногие люди понимают, что проблема вообще существует. Но это реальный предел, который можно преодолеть: высокоскоростной процессор, работающий с более строгим планировщиком движения, может генерировать более высокие средние скорости печати при более высоком качестве печати.
Тем не менее, прошивки на базе ARM только медленно продвигаются в направлении более продвинутых планировщиков движения. Сейчас это большая область разработки, которая фактически ведет к предстоящему переходу от низкоуровневых устройств, таких как Cortex M3, к еще более быстрым процессорам. На самом деле не так уж сложно максимально использовать Arduino с частотой 84 МГц, используя множество функций встроенного ПО.
Использование 8-битных процессоров также делает принтеры БОЛЕЕ ГРОМКИМИ. Самым большим потребителем процессорного времени в типичном 8-битном принтере является шаговое прерывание, которое запускает импульсы шага, чтобы заставить двигатели двигаться. Это довольно типично для >60% всех тактовых циклов на Atmega AVR, чтобы перейти к запуску импульсов шага. Поскольку это происходит как прерывание, другие задачи обработки, которые должен выполнять принтер, такие как вычисления ускорения и управление нагревателем, втискиваются в короткие промежутки между событиями прерывания.
Без тщательного проектирования встроенного ПО шаговые импульсы полностью "вытеснят" другие функции, такие как обновление ЖК-дисплея и вычисления ускорения. Чтобы обеспечить более высокую скорость движения без использования всех ресурсов процессора, в 8-битных прошивках есть режим, называемый "удвоение шага", который запускает два (или четыре, или восемь) импульса шага на шаговое прерывание, чтобы можно было использовать половину (или четверть, или восьмую) количества шаговых прерываний для получения одинаковой скорости движения. Эта практика устраняет узкие места процессора, но она вызывает более грубое и громкое движение двигателя, потому что импульсы шага запускаются очередями, а не с постоянной частотой. По сути, уровень микрошагов двигателя функционально понижается до более грубого режима, когда шаговое прерывание запускает двойные или четырехступенчатые шаги. Таким образом, двигатели становятся громче, менее точными, и в крайних случаях могут возникнуть проблемы с резонансом.
Интересный побочный эффект заключается в том, что если вы переключите принтер на базе Marlin с 1/16 микрошагов на 1/32 микрошагов и сохраните ту же скорость печати, прошивка просто начнет удваиваться, снижая ваш эффективный уровень микрошагов обратно до 1/16.
В прошивках на базе ARM также используется удвоение шага, но допустимые скорости шага, как правило, в ~8 раз выше, чем при использовании двойного/четырехкратного шага. Это может означать более высокие скорости и/или более плавное движение.
Еще одной проблемой с 8-битными AVR является отсутствие аппаратного обеспечения с плавающей запятой и необходимость тратить много тактов на высокоточные вычисления или обработку очень больших чисел. Дельта-кинематика, функции автоматического выравнивания, расчет перемещений с чрезвычайно высоким числом шагов для больших принтеров и другие расширенные функциональные возможности-все это занимает много тактов на 8-битном процессоре. Плохой дизайн прошивки или небрежное добавление функции, требующей нескольких дополнительных квадратных корней и тригонометрических функций, может полностью заглушить процессор. Такого рода ползучесть функций и раздувание кода серьезно повлияли на производительность Marlin с течением времени, поскольку люди все больше и больше спрашивают о старом AVR.
Для сравнения, 32-битный процессор не просто имеет более быструю тактовую частоту и больше тактовых циклов, он также способен выполнять гораздо более сложную математику за меньшее количество тактов, поскольку он имеет специальную аппаратную функциональность, которая выполняет многие действия, которые 8-битный процессор должен выполнять в программном обеспечении.
Работают ли 8-битные процессоры? Конечно, они удивительно хорошо работают для того, что они есть, и для того, что мы от них требуем. Но они, несомненно, ограничивают производительность и возможности современных 3D-принтеров. Даже сегодняшнее поколение 32-битных процессоров уже максимально оснащено высокоскоростными принтерами и функциями, требующими больших вычислительных возможностей. 8-битный процессор уже на два поколения отстает от того, что можно было бы назвать "современным" контроллером 3D-принтера.
Как правило, AVR на самом деле менее мощный, чем многие ядра ARM, используемые сегодня. Большинство принтеров с AVR не имеют сопроцессоров с плавающей запятой, хотя большая часть управления шагом и перемещением может выполняться только в виде целых чисел (за исключением G2/G3). Marlin может прерывать обработку шагов до 10000 раз в секунду на AVR, что составляет 40000 шагов в секунду. Это не особенно полезно без механических компонентов, которые могут двигаться с такой скоростью и при этом печатать значимые результаты (или намного точнее и имеют гораздо более высокое количество шагов на мм при аналогичной скорости).
Графический дисплей не особенно обременителен для работы на низких скоростях-высокие скорости или странные интерфейсы могут потребовать немного больше мощности или выделенного прерывания.
Времена, когда руки могут быть важны дополнительные математические тяжких и особо плавающей точкой-тяжелые настройки, такие как дельты, где каждый шаг требует много плавающей точкой и тригонометрические операции, и навигация в меню на 16МГц АВР (ATmega2560 в) описан как "мучительно долго", но Марлин не получится распечатать значимые результаты на Дельта-стиль принтеров.
Очевидно, что ядро ARM, которое либо быстрее выполняет мягкие операции с плавающей запятой, либо поддерживает hardfloat (оборудование, которое очень эффективно выполняет операции с плавающей запятой), увидит преимущества для таких процессов.
Как правило, микроконтроллеры, такие как AVR, являются одноядерными / однопоточными, поэтому при работе в цикле while для запуска контроллера двигателя вам может не хватать ресурсов для выполнения чего - либо еще, например для эффективной навигации по меню.
Многие процессоры ARM в настоящее время являются многоядерными / многопоточными, что означает, что вы можете использовать один поток для печати, в то время как другой свободен для всего остального, что пользователь может захотеть сделать.
т. е. любой процессор AVR, работающий на локальном веб-сервере, чтобы обеспечить удаленный доступ к принтеру, был бы болезненно простым, где ARM, как правило, обеспечивал бы гораздо большую гибкость.
Обратите внимание, что если прошивка не использует хороший многопоточный код, накладные расходы на взаимодействие между потоками и процессами могут быть чрезвычайно высокими., @nanofarad
Не путайте многоядерные высокопроизводительные процессоры приложений с оптимизированными в реальном времени процессорами M-класса. Да, есть двухъядерный Cortex-M с впечатляющей производительностью, но они не многопоточны., @Sean Houlihane
Процессор 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 КБ
Процессоры 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 КБ - это требует инструкция, и время должно быть сделано - а с рукой это не проблема.
Стоимость примерно такая же, как у AVR - для этого просто требуется переработанная прошивка.
Что касается ПЛИС:
- Они стоят столько же или больше, чем процессор
- Они являются быстрыми, специализированными устройствами и могут быть настроены для выполнения специализированных задач
- У них есть дополнительные факторы затрат:
- из-за скорости схем в ПЛИС требуется гораздо больше колпачков для развязки.
- Требуются дополнительные источники питания, а также наземные самолеты и планы питания, что, как правило, означает (и требует) минимум 4 - слойной платы или, возможно, 6 слоев, что увеличивает стоимость электроники
Результат добавления FPGA в AVR будет стоить намного дороже, чем переход на более мощный процессор ARM.
Привет и добро пожаловать в SE.3DPrinting! Ваш ответ может значительно выиграть от правильной капитализации, улучшения компоновки и правильного использования объема памяти. Пожалуйста, обновите ответ., @0scar
Привет, Джеймс, и большое спасибо за ваш очень интересный и информативный ответ. Тем не менее, я бы согласился с 0scar... правильная капитализация, последовательное использование правильных единиц СИ (т. Е. МГц, ГБ, КБ и т. Д.) Значительно улучшили бы читаемость вашего ответа, равно как и сокращение использования нескольких тире ("- - "и" - - -"), которые довольно отвлекают, tbh., @Greenonline
- RAMPS 1.4, 1.5 или 1.6?
- Как называется этот разъем шагового двигателя?
- TronXY Windows 10 драйвер
- Ender 3 V2 пустой экран и жидкокристаллический непрерывный звуковой сигнал с щелчками
- Что это значит, когда говорят, что до 256 интерполяций и 16 микрошагов для шаговых палочек TMC?
- Ender 3 Не запускается - мигающий экран и синий светодиод на главной плате
- Каково влияние низшего бодрата?
- Стоит ли покупать Arduino в качестве контроллерной электроники для deltabots?
Если математика и вычисления в реальном времени являются проблемой, то почему не предпринимается много усилий в полностью программируемой логике, такой как ПЛИС, используемая для управления шаговым управлением и тому подобное?, @nanofarad
Разве ПЛИС не дорогие?, @Leo Ervin
Дополнительные затраты и сложность. Зачем координировать две микросхемы, когда вы можете использовать одну более быструю микросхему? На самом деле существует целый ряд проектов на базе ПЛИС, но ни один из них не достиг критической массы для понимания пользователями., @Ryan Carlyle
@RyanCarlyle Представление о том, что два чипа должны быть скоординированы, неверно. ПЛИС может обрабатывать последовательный ввод, анализ, планирование и пошаговое выполнение в одном пакете (возможно использование микроконтроллера с мягким ядром). Однако стоимость-это фактор., @nanofarad
Все попытки использовать ПЛИС, которые я видел до сих пор, использовали две микросхемы, но спасибо, что указали на это., @Ryan Carlyle
http://mobilegeeks.de/wp-content/uploads/2012/11/citizen-kane-clapping-gif.gif, @Nicu Surdu