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
    • Правила и рекомендации
    • Questions and answers in English
    • Работа форума
    • Новости
    • Заявки на доступ к закрытым ресурсам
  • Library
    • Загальнотехнічні питання
    • Електроніка
    • Матеріали для друку і обробки
  • Technical issues
    • Материнские платы
    • Прошивки
    • Механика
    • Экструдеры
    • Столы нагревательные
    • Discussion of 3D printers
    • Корисна електроніка
  • Software
    • OctoPrint
    • Klipper
    • Cura 3D
    • Simplify 3D
    • SOLIDWORKS
    • Repetier-Host
    • MatterControl - 3D
    • Pronterface
    • CraftWare
    • KISSlicer
    • IdeaMaker
    • Revision section Octoscreen&Octoprint
  • Our workshops
    • Новичкам. Задай вопрос - получи ответ
    • 3D принтер своими руками
    • Пластики
    • Our interesting products
    • Позор БАРЫГАМ
    • Links to useful resources
  • Smoking room
    • Давайте знакомится
  • Flea market
    • Правила раздела
    • Продам
    • Подарю/Обменяю
    • Пропоную роботу

Product Groups

There are no results to display.

Blogs

  • Anet A8.
  • Інженерія та 3д принтери
  • Ярко о 3D
  • EvA Mark II
  • Мой новый принтер
  • Принтер Беркут 3D
  • Новый проект под ласковым именем EVA. :)
  • Цікаво про Raspberry Pi
  • TwoTrees Sapphire S

Categories

  • Files
  • Firmware
  • 3D Моделі

Categories

  • 3D printing services
  • 3D изделия
  • 3д принтери
  • Printer accessories

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


Telegram

Found 14 results

  1. Уважаемые коллеги, может кто поможет, подскажет. Имею самосборный кит H-Bot (Sprinter 232) , ramps 1.4 + Mega 2560. На осях обычные nema 17 + драйверы A4988 Все работало нормально, только шумновато. Захотелось тишины. Заказал 5 шт. TMC2209. Вот такие: https://wiki.fysetc.com/Silent2209/ Они, типа, v.3, уже распаян разъем TX/RX под UART и резистор 1 кОм на ногу TX интегрирован в плату. Т.е., вроде бы для управления по UART уже ничего не надо не припаивать ни замыкать, ни откусывать. Соединил двумя проводками с ramps, настроил прошивку и в путь. Специально под них поставил последнего Marlina – 2.0.5.3, т.к. если я правильно понял, поддержка 2209 более менее официально имеется только с 2 версии (до этого стояла 1.1.9.1) Получил драйверы, вытащил 4998, пока с осей XY, удалил перемычку MS3 под каждым (MS1, MS2 оставил), воткнул 2209 (потенциометром в сторолу разъема питания RAMPS). Померил Vref – 1,25 Соединил двумя проводами RX драйвера с пином 63 ramps и TX с пином 40, как стоит по умолчанию в Marlin. Настроил Marlin, пока для одной оси X: Configuration.h #define X_DRIVER_TYPE TMC2209 Pins_RAMPS.h // #define X_HARDWARE_SERIAL Serial1 #define X_SERIAL_TX_PIN 40 #define X_SERIAL_RX_PIN 63 Подключил библиотеку TMCStepper (v.0.6.2) Вроде, для проверки соединения по UART, этого достаточно. Компилирую, загружаю и… Не видит прошивка драйвера, хоть ты тресни! “TMC connection error” и все. Как standalone работает нормально, на команды перемещения откликается, каретка по оси Х ездит как положено. Но я то покупал специально с UART для возможности возможность контроля из прошивки. Экспериментировал с настройками по всякому: пробовал режим #define X_HARDWARE_SERIAL Serial1 , (подключал к пинам 18 и 19 - hardware serial port 1 на Arduino). Даже пробовал задавать параметр #define SERIAL_PORT_2 (правда, так и не понял, имеет ли он отношение к конфигурированию UART). Все это в разных комбинациях и сочетаниях. Нашел на форумах, что в режиме UART, перемычки под драйвером задают не шаги, а адрес порта, Попробовал задавать параметр #define X_SLAVE_ADDRESS Все бесполезно ☹ Перерыл кучу форумов, в т.ч. Marlin и Fysetc, пересмотрел кучу видеороликов Такая проблема часто встречается, но все обсуждения и гайды относятся в основном к разным версиям плата MKS и SKR. Или, для драйверов 2208. Они, вроде как похожи с 2209, но, видимо, не полностью совпадают. Описание установки и настройки комбинации mega+ramps+marlin+2209 вообще нигде не нашел, ни на форумах, ни в роликах В общем, пока застопорился. Может кто устанавливал подобную связку, или может помочь советом. Буду благодарен за любые подсказки, куда еще копать? С уважением, Дмитрий
  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 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 2.0.х уже не нужно определить область замера. // 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 Компилируем прошивку и проверяем на отсутствие ошибок. Если есть - проверяем по указанной методе значение ошибочной позиции. После каждой перепрошивки ОБЯЗАТЕЛЬНО сбрасывать EEPROM командами М502 и М500 или делать инициализацию через меню принтера!!!! Все прописано, прошивка залита в принтер и все должно работать. Включаем принтер, а зонд в непонятке и уходит в защиту. Постоянно моргает красным!Не все так просто как оказалось. Зонд нужно еще настроить! Зонд устроен так, что при подаче на него питания он дважды опускает и поднимает щуп. Если все нормально, щуп не затирает и нигде не упирается - зонд переходит в рабочее состояние с втянутым щупом и постоянным свечением светодиода. Если ему, что-то не нравится - он уходит в защиту постоянно моргая светодиодом. Порядок настройки зонда: Поднимаем сопло выше уровня стола на 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 у середовищі Platformio. Маємо материнку SKR v1.3 та драйвера TMC2130 SPI підготовлені для керувння по SPI. Як зробити з звичайних ТМС2130 драйвері керовані по SPI можно почитати за посиланням Є бажання ще керувати освітленням принтера, вентиляторами обдуву хотенду, та обдуву материнської плати. На RAMPS все це можливо реалізувати, там і логіка на 5в і вільних пінів з можливістю керування ШИМ - вістачає, а наш пацієнт не має такої кількості вільних пінів, та й же логіка на 3.3в, але... Все написане нижче є особистим досвідом який я збирав на різних сайтах і форумах. Все об'єднав і використав на своєї материнці, про що і Вам разкажу. Підготовка плати - за мануалом встановлюємо перемички для ТМС2130 SPI, за бажанням можно використати програмний кінцевик для вісі ХУ, в статті буде описано це. 1. Завантажуємо свіжий білд Marlin-bagfix 2. Відкриваємо platformio.ini та міняємо назву плати - default_envs = LPC1768 3. Відкриваємо Configuration.h та міняємо значення як написано нижче: #define SERIAL_PORT -1 #define SERIAL_PORT_2 0 #define BAUDRATE 115200 #define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3 4. Як що є бажання використовувати програмний кінцевик SENSORLESS_HOMING: //#define ENDSTOPPULLUPS #define ENDSTOPPULLUP_XMIN #define ENDSTOPPULLUP_YMIN #define X_MIN_ENDSTOP_INVERTING true #define Y_MIN_ENDSTOP_INVERTING true 5. Повертаємось до подальших налаштувань: #define X_DRIVER_TYPE TMC2130 #define Y_DRIVER_TYPE TMC2130 #define Z_DRIVER_TYPE TMC2130 #define E0_DRIVER_TYPE TMC2130 #define INVERT_X_DIR true #define INVERT_Y_DIR true #define INVERT_Z_DIR true #define INVERT_E0_DIR false - якщо екструдер Тітан, або інший редукторний - інакше ставимо true #define EEPROM_SETTINGS Також налаштовуєте свої параметри мікрошагів, дісплей, та інше під свій принтер. 6. Як що є бажання программно керувати яскравістю освітлення принтера, за допомогою світлодіодних стрічок, та керувати вентиляторами - треба зробити зміни у файлі \Marlin\src\pins\lpc1768\pins_BIGTREE_SKR_V1.3.h #define Y_MAX_PIN P1_26 //#define E0_AUTO_FAN_PIN -1 #define Z_MAX_PIN P1_24 //#define USE_CONTROLLER_FAN #if HOTENDS == 0 #define FAN1_PIN P2_04 //CASE_LIGHT_PIN //#define HEATER_1_PIN P2_04 Відкриваємо Configuration_adv.h та продовжуємо налаштовувати прошивку. Управління вентиляторами #define USE_CONTROLLER_FAN #define CONTROLLER_FAN_PIN P1_24 //сигнальний пін Z_MAX керує ввімкненням вентилятору #define CONTROLLERFAN_SECS 2 // вимкнути вентилятор обдуву материнки, після вимкнення крокових двигунів, через 2сек. #define CONTROLLERFAN_SPEED 190 // встановлюється швидкість обертання вентилятору. 255 - максимальні оберти. #define E0_AUTO_FAN_PIN P1_26 //сигнальний пін Y_MAX керує ввімкненням вентилятору обдуву хотенду при нагріві до 50С #define EXTRUDER_AUTO_FAN_SPEED 200 // 255 == full speed 2. Управління світлодіодною стрічкою. Під'єднується до контактів плати FAN1 #define CASE_LIGHT_ENABLE #define CASE_LIGHT_PIN P2_04 #define CASE_LIGHT_DEFAULT_BRIGHTNESS 10 //інтенсивність освітлення. 255 - максимальна потужність. #define CASE_LIGHT_MENU // можливість керувати підсвіткою з дісплею принтера 3. Налаштування програмних кінцевиків ХУ #define X_HOME_BUMP_MM 0 #define Y_HOME_BUMP_MM 0 #define SENSORLESS_HOMING // StallGuard capable drivers only #define X_STALL_SENSITIVITY 3 #define Y_STALL_SENSITIVITY 3 //чутливість спрацьовування. Регулюється від -64 до 63 для ТМС2130!!!! 4. Налаштування драйверів ТМС2130. Vref драйверів ТМС дорівнює максимальному току встановлених двигунів. Бажано встановити 80% від максимального току. #define X_CURRENT 1300 // (mA) RMS current. Multiply by 1.414 for peak current. #define Y_CURRENT 1300 #define Z_CURRENT 1300 #define E0_CURRENT 1300 // для моїх двигунів Н4401 з током 1.7А #define TMC_USE_SW_SPI #define MONITOR_DRIVER_STATUS #define TMC_DEBUG 5. Як що є бажання використовувати функцію LIN_ADVANCE #define LIN_ADVANCE #define LIN_ADVANCE_K 0.0 //рекомендую встановити 0.0 а сам параметр прописувати у стартовому скипті командою М900 К х.хх #define MINIMUM_STEPPER_PULSE 2 // як що не вказати цей параметр - перестане працювати екструдер. Поширюється на драйвер екструдера ТМС2130. Доповнення УВАГА! У останніх версіях Марлін, на цій платі, не працюють параметри інтелектуального розширення точок заміру рівня столу. //#define EXTRAPOLATE_BEYOND_GRID //#define ABL_BILINEAR_SUBDIVISION Як що активувати хоча б одну з цих функцій, то після команди G29 принтер або перезагрузиться, або зупинеться на місці останнього вивірювання та збросить координати на нульові, та почне їхати за межи робочого поля вправо. Два тиждні ковиряв прошивку, поки не розшукав це! Як що є бажання встановити датчик закінчення філаменту, то його можно "прикрутити" на X_MAX_PIN P1_28 Так як на кінцевиках використовується 5в, то можно "прикрутити" ще й пристрій автоматичного налаштування діаметру філаменту, який зробив @Deniss Але я цього не робив! Управління вентиляторами я зробив за допомогою плати розширення для RAMP 1.4 Загалом це все що необхідно налаштувати для використання ТМС2130 SPI на цій платі. Режим HYBRID_THRESHOLD я навмисно не використовую, бо мотори починають голосно співати вже після 80мм/с і байдуже, що може бути зазначена швидкість переходу в цей режим 100мм/с, або більша. На разі, з такими налаштуваннями чутно клацання титану, при ретрактах, та вентилятор блоку живлення. Також НЕ рекомендую використовувати програмні кінцевики SENSORLESS_HOMING Краще встановити оптичні кінцевики! Бажаю всім тихого та якістьного друку з мозгами 32Біт!
  4. Все описанное ниже подразумевает, что пользователь имеет понятие про драйвера, хоть немного знаком с 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 для всевозможных зондов автовыравнивания стола. Крепкого всем конекта с принтером
  5. Как всегда, получив что-то рабочее хочется его усовершенствовать. Так и тут, я захотел управлять подсветкой Евы. 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 и можно подсветкой рулить удаленно.
  6. Все настройки приведены относительно стокового файла настроек, находящегося по пути 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="} Теперь в последней строчке на экране, во время печати, принтер пишет какой слой печатается и какая текущая высота слоя. Равномерной всем экструзии!!!
  7. Я смог победить эту функцию только со второго раза, поделюсь с Вами. В версиях 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, а при печати нижних слоев, заполнения, брима, мостов - функция отключена. Так же во время печати можно подкрутить этот коэффициент прямо через ЖК дисплей. Качественного заполнения и ровных углов Вам в моделях!
  8. Каждому 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 Облегчи себе жизнь!
  9. Очень коротенькая заметка по настройке 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 всем Вам!
  10. Как всем известно - температурные показания в 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мин. Так, что если хочется быстрого "нагреться" и печатать - нужно принимать меры!!! Правильных, Вам, температур на табло принтера!
  11. Захотелось использовать все возможности ТМС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!!!
  12. Всем известная история. Купив что-то новое ищем возможность улучшайзинга этого нового, пока не упремся в стену! Я столкнулся с проблемой регулировки, а в частности: откручивания, в процессе печати, барашек регулировки стола, кривизной акриловой рамы принтера, кривизной стола. Начитавшись информации решился на первую прошивку и тут понеслось!!! Стол прикрутил наглухо через капроновые втулки, которые остались в комплекте от предыдущего хозяина агрегата(принтер у меня б/у Пока транспортная компания везла датчик уровня 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. Это и есть компенсация неровностей стола. Всем ровных периметров и плоскостей!!!
  13. Дождался я доставки датчика автоуровня или зонд или как его там, в общем первый был такой LJ18A3-8-Z/BX В общем пробовал и емкостной и индукционные датчики. В принципе к ним можно привыкнуть, но на постоянной основе, в качестве автоуровня стола, я бы не рекомендовал. Уж больно они капризные, одному стекло не преграда, второму пыль на столе как забор перед мотоциклистом и он начинает срабатывать. В статье ниже будет настройка Marlin под эти датчики.
  14. После удачной прошивки можно настраивать "плюшки". Пока ехал из Китая емкостной датчик уровня я освоил ручной автоуровень стола на прошивке Marlin с чем и делюсь в статье
×