Кремень FMZ Реклама
Kremen FMHM Реклама

KingRoon KP3 - устранение "жужжания" на пониженных токах, плата MKS Robin mini.

Malderin
Идет загрузка
Загрузка
06.07.2020
2469
2
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

3

Сначала небольшое предисловие.

Я уже рассказывал, что давным давно пересел со стоковой прошивки на марлин, сейчас у меня установлен последний на данный момент стабильный марлин 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

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

3
Комментарии к статье