Как остановить сброс ESP32 при запуске двигателя?

Это мой первый пост здесь, и я новичок в электронике. Я пытаюсь управлять двигателем с помощью ESP32 Cam. См. прикрепленное изображение для довольно грубой схемы. Блок питания рассчитан на 2,4А. Я использую червячный мотор-редуктор 12 В постоянного тока 5 об / мин, такой как этот червячный мотор-редуктор постоянного тока 12 В.

Когда двигатель запускается, ESP32 сбрасывается (я понял это, заставив ESP мигать при запуске). Тем временем двигатель продолжает вращаться без перерыва (у меня есть ESPHome на ESP32, и я рассматриваю 2 контакта GPIO как блокирующие переключатели [только один может быть включен одновременно]).

Из чтения в Интернете кажется, что скачок напряжения при запуске двигателя может вызывать падение напряжения на ESP32 (потенциально называемое «отключением»), вызывающее сброс. Как я могу предотвратить это простым способом?

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

Ссылки на похожие выпуски:

Возможные решения

  1. Разный блок питания для мотора. Я пробовал это, и это работает, но я бы предпочел не использовать второй блок питания. Я думаю, что ESP32 потребляет ~ 250 мА, а двигатель ~ 100 мА, поэтому я думаю, что я в пределах спецификации блока питания 2,4 А.
  2. Диод Шоттки - такого у меня нет и ждать заказа не хочу
  3. «Развязывающие конденсаторы». У меня есть пакет разных электролитических конденсаторов. Что мне использовать и где их разместить?
  4. ШИМ - постепенно применяйте ШИМ, чтобы разогнать двигатель до нужной скорости. Будет ли это работать с моей схемой, с ШИМ перед повышающим преобразователем? В любом случае, повышающий преобразователь просто повысит его до 12 В, используя только конденсаторы или ШИМ?

Примечание

  • DRV8833 рассчитан на 10 В, поэтому я установил повышающий преобразователь на 10 В, а не на 12 В. Мотор по-прежнему работает нормально на 10v.

схематический картинка цепи

Редактировать

Большое спасибо людям, которые написали здесь, @winny, @vir, @bobflux и @thebusybee. Я реализовал метод ускорения PWM, который работает. На средних значениях ШИМ слышен громкий пронзительный скулящий звук, который исчезает, как только двигатель набирает скорость. Аудио доступно здесь: https://streamable.com/3xgxy0

Надлежащая развязка, подходящий диод свободного хода на двигателе, объемный конденсатор и хорошая компоновка? Покажите, пожалуйста, схему и макет. 2. Подойдет почти любой диод. 3. Никаких электролитов, подойдет только керамическая или полиэтиленовая пленка.
@winny - спасибо за ответ. Я примерно нарисовал свою схему и прикрепил ее. Вы видите изображение? У меня электролитический конденсатор на 470 мкФ. Я просто добавляю, что после блока питания с положительной ногой конденсатора на + 5 В и отрицательной ногой на землю?
Возможно, но с «пусковым» током, подаваемым на двигатель, ваши 5 В, вероятно, проседают слишком низко, и вам понадобится последовательный диод, чтобы двигатель не отнимал весь заряд у MCU. 470 мкФ = объемная емкость. Что у вас напрямую подключено к выводу MCU Vcc? Любая керамика на 100 нФ?
У меня нет керамических конденсаторов или диодов, но я закажу ассортимент для будущих проектов. Глупый вопрос - у меня светодиоды "светоизлучающие диоды". Можно ли использовать светодиод вместо диода? Контакт Vcc просто подключен напрямую к + 5 В USB.
Зависит от того, работает ли ваш MCU через какой-то LDO 3,3 В? Если у вас очень низкий уровень отсева на вашем LDO, вы можете использовать красный светодиод (самый низкий Vf), но Шоттки был бы идеальным. Если у вас есть LDO 3,3 В, вы также можете обойтись очень большим конденсатором непосредственно на Vcc. Если вы можете ШИМ двигателя и увеличивать рабочий цикл очень медленно и с достаточно высокой частотой, это может смягчить проблему.
О, двигатель, который вы связали, имеет ток останова 1,8 А, сравните это с током 60 мА без нагрузки… Это ток, который требуется при запуске, и даже больше при мгновенном реверсе.
@winny - я попробовал самый большой конденсатор, который у меня есть (470 мкФ электролитический), но все равно получаю сброс. Я думаю, что ESP32 можно отключить от 5 В или 3,3 В. Я отключаю его от 5v. У меня есть модуль AMS1117, поэтому я мог бы использовать 5 В, приложенный к нему, и отключить MCU 3,3 В.
@thebusybee - вот точный двигатель, который я использую (модель на 5 об/мин). Спецификации не указаны на странице Amazon, но она похожа на ту, на которую я ссылался в своем посте. amazon.ca/gp/product/B08GCM7FY7 . А, 1,8А это много. Я надеялся использовать зарядное устройство для телефона на 1 А, а не блок питания на 2,4 А.
Где вы разместили конденсатор 470 мкФ, до или после LDO?
Я не использую LDO. Я думаю, что на борту ESP32 есть один. Положите положительную ногу конденсатора на +5В, а отрицательную на землю.
Поместите его после встроенного LDO, непосредственно на линию Vcc MCU.
@winny, светодиоды обычно имеют очень низкую максимальную мощность. обратное напряжение, например, 2 В или около того. Так что в качестве фиксирующего диода он долго не протянет.
@TonyM Не зажим, серия для блокировки обратного тока. Но ваша точка зрения не менее верна, светодиод - действительно плохой выбор.
@winny, ах, понимаешь, что ты имеешь в виду :-)
@winny - встроенный LDO недоступен, поэтому я протестировал, используя свой собственный модуль AMS1117 (такой же, как встроенный LDO) и питая ESP32 от AMS1117 3,3 В. Подключил конденсатор + к AMS1117 3.3v out и - к GND. Я все еще получаю сброс
Я не понимаю, как это недоступно, но это был просто лейкопластырь, ваш двигатель все еще может тянуть шину 5 В почти до нуля. Можете ли вы плавно запустить его, увеличить ШИМ?
Потребуется некоторое время, чтобы понять, как использовать ESPHome для подачи ШИМ-сигнала и блокировки IN1 и IN2 DRV8833, чтобы только один из них был высоким одновременно. Отчитаюсь, когда разберусь. (LDO технически доступен, но на стороне MCU, обращенной к макетной плате, поэтому сложно получить доступ во время макетирования. Мне также нужно припаять непосредственно к нему. Поскольку это точно такой же LDO, как у меня [AMS1117], я решил, что это эквивалентно использованию моего собственного LDO и питанию 3,3 В. Тогда я мог бы продолжать использовать макетную плату)
Только что получил начальную попытку ускорения PWM! Звучит ужасно (послушайте аудио, я залил видео здесь — streamable.com/3xgxy0 ). Этот шум в порядке? И пока я не получу диод, сколько там опасности? Поскольку DRV8833 находится ближе всего к двигателю, не подвергается ли он риску протекания обратного тока?

Ответы (2)

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

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

Разный блок питания для мотора.

Использование наддува для двигателя напрашивается на неприятности. Было бы более логично иметь источник питания 10 В для сильноточных устройств и понижающий преобразователь для питания Pi от него. Кроме того, если ваши 10 В падают на несколько вольт под нагрузкой, оно началось с 10 В, поэтому его все еще достаточно для запуска Pi. С 5В меньше запас.

Я думаю, что ESP32 потребляет ~ 250 мА, а двигатель ~ 100 мА.

Двигатель будет потреблять в 10 раз больше при запуске и умножить на 2, так как вы повышаете от 5 В. Если буст выдает 10В 1А, он будет потреблять 2А от 5В. Выходная мощность зависит от входной мощности, а мощность = VxI, поэтому, если вы хотите получить в 2 раза больше вольт на выходе, вы получите в 2 раза больше ампер на входе. Для понижающего преобразователя применяется то же правило: выходная мощность зависит от входной мощности, но выходное напряжение меньше, что означает, что входной ток меньше входного тока.

«Развязывающие конденсаторы». У меня есть пакет разных электролитических конденсаторов. Что мне использовать и где их разместить?

На вашей плате полно мелких развязывающих колпачков, но на блоке питания можно поставить большой электролит.

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

Да.

Будет ли это работать с моей схемой, с ШИМ перед повышающим преобразователем?

Неа

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

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

Большое спасибо за объяснение здесь. Интересно, что проблема с контактным сопротивлением. Я надеялся создать прототип перед пайкой, но с этим явно проблема. Что касается электролитического конденсатора, могу ли я просто поставить 470 мкФ с положительной ногой на + 5 В и отрицательной ногой на землю, прямо у платы microusb? (у меня смешанная сумка конденсаторов, с другими номиналами тоже). Теперь я рассмотрю применение ШИМ из программного обеспечения ESPHome.
@maurera Мера, мера, мера. Если у вас нет хорошего осциллографа, поэкспериментируйте с разными конденсаторами и, наконец, используйте кратное наименьшему значению, которое сработало.
Работает в настоящее время! Только что опубликовал правку в конце моего исходного поста. Спасибо за помощь!
Если звук вас беспокоит, измените частоту ШИМ на что-то неслышное, например, 25 кГц (убедитесь, что DRV поддерживает это).
@bobflux, использование сверхзвуковых частот ШИМ (выше 20 кГц или около того) для автоматического отключения этого двигателя является техническим мифом (см. electronics.stackexchange.com/a/243336/115257 )
bobflux и @TonyM - сработало! Частота ШИМ по умолчанию в программном обеспечении была 1000 Гц. Я перешел на 25000 Гц, и теперь высокочастотное нытье исчезло.
Отличные новости. По-прежнему миф, что автоматически работает ШИМ, далеко не соответствует действительности. Но я рад, что это сработало для вас здесь.
Я не думаю, что это сработает автоматически, но стоит сначала попробовать, если сработает...

Я предлагаю ШИМ, так как у вас все равно есть микроконтроллер. Вам все равно понадобится конденсатор, но не смехотворного размера. Если вы пытаетесь запустить его от USB-конвертера с помощью USB-кабеля, вероятно, 28AWG, ваш начальный скачок захлестнет его, если вы попытаетесь запустить его на полной скорости.

Спасибо за ответ. Мне нужно взглянуть на программное обеспечение ESPHome, чтобы увидеть, как применить pwm для плавного запуска. Почему калибр провода влияет на пусковой импульс? Есть ли для этого термин, который я могу найти в Google?
Когда я реализовал быструю и грязную линейную ШИМ на Arduino для линейного привода, я просто использовал вложенные циклы for, которые разбивали весь период ШИМ на время включения и время выключения и линейно увеличивали одно за счет другого. Я уверен, что есть более элегантный способ сделать это, но это результат, к которому вы должны стремиться. Калибр провода влияет на падение напряжения, которое вы видите при запуске двигателя, поскольку напряжение, когда оно поступает на вашу плату, уменьшается на I*R. При скачке напряжения 2 А, рассчитанном bobflux, вы увидите 2 * 2 А * 0,212 Ом (1 м, провод 28AWG), что составляет 0,848 В.
Можно было бы проверить контактное сопротивление на беспаечной макетной плате, я ставлю минимум на 0,2 Ом.
Я только что измерил, получил ровно 0,2 Ом (щупы моего мультиметра слишком толстые, чтобы поместиться в отверстия на макетной плате, так что 2 перемычки по 10 см в соседних отверстиях)
Работает в настоящее время! Только что опубликовал правку в конце моего исходного поста. Спасибо за помощь!