Jump to content

Search the Community

Showing results for tags 'marlin'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General section
    • Правила и рекомендации
    • Работа форума
    • Новости
    • Заявки на доступ к закрытым ресурсам
  • Technical issues
    • Материнские платы
    • Прошивки
    • Механика
    • Экструдеры
    • Столы нагревательные
  • Software
    • OctoPrint
    • Klipper
    • Cura 3D
    • Simplify 3D
    • SOLIDWORKS
    • Repetier-Host
    • MatterControl - 3D
    • Pronterface
    • CraftWare
    • KISSlicer
    • IdeaMaker
  • Our workshops
    • Новичкам. Задай вопрос - получи ответ
    • 3D принтер своими руками
    • Пластики
    • Our interesting products
    • Позор БАРЫГАМ
  • Smoking room
    • Давайте знакомится
  • Flea market
    • Правила раздела
    • Продам
    • Подарю/Обменяю

Product Groups

There are no results to display.

Blogs

  • Anet A8.
  • Інженерія та 3д принтери
  • Ярко о 3D
  • Долгострой
  • Новый проект под ласковым именем EVA. :)

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Имя


Возраст


Город


Сайт


Принтер


About Me

Found 12 results

  1. Как всегда, получив что-то рабочее хочется его усовершенствовать. Так и тут, я захотел управлять подсветкой Евы. Marlin содержит отдельный блок для этих целей в файле Configuration_adv.h * M355 Case Light on-off / brightness * #define CASE_LIGHT_ENABLE #if ENABLED(CASE_LIGHT_ENABLE) #define CASE_LIGHT_PIN 4 // Override the default pin if needed #define INVERT_CASE_LIGHT false // Set true if Case Light is ON when pin is LOW #define CASE_LIGHT_DEFAULT_ON true // Set default power-up state on #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105 // Set default power-up brightness (0-255, requires PWM pin) #define MENU_ITEM_CASE_LIGHT // Add a Case Light option to the LCD main menu Нужно раскоментировать CASE_LIGHT_ENABLE и прописать управляющий пин с поддержкой PWM (ШИМ). В моем случае я выбрал пин 4 на RAMPS. К этому я купил плату мосфет, по аналогии с мосфетом на подогрев стола. Можно поискать и на SMD компонентах, гораздо меньшего размера, но и эта платка пойдет. Тут стоит N-канальный мосфет и управляет нагрузкой по минусовому контакту. Получилось отлично. При включении принтера подсветка включается на половину мощности, как и записано в конфиге выше. Регулировать интенсивность можно как и через меню самого принтера, или по средствам команды M355 S1 P200 (S- состояние вкл/выкл, Р - частота ШИМ от 0 до 255). Прописал пару пользовательских кнопок в octoprint и можно подсветкой рулить удаленно.
  2. Все настройки приведены относительно стокового файла настроек, находящегося по пути Marlin\example_configurations\Anet\A8\ Все написанное ниже относится к связке Mega 2560 и RAMPS 1.5, но настройки идентичны и для стоковой платы Anet A8 Небольшое отступление, новые RAMPS есть в трех исполнениях: 1.4 - стандартный RAMPS; 1.5 - с немного измененной схематикой и комплектующими, более мощные мосфеты и SMD предохранители; 1.6 - тоже самое, что и 1.5 но уже с наклеенным радиатором на три мосфета. Вот и настал черед китайского клона BlTouch. Не знаю, попался мне качественный зонд или просто повезло, но больших затруднений в его настройке не возникло. Выбирал его на Али как самый дешевый из всех возможных на момент покупки, GEEETECH Official Store Читал много негативных отзывов об этом магазине в группе Anet A8 в фейсбуке. Но после его настройки понял, что у не довольных руки не от туда растут. Зонд прибыл в антистатическом кульке и мягкой, почтовой упаковке. По качеству исполнения все становится понятно. Китайцы давно не заморачиваются с красотой в угоду стоимости. Перед установкой я полистал сайт Thingiverse и посмотрел куда на Аньке его ставят люди. Можно было его на место предыдущего зонда поставить, но постоянное свечение красным огоньком спереди не прельщало. Нашел расположение сзади на линейном подшипнике. Но и тут не все просто. У автора стоит E3D V6 и с высотой расположения зонда непонятка. Он наклепашил разных размеров по высоте и как-то грустно мне стало разбираться. Сел и сварганил свое крепление в SolidWorks. Одно из условий установки зонда это высота от сопла до нижнего края зонда в 8,3мм Распечатал подставку-калибр, опустил сопло на стол, приложил сзади зонд и снял размеры штангенциркулем. Получилась вот такая вставка. (АК это не автомат калашникова!!!) Вставляется в отверстия подшипника и расклинивается двумя винтиками М2х16 Теперь красный огонек зонда поселился сзади экструдера. Для соединения зонда с платой взял не нужный VGA кабель, расчехлил его и выбрал 5-ть толстых проводков. Лишнее обрезал. Обжал, с одной стороны разъемы мама Dupont, с другой мама Dupont и CHU-3. С механикой разобрались - переходим к электрике. Как всегда в описании товара продавец не удосужился расписать схему подключения. Поковырялся в инете, накопал Wiki от Geeetech с подключением ихнего творения. Распиновка понятна. включаем по схеме к RAMPS но зонд не подает признаков жизни. Забегая на перед. Оказывается в RAMPS, по умолчанию, сигналы с уровнем 3,3В. Соответственно нам не хватает питания для работы зонда и нужно поднять напряжение до 5В и делается это, всего лишь, установкой одной перемычки. Ну вот и с электрической частью разобрались! Вносим изменения в Configuration.h #define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector. #define Z_SERVO_ANGLES {10,90} // У этого зонда именно такие углы. #define BLTOUCH // Активирует меню в настройках принтера из которого можно тестировать зонд. Аналогично команде M280 P0 в слайсере. #define X_PROBE_OFFSET_FROM_EXTRUDER 20 // X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER 52// Y offset: -front +behind [the nozzle] #define Z_MIN_PROBE_REPEATABILITY_TEST //для проверки точности зонда //#define MIN_SOFTWARE_ENDSTOP_Z // комментируем для возможности выставить отрицательный offset #define AUTO_BED_LEVELING_BILINEAR #define GRID_MAX_POINTS_X 4 // усли кого напрягает 16-ть точек замера - оставляем стандартное значение 3. #define ABL_BILINEAR_SUBDIVISION // не обязательно #define BILINEAR_SUBDIVISIONS 4 // не обязательно #define MESH_EDIT_GFX_OVERLAY #define GRID_MAX_POINTS_X 4 #define Z_SAFE_HOMING // Обязательная команда с BlTouch - хоминг будет происходить строго в центре стола, что бы избежать поломки механики и зода!!! #define INDIVIDUAL_AXIS_HOMING_MENU #define NUM_SERVOS 1 // Servo index starts with 0 for M280 command В новых версиях Marlin необходимо еще определить область замера. // Set the boundaries for probing (where the probe can reach). #define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE #define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - (MIN_PROBE_EDGE)) #define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE #define BACK_PROBE_BED_POSITION (Y_BED_SIZE - (MIN_PROBE_EDGE)) Если этого не сделать, то при отправки команды G29 в принтер, он отхомится и остановится, а в терминальном окне будет видно, что он не знает границ замера и просит их указать. Если просто раскоментировать указанный фрагмент настроек, то при компиляции получим ошибки, как на пример: FRONT_PROBE_BED_POSITION is outside the probe region. Получается, что с нашим Offset_Y52 (исходя из моего примера смещение по Y52 и габаритам стола 220х220), принтер не может передвинуть корретку по Y так, что бы зонд попал в позицию Y10 потому, что при этом значении и offset Y52 карретка принтера должна отъехать по Y в -48. Считаем - "10 - 52 = -48" от этого значения можно еще отнять 10мм это отрицательное смещение концевика Y в нашем принтере. (#define Y_MIN_POS -10) и на выходе получаем -38мм По этому корректируем FRONT_PROBE_BED_POSITION вот таким выражением #define FRONT_PROBE_BED_POSITION (MIN_PROBE_EDGE +38) С таким значением карретка по Y будет находится на -10мм от края стола, а зонд на 48 мм к центру от края стола. Можно просто это выражение записать как прямое указание координаты предела #define FRONT_PROBE_BED_POSITION 48 Теперь попробуем взять пример если зонд находится не сзади сопла, а спереди на 20мм, cоответственно в конфиге Offset Y-20. С таким значением офсета фронтальная позиция зонда будет попадать в указанный предел FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE, а вот #define BACK_PROBE_BED_POSITION (Y_BED_SIZE - (MIN_PROBE_EDGE)) выходит за границы принтера, т.к. 220 - 10 = 210мм, добавляем наш Offset Y-20, 210 + 20 = 230мм. Получается сопло должно находится на 10мм за пределами границы принтера по оси Y и при компиляции мы получим ошибку BACK_PROBE_BED_POSITION is outside the probe region. По этому считаем допустимое значение исходя из выше написанного #define BACK_PROBE_BED_POSITION (Y_BED_SIZE - 20) или просто указываем числовой предел #define BACK_PROBE_BED_POSITION 200 Компилируем прошивку и проверяем на отсутствие ошибок. Если есть - проверяем по указанной методе значение ошибочной позиции. Все прописано, прошивка залита в принтер и все должно работать. Включаем принтер, а зонд в непонятке и уходит в защиту. Постоянно моргает красным!Не все так просто как оказалось. Зонд нужно еще настроить! Зонд устроен так, что при подаче на него питания он дважды опускает и поднимает щуп. Если все нормально, щуп не затирает и нигде не упирается - зонд переходит в рабочее состояние с втянутым щупом и постоянным свечением светодиода. Если ему, что-то не нравится - он уходит в защиту постоянно моргая светодиодом. Порядок настройки зонда: Поднимаем сопло выше уровня стола на 10-20мм.; Если зонд моргает(в аварийном состоянии), через слайсер вводим команду M280 P0 S160 или через меню принтера выбираем Control/BLTouch/ Reset BlTouch. Зонд успокоится и светодиод погаснет. Берем шестигранник, вставляем в регулировочный винт зонда и плавно крутим против часовой стрелки до момента включения светодиодной индикации. Ловим именно момент когда загорится светодиод и на 1мм или 1градус, кому как удобнее, доворачиваем против часовой стрелки. Так же делаем если у зонда, после сброса горит светодиод, только крутим по часовой, до момента его выключения и возвращаем его обратно как писал выше. Тестируем командой M280 P0 S10 - щуп опускается и светодиод тухнет; Команда M280 P0 S90 - втягивает щуп и светодиод загорается; Автоматический тест M280 P0 S120 - будет опускать и поднимать щуп пока не сделаете сброс командой M280 P0 S160 или через меню принтера Control/BLTouch/ Reset BlTouch Вот теперь зонд настроен и готов к работе. Но нам еще нужно выставить Z OFFSET: Запускаем принтер и через меню настроек производим инициализацию EEPROM; Подключаем слайсер и отправляем команду M851 Z0; Вводим G28; Вводим команду G1 X110 Y110 - сопло переместится в центр стола; Опускаем сопло, пультом управления осями в слайсере, до нужной высоты, проверяя расстояние листом бумаги А4 между столом и соплом; После выставления нужной высоты смотрим на дисплей принтера и записываем получившуюся отрицательную высоту по оси Z, к примеру у меня Z-1,29; Вписываем значение в команду M851 Z-1,29; Сохраняем вписанные значения в EEPROM командой М500; Проверяем правильность установки офсета. Отправляем команду G28, после хоуминга ложим листок на центр стола, отправляем команду G1 Z0 и проверяем листочком высоту сопла. Вот и все настройки и проверки. Ну и в завершении нужно проверить все это в "бою". Опять же нашел модельку коробки LCD дисплея, В SolidWorks немного ее изменил и распечатал. К стати настройки стартового кода в слайсере остались как описано во второй части. (см в начале поста) На данном этапе калибровка высоты стола осуществляется по 16-ти точкам, квадрат 4х4. Единственное напрягает, что калибровка начинается не с Х0.Y0, а с X200.Y-10 и идет к 0.0 Но мне кажется это нормально, с учетом того, что конечная точка калибровки остается X200.Y200 Готовый результат отлично был прикручен сверху на станину принтера в существующие крепежные отверстия, только два винта нужно заменить на более длинные М3х20. Коробка довольно жесткая, от нажатий не шатается, да и доступ к SD-card теперь не затруднен. Единственное, что мне пока не нравится - это подключение компа по USB и постоянна работа принтера от подключенного кабеля USB. Первую проблему буду решать USB-удлинителем, а вторая решается отключением +5в(красный провод) в удлиннители кабеля USB. Модели можно взять по ссылкам: Крепление 3DTouch к линейному подшипнику. Крепление LCD 12864 экрана к раме принтера. Печать на 100мм/с проходит на ура. Кубик 20х20х20 на указанной скорости
  3. Все настройки приведены относительно стокового файла настроек, находящегося по пути Marlin\example_configurations\Anet\A8\ И так на руках есть два зонда LJ18A3-8-Z/BX - индукционный(срабатывает на металл) и LJC18A3-8-Z/BX емкостной и регулируемый(срабатывает еще и на тело) Оба зонда нормально разомкнуты NPN. При срабатывании на сигнальном проводе появляется минус. 414dee72ab2e62458327143f10f53706.jpg Расключение зонда: КОРИЧНЕВЫЙ - "плюс от 5В до 30В"; СИНИЙ - "минус"; ЧЕРНЫЙ - "сигнальный". Много читал, что нужно питать именно от 12В, но эксперимент на двух зондах показал адекватную работоспособность и от +5В Забегая наперед - точность замеров 0,019мм. Было распечатано два держателя под зонд. Как на картинке выше - для стокового директа MK8. Если сделать модернизацию, как на фото ниже("открывающийся" штатный вентилятор) - перекрывается радиатор охлаждения и нужен другой держатель. Так как работа зонда идентична работе концевика Z - я сделал "горыныча", или разветвитель. С его помощью можно подключить и зонд и концевик одновременно. Одно из названий коннекторов CHU-3 Цыфра обозначает кол-во контактов. Дальше установил зонд и пошел анализ получившейся конструкции. Через управление слайсером подвел зонд к левому переднему краю стола XY(0,0) и померил расстояние, по осям, от края стола до ценра сопла. Получилось по Х-23мм, по Y-44мм. Так как зонд стоит слева и спереди, относительно сопла, получили отрицательные координаты OFFSET - записываем их. Передвигаем экструдер в центр стола и поднимаем его на пару мм выше сопла. Регулируем зонд, что бы он начинал срабатывать на этой высоте и затягиваем его крепление. Механический концевик оси Z не трогаем. Концевик будет дублировать зонд на случай его отказа. К стати, у меня стоит антивоблинг и ось Z не связана жестко с экструдером. По этому я не сильно переживаю если ось Z не остановится по концевику. Максимум может быть неприятный треск говорящий о том, что двигатель пропускает шаги и уперлась винтовая гайка в муфты оси Z(вот это завернул!) Теперь идем в Configuration.h и производим настройку программы. Все настройки приведены относительно стокового файла настроек, находящегося по пути Marlin\example_configurations\Anet\A8\ То, что я изменил для работы зонда: #define PROBING_HEATERS_OFF //отключение нагрева стола во время автоуровня; #define PROBING_FANS_OFF //отключение вентилятора.; #define X_PROBE_OFFSET_FROM_EXTRUDER -23 //смещение датчика автоуровня относительно сопла по оси Х -23мм.; #define Y_PROBE_OFFSET_FROM_EXTRUDER -44 //смещение датчика относительно сопла по оси Y -44мм.; #define XY_PROBE_SPEED 10000 //это скорость перемещения экструдера при замерах. По умолчанию 6000 Можно оставить как было #define MULTIPLE_PROBING 2 // это количество замеров проводимых в одной координате. Если оставить закоментированным значение - берется одна проба. #define Z_MIN_PROBE_REPEATABILITY_TEST //эта строчка позволяет произвести замер точности показаний зонда. Запускается из слайсера командой M48. Как говорил выше - точность составила 0,019мм; //#define MIN_SOFTWARE_ENDSTOP_Z //эта строчка отключает остановку экструдера при движении по оси Z Нам это нужно, что бы настроить OFFSET Z.; #define AUTO_BED_LEVELING_BILINEAR // выбираем режим автокалибровки стола. #define ABL_BILINEAR_SUBDIVISION //Синтезирует промежуточные точки, чтобы получить более подробную сетку. Ну люблю я все новое пробовать. #define Z_PROBE_END_SCRIPT "G1 X-32 Y-9\nG1 Z10" // Эта команда возвращает экструдер, после калибровки уровня стола, в близкое к первоначальным координатам и поднимает его на 10мм по оси Z. Можно не трогать эту строчку, тогда движение экструдера, при начале печати, будет начинаться в дальнем правом углу. С того места где остановился экструдер после калибровки. #define Z_SAFE_HOMING // после этой настройки хоуминг оси Z будет происходить после хоуминга осей Х,Y и в центре стола. Это нужно, что бы зонд находился над столом в момент хоуминга оси Z; #define INDIVIDUAL_AXIS_HOMING_MENU //Моя любимая настройка, позволяющая отправлять отдельно оси домой. Hide Первая часть марлизонского балета окончена. Это необходимые настройки для правильной работы автоуровня. После прошивки принтера - приступаем к его настройке. Отправляем все оси домой. Последней хоумится ось Z и по окончании поднимает экструдер на 10мм оставляя его в середине стола. Через управление принтером в слайсере опускаем Z к столу на 10мм, потом по миллиметру, потом по 0,1мм и регулируем первый слой бумажным листом. После регулировки на табло принтера мы увидим отрицательное число оси Z. В моем случае "Z-3.6" От этого значения отнимаем 0.1мм - толщину листа А4 и получаем Z -0,37. Это значение и будет нашим OFFSET-ом оси Z Можно внести его через кнопки принтера или командой M851 Z-3.7 и сохраняем это значение в памяти принтера командой М500 или кнопками принтера через меню. Так же можно это значение вписать в конфигурационный файл #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.7 и прошить прошивку еще раз. Теперь настал черед подправить стартовый скрипт в слайсере. Ниже мой пример: Start script M140 S[bed0_temperature] ; Прогрев стола без ожидания M109 S[extruder0_temperature] ; прогрев экструдера с ожиданием G90 ; установитm абсолютное позиционирование G21 ;установить метрическую систему M82 ;установить экструдер в абсолютный режим M117 Auto home now G28 ; захоумить все оси M117 Autobedleveling... G29 ; запустить автоматическое выравнивание M117 Moving up on 5 mm... G1 Z5 E-2 F3000 ; поднять сопло 5 мм и втянуть филамент(ретракт) на 2мм G90 ; установитm абсолютное позиционирование M117 Preheat now... M116 ; ожидание прогрева всех нагревателей(экструдер и стол) M190 S[bed0_temperature] ; ожидать прогрев стола M117 Start G92 E0 ;обнулить значение пути экструдера G1 F200 E5 ;подать в экструдер 5мм филамента. Hide Можно обойтись и просто командами G28 и G29, но я уже привык когда мне принтер еще и на экране что-то пишет...;) Еще в слайсере Simplify3D, в разделе Post Processing в поле Additional terminal commandsfor post processing дописал такой скрипт: {REPLACE "; layer" "M117 Layer"} {REPLACE " Z = " " Z="} Теперь в последней строчке на экране, во время печати, принтер пишет какой слой печатается и какая текущая высота слоя. Равномерной всем экструзии!!!
  4. Я смог победить эту функцию только со второго раза, поделюсь с Вами. В версиях Marlin 1.1.9 и bagfix-2.0.x - используется Linear Advance v 1.5. Это ссылка на оригинальную статью. Если активировать эту функцию, то придется подправить все свои стартовые скрипты в слайсере и провести тестовые печати всеми используемыми пластиками. Так как коэфициент поправки для разных пластиков будет разным, а еще нужно иметь правильно отстроенную высоту печати первого слоя! Если все еще интересно заморочиться с этим - тогда идем дальше! Для активации этой функции открываем Configuration_adv.h и раскоментируем и меняем значение переменной К: #define LIN_ADVANCE #define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed Второй строчкой мы принудительно отключаем эту функцию, до момента ее активации в стартовом скрипте командой М900 Кх.хх В версии 1.5 значения записываются через десятичную дробь. Теперь открываем конфигуратор настройки тестовой печати В конфигураторе заполняем поля своими данными относительно принтера, скорости, пластика и т.д. Я рекомендую обратить особое внимание на следующие пункты: 1. В секции Speed - желательно установить значение с которыми Вы печатаете, не меняем только Jerk!; 2. В секции Pattern нам нужно будет пару раз менять значения, для выявления оптимального диапазона коэфициента: Lin Advance Version: 1.5 Starting Value for K и Ending Value for K для первого старта оставляем как есть K-factor Stepping 0.1 - захватим больший диапазон печатаемых значений Slow Speed Length и Fast Speed Length можно оставить как есть, а можно увеличить на 20мм каждое. Test Line Spacing - дистанция между тестовыми линиями. Если значение будет большим и все тестовые линии не поместятся в границы печатного поля - генератор укажет желтым цветом на ошибочные данные. Print Anchor Frame желательно отметить. По краям тестовых линий напечатается рамка при старте теста, это позволит продавить пластик и приступить к тестовой печати линий, как говорится с полным соплом 3. Нажимаем кнопку генерировать код, скачиваем его и скармливаем принтеру. По окончании теста Вы получаете набор линий приблизительно такого формата. Только линии будет с разной конфигурацией, второй скрин 4. Теперь выбираем диапазон значений в котором линия пропечаталась наиболее однородно. К примеру у меня получилось более менее однородными значения 0,1 и 0,2 Дальше линия после быстой фазы печати прерывалась и образовывалось пустое поле. Вы это поймете когда проведете первый тест. 5. Теперь возвращаемся в п.2 и изменяем значения: Starting Value for K - 0.1 Ending Value for K - 0.2 K-factor Stepping 0.01 Опять генерируем, скачиваем, скармливаем и повторяем п.3 Теперь Вы четко увидите диапазон, а может и "одну единственную", ту самую, линию. Записываете ее значение в стартовом коде. В моем случае этот коэффициент был 0.14 Соответственно в стартовом коде, в конце, пишем М900 К0.14 Если хочется напечатать что-то без функции Linear Advance, то нужно обязательно в конце скрипта прописать М900 К0 - Нулевое значение отключает коррекцию давления пластика в сопле. Теперь эту процедуру необходимо провести со всеми используемыми пластиками. Есть моменты когда нужно эту коррекцию использовать только в некоторых местах модели, к примеру только по периметру, тут нас выручит Post Processing в Simplify3D. Изменяя значения в скрипте пост процессинга, мы можем включать или отключать или изменять значение коэффициента при разных видах печати. Ниже привожу пример скрипта - там все понятно и без комментариев. {REPLACE "perimeter\nG" "perimeter\nM900 K0.14\nG"} {REPLACE "; solid layer\n" "; solid layer\nM900 K0\n"} {REPLACE "fill\n" "fill\nM900 K0\n"} {REPLACE "; skirt\n" "; skirt\nM900 K0\n"} {REPLACE "; bridge\n" "; bridge\nM900 K0\n"} Еще раз обращаю внимание на запись коэффициента в Linear Advance v 1.5 - запись через десятичную дробь !!! Таким образом при печати периметра включается функция Linear Advance с коэффициентом 0.14, а при печати нижних слоев, заполнения, брима, мостов - функция отключена. Так же во время печати можно подкрутить этот коэффициент прямо через ЖК дисплей. Качественного заполнения и ровных углов Вам в моделях!
  5. Каждому 3D печатнику не хватает возможностей меню своего принтера. Мысли о добавлении своих пунктов в меню посещают всех, кто прошёл стадию "печать калибровочного кубика". В Marlin есть возможность добавить свои пункты (кнопки) с привязанными к ним действиями. (речь идёт о Marlin 2.0, я не знаю корректность работы в прошивках 1.х.х) В файле Configuration_adv.h, ближе к концу, есть блок отвечающий за "пользовательское меню, меню пользователя". //#define CUSTOM_USER_MENUS Для активации нужно раскоментировать этот дефайн и заполнить пять пунктов "своего" меню. #define USER_DESC_1 "название пункта 1" #define USER_GCODE_1 "действие 1(G код)" #define USER_DESC_2 "название пункта 2" #define USER_GCODE_2 "действие 2(G код)" #define USER_DESC_3 "название пункта 3" #define USER_GCODE_3 "действие 3(G код)" #define USER_DESC_4 "название пункта 4" #define USER_GCODE_4 "действие 4(G код)" #define USER_DESC_5 "название пункта 5" #define USER_GCODE_5 "действие 5(G код)" Названия латинскими буквами в кавычках, действие: исполняемый G код, или последовательность G кода в кавычках. Если пять пунктов меню вам не нужно, неиспользуемые пункты достаточно закомментировать. В меню принтера появится новый подпункт, в котором содержатся ваши пользовательские пункты меню. Название этого нового пункта задаётся строкой #define CUSTOM_USER_MENU_TITLE "название" Латинскими буквами, в кавычках. Скорее всего эта информация вам известна и вы активно пользуетесь CUSTOM_USER_MENUS. Но в нём возможно задать всего пять пунктов, часто этого мало. Увеличить количество пунктов пользовательского меню несложно. (рекомендуется сделать резервные копии подвергающихся ковырянию файлов) Нужно добавить строки (пример увеличения CUSTOM_USER_MENUS до десяти пунктов) файл ...\Marlin\Configuration_adv.h #define CUSTOM_USER_MENUS #if ENABLED(CUSTOM_USER_MENUS) #define CUSTOM_USER_MENU_TITLE "Commands" //#define USER_SCRIPT_DONE "M117 User Script Done" //#define USER_SCRIPT_AUDIBLE_FEEDBACK //#define USER_SCRIPT_RETURN // Return to status screen after a script #define USER_DESC_1 "KALIBROVKA STOLA" #define USER_GCODE_1 "G29 P1\nG29 P3" #define USER_DESC_2 "SETKA STOLA" #define USER_GCODE_2 "G29 T" #define USER_DESC_3 "ZAPOMNIT' SETKU1" #define USER_GCODE_3 "G29 S1" #define USER_DESC_4 "PROCHEST' SETKU1" #define USER_GCODE_4 "G29 L1" #define USER_DESC_5 "ZAPOMNIT' SETKU2" #define USER_GCODE_5 "G29 S2" #define USER_DESC_6 "PROCHEST' SETKU2" #define USER_GCODE_6 "G29 L1" #define USER_DESC_7 "VVOD PLASTIK" #define USER_GCODE_7 "G92 E0\nG1 E650 F6000\nG92 E0\nG1 E50 F180\nG92 E0" #define USER_DESC_8 "UBRAT' PLASTIK" #define USER_GCODE_8 "G92 E0\nG1 E-700 F6000\nG92 E0" //#define USER_DESC_9 "9" //#define USER_GCODE_9 "G0" //#define USER_DESC_10 "10" //#define USER_GCODE_10 "G0" #endif Начиная с шестого пункта - добавлено. файл ...\Marlin\src\lcd\menu\menu_custom.cpp #if defined(USER_DESC_1) && defined(USER_GCODE_1) void lcd_user_gcode_1() { _lcd_user_gcode(PSTR(USER_GCODE_1 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_2) && defined(USER_GCODE_2) void lcd_user_gcode_2() { _lcd_user_gcode(PSTR(USER_GCODE_2 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_3) && defined(USER_GCODE_3) void lcd_user_gcode_3() { _lcd_user_gcode(PSTR(USER_GCODE_3 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_4) && defined(USER_GCODE_4) void lcd_user_gcode_4() { _lcd_user_gcode(PSTR(USER_GCODE_4 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_5) && defined(USER_GCODE_5) void lcd_user_gcode_5() { _lcd_user_gcode(PSTR(USER_GCODE_5 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_6) && defined(USER_GCODE_6) void lcd_user_gcode_6() { _lcd_user_gcode(PSTR(USER_GCODE_6 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_7) && defined(USER_GCODE_7) void lcd_user_gcode_7() { _lcd_user_gcode(PSTR(USER_GCODE_7 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_8) && defined(USER_GCODE_8) void lcd_user_gcode_8() { _lcd_user_gcode(PSTR(USER_GCODE_8 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_9) && defined(USER_GCODE_9) void lcd_user_gcode_9() { _lcd_user_gcode(PSTR(USER_GCODE_9 _DONE_SCRIPT)); } #endif #if defined(USER_DESC_10) && defined(USER_GCODE_10) void lcd_user_gcode_10() { _lcd_user_gcode(PSTR(USER_GCODE_10 _DONE_SCRIPT)); } #endif void menu_user() { START_MENU(); MENU_BACK(MSG_MAIN); #if defined(USER_DESC_1) && defined(USER_GCODE_1) MENU_ITEM(function, USER_DESC_1, lcd_user_gcode_1); #endif #if defined(USER_DESC_2) && defined(USER_GCODE_2) MENU_ITEM(function, USER_DESC_2, lcd_user_gcode_2); #endif #if defined(USER_DESC_3) && defined(USER_GCODE_3) MENU_ITEM(function, USER_DESC_3, lcd_user_gcode_3); #endif #if defined(USER_DESC_4) && defined(USER_GCODE_4) MENU_ITEM(function, USER_DESC_4, lcd_user_gcode_4); #endif #if defined(USER_DESC_5) && defined(USER_GCODE_5) MENU_ITEM(function, USER_DESC_5, lcd_user_gcode_5); #endif #if defined(USER_DESC_6) && defined(USER_GCODE_6) MENU_ITEM(function, USER_DESC_6, lcd_user_gcode_6); #endif #if defined(USER_DESC_7) && defined(USER_GCODE_7) MENU_ITEM(function, USER_DESC_7, lcd_user_gcode_7); #endif #if defined(USER_DESC_8) && defined(USER_GCODE_8) MENU_ITEM(function, USER_DESC_8, lcd_user_gcode_8); #endif #if defined(USER_DESC_9) && defined(USER_GCODE_9) MENU_ITEM(function, USER_DESC_9, lcd_user_gcode_9); #endif #if defined(USER_DESC_10) && defined(USER_GCODE_10) MENU_ITEM(function, USER_DESC_10, lcd_user_gcode_10); #endif END_MENU(); } #endif // HAS_LCD_MENU && CUSTOM_USER_MENUS В двух группах, начиная с шестого пункта- добавлено. файл ...\Marlin\src\inc\SanityCheck.h #if ENABLED(CUSTOM_USER_MENUS) #ifdef USER_GCODE_1 constexpr char _chr1 = USER_GCODE_1[strlen(USER_GCODE_1) - 1]; static_assert(_chr1 != '\n' && _chr1 != '\r', "USER_GCODE_1 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_2 constexpr char _chr2 = USER_GCODE_2[strlen(USER_GCODE_2) - 1]; static_assert(_chr2 != '\n' && _chr2 != '\r', "USER_GCODE_2 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_3 constexpr char _chr3 = USER_GCODE_3[strlen(USER_GCODE_3) - 1]; static_assert(_chr3 != '\n' && _chr3 != '\r', "USER_GCODE_3 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_4 constexpr char _chr4 = USER_GCODE_4[strlen(USER_GCODE_4) - 1]; static_assert(_chr4 != '\n' && _chr4 != '\r', "USER_GCODE_4 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_5 constexpr char _chr5 = USER_GCODE_5[strlen(USER_GCODE_5) - 1]; static_assert(_chr5 != '\n' && _chr5 != '\r', "USER_GCODE_5 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_6 constexpr char _chr6 = USER_GCODE_6[strlen(USER_GCODE_6) - 1]; static_assert(_chr6 != '\n' && _chr6 != '\r', "USER_GCODE_6 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_7 constexpr char _chr7 = USER_GCODE_7[strlen(USER_GCODE_7) - 1]; static_assert(_chr7 != '\n' && _chr7 != '\r', "USER_GCODE_7 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_8 constexpr char _chr8 = USER_GCODE_8[strlen(USER_GCODE_8) - 1]; static_assert(_chr8 != '\n' && _chr8 != '\r', "USER_GCODE_8 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_9 constexpr char _chr9 = USER_GCODE_9[strlen(USER_GCODE_9) - 1]; static_assert(_chr9 != '\n' && _chr9 != '\r', "USER_GCODE_9 cannot have a newline at the end. Please remove it."); #endif #ifdef USER_GCODE_10 constexpr char _chr10 = USER_GCODE_10[strlen(USER_GCODE_10) - 1]; static_assert(_chr10 != '\n' && _chr10 != '\r', "USER_GCODE_10 cannot have a newline at the end. Please remove it."); #endif #endif Начиная с шестого пункта - добавлено. Как сказал уважаемый KomAndr Облегчи себе жизнь!
  6. Очень коротенькая заметка по настройке Offset_Z. Изначально в прошивке установлен запрет движений осей за программные пределы области печати - #define MIN_SOFTWARE_ENDSTOP_Z /это касается оси Z. Тогда встает вопрос как настроить отрицательный офсет? Есть два решения: Закоментировать эту строку в прошивке; Использовать специальную команду М211 Первый вариант я расписывал в статьях про установку зондов, а теперь распишу второй вариант. Нам понадобится любой слайсер с командной строкой. Для настройки я пользуюсь Pronterface. Вы спросите почему, да просто этой программе все равно в каком регистре Вы вносите команды приведенные ниже. Итак: Конектимся к принтеру и нагреваем сопло и стол до рабочей температуры. У меня 230о/107о ; M851 Z0 - устанавливаем нулевое значение для оси Z, сбрасывая ранее установленный offset; G28 - Отправляем все оси в дом. По завершении сопло останется в центре стола и будет поднято на 10мм, т.е. на ЖК экране будет написано Z 10; G0 X110 Y110 F6000 - Перемещаем сопло в центр стола, на то место где зонд производил замер(эта команда для стола 220х220); М211 S0 - этой командой мы отключаем программные ограничения для всех осей. О чем будет написано в окне монитора программы; При помощи программы опускаем сопло сначала на 10мм потом с меньшим шагом и добиваемся что бы листок бумаги А4, с небольшим усилием, проходил между рабочей поверхности стола и соплом. Смотрим на экран принтера на значение Z , к примеру там написано"Z-2,2" Добавляем еще толщину листа бумаги 0.1мм - и получаем число "-2,3" Это и есть Offset_Z; M851 Z-2.3 - записываем найденное значение в прошивку; M500 - сохраняем значение в EEPROM ; M211 S1 - включаем программное ограничение движения осей. Вот и все хитрости, но нужно помнить, что если сделать сброс EEPROM или загрузку дефолтных значений - то настройка offset_Z будет сброшена на значения которые стояли в прошивке. По этому лучше вносить изменения в Conigeration.h и прошить еще раз Marlin в принтер. П.С. так же есть плагина для OctoPrint с возможностью настройки и назначения команд на кнопки управления - Стабильный Offset всем Вам!
  7. Как всем известно - температурные показания в 3D принтерах больше фиктивные чем реальные. Некоторые проверяют пирометром, некоторые термопарой и запоминают разницу. Мне надоело пользоваться попугаями и я решился на ковыряние прошивки, а в частности правке thermistor_x.h В основном при покупке в Китае, продавцы не указывают модель термистора установленного в экструдере или силиконовой грелке. Давиче, купив термистор HT-NTC100K вообще не нашел его температурную таблицу и от продавцы добиться внятного отвера не получилось, ушел в несознанку и молчание! Перепробовав множество вариантов в прошивке, остановился на термисторе №5, разница в показаниях - 20С 5 : 100K thermistor - ATC Semitec 104GT-2/104NT-4-R025H42G (Used in ParCan & J-Head) (4.7k pullup) И так, прикрутил термопару к кубику хотенда на каптон. Прогрел хотенд до рабочей температуры 230С и сравнил показания. Как видно - разница в 23С. Тоже самое сделал потом со столом Такая же разница в 22С. Теперь самое интересное. Помним, что в прошивке указаны типы термисторов hotend & BED - 5 Открываем в прошивке Configuration.h и выставляем хотенду 6, столу 7. #define TEMP_SENSOR_0 6 . . . #define TEMP_SENSOR_BED 7 Теперь по пути \Marlin\src\module\thermistor делаем копии оригинальных файлов Открываем текстовым редактором, я пользуюсь Notepad++, оригинальный файл thermistor_5.h и копируем массив данных: Открываем первый редактируемый файл thetmistor_6.h и копируем в него данные вместо существующих в нем. Можно полностью заменить содержимое файла thetmistor_6.h на содержимое thetmistor_5.h, но нужно изменить ссылку на номер таблицы Теперь логика изменения для хотенда. Нас интересуют значения таблицы в диапазоне от 160 до 250С. Для более тугоплавких пластиков лучше использовать термопару, это отдельная тема для разговора, но вернемся к нашим значениям. При комнатной температуре 20_25С термистор должен иметь сопротивление около 100кОм. Первый столбец в массиве - это значения термистора в омах или значения компаратора, нам это не важно, видно что при комнатной температуре значение термистора будет 986 каких-то едениц Второй столбец - температура соответствующая этим значениям. Ниже на скрине видно откуда я начал изменения во втором столбце массива данных, изменяя температуру на 20С, а выше уменьшил шаг. Для наглядности сделал сравнение в экселе и покрасил Исправленный массив с данными const short temptable_6[][2] PROGMEM = { { OV( 1), 713 }, { OV( 17), 300 }, // top rating 300C { OV( 20), 295 }, { OV( 23), 290 }, { OV( 27), 285 }, { OV( 31), 280 }, { OV( 37), 270 }, { OV( 43), 260 }, { OV( 51), 250 }, { OV( 61), 240 }, { OV( 73), 230 }, { OV( 87), 220 }, { OV( 106), 210 }, { OV( 128), 200 }, { OV( 155), 190 }, { OV( 189), 180 }, { OV( 230), 170 }, { OV( 278), 160 }, { OV( 336), 150 }, { OV( 402), 140 }, { OV( 476), 130 }, { OV( 554), 120 }, { OV( 635), 110 }, { OV( 713), 100 }, { OV( 784), 90 }, { OV( 846), 80 }, { OV( 897), 50 }, { OV( 937), 40 }, { OV( 966), 30 }, { OV( 986), 20 }, { OV(1000), 10 }, { OV(1010), 0 } }; Hide По такому же принципу меняем значения в файле thermistor_7.h но диапазон берем от 30С и до 130С Здесь нас интересует температура при 40, 60, 70, 100, 120 градусах. Не буду томить описаниями - под спойлером мои значения, сравнить с оригиналом можете самостоятельно. BED thermistor_7.h const short temptable_7[][2] PROGMEM = { { OV( 1), 713 }, { OV( 17), 300 }, // top rating 300C { OV( 20), 290 }, { OV( 23), 280 }, { OV( 27), 270 }, { OV( 31), 260 }, { OV( 37), 250 }, { OV( 43), 240 }, { OV( 51), 230 }, { OV( 61), 220 }, { OV( 73), 210 }, { OV( 87), 195 }, { OV( 106), 185 }, { OV( 128), 170 }, { OV( 155), 165 }, { OV( 189), 150 }, { OV( 230), 140 }, { OV( 278), 130 }, { OV( 336), 120 }, { OV( 402), 100 }, { OV( 476), 90 }, { OV( 554), 80 }, { OV( 635), 70 }, { OV( 713), 60 }, { OV( 784), 55 }, { OV( 846), 50 }, { OV( 897), 45 }, { OV( 937), 40 }, { OV( 966), 30 }, { OV( 986), 20 }, { OV(1000), 10 }, { OV(1010), 0 } // to allow internal 0 degrees C }; Hide Как видно по результатам, температура на зеркале соответствует реальной. Салфетка выступает в роли напечатанной детали на поверхности стола. Фотографию хотенда не делал, там результат такой же. Но есть и нюанс, а именно с показаниями термистора на столе. На данном принтере стоит силиконовая грелка мощностью 200Вт. Напряжение стандартного БП поднято до 14в. Размер стола 230х330мм 3мм алюминия АМГ-6. и зеркало 200х300. При стоковых настройках Thermal Protection в файле Configuration_adv.h - Вы будете получать ошибку Thermal Raneway Так как для достижений новых температурных значений потребуется гораздо больше времени. Из этой ситуации есть три выхода: Заменить силиконовый нагреватель на более мощный 12в 300Вт и более или 220в 500-600Вт, с заменой мосфета на твердотельное реле; Заменить БП на 24в, понизить диапазон шим регулирования мощности стола, заменить нагреватель хотенда и все вентиляторы на 24 вольтовые; Загрубить значения температурного сторожа #define WATCH_BED_TEMP_PERIOD в файле Configuration_adv.h Стол с указанными параметрами и "обвесом" нагревается до, честных, 100С за 18мин. Так, что если хочется быстрого "нагреться" и печатать - нужно принимать меры!!! Правильных, Вам, температур на табло принтера!
  8. Захотелось использовать все возможности ТМС2130, а для этого нужно драйвера подключить к материнке по SPI. В Китае продается как минимум три модификации этих драйверов.Я взял самую дешевую версию, не подготовленную для подключения по SPI, v1.0 2шт для осей XY. Оси Z и экструдер и так нормально вертятся на DRV8825 Полез изучать тему установки и настройки драйверов по SPI . Инфы много уже появилось, но все же попытаюсь ужать все в одной статье. 1. Нужно подготовить драйвера, немного поработать паяльничком. Снимаем синюю колодочку, поддев ее лезвием ножа и выпаиваем ножки контактов NC, SDO, CS, SCK, SDI. Переворачиваем драйвер и припаиваем их сверху. Контакт NC оставляем свободным. Оставшуюся ножку припаиваем к левому нижнему контакту, ближнему к подстроечному резистору, как на фото ниже. Это нужно для использования функции StallGuard2 в качестве концевиков HOME. 2. С обратной стороны необходимо изменить конфигурацию перемычек, для включения функции управления драйверами по SPI. На фото - крестом помечено место где нужно снять перемычку, а кругами перемычки которые нужно поставить Кто не хочет заниматься пайкой может сразу купить ТМС2130 v1.1 Эта модель уже идет с установленными перемычками и перепаянными контактами. 3. Подключение драйверов по SPI я выбрал параллельно картридеру и модернизировал LCD adapter. (В прошивке Marlin можно назначить свободные пины RAMPSa на программное выполнение функций разъема SPI.) Смотрим распиновку RAMPS и находим контакты MOSI, MISO, SCK Они находятся на разъеме AUX-3 По аналогии с драйверами, снимаем на адаптере пластиковую колодку и выпаиваем вилки-контакты. Копаемся в закромах и находим переходник к материнской плате для подключения дополнительных USB портов. Вынимаем из синего переходника 3-и контакта, выпаиваем из адаптера указанные выше контакты и меняем их на новые, удлиненные. Надеваем обратно пластиковую колодку и у нас есть модифицированный LCD Adapter с возможностью подключения еще и драйверов ТМС2130. 4. Собираем соединительный шлейф, Тут отмеряем нужную длину проводников и обжимаем в Dupont. Схема соединения ниже. Единственное контакты CS Я подключил в другое место, об этом чуть ниже. 5. Контакт "концевика", на фото обведен красным кружком, каждого установленного драйвера оси соединяем с контактом концевика MIN на RAMPS. Часть с пайкой завершена, теперь приступаем к изменению программы. Как всегда нам понадобится проводить изменения в двух основных файлах прошивки. С Гитхаба качаем последний релиз 1.1.9 или 2.0, кому что нравится, и открываем и вносим изменения в Configuration_adv.h Я привожу правки относительно крайней версии bagfix-2.0.x 1. Находим // @section tmc и выставляем предустановки тока для драйверов, в моем случаи XY. Шаговые моторы 4401 на 1.7А #define X_MAX_CURRENT 1200 // in mA #define Y_MAX_CURRENT 1200 1.1 Еще раз вспомним как правильно вычислить ток для драйверов серии ТМС2ххх Расшифруем понятия относительно шагового двигателя NEMA17 4401: Imax - Максимальный ток на фазу. 1.7А Irms - Среднеквадратичное значение(Root Mean Square) тока на фазу. Irms = Imax / 1.41 Irms = 1.2A Vref - Вольтаж на пине Vref 1.77 - Максимальный среднеквадратичный ток двигателя Irms который может "переварить" драйвер. Для ТМС2ххх, по некоторым данным эта цифра 1,2А Ну а теперь немного математики: Irms = (Vref * 1.77A) / 2.5V = Vref * 0.71 Vref = (Irms * 2.5V) / 1.77A = Irms * 1.41 = Imax Vref = Imax Как ни странно, но Vref = Imax - вот такие пироги. Но нам нужен не Vref, а ток на драйвере. К этому вопросу мы вернемся в конце статьи, когда скомпилируем прошивку и запустим принтер. 2. Раскоментируем две строки в которых выставляем номера пинов к которым подключаем контакты CS установленных TMC2130. #define X_CS_PIN 65 #define Y_CS_PIN 66 Как писал выше, я выбрал два крайних пина в разъеме AUX-2. Так как остальные свободные планирую использовать для управления отдельными вентиляторами. 3. Для включения тихого режима раскоментируем необходимые строки #define STEALTHCHOP_XY 4. Активируем мониторинг драйверов #define MONITOR_DRIVER_STATUS 5. Активируем гибридный режим. С ним прошивка сама будет менять режимы работы шаговиков с тихого на усиленный #define HYBRID_THRESHOLD 6. Активируем режим StallGuard2 который будет работать вместо концевиков Xmin и Ymin #define SENSORLESS_HOMING // TMC2130 only 7. Строки отвечают за чувствительность режима StallGuard2. Чем меньше цыфра тем чувствительнее стобатывание. Я остановился на 7 #define X_STALL_SENSITIVITY 7 #define Y_STALL_SENSITIVITY 7 8. Активируем режим отладки для драйверов #define TMC_DEBUG 9. Открываем Configuration.h и ищем Stepper Drivers. Здесь указываем на каких ося какие драйвера ставятся. #define X_DRIVER_TYPE TMC2130 #define Y_DRIVER_TYPE TMC2130 #define Z_DRIVER_TYPE DRV8825 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 #define E0_DRIVER_TYPE DRV8825 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988 //#define E5_DRIVER_TYPE A4988 10. В секции // Enable pullup for all endstops to prevent a floating state включаем подтягивание для концевиков вместо которых установлен режим SENSORLESS_HOMING #define ENDSTOPPULLUPS #if DISABLED(ENDSTOPPULLUPS) // Disable ENDSTOPPULLUPS to set pullups individually //#define ENDSTOPPULLUP_XMAX //#define ENDSTOPPULLUP_YMAX //#define ENDSTOPPULLUP_ZMAX #define ENDSTOPPULLUP_XMIN #define ENDSTOPPULLUP_YMIN //#define ENDSTOPPULLUP_ZMIN //#define ENDSTOPPULLUP_ZMIN_PROBE #endif 11. Инвертируем направление вращения шаговиков на которых установлены драйвера ТМС 2130 // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR true #define INVERT_Y_DIR true #define INVERT_Z_DIR false Компилируем прошивку и заливаем ее в Мегу 2560 После включения принтера в терминале команд, в самом конце Вы увидите состояние подключенных драйверов. В принципе это все основные настройки. Дальше можно смотреть и менять режимы работы драйверов из терминал, используя перечень команд: M906 - Установите или получите ток двигателя в миллиамперах, используя коды осей X, Y, Z, E. Сообщите значения, если не указаны коды осей. M911 - Сообщить о состоянии предварительного предупреждения о перегреве шагового привода. M912 - Сбросить флаг состояния предупреждения о перегреве шагового привода. M122 - Сообщить о параметрах драйвера (Требуется TMC_DEBUG) Более детально с этими командами можно ознакомиться в Marlin G-code "Подгонка" тока на драйверах: В терминальном окне набираем команду M122 и внимательно рассматриваем полученные данные о состоянии наших драйверов ТМС2130. Помним, что шаговики у нас NEMA17 4401 с Imax = 1.7A Как видно из полученных данных о состоянии драйверов: Imax = 1636mA - что очень близко к Imax наших моторов; Irms = 1160mA - близко к 1.2А как я писал выше - максимальный RMS для ТМС2130. I = 1200mA - это значение мы прописывали в прошивке для осей XY (#define X_MAX_CURRENT 1200 // in mA) Путем подбора Set current и ответа драйверов на команду M122 можно подобрать значения которые удовлетворят Ваши желания и возможности мотора. Подобранные значения тока можно внести в прошивку и перепрошить принтер еще раз или через команду М906 установить в EEPROM. Вариант с изменением значений в прошивке наиболее предпочтительный!!! Удовольствия Вам от использования TMC2130!!!
  9. Всем известная история. Купив что-то новое ищем возможность улучшайзинга этого нового, пока не упремся в стену! Я столкнулся с проблемой регулировки, а в частности: откручивания, в процессе печати, барашек регулировки стола, кривизной акриловой рамы принтера, кривизной стола. Начитавшись информации решился на первую прошивку и тут понеслось!!! Стол прикрутил наглухо через капроновые втулки, которые остались в комплекте от предыдущего хозяина агрегата(принтер у меня б/у Пока транспортная компания везла датчик уровня LJ18A3-8-Z/BX я настроил ручную автокалибровку уровня стола. Ниже будет описание что и как необходимо сделать для активации работы ручной калибровки стола. Правим Configuration.h который вместе с Configuration_adv.h берем из папки Marlin\example_configurations\Anet\A8\ и копируем в корень папки Marlin Заменяя имеющиеся файлы. Раскоментируем (убираем в файле два слеша //) : #define PROBE_MANUALLY - Активируется ручная калибровка стола; #define MESH_BED_LEVELING - Указывается каким методом будет происходить процесс калибровки; #define LCD_BED_LEVELING - Включается подпункт меню ручной калибровки в меню настроек принтера через кнопки управления возле экрана; #define INDIVIDUAL_AXIS_HOMING_MENU - Позволяем хоумить(отправлять домой) отдельно каждую ось. #define EEPROM_SETTINGS - активация команд M500 и M501 в терминале управления принтером. Это необходимо и достаточно для ручной калибровки уровня стола. Так же рекомендую откалибровать PID экструдера и стола. Казалось бы это и все, но не тут-то было! Еще нужно правильно произвести калибровку и поправить стартовый скрипт в слайсере. Приступаем: Как и в мануале выставляем по линейке ось Х, левый и правый края - относительно крышек крепления ШД(Шагового Двигателя) оси Z или калибром нижний вал относительно левого и правого края стола; Прогреваем стол и экструдер до рабочей температуры; Регулируем высоту экструдера штатным концевиком оси Z по листку бумаги. Выставив экструдер в центр стола и отправляя ось Z домой. Можно отправлять команду через кнопки управления или через любой слайсер и команду G28 Z0; Через меню принтера или командой G28 отправляем все оси домой; Через меню принтера или командой G29 начинаем калибровку стола. Калибровка проходит по 9-ти точкам стола с возможностью подъема или опускания сопла экструдера с шагом 0,025 кнопками вверх и вниз, соответственно, на самом принтере. Не забываем про лист бумаги как калибр. По окончании калибровки выбираем на принтере Storage EEPROM или вводим в терминале команду М500 Таким образом сохранится созданная сетка координат в памяти принтера и будет храниться даже после выключения принтера. Пока сами не сделаете инициализацию памяти через меню принтера. Теперь переходим к стартовому скрипту: Starting script: M190 S[bed0_temperature] ; Bed wait M109 S[extruder0_temperature] ; Extruder (wait) G90 ; set absolute coordinates G21 ;metric values M82 ;set extruder to absolute mode G28 ;отправляем домой все оси G29 S0 ;загрузить из EEPROM сетку калибровки сохраненную в п6. M420 S1 Z5 ;активировать работу автоуровня при печати, Z5 - высота с мм с которой отключается автовыравнивание! G91 G1 E5 F300 ;выдавить 5мм прутка перед печатью G90 G92 E0 Скрипт можно править под себя, главное оставить, или вставить в свой скрипт, строки с командами G28, G29, M420 с параметрами как написано выше! Вот теперь печать пойдет с учетом созданной, вручную, сетки уровня стола. Эта сетка будет применяться к каждому слою печати, что будет видно по слегка вращающимся муфтам оси Z. Это и есть компенсация неровностей стола. Всем ровных периметров и плоскостей!!!
  10. Дождался я доставки датчика автоуровня или зонд или как его там, в общем первый был такой LJ18A3-8-Z/BX В общем пробовал и емкостной и индукционные датчики. В принципе к ним можно привыкнуть, но на постоянной основе, в качестве автоуровня стола, я бы не рекомендовал. Уж больно они капризные, одному стекло не преграда, второму пыль на столе как забор перед мотоциклистом и он начинает срабатывать. В статье ниже будет настройка Marlin под эти датчики.
  11. После удачной прошивки можно настраивать "плюшки". Пока ехал из Китая емкостной датчик уровня я освоил ручной автоуровень стола на прошивке Marlin с чем и делюсь в статье
  12. Все описанное ниже подразумевает, что пользователь имеет понятие про драйвера, хоть немного знаком с Arduino и умеет пользоваться онлайн переводчиком или знает английский язык... Скачиваем последнюю прошивку Marlin , на момент написания актуальная версия 1.1.9 Разархивируем ее в удобное место и переходим в папку \Marlin\example_configurations\Anet\A8 и копируем от туда два конфигурационных файла Configuration.h и Configuration_adv.h. Это и есть "сердце" настроек прошивки. В разных моделях принтеров используются разные драйверы шаговых двигателей, кинематика, расположение "дома" экструдера и т.д. Если внимательно просмотреть папку \Marlin\example_configurations\ увидим названия всевозможных принтеров которые поддерживает Marlin и в каждой по два конфигурационных файла с настройками под конкретный принтер. Вставляем скопированные файлы в корень прошивки \Marlin\ на предупреждение о том, что такие файлы уже существуют - смело выбираем "Вставить с заменой" Запускаем среду программирования Arduino, можно просто в корне прошивки запустить файл Marlin.ino Скачиваем дополнительную библиотеку под материнку Anet anet-board-master, разархивируем и папку hardware копируем с обьединением в корень папки где установлена среда Arduino. Для 64 битных систем - C:\Program Files (x86)\Arduino\ В программе выбираем порт по которому подключена материнка, выбираем из меню плат Anet V1.0 В меню "Скетч" выбираем Проверить/Компилировать или нажать иконку птички в кружочке Если все прошло успешно, должно появиться сообщение похожее на Скетч использует 124586 байт (98%) памяти устройства. Всего доступно 126976 байт. Глобальные переменные используют 4583 байт динамической памяти. Теперь закрываем все другие программы которые используют подключение к принтеру и в меню "Скетч" выбираем Загрузить или жмем на иконку стрелочки в кружке. По окончании прошивки принтер перезагрузится, на экране проскочит приветствие с версией Marlin и откроется стандартное окно программы. Собственно вот и все телодвижения по прошивке Marlin в стоковую плату Anet. В конфигурационных файлах уже прописаны все параметры под Prusa подобные принтеры и можно начинать печатать, как и раньше пройдя процедуру выравнивания стола и т.д. В следующих статьях я поделюсь опытом по подключению и настройке Marlin для всевозможных зондов автовыравнивания стола. Крепкого всем конекта с принтером
×