Как добавить автоматическое выравнивание стола перед печатью?

Я хочу добавить автоматическое выравнивание стола перед каждой печатью. Когда я включаю автоматический уровень стола в конфигурации.h, он показывает только авто стол в меню. Я нашел этот код в cardreader.cpp

void CardReader::openAndPrintFile(const char *name) {
    char cmd[4 + strlen(name) + 1]; // Room for "M23 ", filename, and null
    sprintf_P(cmd, PSTR("M23 %s"), name);
    for (char *c = &cmd[4]; *c; c++) *c = tolower(*c);
    enqueue_and_echo_command(cmd);
    enqueue_and_echo_commands_P(PSTR("M24"));
}

и изменил его на

void CardReader::openAndPrintFile(const char *name) {
    char cmd[4 + strlen(name) + 1]; // Room for "M23 ", filename, and null
    sprintf_P(cmd, PSTR("M23 %s"), name);
    for (char *c = &cmd[4]; *c; c++) *c = tolower(*c);
    enqueue_and_echo_command("G28");
    enqueue_and_echo_command("G29");
    enqueue_and_echo_command(cmd);
    enqueue_and_echo_commands_P(PSTR("M24"));
}

Теперь перед каждой печатью принтер выполняет автоматическое заполнение два раза, но при запуске печати автоматическое заполнение игнорируется, и принтер действует так же, как до выполнения автоматического заполнения.

Пожалуйста, помогите мне решить эту проблему.

Я использую прошивку Marlin 1.1.0.

, 👍10

Обсуждение

Почему бы вам просто не добавить команды автоматического выравнивания в свой стартовый G-код (в вашем слайсере)?, @Tom van der Zanden

Я хочу, чтобы это было автоматически, иногда у меня есть только файл g-кода, и редактировать их все невозможно, @Hadi Barak

@HadiBarak При правильной настройке у вас будет возможность автоматически выровнять стол перед ручным запуском печати. Это будет в разделе Подготовка -> выравнивание стола (или как там называется эта опция). Добавление его в начальный G-код-лучшее решение. Но убедитесь, что вы поставили его после G28 (автоматическое наведение). Вы не можете автоматически запускать команду при печати чего-либо, потому что это контролируется стартовым G-кодом., @Granny

@HadiBarak вы можете редактировать Gcode с помощью любого текстового редактора, просто нужно добавить G29 после G28., @Fernando Baltazar


5 ответов


0

Я не настолько хорошо владею G-кодом, но в Современном механическом цехе: Понимание G27, G28, G29 и G30 я нашел эти описания кодов G28 и G29, которые вы добавили:

  • G28: Для любых буквенных адресов осей, включенных в команду G28, машина сначала переместится (при быстром перемещении) в промежуточное положение на этих осях. Затем он быстро вернется в нулевое положение возврата по заданным осям.

  • G29: G29 также является двухэтапной командой. Во-первых, это приводит к перемещению машины (в соответствии с указаниями осей) в промежуточное положение, используемое в последней команде G28. Во-вторых, это заставляет машину переместиться в положение, указанное в команде G29.

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

Я не знаю, как обойти связанный с этим код, но, похоже, вам нужно будет внести изменения в другом месте, например, непосредственно перед тем, как какой-либо цикл отправит последовательные команды на принтер.

Надеюсь, это поможет, несмотря на мою ограниченную беглость...


,

Эти описания, которые вы нашли, относятся к командам G28/G29 на профессиональных станках с ЧПУ. В прошивке 3D-принтера они были (неправильно)использованы для других целей. G28 выполняет последовательность наведения на конечные точки (этот вид - но не совсем - соответствует вашему описанию), в то время как G29 инициирует автоматическое выравнивание стола., @Tom van der Zanden


6

Вместо того, чтобы изменять встроенное ПО для обработки этого, вы рассматривали сценарий предварительной обработки на вашем компьютере, чтобы получить G29 в коде G, а затем добавить пару G28/G29 в начале файла, если G29 не найден?

,

После повторного прочтения вопроса кажется, что это, возможно, единственный способ решить проблемы в данном случае, если только Octoprint не может сделать то же самое, что и предварительный процесс., @Sean Houlihane

@SeanHoulihane Я добавил ответ, в котором описывается, как это сделать с помощью OctoPrint, @0scar


4

С Marlin 1.1.0 вы можете автоматически запускать файл G-кода при включении принтера с уже имеющейся SD-картой.

Добавьте файл с именем auto0.g в корень вашей карты, содержащий следующий G-код:

G28 ;Auto-homing
G29 ;Bed leveling

Обычно карту выравнивания стола следует повторно использовать для всех последующих отпечатков до тех пор, пока принтер не будет выключен.

Возможно предоставить до 10 файлов, от auto0.g до auto9.g.

,

Хотели бы вы опубликовать это (или его производное) в качестве ответа на вопрос Могут ли сценарии G-кода запускаться автоматически при вставке SD-карты при использовании Marlin Firmware?, @Greenonline


4

Вместо того, чтобы размещать G28 (домашний) и G29 (рабочий стол) в конфигурации, я бы поместил его в срез для создания G-кода в качестве кода для предварительной печати. Это автоматически добавит это в начало любого среза G-кода, обеспечивая самонаводку и выравнивание при каждом запуске G-кода.

,

5

Другой ответ, который делает именно то, что вы хотите, предполагает использование сервера печати. Сервер печати-это приложение, которое запускает инструкции к принтеру через USB-соединение с другого устройства, это может быть ваш компьютер/ноутбук или выделенный Raspberry Pi (небольшой и доступный компьютер). Одним из таких приложений, описанных здесь далее, является OctoPrint (это вполне может быть сделано с другими приложениями, но сначала это нужно проверить!), это приложение сервера печати позволяет интегрировать множество сторонних плагинов в дополнение к обширному набору функций, которые у него уже есть из коробки. Одной из таких функций являются сценарии GCODE (специально написанные таким образом, чтобы соответствовать опции в меню настроек печати OctoPi); на этом снимке экрана показаны некоторые подробности:

GCODE scripts menu options item

Как видно из изображения, существуют определенные "события", доступные для обработки команд G-кода в определенных случаях, например, непосредственно перед началом печати. Вы можете использовать этот envent для вставки своих команд выравнивания.


Пожалуйста, обратите внимание, что на изображении вы найдете странные команды G-кода, такие как OCTO100 и OCTO110, которые являются функцией плагина под названием "Системные команды GCODE", которая позволяет запускать сценарии оболочки для планирования вентилятора. Я просто отключаю питание вентилятора, когда принтер простаивает, чтобы избавиться от шума, когда принтер просто работает на холостом ходу, вентилятор нужен только при повышенной температуре.

,