Отчет о измерении тока

Делюсь некоторыми промежуточными результатами по созданию замены платы управления сервами. Напомню, речь идет не о формирователе ШИМ сигналов для серв, а о замене внутренностей сервы. То есть прямое управление двигателем, чтение положения с резистора, измерение тока. Вот о последнем и напишу.

Это не обзор всех методов измерения тока, а лишь короткое описание конкретного устройства.


Самое главное, измеряется ток через двигатель, а не ток питания H-моста. То есть датчик стоит последовательно с двигателем. Схема самая простая, дифференциальный усилитель на одном ОУ.



Известный недостаток такого включения ОУ это необходимость точного согласования резисторов обратной связи. Я набирал похожих из горсти однопроцентных резисторов.

Выбранный ОУ имеет полосу частот 1 МГц, то есть в такой схеме с усилением ~45, от полосы остается ~22 КГц. Я делаю замеры с частотой 1 КГц (и думаю этого достаточно) так что полоса слишком широка. Для этого на входе ОУ поставлен НЧ фильтр с частотой среза ~3 КГц.

Код писался очень медленно и редко, но недавно я собрал телеметрию с устройства и посмотрел работу H-моста осцилом. Результат оказался хорошим, по крайней мере мне так кажется.



На графике ток в амперах, время в миллисекундах. Показан процесс поворота сервы на 40 градусов, при ограничении ШИМ заполнения 25%. Здесь есть, что поразглядывать. На первом спаде когда скорость и ток уже стабилизировались через шум виден какой-то постоянный уровень. А при торможении похоже есть колебательный процесс, который я видел при моделировании и долго считал это багом, искал где :)

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

Мое решение проблемы, конечно же идентификация программными методами. Немного головы и матчасти. В каком положении находится правое плечо H-моста есть известная информация. Оно переключается только когда надо изменять направление вращения, ШИМу подвержено лишь левое плечо. Тогда можно просто оценивать два смещения нуля для каждого положения правого плеча.

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

L: -0.00611
H: 0.00427

Это в амперах, совсем мало, даже меньше разряда АЦП, наверно мне повезло с резисторами. Когда активности нет, то правое плечо переключается с частотой 4Гц (левое соответсвенно ему подыгрывает предотвращая ток), чтобы была возможность оценить оба числа.

Калибровку коэффициента преобразования из кода АЦП в А не производил, это не очень важно для моих задач управления сервой.

Ссылки

forum.easyelectronics.ru/viewtopic.php?f=17&t=12163
bitbucket.org/amaora/phobia-servo
  • +2
  • 06 мая 2013, 22:41
  • amaora
  • 2
Файлы в топике: tel.tar.gz, sci-r1.pdf.gz

Комментарии (20)

RSS свернуть / развернуть
А чем вас не устроила схема измерения тока моста? Это конечно не всегда ток двигателя, но и КЗ из-за одного пробитого полевика/сквозного тока покажет. Да и сильно уж проще измерение тока моста. Например в проекте OpenServo выбрали метод измерения тока моста, и вместо схемы на ОУ выбрали интегральный усилитель напряжения на шунте.
0
  • avatar
  • amx
  • 07 мая 2013, 15:29
Вот именно тем, что это не всегда ток двигателя. Хотя наверно лучше сказать это совсем не ток двигателя. Если измерять ток моста, и пропускать измерение через НЧ фильтр, то результат будет зависеть от заполнения ШИМ. Если без НЧ фильтра, то нужен неоправданнно резвый ОУ и какая-то синхронная схема сэмплирования, слишкос сложно.

Получаемую величину наверно можно использовать для моих целей (оценка скорости и параметров двигателя), но как, я не думал. Все равно остается случай когда датчик показывает 0 а через двигатель может идти какой-то ток.

Кстати пересмотрел много датчиков тока после ознакомления со схемами OpenServo. Не нашел ни одного подходящего и при этом доставаемого. Большинство однополярные, или для батарейных систем, для измерения тока заряда/разряда или в большом корпусе.
0
IMHO ACS-ки разного калибра лежат если не во всех магазинах, так через один. И однополярные, и биполярные. Да и по цене они не сильно кусаются (сравнимо с хорошими операционниками). Напряжения (синфазные) им сугубо пофиг, полоса приличная (80-100кГц), обвязки никакой не надо (не считая емкости по питанию и, при необходимости, емкости в фильтр, если широкая полоса не нужна).
0
Они в SO-8, великоваты. И ещё эта импульсная схема подстройки нуля, мне не нравиться сама идея делать так. Без этого шум присутсвует.

В больших корпусах я бы лучше взял что-то такое как AD8205.
0
И ещё эта импульсная схема подстройки нуля, мне не нравиться сама идея делать так. Без этого шум присутсвует.
Это, скорее, схема выборки-хранения. И шумов у нее, как раз, меньше, чем у традиционных подходов.
0
Кстати, а почему, все-таки, меряется ток через двигатель, а не через мост? При отсутствии сквозного тока, ток через мост и ток через двигатель равны, насколько я понимаю.
0
Вот там где началось торможение (ток сменил знак), это открылись нижние транзисторы (или верхние, не важно), ток пошел через них, сквозного нет, через двигатель есть.
0
Да, написал, потом уже понял, что в режимах торможения нужно таки через сам двигатель мерять.
Кстати, а почему бы просто не взять готовый датчик тока, ту же ACS712 ампер на 5?
0
Зачем нужен конденсатор C13?
0
Фильтр, ~3кГц.
0
Чтобы не заморачиваться с точностью резисторов в такой схеме измерения тока, надо использовать инструментальный усилитель. Это тот, который назывался раньше «сверхдифференциальный усилитель», типа AD620, INA118 и т.д.
0
Не удалось подобрать подходящий, для новой платы буду снова их разглядывать.
0
AD8421 посмотрите, у него хедрум 2.9 В, то есть можно измерять с резистором 0.01 +- 145 A, неплохая скорость, низкий шум и все такое. Умеет работать с однополярным +5В питанием, как у вас нарисовано. При однополярном просто тычете ему в REF собственно, REF вашего АЦП, диапазон переместится, соответственно, до REF — 1.45 в минус и до REF + 1.45В в плюс, но не выше REF. Если у вас какая-нибудь «старая» мега, с встроенным опорником 2.5В, то получается вы можете измерять ток 105А в минус и 40А в плюс.
Чего тут еще выбирать? :)
ИМХО, остальные схемы
0
Чорт, не то нажал. ИМХО, остальные схемы, сливают схеме измерения тока на резисторе. Если же хотите, по каким-то причинам, чтобы было rail-to-rail — то тут инструментальный не подойдет.
0
ИМХО, остальные схемы, сливают схеме измерения тока на резисторе.
Какие именно схемы и почему сливают?

P.S. несколько удивляет оптимизм по поводу измерения 100+А на 10mOm резисторе. Сколько на нем при этом будет рассеиваться вы считали?
0
Зачем мне считать? Я говорил о точности, топикстартер не собирается мерять такие токи. Для его задач — резистивный измеритель тока — самое оно.
0
Какие именно схемы? Схемы, основанные на измерении магнитного потока, вестимо. А что, есть еще какие-то? Просветите, с удовольствием просвещусь :)
0
Какие именно схемы? Схемы, основанные на измерении магнитного потока, вестимо.
Так почему, по вашему мнению, они сливают?
0
Потому, что они сложны для пониамния, сиреч дебильны :)
0
Вас не затруднит перевести на русский то, что вы написали? А то возникают сложности с пониманием написанного :)
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.