Прошивка Smoothieware, очарование 32 бит. Вводная.
Но пока что не о платах. Начну я немного с другого конца - с вопроса о взаимоотношениях козы и баяна. В чем плюшки «модной» платы на базе NXP LPC1768 для обычного самопальщика, не замороченного частотой генерации сигнала STEP и матаном непрямоугольных систем типа «дельты»? А например, в том, что не надо компилировать прошивку. Она, как настоящий пингвин, просто берет и читает конфигурационный файл (в текстовом формате) с SD-карты. При этом, механизм обновления прошивки тоже прозрачен, и тоже с карточки происходит. Ура, мы прощаемся с Arduino IDE. Но если хочется влезть ручками в святую святых - ничего не препятствует, все опенсорсно и документировано.
А теперь пробегусь по основным параметрам конфигурационного файла прошивки Smoothieware: что касается перемещений, температур и экструдера. А там есть и 'менее важные' разделы - что касается лазера, шпинделя, автолевела, дисплея и локальной сети. Но сначала - некоторые базовые моменты. Во-первых, Smoothieware унифицирована под разные кинематики. Из коробки поддерживаются декартова, CoreXY/H-Bot, 'дельта' и немного экзотики типа Morgan/SCARA. Отдельный параметр в конфиге этому посвящен. Во-вторых, поскольку прошивка изначально под разные системы, называть оси XYZ не совсем корректно, и поэтому тут alpha, beta, gamma. В случае прямоугольного принтера они как раз с XYZ совпадают. Третий момент - это назначение пинов контроллера. Оно тоже происходит в конфигурационном файле. Полная унификация. Нумерация пинов имеет вид '0.23', так они нумеруются собственно на LPC1768. Если посмотреть доку на микроконтроллер, там это записывается как 'P0[23]', что сути не меняет. Режим работы пинов задается суффиксом. Так, '!' (для пина 0.19, например, записывается как 0.19!) означает инверсию, '^' - подтяжку к VCC, 'v' - подтяжку к GND, 'o' - режим открытого стока, '-' - отключение подтяжки.
Руководство (ин инглиш) по конфигурации Smoothieware располагается здесь. Полностью я его не рассматриваю, но большинство ключевых параметров опишу. Поехали!
General motion
default_feed_rate - Скорость рабочего хода (для G1/G2/G3), задается в мм/мин, а не мм/c;
default_seek_rate - то же самое для холостого перемещения (G0);
mm_per_arc_segment - длина элементарной линии при разбиении дуги на прямые перемещения;
mm_per_line_segment - а это для непрямоугольных принтеров, разбиение прямых линий на сегменты;
delta_segments_per_second - интересная штука для дельт, разбиение линий не по длине, а по времени, т.е., сколько сегментов в секунду;
alpha_steps_per_mm
beta_steps_per_mm
gamma_steps_per_mm - привычные параметры, количество шагов (микрошагов) для перемещения соответствующей оси на 1 мм;
arm_solution - основополагающий параметр, задающий магию прошивки: cartesian, linear_delta, corexy, rotatable_cartesian, morgan
Далее идет пачка параметров, специфичных для дельт и SCARA, их я пропущу.
acceleration - ускорение, в миллиметрах на секунду в квадрате. Для принтеров с осью Z - только для XY.
z_acceleration - отдельное указание ускорения для оси Z, не актуально для дельты.
Далее тонкие настройки, пропускаю.
x_axis_max_speed
y_axis_max_speed
z_axis_max_speed - максимальная скорость перемещения по осям, мм/мин. Потолок, выше которого прошивка не даст разогнаться.
Stepper motors
alpha_step_pin
alpha_dir_pin
alpha_en_pin - назначение пинов для оси alpha;
alpha_current - ограничение тока для драйвера оси alpha. Да, если драйверы распаяны на плате (большинство решений на LPC1768), ток управляется программно;
alpha_max_rate - максимальная скорость по оси (мм/мин), в 'прюшах' и подобных это то же, что x_axis_max_speed, а вот в дельтах это разные вещи.
Далее такие же пачки параметров для beta и gamma осей.
Extruder
Здесь описывается поведение двигателя (двигателей) экструдера. Подробно останавливаться не буду - назначение пинов, ограничение тока, потолок скорости, ускорение - можно настроить по аналогии с обычными осями. Тут стоит остановиться вот на чем: extruder.module_name.<параметр>. Здесь module_name - это ваше название модуля экструдера. Например, для одного экструдера пачка параметров может иметь вид extruder.extruder0.<параметр>, для второго - extruder.extruder1.<параметр>.
Temperature control
temperature_control.module_name.thermistor_pin - назначение пина модуля термоконтроля. С модулями - та же история, что и в разделе Extruder. Например, при двух экструдерах у вас могут быть модули heater0, heater1, bed_heater.
temperature_control.module_name.heater_pin - назначение пина нагревателя;
temperature_control.module_name.readings_per_second - частота опроса термодатчика;
temperature_control.module_name.pwm_frequency - частота ШИМ канала регулирования;
temperature_control.module_name.thermistor - тип термистора.
Далее немного тонких настроек и ПИД.
temperature_control.module_name.max_pwm - потолок ШИМ при управлении. Например, если вы используете 12-вольтовый нагреватель хотэнда при напряжении БП 24В, рекомендуют поставить 64 вместо 255.
temperature_control.module_name.bang_bang - включение режима 'пыщь-пыщь' вместо ШИМ, актуально для электромеханического реле на управлении столом;
temperature_control.module_name.hysteresis - гистерезис для режима 'пыщь-пыщь' в градусах;
Далее немного настроек для экзотики - например, термопар с чипом max31855, подключенным по SPI.
Разделы Switch и Temperature switch я пока не трогаю. Там настраиваются выходные пины для выполнения каких-то действий и связь этих пинов с модулями термоконтроля. Laser и Spindle control тоже пропускаю, ибо непосредственно к 3D-принтеру они не относятся.
Endstops
Немного пропущу (параметры типа corexy_homing, delta_homing - выбираем соответствующий алгоритм позиционирования в домашнее положение, например, corexy_homing true).
alpha_min_endstop
alpha_max_endstop - назначение пинов концевиков. Если не используется, то ставится nc.
alpha_homing_direction - направление парковки, например, home_to_min;
alpha_min
alpha_max - какое положение (в мм) соответствует минимуму и максимуму по концевикам.
Далее то же самое для beta и gamma.
homing_order - порядок парковки по осям, например, XYZ или YXZ.
alpha_limit_enable
beta_limit_enable
gamma_limit_enable - остановка аппарата, если в процессе движения сработал концевик.
alpha_fast_homing_rate_mm_s
alpha_homing_retract_mm
alpha_slow_homing_rate_mm_s - логика парковки. Сначала ось движется быстро (скорость в первом параметре, почему-то в мм/с), после срабатывания концевика отъезжает (на расстояние во втором параметре, чтобы концевик 'отпустило';) и медленно (скорость в третьем параметре) снова вызывает срабатывание концевика.Далее такая же пачка для beta и gamma, и немного тонких настроек. Потом идут Z probe - настройка щупа Z для автокалибровки и Leveling strategy - логика автоупровня. Раздел Panel отвечает за работу с дисплеем, энкодером, кнопками, кардридером. Network - настройка сетевого интерфейса (статика/динамика).
На этом краткий обзор конфигурации Smoothieware разрешите считать законченным. Конкретика и практика, естественно, последуют - буду осваивать MKS SBase и прикручивать ее ко второму 'кубокору'. На вопросы постараюсь ответить.
Еще больше интересных статей
Изменения в следующей версии 3D-принтер PonyBot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
•Порт...
Скорость, температура и перевод RAMPS 1.5 на 24В
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Мама, почему я репрап?
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
На момент печати принтер был п...
стоимость комплекта из 6 сборн...
Отличная конструкция. Тоже вын...
После 1 или максимум 3го слоя...
Добрый вечера! Есть задачка. К...
Поменял хотенд на ender 3s1 pr...
Приобрел сабж. Ревизия 2. Нрав...