Постройка D-bot или страх и ненависть своими руками. Часть 2 - разбираемся с прошивкой
Так как это первый опыт сборки прошивки, то и описание пойдет с позиции нуба с опытом мигания светодиодом на arduino за плечами. Поехали.
На самом деле в оригинальном проекте уже присутствует собранный Marlin, но использовать его без изменений было бы не спортивно да и не получится - у нас длиннее ось Х =). А раз и так и так придется ее редактировать, то и в сборке с нуля стоит разобраться. Все равно дальше большие планы - как минимум автоуровень на тензорезисторах и второй экструдер.
Marlin как основа выбран потому что для Anet A8 есть работающая сборка SkyNet3d, плюс если что-то будет непонятно, можно подглядывать в готовую прошивку. Еще есть официальный wiki и замечательнейшие статьи по заливке и настройке Marlin на русском языке.
Для D-bot с платой и дисплеем от А8 как основу прошивки берем SkyNet3d Firmware, для D-bot с ramps чистый Marlin последней стабильной версии.
Чтобы не путаться - если не подписано для какой платы именно действие, то значит нужно делать на любой. Если что-то различается, то будет отдельное указание платы.
Для платы/дисплея Anet A8:
Для корректной работы SkyNet3d Firmware лучше использовать Arduino IDE идущую в комплекте с прошивкой - она уже настроена и содержит нужные библиотеки.
Для ramps:
Выбираем нужную плату и процессор:
Инструменты -> Плата -> Arduino/Genuino Mega
Инструменты -> Процессор -> ATmega 2560
После этого запускаем проверку сборки проекта. Собрался - значит все сделали верно. Теперь можно
тип платы:
Anet A8:
оставляем как есть
#ifndef MOTHERBOARD
#define MOTHERBOARD 63 // 63 = Melzi
#endif
Ramps 1.4:
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_13_EFB // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
#endif
Кинематика:
#define COREXY
Термисторы:
Anet A8:
оставляем как есть
#define TEMP_SENSOR_0 501 // термистор экструдера 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 501 // термистор стола
Ramps 1.4:
#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 5
- Значения соответствий сопротивления/температуры хранятся в termistortables.h. На вскидку, больше хочется верить той таблице, что сделана для Anet A8 (по крайней мере у разработчика такие же китайские термисторы).
Но делать этого мы не будем и в одной из следующих статей соберем свою таблицу для термистора.
К примеру, плата была уверена что температура стола 105 градусов:
Калибровка PID экструдера:
Значения можно не менять. Лучше запустить автокалибровку PID, и уже полученные значения вписать вместо стандартных:
#define DEFAULT_Kp 20.37
#define DEFAULT_Ki 1.21
#define DEFAULT_Kd 85.47
калибровка запускается через gcode
M303 E0 C10 S250
где: E0 – хотэнд, C10 – количество попыток, S250 – температура.
По результатам в консоль прилетят рекомендуемые коэффициенты.
Управление столом:
Нагрев столов у нас запитан через автомобильное реле (о том как это сделать есть замечательная статья). Чтоб оно не превращалось в трещотку на все время печати, меняем алгоритм управления с PID на Bang-Bang:
комментируем строку (добавляем // в начале строки)
//#define PIDTEMPBED
и снимаем комментарий
#define BED_LIMIT_SWITCHING
- теперь стол издает щелчок раз в 2-3 минуты, вполне терпимо
Концевики:
для обоих принтеров комментируем эту конструкцию, т.к. у нас всть концевики в MAX позиции
//#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
// #define DISABLE_MAX_ENDSTOPS
//#endif
Указываем что у нас по оси Y концевик находится в MAX положении (иначе после поступления команды auto-home каретка поедет по Y в другую сторону от концевика).
// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1
Движения по осям:
Ускорения, скорости пока в процессе подбора. Актуальные значения смотрите на google drive для Anet A8 и на github для ramps.
Инверсии движения по осям у нас нет:
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
Задаем расстояние между минимумом и максимумом осей:
#define X_MAX_POS 300
#define X_MIN_POS 0
#define Y_MAX_POS 300
#define Y_MIN_POS 0
#define Z_MAX_POS 325
#define Z_MIN_POS 0
Количество шагов на 1 мм перемещения:
Здесь у нас есть сильные различия. Во-первых на плате Anet V1.0 впаяны драйверы A4988 на 1/16 микрошага, а на Ramps 1.4 стоят DRV8825 с 1/32. Этим объясняются различие в 2 раза значений для осей X, Y и экструдера. Во-вторых для оси Z значения еще больше разнятся - на принтере с платой Anet V1.0 стоят шпильки М8, на другом - М5. Количество шагов на 1 мм перемещения можно легко посчитать используя этот замечательный калькулятор или по формуле: [Кол-во шагов за оборот ШД (обычно 200)] * [количество микрошагов] / [шаг резьбы].
в общем виде команда выглядит так:
DEFAULT_AXIS_STEPS_PER_UNIT {Х, У, Z, Extruder}
Anet A8:
#define DEFAULT_AXIS_STEPS_PER_UNIT {100, 100, 200*16/1.25, 90}
Ramps 1.4 c DRV8825:
#define DEFAULT_AXIS_STEPS_PER_UNIT {200,200,8000.00,180} // default steps per unit for Ultimaker
Дисплей:
В прошивке SkyNet3d уже все настроено на работу с дисплеем от Anet A8, менять ничего не нужно.
Ramps 1.4:
по RepRap wiki дисплей был опознан как REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER, снимаем комментарий перед соответствующим define в прошивке:
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
не забываем при этом установить библиотеку u8glib в Arduio IDE.
Пытаемся собрать проект прошивки и ловим хорошо известную ошибку 'using typedef-name 'fpos_t' after 'struct''. Суть ее в следующем - в исходном тексте прошивки объявлен тип fpos_t, который уже используется Arduino IDE. Решение до банального просто - все всем проекте меняем fpos_t на кто-нибудь типа fpos_t1. Сделать это надо в файлах: SdBaseFile.cpp, SdBaseFile.h. После замены еще раз проверить проект, если еще где-то вылезет - тоже поменять.
В новых версиях прошивки эту проблему уже решили. Так что после выхода новой стабильной версии надобность в этом пункте отпадет.
После загрузки прошивки наткнулся на интересную особенность - энкодер работал в обратном направлении. Лечится это просто - в файле pins.h меняем местами выводы, которые отвечают за срабатывание энкодера:
#define BTN_EN1 33
#define BTN_EN2 31
Загружаем прошивку в принтер, немного ждем, много волнуемся... Работает!
Ссылки:
Anet A8:
конфигурационный файл для D-botоригинальная прошивка SkyNet3d для принтера Anet A8заменяем Configuration.h из оригинальной прошивки на представленный, заливаем в принтер с помощью Arduino IDE из комплекта - работает!
Marlin для D-bot RampsЧтобы скачать выбираем ветку d-bot_develнажимаем Clone or download -> Download zipзаливается в Arduino Mega с помощью Arduino IDE последней версии.
P.S. для Anet V1.0 возможно понадобится драйвер, брать тут.
Владельцам плат и дисплеев Anet A6 советую не отчаиваться, автор прошивки SkyNet3d уже ведет работы по сборке прошивки под ваши девайсы. Как он закончит, адаптировать эту прошивку под D-bot с высокой долей вероятности можно будет по этой инструкции с незначительными изменениями.
Планы на ближайшее будущее:
Распределитель питания, который позволит решить проблему коротких проводовНаведение порядка, спрятывание всех проводов, плат по гофрам/кабель-каналам и прочим защитным сооружениямПеревод Ramps на 5 Вольт питания, установка Orange Pi PC + Octoprint (с безопасным доступом через интернет по ssl сертификатам). Тестирования возможности контроля питанием ATX бп через ramps и многое многое другое.
Еще больше интересных статей
Изменения в следующей версии 3D-принтер PonyBot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
•Порт...
Скорость, температура и перевод RAMPS 1.5 на 24В
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Печать 4-мя сменными соплами в массы! Часть 1.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Работа над реализацией печа...
Комментарии и вопросы
А в чем плюс то того, что дель...
70-80% от номанала двигателя
10000 м/c^2, это нормальное ус...
Можно ли сделать 3d принтер за...
Всем доброго времени суток!&nb...
POWER_LOSS_RECOVERY (НЕ РАБОТА...
Здравия, други! Внезапно появи...