Борьба с наносекундными помехами Ардуино Мега 2560

Roman2344
Offline
Зарегистрирован: 09.09.2015

Есть устройство собранное на ардуино мега2560 с ТФТ дисплеме ili9486 4дюйма(дисплей отключал всёравно есть сброс), к ней прицеплены два аналоговых температурных датчика и термопара с ОУ, так всё работает но стоит что - нибудь включать выключать из розетки(220В) то ардуина перезагружается, когда в воздухе пьезозажигалкой клацаю то нормально, значить проблема в наносекундных помехах, земли развёл на ардуино 2провода спаралелил сечением по 2,5квадрата длина этого провода 25см., у ардуины все выводы подтянуты либо к земле либо к +5В резисторами 10кОм, паралельно входам с внешними и дополнительными прерываниями( у меня их5) повешена керамика 0,1мкФ, питание 12В(20А импульсный БП)потом DC-DC стабилизатор на 8В, потом КРЕНка 5В, пульсаций по питанию пару мВ, та и то практически нету, так же подключена свеча зажигания, на неё через транзистор подаётся 12В(через 7 минут на 1минуту но перезагрузы происходят до свечи если что - нибудь включать выключать из розетки), на транзистор своя земля проводом сечением 2,5квадрата, на DC-DC- преобразователь своим проводом земля заведена, на КРЕНку своим, сечением по 1,5квадрата длиной по 20см все провода сходятся в точку на БП. Падений напряжений по питанию нету, с +5В которы подаю на ардуину с КРЕНки Подскажите как боротся с наносекундыми помехами. Может с кнопкой сброс там подтянуть резистором 120Ом, может TVS- диоды поставить и шотки, у кого подобное было?

Roman2344
Offline
Зарегистрирован: 09.09.2015

аналоговые детчики к ардуино подключены экранированным проводом, экраны отдельным проводом идут на БП.

Roman2344
Offline
Зарегистрирован: 09.09.2015

На урдуине кнопка сброс на +5В подтянута 10кОм, запаять в паралель резистор что бы вышло 120Ом?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, питание 12В(20А импульсный БП)потом DC-DC стабилизатор на 8В, потом КРЕНка 5В,

А вы знаете толк в извращениях) Почему не использовать встроенный стабилизатор на плате ардуино? Скорее всего БП не справляется с входящей помехой. Но для эксперимента стоит отсоединить все датчики, и весь лишний обвес с платы, и проверить на устойчивость к помехам без них.

Roman2344
Offline
Зарегистрирован: 09.09.2015

резистор 100Ом с кнопки сброса на ардуино на +5В ничего не дал

Roman2344
Offline
Зарегистрирован: 09.09.2015

В БП по сети стоит фильтр(LC), на втором подобном устройстве с другим БП 15А, таже история, на ардуине я пока позакорачивал на землю все прерывания, но ничего. Понизил специально что бы КРЕНка меньше грелась, так как ещё от +5В запитан стабилизатор на 3,3В для питания вай-фая(а вай - фай в пике 200-300мА потребляет), плюс 5В идут на питание логики дисплея и подсветки дисплея, потому так.

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

с КРЕНки на ардуино+5В подаю через дроссель30мкГн.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344 пишет:

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

Так может это и не сброс? Для начала выясните что конкретно происходит.

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

Загрузи тупой блинк и заставь контроллер уйти в перезагрузку, повесь электролиты и керамику в непосредственной близости от Vin/GND и +5V/GND, экранируй все подряд, в том числе и сам контроллер...

Roman2344
Offline
Зарегистрирован: 09.09.2015

Экранировал контроллер, пластиной его обернул и на землю бросил, ничего не давало

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

Тупой блинк это какой - нить любой скетч?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, если программа перезапускает сетап это конечно о чём то уже говорит, но тому могут быть аж 4 причины 1) подали питание, 2)был внешний ресет, 3)браун аут обнаружил что питания ниже нормы, и сделал сброс. 4) вотч дог сделал сброс.  Узнав что точно вызвало перзапуск можно только стерев бутлоадер, и записав скечт программатором. Подробности можно почитать тут.   Скорее всего всё таки БП пропускает помеху. С цифровым осциллографом проверить эту версию проще простого. Без приборов только методом научного тыка.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Ну есть осцил Хамелиончик, сохранить небольшой участок могу, питание у меня же подано, ну проверю что с ним творится во время втыкани вытыкания устройств из сети, питание ниже нормы если ж оно опустится ниженормы, кстати запитывал ардуину шнуром с ЮСБ, и остальное тоже от этого питалось, и тоже самое только перезагружается не каждый раз когда что - то из сети включаешь выключаешь а допустим на 5 раз

Roman2344
Offline
Зарегистрирован: 09.09.2015

вотч дог программно я не включал

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344,  Хамелеон вряд ли потянет, тут нужна высокая скорость. Это скорее всего одиночный импульс,  очень короткий, а может и  малой амплитуды. Я тут в какой-то теме уже приводил пример из реальной пойманной проблемы. Вот этот небольшой завал  (-1вольт относительно общего уровня) в отрицательную область на входном сигнале вызывал ложное срабатывание прерывания инт0, хотя сам сигнал ко всему прочему был подключен к совершенно другой ноге.

 

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

dimax, а как вы устранили эту проблему? Так это нужно на каждой ноге проверять ардуины, или только на внешних прерываниях, хотя дополнительные прерывания то же ж нужно посмотреть?

Roman2344
Offline
Зарегистрирован: 09.09.2015

У Хамелиона максимум 500нс, деление, тоже вроде что у вас.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Поймал что - то не ясное на Tx0 стоит как бы 5В но с пульсациями порядка 50мВ, а когда включаю - что - то выключаю из сети пульсации исчезают осцилограмма ровно 5В становится как буд-то движение останавливается), 

Roman2344
Offline
Зарегистрирован: 09.09.2015

На INT1  у меня гуляют помехи порядка 150мВ, так как не посажено на землю, сейчас посажу посмотрю

Roman2344
Offline
Зарегистрирован: 09.09.2015

Ничего не дало, буду дальше смотреть

Roman2344
Offline
Зарегистрирован: 09.09.2015

INT0 INT1 на земле ничего не дают. Каждую ногу проверять что ли?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, да просто подал сигнал через диод, он эту отрицательную часть отсёк, и проблема отпала :) Совершенно не факт, что моё "лекарство" каким-то образом подойдёт вам..

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, а с какой целью вообще что-то коротить?  Помеха скорее всего приходит по питанию, а не по воздуху. Включите ардуину от автономного питания (батарейки, повербанк, итп) и убедитесь в этом.

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

Самое интересное фильтр по сети что в том что в т другом БП стоят, и БП по 600грн. не дешовые должны ьбыть нормальные вроде.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, да тут не в цене дело. Может быть какая нибудь особенность. Например БП рассчитан на работу с настоящим заземлением. А оного нету,  и помеха  не гасится, а проходит в нагрузку.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Типа пилот фильтра стоит, а так как нет заземления то фильтр по сети и не работает?, хотенл вчера заземлится так в здании нету заземления, только батарея и то не известно идёт ли она на землю.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, без заземления как-бы работает, но часть помех уходит по земляной шине в нагрузку. Если нет заземления в принципе -то нужно переделать БП, отключив среднюю точку сетевого фильтра от минусовой шины БП. Или взять бп, у которого нет такой связи изначально.

Roman2344
Offline
Зарегистрирован: 09.09.2015

От батареек тоже самое только срабатывает где - то на 7раз если 3-4раза втыкнуть в розетку 3-4раза вытыкнуть, притом что всё что я писал закорочено, ещё у меня прицеплен датчик DHT11? но на плате его вход я тоже закоротил, и программно включен ИОН 2,56В.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Roman2344, а на каком расстоянии от розетки эффект пропадает? Ведь например в другой комнате уж точно не отреагирует? :)

Roman2344
Offline
Зарегистрирован: 09.09.2015

40см, думаю что это вроде как норма, темболее что устройство будет в металлическом корпусе и корпус я на землю брошу как экран, нацеплю всё остальное посмотрю как оно себя будет вести, на батарейках.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Самое большое влияние от включения выключения устройств снизу, ну 40-50см, до не экранированной ардуины от розетки где что - то включаю выключаю в розетку нормально? И что теперь с фильтром БП по сети бороться?  Может прикупить такой фильтр и к БП прикрутить по сети, а фильтр в самом БП не трогать, как такой фильтр http://www.rcscomponents.kiev.ua/product/%D4%E8%EB%FC%F2%F0%20%EF%EE%EC%... вроде этот фильтр не требует заземление, а то схема там какая-то странная?

at0mix
at0mix аватар
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Тупой блинк это какой - нить любой скетч?

5 баллов! в минус %(

Ну вааще....

Мля вы вообще в школе учились? Физику например учили? Походу нет....

Roman2344
Offline
Зарегистрирован: 09.09.2015

Ну и как блинк связан с физикой)?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Блинк это ж типа вывод мигающего текста или светиком помигать.

 

at0mix
at0mix аватар
Offline
Зарегистрирован: 23.11.2015

Roman2344 пишет:

Типа пилот фильтра стоит, а так как нет заземления то фильтр по сети и не работает?, хотенл вчера заземлится так в здании нету заземления, только батарея и то не известно идёт ли она на землю.

И где ты дорогой мой в жилых помещениях заземление видел? А?

Я всю жизнь в атомной отрасли - веришь - только ТАМ ГДЕ НАДО!

Ну и честно скажу - 99% - лошная прога. Ну не может в принципе по опрделению статитка и отсутсвие заземления вызывать ТАКИЕ последствия ;) Если б смогли - у нас ни одной АЭС и ТЭЦ ГРЭС не работало %)

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

http://easyelectronics.ru/razvedenie-pitaniya.html

http://pcbget.ru/Aticles/Zavemlenie_smesh_sign.html

http://easyelectronics.ru/kovarnye-vch-cepi.html

http://caxapa.ru/lib/emc_immunity.html

То есть вы думаете что проблемма в программе?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Предложения:

1. Убедиться точно, что дунька уходит в перезагрузку.

// это вставить последним в setup()

delay(3000);
for(char i=10; i>0; i--){
  pinMode(13, i%2);
  delay(200);
}
delay(3000);

// в случае самопроизвольной перезагрузки МК внезапно "умрет"
// на 6сек поморгав своим светодиодом в середине мертвой зоны.
// 3 сек - вполне достаточно чтобы обнаружить и перевести взгляд на плату.

2. Если таки перезагрузка, то проверить прогу на утечку памяти и затирание стека кучей и/или наоборот.

3. Если с прогой все нормально, то:

а) стабилизировать внутренние 5В повесив на них доп. электролит (у меня висит 470мкф) обязательно в паре с керамическим небольшой емкости (у меня висит 10нф).

б) стабилизировать внешнее питание тем же самым способом, если питание через внутренний стабилизатор. У меня на питающем входе висит 1000мкф + 10нф + 100нф.

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

Вот так, как-то.

P.S. Чудес не бывает, разве что очень изредка. В конце 80-х мне присылали историю "из-за бугра" одного настенного выключателя "magic - more magic" который был подключен только в одну сторону и .. к корпусу IBM PC AT. Иногда комп работал только в положении "magic", но 2 раза в месяц (произвольно) заводился только в положении "more magic".

:)

Roman2344
Offline
Зарегистрирован: 09.09.2015

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

Я вот читал что PIC контроллеры более стабильны от наводок и прочего а Атмеги очень плохие. Вот ещё вопрос не используемые выводы ардуины меги у меня их около 25,  что с ними они могут же ловить наводки, может их программно на выход перевести, кто что делает с не используемыми выводами? Вот даже то странно что ннекоторые трансформатором Тесла с помощью МК управляют, и ничего, а я вот пробовал ардуиной УНО качером на полном мосте управлять так Уно глючило так что дальше не куда, даже с экранированрием, так я убрал УНО поставил отдельный генератор и защиту на компараторах, а тут только розетка и уже так влияет, я ещё читал что это от проца зависит мол мега 8 стабильно работает, а 16 или 2560 мол не стабильны к помехам, не знаю правда или нет. Кстати Ардуины все у меня китайские копии.

Roman2344
Offline
Зарегистрирован: 09.09.2015

Может же быть ещё из за внешней наводки срыв генерации кварца и сброс проца?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

И что? Зачем ТАК НЕРВНИЧАТЬ? :)

У меня тоже питание от батареек или Ni-Mh аккумуляторов. Аж 8шт используется .. толку-то? Или вы думаете, что я развязочных фильтров натыкал от праздного любопытства? :)

Все это у меня - "самокатные тележки" .. тьфу ты, роботы под те или иные соревнования с кучей серводвигателей, обычных двигателей и датчиков .. когда включается пара двухамперных движков, кукумуляторы просаживаются так, что "мама не горюй", несмотря на то, что они по паспорту аж до 10 ампер тянут.. не помогает. А теперь представьте всё это добро да под непрерывным ШИМ управлением .. там такие "наносекундные помехи" бродят .. стадами!

.. а ведь, крутится, ездит и работает. Теперь уже.

Я вам написал ПОРЯДОК исключения причин и возможных проблем, ещё раз:

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

Разводка питания И земли. Земля - ваще отдельная песня в электронике всю жизнь. Крайне желательно, чтобы вся земля приходила к источнику в одну физ. точку соединения, дабы избежать "петель" и "замкнутых контуров" по земле .. ваши "наносекундные блохи", которых вы ловите - как раз их (петли, контуры) очень любят. Само питание стабилизируется не столько дросселями, сколько кондерами большой емкости .. да, да электролитами. Но электролиты тоже в почете у ваших "блох", поэтому их закорачивают керамическим конденсатором, а то и не одним.

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

Roman2344
Offline
Зарегистрирован: 09.09.2015

Вообщем добавил это в сетап из 30 сработок, только четыре раза перешло в такой режим что светодиод (L - на плате так подписан)потух(так он у меня всё время светится да и раньше светился), а потом помигал 6раз и вообще тухнет и всё, а теперь как перешло что потухло и всё и не выходит, потом как кнопку перезагрузки наждимаю засвечивается и опять тухнет, это пока питание не снимешь, видимо действительно переполнение стека, питание сейчас от батареек 5,45В, сброс происходит даже в метре от платы если чёто из сети втыкать вытыкать. У меня кстати в сетапе много циклов вайл, они у меня проверяют каждый датчик и если датчик сработавший после прерывания то вайл должен остаться до бесконечности, так же в сетапе у меня много делеев есть.

 

Почистить сетап я так полагаю нужно пока я могу делеи все поубирать, а циклы вайл оставить(хотя наверное тоже прийдётся в void loop переносить)?

Вот что ардуино при компиляции выдаёт:

Global variables use 1 567 bytes (19%) of dynamic memory, leaving 6 625 bytes for local variables. Maximum is 8 192 bytes.
 
 
Сколько вообще должно быть свободно local variables, для нормальной работы?
Roman2344
Offline
Зарегистрирован: 09.09.2015

Хоть ответьте правильно ли я думаю. Кстати прерывания основные и дополнительные я настроил регистрами, не применяя функции аттач, и у меня нету обработчиков прерывания, мне нужно было при прерывания сразу переходить в сетап. Может всё-таки нужны обработчики прерываний только оставить их пустыми?

Roman2344
Offline
Зарегистрирован: 09.09.2015

И ещё вопрос можно ли в обработчике прерываний применить бесконечный цикл вайл?