Как настроить Marlin для включения автоматических вентиляторов с двойным экструдером
Я успешно собрал свой заказной 3D-принтер и настроил Marlin для двух экструдеров и одного нагреваемого слоя. Вот фотография принтера.
Мой обогреваемый стол работает на линейной оси с шарикоподшипниками. Когда принтер работает около часа или около того, эти детали сильно нагреваются, и я боюсь, что пластиковые детали расплавятся, если я буду печатать дольше или при более высоких температурах. Поэтому я решил добавить вентиляторы под обогреваемым столом, чтобы они оставались прохладными.
Известная проблема при использовании двух экструдеров и нагретого слоя заключается в том, что используются все три выхода мощности D8, D9, D10 (в моей установке D8 принадлежит первому экструдеру, D9-слою, а D10 - второму экструдеру). Если вы хотите иметь вентиляторы с программным управлением, вам нужно использовать обходной путь. Я купил расширитель вентилятора RRD, который делает именно то, что мне нужно. Вы подключаете его к плате RAMPS 1.4 и получаете два новых выхода D6 и D11.
В настоящее время я настроил прошивку следующим образом:
#define E0_AUTO_FAN_PIN 11
#define E1_AUTO_FAN_PIN 6
Это автоматически включает вентилятор левого экструдера E0 когда его температура превышает 50 °C. То же самое касается и правого экструдера Е1. Вентиляторы подключаются к выходам расширителя вентилятора D6 и D11. Все это прекрасно работает.
Теперь, чтобы добавить вентиляторы к нагреваемому слою, я изменил прошивку так, чтобы D11 управлял обоими вентиляторами экструдера. Пока хотя бы один экструдер горячий, оба вентилятора работают. Для этого я подключил оба вентилятора экструдера параллельно к D11 и изменил прошивку следующим образом:
#define E0_AUTO_FAN_PIN 11
#define E1_AUTO_FAN_PIN 11
Эта часть прекрасно работает, и ее довольно легко достичь. Что я хотел бы сделать дальше, это подключить другой штырь, D6, к датчику температуры нагреваемого стола, чтобы вентиляторы под столом стали активными, когда стол находится при температуре 50 °C или более.
Я сделал несколько попыток обмануть прошивку, заставив ее поверить, что существует три хотенда, и зарегистрировал нагреваемый стол как Е2.
#define E2_AUTO_FAN_PIN 6
Я вручную определил датчик температуры стола для E2 и прокомментировал некоторые проверки здравомыслия и условные обозначения, чтобы включить некоторые части прошивки, управляющие автоматическими вентиляторами. В то время как я получаю код для компиляции, принтер обычно останавливается сразу после включения или как только экструдер или стол активируются. Сообщения об ошибках не очень полезны ("убит, пожалуйста, перезагрузите компьютер" и т. Д.).
Кто-нибудь знает хороший способ, как достичь моей цели? Любая помощь будет оценена по достоинству. Заранее спасибо.
@xoric, 👍10
1 ответ
Лучший ответ:
Попробовав много разных вещей, я обнаружил, что решение действительно простое и требует всего нескольких строк кода. Я отвечу на свой собственный вопрос в надежде, что это кому-то поможет.
Сначала я определил несколько констант. Чтобы сохранить свои собственные вещи как можно более отдельными, я создал новый файл, который назвал myconfig.h:
#define MY_BED_TEMP_THRESHOLD 50
#define MY_BED_AUTO_FAN_PIN 6
#define MY_BED_AUTO_FAN_SPEED 255
Константа штыря соответствует D6, который является зеленым маркированным выходом расширителя вентилятора RRD, к которому я подключил вентиляторы под своим столом.
Во-вторых, в файле temperature.cpp из прошивки Marlin я включил свой файл и добавил четыре строки кода:
#include "myconfig.h"
...
#if HAS_AUTO_FAN
void Temperature::checkExtruderAutoFans() {
...
HOTEND_LOOP() {
if (current_temperature[e] > EXTRUDER_AUTO_FAN_TEMPERATURE)
SBI(fanState, fanBit[e]);
}
// --- start of my code ----------
if (current_temperature_bed > MY_BED_TEMP_THRESHOLD)
digitalWrite(MY_BED_AUTO_FAN_PIN, MY_BED_AUTO_FAN_SPEED);
else
digitalWrite(MY_BED_AUTO_FAN_PIN, 0);
// --- end of my code ------------
...
#endif // HAS_AUTO_FAN
...
Теперь мои вентиляторы автоматически включаются, когда температура стола выше 50 °C, и выключаются снова после того, как стол остыл достаточно далеко.
- Управление большим количеством вентиляторов с помощью платы RAMPS
- Проблемы с настройкой двойного экструдера Prusa i3
- Перепрофилировать штифт(ы) экструдера для вентилятора охлаждения деталей?
- Настройка BLTouch с прошивкой Marlin
- Шаговый двигатель нагревается через некоторое время
- Эндстопы не будут срабатывать при использовании прошивки Marlin
- Драйверы TMC2208 - Микропереходы настроены неправильно
- Шаговые двигатели не работают при подключении к RAMPS 1.4