Борьба с наносекундными помехами Ардуино Мега 2560
- Войдите на сайт для отправки комментариев
Есть устройство собранное на ардуино мега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- диоды поставить и шотки, у кого подобное было?
аналоговые детчики к ардуино подключены экранированным проводом, экраны отдельным проводом идут на БП.
На урдуине кнопка сброс на +5В подтянута 10кОм, запаять в паралель резистор что бы вышло 120Ом?
Roman2344, питание 12В(20А импульсный БП)потом DC-DC стабилизатор на 8В, потом КРЕНка 5В,
А вы знаете толк в извращениях) Почему не использовать встроенный стабилизатор на плате ардуино? Скорее всего БП не справляется с входящей помехой. Но для эксперимента стоит отсоединить все датчики, и весь лишний обвес с платы, и проверить на устойчивость к помехам без них.
резистор 100Ом с кнопки сброса на ардуино на +5В ничего не дал
В БП по сети стоит фильтр(LC), на втором подобном устройстве с другим БП 15А, таже история, на ардуине я пока позакорачивал на землю все прерывания, но ничего. Понизил специально что бы КРЕНка меньше грелась, так как ещё от +5В запитан стабилизатор на 3,3В для питания вай-фая(а вай - фай в пике 200-300мА потребляет), плюс 5В идут на питание логики дисплея и подсветки дисплея, потому так.
Самое интересной что смотрю на светодиод который сигнализирует о перезапуске(тот которы должен мигнуть при нажатии на ресет), так он когда происходит сброс даже не мигает.
с КРЕНки на ардуино+5В подаю через дроссель30мкГн.
Самое интересной что смотрю на светодиод который сигнализирует о перезапуске(тот которы должен мигнуть при нажатии на ресет), так он когда происходит сброс даже не мигает.
Так может это и не сброс? Для начала выясните что конкретно происходит.
А что если переходит в сетап, так как заново начинает программа работать, при этом дисплей очищается, и пищик который у меня при включении должен запещать пищит?
А бывает программа переходит в основной цикл( для перехода в основной цикл у меня кнопка запуска есть(она с внешним прерыванием, сейчас позакарачивал эти кнопки и процессор сбрасывается переходя в сетап
Загрузи тупой блинк и заставь контроллер уйти в перезагрузку, повесь электролиты и керамику в непосредственной близости от Vin/GND и +5V/GND, экранируй все подряд, в том числе и сам контроллер...
Экранировал контроллер, пластиной его обернул и на землю бросил, ничего не давало
Пишут же что наолборот меньше литов вешать так как они тоже дают наноимпульсные помехи, при допустим разряде заряде. Да и на ардуино стоят же литы пол 100мкФ два в паралель и керамика на самой плате.
Тупой блинк это какой - нить любой скетч?
Roman2344, если программа перезапускает сетап это конечно о чём то уже говорит, но тому могут быть аж 4 причины 1) подали питание, 2)был внешний ресет, 3)браун аут обнаружил что питания ниже нормы, и сделал сброс. 4) вотч дог сделал сброс. Узнав что точно вызвало перзапуск можно только стерев бутлоадер, и записав скечт программатором. Подробности можно почитать тут. Скорее всего всё таки БП пропускает помеху. С цифровым осциллографом проверить эту версию проще простого. Без приборов только методом научного тыка.
Ну есть осцил Хамелиончик, сохранить небольшой участок могу, питание у меня же подано, ну проверю что с ним творится во время втыкани вытыкания устройств из сети, питание ниже нормы если ж оно опустится ниженормы, кстати запитывал ардуину шнуром с ЮСБ, и остальное тоже от этого питалось, и тоже самое только перезагружается не каждый раз когда что - то из сети включаешь выключаешь а допустим на 5 раз
вотч дог программно я не включал
Roman2344, Хамелеон вряд ли потянет, тут нужна высокая скорость. Это скорее всего одиночный импульс, очень короткий, а может и малой амплитуды. Я тут в какой-то теме уже приводил пример из реальной пойманной проблемы. Вот этот небольшой завал (-1вольт относительно общего уровня) в отрицательную область на входном сигнале вызывал ложное срабатывание прерывания инт0, хотя сам сигнал ко всему прочему был подключен к совершенно другой ноге.
Посмотрел питание пульсации до 15мВ, питание при включении выключении устройств из сети стабильно 5В, что осцилом смотрел что мультиметром, ничего не зафиксировал, а ардуино перезагружается.
dimax, а как вы устранили эту проблему? Так это нужно на каждой ноге проверять ардуины, или только на внешних прерываниях, хотя дополнительные прерывания то же ж нужно посмотреть?
У Хамелиона максимум 500нс, деление, тоже вроде что у вас.
Поймал что - то не ясное на Tx0 стоит как бы 5В но с пульсациями порядка 50мВ, а когда включаю - что - то выключаю из сети пульсации исчезают осцилограмма ровно 5В становится как буд-то движение останавливается),
На INT1 у меня гуляют помехи порядка 150мВ, так как не посажено на землю, сейчас посажу посмотрю
Ничего не дало, буду дальше смотреть
INT0 INT1 на земле ничего не дают. Каждую ногу проверять что ли?
Roman2344, да просто подал сигнал через диод, он эту отрицательную часть отсёк, и проблема отпала :) Совершенно не факт, что моё "лекарство" каким-то образом подойдёт вам..
Ладно буду каждую ногу глядеть, и коротить на землю, сейчас все основные внешние ардуины меги корочу.
Закоротил все цифровые пины которые использую как входа, закоротил все аналоговые входа(датчики температурные отцепил), выхода на транзисторы я же коротить не буду, могу только глянуть что там. Да и все остальные пины меги которые не используются я же не буду коротить
Roman2344, а с какой целью вообще что-то коротить? Помеха скорее всего приходит по питанию, а не по воздуху. Включите ардуину от автономного питания (батарейки, повербанк, итп) и убедитесь в этом.
Да хотел сегодня подкинуть внешнее, да нет ничего под рукой, ладненько схожу в магазин куплю подцеплю, но если по питанию что тогда фильтр по сети ставить? Так как осцил нифига по питанию не фиксирует, хотя может и в правду хамелионом не увидить ничего
Самое интересное фильтр по сети что в том что в т другом БП стоят, и БП по 600грн. не дешовые должны ьбыть нормальные вроде.
Roman2344, да тут не в цене дело. Может быть какая нибудь особенность. Например БП рассчитан на работу с настоящим заземлением. А оного нету, и помеха не гасится, а проходит в нагрузку.
Типа пилот фильтра стоит, а так как нет заземления то фильтр по сети и не работает?, хотенл вчера заземлится так в здании нету заземления, только батарея и то не известно идёт ли она на землю.
Roman2344, без заземления как-бы работает, но часть помех уходит по земляной шине в нагрузку. Если нет заземления в принципе -то нужно переделать БП, отключив среднюю точку сетевого фильтра от минусовой шины БП. Или взять бп, у которого нет такой связи изначально.
От батареек тоже самое только срабатывает где - то на 7раз если 3-4раза втыкнуть в розетку 3-4раза вытыкнуть, притом что всё что я писал закорочено, ещё у меня прицеплен датчик DHT11? но на плате его вход я тоже закоротил, и программно включен ИОН 2,56В.
Roman2344, а на каком расстоянии от розетки эффект пропадает? Ведь например в другой комнате уж точно не отреагирует? :)
40см, думаю что это вроде как норма, темболее что устройство будет в металлическом корпусе и корпус я на землю брошу как экран, нацеплю всё остальное посмотрю как оно себя будет вести, на батарейках.
Самое большое влияние от включения выключения устройств снизу, ну 40-50см, до не экранированной ардуины от розетки где что - то включаю выключаю в розетку нормально? И что теперь с фильтром БП по сети бороться? Может прикупить такой фильтр и к БП прикрутить по сети, а фильтр в самом БП не трогать, как такой фильтр http://www.rcscomponents.kiev.ua/product/%D4%E8%EB%FC%F2%F0%20%EF%EE%EC%... вроде этот фильтр не требует заземление, а то схема там какая-то странная?
Тупой блинк это какой - нить любой скетч?
5 баллов! в минус %(
Ну вааще....
Мля вы вообще в школе учились? Физику например учили? Походу нет....
Ну и как блинк связан с физикой)?
Блинк это ж типа вывод мигающего текста или светиком помигать.
Типа пилот фильтра стоит, а так как нет заземления то фильтр по сети и не работает?, хотенл вчера заземлится так в здании нету заземления, только батарея и то не известно идёт ли она на землю.
И где ты дорогой мой в жилых помещениях заземление видел? А?
Я всю жизнь в атомной отрасли - веришь - только ТАМ ГДЕ НАДО!
Ну и честно скажу - 99% - лошная прога. Ну не может в принципе по опрделению статитка и отсутсвие заземления вызывать ТАКИЕ последствия ;) Если б смогли - у нас ни одной АЭС и ТЭЦ ГРЭС не работало %)
Ну помещение не жилое. Ну зануление же должно быть если сеть с глухозаземлённой нейтралью. А процы от статики(микросекундных помех) и помех на включение - выключение устройств сеть(наноекундные помехи) сбоят конкретно, вот допустим статьи по этому поводу:
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
То есть вы думаете что проблемма в программе?
Предложения:
1. Убедиться точно, что дунька уходит в перезагрузку.
2. Если таки перезагрузка, то проверить прогу на утечку памяти и затирание стека кучей и/или наоборот.
3. Если с прогой все нормально, то:
а) стабилизировать внутренние 5В повесив на них доп. электролит (у меня висит 470мкф) обязательно в паре с керамическим небольшой емкости (у меня висит 10нф).
б) стабилизировать внешнее питание тем же самым способом, если питание через внутренний стабилизатор. У меня на питающем входе висит 1000мкф + 10нф + 100нф.
4. Если не помогает, смотреть возможные наводки "по воздуху" на входы. У меня частично пробивает сигнал управления сервой на соседние ножки того же счетчика, и если они активны как входы и висят в воздухе .. бывают неприятности.
Вот так, как-то.
P.S. Чудес не бывает, разве что очень изредка. В конце 80-х мне присылали историю "из-за бугра" одного настенного выключателя "magic - more magic" который был подключен только в одну сторону и .. к корпусу IBM PC AT. Иногда комп работал только в положении "magic", но 2 раза в месяц (произвольно) заводился только в положении "more magic".
:)
Спасибо всем за помощь. Попробую залить часть скетча Arhat109-2 питание у меня сейчас от батареек, правда я уже все датчики напаял опять, или мне опять все входа закоротить которые я использую, или пока так проверить с ними, с этим куском в Сетапе, а потом закоротить? Или можно и без того что бы закоротить?
Я вот читал что PIC контроллеры более стабильны от наводок и прочего а Атмеги очень плохие. Вот ещё вопрос не используемые выводы ардуины меги у меня их около 25, что с ними они могут же ловить наводки, может их программно на выход перевести, кто что делает с не используемыми выводами? Вот даже то странно что ннекоторые трансформатором Тесла с помощью МК управляют, и ничего, а я вот пробовал ардуиной УНО качером на полном мосте управлять так Уно глючило так что дальше не куда, даже с экранированрием, так я убрал УНО поставил отдельный генератор и защиту на компараторах, а тут только розетка и уже так влияет, я ещё читал что это от проца зависит мол мега 8 стабильно работает, а 16 или 2560 мол не стабильны к помехам, не знаю правда или нет. Кстати Ардуины все у меня китайские копии.
Может же быть ещё из за внешней наводки срыв генерации кварца и сброс проца?
И что? Зачем ТАК НЕРВНИЧАТЬ? :)
У меня тоже питание от батареек или Ni-Mh аккумуляторов. Аж 8шт используется .. толку-то? Или вы думаете, что я развязочных фильтров натыкал от праздного любопытства? :)
Все это у меня - "самокатные тележки" .. тьфу ты, роботы под те или иные соревнования с кучей серводвигателей, обычных двигателей и датчиков .. когда включается пара двухамперных движков, кукумуляторы просаживаются так, что "мама не горюй", несмотря на то, что они по паспорту аж до 10 ампер тянут.. не помогает. А теперь представьте всё это добро да под непрерывным ШИМ управлением .. там такие "наносекундные помехи" бродят .. стадами!
.. а ведь, крутится, ездит и работает. Теперь уже.
Я вам написал ПОРЯДОК исключения причин и возможных проблем, ещё раз:
Программа - в первую очередь. Исключите наползание кучи на стек или наоборот. В теме так и не заметил, что кто-то разобрался: хватает ли вам оперативной памяти в боевых условиях.
Разводка питания И земли. Земля - ваще отдельная песня в электронике всю жизнь. Крайне желательно, чтобы вся земля приходила к источнику в одну физ. точку соединения, дабы избежать "петель" и "замкнутых контуров" по земле .. ваши "наносекундные блохи", которых вы ловите - как раз их (петли, контуры) очень любят. Само питание стабилизируется не столько дросселями, сколько кондерами большой емкости .. да, да электролитами. Но электролиты тоже в почете у ваших "блох", поэтому их закорачивают керамическим конденсатором, а то и не одним.
Но, ещу раз: эти вопросы надо смотреть в порядке исключения предыдущих. Начните с программы, вам это уже советовали. Незачем ничего "закорачивать" пока не убедились, что прога - не дает утечек памяти.
Вообщем добавил это в сетап из 30 сработок, только четыре раза перешло в такой режим что светодиод (L - на плате так подписан)потух(так он у меня всё время светится да и раньше светился), а потом помигал 6раз и вообще тухнет и всё, а теперь как перешло что потухло и всё и не выходит, потом как кнопку перезагрузки наждимаю засвечивается и опять тухнет, это пока питание не снимешь, видимо действительно переполнение стека, питание сейчас от батареек 5,45В, сброс происходит даже в метре от платы если чёто из сети втыкать вытыкать. У меня кстати в сетапе много циклов вайл, они у меня проверяют каждый датчик и если датчик сработавший после прерывания то вайл должен остаться до бесконечности, так же в сетапе у меня много делеев есть.
Почистить сетап я так полагаю нужно пока я могу делеи все поубирать, а циклы вайл оставить(хотя наверное тоже прийдётся в void loop переносить)?
Вот что ардуино при компиляции выдаёт:
Хоть ответьте правильно ли я думаю. Кстати прерывания основные и дополнительные я настроил регистрами, не применяя функции аттач, и у меня нету обработчиков прерывания, мне нужно было при прерывания сразу переходить в сетап. Может всё-таки нужны обработчики прерываний только оставить их пустыми?
И ещё вопрос можно ли в обработчике прерываний применить бесконечный цикл вайл?