Прошивка 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 и прикручивать ее ко второму 'кубокору'. На вопросы постараюсь ответить.
Еще больше интересных статей
Линейная сушилка, обзор.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Линейный подшипник
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Мини лазерный гравер на деталях от DVD приводов и сканеров, с рабочей зоной 100х100 мм
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Станок ЧПУ куда как более перс...
Как альтернатива продающимся:h...
Что можно сказать? Только повт...
Печатаю PETG материалом на кас...
Monkey type is a free online t...
Здравствуйте подскажите пожалу...
Здравствуйте! До того, как пом...