KingRoon KP3 - устранение "жужжания" на пониженных токах, плата MKS Robin mini.
Сначала небольшое предисловие.
Я уже рассказывал, что давным давно пересел со стоковой прошивки на марлин, сейчас у меня установлен последний на данный момент стабильный марлин 2.0.5.3. В настройках принтера я убавил токи на моторы, что позволило снизить температуру шаговых двигателей. Изначально они были весьма горячие, понижение же токов до 500-600 позволило снизить эту температуру с "очень горячих" до "теплых" (померять нечем, все на ощупь). Побочным и очень неприятным эффектом такого действия стало то, что двигатели при работе на таких токах начали издавать очень неприятный свист, связано это с тем, что регулировка токов тут реализовано через ШИМ (он же PWM - процесс управления мощностью методом пульсирующего включения и выключения прибора. подробнее можно почитать например тут: Широтно-импульсная модуляция )
Я в принципе давно смирился с этим свистом, тем более что установленные у нас п плате драйвера А4988 шумят гораздо сильнее, но многим людям это не нравилось. И вот совсем недавно в комментах под одной из моих статей тут на 3д тудей отписался человек с ником Batlapin. который предложил реально работающее решение устранения свиста двигателей, при чем не снижения шума, а именно устранения.
Инструкция по устранению "жужжания"
Оригинальный коммент можно прочитать тут: Устранение жужжания двигателей
Собственно этот коммент и послужил поводом для написания данной статьи с целью, чтобы как можно больше людей узнали об этой програмной доработке. Итак, чтобы не бегать по ссылкам вот инструкция, как убрать то самое жужжание (привожу в исходном виде с небольшими поправками:
По порядку (везде указано, в какой файл и какой строкой что добавить, верно для Марлина 2.0.5):
1) Частоту какого таймера планируем повышать:
\Marlin\src\HAL\STM32F1\timers.h
строка 72 , ДОБАВИТЬ
#define PWM_TIMER_NUM 3
строка 105 , ДОБАВИТЬ
#define PWM_TIMER_DEV TIMER_DEV(PWM_TIMER_NUM)
2) Изменение частоты таймера (запихнул перед инициализацией PWM Vref двигателей)
\Marlin\src\module\stepper.cpp
строка 2766, ДОБАВИТЬ
timer_pause( PWM_TIMER_DEV );
timer_set_count( PWM_TIMER_DEV , 0);
timer_set_reload( PWM_TIMER_DEV , 0x0FFF);
timer_generate_update( PWM_TIMER_DEV );
timer_resume( PWM_TIMER_DEV );
3) Грузить PWM для этого таймера не как для всех
\Marlin\src\HAL\STM32F1\HAL.cpp
строка 388, МЕНЯТЬ описание функции analogWrite:
if ( PWM_PIN(pin) ) {
uint16_t uT=((uint16_t)pwm_val8)*257;
if ( PIN_MAP[pin].timer_device == PWM_TIMER_DEV ) uT>>=4;
pinMode(pin,PWM);
pwmWrite(pin,uT);
}
4) Ну и чтобы задаваемый ток точнее соответствовал реальному (не обязательно)
\Marlin\src\pins\stm32f1\pins_MKS_ROBIN_MINI.h
строка 144, ПРАВИТЬ
#define MOTOR_CURRENT_PWM_RANGE 1420
Всё, не жужжит, совсем, частота PWM теперь 8.8кГц вместо 550Гц.
И, если планируете делать то же самое под другую плату, не забывайте, что на одном с Vref двигателей таймере там может висеть что-то еще, чему повышение частоты помешает (у мини на нем еще вентилятор, но ему это тоже на пользу).
Неприятный побочный эффект с вентилятором
Итак, свиста нет. Радости не было предела пока не выяснилось, что вентилятор охлаждения, подключенный в разъем fan, не работает. Либо запускается не с 0% а с 20-40%, что совсем не хорошо.
Не буду утомлять подробностями, сразу предложу решения данной проблемы.
1. На контакты вентилятора припаивается конденсатор на 10 мкф (16-20 В). Один из пользователей нашего телеграмм канала (@nehilo011) это проверил, с его слов вентилятор стартует нормально и даже вроде как работает плавнее и тише. Он же пошел дальше и поставил вместо конденсатора LC фильтр (ферритовое кольцо с намоткой), с его слов такое решение даже лучше конденсатора;
2. Софтовый метод. Один из пользователей нашего телеграмм канала (@moonglow) натолкнул меня на софтовое решение средствами самого марлина. Я сам его пробовал в процессе экспериментов с кодом, но словил ошибку марлина и решил, что данное решение не поддерживается данной платой, как оказалось позже поддерживаетя еще и как, а ошибка была вызвана чем то другим.
Итак, идем в Configuration_adv.h находим и расскомментируем параметр:
#define FAN_SOFT_PWM
Изменяем параметр с 0 на 3 или 4:
#define SOFT_PWM_SCALE 3
Если кратко, то мы изменили частоту PWM на вентилятор, что позволило ему нормально стартовать. Сильно задирать этот параметр не стоит, т.к. это напрямую влияет на ступени регулировки скорости вентилятора, 3-4 как по мне оптимально. Значение 4, например, означает, что шаг регулировки оборотов равен 12,5%.
Так же раскомментируем параметр:
#define FAN_KICKSTART_TIME 100
Он позволяет вентилятору бодрее стартовать на низких оборотах, кратковременно включая его на 100% на 100 мсек.
Провел несколько тестов на многочасовых печатях, все работает отлично, двигатели теплые но не горячие, не шумят, не свистят, вентилятор работает исправно и даже немного тише чем раньше.
От меня лично и от пользователей нашего принтера, которые уже опробовали это изменение, хочется еще раз выразить огромную благодарность Batlapin за эти доработки.
Наш телеграмм канал: https://t.me/kingroonkp3_chat
Еще больше интересных статей
Еще один способ разгрузить ось Z мотора.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
SL_ST U FEEDER (Питатель для SMD)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
MMRU (Multi Material Russian Upgrade) (Часть 6: Анонс новой механики)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
это походу, тумба - англичане....
А вы поменяли в итоге блок?Уже...
Я больше с вами не общаюсь.
Сопло 0,8. Прошивка Марлин Rob...
Здравствуйте. Вопрос к специал...
добрый день.принтер "tevo blac...
Здравствуйте, разбирали печатн...