Кремень FMZ Реклама
Kremen FMHM Реклама

Прошивка Smoothieware, очарование 32 бит. Вводная.

eta4ever
Идет загрузка
Загрузка
28.04.2016
38026
102
RepRap

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

63
Прошивка Smoothieware, очарование 32 бит. Вводная.
В материале про то, как «8 бит хватит всем» я утверждал, что в целом микроконтроллеров AVR, к которым относится любимый ATmega2560, для работы 3D-принтера из палок и стяжек вполне достаточно. Более того, с запасом. Однако, вскользь упоминал о существовании таинственных 32-битных контроллеров, которые запредельно круты, но непонятно, зачем нужны. Поскольку мне интересно, я потихоньку вел изыскания в этом направлении, и в конце концов одержал победу над жабой и приобрел, наверное, самую доступную плату под «взрослую» прошивку Smoothieware. MKS SBase называется (не путаем с Base), от китайцев Makerbase. Ценник на оригинальную Smoothieboard находится за субъективными пределами здравого смысла бюджетного репрапостроения, где-то там же и Azteeg X5 mini. SBase тоже не миску риса стоит, но погуманнее.

Но пока что не о платах. Начну я немного с другого конца - с вопроса о взаимоотношениях козы и баяна. В чем плюшки «модной» платы на базе 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 - логика парковки. Сначала ось движется быстро (скорость в первом параметре, почему-то в мм/с), после срабатывания концевика отъезжает (на расстояние во втором параметре, чтобы концевик 'отпустило';) и медленно (скорость в третьем параметре) снова вызывает срабатывание концевика.
Прошивка Smoothieware, очарование 32 бит. Вводная.
Далее такая же пачка для beta и gamma, и немного тонких настроек. Потом идут Z probe - настройка щупа Z для автокалибровки и Leveling strategy - логика автоупровня. Раздел Panel отвечает за работу с дисплеем, энкодером, кнопками, кардридером. Network - настройка сетевого интерфейса (статика/динамика).

На этом краткий обзор конфигурации Smoothieware разрешите считать законченным. Конкретика и практика, естественно, последуют - буду осваивать MKS SBase и прикручивать ее ко второму 'кубокору'. На вопросы постараюсь ответить.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

63
Комментарии к статье