Ардуино перезагружается при включении мотора

Форум arduino.ua

#1 2019-04-19 23:46:03

Самопроизвольная перезагрузка

Добрый вечер.
Схема следующая: Arduino UNO сидит в корпусе, на нем Ethernet shield.
Питание DC 12V через разъем 2.5 х 5.5 мм на самом корпусе. С этого разъема берется питание для Uno и питание для катушки реле.
С Uno берутся 5V для питания самодельной платы. На плате через ограничивающие резисторы стоят 2 транзисторных NPN ключа — один включает пищалку (питающуюся от 5V), второй включает реле (т.е. замыкает катушку на землю). Реле шунтировано диодом как положено.

Когда это все находилось на столе в разобранном виде — все работало, но возможно из-за того что тесты не были длительными. Как только оно все было накручено на стенки самодельного корпуса начинает происходить какая-то дичь. Иногда через пол часа работы, иногда через считанные минуты реле начинает беспорядочно щелкать, а пищалка пищать. Arduino самопроизвольно уходит в перезагрузку, при инициализации 2 ноги дергаются в логическую единицу (реле должно включиться, пищалка пикнуть 3 раза, а после успешного получения данных из интернета — еще раз). При этом оно успевает пикнуть раз и уйти в ребут, в бесконечный цикл пока не выдернешь питание.

Грешил на плохой контакт в разъеме. В Uno стоит 2.1х5.5, я изначально воткнул 2.5х5.5 которые визуально похожи. Сейчас заменил на 2.1х5.5 но проблема осталась. Отключил реле полностью — те же грабли, только пищалка пищит. Как думаете, с чем связано?

Остання редакція Messiah (2019-04-20 00:21:14)

#2 2019-04-21 11:59:04

Re: Самопроизвольная перезагрузка

Думаю, что с переполнением памяти. Симптомы очень похожи. Но без кода не скажешь.

#3 2019-04-21 15:07:41

Re: Самопроизвольная перезагрузка

Симтомы похожи не предсмертные ковульсии. Если у вас проблемы с EMI то никакой искусственный интелект не поможет. А переполнение памяти для UNO, при таких задачах, это нормально. Вам придётся сосчитать каждый байт для worst case.

#4 2019-04-25 18:56:28

Re: Самопроизвольная перезагрузка

Мне все же кажется что проблема аппаратная или даже какие-то наводки. Один товарищ посоветовал запитать Arduino и реле от разных независимых источников и воспроизвести. Сутки непрерывной работы, источник — USB зарядка от телефона.

Переполнение памяти исключено, я достаточно долго оптимизировал код прошивки и устранил практически все динамическое выделение памяти, строки заменил на массивы и так далее.
Еще один фактор говорящий против теории переполнения памяти — основной код в loop(), а при циклической спонтанной перезагрузке не успевает до конца отработать setup()

Остання редакція Messiah (2019-04-27 10:52:33)

#5 2019-04-27 21:05:36

Re: Самопроизвольная перезагрузка

Это может быть связано с питанием.
Источник 12V — на контакте Vin чуть меньше (он не связан вроде бы со штекером), на 5V — 4.99, на 3.3 стоит 3.29. В разобранном виде работает нормально (в собранном были траблы именно с этим блоком). Источник 9V трансформаторный — просаживается до 6 с чем-то, на контакте 5v только 4, контроллер не запускается. Советский «Кварц БП-1» на 9v дает на Vin порядка 7, напряжения в норме. Но если подключить на Arduino Ethernet shield — напряжение ниже и тоже не запускается. Итого работает только от 12V источника.

Итого. От источника 12 V — прилично греется AMS1117, с нижней стороны платы палец удержать довольно тяжело, сверху не трогал потому что накрыто Ethernet шилдом. От источника с меньшим напряжением — не тянет из-за просадки. Что делать?

Остання редакція Messiah (2019-04-27 22:53:54)

#6 2019-04-28 14:13:44

Re: Самопроизвольная перезагрузка

Определиться, какой ток потребляет поделка и взять соответствующий источник. Реле лучше питать от отдельного источника.

#7 2019-04-28 15:06:31

Re: Самопроизвольная перезагрузка

У меня источники 12v 1A, 9v 1A, только Кварц БП1 на 9v 70mA выхода написано, но мне кажется что он умеет больше.
Adruino 50mA, W5100 shield + SD еще порядка 100, катушка реле не более 130mA, max232 1mA, термодатчик понятия не имею, а остальным можно пренебречь. Итого не более 300 mA. Реле от отдельного источника это глупость, а по тестам получилось что при отключенном реле система тоже тикала.

Остання редакція Messiah (2019-04-28 15:30:00)

#8 2019-04-28 15:24:22

Re: Самопроизвольная перезагрузка

Источник 9V трансформаторный — просаживается до 6 с чем-то

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

Остання редакція MikeM (2019-04-28 15:27:27)

#9 2019-04-28 15:43:05

Re: Самопроизвольная перезагрузка

По измерениям 0.32A на всю систему от блока питания (включая реле), 0.29А все там же если подключить Arduino по USB к ПК.
В 3mA на работу микроконтроллера я как-то слабо верю. Чисто на Arduino + Ethernet + то что от стабильных 5V Arduino запитано — при измерении в разъеме питания Arduino 0.19A при нормальной работе и 0.20A при включенной пищалке. Итого получаю 0.13A на реле что соответствует 92 Омам, согласуется с указанными в даташите 90 Омам. Отсюда вывод что при подключении питания к Arduino от внешнего источника и от USB одновременно, стабилизатор Arduino потребляет независимо от наличия питания на USB, причем потребляет прилично.

причиной может быть сглаживающий конденсатор

Либо его отсутствие. Вскрывать рабочий БП желания нет, он от факс-модема, модем еще периодически используется для автодозвонов, но судя по размерам и весу БП там кроме солидного трансформатора и моста влезет максимум масенький конденсатор. Видал БП от хабов, выдающие вообще переменку. Не суть важно, суть в том что 3 БП, на всех происходит дичь. Если Arduino питается от USB (который включен в зарядку от смартфона), а реле от 12V БП — сутки стабильной работы есть.

Было 2 рабочих идеи — во первых прекратить насиловать стабилизатор Arduino и запитать все БП 7-9V не более, катушка реле такое напряжение переносит нормально, я проверял сразу после покупки. Позже оказалось что разъемы 2.1*5.5 и 2.5*5.5 совместимы только в одну сторону и просто потыкать штекера не получится

Ардуино перезагружается при включении мотора

Сейчас я хочу проверить стабильную работу системы в случае 2 независимых БП (именно для проверки как себя ведет стабилизатор Arduino, не USB) но вчера нарвался на то что сама плата + Ethernet не от каждого блока стартует. Например, от трансформаторного потребление 0.1A и кроме LED’ов не подает признаков жизни, от Кварца берет 0.17 с тем же результатом.

Этот с шилдом — 0.20А при отключенном всем остальном.
Другой, голый Uno без шилда так же как и первый ест от обоих БП 0.02A. Итого в системе 2 самых прожорливых — Ethernet shield и катушка реле.
Сейчас извлек Ethernet, подключил все без него и запустил вместе с реле от одного БП (перекомпилировав, естественно) — посмотрю чем это закончится.

Остання редакція Messiah (2019-04-28 16:10:11)

#10 2019-04-28 16:19:00

Re: Самопроизвольная перезагрузка

Итого. От источника 12 V — прилично греется AMS1117, с нижней стороны платы палец удержать довольно тяжело, сверху не трогал потому что накрыто Ethernet шилдом. От источника с меньшим напряжением — не тянет из-за просадки. Что делать?

ищите из-за чего он так греется, что-то непомерно жрет от стаба. Это не нормально. Или где-то посадили соплю или что-то подгорело

#11 2019-04-28 16:51:14

Re: Самопроизвольная перезагрузка

Ну смотрите, сейчас уже больше 15 минут работает без Ethernet, все остальное подключено включая термодатчик, датчик тока и так далее (все питается от стабильных 5V платы Arduino) — 1117 еле теплый.
Ethernet постоянно потребляет около 0.17А, на стабилизаторе гасится около 7 вольт. Получается что с ним 1.5 Вт, без него 0.15 Вт рассеивается. Зависимость температуры от мощности не помню. Как бы в 10 раз отличие. Получается что греться должен?

Остання редакція Messiah (2019-04-28 16:51:54)

#12 2019-04-28 18:03:48

Re: Самопроизвольная перезагрузка

Ethernet постоянно потребляет около 0.17А,

Это измеренное значение или взято из тырнетов?

#13 2019-04-28 22:17:11

Re: Самопроизвольная перезагрузка

Разность измеренного на разъеме питания Arduino Uno с шилдом и без него, последний знак +-1
В даташите на W5100, кажется, 100mA было написано, реально 170 и это я еще кабель не подключал, просто вхолостую.

#14 2019-04-29 13:16:01

Re: Самопроизвольная перезагрузка

попробуйте подать 5 В непосредственно на pin 5V на ардуинке и посмотреть что будет. Дополнительно сделайте это же отдельно с шилдом и замеряйте ток.

#15 2019-04-29 17:25:24

Re: Самопроизвольная перезагрузка

Можно подавать 5V на 5V Uno? Или на Vin? Я прозванивал их на разъемы питания и +5v от USB, они там не прозваниваются, как будто стабилизации 2 уровня. Фактически вчера несколько часов непрерывной работы от 12v источника как писал — прошли без проблем. без ethernet шилда.

Остання редакція Messiah (2019-04-29 17:25:34)

#16 2019-04-29 17:45:51

Re: Самопроизвольная перезагрузка

5V это выход стабилизатора, на него можно спокойно подать 5 вольт. Но не более иначе кирдык Uno . Vin — это вход стабилизатора, связан с USB через диод. На шилде есть свой стаб на 3,3 В, который питается от 5V ардуинки.

#17 2019-04-29 18:32:00

Re: Самопроизвольная перезагрузка

Для нормальной работы Arduino UNO, лучше всего обеспечить её питанием напряжением от 7 до 9 В, с учетем нестабильности. При этом, будет наилучший электрический и тепловой режим стабилизатора 1117. Естественно источник должен обеспечивать нужный ток потреблениея и спектральную чистоту, т.е. отсутствие различных высокочастотных пульсаций не подавляемых регулятором 1117. На вывод 5V внешнее питание лучше не подавать, хотя и так возможно, но не более 5В.

#18 2019-05-06 14:28:39

Re: Самопроизвольная перезагрузка

Снова добрый день!
На днях разобрал, соединил на столе, обнаружил что при шевелении одного из проводников по питанию пропадает контакт, оказалась микротрещина идущая через половину жил многожильного провода. Всю цепь питания заменил и хорошо пропаял, кроме того замкнул дополнительно минус питания на общий самодельной платы, чтобы это не шло через Arduino (там и так цоколь разъема питания связан с GND пинами, которые у меня соединены с платой).
Теперь что куда ни шевели — контакт не пропадает, в этом уверен.

Небольшое уточнение по симптомам.
Если схема холодная — проблема не наблюдается никогда. После прогрева вроде бы работает стабильно (2 часа отработала без подключенной периферии). Если нажать на микроконтроллере кнопку reset — начинает тикать все как описано выше. Повторные reset проблему не снимают, тикает. Если кратковременно выдернуть 12V 1A источник питания из розетки и сразу воткнуть обратно — агония прекращается, схема возвращается в рабочий режим. Воспроизводится стабильно. Почему кнопка reset может приводить к такому состоянию? Пока не было фактов спонтанного возникновения «тиканья», но я все таки хочу устранить эту проблему полностью чтобы исключить ее в будущем. Не имею желания ставить второй микроконтроллер который будет опрашивать первый и прерывать цепь питания на секунду в случае его агонии, это напоминает установку второго компьютера с CD приводом напротив кнопки reset для удаленной перезагрузки

Ардуино перезагружается при включении мотора

И проблема не воспроизводится если в USB-B разъем Arduino воткнуть USB кабель, подключенный обратным концом в зарядку от мобильного телефона, НИ К ЧЕМУ НЕ ПОДКЮЧЕННУЮ. Как только выдернул USB из зарядки и нажал Reset — снова начало тикать. Еще из мистики — при втыкании USB кабеля в ни во что не включенную зарядку Arduino перезагружается, при выдергивании начинает тикать. Не в каждую зарядку, есть одна предположительно неисправная (в виду того что есть лишняя — скинул в ящик не разбираясь что с ней) так с ней Arduino успевает один раз из 3х запрограммированных при включении раз пикнуть и просто зависает. При перевтыкании основного питания тикать перестает. У меня вопрос — может стоит сходить в церковь?

Прозвон свободного USB разъема при работающей схеме показывает что из USB разъема платы в обратном направлении есть питание, 4.4V на красном и 3.2 на зеленом. На белом 0. Пробовал кратковременно коротнуть на землю — перезагрузки не произошло, работает все как и раньше.

Таким образом, все что я писал выше по поводу отдельного источника питания для Arduino как решения проблемы — бред сивой кобылы, дело не в источнике а в том что на USB разъем надо повесить какую-то затычку, а что именно — конденсатор или что я пока не понял. Эту зарядку разбирать лень смотреть что в ней, стоят ли на шине данных подтягивающие резисторы или они просто не подключены а есть только +5 и земля. Там точно на выходе с трансформатора (другие зарядки изучал) должен стоять сглаживающий конденсатор, обычно LED через резистор, который с таким же успехом будет питаться от Arduino, возможно какой-то диод или стабилитрон в противофазе назначение которого не знаю, возможно защита от обратной полярности на выходе.

——
Емкость 16V 220uF воткнутая в USB разъем между +5 и GND надежно решает проблему. Видимо эту же роль выполнял конденсатор, который есть на выходе импульсного трансформатора каждой зарядки. У меня схема поработает в таком режиме на соплях пару суток, если рецидива не будет — подумаю куда эту емкость по хорошему впихнуть. Возможно между Vin и GND Arduino, там как раз оба пина не используются и при должной сноровке можно обойтись без пайки. А возможно параллельно разъему питания в корпусе. надо будет еще проверить где она будет действовать а где нет.

Остання редакція Messiah (2019-05-06 16:48:45)

Arduino.ru

МК Перезагружается. А причина?

Ардуино перезагружается при включении мотора

Здравствуйте уважаемые форумчане.

Не скажу что в среде полный «0», но основы судя по всему у меня хромают.

Использую платформу с минимальной обвязкой для проверочного устройства.

Обовсем по порядку и кратко:

Задача: Управлять сервоприводами 220в циклически переключая. Привод управляется сменой питания.

Что имеем: Привод с встроеным испульсным БП на 12в (собсно для запуска двигателя) потребление 30мА переменного тока (250 постоянка после БП). Два реле на 12 вольт. Одно включает ноль, второе переключает фазу чтобы менять направление. Реле управляется включением минуса. Минус включается оптопарой pc817. Про сопротивление на оптопаре не забыл. Ток включения оптопары 8мА. Ток реле 30мА каждое. Реле 40 шт. Вход оптопары управляются Сдвиговым регистром 74HC595. И конечно же ATMEGA8A. Общее питание от компьютерного БП 200w. Там и 5 и 12 вольт.

Проблема: МК видимо перезагружается при включении всех реле сразу. Иногда и от одного. Проблема плавающая видимо помехи.

Чистосердечное признание: Конструкция на макетке. Куча проводов. Делал бы на вытравленной плате, заперемычил бы ее)) Так сказать пробная конструкция. Далаю на ходу.

Нюанс: При перезагрузки инициализируется SetUp (ваш кэп) суть в том что bootloader работает. Микра перезагружается быстро, а не как при включении питания долго (8-ая атмега помним же?!)

У меня в setup на порт сообщение выходит и оно появляется при ребуте.

Есть аудио-осоцилограф. Сидел ловил сигнал перезагрузки. Так его видно большой волной на OSC. А при перезагрузке его нет. Грешил на ПО, но замена микры не помогла. Отключая нагрузку (реле от оптопар) работает стабильно.

Думаю просадка питания. Но проблема плавает. Компьютерный БП должен работать отлично.

Источник