Двигатель постоянного тока с ШИМ не работает под нагрузкой

Я пытаюсь построить робота с помощью Arduino Uno и H-Bridge SN75441.

Робот имеет 2 двигателя с номинальным напряжением 1,5 В. Я настроил его с помощью этого туто: http://www.mlbelanger.com/arduino/ard-bot/ Итак, схема такая (я просто не подключил вывод Arduino Vin к выводу 8 микросхемы): ( источник: mlbelanger.com )

Как видите, H-Bridge поддерживает только до 4,5 В для двигателей. Вот почему мне пришлось использовать вход питания 5 В (адаптер 5 В при 1 А) для питания двигателей с ШИМ (80/255, обычно дает 1,5 В ) для регулирования мощности до 1,5 В.

Итак, вот моя проблема. У меня два случая:

  • тот, где двигатели не имеют нагрузки, что означает, что робот находится в воздухе. Двигатели обычно работают при 1,5 В при 0,26 А.

  • второй, с которым у меня проблемы: он работает при 0,5 В при 0,145 А. Таким образом, напряжение падало при увеличении нагрузки. Робот не продвигается вперед и издает какой-то высокочастотный шум. Если я использую батареи 1,5 В AA, подключенные непосредственно к двигателю, он работает хорошо, поэтому проблема не в нагрузке, а в настройке ШИМ.

Ответы (3)

Если вы посмотрите на конструкцию драйвера моста H, вы можете быть удивлены тем, как он ведет себя в условиях нагрузки. Ваш коэффициент ШИМ составляет 80/255 = 0,313, и вы могли бы подумать, что драйвер, питающийся от 5 В, будет производить: -

Vвых = 5 В х 0,313 = 1,57 вольт. Но этого не произойдет. По моим оценкам, при небольших нагрузках драйвер способен повышать напряжение примерно до 4,3 В и понижать примерно до 1 В - это означает, что предполагаемая цель 5 В на самом деле больше похожа на 3,3 В, что делает ваше реальное выходное постоянное напряжение (из-за ШИМ) более похожим на 1,04. вольт.

Это ухудшается при более высоких токах нагрузки. В спецификации указано, что выходное напряжение может повышаться до 3,6 В и понижаться до 1,2 В при подаче 1 А. Это означает, что при указанном коэффициенте ШИМ выходное напряжение будет:

80 255 × ( 3,6 1,2 ) В "=" 0,753 В

Таким образом, без изменения коэффициента ШИМ при небольших нагрузках на двигатель подается напряжение 1,04 В, а по мере увеличения механической нагрузки оно упадет примерно до 0,75 В при 1 А:

введите описание изображения здесь

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

Но действительно ли это оправдывает обратно пропорциональную нагрузку и напряжение? Это больше похоже на минимум и максимум, который нужно «принять во внимание» здесь, в зависимости от других обстоятельств... но, может быть, я ошибаюсь? Потому что, если я тестирую с щелочной батареей 1,5 В, она остается 1,5 В, несмотря ни на что.
Я могу только сказать, что было несколько человек, пойманных с этой проблемой.
Так вы также говорите, что я должен получить еще один Н-мост? Я думала, что это популярный...
Я не думаю, что это очень подходит для вашего приложения, если вы не можете жить с потерями и стабилизироваться с помощью контура управления.
Хм, так что мне лучше построить собственную схему с диодами и транзисторами?
Вокруг есть схемы с низким падением напряжения, и, скорее всего, вам нужно искать схемы с выходными каскадами MOSFET, такие как ti.com/general/docs/lit/… - у них комбинированное сопротивление 0,33 Ом, то есть от питания 5 В. вы теряете 0,33 В при 1 А. Это поверхностный монтаж, поэтому DIP может подойти вам лучше, но TI, вероятно, ребята, которые ищут правильную деталь.
Другая вещь, которую вы можете сделать, это использовать операционный усилитель, настроенный дифференциально, для измерения фактического напряжения постоянного тока. Подайте его на вход АЦП и соответствующим образом отрегулируйте ШИМ. Удачи. Вы доберетесь туда методом проб и ошибок. Это никогда не бывает так просто, как кажется на первый взгляд!!
Я не понимаю; я не могу просто кормить его напрямую, так как это 5v? Микросхема драйвера включает внутренние диоды для защиты.
Я не понимаю вашего вопроса.
Вы сказали, что я должен использовать операционный усилитель для измерения фактического постоянного напряжения, проходящего через двигатели, верно? Разве я не могу просто подключить его параллельно к входному контакту Arduino, а затем измерить оттуда?
Нет, поскольку ШИМ пульсирует вверх и вниз, и вам нужно измерять непосредственно на двигателе (а не на земле), иначе вы не сможете точно определить фактическое напряжение двигателя ПЛЮС, операционный усилитель можно настроить так, чтобы сглаживать выход ШИМ. простая процедура АЦП в программном обеспечении. Проще, подозреваю, найти альтернативную деталь на SN75441.
Ах... ну, я не могу позволить себе покупать другие компоненты для этого... но я приму это во внимание в следующий раз. Думаю, я могу просто установить ШИМ, который выдает 1,5 В при типичной нагрузке, и надеяться, что он не сгорит без нагрузки... Большое спасибо!
Иногда нужно рискнуть!!!
Извините за повторное открытие этого, но даже если ШИМ пульсировал вверх и вниз, не могу ли я по-прежнему измерять напряжение, потому что я уже знаю, что частота ШИМ постоянна?
Частота может быть постоянной, но рабочий цикл не...
Почему нет? Разве в этом случае не всегда 80/255?
@ user35485 Вы ​​можете измерить напряжение на двигателе, но это необходимо сделать с помощью дифференциального усилителя и фильтра для преобразования дифференциального ШИМ-сигнала в опорный сигнал 0 В, затем сглаженного фильтром, а затем измеренного (возможно, с использованием входа АЦП). Это дает вам уверенность в том, какое точное напряжение вы подаете на двигатель, но это все. В большой схеме механическая нагрузка двигателя изменится, и это замедлит двигатель, поэтому некоторые люди предлагают использовать обратную связь по скорости или по положению.
Хорошо, мне понадобятся дополнительные компоненты, так что, наконец, я буду придерживаться этого немного рискованного дизайна. Еще раз спасибо!

Проблема заключается в отсутствии позиционной обратной связи.

Двигатели будут работать, как и ожидалось, на открытом воздухе, однако, как только они механически нагружены, вам необходимо знать положение ротора, чтобы вы могли замедлить ШИМ и позволить валу вращаться.

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

Во-вторых, существует огромная разница между драйвером H-Bridge и настоящим H-Bridge. Задача микросхемы драйвера состоит исключительно в насыщении базы/затвора серии из 4 мощных MOSFET/BJT в H-конфигурации, как показано здесь:

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

Хм, на самом деле у меня нет компонентов для обратной связи (кодировщик, я думаю). Есть ли другой способ?

Вы не принимаете во внимание падение напряжения, которое вносят выходные транзисторы, оно может достигать 1,5 В для высокой стороны и 2 В для низкой стороны по мере увеличения тока (указано @ 1 А).

Вы рассчитали коэффициент заполнения ШИМ для вывода в процентах от входного напряжения, но по мере увеличения тока, потребляемого двигателем (когда он загружается), будет дополнительное падение напряжения (падение VCE) на выходных транзисторах, плюс я не знаю Не знаю, если питание 12 В тоже падает.

Обычно вам нужна какая-то обратная связь, чтобы определить выходной ток и соответствующим образом изменить режим работы ШИМ.

Да, я думаю подать напряжение на двигатели с помощью цифрового контакта Arduino... это нормально? Я имею в виду, стоит ли мне беспокоиться о всплесках или о чем-то еще (эта микросхема должна включать диоды, если честно).
@ user35485 Цифровой вывод не может измерять напряжение, вам понадобится аналоговый вывод. Я не думаю, что буду подключать напряжение двигателя напрямую к контакту ввода-вывода, обычно рекомендуется добавить буфер, например операционный усилитель.
разве он не поддерживает до 5,5 В? Почему могут быть риски?
@ user35485 Риски заключаются в том, что каждый раз, когда питание катушки индуктивности отключается (т. Е. При переключении ШИМ), катушка индуктивности создает обратную ЭДС с пиками, которые могут значительно превышать напряжение питания. Катушки двигателя являются индукторами. Существует большая вероятность жареного Arduino.
@AnindoGhosh да, но драйвер включает в себя обратноходовые диоды .. так что это должно сработать?