roboforum.ru

Технический форум по робототехнике.

Переделка шаговых двигателей в сервопривод (Closed-Loop)

Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 09 ноя 2020, 16:00

Пролог.
Печатал я давеча принт длинный, часов эдак на 60.
И какого же было мое расстройство когда на 80% печати получился у меня сдвиг слоев ...
(причин я так и не выяснил - может сопло зацепилось, может рельсу закусило - в термобоксе +80С, смазка быстро перестает работать и требуется периодическое ее освежение )
Решено - закупаю и прикручиваю модуль контроля за ШД работающий по принципу ClosedLoop.
Стоимость платок высока, но по факту полностью отбивается защитой от брака всего одной длинной по времени печати закладки.
Зашел на Али и прикупил вот таких платок BIGTREETECH S42B V1.1 (тип 2 - с дисплеем но без крутилки эндера)
Снимок экрана 2020-11-09 в 11.59.20.png

  • + локальные кнопки управления
  • + локальный LED дисплей
  • ++ энкодер TLE5012B (16bit)
  • ++ 2x A4950 H-Bridge (3.5A 40V)
  • + имеется выведенный Serial
  • + ~1300руб


Варианты на али есть еще такие:
Makerbase MKS SERVO42B
Модератор =Мур:Подробности есть вот тут forum107/topic18425.html
В целом не рекомендуется к использованю, хотя с последней версией прошивки можно уже как-то использовать, не забывая о приколе с током.
В меню ошибка, на самом деле настраивается ток удержания, а рабочий ток в 2 раза выше.
А так же о невозможности настраивать PID через меню, только перепрошивкой посредством припаивания проводов программатора к задней части платы

Снимок экрана 2020-11-09 в 12.42.40.png

  • + локальные кнопки управления
  • + локальный LED дисплей
  • - энкодер A1333LLETR-T (12bit)
  • +/- A4954 Dual H-Bridge (2A 40V)
  • ++ ~1190руб


и Clone Mechaduino 0.2

Снимок экрана 2020-11-09 в 12.42.22.png
Снимок экрана 2020-11-09 в 12.42.22.png (123.17 КиБ) Просмотров: 4118

  • - нет локальных кнопок управления
  • - нет локального LED дисплея
  • + энкодер AS5047D (14bit)
  • + встроенный microusb (serial ?)
  • +/- A4954 Dual H-Bridge (2A 40V)
  • + много ног GPIO
  • + имеется выведенный SPI
  • - ~1900руб

Почему я остановился именно на BIGTREETECH S42B V1.1 ? - сложно сказать, интуиция.
возможно повлияла вот эта фотка с радиатором на A4954
Снимок экрана 2020-11-09 в 12.43.25.png
Снимок экрана 2020-11-09 в 12.43.25.png (137.17 КиБ) Просмотров: 4130


Я пропущу повествование о заказе/доставке/ожидании - это отдельная тема

Итак - посылка приехала, все распаковано

Самое главное - заплатить "налог" детишкам в виде фирменной уточки, это помогает на некоторое время отвести внимание от своей персоны :)
Снимок экрана 2020-11-09 в 14.16.26.png


Пробуем собрать и .... эпик фейл : болты из комплекта не встают на "пацанский" высоко-моментный шаговик высотой 48мм по корпусу, просто не хватает длины.
Теряем время на закупку метизов "болт M3x50" - 4шт на мотор.
В принципе хватит и 45мм но такого типоразмера я быстро не нашел, поэтому просто подложил пару гаек для уменьшения глубины закручивания (с другой стороны по этой же резбе идут крепежные винты).

И получаем серву (на верхнем разъёме имеем колхоз для прошивки через ST-linkV2 черный-GND/белый-IO/серый-3.3V/фиолетовый-CLK и Serial коричневый-GND/красный-TX/оранжевый-RX)
photo_2020-11-09_11-46-06.jpg


Поначалу нам дополнительные проводки что на фото выше не потребуются.
Калибруем шаговик и ставим на принтер.

Упс... а у меня моторы 0.9 градусов и процедура калибровки проходит 200 шагов по часовой и столько же против, что составляет лишь половину оборота.
По умолчанию будет работать только на моторах 1.8 градуса на шаг.

Ну, мы простых путей не ищем.
-- тут я предполагаю что у читателя уже имеется опыт программирования STM микроконтроллеров и в частности работы с platformio --
клонируем исходный репозитарий,
https://github.com/bigtreetech/BIGTREETECH-S42B-V1.0
берем в руки напильник и начитаем творить.
Получился вот такой коммит:
https://github.com/setar/BIGTREETECH-S4 ... 1c3020dbd4

прошиваем в плату командой pio run -t upload

калибруем, и устанавливаем в принтер :Bravo:

делаем пробную печать и :ROFL: :cry:
море волнуется РАЗ
photo_2020-11-09_14-46-54.jpg

море волнуется ДВА
photo_2020-11-09_14-47-02.jpg


потом были ТРИ и ДЕСЯТЬ - нифига не радует.

... берем напильник и ... (ну вы поняли)
Нужно регулировать PID
По информации производетеля читаю шифровку, с указанием шестнадцатеричного которую нужно заслать в сериал порт чтобы поправить PID :o

Да ну нафиг - иду на гитхаб, смотрю форки, и вижу что люди уже поработали в этом направлении:
и меню переделано с убогогооднокнопочного с азбукой морзе на трехкнопочное и PID можно регулировать с платы управления,
да и по сериалу мониторить и менять параметры (мой вариант, чтобы не поднимать принтер на подъёмник с доступом снизу).
По крайней мере так задумывалось, но как обычно ...
... берем напильник и ... (ну вы поняли)

пришлось исправлять ошибки в этом форке ну и за одно переход на 0.9 градусов делать.
получился вот такой код https://github.com/setar/BIGTREETECH-S4 ... eg_stepper

ну и процесс калибровки и результат (верхняя часть)
photo_2020-11-09_14-47-07.jpg


Вот теперь я доволен :)

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

Myp » 09 ноя 2020, 18:57

setar писал(а):
Почему я остановился именно на BIGTREETECH S42B V1.1 ? - сложно сказать, интуиция.

Просто ты запомнил что я брал 42B от MKS и плевался))

я там про него тебе добавил синеньким, ато вдруг кто-то решит что они одинаково удобны
Если бы он уже с завод шёл нормальный, может и Ок, но отсутствие коммуникации с мотором по сериал порту меня расстроило настолько что я даже не стал пытаться его тюнить. У меня в принтере он встал бы так что руки ломать пришлось для управления.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 09 ноя 2020, 22:05

дык это - припаивай !
:) будет возможность рулить.
А про половину тока - тут такая же ошибка в дефолтной прошивке

Добавлено спустя 3 минуты 54 секунды:
в принципе мне нравится как сейчас, у меня "зашел" PID 150/5/500 в отличии от штатных 30/10/250
но есть задумка сделать автотюнинг PID, который зависит от активной массы и сопротивления механики и будет разным на каждом конкретном принтере.
алгоритм наверное можно взять из марлина, его части по калибровки PID от нагревателя.

Добавлено спустя 16 минут 1 секунду:
Кстати принтер стал реально быстрый, я поставил максимальные скорости по осям XY 300 , и ускорения 3000 при джерке 0.1
Двигаться он так мог и раньше, но больше 100 с ускорениями 1000 не гонял из за риска срыва шагов.
Из необычного - появился шум регулирования при нагрузке на каретку, которая в том числе проявляется в припаркованном на механические концевики состоянии.
Драйверы и моторы на максимальном токе 1600ма (тех что реальные, это почти максимум по двигателю) - холодные абсолютно !
и печать стала тише, основной звук теперь проявляется в вибрациях от корпуса и стола

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

Myp » 10 ноя 2020, 01:27

У моего во первых некуда припаиваться(имею в виду UART), разве что к ножкам процессора, во вторых функционал конфигурирования по уарту выкинут из прошивки, надо дописывать код.
Казалось бы чего уж проще, вывести 3 отверстия на плату под обычные 2.54 штырьки...
Максимум это через стлинк подключать и в режиме отладки прописывать свои переменные, но он нормально не работает в режиме отладки, надо отключать стлинк для проверки работы после прошивки.

Холодные моторы я думаю из за алгоритма, там же ток на обмотках пропорционален погрешности, если например ось едет равномерно по прямой, то погрешность малая и ток малый. Ток пиковый только при ускорениях.
Аналогично когда мотор стоит, ток может быть очень низкий и без риска срыва шага. По идее чем сложнее поверхность модели тем сильнее будут греться моторы
Плюс вероятно классическая решетка инфила будет меньше греть чем хитрый инфил из волнистых линий
В классическом драйвере амперы жрутся всегда пока мотор крутится.

Я зарепортил китайцу ошибку с током в меню, он прикинулся дурачком, пару ошибок исправили и про проект забыли походу..

Кстати, а что по звуку работы? Как оно звучит относительно тихих драйверов тринамиков?

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 10 ноя 2020, 08:48

звук очень сильно зависит от регулировок PID, от мягкого движения совсем тихого, до движения "как по песку".
в целом звук тихий, примерно как 8825 в режиме 1/32

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

Myp » 11 ноя 2020, 19:56

Там есть нога свободная чтобы культурно вывести на неё сигнал появления погрешности? Чтобы реализовать безсенсорную парковку.
На моём загорается диод если погрешность выше нормы.
Кстати неплохо бы в меню это добавить, чувствительность срабатывания индикатора перегрузки.
у моего синий светодиод загорается когда не удалось выставить заданное положение.

ЗЫ
опять же, почему так? красный диод загорается когда всё нормально, а синий диод - когда есть ошибка положения.
лично я бы сделал наоборот...

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 11 ноя 2020, 22:07

народ делает сенсорлесс
там целая гребенка контактов, используют для работы один из контактов программирования, а вход в режим программирования осуществляют после ресета ДО инициализации этого контакта как выхода
https://github.com/Quas7/BIGTREETECH-S4 ... f89d08610e
Код: Выделить всёРазвернуть
        // *************************************************************************************************************************************
        // sensorless homing feature via active low SWDIO pin (PA13) on S42B com-header
        //
        // Mind that connecting SWDIO to an endstop pin on the mainboard is a non-buffered direct connection to the STM32 controller on the S42B
        // Adjust the sensitivty for sensorless homing with #define sensorless_sensitivty
        // Generally, do not home too fast with this methode!
        //
        // Also note that the repurposing of the SWDIO Pin (PA13) as sensorless homing endstop output might break the on-the-fly SWD programming.
        // Pressing RES(ET) on the S42B once and retry programming normally works fine. The triggering of the sensorless homing sensitivty threshold kills the on-the-fly SWD interface!).
        // If it does not, you will have to hold the RES(ET) button manually until "hla_swd" is shown during openOCD programming.
        // Releasing RES directly at this point will start the normal programming. Holding RES too long will result in a timeout.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

sergey2x » 14 ноя 2020, 15:02

Вопрос.
Задаём перемещение на некоторое расстояние, при этом держим руками голову, отпускаем через некоторое время, что произойдет? Поедет в точку назначения? Таймауты какие-нибудь есть?

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

Myp » 14 ноя 2020, 15:35

У варианта от MKS работает так:
Пока держишь будет давать максимальный ток в обмотку, когда отпустишь - поедет, таймаута нет.
Так же нет буфера, то есть он не хранит историю движений, сигналы шагов сразу идут в формулу расчёта положения,
если пока держишь голову была команда +100, -50, +50 и -110
то когда начнёт поступать последняя команда -110, после -100 шага он перестанет сопротивляться и сменит направление попытавшись встать в положение -10.

Замечу что при значительной погрешности переходит в полношаговый режим пока не вернётся в нужное положение.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

sergey2x » 14 ноя 2020, 15:50

Т.е. сам считает позицию и на пару минут можно голову задержать и потом продолжиться печать с правильной позиции. Это хорошо.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 14 ноя 2020, 17:05

мне кажется видео - показательнее.


Добавлено спустя 1 минуту 14 секунд:
во время паузы задано программное перемещение +100мм по X

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

Myp » 14 ноя 2020, 18:33

sergey2x писал(а):Т.е. сам считает позицию и на пару минут можно голову задержать и потом продолжиться печать с правильной позиции. Это хорошо.

нет конечно, если ты голову отвёл, печать не прекращается, команды идут, пластик давится
пока ты держишь голову у тебя течёт сопля из экструдера, плюс по Z оси идёт движение.
За пару минут Z уедет далеко и печать уже не восстановится.

Разве что завести сигнал сдвига с мотора в контроллер, тогда при сдвиге головы печать будет вставать на паузу.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

sergey2x » 15 ноя 2020, 00:39

Myp писал(а):За пару минут Z уедет далеко и печать уже не восстановится.

Это понятно, я не настолько непонимающий :) Речь про координату на которой установлена серва.

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

sergey2x » 15 ноя 2020, 13:00

К мотору 6 проводов идет. Надо ещё два прокинуть, не хорошо...

Re: Переделка шаговых двигателей в сервопривод (Closed-Loop)

setar » 20 ноя 2020, 12:32

Печатать стало гораздо веселее, особенно большие коробки.
Две полукилограммовых катушки :)
Вложения
photo_2020-11-20_11-28-53.jpg
photo_2020-11-20_11-28-59.jpg


Rambler\'s Top100 Mail.ru counter