Arduino ложно перезагружается из-за энергопотребления

У меня есть простая схема, изображенная ниже, которая использует Arduino для управления двумя большими двунаправленными двигателями через 12-вольтовые реле. Обычно это работает, но иногда Arduino сбрасывает сам себя.

Я думаю, что происходит то, что двигатели потребляют много энергии при запуске, что приводит к кратковременной потере мощности Arduino, после чего он перезагружается. Чтобы исправить это, я добавил электролитический конденсатор на 1000 мкФ и керамический конденсатор на 22 мкФ. Кроме того, я «отгородил» плоскости питания/земли Arduino диодами 1N4001, чтобы двигатели не могли украсть заряд у Arduino во время падения мощности.

Глядя на VIN/GND на Arduino, я все еще вижу случайное падение мощности, но с диодами/конденсаторами всплески очень короткие и резкие. Что удивительно, так это то, что эти падения мощности не всегда предшествуют перезапуску, насколько я могу судить.

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

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

верхний слой печатной платы нижний слой печатной платы Падение напряжения

Редактировать 1 Вот схема управления двигателем. Окружающие реле находятся на GND, только одно включено во время движения. Глядя в прицел, я вижу какие-то шипы на воротах. Я добавил керамические конденсаторы на 10 мкФ к линиям затвора, но это не решило проблему перезапуска полностью.Схема двигателя

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

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

Редактировать 2 Я думаю, что проблема в том, что реле иногда дуги, что вызывает электромагнитные помехи, которые мешают Arduino. Мне нужен демпфер RC, чтобы устранить это, но как мне правильно подключить такой снаббер к моей схеме?

Я правильно понимаю, что вы также поставили диоды на заземляющий слой? Вам это не нужно. Вероятно, это вызывает больше проблем.
Конечно, звучит как проблема с помехозащищенностью либо излучаемой, либо кондуктивной. Покажите некоторые данные, чтобы доказать это, используя очень короткий дифференциальный щуп или два идеально согласованных щупа 10: 1 на одном и том же зашумленном сигнале с плоской линией в режиме AB, используя наконечник и кольцо щупа только до 4 тестовых отверстий с пружинным щупом, он готов к использованию. для захвата перекрестных помех, сброса пиков или сдвига излучения или заземления, сбоев питания и т. д. Проведите точные измерения. Попробуйте колпачки RF, балуны и кабели STP.
DKNguyen, вы правы, у меня был диод на заземляющем слое. Я только что попробовал без этого диода, и я все еще получаю сбросы. Я считаю, что это чаще, чем раньше, но я не уверен
Не смотрите только на потребляемую мощность двигателя. Посмотрите еще на эти реле!
Абель, да изначально я думал, что это из-за реле, но система на 100% стабильна при отключенных двигателях. Я просто не могу понять: почему диоды не предотвращают этот всплеск полностью? Как убегает ток?
Ничто не может полностью предотвратить спайк. Даже диоды ломаются — думайте об этом как об ударе молотком — прочный, но жесткий материал (диод) против куска резины (конденсатор). Если двигатели подключены к отдельному изолированному источнику питания, тогда может применяться ваш вариант «100% стабильный». В противном случае ваш источник питания, вероятно, зависит от двигателей. Диоды не могут компенсировать нехватку тока. Шапки могут лишь временно компенсировать это.
Можете ли вы дать характеристики блока питания, двигателя и реле? Особые требования к току и номинальный ток источника питания
@Abel Я знаю, что колпачки могут только временно покрыть текущее падение, но я подумал, что они могут покрыть время во время этого короткого падения V. Когда я вручную отключаю питание, я вижу очень медленное снижение V, чего я и ожидаю. Мой источник питания составляет 12 В 10 А, я тестирую один двигатель, который составляет 4 А без нагрузки и указан как 12 А с полной нагрузкой.
Диод в реальной жизни не идеален, он ведет и в обратном направлении, особенно Шоттки. Если вы хотите правильно удалить энергию утечки из катушек реле, вы должны использовать снаббер RDC, а не только рассеивать энергию на диоде. Кстати, вы не упомянули, какой блок питания вы используете, 1000 мкФ для больших двигателей - это немного. Опубликуйте все схемы, чтобы мы могли лучше увидеть возможную проблему.
Первое, что нужно сделать, это заменить диод, который находится между обоими «GND», проводом. Затем, переходя к мете, вы публикуете фрагменты схемы, которые, по вашему мнению, помогут решить проблему, но если вы задаете вопрос, это означает, что вы не знаете, в чем проблема, поэтому фрагменты схемы, которые вы публикуете, не помогают. Можешь выложить всю схему?
Бьюсь об заклад, решение зависит от контакта разъема двигателя, который подключен непосредственно к Arduino с помощью трассировки. Это верхний контакт в обоих разъемах «MR». Я понятия не имею, что он делает.

Ответы (3)

Ваши N полевых транзисторов перевернуты.

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

Должно быть:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Я думаю, что я просто ошибся в своей схеме, на печатной плате источник подключен к GND
Тогда, пожалуйста, опубликуйте точную схему... иначе очень сложно устранить неполадки..
Может быть полезно: electronics.stackexchange.com/questions/28251/…

На схеме я вижу, что у вас есть диоды как на питании, так и на земле.

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

Было бы полезно иметь трассировку осциллографа, показывающую мощность двигателя и мощность Arduino одновременно. расширьте кривую, чтобы мы могли видеть ширину импульсов, чтобы определить вероятную причину. (лучше если есть возможность сделать скрин в прицел, а не фото, так будет понятнее).

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

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

Несколько лет назад я разработал аналогичную систему. Чтобы избежать падения напряжения, вызванного большой нагрузкой на пусковой двигатель, я увеличил напряжение батареи до 6 В с помощью повышающего преобразователя LT1949, хранящего энергию в большой емкости 2200 мкФ), а затем снизил его до 5 В, необходимых процессору (ATMega128). . Дополнительный 1 В, хранящийся в конденсаторе, позволил ему упасть до одного вольта, не влияя на питание процессора, и еще на 500 мВ или около того, прежде чем достичь минимального напряжения, требуемого для процессора. Это в три раза больше, чем можно получить, просто подключив большой конденсатор к источнику питания.

Эта система позволяла без проблем падать напряжению батареи примерно до 3 В и могла выдерживать 10 миллисекунд при еще более низком напряжении.

Это очень полезно. Чтобы уточнить, D16 обращен к источнику питания, но он находится на наземном уровне. Я попытался удалить этот диод, но, похоже, это увеличивает нестабильность. Вы все еще предлагаете мне удалить его?
@zeeman_effect - Можете ли вы предоставить схему, это очень неоднозначно, просто пытаясь отследить печатную плату.
Я добавил схемы для управления двигателем и питания Arduino.
К сожалению, у меня с собой только небольшой ручной прицел. Падения, которые я вижу, очень короткие, поэтому я думаю, что это связано с помехами. Если да, то как бы вы порекомендовали устранить это вмешательство?

Я добавил RC-демпфер вокруг каждой стороны реле Vcc / GND, так что всего 4 RC-демпфера. Это, казалось, решило проблему.

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