О нас
  • О компании
Доставка
Оплата
Услуги
Блог
Производители
Контакты
    +7 (495) 128-29-32
    +7 (495) 128-29-32
    E-mail
    zakaz@1-sloy.ru
    Адрес
    127422, г. Москва, ул. Тимирязевская, д. 1
    Режим работы
    Пн - Пт: с 08:00 до 21:00
    Первый Слой
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Каталог
    • 3D принтеры
    • 3D сканеры
    • Решения
    • Материалы
    • Аксессуары
    • Опции для 3D-сканеров
    • Дополнительное оборудование
    • Запчасти для 3D-принтеров
    3D принтеры
    3D сканеры
    Материалы
    Запчасти для 3D принтеров
    Аксессуары
    Доп. оборудование
    Bambu Lab Вики
      Первый Слой
      Каталог
      • 3D принтеры
      • 3D сканеры
      • Решения
      • Материалы
      • Аксессуары
      • Опции для 3D-сканеров
      • Дополнительное оборудование
      • Запчасти для 3D-принтеров
      3D принтеры
      3D сканеры
      Материалы
      Запчасти для 3D принтеров
      Аксессуары
      Доп. оборудование
      Bambu Lab Вики
        Войти
        0 Сравнение
        0 Избранное
        0 Корзина
        Первый Слой
        Телефоны
        +7 (495) 128-29-32
        E-mail
        zakaz@1-sloy.ru
        Адрес
        127422, г. Москва, ул. Тимирязевская, д. 1
        Режим работы
        Пн - Пт: с 08:00 до 21:00
        0
        0
        0
        • Кабинет
        • 0 Сравнение
        • 0 Избранное
        • 0 Корзина
        • Каталог
          • Каталог
          • 3D принтеры
          • 3D сканеры
          • Решения
          • Материалы
          • Аксессуары
          • Опции для 3D-сканеров
          • Дополнительное оборудование
          • Запчасти для 3D-принтеров
        • Блог
        • Услуги
        • Компания
          • Компания
          • О компании
        • Информация
          • Информация
          • Реквизиты
        • Контакты
        +7 (495) 128-29-32
        • Телефоны
        • +7 (495) 128-29-32
        • zakaz@1-sloy.ru
        • 127422, г. Москва, ул. Тимирязевская, д. 1
        • Пн - Пт: с 08:00 до 21:00
        Главная
        Блог
        Arc Fitting на 8-битном Marlin: Мифы и Реальность. Тест на ATmega1284P

        Arc Fitting на 8-битном Marlin: Мифы и Реальность. Тест на ATmega1284P

        Arc Fitting на 8-битном Marlin: Мифы и Реальность. Тест на ATmega1284P
        5 ноября 2026

        Arc Fitting на 8-битном Marlin: Мифы и Реальность. Тест на ATmega1284P

        Главное

        • Arc fitting на 8-битном Marlin не замедляет печать, а в тестах на ATmega1284P оказался быстрее подготовленного G1 вплоть до 6.8 раза при чтении с SD-карты.
        • Экономия возникает не за счёт «дешёвых» вычислений G2/G3, а за счёт сокращения числа операций чтения, разбора G-code, диспетчеризации команд и обмена по UART.
        • При передаче по UART на скорости передачи 250000 бод разрыв становится почти десятикратным: поток G1 переполняется ошибками, тогда как несколько G2 отрабатывают плавно.

        Введение: почему тема вообще стала спорной

        Появление Arc fitting в слайсерах вроде Orca Slicer породило устойчивое убеждение: дуговые команды G2 и G3 хороши для мощных 32-битных плат, но на 8-битном контроллере они только вредят. Логика казалась очевидной: вместо готовых линейных перемещений Marlin вынужден сам аппроксимировать дугу, а это дополнительная математическая нагрузка на слабый процессор. Многие пользователи и даже некоторые документации начали рекомендовать отключать эту опцию на AVR-платах.

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

        В этом материале разбирается именно такой тест: заведомо неблагоприятные условия для Arc fitting на классическом ATmega1284P, работающем на 16 МГц. В прошивке активированы тяжёлые функции S-curve, Linear Advance, Junction Deviation и ZV Input Shaping. Если бы расчёт дуги действительно перегружал ядро, проблемы должны были проявиться здесь максимально ярко.


        Откуда взялся миф о вреде Arc fitting

        Слайсер против прошивки: разные этапы обработки дуги

        Ключевая ошибка в рассуждениях о Arc fitting — смешение двух этапов. Когда Orca Slicer преобразует модель в G-code, он может либо разбить дугу на множество коротких линейных сегментов G1, либо оставить компактные G2/G3. Во втором случае файл становится заметно меньше, но прошивка должна выполнить сегментацию самостоятельно.

        На первый взгляд это выглядит как перенос вычислительной нагрузки со слайсера на контроллер. Если процессор слабый, дополнительные вычисления могут съесть тактовые циклы и замедлить обработку. Но этот аргумент игнорирует главное: слабый 8-битный чип тратит ресурсы не только на математику аппроксимации, но и на каждый полученный символ, каждую строку ASCII и каждую команду в очереди.

        Скриншот настроек прошивки Marlin, показывающий опцию Arc Fitting

        Окно настроек Marlin с опцией Arc Fitting.

        Сравнение потока G-code при использовании G1-сегментов и дуговых команд G2/G3 на 8-битном контроллере ATmega1284P — визуализация нагрузки на parser и planner.

        Почему «меньше команд» не всегда означает «дешевле»

        G2/G3 действительно заставляют Marlin генерировать внутренние сегменты. В исследуемой прошивке дуга аппроксимировалась участками примерно 1.75 мм. Но количество итоговых planner blocks можно сделать одинаковым с линейным представлением, если заранее подобрать длину отрезков G1. Именно так и поступили в тесте: окружность диаметром 40 мм в обоих вариантах дала по 432 реально выполненных блока.

        Это позволило сравнить не разное качество геометрии, а чистую стоимость обслуживания команд. Результат оказался неожиданным для сторонников мифа: G1 оказался примерно на 22% медленнее, чем G2. То есть даже при одинаковой итоговой сегментации линейный поток проигрывает.


        Что именно проверялось на ATmega1284P

        Конфигурация тестового стенда

        Испытания проводились на ATmega1284P с тактовой частотой 16 МГц — это одна из наиболее типичных платформ в бюджетных и устаревших 3D-принтерах. Прошивка — Marlin 2.1.x, причём специально нагруженная тяжёлыми алгоритмами:

        • S-curve — сглаживание профиля ускорений, увеличивающее вычислительные затраты на планирование;
        • Linear Advance — коррекция давления в сопле, требующая более точного управления шаговыми двигателями;
        • Junction Deviation — метод управления рывками на стыках сегментов;
        • ZV Input Shaping — один из самых эффективных алгоритмов подавления вибраций, позволяющий поднять скорость печати без потери качества.

        Такой набор функций оставляет мало свободных тактов у процессора. Если бы обсчёт дуг действительно был критичным, падение производительности стало бы заметно сразу.

        Методика сравнения

        Чтобы исключить влияние случайных факторов, исследователи создали тестовую окружность диаметром 40 мм. В варианте с G2 использовалось шесть дуговых команд, а в варианте с G1 — заранее нарезанные отрезки разной длины: 5, 1, 0.5, 0.2 и 0.1 мм. Число итоговых planner blocks при крупных дуговых сегментах и коротких линейных отрезках целенаправленно приводили к одинаковым значениям, где это было возможно.

        Измерялось полное время выполнения круга от момента подачи команды до завершения движения. Это интегральная характеристика, отражающая состояние всей цепочки: чтение G-code → парсер → интерполяция дуги → планировщик → шаговый драйвер.

        Параметр Значение
        Контроллер ATmega1284P @ 16 МГц
        Прошивка Marlin 2.1.x
        Активированные функции S-curve, Linear Advance, Junction Deviation, ZV Input Shaping
        Источник команд SD-карта, затем UART
        Диаметр тестовой окружности 40 мм
        Скорость передачи скорость передачи 250000 бод
        Сравниваемые команды G1 против G2/G3

        Результаты на SD-карте: первый удар по мифу

        Одинаковые блоки — разное время

        Первый эксперимент строился на равенстве итоговых блоков. При 432 planner blocks на окружность время выполнения составило:

        Тип команд Время выполнения, с Разница
        G1 9.328 —
        G2 7.648 на 22% быстрее

        То есть Arc fitting не просто не замедлил печать, а заметно ускорил её при чтении с SD-карты. Это противоречит интуитивному предположению о том, что вычисление дуги «съедает» ресурсы слабого процессора.

        Дробление отрезков и эффект замираний

        Дальше исследователи начали уменьшать длину линейных сегментов G1: 5, 1, 0.5, 0.2 и 0.1 мм. Чем мельче отрезки, тем точнее линейное представление окружности, но тем больше команд должен обработать контроллер.

        При длинах от 0.5 до 0.1 мм дуговые G2 выполняли круги в 2.2–6.8 раза быстрее, чем G1 с SD-карты. При этом движение на дуговых командах оставалось плавным, а линейные отрезки вызывали замирания и ощутимые ударные нагрузки от перемещаемых масс стола и головки.

        Причина проста: процессор ATmega1284P не успевал подготавливать следующий блок G1 с той же скоростью, с какой шаговики отрабатывали предыдущий. Планировщик периодически опустошался, и движение прерывалось. G2 же компактным потоком подавал в планировщик достаточно данных, чтобы поддерживать непрерывное движение.

        Это объясняет и ударные нагрузки: при остановке и повторном старте массы стола или каретки испытывают резкие изменения ускорения, которые передаются на механику принтера.


        UART на 250000 бод: когда linear stream тонет

        Переполнение буфера и resend

        Если чтение с SD-карты оставляло контроллеру относительно стабильный канал данных, то передача по UART добавила критический фактор — ограниченную пропускную способность и необходимость подтверждать каждую строку. Эксперимент на скорости передачи 250000 бод показал драматическую разницу.

        Для выполнения окружности потребовалось 7542 команды G1 и всего шесть G2. Линейный вариант занял 70.029 секунды, дуговой — 7.656 секунды. Выигрыш от применения Arc fitting составил почти десятикратную величину.

        Почему поток G1 захлебнулся

        Во время передачи G1 по UART занятый обслуживанием длинной очереди процессор не успевал своевременно забирать поступающие байты. Буфер переполнялся, контрольные суммы не совпадали, и требовался повторный resend. Это выливалось в значительные паузы и удары по механике.

        Приходилось снижать скорость обмена, чтобы уменьшить рывки, но это увеличивало общее время печати. А поток из шести G2 проходил окружность плавно и за один раз. Компактность дугового представления радикально сократила объём передаваемых данных и снизила нагрузку на коммуникационный слой.


        Почему G-code command не равна planner block

        Две стороны одной медали

        Главное заблуждение в дискуссиях об Arc fitting — отождествление команды G-code и блока планировщика. Это разные сущности. Marlin действительно обязан сам сегментировать G2/G3, но при этом компактная команда устраняет огромное количество операций:

        • чтение строк из файла или порта;
        • разбор ASCII-представления;
        • диспетчеризация команды по модулям прошивки;
        • обмен ACK и проверка контрольных сумм при UART;
        • вызовы множества промежуточных обработчиков.

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

        Таблица факторов нагрузки

        Фактор G1 G2/G3
        Объём входного потока Большой Малый
        Количество строк парсера Тысячи Единицы
        Время на чтение и ACK Высокое Низкое
        Математическая сегментация дуги Отсутствует Присутствует
        Риск опустошения планировщика Высокий Низкий
        Требования к буферу UART Высокие Низкие

        Именно поэтому «лишние» вычисления G2 не проявляются как узкое место на практике. Узким местом оказывается сам процесс поступления и разбора тысяч строк G1.


        Практические выводы для владельцев 8-битных плат

        Когда Arc fitting действительно полезен

        Результаты теста указывают, что Arc fitting на 8-битном контроллере не только безопасен, но и желателен во многих сценариях:

        • при печати с SD-карты на прошивках с активными тяжёлыми функциями;
        • при передаче по UART на высоких скоростях, включая скорость передачи 250000 бод;
        • при печати моделей с большим количеством криволинейных поверхностей, где линейная аппроксимация порождает тысячи сегментов;
        • при желании снизить износ механики за счёт плавного непрерывного движения.

        Где нужна осторожность

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

        Тем не менее основная рекомендация ясна: отключать Arc fitting только из-за того, что плата 8-битная, не стоит. Лучше провести собственный короткий тест с окружностью или печатью криволинейной модели.


        Ограничения эксперимента и реакция сообщества

        Что осталось за рамками

        Исследование сфокусировано на одном кольце и одной прошивке. Оно не охватывает все возможные сценарии — например, влияние Linear Advance на точность сопряжения дуговых сегментов или поведение Junction Deviation на микростыках. Не измерялась и температурная нагрузка на драйверы, хотя ударные нагрузки при замираниях косвенно указывают на повышенный механический стресс.

        Также стоит отметить, что тест проводился при максимально неблагоприятных условиях для Arc fitting, и именно поэтому его результаты особенно показательны. Если на загруженной прошивке дуги выигрывают, то на более лёгких конфигурациях они не окажутся хуже.

        Реакция и открытость данных

        Полные отчёты по условиям и результатам эксперимента опубликованы отдельно и направлены разработчикам документации Orca Slicer для пересмотра утверждения, что Arc fitting на 8-битных процессорах — «зло». Это хороший пример того, как воспроизводимый тест может менять сложившиеся представления.

        Сообщество энтузиастов 3D-печати регулярно сталкивается с подобными мифами. Часто они возникают из общих соображений, а не из измерений. Случай с Arc fitting напоминает, что только контролируемый эксперимент с учётом всей цепочки обработки команд позволяет отличить реальную производительность 3D-принтера от умозрительной модели.


        Заключение

        Тест на ATmega1284P развенчивает миф о том, что Arc fitting вреден для 8-битного Marlin. Напротив, дуговые G2/G3 уменьшают объём входного G-code и разгружают самые слабые звенья системы — парсер и коммуникационный слой. Выигрыш особенно заметен при передаче по UART и при мелкой линейной нарезке.

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

        Диаграмма сравнения времени выполнения окружности на ATmega1284P: G1-сегменты разной длины против дуговых команд G2 при чтении с SD-карты и по UART на скорости 250000 бод.

        Главное из статьи

        Правда ли, что Arc fitting замедляет работу 8-битного контроллера?
        Нет. В тесте на ATmega1284P дуговые G2/G3 оказались быстрее G1 даже при одинаковом числе итоговых planner blocks.

        Как Arc fitting влияет на скорость печати по сравнению с G1?
        При чтении с SD-карты выигрыш составлял от 22% до 6.8 раза в зависимости от длины линейных сегментов. Меньше всего разница при крупных G1, больше всего — при отрезках 0.1–0.5 мм.

        Что происходит при передаче G-code через UART?
        Поток из тысяч G1 переполняет буфер UART, вызывая ошибки контрольных сумм, resend и замирания. Дуговые команды передаются компактно и проходят гладко; разрыв почти десятикратный.

        Почему G2/G3 команды эффективнее на медленных контроллерах, несмотря на вычисления?
        Они резко сокращают количество операций чтения, парсинга, диспетчеризации и обмена ACK. Экономия на инфраструктуре обработки команд перекрывает затраты на интерполяцию дуги.

        Комментарий Первого Слоя

        Российские производители бюджетных 3D-принтеров на базе AVR-контроллеров могут получить конкурентное преимущество за счёт оптимизации прошивки: активация arc fitting в Marlin снижает нагрузку на слабые процессоры при работе с SD-картой, что критично для импортозамещающих моделей с ограниченными вычислительными ресурсами. Практические тесты доказывают возможность ускорения печати до 6.8 раза без замены железа — это прямой способ повысить рентабельность производства при сохранении локализованной компонентной базы.


        Источник: habr.com

        Назад к списку
        Подписаться
        на новости и акции
        Связаться с нами
        +7 (495) 128-29-32
        +7 (495) 128-29-32
        E-mail
        zakaz@1-sloy.ru
        Адрес
        127422, г. Москва, ул. Тимирязевская, д. 1
        Режим работы
        Пн - Пт: с 08:00 до 21:00
        zakaz@1-sloy.ru
        127422, г. Москва, ул. Тимирязевская, д. 1
        Интернет-магазин
        Каталог
        Услуги
        Компания
        О компании
        Информация
        Реквизиты
        Помощь
        Условия оплаты
        Условия доставки
        Правила возврата товара
        © 2026 ПЕРВЫЙ СЛОЙ
        Политика конфиденциальности
        Согласие на обработку персональных данных
        Согласие на обработку файлов cookies
        Политика использования файлов cookie
        Оферта

        На информационном ресурсе применяются рекомендательные технологии.

        Все ресурсы сайта 1-sloy.ru, включая (но не ограничиваясь) текстовую, графическую, фотографическую и видео информацию, структуру, дизайн и оформление страниц, доменное имя, фирменное наименование являются объектами авторского права и прав на интеллектуальную собственность, защищены российским законодательством и международными соглашениями об охране авторских прав. Запрещается любое использование содержания страниц и контента данного сайта на других площадках без предварительного согласия правообладателя. Запрещаются любые иные действия, в результате которых у пользователей Интернета может сложиться впечатление, что представленные материалы не имеют отношения к 1-sloy.ru.