Настройка ограничения тока на TMC2209 через V_ref
В интернете очень много разных “формул” для расчёта напряжения на подстроечном резисторе, задающем ограничение тока RMS, и все они разные. Лучше почитать даташит…
Важно уточнить, что на данный момент я не использую UART протокол в драйверах и все значения регистров внутри драйверов после включения остаются по умолчанию. И вот по умолчанию там сконфигурировано использование Vref для масштабирования ограничения по току и использование внешних Rsense регистров для задания максимально “доступного” тока. Эти резисторы ставятся на BRA(23), BRB(27) пины и их легко найти на плате:
Это фото моего драйвера и на нём жёлтыми рамками выделены Rsa, Rsb резисторы (те самые Rsense). На них написано R110 что равно 110мΩ (0.11Ω). Без этого значения просто не возможно ни чего посчитать. И эти резисторы могут быть какими угодно у разных производителей плат драйверов и каким образом кто-то что-то в интернете может рекомендовать не призывая узнать номинал резисторов – мне не понятно.
Итак, миссия 1 выполнена и значение Rsense узнали. Теперь нужно найти формулу расчёта ограничения RMS тока в даташите:
Осталось только разобраться немного с Vvref. В даташите сказано, что значение (Vvref / 2.5) используется как множитель к ограничению тока, заданному Rsense резисторами. То есть если, например, Vvref == 2.5, то множитель будет == 1.0, а если, например Vvref == 1.0, то множитель будет равен 1.0/2.5 == 0.4. Значение напряжения Vvref выше 2.5 трактуется как 2.5, то есть множитель всегда будет равен 1.0 при Vvref >= 2.5.
Как ранее стало известно, у меня стоят Rsense резисторы на 110мОм, подставим это значение в формулу и упростим её:
I_rms = (325 / (110 + 20)) * (1 / sqrt(2)) * (V_vref / 2.5)
I_rms = 2.5 * 0.7071 * (V_vref / 2.5)
Тут номиналы резисторов Rsense так удобно подобраны, что умножение и деление на 2.5 можно сократить и получим:
I_rms = 0.7071 * V_vref
V_vref = I_rms / 0.7071
И да, на некоторых сайтах такой множитель рекомендуют, но без знания номинала Rsense нельзя быть уверенным, что всё посчитано правильно. И ещё на некоторых сайтах написано, что “Значение (Vref) не должно превышать 1.2 В или драйвер может выйти из строя“. Вот откуда это взялось??? В даташите не только сказано, что диапазон настройки Vvref до 2.5V (а вообще до 5V, но оно “обрежется” до 2.5V при расчёте множителя), так ещё и дополнительно сказано следующее:
то есть ниже 0.5V вообще не надо опускаться, да и лучше больше 1.0V ставить значение, в диапазоне 2-2.4V (но для этого надо правильно подобрать Rsense конечно). И сжечь мой драйвер, выставив Vvref в 2.5V, ни как не получится, ведь если посчитать по формуле максимальный ток: I_rms = 0.707 * 2.5 получим ток 1.767A, что ниже заявленного продолжительного RMS тока:
И ещё один момент: не стоит использовать результат расчёта по формуле “как есть”. Это “идеальное” значение, но номиналы Rsense резисторов могут оказаться не очень точными да и мотор может не держать заявленный ток и потому лучше выставить значение на 10-20% меньше, чем посчитанное по формуле, для безопасности.