roboforum.ru

Технический форум по робототехнике.

CaliGator - генератор калибровочных кодов

CaliGator - генератор калибровочных кодов

setar » 25 апр 2013, 15:05

Для удобства пользователей 3D принтеров, мной создан генератор тестовых кодов.
http://base3d.ru/CaliGator/

в данный момент доступны следующие тесты:
  • raft - по сути это просто подложка, по ее качеству можно осуществлять калибровку стола
  • flow - подбор потока под конкретный материал
  • width - подбор ширины линии экструзии
  • temp - подбор температуры печати
  • suck - подбор величины отката подачи (ретракта)
  • suck_speed - подбор скорости отката подачи


Методика тестирования:
Прежде чем приступить к тестированию проходим по всем вкладкам проверяя параметры, выставляем значения по опыту,
которые на наш взгляд дают наилучшие результаты (позже я введу рекомендуемые профили для разных принтеров).

raft
в этом тесте наша задача получить равномерные, слегка придавленные линии.
Обращаем внимание на расстояние между линиями экструзии, оно должно быть равномерным по всей площади, по ним можно судить о наклоне стола (если один угол или сторону плющит больше других) или о неровности стола (если имеют место неравномерно расположенные участки с более сильным придавливанием).
Рафт делается на двойной высоте слоя и использует тройной поток.

flow
в этом тесте проверяется поток, он должен быть достаточен чтобы между линиями экструзии не образовывалось просветов (щелей), в то же время сильно завышенный поток будет давать выдавливание пластика за периметр модели.
2013-04-25 14.48.36.jpg


width
в этом тесте меняется сразу два параметра: ширина между центрами выкладываемых линий, и поток который компенсирует увеличение требуемой площади экструзии.
При слишком плотной укладке линии будут мешать друг другу, а при слишком редкой будут появляться щели.
результатом теста является некоторый диапазон допустимых значений ширины одной линии экструзии
2013-04-25 13.48.02.jpg


temp
в этом тесте выбирается температура печати, ее хорошо видно визуально.
при недостаточном нагреве будет иметь место расслоение пластика, недостаточное сцепление с подложкой.
при чрезмерном нагреве будет наблюдаться обесцвечивание пластика или даже его "вскипание"
2013-04-25 15.38.29.jpg

Re: CaliGator - генератор калибровочных кодов

setar » 29 окт 2015, 13:23

в том то и дело что прошивка при исполнении команды M109 головой не может двигать! так задумано
Код: Выделить всёРазвернуть
 * M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating                                                        
*        Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling

Re: CaliGator - генератор калибровочных кодов

unigenum » 29 окт 2015, 13:23

Andrew S писал(а):Скорее прошивка не правильно понимает команду M109 S188; wait heat
Что за прошивка кстати?

марлин 1.0.2-1
команда прерасно понимается и отрабатывается в стартовом коде перед печатью. отрабатывается коретно и вовремя, наблютаю в пронтерфейсе

чудеса были на версии марлина 1.0.0
на последних версиях не проверял

Re: CaliGator - генератор калибровочных кодов

8cd » 29 окт 2015, 13:25

Andrew S писал(а):Скорее прошивка не правильно понимает команду M109 S188; wait heat
Что за прошивка кстати?

RAMPS 1.4 Marlin (качал в сентябре, https://github.com/MarlinFirmware/Marlin)

Re: CaliGator - генератор калибровочных кодов

setar » 29 окт 2015, 13:28

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

Re: CaliGator - генератор калибровочных кодов

8cd » 29 окт 2015, 13:40

Andrew S писал(а):Скорее прошивка не правильно понимает команду M109 S188; wait heat


Почему это команда "пролезает вперёд"?

Если бы ваша версия была верна, то выглядело бы это по другому: начиналась бы печать следующей полосы с предыдущей температурой.

Re: CaliGator - генератор калибровочных кодов

dccharacter » 29 окт 2015, 18:58

Наблюдал этот эффект нга своем принтере, просто не понимал, что происходит. Спросить у марлинистов - правильное решение.

Добавлено спустя 11 минут 2 секунды:
Код: Выделить всёРазвернуть
while ((residencyStart == -1) ||
              (residencyStart >= 0 && (((unsigned int) (millis() - residencyStart)) < (TEMP_RESIDENCY_TIME * 1000UL)))) ) {
      manage_heater();
          manage_inactivity();
          lcd_update();     }

Фактически вот код М109. Надо смотреть что там в менеджерах происходит

Re: CaliGator - генератор калибровочных кодов

8cd » 30 окт 2015, 00:56

Уточнил прошивку - Marlin 1.0.2
Создаю файл с кодом:
Код: Выделить всёРазвернуть
G28
G1 Z20
M109 S210
G1 X60.00 Y100.00
G1 X220.00 Y100.00 F1000
M109 S216
G1 X60.00 Y100.00 F1000


И вот что происходит:
Парковка, опускание стола. Далее пауза - ожидание нагрева. Когда достигается установленная температура - начинается движение.
В этот же момент температура устанавливается в следующее значение.
По окончанию движения пауза, связанная с ожиданием нагрева до заданной температуры. Когда температура достигнута начинается очередное движение.

Если запустить такой код:
Код: Выделить всёРазвернуть
G28
G1 Z20
M109 S210
G1 X60.00 Y100.00
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
G1 X220.00 Y100.00 F1000
G1 X60.00 Y100.00 F1000
M109 S216
G1 X60.00 Y100.00 F1000


Переключение на следующую температуру произойдёт не сразу, а на 8-10том проходе.
Вот как видится это история:
Г-код читается кусками и если я правильно понимаю размер блока такой:
static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
//The ASCII buffer for receiving from the serial:
#define MAX_CMD_SIZE 96
#define BUFSIZE 4

Как только в прочитанном блоке окажется команда M109 SХХХ - она будет выполнятся одновременно с другими командами.

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

Вероятно нужно покопаться в void process_commands() файл Marlin_main.cpp

Интересно было бы узнать у кого ещё такое же поведение принтера.

Re: CaliGator - генератор калибровочных кодов

dccharacter » 30 окт 2015, 01:56

А, все понеятно тогда. Там что происходит - во всех циклах идет обработка входящих данных, т.е. буфер постоянно заполнен. Соответственно при парсинге команд, если попадается команда на движение, то он отправляется в планировщик и ставится в очередь. А команды вроде установки температуры сразу отрабатывают. Немножко непонятно пока, почему разрывается цикл ожидания установки температуры, но, скорее всего где-0то в менеджерах продолжается исполнение очереди планировщика...

Добавлено спустя 56 секунд:
У меня такое же поведение

Re: CaliGator - генератор калибровочных кодов

Dmitry__ » 30 окт 2015, 04:22

Жесть, если это так, то отформатирую диск с марлином :o
Так, где мой grbl?

Re: CaliGator - генератор калибровочных кодов

8cd » 30 окт 2015, 11:27

dccharacter писал(а):У меня такое же поведение


Спасибо. Видимо действительно в прошивке Marlin есть баг.

Dmitry__ писал(а):Жесть, если это так, то отформатирую диск с марлином :o
Так, где мой grbl?


Держись! Не всё так страшно!

Если серьёзно, то наверно, только в температурном тесте это поведение принтера искажает результат, в целом печатать это не мешает.

Re: CaliGator - генератор калибровочных кодов

unigenum » 30 окт 2015, 12:02

надо бы попробовать на прошивке repetier
как будет свободное время, потестирую

Re: CaliGator - генератор калибровочных кодов

KtSerg » 22 ноя 2015, 11:13

Приветствую.
Интересный тест-настройка.
Обязательно попробую.
Я так понял размеры 100*100 ?
А есть возможность изменить размеры, ну например сделать 80*80, для того, что-бы сделать последовательно четыре теста на разных участках стола?

Re: CaliGator - генератор калибровочных кодов

setar » 25 ноя 2015, 13:15

зачем ?
можно сделать все при желании

Re: CaliGator - генератор калибровочных кодов

KtSerg » 25 ноя 2015, 19:14

Ну, я вчера тестировал пластик, пробовал снять со стола сразу после печати, тест деформировался (был тёплый), следующий снимал, когда стол остыл. А нагрев для печати следующего это снова 20-30 минут ожидания. А с размерами 100*100 сложно на столе разместить даже второй тест. При меньших размерах (хотя-бы на 20мм), можно было-бы напечатать сразу до 4-ёх тестов с минимальными потерями времени на остывание/разогрев стола/сопла.

Да и ещё я не понял, так и должно быть, или я не правильно что-то задавал, у меня в G-коде сгенерировалось первый слой Z0.60, а второй Z0.90. Хотя "высоту стоя" указывал 0.3 , "Z смещение" не менял - 0.
Перед печатью поменял на Z0.30 и Z0.60 соответственно.
И ещё один момент, в G-коде сначала включается нагрев сопла, а потом стола. Получается сопло горит почти пол-часа в холостую. Думаю лучше поменять порядок. Хотя, я не в курсе, может на каких-то принтерах сопло греется долго а стол моментально...

А вообще, спасибо за генератор.

Re: CaliGator - генератор калибровочных кодов

setar » 25 ноя 2015, 19:18

тест умышленно делается в центре, где искажения стола минимальны
рафт (первый слой) печатается на двойной высоте тройным потоком
а порядок нагрева меняется в стартовых G-code, это не более чем пример, я мог бы там пустоту оставить

P.S. нагрев стола 20-30 мин это не нормально, нужно что то делать в этом направлении


cron
Rambler\'s Top100 Mail.ru counter