Продолжаем мучать маленького. В этот раз под «микроскопом» A4988 (или «что в имени тебе моём») (или «а о чем оно стучитъ»).

Поделиться:
— Пилите, Шура, пилите, они золотые.Золотой телёнокИтак, как оно должно работать – вроде разобрались вот здесь.

Стало понятно, что оно и должно-то работать так себе, а уж почему оно зачастую работает ещё хуже – попробуем разобраться в этот раз.
Продолжаем мучать маленького. В этот раз под «микроскопом» A4988 (или «что в имени тебе моём») (или «а о чем оно стучитъ»).

У меня есть плата Anet на Atmega1284 и 4-х A4988, и есть Atmega2560+RAMPS+A4988 модули (а также BluePill и прочие интересные штучки).

Возникло желание разобраться с Marlin, дабы запустить наконец-то скучающего великана-красавчика Delta (который давно уже используется, как каркас для коробок с вентиляторами и прочим барахлом), и оживить SCARA (первые попытки включения которого навели на мысли об Алоисе Альцгеймере). В очереди CoreXY.

В качестве рабочей кинематики для изучения использовать перебранный в алюминий AnetA6. Начальные шаги пройдены – обе платы (или плата и 3-х этажное детище Франкенштейна, сначала получившее DRV8825) переделаны под идентичные разъемы питания и периферии, Marlin собран под монстра, принтер получил свежие мозги и… Скажу кратко – дребезг такой, что отпустились крепежные винты М4. При этом Анет практически бесшумен (впрочем, пальцы для куклы, в виде цилиндриков диаметром мм 2-3, Анет мне так когда-то и не напечатал, выдавая миленькие коленвалы,и теперь я бонусом знаю, почему).

Наметил план действий.

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

Ограничился осью X, снял временные диаграммы шага с идентичным циклом движения у обоих контроллеров, обработал в Excel, чтобы увидеть разброс задержек между шагами, понял 2 момента:

1) У Анет разброс больше, но хаотичнее, т.е. нет явных пиков помимо основного;
2) У Марлина есть два пика, что может давать резонанс.

Начал разбираться, понял, что в обработчике прерывания таймера, управляющего драйверами шаговых двигателей, лучше чуть позже разрешать прерывания (иначе время от времени следующий шаг задерживается на время обработки АЦП, замеряющих температуру, и, соответственно, следующий шаг это наверстывает – те два пика). Поправил, собрал, пики почти ушли - не всегда выход из обработчика температуры успевает до момента шага, но с этим мало, что можно сделать, да и в дальнейшем стало понятно, что это не так важно.

Дребезг «вразнос» остался.

Затем надо понять, какие сигналы формирует драйвер, получая шаговые импульсы (об этом и была перая статья).

В результате пришло осознание роли TL Smoother в жизни DRV8825, стало понятно, что с дребезгом можно бороться, но также стало понятно, что A4988 не особо хуже детища TI (которое слегка разочаровало – впрочем, на него проще лепить смешные радиаторы без опасности закоротить что-то под ним), а в чём-то и очень даже лучше.

Поставил на монстра A4988 с перепаяными 10к-омными Rosc (чтобы честно сопоставить с Анет-бордой – ну, почти, ведь осталась разница в шунтах 100мОм на модулях против 110мОм у Анет), пересобрал Марлин и понял, что...

... дребезг всё равно есть (этим драйверам диодики тоже не помешают, хотя всё намного лучше).

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

Обратил внимание на разницу пикового тока в обмотках одного двигателя процентов в 10 при работе монстра. Это тоже может давать вибрации. Единственный способ влиять на работу каналов по отдельности – подбирать сопротивление токосъемного шунта, ведь именно напряжение с него усиливается и сравнивается компаратором с опорным.

Демонтировал на всех модулях шунты

скомплектовал из них пары с близкими параметрами (здесь они не попарно, а как были установлены)

... запаял обратно. Стало немножко легче, но… Анет работает тише.

Понял, что настало время «посмотреть» на сами опорные напряжения, с которыми компаратор и сравнивает сигнал обратной связи с шунта.

Как «померять» опорное напряжение определённого шага?
Идея проста – нужно как-то задавать ток через шунт внешним источником (конечно, отключив двигатель, чтобы ток через обмотки не мешал, да и вообще не время сейчас с мостом играться), и смотреть (в точках для подключения обмоток), при каком значении начинает работать PWM. Опорное напряжение = 8*ток*сопротивление_шунта (8 – коэффициент усиления сигнала обратной связи для A4988). Сделать тоже несложно – подал на шунт напряжение через 10ом от регулируемого БП, написал прошивку для пошагового управления драйвером с терминала – сидишь себе, шагаешь, крутишь ручку, регистрируешь порог. Попутно посмотрел форму напряжения в указанных точках (как ключи открываются-закрываются).

Вот, что намерялось (таблица и графики нормированного тока=опорного напряжения для двух каналов одного драйвера):

Что тут видно и на какие мысли это наводит:

1) Графики «кривые» - опорные напряжения не прецизионно соответствуют синусоиде требуемых углов (шагов) – на проблемные места указывают верхние стрелки.

2) Графики подобны, с одинаковыми проблемными местами, но уровни на соответствующих шагах – разные. Более того, в одном канале есть проблема, указанная нижними стрелками – на 1 шаге PWM работает даже при 0-м токе через шунт, что, скорее всего, говорит о смещении порогового уровня компаратора.

Строим график соответствия опорных напряжений обоих каналов со смещением на 90 градусов:

О! График практически линейный, но – да, есть смещение на 0.092 по одному каналу.

Т.е. генератор опорных напряжений, скорее всего, один на оба канала (раз верхние проблемные места подобны, и второй график линейный с минимальными отклонениями, вполне списываемыми на погрешность измерения). И генератор не точен. И (что хуже всего) напряжение на входе одного из компараторов смещено относительно 0.

Если построить график зависимости «требуемый угол поворота»-«отклонение угла поворота вектора тока от нормы» для данного драйвера, картинка будет такой:

Работа идеального драйвера была бы отражена графиком со значением «0» везде.

При попытке шагать данный драйвер будет заставлять двигатель то улетать на шаг вперёд (это при том, что и сам-то по себе А4988 пропускает пару шагов запросто на низкий скоростях печати), то запаздывать, что проявляется именно как дёрганья каретки относительно плавного поступательного перемещения с каким-то периодом – это и есть «что ж он так дребезжит».

При наличии времени я, возможно, гляну, откуда там наплывает лишний потенциал для одного компаратора (маловероятно, что из-за разводки платы, хотя и она "не фонтан"), но особо смысла в этом нет – очевидно, что драйвер бракованный (или это просто некое китайское поделие «под» китайское же изделие).

Именно потому я решил глянуть, не написано ли на нём что-то типа HR4988.

Поскольку у меня было 6 драйверов: 1 купленный сам по себе и 5 – лотом (2 из них сразу ушли в мусор), скажу так – все 3 оставшихся от лота драйвера выглядят одинаково. Купленный же отдельно выглядит, как драйвер с Анет. Он, кстати, и работает нормально.

Так выглядит поверхность оригинального (надеюсь) A4988 c Aнет-борды:

Так – поверхность драйвера с одного из «лотовых» модулей:

Вам тоже слышится скрежет напильника в одном из китайских подвалов?

Ну и под завязку – да, оно таки делает вид, что умеет 128 микрошагов, если соответственно включить MS1…3.

Лот 5 шт куплен аж 3 года назад (да, столько лет скучает мой Дельта) у "Feiyang electronics" на Али (но вообще продавец адекватный и вполне может быть не в курсе всей той развесистой клюквы, что через него проходит). Нормальные (1 выживший и 1 куда-то про...) были куплены у него же.

Говорят, с тех пор отдельные продавцы на Али стали даже продавать HR4988 как есть, и позиционируемый, как классный и чудесный. Вполне может оно и так, и у меня просто отбраковка. В любом случае, жду, чем порадует один из близнецов BigTree с заказанными 12 шт A4988.

Смотрите в следующей серии:
- Как оно шагает и куда это заводит.
Источник: 3dtoday.ru
2018 3dtrands.ru - самые последние тренды в 3D мире.