Драйвер шагового двигателя "под микроскопом" на примере DRV8825 (PWM, Overshoot, Slow Decay, Fast Decay, Mixed Decay, SS34, пропуск шагов, ложные выводы, панацея и всё такое)

Подписаться на 3Dtoday
Batlapin
Идет загрузка
Загрузка
12.05.19
5884
70
Техничка
25
Заранее прошу прощения, если рассуждения местами сумбурны, писал за один заход, но слишком много материала для одного раза. Также там есть опечатки.

Описанное в статье даёт представление о работе не только DRV8825, но и драйверов двигателей вообще.

Что из себя представляет DRV8825, который «cдвоенный драйвер шагового двигателя с мостовым включением с PWM управлением с возможностью деления шага на 32», как он работает и почему он работает именно так?

Во-первых, он сдвоенный, состоит из двух идентичных половинок (раз у шагового двигателя две обмотки), работу одной из которых мы и рассмотрим.

Во-вторых, он с мостовым включением:
b791be6fae0f7d1d7413f7e2ac7b8e0d.png
Есть 4 ключа (полевых транзистора, MOSFET или как угодно), включенных "мостом", этаким квадратом, в одну диагональ которого включена обмотка шагового двигателя (в центре картинки), к другой через токоизмерительный шунт (о нем дальше) подключено питающее напряжение. Драйвер может открывать ключи в нужных комбинациях, подключая обмотку к питающему напряжению VM в прямой или обратной полярности, либо замыкая её саму на себя. Если нумеровать ключи слева направо сверху вниз (подписал красным), то прямое включение – открыты 1 и 4 (путо тока «1»), обратное – 2 и 3 (путь «2»), замкнуто – 3 и 4 («3»). При подаче на обмотку питания через обмотку начинает протекать ток (либо ток спадает) по вполне определённым законам. Обмотка – индуктивность, которая также обладает неким активным сопротивлением, которое вместе с сопротивлением остальных компонент определяет предельный ток I_LIM, который может протекать через всю цепь. Если исходный ток в обмотке равен 0 и на неё подано напряжение, ток в обмотке нарастает (дальше я пишу про обмотку «заряжается», но это неверно, хотя так понятнее – индуктивность как бы «заряжается», накапливает энергию), и этот процесс описывается формулой:
1b81101c865740c0894029af2796633e.png
Для конкретного реального примера: напряжение 12В, сопротивление обмотки 2 Ома, сопротивление пары ключей DRV8825, согласно документации, считаем 0.5 Ома, сопротивление токоизмерительного шунта 0.1 Ома, для ровного счёта считаем сопротивление всего остального (провода, PCB, контакты) 0.4 Ома, что суммарно даёт R=3 Ома и I_LIM= 4А.

Но если просто подключать обмотку к питанию и так оставлять, в ней установится ток I_LIM (либо его отрицательное значение), и при смене полярности двигатель в результате сделает всего один полный шаг (на самом деле он сгорит, поскольку допустимый ток, определяемый производителем, для двигателей «в обиходе» не более 1.5-1.7А).

Хорошо бы как-то научиться устанавливать ток в обмотке меньше предельного, причём не просто какой-то, а по определённому закону: чтобы двигатель вращался плавно, ток в его обмотках (которых две) должен меняться синусоидально со сдвигом на 90 градусов.
f8226bb1349674f64e463a6450f03f0c.png
Детали сейчас не важны, главная мысль – драйвер должен не просто подключать обмотку, но и уметь ограничивать ток в ней, управлять им. Нужен некий регулятор тока, но такой, чтобы на нём не выделялось изрядное количество тепла. Например, если бы драйвер регулировал ток включенным последовательно с обмоткой линейным регулятором, при установке тока в обмотке 1А в нашем примере на обмотке рассеивалось бы 3 Вт, а на регуляторе 9 Вт, т.е. КПД такой схемы = 25%, что, мягко говоря, плохо. И 9 Вт тепла на обмотку – это 9*2*4=72 Вт в тепло в классическом принтере с 4 двигателями.

Так нельзя, и потому в подобных случаях используются импульсные схемы управления. Суть проста – поскольку в нагрузке есть инерционные компоненты (конденсаторы, индуктивности), если подавать на эту нагрузку питание импульсно (быстро-быстро открывать-закрывать ключ, через который подаётся питание), токи и напряжения в нагрузке будут изменяться, но не успеют установиться на максимальное значение, и будут некими промежуточными, причем их значения будут зависеть от скважности (соотношения времени «включено-выключено») сигнала, управляющего ключем. Это как бассейн, в который ведёт огромная наливная труба, а выходит мелкая сливная. Если просто открыть первую – бассейн переполнится, но если первую трубу открывать ненадолго, можно сделать так, что поступившая порция воды выльется через сливную трубу до следующего открывания наливной. Или выльется не вся - например, когда осталось 50% воды, открыли наливную трубу, наполнили до 55%, закрыли, ждем, как сольётся опять до половины. Это и будет «PWM управление».

Потому драйвер, в-третьих, «с PWM управлением». PWM – Pulse Width Modulation, модуляция управляющего сигнала шириной импульса, т.е. драйвер, меняя ширину испульса (время открытого состояния ключей по отношению ко времени «включено-выключено»), управляет токами-напряжениями. Когда, к примеру, открыты ключи 1 и 3, ток в обмотке начинает нарастать (индуктивность же), и, при достижении какого-то значения тока, драйвер переключает ключи. Чтобы «понять», когда пора переключать, драйвер получает сигнал обратной связи – напряжение с токоизмерительного шунта, которое пропорционально току в обмотке (ведь шунт включен последовательно в цепь протекания тока). Затем это напряжение усиливается (у DRV8825 – в 5 раз) и сравнивается (компаратором) с неким эталонным. Как только усиленный сигнал обратной связи совпал с эталоном – наступает переключение. Сколько тепла такая схема рассеивает? Сопротивление открытого ключа DRV8825 порядка 0.25 Ома, при токе 1А два ключа рассеивают 0.5Вт тепла, 1 Вт на двигатель (моста же два). Когда ключ закрыт, ток не протекает и ключ ничего не рассеивает.

Эталонное напряжение устанавливается самим DRV8825 согласно таблице состояний. Для каждого шага эталонное напряжение равно значению синуса для угла, соответствующего текущему шагу, помноженному на то напряжение, которое Вы устанавливаете «крутистором» на плате драйвера.

Угол определяется так – 90 градусов делим на кол-во микрошагов в полном шаге, умножаем на номер текущего шага

Для примера, при режиме деления 32 микрошага, считаем (микро)шаг номер 16: синус (90/32*16)=0.707. «Крутистором» установлено 0.5В, шунт 0.1 Ома, значит, эталонное напряжение = 0.707*0.5В=0.353В, и, чтобы компаратор переключился, на его другом входе должно быть равное напряжение, и оно будет таким при токе через обмотку =0.353/5/0.1=0.707А (5 - коэфф. усиления сигнала обратной связи DRV8825, 0.1 – сопротивление шунта).

Именно потому в документации и написано, что верхний предел протекающего через обмотку тока:
09fdc81d3ed2709fea6ef8fc59cc7111.png
В общем, если уметь вовремя включать-выключать ключи, можно поддерживать ток в обмотке близко к требуемому значения. «Близко» - потому, что бассейн был наполнен от 50% до 55%. В теории, можно открывать-закрывать трубы быстро быстро сразу, как только потребовалось, но в схемах всегда есть переходные процессы – ключи не могут открываться-закрываться моментально, а, как помните, мало или нисколько тепла они выделяют только, когда совсем открыты или закрыты. В промежуточных состояних всё намного хуже, и потому чем выше частота, на которой работает схема, тем больше тепла она выделяет. Это в общих чертах. В случае с бассейном работник, который управляет трубами, будет уставать тем больше, чем жёстче будут к нему требования по соответствию уровня воды нужному значению (а, уставая, он будет кушать всё больше, пока не случится что-нибудь нехорошее). Так и со схемами. Потому можно сильно облегчить режим работы схемы, допуская некие отклонения от строгого соответствия (иначе схема превращается из импульсной в линейную, а это плохо).

И, вкратце, в-четвёртых, про «с возможностью деления шага на 32». В идеале нужен двигатель, который можно было бы «повернуть» на произвольный угол, обеспечив таким образом перемещение связанной с ним оси на произвольное, расчётное расстояние. Но ротор (то, что вращается) в шаговом двигателе может занимать одно из нескольких стабильных состояний, их количество определяется количеством магнитных полюсов, и в распространенных двигателях таких состояний (полных шагов) 200. Это, конечно, много, но поворот такого двигателя на 1 полный шаг даст, скажем, сдвиг каретки в классическом принтере на (1/200)*16*2=0.16мм (16 – кол-во зубцов у шестерни на валу двигателя, 2 – шаг зубца, мм) – это не особо прецизионно. Чтобы уменьшить дискретность поворота вала, используется техника деления полного шага на микрошаги, когда драйвер, подавая ток в обмотки по нужным правилам, удерживает ротор в промежуточном состоянии между соседними стабильными, и, меняя ток, может вращать ротор между промежуточными состояниями. Драйвер A4988 умеет делать 16 таких промежуточных состояний (делить полный шаг на 16 или «у него есть режим 16 микрошагов») – точность подачи каретки становится 0.01мм. У DRV8825 есть режим 32 микрошага, и точность подачи каретки становится 5 мкм. В теории.

Вернёмся к словам «если уметь вовремя включать-выключать ключи» и «допуская некие отклонения от строгого соответствия, можно сильно облегчить режим работы схемы». Вот здесь-то и начинается отличие реальности от всей вышеописанной теории про красоту PWM управления. Вся суть и все «грабли» – в конкретной его реализации.
Согласно документации, DRV8825 обладает следующими ограничениями:

1) Время прямого включения обмотки не бывает меньше некоего минимального, оно называется t_BLANK и составляет 3.75 мкс. Более того, прямое включение бывает каждый цикл, обязательно, всегда. Т.е. каждый PWM цикл в обмотку «закачивается» энергия. Даже, если уже не нужно. Существование t_BLANK объясняется банально – сразу после переключения нужно какое-то время, за которое в схеме угаснут переходные процессы, и в это время драйвер не проверяет, «как там у нас дела с током», дабы избежать случайных хаотичных срабатываний сигналов управления. Т.е. всё так – подключил обмотку и 3.75 мкс вообще не заботится, что с ней происходит. Потом, конечно, спохватывается…

2) Полный PWM цикл у DRV8825 составляет 1000/30=33.3мкс (по документации частота PWM=30кГц). Плюс-минус. Всегда. Вообще ни от чего не зависит (в смысле – нельзя менять по своему желанию).

Еще немного наглядно (помогут формулы выше и ниже по тексту): при установочном («крутистором») токе 1.0А эталонный ток первого шага DRV8825 = 1000*sin (90/32*1)=49.1мА. Драйвер включает обмотку в прямом включении, исходный ток I0=0 (самое начало работы), и за первые «безнадзорные» 3.75мкс ток в обмотке (I1 в формулах) достигнет 15.0мА – это меньше эталонного, так что включение остается прямым, и к 12.3 мкс от начала цикла ток в обмотке сравняется с эталонным, и драйвер переключает обмотку. Казалось бы, всё хорошо.

Пришло время кратенько поговорить о путях «2» и «3» с первой картинки. Путь «3», когда обмотка замкнута сама на себя, и ток в ней в перспективе падает до 0, называется Slow Decay.

В нашем примере именно в 12.3 мкс драйвер закорачивает обмотку саму на себя, наступает Slow Decay, и до конца цикла ток в обмотке падает до… 48.1 мА. Теперь подать бы ток на очень недолго, но – наступает тот самый t_BLANK, прямое подключение продлится не менее 3.75мкс, за которые ток вырастет до 62.8 мА, что уже сразу по окончании t_BLANK больше эталонного, драйвер переключает мост в Slow Decay до конца цикла, и ток упадёт до… 61 мА. В общем, дайвер не в состоянии удерживать ток «близко» к требуемым 49.1 мА, вместо этого с каждым циклом ток будет нарастать до того момента, когда заливаемое за 3.75 мкс не сравняется со "сливаемым" за остаток цикла (описано и иллюстрировано дальше, пока вкратце – установится ток почти в 10 раз больше эталонного).

Далее идёт демонстрация всего описанного, после чего ненадолго перейдём к пропущенному пока пути «2» на картинке в самом начале статьи.

Для примера я считал индуктивность обмотки L=3 мГн, сопротивление всей цепи «заряда-разряда» R=3 Ома, время «заряда» t_BLANK=3.75 мкс, время «разряда» = 33.3-3.75 мкс.

Поскольку первый «заряд» останавливается при достижении тока в обмотке, соответствующего выбранному шагу, для разных шагов графики процесса отличаются, и начальные этапы для шагов 1…5 выглядят так (ось X – мкс, ось Y – мА):
147a272a03b4aee7682686190d1c67af.png
Все эти графики асимптотически стремятся к одному и тому же значению (вернее, паре значений из-за разделения процесса на два этапа):
c4b51d1c11697a9ca290eeea52aef682.png
Выводы просты: каким бы ни был шаг (до определённого значения), ток в обмотке со временем устанавливается один и тот же, предельное значение этого тока будет установлено сразу же при переходе с микрошага 0 на 1, и оно будет неизменным до тех пор, пока эталонный ток очередного шага (назовём его StepA) не превысит этот предел (в этот момент предельный ток начнёт соответствовать установочному благодаря «растягиванию» процесса «заряда» - «заряд» не будет прекращаться по окончании времени t_BLANK). Фактически это выглядит, как переход от шага 0 сразу к шагу StepA (или чуть до него) – тот самый «пропуск шагов».

Также из графика понятно, почему при увеличении скорости печати проблема пропуска шагов становится не так заметна - ток не успевает вырасти до I_skip, и при печати на скоростях «ближе к началу графика» всё неплохо (но там есть свои проблемы).

Номер шага StepA можно рассчитать, исходя из таких соображений: при достижении тока I_skip график состоит из идентичных участков, каждый из которых состоит из периода «заряда» и периода «разряда», и ток в момент окончания участка равен току в момент начала следующего, и, поскольку все участки становятся одинаковы, он равен току в начале самого этого участка. Проще говоря, если ток в начале участка = I0, за период «заряда» он вырастет до некоего I1, но затем за период «разряда» опять снизится до I0. Ток I1 можно рассчитать:
a413dccb0fc46c89df4c376064d2598b.png
Для указанных выше L, R и т.д., и U=12 В, ток получается равен 457 мА, и для драйвера DRV8825 с установленным предельным током в обмотке 1000 мА он практически соответствует шагу 8, т.е. работа этой системы на малых скоростях печати будет выглядеть так – шаг 0, шаг 8, шаг 8, … шаг 8, шаг 9 и дальше по расписанию – пропущено 7 микрошагов, 1…7.

В реальности этот кошмар выглядит примерно так (установочный ток 1000мА, масштаб Y =1/2 мА/мВ):
cec27a3d332647cf6b5a823adddb74e5.png
Частота управления 300Гц, микрошаг 32, на стандартном Prusa с двигателями 200 шаг/об, 16-зубчатой шестерней на X это 90мм/мин («F90»).

Вот эти "горбы" и представляют собой пропуски шагов.

На F450 это будет так:
1841f73f2c3465404ccc152b7dcde44e.png
Почти хорошо (но всё равно ерунда какая-то, скачки больше микрошага).

(продолжение про путь «2»)

Проще говоря, при жёстко заданной скважности 3.75/33.3 в режиме Slow Decay обмотка не всегда успевает отдать энергию – ток не успевает снизиться до нужного значения, энергия сбрасывается долго. Потому этот режим и называется Slow Decay. И тут приходит время поговорить про путь «2» – ведь можно подключить катушку к источнику в обратном включении. Теперь в той самой экспоненциальной перспективе ток должен упасть с текущего не до 0, а до I_LIM со знаком минус, в нашем случае до -4000мА, и через значение «0» ток пролетает очень быстро, и потому режим называется Fast Decay. Чтобы вслед за пересечением «0» ток на самом деле не улетел в минус, в момент пересечения драйвер снимает с катушки питающее напряжение до начала следующего цикла.

DRV8825 допускает выбор режима, потому посчитаем, что будет с нашим первым шагом в режиме Fast Decay.
Итак, со слов «… и к 12.3 мкс от начала цикла ток достигнет эталонного 49.1 мА, и драйвер переключает обмотку.» - теперь в Fast Decay. Начинается быстрый спад тока, и ток обнуляется за 12.2мкс (почти время накопления энергии, что логично, ведь ток в обмотке в обоих случаях начинался с 0 или почти с 0, и предельным был оди и тот же 4А). Остальные 33.3-12.3-12.2=8.8мкс ток будет нулевым. Средний ток через катушку за этот цикл составит около 18мА, что как-то сильно меньше требуемых 49.1. На втором шаге: эталонный ток 98 мА, «заряд» занимает весь первый цикл 33.3мкс, затем еще через 3.75мкс второго цикла неконтролируемого «заряда» ток вырастет уже до 111.8 мкс, начинается «разряд» до 0 («в момент пересечения драйвер снимает с катушки питающее напряжение») длительностью 27.6 мкс, еще 33.3-3.75-27.6=2мкс ток=0. Средний ток за 2 цикла (и обратите внимание, что эти 2 цикла фактически представляют из себя единый цикл «заряда»-«разряда» двойной длительности, т.е. визуально частота PWM сигнала как будто упала в 2 раза, до 15 кГц) 54.2, что тоже меньше требуемых 98. В общем, Fast Decay хорош, но это никак не решение проблемы. Кроме того, этот режим не особо гуманен к питающим цепям. Судите сами - весь ток обмотки, все эти сотни-тысячи миллиампер, в этом режиме направлен через внешние, по отношению к драйверу, цепи, причём этот ток направлен к плюсу источника питания - ток вливается в источник, что для него не очень привычно, и приводит к высокому уровню пульсаций по питанию. Да, фильтрующие конденсаторы помогают. Нет, не особо.

Про 15 кГц – есть отличная статья с иллюстрациями http://cabristor.blogspot.com/2015/02/drv8825-missing-steps.html (которая и подтолкнула меня ко всем этим измерениям и расчётам). Уважаемый автор задаётся очень резонными вопросами, хотя и остаётся ощущение, что не все рассуждения корректны, например «some microsteps that are done continuously at 15kHz instead of 30kHz» - очевидно, что не микрошаги совершаются на частоте 15 или 30 кГц, а PWM сигнал выглядит так, как будто его частота 15 кГц – выше я описал, почему. Также в статье есть неочевидная путаница между напряжениями и токами («the minimum voltage it can do is 12% of the supply voltage (1.4V in my case) my motors are rated for 3.1V, so 1.4V is half of the nominal voltage, that is a very big minimum step» - драйвер не регулирует напряжение, его задача – ток, и именно ток, не напряжение, номинируется для двигателя). Еще пример: «We will be subtracting 1.4V from each side of the sine wave, and the driver would be able to drive low currents» - диоды-то да, снизят напряжение на 1.4 (1.6В), но вычитать надо не из некоей синусоиды (посколько синусоидой аппроксимируется ток, а не напряжение), а из питающего напряжения. Но вообще очень стоит почитать и посмотреть.

Помимо путей «2» и «3» есть смешанный режим Mixed Decay, в DRV8825 он включен по умолчанию и реализован так – сразу по окончании t_BLANK драйвер включает обмотку в режим Fast Decay (с обратным подключением к источнику), но через 75% от начала цикла переключает в Slow Decay (обмотка замкнута на себя). Это призвано улучшить ситуацию с «переразрядом» обмотки до 0 (который приводит к снижению эффективного тока за время цикла), но…. этот режим есть только на на тех микрошагах, когда эталонный ток в обмотке должен падать от шага к шагу. Когда же он должен нарастать (как при переходе от микрошага 0 к 1, от 1 к 2,… от 30 к 31), используется или Soft Decay (по умолчанию), или Fast Decay (если так включить).

Итак, Вы всё это, наверное, прочитали, но не нашли ответа на самый главный вопрос: что же делать? Или (в рамках статьи) что можно сделать, чтобы снизить I1 в режиме Slow Decay, как не дать току так быстро нарастать?

Ответы - в кучке формул в середине статьи. Вернее, в последней из них.

Можно было бы пытаться снизить значение дроби в последней формуле, но из 4 переменных, от которых оно зависит, менять можно только 2, L и R, и уменьшать их нельзя. Увеличение же L ведёт к росту значения дроби, а увеличение R – к снижению, но увеличение с 3 до 10 Ом меняет значение всего на 3.4%. Можно сказать, что фиксированные (у DRV8825 именно так) t_BLANK и t_DIS фиксируют это значение.

Можно понижать I_LIM снижением U и увеличением R.

В любом случае, I_LIM должен быть не ниже установленного предельного тока, иначе драйвер не сможет обеспечить нужный ток на шагах, соответствующих максимальному току.

В данном случае R не может быть суммарно больше, чем 12В/1000мА=12 Ом. Но надо не забывать, что любые дополнительные компоненты, увеличивающие сопротивление либо снижающие напряжение, будут рассеивать тепло. Например, если последовательно с обмоткой включить сопротивление 12-3=9 Ом, при указанных токах на нём будет рассеиваться 9*(1.0*1.0)/2 = 4.5 Вт, для двух обмоток – 9 Вт, и это только для одного шагового двигателя. При таком R I1 будет = 119.3 мА – ток между установочными токами 2 и 3-го шагов. Шаги будут выглядеть так: 0, 2.5, 2.5, 3, 4 и т.д. – фактически будет пропущен 1 микрошаг.

И нельзя снижать напряжение питания ниже минимального предела для данного драйвера (для DRV8825 - 8.2В).

Если снизить напряжение питания драйвера до 8.2 В, но не увеличивать R, I1 будет 312.1 мА.

Но это уже даёт вот, что (сравните с картинками выше, сравниваем "горбы" при переходе через 0).

F90:
8cccd3ee0a3acf0f95103af1a2293280.png
F450:
a494643e8cb7103cc333147c7e6de155.png
Если снизить напряжение питания до 8.2В и увеличить суммарно сопротивление до 8.2 Ома, I1 будет 117.1 мА, и на резисторах будет рассеиваться (в расчёте на 1 двигатель) 5.2 Вт против 9 Вт без снижения напряжения.

Как бы ещё «хитро» снизить напряжение на обмотке, не снижая ещё больше напряжение питания самого драйвера? Как описано в вышеприведённой статье, очень просто – снижать напряжение на выходе драйвера, например, включив последовательно с обмоткой два-три диода, причем делать это надо парно, не забывая, что ток в обмотке биполярный. Установка 2+2 диодов SS34 (то, что массово продаётся на aliexpress под названием «Stepstick Smoother») снизит эффективное напряжение с 12 до 11.3В. Что это даст? I1=430 мА, что соответствует микрошагу 7.5 - в общем-то, ничего не должно давать. Плацебо. Если снижать не диодами Шоттки, а, как в статье, 1N5404 (0.8В при 1-2А), устанавливая их, как в статье, по 2 подряд, I1 будет 395.8мА. Тоже так себе. Да, в статье есть иллюстрации, как это всё эффективно, однако попытка проверить результат расчётно ни к чему не приводит (похоже, помимо диодов были и другие изменения).

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

Графиков со снижением напряжения и доп. резисторами пока нет (пока только заказал резисторы).
Подписаться на 3Dtoday
25
Комментарии к статье

Комментарии

12.05.19 в 19:05
4
Отличный разбор полётов! Добавлю немного, 1N5404 - очень глупый выбор для смузера, лишний нагрев. Нужны быстрые диоды типа HER304, SF38.
12.05.19 в 19:15
1
Спасибо. Как по мне, греться будут любые, т.к. задача диодов (но это неверное её решение в любом случае) - сбросить эффективное напряжение питания, т.е. на них будет рассеиваться не меньше "напряжение падения"х"средний ток за цикл". SF38 при 1А даёт падение почти 1.2В (на один диод), при синусоиде 1А это почти 0.9Вт на диод. 1N5404 - 0.8В. И очень хотелось бы увидеть объяснение причины эффективности включения диодов, если она на самом деле есть.
12.05.19 в 20:02
1
Насколько я помню диоды популярны только как дополнение к drv8825. Следует ли это понимать что в тринамиках и старых a4988 такой проблемы нет или она сильно меньше?
12.05.19 в 20:13
0
У меня нет других драйверов, кроме A4988 и DRV8825. Но по A4988 - да, там подобные те же грабли, и их не может не быть, поскольку их суть - в сочетании "индуктивность"+"ограничения по временным режимам PWM", что в любом случае приводит к рассогласованию режимов нарастания и спада тока в одном цикле. Я сделал простенький стенд на Atmege, написал прошивку, с которой можно задавать с терминала частоту подачи STEP и управлять DIR и RESET, сделал токовые пробники на AD8418 - и уверяю Вас, что очень есть, на что посмотреть.Но на A4988 больше дискретность шагов (т.е. 1й шаг выше по уровню тока), самих шагов меньше, так что проблема не так очевидна. Думаю, и на TMC можно увидеть подобное.
12.05.19 в 21:43
0
ну понятно что при 1/16 "пропущено" будем условно вдвое меньше первых микрошагов чем при 1/32 (ради которых обычно дрв8825 и ставят)
просто у других драйверов может быть другая структура ШИМ цикла. или, допустим, адаптивная его частота.
12.05.19 в 22:04
0
"у других драйверов может быть другая структура ШИМ цикла. или, допустим, адаптивная его частота" - так и есть.
Если забыть про Fast и Mixed Decay:
DRV8825: заряд 3.75 мкс разряд 29.58 мкс, частота PWM 30 кГц
A4988: заряд "сколько надо, но не менее 1 мкс", разряд программируется Rosc/825 (но я нигде не нашел, в каких пределах его можно регулировать), частота - как получится.
Так что на A4988 проблема не так заметна ещё и из-за снижения минимального времени до 1 мкс.Если бы еще можно было растянуть время разряда... Но нет.
12.05.19 в 21:49
0
кроме того. советы снижать напряжение и/или ставить токоограничивающие резистоты, наверное, хороши для ситуации близкой к статике. в динамике это все может и скорее всего выйдет боком. на более низких (из так сказать высоких) скоростях степпер начнет уже по настоящему пропускать шаги.
12.05.19 в 22:08
0
"на более низких (из так сказать высоких) скоростях степпер начнет уже по настоящему пропускать шаги." - есть такое, форма тока через обмотку меняется (меняются режимы нарастания-спада тока), но скорость печати всегда можно снизить в слайсере. А вот задать минимально допустимую - нельзя, вроде бы. Нельзя запретить принтеру шагать медленно. И если на ортогональных принтерах это не так заметно, на Дельте и Скаре всё становится хуже.
12.05.19 в 22:25
0
так хотят обычно же больших скоростей. причем споймать пропуск можно будет на G0, который обычно не меняют и по дефолту там 130-150 мм/сек.

снизу ограничить (кстати зачем) да, не видел. но, по моему, кура (что старая в репитер хосте, что новая) вниз обычно не сильно лезет.
а вот слисер может - на первом слое он мелкие отверстия обходит на 10-15мм/с что очень радует, потому что кура в таких местах, которые нужно пройти медленно и аккуратно, и не оторвать - просто порой бесит
12.05.19 в 22:45
0
"снизу ограничить (кстати зачем)" - чтобы не столкнуться с пропуском шагов. 10-15 мм/сек - это 600-900 в минуту, частота шага при делении на 32 (для стандартного Пруса) 2-3 кГц, совсем не так уж медленно. На Дельте частота шага может быть единицы в секунду. Да даже когда каретка просто останавливается, но драйвер активен - считайте, что у него частота управления 0. И попробуйте при этом каретку переместить на 1 микрошаг.

"G0, который обычно не меняют и по дефолту там 130-150 мм/сек" - где? В Марлине 2 по дефолту MAX_FEEDRATE по основным осям вообще 300. А в софте везде по-своему (ну и почему не меняют).
12.05.19 в 23:16
0
тревел спид в старой куре по дефолту 150, в слисере 130
12.05.19 в 23:19
1
Возможно, я в Симплифае, и, честно сказать. не помню уже дефолтные значения.

Кстати, я понял секрет использования диодов. Всё очень просто - они именно как гасящие резисторы и используются, причём всё красиво - чем меньше ток, тем выше динамическое сопротивление. Сейчас построю временнЫе диаграммы, любопытно стало.
12.05.19 в 23:42
0
я пока слабо знаком с дельтами (вообще-то начал строить, но ротационную. не линейную).
сложно мне представить юскейс когда драйвер шагает в дельте так медленно. или когда вдруг нужно на 1 микрошаг пройти.
разве что первый случай в кортезиане можно представить - движение идет под небольшим и очень острым углом к одной из осей. но врядли кто-то обратит внимание на погрешность поверхности в 4-5 соток.
кстати среди дельтоводов вроде как популярен lv8729 с натуральными 128 микрошагов. я тоже взял комплект на будущую постройку.
вот с ними было бы интересно
13.05.19 в 00:36
0
Ну так-то да, можно и через 7 микрошагов печатать, всё равно получается позиционирование 35 мкм. Только зачем тогда DRV8825, а не A4988.
С LV8729 согласен. Тем более, что приличный ARM уже можно за 7-8 уе купить.
13.05.19 в 01:20
0
Так у 8825 звук все таки другой
12.05.19 в 20:45
2
У меня самодельный смузер, там включено по два диода, тоесть падение 1.4 вольта. Эфект на drv8825 есть, работают тихо.
12.05.19 в 20:57
0
после прочтения оригинальной статьи у меня возникло два желания. 1 это учитывать кратность перемещения при моделировании. 2 попробовать эти смуттеры. но всё как то было не до того.
после чтения этой статьи желения пробовать поуменьшилось.

но я вспомнил старый блок управления от ныне покойного моего фрезера (помер при тушении пожара на чердаке). так вот во время его создания микросхем драйверов просто не было в доступе. да и не выдержат они такие токи. там использовалась старая совецкая схема включения двигателей ДШИ. и в качестве элемента огараничения тока обмотки использовались керамические проволочные резисторы на 15Вт (или 10 не помню уже точно).

так вот я к чему веду смысл мысли: почему нельзя поставить мощьные керамические резисторы или цементные (что дороже но предпочтительнее) и блок питания с учётом мощности ,рассеиваемой на них?

При необходимости поставить принудительное охлаждение. Драйвера всё равно надо охлаждать.

Да станок будет кушать немного больше. Но работать точнее. и тут каждый сам решит что ему важнее точность или счёт за электричество.

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

ну и логично подбирать механику так чтобы минимальное перемещение было или без микрошагов или кратно пропуску например 10 микрошагов на 0.01мм линейного перемещения. и соответственно станок в этом случае не будет работать в нештатном режиме драйверов.
12.05.19 в 21:10
0
"почему нельзя поставить мощьные керамические резисторы или цементные (что дороже но предпочтительнее) и блок питания с учётом мощности ,рассеиваемой на них?" - можно, именно об этом я и написал в конце статьи. По крайней мере, стоит попытаться точно. Более того, можно поставить понижающие преобразователи (благо они недороги, на такие токи) до напряжения, несколько бОльшего минимального для драйвера - и тогда резисторами придётся рассеивать несколько меньше (выигрыш в том, что понижающий преобразователь - импульсный, т.е. суммарное тепловыделение будет ниже, чем если питать драйвер полными 12В, а затем весь избыток сбрасывать резисторами).
12.05.19 в 22:01
0
Прочитал. Занимательно. Так что же делать. Делать свой драйвер,который при увеличении скорости шагов будет переходить из медленного спада в комбинированный и потом уже в быстрый разряд индуктивности. Причем переход из медленного в быстрый спад через комбинированный должен переходить плавно в зависимости от скорости вращения. При этом нужно еще ввести динамическое увеличение тока на обмотках при увеличении скорости шагов. Причем при отсутствии шагов снижать токи в обмотках до минимума удержания. При этих условиях получаем минимальное энергопотребление при высоких скоростных характеристиках и высоком моменте на повышенных скоростях. Даже при микрошаге 8-10 можно получить практически неслышимый привод. Кстати частота управления обмотками должна быть не меньше 40 кгц. Ну и питание драйверов чем выше напряжение, тем лучше. Где то так
12.05.19 в 22:15
0
"Делать свой драйвер,который при увеличении скорости шагов будет переходить из медленного спада в комбинированный и потом уже в быстрый разряд индуктивности." - ну, это в идеале. Хотя я не исключаю, что такие уже есть, и, возможно, во всей этой каше управляемых драйверов уже есть решение. Только есть один момент - драйвер не в курсе, через какое время будет следующий шаг, и насколько надо быть готовым к предстоящему изменению тока. А вот контроллер принтера - в курсе. Я так думаю, даже DRV8825 можно немного управлять, подкорректировв исходники того же Марлина. Плавных изменений не будет, но можно переключить драйвер в Fast Decay при снижении скорости ниже пороговой.
"ввести динамическое увеличение тока на обмотках при увеличении скорости шагов" - маловероятно. Скорость изменения тока в индкутивности диктуется: текущим током, предельным током, к которому стремится текущий (напряжение/сопротивление), сопротивлением (заметно), индуктивностью (малозаметно). Так что динамику можно менять. только меняя питающее напряжение. Но в Марлин есть части, отвечающие за программирование тока в драйверах, которые это допускают.
"питание драйверов чем выше напряжение, тем лучше" - не-не. Чем выше напряжение, тем быстрее изменения тока в обмотке, а это как раз те самые грабли.
12.05.19 в 22:25
0
У меня есть такой драйвер и он работает как я описал уже долгие годы. И по поводу того, что драйвер не знает через какое время будет следующий шаг - Вы ошибаетесь. Драйвер не может получить спонтанно увеличенную скорость шагов, поскольку у каждого шд есть разгонная характеристика ,плюс к ней прикладывается инерционность механики, так что все это прекрасно прогнозируется. И динамическое увеличение тока от скорости работает великолепно и настраивается программой для настройки драйвера.Проверено временем.
12.05.19 в 22:34
0
"по поводу того, что драйвер не знает через какое время будет следующий шаг - Вы ошибаетесь" - нет. Есть разница между достоверными знаниями и прогнозом, и разница эта в том, что не описано правилами, на основании которых строится прогноз.
Я не спорю о том, что в природе нет места моментальным изменениям, однако мы говорим о дискретной проекции аналоговых параметров. Будь всё, как Вы пишете, не пришлось бы вводить в терминологию принтеров не совсем корректное понятие jerk.И, например, первый шаг для драйвера всегда неожиданный, разве нет?
13.05.19 в 06:14
0
Как раз джерк нормальное корректное понятие. Все что меньше этой величины имеет бешенный момент и не требует плавного разгона двигателя. В этом режиме достаточно только медленного спада работы двигателя. А выше будьте добры разгонять двигатель по всем правилам физики, а иначе будете пропускать шаги. Вот на этом и строится прогноз. Вы ведь в контроллере принтера не от фонаря вписываете джерки , скорости и ускорения? Вы их вписываете согласно возможностям Вашей кинематики. Что мешает сконфигурировать драйвер также само?
13.05.19 в 12:14
0
Мы уходим от сути вопроса "кто точно знает последующие шаги - контроллер или драйвер", возникшего вследствие Ваших слов "по поводу того, что драйвер не знает через какое время будет следующий шаг - Вы ошибаетесь". Я утверждаю, что не ошибаюсь, и что драйвер не знает, через какое время ДОЛЖЕН быть следующий шаг. Знает это контроллер, который и должен управлять драйвером. Вы утверждаете, что это знает и драйвер, который и сам может для этого настроиться?
12.05.19 в 22:37
0
я думаю, что инженеры тринамика давно этой всей балалайкой озаботились. у них и разные режимы своей работы драйвер в зависимости от условий переключает. и для внутреннего дробления в 1/256 из 1/16 надо бы угадывать частоту этого самого дробления. вполне возможно что и проблемы точности первых микрошагов они как-то порешали
12.05.19 в 22:53
0
TMC2100, страница 32 - как раз про "угадывание". Прогноз построен на длительности предыдущего STEP-периода. Каким будет текущий, драйвер не в курсе, но продолжает "делить". Дело в том, что на отдельные микрошаги (в т.ч. первые) всем, в принципе, "по барабану". Пластик сам по себе не сверхпрецизионный материал.
13.05.19 в 06:03
0
Вы меня совсем не слышите. Драйвер нужно делать на микроконтроллере и в него закладывать прогнозирование следующего шага.
13.05.19 в 06:29
0
Я думаю, что мультипликатор шагов у них включается с определенной частоты вращения. А точность микрошага никакая. Микрошаг сам по себе с точки зрения точности ничего не решает. Основное его использование это плавность работы и уход от резонансной частоты. Точнее безболезненный переход. А вот почему производители так стараются увеличить в своем изделии делитель микрошага я знаю. Это бизнес и чем больше микрошаг ,тем лучше пиплы хавают. Я лет 8 назад занимался разработкой подобного драйвера. И я Вам так скажу, что мой драйвер и на 10-16 микрошаге работал очень тихо и плавно. За это время много чего поменялось, но физика процессов то осталась.
13.05.19 в 12:38
0
"Я думаю, что мультипликатор шагов у них включается с определенной частоты вращения." - да всё же в документации есть.
13.05.19 в 06:21
0
Пытался немножко разобраться со всеми этими Slow, Fast, Mixed decay режимами для A4988. Если замкнуть 13 ножку ROSC на землю драйвер перейдет в Mixed decay - 31.25% от 30 микросекунд A4988 будет пытаться удержать ток (борясь с ЭДС самоиндукции) в режиме Fast decay, а остальные 20.625 микросекунд будет ограничивать ток ЭДС самоиндукции в режиме Slow decay. Эти 30 микросекунд называются off time (tOFF) - - микросхема сбрасывает энергию запасенную в катушках на землю. Время включения on time (tON) зависит зависит от того, сколько времени потребуется, чтобы ток снова поднялся до порога ITrip указанного таблице 2, на стр.17. Частота на которой шаговый двигатель будет работать равна сумме tOFF и tON и называется - chopping frequency. Если она низкая двигатели начинают противно пищать. Чтоб увеличить частоту ШИМ и вывести писк за порог слышимости нужно использовать более высокое напряжение питания, которое должно сократить время включения tON или уменьшать tOFF. Однако все не так просто...

Если посмотреть на график ниже, синие импульсы - это команды шагов генерируемые платой управления. Минимальный период импульса (те максимальная скорость мотора) не может быть больше 2 микросекунд (1 микросекунда высокий уровень + 1 микросекунда низкий) . Эти значения не случайны - именно на 1 микросекунду отключается компаратор, измеряющий ток через обмотку. Драйвер на это время слепнет и не способен контролировать ток. Это нужно для предотвращения ложного срабатывания защиты по току из-за обратных выбросов токов восстановления диодов и переходных процессов переключения емкостной нагрузки (обратная ЭДС). Время на которое драйвер слепнет и есть наш минимальный tON. Максимальный tON, как говорилось выше зависит от того, сколько времени потребуется, чтобы ток снова поднялся до порога ITrip. Если использовать слишком высокое напряжение питания то 1 микросекунды может быть не достаточно для измерения низких токов. На графике 2 это очень хорошо видно. Пропуски микрошагов начинаются именно тогда когда ток на одной из обмоток двигателя близок к нулю (см график 13 на стр.16 и таблицу 2, на стр.17 для микрошага 16).

Если сильно увеличить кусочек синусоиды соответствующей одному микрошагу в режиме Mixed decay мы увидим МНОЖЕСТВО пилообразных сигналов длительностью 30 микросекунд. Это помогает уменьшит пропуски шагов на низких скоростях (на длинных импульсах шагов) или на высоких напряжениях, из-за того что низкая обратная ЭДС в обмотке двигателя приводит к быстрому изменению прямого тока через обмотку (меньше чем за 1 микросекунду), компаратор не успевает и выходной ток улетает за расчетные значения указанные в таблице 2, на стр.17

f65acd25e4faeb2697e3491e1f304faa.png
13.05.19 в 12:37
0
Не обращали внимание на любопытные моменты? 1) В документации нет ничего про возможный диапазон значений tOFF или допустимый диапазон величин Rosc, от которого зависит tOFF. Там только сказано, что "при 25кОм tOff м.б. от и до". Также нет изображения участка схемы, в которой Rosc задействован, чтобы понять самому, как функционирует времязадающий генератор. Надо строить график самому, а в связи с тем, что из 6 присланных мне драйверов 3 сразу брак, с A4988 разбираться хочется не очень.
Ещё вот любопытный момент, на диаграмме есть подпись про Voltage on ROSC, но самого графика нет:
3f07c0cac9903edd22ffba8bda9415b3.jpg
13.05.19 в 16:22
0
да обращал. я сам не проверял (нет осциллографа) но мне кажeтся, что 25кОм там не с проста. я читал про брак и все сошлись на мнении, что китайцы скопировали чип - готовые шилды у них стоят в несколько раз дешевле чем закупочная цена одной микросхемы в партиях от 1000 штук. похоже copy-paste они сделали крайне не удачно - отсюда все глюки и ужасная работа. Кстати я его нашел - HR4988. Подключение как у A4988, но умеет аж 1/128!!! Не понятно зачем столько, ведь уже на скоростях 200 мм/сек скважность сигнала в режиме 16 микрошагов 20кГц помножим на 4 двигателя, а еще pid стола, вывод на экран, парсер g-code и 8-битная atmega встает колом. Некоторые еще умудряются octoprint навесить, который создает нехилый трафик по uart.

у Allegro есть A5985 - drop in replacement для A4988. С патентованной функцией Adaptive Percent Fast Decay (APFD) устраняющей проблему детектирования малых токов в режиме микрошагов.

ну и мне кажется A4988 намного луше чем DRV8825, хотя бы потому что tBLANK 1 мкс, а не 3.75мкс. DRV8825 все любят за фиксированную частоту PWM=30кГц ошибочно думая раз двигателя не слышно то и шагов он не пропускает. :)


Так же чиал, то подбором резистор ROSC можно полностью устранить скачек тока при проходе через ноль. Имхо его надо увеличивать чтоб время действия fast decay росло (напомню что оно составляет 31.25% от tOFF). Ну и вешать ROSC на землю как все советуют не совсем верно. Лучше на +V тогда в full step останется slow decay - больше ускорения и момент у двигателя.
13.05.19 в 06:35
0
Вступил в полемику и самое главное забыл сказать автору. Осциллограммы нужно делать не с обмоток двигателя, а с токового шунта в драйвере. Как раз на нем можно видеть все процессы, которые происходят в драйвере.
13.05.19 в 12:18
0
"Осциллограммы нужно делать не с обмоток двигателя, а с токового шунта в драйвере. Как раз на нем можно видеть все процессы, которые происходят в драйвере." - осциллограммы нужно делать там, работу чего хочется понять. Мне нужно было понять, какие процессы происходят в обмотках, потому осциллограммы - тока в обмотках. Сигнал с токового шунта ничего не скажет, что происходит в Slow Decay. Уверен, что Вы понимаете, почему.
13.05.19 в 13:08
0
Сигнал с токового шунта при медленном спаде естественно ничего не покажет. А этого нам как раз и не нужно. Ведь медленный спад практически замораживает разряд индуктивности в двигателе на определенном участке времени. А вот в цикле заряда после медленного спада на токовом резисторе как раз и нужно смотреть состояние индуктивности.
13.05.19 в 13:13
0
Оу. Вы на самом деле думаете, что ток через шунт отличается от тока через обмотку "в цикле заряда"?
13.05.19 в 14:45
0
Вы хоть что то поняли , что я Вам хотел сказать? Прочитайте внимательно и смоделируйте данную ситуацию.
13.05.19 в 14:57
0
Я точно понял то, о чём Вы сказали, но то, что Вы об этом сказали, во многом неконкретно и сомнительно, а то, что Вы хотели сказать, вообще известно только Вам.В любом случае, буду рад, если Вам удастся привести это в соответствие.
13.05.19 в 15:21
0
В соответствие я это уже давно привел. Просто увидел топик, где человек решил разобраться с работой драйверов. Решил кое что подсказать. Но вижу что не вовремя. Будет время - поизучайте, как все начиналось и к чем закончилось. https://www.cncmasterkit.ru/viewtopic.php?f=3&t=691.
13.05.19 в 10:58
0
а как насчет нескольких способов прямого моддинга (перевода) в фаст декай режим?
и звук работы моторов тише и стабильность выше (на скоростях 60 на кореху, нема17/1.8, 24в)
муар правда еще остаётся, но надо пересобрать всё с смузерами.
6dbfa94d35b726f022ecd8302e9f0dce.jpg
13.05.19 в 12:28
0
"а как насчет нескольких способов прямого моддинга (перевода) в фаст декай режим?" - именно так (вывод DECAY на питание) и включается Fast Decay согласно документации. На Ваших фото так и сделано, вкупе с предположением, что на M2 уже плюс (для 32 микрошагов оно так и будет). Двигатель точно не работает тише, поскольку появляются спонтанно удвоенные периоды "заряда"-"разряда", из-за чего слышен шум-свист (но толчков от перекока через несколько шагов не станет, это да). Другая проблема - средний ток в обмотках заметно падает относительно эталонного. Очень хотелось бы ускорятьразряд обмотки, но не так сильно, как в Fast Decay.
13.05.19 в 21:14
0
Смоделировал работу DRV8825 в SlowDecay, 1й микрошаг, с диодами (по 1 шт встречно-параллельно на обмотку) и без.
6c9ebe772f7b98deac103e5a10266d10.jpg

График подтверждает снижение установившегося тока (красный - С, голубой - БЕЗ).
eb1bd013cdcd59a5d7b9f4bb2f31827b.jpg

Однако, сути понять не могу - где что посмотреть, чтобы понять, почему так
Объясните, люди добрые?
15.05.19 в 01:25
0
Разобрался с влиянием диодов на работу драйвера.
Всё и просто, и удивительно (в т.ч. числе как неверные рассуждения автора статьи, на которую дана ссылка в тексте, привели к верным результатам).
Если последовательно с индуктивностью включить диоды с суммарным падением напряжения 1.4В и подать от источника 12В, индуктивность будет "заряжаться" так, как будто напряжение источника 10.6В. Если затем закоротить всю цепь "индуктивность-диоды", это эквивалентно снижению напряжения источника на 12В, а для индуктивности это означает смену напряжения с +10.6В на -1.4В, и ток в ней теперь спадает в перспективе не до 0, а до отрицательного значения (понятно, что драйвер этому не даст произойти). Получается этакий немного Fast Decay, но с размахом напряжения намного меньше настоящего. Так что обмотка сбрасывает ток быстрее, горбы исчезают.
Красиво.
Кстати, на малых оборотах весьма задорно греются любые диоды, и обычные, и Fast Recovery (в т.ч. HER305 субъективно градусов до 70).
15.05.19 в 21:55
0
Диоды - это костыль, а не решение проблемы. Проще опустить общее напряжение до 10.6в - эффект будет тем же, но покупать ничего не надо и нет лишнего источника тепла. :)

Может просто надо подобрать tOFF? Единственный недостаток - можно заползти в звуковой диапазон. Он будет разной частоты для каждой скорости, но однотонный. Если на постоянной скорости пошло пиликание - это пропуск шагов. Вот вам цитата из моей стейки о A4988.

"Если использовать слишком высокое напряжение питания, то промежуток tON = 1мкс может оказаться слишком длинным для МАЛЕНЬКИХ токов, а промежуток tOFF слишком коротким для Slow decay. Представьте что вы захотели измерить расстояние до машины и моргнули, открыли глаза, а машины уже нет. Это очень хорошо видно на следующем графике - пропуски микрошагов начинаются когда ток на одной из обмоток двигателя близок к нулю (смотри таблицу транслятора A4988, на стр.17) и драйвер находится в Slow decay. Минимальное время tON = tBLANK оказывается слишком длинным - ток в катушке за это время успевает улететь за расчетные 9.80% от ITripMax для 1/16 шага. Включается компаратор и пытается вернуть ток с помощью медленного Slow decay, рассеивая энергию запасенную в катушке, но не успевает, потому что ему не хватает времени tOFF. На следующем шаге ток увеличивается, но в это раз за промежуток tON = tBLANK он не уходит далеко от нового значения и Slow decay хватает tOFF вернуть его к расчетным 19.51% от ITripMax."
16.05.19 в 01:27
0
"Диоды - это костыль, а не решение проблемы. Проще опустить общее напряжение до 10.6в - эффект будет тем же" - не поверите, я считал точно так же на момент написания статьи, но потом понял, что такой простой выход давно бы уже был найден, и что должно быть в этом что-то другое. Смоделировал в мультисиме. Спаял в реальности. Работает. Готов обьяснить, чем два диода отличаются от снижения напряжения питания на те же 1.4 вольта. Расскажите про подбор tOFF у A4988 (хотя в статье о DRV8825, у которого этот параметр вообще фиксированный, интересны также вообще любые исследования того, что не описано производителями) - у Вас есть практические результаты? В каком диапазоне можно менять Rosc и в каком диапазоне при этом меняется время спада?
16.05.19 в 03:04
0
Я понимаю чем 2 диода лучше - во время fast decay и mixed decay к обмоткам будет прикладывается 12в а не 10.6в и спад тока будет на круче на 12/10.6=13% (там в формуле прямая зависимость тока от напряжения). Для slow decay выигрыша не будет тк катушка замыкается сама на себя, а не на питание.

Вы не поверите но именно такой простой способ, снижения напряжения, найден и описан в зарубежной литературе. Просто его не используют тк теряется крутящий момент. Ну тупо же ставить 5Нм, душить его занижая напряжение, чтоб убрать пропуски шагов и в итоге получить жалкие 3Нм? Правильно - это устранить пропуски играясь tON, tOFF, fast, slow и mixed decay. Как я уже писал можно и без диодов. Снизив напряжение до 10.6в - 13% = 9.2в вы получите то же результат что и от диодов при 12в. Но бесконечно снижать не получится. Рано или поздно крутящего момента не хватит двигать массу и будет тот же пропуск шагов, но у же по вине механизма, а не драйвера.
16.05.19 в 03:55
0
"Для slow decay выигрыша не будет тк катушка замыкается сама на себя, а не на питание." - смотрите, что я писал в статье - "Если снижать не диодами Шоттки, а, как в статье, 1N5404 (0.8В при 1-2А), устанавливая их, как в статье, по 2 подряд, I1 будет 395.8мА. Тоже так себе." - ровно то же, что пишете и Вы. К сожалению, я не знаю, как править текст статьи, но теперь я признаю, что делал неверные выводы. "Снизив напряжение до 10.6в - 13% = 9.2в вы получите то же результат что и от диодов при 12в." - нет же!
Хотите, продемонстрирую, что установка двух диодв равносильна смене напряжения на концах обмотки в Slow Decay с 0 на -1.4В? Это настолько неочевидно, и в то же время естественно, что я не сразу это понял.
Проще говоря - диоды ускоряют спад. Без необходимости увеличивать tOFF.
16.05.19 в 04:01
0
А пока вот картинки тока в обмотках, драйвер A4988, 16 микрошагов, Itrip около 0.8А, частота шага 50 Гц (эквивалентно 30мм/мин)
Рост тока, как понимаете, в Slow Decay. Rosc=10K (мучаю плату от Anet).
Без диодов:
479d0413f08eba029d7bb477da1c4939.bmp



Два HER305
c3ff08bbb099726e8ccf5d3e32a54e81.bmp
16.05.19 в 04:49
0
а можете в место 10к впаять 38к-47к и снять форму тока?
17.05.19 в 00:47
0
47к (пиковый ток вчера снизил, забыл вернуть, но суть понятна):

3063dcfbe820ffcca4711fa68afd6245.bmp


Так что - да, так на А4988 тоже можно, но свист такой стоит, что меня из дома со всей этой светомузыкой выставят...
Там цикл становится 70-90мкс.
Fast Decay совсем жесткий становитя.
И для DRV8825 это не подходит.
17.05.19 в 07:19
0
Я был прав. Все как и описывал и про писк и про резистор. Спасибо что откликнулись проверить гипотезу, а то у меня осцилографа нет.

Угу на картинке fast decay колбасится нехило. Я думаю тут надо еще поиграть номиналом rosc. Можно найти такой когда на slow decay нет пропусков и fast decay не сильно разносит. Я бы попробовал 38кОм или что там есть еще меньше в этом ряду. Так чтоб все было идеально не получится, но 90% от идеала запросто. Преимущество резистора rosc перед диодами - не уменьшается крутящий момент не валу. Про недостаток уже писал - можно запросто заползти в звуковой диапазон.

Вы правы на DRV8825 этот метод не прокатит у нее другой алгоритм.

Можно я вашу последнюю картинку к себе утащу?

Как по мне А4988 однозначно лучше DRV8825.
17.05.19 в 11:23
0
Картинку - конечно, без проблем.

Rosc можно рассчитать, рассчитав требуемую длительность tOFF, а её можно рассчитать по формулам (у меня tDIS - это tOFF)

8c6063fb88bd248f669c8df9c407c358.png


вот из последней, зная, что I1 - ток первого шага (те самые 0.098*ILim для 16 микрошагов), получаем K1, из K1 - tDIS, а уже из неё - Rosc.
При этом FastDecay - какой уж получится (тоже можно посчитать).
17.05.19 в 13:51
0
Рабочие формулы расчёта установившегося цикла заряда-разряда в общем виде ("C" - заряд, "D" - разряд)
772a282c1adb2ef38b24f24c9c4d8294.jpg

Ndiode - кол-во включенных последовательно диодов (от 0)

Uc = Upow - Udiode*(Ndiode)
Ud= -(Upow-Udiode*(Ndiode)) (отрицательное!)для Fast Decay
Ud= -Udiode*(Ndiode) (0 или отрицательное!) для SlowDecay с Ndiode диодами, включенными последовательно (а Uc = Upow - Udiode*(Ndiode))

Также не забываем, что Id не падает ниже 0 (в FastDecay драйвер, с диодами - падение напряжения на диодах при переходе через 0 становится =0).

Вклад диодов обозначен красной рамкой, Kd будет близко к 1, именно потому диоды эффективно снижают (Ild - отрицательный) минимальный ток в обмотке. Каждый диод с падением напряжения 0.7В даст при R=3 снижение тока до ("до" - потому, что ток не будет отрицательным): на A4988 - 230мА, на DRV8825 - на 207мА.

Табличку посчитал - зависимость минимального тока через обмотку Ic от Rosc в SlowDecay для A4988 (tBLANK=1us) без диодов
Снижение Upow снижает ток пропорционально.
be994654642c54531a037a4eeffa7e13.jpg


Частота PWM будет почти пропорциональна I(1/16), численно в 4-4.1 раза ниже (т.е. от 76кГц при 10к до 15.9кГц при 51к).
Плюс вагон гармоник на более низких частотах.

Например, ток 98мА (ток первого шага при Itrip=1А) можно получить:

1) установив Rosc=33.5к при питании 12В, частота 24кГц
2) установив Rosc=25к и снизив напряжение питания до 9В, частота 32кГц
3) установив 1 (2 встречно-параллельно) диод, Rosc=9.2к, напряжение питания 12В - частота 82кГц

Рецепты на любой вкус.


Сейчас для DRV8825 посчитаю.
17.05.19 в 14:10
0
какой Rosc нужен при питании 24в и какая будет частота?
17.05.19 в 14:35
0
Не менее 69к, 11.8кГц. Но я не уверен, что такой Rosc в допустимых пределах (не пишут же, "от и "до").
17.05.19 в 13:58
0
Для DRV8825 всё просто, раз нельзя менять параметры цикла.
Минимальный ток в системе с R=3 и обмоткой 3мГн будет 457мА, вообще без вариантов.
Чтобы снизить его до тока первого микрошага (49мА. при Itrip=1А), надо 2 диода, каждый сбросит по 207мА.
Всё, точка.
При снижении напряжения питания до минимально допустимого 8.2В минимальный ток = 312мА - даже так один диод ничего не решает, всё равно надо 2.

В общем-то, по этим формулам можно рассчитать все описывемые в сети случаи успеха-неуспеха установки различных смусеров на эти 2 типа драйверов. На A4988 бывают разные Rosc, бывают разные диоды (например, Шоттки - кстати, неплохая идея ставить Шоттки и увеличивать Rosc, это снизит нагрев смусера, но частота PWM не упадёт так уж сильно) - на большинстве модулей с A3988 установлены резисторы 15к, и даже 1 SS35 или SS36 (0.35В) даст нужный эффект. Два SS32 (0.55В) будут работать и при 12к. Для Anet (Rosc=10k) нужно падение напряжения 0.62В - тут уже нужен обычный диод (или 2 SS35)/
17.05.19 в 14:04
0
а откуда у вас эти формулы? можно источник?

перечитал свое сообщение - криво объяснил про уменьшение крутящего момент не валу. дополняю.

с диодами момент тоже может остаться таким же как и при хаке с резистором - двигатель управляется током не напряжением. проблема случится если мотор высокоомный, напряжение питания низкое. добавляем диоды на которых падает 1.4в и получаем ситуацию когда ток через обмотку на 100% шаге не достигает максимума Imax = (Uпит - 1.4в)/R, что равносильно уменьшению крутящего момента.

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

для всех владельцев А4988 есть другой метод - замена микросхемы на drop in replacement A5985 с патентованной функцией Adaptive Percent Fast Decay (APFD) устраняющей проблему детектирования малых токов в режиме микрошагов. стоит она столько же как и сборка диодов с аликспресс. есть в наличии на digikey
17.05.19 в 14:32
0
"а откуда у вас эти формулы? можно источник?" - они выводятся из закона Ома и формулы зависимости тока в индуктивности.
"проблема случится если мотор высокоомный" - да, но Вы же понимаете, что 1.4 от 12 - это немного, а вот 1.4 больше 0 - в бесконечность, что и даёт _очень_ заметное ускорение спада тока в SlowDecay. Проще говоря, если высокоомный (но сколько? 10 ом?) двигатель не "насыщается" с двумя диодами от 12В, можно поднять напряжение до 13.4, всё получится, а вот выигрыш на спаде остается.

"замена микросхемы на drop in replacement A5985" - ну это как бы метод совсем не для всех владельцев A4988. У меня на Anet драйвера распаяны. Сдувать я умею, паять QFN - не особо. Но и сдувать могут не все владельцы. А поставить смусер - любой.

Но я пишу это всё не для того, чтобы поспорить, какой метод лучше. Я так оставляю для себя памятку с формулами и рассуждениями, иначе затеряется в документах. А задача - разобраться, осознать, понимать, что делать, если встречаются грабли, и делать не "тыком", а осмысленно и в соответствии с ситуацией.

Формулы, кстати, заметно упрощаются, если считать как аппроксимацию экспоненты малого значения. Тогда некоторые вещи становятся ещё очевиднее.
17.05.19 в 14:52
0
Смотрите, какая красота в случае токов заметно меньше предельных (и красота эта, в общем-то, подсознательно логична)
56bae532954045243c4c0f3a9a03d1e6.jpg

Это упрощённая формула условия, при котором за время Decay ток упадёт до 0 (т.е. ток стабилизируется в области 0).

Для DRV8825 это даст 0.13*Upow, т.е. при 12В - требуется 1.5В. Это отличается от "правильного" расчёта (1.57В), но отлично наводит на вопрос - как вообще TI могла предполагать работу своего изделия на 1/32 микрошага? Для каких моторов и источников питания? Или работа на малых скоростях вообще не предполагалась? Почему тогда об этом ни слова в документации.
17.05.19 в 15:41
0
Я думаю что работа на малых скоростях не предполагалась, а не указали потому что для профи это как 2х2=4. Они ж не думали что папуасы типа нас будут DRV8825 в 3D принтеры пихать и загонять его в непотребные режимы.

А потом смотреть на плату с диодами как абориген на бусы. А всего то надо резистор перепаять. :)
17.05.19 в 16:10
0
"всего то надо резистор перепаять" - каждому свой рецепт. Тем более, что сейчас мы говорим про DRV8825, а резистор - на A4988 (да и не решение это на все случаи).
17.05.19 в 15:31
0
А вот встречный вопрос, риторический.
Как для системы с известными параметрами (двигатель, питание, драйвер) рассчитать минимальную частоту шага, при которой не будет пропусков?
Это частота, обратная времени набора тока от 0 до тока первого шага (потому, что, чтобы не было пропуска, именно в этот момент драйвер должен получить импульс перехода на следующий шаг).
Если без диодов:
Для A4988, 3 Ома, 3мГн, 12В, 1А это время = 24.8 мкс, т.е. пропуск (пусть совсем незаметный) будет при любой частоте ниже 40.3кГц, а это 400мм/с на стандартной шестерне. И только Rosc больше 33.5к это решит.
"Забиваем" на 1-й шаг, смотрим, когда оно не будет пропускать хотя бы второй: 50мкс (300мм/с) (или Rosc от 16k).
А третий? 75 мкс или Rosc от 10k

И т.д.
Так что стандартная плата Anet пропускает 1й и 2й шаги практически всегда, просто это не особо заметно.
17.05.19 в 15:55
0
А вот встречный вопрос, риторический.
Как для системы с известными параметрами (двигатель, питание, драйвер) рассчитать минимальную частоту шага, при которой не будет пропусков?
Это частота, обратная времени набора тока от 0 до тока первого шага
Да именно она родимая. Именно это я и пытался вам объяснить все это время.
17.05.19 в 16:09
0
"Именно это я и пытался вам объяснить все это время." - да? Я этого не заметил, если честно. Наверное, потому, что нет нужды мне это объяснять.

Кстати, Вы ведь понимаете, что нельзя считать, что, раз ток не пролетает мимо шага, значит, всё хорошо и можно считать работу драйвера штатной?
17.05.19 в 20:21
0
Еще немного иллюстраций.
Моделирование тока в обмотке 3мГн, всё те же 3 Ома, 12В, A4988, разные Rosc, есть диод ("ххК-.7"), нет диода ("ххК-0"), частота шага 1 кГц (условно 10мм/с), шкалы - "мкс/мА" - как и говорил, Anet (10К) мимо 1 и 2 шагов.
499b140fdbcef09542c725b1c3160ed1.jpg

Те же 3мс, 10 кГц (100мм/с)

e554166271ac71d9d98335142657508c.jpg
17.05.19 в 20:52
0
Rosc=10к, с диодом и без, 10кГц (любопытно, что на участке с Mixed Decay диод также немного "помогает", что логично).
Также видно образование гармоник 1/2 от частоты PWM (26мкс)

e4dda5846e8a907b97baf53f03f233cb.jpg
17.05.19 в 22:07
0
Сравнение A4988 (10к, 16 микрошагов) и DRV8825 (на удвоенной частоте, 32 микрошага) с диодами и без на малой скорости (частоте)
Рост синусоиды:

7bfe508a71b26415f78c09a60b780cb6.jpg
17.05.19 в 22:41
0
24.06.19 в 11:18
0
Индуктивность это катушка которая находится внутри шагового двигателя помимо реактивного сопротивления индуктивности имеет ещё и ёмкость ,с помощью ёмкости можно приблизить индуктивностьт к 0.А ёмкости в ваших формулах нет

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Адаптация ARDUINO MEGA 2560 под нужды 3D печати.

Как сделать сувенир своими рукам при помощи 3д печати.

Zortrax предлагает биосовместимые стоматологические фотополимеры

Восстановление Anet A6 после неудачной прошивки

Видео: Live-обзор 3d принтера Picaso 3d Designer X. Распаковка и первый пуск.

ExOne демонстрирует новый 3D-принтер для печати литейных форм