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]Просьба подсказать, как дописать код, чтобы нужная мне команда выполнялась два раза подряд.
Популярные вопросы
Есть идея ?
Здравствуйте товарищи рукоблу... рукодельники :)каждый год покупается для летнего периода москитная сетка на балконную дверь.Каждый год я ее клею по к...
Есть ли цельнометаллический биметалл термобарьер для CR-10?
Коллеги, менял кто на хотэндах CR-10 у Эндеров родной термобарьер под тефлон на цельнометаллический биметалл?
Я столкнулся с тем, что...
Я столкнулся с тем, что...
помогите выбрать 3Д принтер
нашел четыре недорогих принтера. по описанию только на АНЕТ А6 много инфы а вот на остольные н
почти нету! подскажите какой из переч...
почти нету! подскажите какой из переч...

Комментарии и вопросы
ну это гроубокс аналог. Но при...
Здравствуйте, возможно ли купи...
"Рабочая модель" и "учебное по...
Добрый день господа!Использую...
Народ, помогите найти родной ш...
Приветствую!Печатаю на anycubi...
Всем добрейшего :-)В своё врем...