Форум Микро-Чип

Форум Микро-Чип (http://www.microchip.su/index.php)
-   Общетехнические вопросы (http://www.microchip.su/forumdisplay.php?f=8)
-   -   Наводка от силовой катушки на датчик (http://www.microchip.su/showthread.php?t=18206)

Руслан 01.11.2017 10:18

Наводка от силовой катушки на датчик
 
Всем привет! Столкнулся с проблемой:
PIC18F4520, на одну из пинов порта заведен датчик, программно обрабатываю логический "0" или "1" от датчика. Между ПИКом и датчиком идет длинный провод (2 или 3 метра), а сам датчик находится близко к силовой катушке 220В мощного реле. И иногда на датчик идет наводка т.е. он разомкнут, а на ПИКе определяется как замкнут и светодиод тоже показывает, что датчик замкнут, хотя, повторюсь, физически он разомкнут.
Поместить провод датчика в витую пару с экраном в данном случае не помогает. Что можно сделать в данном случае, подскажите, пожалуйста.

besogon 01.11.2017 10:36

Re: Наводка от силовой катушки на датчик
 
Руслан
витую пару что? у Вас датчик работает с дифференциальной линией передачи и наводки только на одну из жил дифференциальной пары?

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

Марк 01.11.2017 11:57

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Руслан (Сообщение 235206)
Что можно сделать в данном случае, подскажите, пожалуйста.

Развязать датчик от МК оптроном. Это стандартное промышленное решение. В промышленных контроллерах входные цифровые сигналы всегда подаются через опторазвязку.

Руслан 01.11.2017 11:58

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от besogon (Сообщение 235207)
Руслан
витую пару что? у Вас датчик работает с дифференциальной линией передачи и наводки только на одну из жил дифференциальной пары?

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

дело в том, что я не был на объекте и мне нужно увидеть самому почему человек не может завести витую пару, но он говорит, что если ставит китайский контроллер, а не мой, то там можно и силовые провода и сигнальные в один жгут завести и все работает. Возможно дело в схеме, мне подсказали, что можно поставить на входе датчика конденсатор или программно решить - опрашивать реже датчик (не непрерывно как я, а раз в 50-100 мс ), возможно китайцы так и делают

pasha_zv 01.11.2017 12:00

Re: Наводка от силовой катушки на датчик
 
ну или использовать принцип "антидребезга,
что при отпросе клавы используется

или увеличить ток , текущий к датчику до 15-50 мА

Руслан 01.11.2017 12:14

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от pasha_zv (Сообщение 235217)
ну или использовать принцип "антидребезга,
что при отпросе клавы используется

тогда можно обойтись без витой пары? и все будет работать как у китайцев - в один жгут и силовые и сигнальные провода (по словам человека)?

pasha_zv 01.11.2017 13:46

Re: Наводка от силовой катушки на датчик
 
будет, ясен пень. как у китайцев:
10% на пользу, остальное - на дешевую обвязку.

хотяяя - ЕВРОпротокол вроде еще и не подписан?
в плане сбережения электричества?
ну так тогда - вперед и с песней.
и пусть девайс потребляет 5мА, а датчиковые цепи 200мА. ну и хрен его бери.

Руслан 02.11.2017 11:27

Re: Наводка от силовой катушки на датчик
 
вот еще один момент: как я описывал выше, когда датчик физически разомкнут, вследствие наводки ПИК определяет как замкнут - как программно обработь я понял - через дребезг, НО - горит светодиод на приборе, индицирующий что датчик замкнут! Что - получается наводка "зажигает" светодиод? Для пользователя прибором будет странно, что светодиод горит (датчик замкнут), а ПИК обрабатывает датчик как РАЗомкнутый...

besogon 02.11.2017 12:47

Re: Наводка от силовой катушки на датчик
 
Руслан
как Вы подключили-то? вот есть дифференциальная пара. наверное какой-то оптрон на конце.
оптрон замкнуло - значит сигнал.
сигнал - зажечь светодиод.

антидребезг это вообще ухищрение из другой области.

masterok999 02.11.2017 13:10

Re: Наводка от силовой катушки на датчик
 
Лет 10 назад для водоканала делал телеметрию по выделенной телефонной линии через весь город километров 5,
далее линия проходит уже в виде обычной "лапши" через насосную станцию с огромными двигателями,
пускателями и пр. в пучке кабелей и выходит на маленький коробок с дисплеем и кнопками у диспетчера.
Все сделано на токовой петле 20 мА и оптроне. Никаких помех и ложняков за все время не было, работает до сих пор..
И это на скорости обмена 1200bps, а здесь в вопросе просто индикация статического состояния - вообще не о чем говорить.

Руслан 04.11.2017 23:15

Re: Наводка от силовой катушки на датчик
 
Вчера сам был на объекте. Вот что там реально:
есть реле, которое замыкает 4 контакта тогда, когда на его входы подали 220В - т.е. два входа: фаза и ноль.
Один из 4-х контактов используется в качестве датчика, т.е. от него идут два провода на мой контроллер и соответственно в схеме включается светодиод.
На второй из 4-х контактов заведена фаза 220В и при замыкании контакта эта фаза подается на электромагнитный клапан.

Так вот проблема, которую я описал изначально в этой теме происходит с контактом реле, которое используется как датчик - контакты РАЗомкнуты, а контроллер видит как замкнутые и наоборот. И только когда физически отсоединяешь провода, которые идут к контроллеру - наводка снимается.

Вроде бы мы причину поняли - вокруг этого реле висела "жменя" проводов 220В и когда мы ее связали в кучу и поместили с одной стороны в 3-5 см от реле - все заработало корректно.

Да, пробовал переписать программу, чтоб обрабатывала состояние датчика по принципу обработки дребезга от кнопок (как мне выше советовали), но это не помогло. Я опрашиваю датчик 10 раз через 70 мс и считаю количество состояний - и если оно >=8 считаю, что датчик замкнут (или разомкнут).

Может я программу не так написал? Или еще попробовать увеличить ток по проводам датчика как мне советовали выше... может после того как я описал реальную ситуацию что-то еще подскажите, пожалуйста.

Но как мне говорят коллеги - в китайских контроллерах в одну коробку укладывают и силовые и сигнальные провода и нет проблем.

Sergey K 05.11.2017 00:55

Re: Наводка от силовой катушки на датчик
 
А светодиод где?

А то, как на лекции по философии. Два часа что-то рассказывают и ни одной картинки :)

Руслан 05.11.2017 01:30

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Sergey K (Сообщение 235328)
А светодиод где?

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

А картинки - схему, думаю, прилагать излишне...

Марк 05.11.2017 06:20

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Руслан (Сообщение 235327)
Вчера сам был на объекте.
...................
Может я программу не так написал? Или еще попробовать увеличить ток по проводам датчика как мне советовали выше... может после того как я описал реальную ситуацию что-то еще подскажите, пожалуйста.

Но как мне говорят коллеги - в китайских контроллерах в одну коробку укладывают и силовые и сигнальные провода и нет проблем.

Руслан, я в самом начале написал что делать.
Вы, кстати, ни слова не написали о том, ОТ ЧЕГО ЗАПИТАН КОНТРОЛЛЕР.
А это очень важно, когда Вы пытаетесь найти физическую причину помех. Ибо помеха на входе может появиться тогда и только тогда, когда есть ДВА проводника, которые связывают генератор помехи (источник) с парой входных клемм. Поскольку одна из клемм - это общий провод схемы контроллера, то существенно важно как организован источник питания, нет ли гальванической связи (в том числе и емкостной) этого общего провода с нулем (или фазой - бывает и так) питающей сети. Второй проводник в случаях подобных Вашему находится весьма элементарно. Это емкостная (либо индуктивная) связь входного провода МК и одного из проводников питающих нагрузку источника помех.
Опторазвязка решает проблему радикально.
Именно так и сделано на входах ПЛК. Причем ЛЮБОГО ПЛК, даже китайского.
Можно, конечно, увеличивать ток через датчик, но в условиях, когда трудно определить внутреннее сопротивление источника помех, подобное решение может оказаться нестабильным.
Кроме того, ни одно из состояний датчика не может быть высокоомным (обрывом). Иначе именно это состояние станет уязвимым.

masterok999 05.11.2017 10:19

Re: Наводка от силовой катушки на датчик
 
Вложений: 1
Что, и даже такая схема не работает?

Марк 05.11.2017 11:11

Re: Наводка от силовой катушки на датчик
 
При такой схеме очень высок риск защелкивания.
Бороться с последствиями всегда сложнее, чем не допускать причину.
Вообще, допускать непосредственно пин МК в линию - моветон. А в промышленном применении - моветон в кубе.

masterok999 05.11.2017 11:41

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Марк (Сообщение 235337)
При такой схеме очень высок риск защелкивания.

Это не финальная схема, а лишь грубый набросок для быстрой проверки.
Чтобы вопрошающий увидел проявится ли проблема при таком включении.
Безусловно, не указал резистор к пину контроллера, не поставил защиту по входу, разрядный диод и т.д...
Кроме того напряжение на пине никогда не превысит U питания, а вниз ограничится защитным диодом который я также не указал,
убери конденсатор - какой риск защелкивания???

masterok999 05.11.2017 12:13

Re: Наводка от силовой катушки на датчик
 
Вложений: 1
К примеру так... Или подключаться непосредственно к катушке через чувствительную оптопару НЕ используя контакты.

Pridnya 05.11.2017 23:46

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Руслан (Сообщение 235327)
Да, пробовал переписать программу, чтоб обрабатывала состояние датчика по принципу обработки дребезга от кнопок (как мне выше советовали), но это не помогло. Я опрашиваю датчик 10 раз через 70 мс и считаю количество состояний - и если оно >=8 считаю, что датчик замкнут (или разомкнут).

Прикольно "и считаю до 8-ми". А у меня было вообще 100 раз подряд, через 1 миллисекунду. Мне нужно было как можно быстрее и точнее определить момент появления сигнала и отличить его от помехи.
Цитата:

Сообщение от Руслан (Сообщение 235331)
А картинки - схему, думаю, прилагать излишне...

В этом предложении слово "думаю" можно не писать. Я бы посмотрел на вашу убогую схему и сравнил бы её со схемами входов промышленных контроллеров, которые есть в свободном доступе в Интернете.
Аргумент в пользу "приложить" - пример "негодная схема", "внедрение негодной схемы и последствия".:)

Greg 06.11.2017 09:42

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Руслан (Сообщение 235327)
Может я программу не так написал? Или еще попробовать увеличить ток по проводам датчика как мне советовали выше... может после того как я описал реальную ситуацию что-то еще подскажите, пожалуйста.

Но как мне говорят коллеги - в китайских контроллерах в одну коробку укладывают и силовые и сигнальные провода и нет проблем.

там выше совсем закопали...
надо менять входную схемотехнику. общепринятая практика в подобных устройствах - гальваническая развязка через честный оптрон. Это автоматически дает и "увеличение тока".
С оптроном всё тоже не так просто - падает быстродействие, его самого ещё надо защитить, но хотя бы уйдут все детские болячки типа имеющихся сейчас.
В зависимости от типа выхода (может быть механическое реле) вход все-таки надо обрабатывать на предмет дребезга.

a856mm 07.11.2017 10:55

Re: Наводка от силовой катушки на датчик
 
1) Нарисуйте схему. Одно изображение заменяет тысячу слов..

2) Укажите, какие участки можно дорабатывать (сам датчик? контроллер? ничего нельзя трогать?)
По хорошему, конечно, и в датчик фильтров наставить, и в контроллер.
Странно, что ваш антидребезг не сработал. Посмотрите осциллографом, что там на пине контроллера делается (относительно земляного пина контроллера, питание осцил. гальванически развяжите).

3) Какое время реакции должно быть? От этого зависит время фильтрации на стороне контроллера.
Используйте программные фильтры. Попробовали 10 раз с интервалом 70мс. Не помогло. Увеличьте на порядок - 100 раз с интервалом 7мс.

4) Покажите исходник, как реализован опрос каждые 70мс. Может в проге косяк.
Мы буквально месяц назад тоже боролись с помехами на одном девайсе. Там контроллер уходил в прерывание по переходу пина в "1", но в самом прерывании когда опрашиваешь пин - он уже в "0". То есть, помеха вероятно меньше микросекунды. В итоге побороли программно, потом вернули прогу без фильтрации и задавили аппаратно. На серию оправим где оба решения внедрены.

Марк 07.11.2017 11:35

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от a856mm (Сообщение 235356)
Странно, что ваш антидребезг не сработал.

Какое отношение к проблеме имеет антидребезг?
Для статического состояния нет никакого дребезга. Дребезг имеет место быть лишь в том случае, когда считают фронты переключений.
Фильтрация при наводке 50 Гц осуществляется посредством накопления данных в буфере длиной (по времени накопления) в N*20 ms. Где N = 1,2,3...k. Число отсчетов определится внешним антиалиасингом (ФНЧ), но не менее 2 на 20 ms.
Однако, еще раз. Гораздо проще не допускать наводку, чем ее фильтровать.

masterok999 07.11.2017 11:48

Re: Наводка от силовой катушки на датчик
 
Для этой ситуации лучший антидребезг это адекватная RC цепочка + гистерезис входа
(использовать любой цифровой пин имеющий триггер Шмидта)

Руслан 08.11.2017 00:37

Re: Наводка от силовой катушки на датчик
 
Цитата:

Сообщение от Марк (Сообщение 235332)
Руслан, я в самом начале написал что делать.

"врезать" опто-развязку в разведенную плату не так просто как я понимаю, пытались попробовать другие способы

Цитата:

Сообщение от Марк (Сообщение 235332)
Вы, кстати, ни слова не написали о том, ОТ ЧЕГО ЗАПИТАН КОНТРОЛЛЕР.

200В затем трансформатор понижает до 12В,
затем диодный мост,
затем стабилизатор на 5В от него и запитан контроллер

P.S. прошу прощения за долгий ответ - только вернулся из поездки

Руслан 08.11.2017 01:01

Re: Наводка от силовой катушки на датчик
 
Вложений: 1
Цитата:

Сообщение от a856mm (Сообщение 235356)
4) Покажите исходник, как реализован опрос каждые 70мс. Может в проге косяк.

Код:

//проверка на дребезг при наводке в сети по дт. X2. Проверка на 0 (горит).
int Dreb_220NET_X2_0()
{
        int i;
        int nCount = 0;

                for(i = 0; i < 10; i++)
                {
                        if(X2_HL==0)               
                        {
       
                        DelayMs(70);        //Delay specified number of milliseconds

       
                                        if (X2_HL==0)           
                                        {                       
                                                nCount = nCount +1;
                                        }
                                        else
                                        {

                                        }
       
                        }//if(nDT==0)                       
                }//for( i = 0; i < 10; i++)

 if(nCount >= 8)
        return 0;
 else
        return 1;

}


Цитата:

Сообщение от a856mm (Сообщение 235356)
1) Нарисуйте схему. Одно изображение заменяет тысячу слов..

схему я попытался приложить - если неудачно, подскажите, пожалуйста Ваш электронный адрес - вышлю на почту, может так проще


Часовой пояс GMT +3, время: 07:14.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot