Помогите устранить помехи в схеме.

progman
Offline
Зарегистрирован: 26.01.2019

Приветствую. Пилю на ESP32s ( M5Stack если точнее ) 8ми канальный измеритель. Сигнал по линии длиной 3 метра, используется USB шнур с не заземленным экранированием ( не смог его припаять к земле, там алюминиевая фольга ), поступает от датчиков измерения потока жидкости.

Каждый канал зашунтирован резистором 6.8 кОм на +3.3V и конденсатором 100nF на GND

плата с контактами выполнена в отдельном форм факторе и подключается к ESP32s через 15 пиновый разъем:

В качестве разъема для подключения датчиков выступает RG45 ( Ethernet port )

Подключив все 8 датчиков увидел множество ложных срабатываний. Покурив маны в интернетах уменьшил сопротивление резисторов до 680 Ом, так как решил что на входе сильные токи помех. Это не помогло.

Более того если отключить от платы все датчики, то помехи все равно проявляются. Контроллер ловит сигнал которого нет.

Больше всего срабатываний если касаться пинцетом входного канала. Но срабатывание происходит даже если касаться пинцетом GND или +3.3V

Причем срабатывание на сигнал происходит практически по всем каналам.

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

 

PS не знаю имеет ли это значение но обработчик сигнала сделан через прерывание:

pinMode( inputChannels[ i ], INPUT_PULLUP );
attachInterrupt( digitalPinToInterrupt( inputChannels[ i ] ), IRQ[ i ], RISING );

где inputChannels это массив GPIO через которые я работаю ( по даташиту они свободны и их можно юзать )

а IRQ это массив функции обработчика прерывания для каждого пина.

Внутри функции просто счетчик который инркементируется на каждом вызове.

progman
Offline
Зарегистрирован: 26.01.2019

PPS при отключении девайса от БП и работе только от аккумулятора помехи не исчезают.

vvadim
Offline
Зарегистрирован: 23.05.2012

так поменяйте кабель на нормальный с медной оплёткой.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Осциллограф - твой добрый и надежный друг! Нужно глазами увидеть эти твои "ложные срабатывания". А пока все это - гадание на бараньих кишках... сорри.

GarryC
Offline
Зарегистрирован: 08.08.2016

Зачем у Вас подтяжка сигнала к +3,3 стоит ? иИ как будет реагировать АЦП на сигнал, близкий к питанию.

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

progman пишет:

PS не знаю имеет ли это значение но обработчик сигнала сделан через прерывание:

pinMode( inputChannels[ i ], INPUT_PULLUP );
attachInterrupt( digitalPinToInterrupt( inputChannels[ i ] ), IRQ[ i ], RISING );

Имеет. У прерывания очень высокая скорость обнаружения.  Не знаю как ESP, а обычные МК легко срабатывают от импульса в единицы наносекунд. А основная наводка -50 Герц. Для прерывания это  вечность. Так что либо отказывайтесь от прерываний, либо делайте фильтр с частотой среза менее 50Герц, т.е. влепить конденсатор микрофарад на 10 -должно помочь. Но полной защиты всё равно не будет, лучший вариант -связь с вашими датчиками по токовой или диф.линии.

progman
Offline
Зарегистрирован: 26.01.2019

Я отключаю от портов все датчики и отключаю блок питания - контроллер питается от аккумулятора.

Просто касаюсь пинцетом в руке платы и не важно касаюсь я земли или +3,3V  - контроллер ловит приход импульсов.

Делать фильтр с частотой среза 50Гц мне нельзя. У меня датчик может давать от 1 импульса в секунду до 500 в теории, на практике пока больше 180 импульсов в секунду не удалось получить.

progman
Offline
Зарегистрирован: 26.01.2019

vvadim пишет:

так поменяйте кабель на нормальный с медной оплёткой.

так она есть. вот только помехи возникают и при отключенных датчиках тоже.

progman
Offline
Зарегистрирован: 26.01.2019

GarryC пишет:

Зачем у Вас подтяжка сигнала к +3,3 стоит ? иИ как будет реагировать АЦП на сигнал, близкий к питанию.

в даташите к датчику именно так и нарисовано.

progman
Offline
Зарегистрирован: 26.01.2019

wdrakula пишет:

Осциллограф - твой добрый и надежный друг! Нужно глазами увидеть эти твои "ложные срабатывания". А пока все это - гадание на бараньих кишках... сорри.

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

vlad072
Offline
Зарегистрирован: 01.08.2017

Моё мнение - плохая разводка платы. У меня была такая же беда когда тестил проект на бредовой доске, здесь уже описывал проблему, но впринципе то же самое. Когда перенёс на плату с заливкой пустых областей землёй, хорошей фильтрацией питания (3300uF + 4.7uF(керамика) + 0.1uF(через каждый сантиметр) + 33pF + 10pF) всё стало ровно

GarryC
Offline
Зарегистрирован: 08.08.2016

То есть у Вас используется не вход АЦП, а вход типа счетчика импульсов - извините, сразу не понял.

Ну тогда непонятно, как может наводится помеха на резистор 6к8, это должна быть очень сильная помеха, а тем более на 680.
Еще более загадочно выглядит помеха от прикосновения пинцетом к земле и +3,3.

Вы точно уверены, что у Вас на плату поступает земля и +питание?

nik182
Offline
Зарегистрирован: 04.05.2015

У меня была похожая ситуация. Развёл плату, впаял детальки и пошли наводки при касании земли. Кончилось тем, что 2 ваттный трансформатор заменил на 15 ваттный. Блок питания стал мощнее и наводки при касании земли и питания исчезли.

progman
Offline
Зарегистрирован: 26.01.2019

GarryC пишет:

Вы точно уверены, что у Вас на плату поступает земля и +питание?

100% Они снимаются с выводов контроллера. Мультиметром проверял. Реально земля и реально +3,3V

nik182 пишет:
У меня была похожая ситуация. Развёл плату, впаял детальки и пошли наводки при касании земли. Кончилось тем, что 2 ваттный трансформатор заменил на 15 ваттный. Блок питания стал мощнее и наводки при касании земли и питания исчезли.

Я отключаю плату от питания - все работает от внутренней батарейки и помехи никуда не деваются.

UPD

1. перерезал дорожку к каналу 1. Все каналы кроме первого продолжают ловить помехи . На первом постоянно ноль. Значит через сам контроллер и его обвязку помехи не идут. Вся бяка происходит на плате расширения.
 
2. выпаял конденсатор С8 ( он идет от восьмого входа на землю ). Кол-во помех на восьмом канале уменьшилось почти в 10 раз. На всех каналах ( кроме перерезанного первого ) 200-300 импульсов ( вожу пинцетом по земле ) на восьмом 10 импульсов
 
3. мультиметр не показывает никаких отклонений напряжения на входе GPIO постоянно 3.384V а импульсы контроллер продолжает считать.
 
4. в разрезанную цепь канала 1 впаял резистор 330 Ом. Кол-во помех упало в 5 раз на первом канале. Но нет дома датчика чтобы проверить как отразится это на измерении реального сигнала

5. эмпирическое наблюдение. Кол-во ложных импульсов на каналах все таки разное. максимум на GPIO 16, на GPIO1, GPIO 17 и GPIO 2 одинаковое и меньше почти в полтора раза чем на 16м. Меньше всего на GPIO 35 и GPIO 36 ( на последних двух в три раза меньше чем на GPIO 16 ) С чем связано не знаю. 

6. от номинала подтягивающего резистора помехи не зависят между 330 Ом 680 Ом и 6,8 кОм заметной разницы я не обнаружил. 

Учитывая п.2 помехи идут с земли через конденсатор в канал. В случае возбуждения через +3,3V возможно через внутреннюю обвязку контроллера или аккумулятор или накопительные конденсаторы 6600мкФ

7. Кол-во помех в каналах при отключенном БП и работе от батареи значительно меньше чем при работе от БП ( обычная зарядка для телефонов ).

slider
Offline
Зарегистрирован: 17.06.2014

progman пишет:

....

В качестве разъема для подключения датчиков выступает RG45 ( Ethernet port )

....

сомневаюсь в качестве соединения RG45, попробуйте припаять датчики на прямую.

использовать качественный БП.

м.б. минус от M5Stack до датчиков плохой.

попробуйте без прерываний , просто по очереди опрашивать датчики.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

для начала снять с себя синтетику и заземляющий браслет на руку

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

и шапочку из фольги. 

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

progman, по-моему вы  понапрасну теряете время. То, что вы сделали - это "парадный вход" для помех и наводок.  Вы сейчас наступили на грабли, по которым до вас прошла "армия" самодельщиков. Даже тут, на нашем форуме, уже с десяток тем о ложных срабатываниях прерываний.   Делайте всё заново, и по-уму. Обратите наконец внимание, что почти у всех датчиков промышленного уровня имеется токовой выход.  А все интерфейсы обмена имееют дифф. линию  -те же USB, RS-485, CAN, Ethernet .  Даже компьютерные шины Sata и  PCI-Express,  -они таки тоже дифференциальные.  Это ведь о чём-то должно говорить вам, да?

progman
Offline
Зарегистрирован: 26.01.2019

dimax пишет:

progman, по-моему вы  понапрасну теряете время. То, что вы сделали - это "парадный вход" для помех и наводок.  Вы сейчас наступили на грабли, по которым до вас прошла "армия" самодельщиков. Даже тут, на нашем форуме, уже с десяток тем о ложных срабатываниях прерываний.   Делайте всё заново, и по-уму. Обратите наконец внимание, что почти у всех датчиков промышленного уровня имеется токовой выход.  А все интерфейсы обмена имееют дифф. линию  -те же USB, RS-485, CAN, Ethernet .  Даже компьютерные шины Sata и  PCI-Express,  -они таки тоже дифференциальные.  Это ведь о чём-то должно говорить вам, да?

Увы, но мне все эти слова ни о чем не говорят. Марсианский для меня язык, к сожалению.

PS плату делал как раз не я. На фрилансере размещал заказ, и мне там один самоделкин и слабал. После оплаты разумеется в лучших традициях слился. Я бы и рад довести до ума и бюджет позволяет, но я полный нуб в схемотехнике. Я программист - мне софтовой части больше импонирует. Электрон от иона отличу, как p-n переход работает даже знаю, но на этом всё.

qbit
Offline
Зарегистрирован: 18.03.2019

progman пишет:

...Подключив все 8 датчиков увидел множество ложных срабатываний. Покурив маны в интернетах уменьшил сопротивление резисторов до 680 Ом, так как решил что на входе сильные токи помех. Это не помогло...

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

GarryC
Offline
Зарегистрирован: 08.08.2016

"выпаял конденсатор С8 ( он идет от восьмого входа на землю ). Кол-во помех на восьмом канале уменьшилось почти в 10 раз. На всех каналах ( кроме перерезанного первого ) 200-300 импульсов ( вожу пинцетом по земле ) на восьмом 10 импульсов" - настораживает.

0. Поводите пинцетом по земле и питанию контроллера - будут ли помехи и если не будет, то
1. Все таки проверьте землю на переходной плате - хорошо ли она прибита к земле контроллера.
2. Воткните керамику 0,1мкф между +3,3 и землей на переходной плате.
 

werwerrr
Offline
Зарегистрирован: 01.02.2017

progman пишет:

В качестве разъема для подключения датчиков выступает RG45 ( Ethernet port )

 

Все 8 датчиков подключены через RG45 ( Ethernet port )? Если да то все понятно, нет земли. Если каждый датчик на своем разъеме, то какой кабель и какие контакты используются для подключения датчиков, парные (витые) ли они? 

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

werwerrr, думаете человек за 14 месяцев не разобрался и до сих пор ждёт ответов в теме?

З.Ы. Ох уж этот RG45... Когда научаться правильно писать RJ45, а ещё лучше 8P8C.

werwerrr
Offline
Зарегистрирован: 01.02.2017

Jeka_M пишет:

werwerrr, думаете человек за 14 месяцев не разобрался и до сих пор ждёт ответов в теме?

Да уж, действительно на год не посмотрел.

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

progman
Offline
Зарегистрирован: 26.01.2019

Мне полностью переделали плату. Все работает идеально. Для каждого канала свой RJ45  три провода на датчик.

первая партия уже пошла на тесты