Marlin 1.1.9: недоворот сервопривода для переключения сопел
Сделал 'качалку' для переключения экструдеров с использованием сервопривода MG90S.
По расчетам качалка должна переключаться на первый экструдер при угле поворота 180 градусов, а на второй - при угле 0.
Соответственно, забил в Configuration.h следующее:[CODE]#define SWITCHING_NOZZLE_SERVO_ANGLES { 180, 0 } // Angles for E0, E1[/CODE]При работе наблюдается 'недоворот' сервопривода до заданного угла. То же самое происходит и при ручной подаче команды, например,[CODE]M280 P0 S180[/CODE]Однако, если послать ту же самую команду повторно (т.е., два раза подряд те же самые 'M280 P0 S180'), то сервопривод доворачивает качалку до нужного положения (по факту - до механического упора).
В-общем, нужно как-то заставить принтер при смене экструдера выполнять команду два раза подряд.
Я нашел в Main.cpp следующий код:[CODE]#if ENABLED(SWITCHING_NOZZLE)
inline void move_nozzle_servo(const uint8_t e) {
const int16_t angles[2] = SWITCHING_NOZZLE_SERVO_ANGLES;
planner.synchronize();
MOVE_SERVO(SWITCHING_NOZZLE_SERVO_NR, angles[e]);
safe_delay(500);
}
#endif[/CODE]Просьба подсказать, как дописать код, чтобы нужная мне команда выполнялась два раза подряд.
По расчетам качалка должна переключаться на первый экструдер при угле поворота 180 градусов, а на второй - при угле 0.
Соответственно, забил в Configuration.h следующее:[CODE]#define SWITCHING_NOZZLE_SERVO_ANGLES { 180, 0 } // Angles for E0, E1[/CODE]При работе наблюдается 'недоворот' сервопривода до заданного угла. То же самое происходит и при ручной подаче команды, например,[CODE]M280 P0 S180[/CODE]Однако, если послать ту же самую команду повторно (т.е., два раза подряд те же самые 'M280 P0 S180'), то сервопривод доворачивает качалку до нужного положения (по факту - до механического упора).
В-общем, нужно как-то заставить принтер при смене экструдера выполнять команду два раза подряд.
Я нашел в Main.cpp следующий код:[CODE]#if ENABLED(SWITCHING_NOZZLE)
inline void move_nozzle_servo(const uint8_t e) {
const int16_t angles[2] = SWITCHING_NOZZLE_SERVO_ANGLES;
planner.synchronize();
MOVE_SERVO(SWITCHING_NOZZLE_SERVO_NR, angles[e]);
safe_delay(500);
}
#endif[/CODE]Просьба подсказать, как дописать код, чтобы нужная мне команда выполнялась два раза подряд.
Популярные вопросы
Зачем народ сушит филамент?:-)
Собственно, вопрос в заголовке. Мой опыт: 8! лет 3d печати. НИКАКИХ проблем - никогда.
Всякие "пузырьки-плохая адгезия-непрочна...
Всякие "пузырьки-плохая адгезия-непрочна...
Принтер не держит температуру
Добрый день.
Подскажите пожалуйста, как решить проблему. У меня Anycubic Mega S. Есть необходимость печати на 280 градусах, прин...
Подскажите пожалуйста, как решить проблему. У меня Anycubic Mega S. Есть необходимость печати на 280 градусах, прин...
Программа для 3D проектирования
Понимаю, что тема 100500 раз обсуждалась, но не удалось нигде найти обобщающей информации, в основном все в одной куче советуется.
Пр...
Пр...
Комментарии и вопросы
Спасибо, сам не ожидал, вышло....
Проблему носовых упоров решает...
Межзрачковое расстояние точно....
Здравствуйте! При печати высок...
Вопрос - Будет ли нормально ра...
У меня принтер с магнитным стр...
Добрый день! Подскажите почему...