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]Просьба подсказать, как дописать код, чтобы нужная мне команда выполнялась два раза подряд.
Популярные вопросы
При печати возникает не ровность зигзагом на принтере elegoo Neptune 3 pro
При печати начал появляться выпирающий узор в виде зигзага при этом на других сторонах все нормально
Печать введеться пластиком...
Печать введеться пластиком...
Помогите победить ABS/ASA пластик
Народ, помогите, настала крайняя мера, по которой мы вынуждены обратиться за помощью, потому что сами не справляемся. Мы хотим быть серьёзными специал...
Программа для 3D проектирования
Понимаю, что тема 100500 раз обсуждалась, но не удалось нигде найти обобщающей информации, в основном все в одной куче советуется.
Пр...
Пр...

Комментарии и вопросы
Вы их тех староверов кто дрыос...
Бабулаб это прекрасный пример....
до других я пытаюсь донести чт...
Всем привет! Встречаются модел...
Всех приветствую. Такая пробле...
Здравия всем желаю, что это та...
Всем добрый вечер, столкнулся...