Непонятные наводки, прошу помощи
- Войдите на сайт для отправки комментариев
Ребят, всем привет.
Такая вот странная история:
Подключаю датчик потока основанный на эффекто холла через прерывание, все работает на ура. Подключаю второй в соседнее гнездо, точно так же, все работает на ура.
Подключаю первый через длинный провод (5м, экранированный, 0,2 квадрата, медь) и отключаю второй датчик, но оставляю в программе прерывание для него и в итоге, хоть пины разные и прерывания тоже разные, при срабатывании датчика срабатывает оба прерывания.
Подключал внутренние подтягивающие резисторы, подключал отдельные ресисторы, эффекта НОЛЬ.
Пробовал разные варианты срабатывания в прерываниях - эффекта НОЛЬ
Все упирается в длинный провод.
Снимаю его, подключаю датчик к ардуине, нет наводок, подключаю датчик через провод - есть наводки.
Куда смотреть, что делать?!
P.S. Причем, если я подключаю другой такой же провод, без датчика, на второе прерывание - наводок тоже нет!
P.S. Причем, если я подключаю другой такой же провод, без датчика, на второе прерывание - наводок тоже нет!
Может дело не в наводках? как подключаете, обрабатываете покажите. Не будем же гадать.
Код:
byte sensorInterrupt = 5; byte sensorPin = 18; byte sensorInterrupt2 = 4; byte sensorPin2 = 19; unsigned long pulseCount; unsigned long pulseCount2; unsigned long oldTime; void setup() { Serial.begin(9600); pinMode(sensorPin, INPUT); digitalWrite(sensorPin, HIGH); pinMode(sensorPin2, INPUT); digitalWrite(sensorPin2, HIGH); pulseCount = 0; pulseCount2 = 0; oldTime = 0; attachInterrupt(sensorInterrupt, pulseCounter, FALLING); attachInterrupt(sensorInterrupt2, pulseCounter2, FALLING); } void loop() { if((millis() - oldTime) > 1000) { detachInterrupt(sensorInterrupt); detachInterrupt(sensorInterrupt2); Serial.print(pulseCount); Serial.print(" "); Serial.println(pulseCount2); attachInterrupt(sensorInterrupt, pulseCounter, FALLING); attachInterrupt(sensorInterrupt2, pulseCounter2, FALLING); oldTime = millis(); } } void pulseCounter() { // Increment the pulse counter pulseCount++; } void pulseCounter2() { // Increment the pulse counter pulseCount2++; }Готово!
Вы построили антенну, подали сигнал с неё на вход прерывания и теперь его обрабатываете.
Что должно было быть не так?
Так суть то в том, что пустой порт принимает импульсы. Тот в который на фотке вставлен второй датчик, справа. Как только сигнальный провод из порта 19 вынимаешь, так он начинает считать почти столько же импульсов, сколько в 18 с подключенным датчиком.
Причем попробовал ругую модификацию датчика, от неё такого эффекта нет. Но мне нужно работать именно с этими!(
номера портов к которым подключаете 18 и19 ?
программу покажите?
И2С используете? попробуйте перекинуть на инт1 и инт 0. с верхними интами надо смотреть даташит, не помню точно .... какаято каза есть.
и показать как подключаете ... не надо фоток схему нарисуйте, датчик какой, по фоткам все равно не понять что куда идет.
Существование ёмкости между пинами и высокоомное сопротивление входа вы не будете отрицать?
Да, 18 и 19, но пробовал все 6 портов прерываний. если порты соседние, то вот такая канитель. Наверное 95% ловит и другео прерывание. Если через порт, то ловит около 10%
Существование ёмкости между пинами и высокоомное сопротивление входа вы не будете отрицать?
Не имею понятия, я не мега спец в микроэлектроннике.
Давайте поставлю вопрос по другому.
Мне надо удалить этот датчик на 5 метров от контроллера, как правильно это сделать?
Почему не помогают подтягивающие резисторы?
По сути в готовом проекте, если я отключу от одного из портов кабель, прерывание висящее на нем начнет ловить вот эту всю ерунду.
Я бы все понял, если бы это ловил пин к которому подключен длинный провод, но ведь ловит свободный пин!
Почему не помогают подтягивающие резисторы?
а вы спад ловите или подъем и куда подтягиваете к 0 или +?
программу уж давно бы показали, меньше вопросов было
По сути в готовом проекте, если я отключу от одного из портов кабель, прерывание висящее на нем начнет ловить вот эту всю ерунду.
резистор-подтяжку тоже с кабелем отключаете?
Подтягиваю к плюсу. Пробовал встроенные резисторы и внешние (4.7k) ставить.
Что ловить мне все равно. Но когда датчик ловит магнитный фон он выдает плюс, а так держит минус.
Код выложил же перед фотками. Сейчас сделаю его более заметным.
1-10 нан повесьте на все входы преываний.
И килоом 20 -50 куда вам надо ( если к питанию- INPUT_PULLUP включайте)
Кондер на 1 нанофарад вроде (одной ножкой в на пин, другой к плюсу) вроде помог. Надо еще потестировать.
Но все же, откуда этот эффект взялся? Почему даже при подкючении только (длинного) провода в соседний пин, навоки на него прекращались?
сори код просмотрел
ноги как входы не определяйте
, используйте внешнюю подтяжку, ближе к датчику.
подключите к прерываниям 0 и 1
Кондер на 1 нанофарад вроде (одной ножкой в на пин, другой к плюсу) вроде помог. Надо еще потестировать.
Но все же, откуда этот эффект взялся? Почему даже при подкючении только (длинного) провода в соседний пин, навоки на него прекращались?
А к плюсу-то зачем? Разницы конечно нет....
Провод один или в паре с другими? Может быть между ними есть ёмкость?
А существование электромагнитных волн предсказал английский физик Фарадей в 1832 году.
сори код просмотрел
ноги как входы не определяйте
, используйте внешнюю подтяжку, ближе к датчику.
подключите к прерываниям 0 и 1
Да я потом глянул, он за фотками как то спрятался. решил без спойлера его сделать)))
Попробовал ноги не определять, эффекта нет.
Подтяжку ближе к датчикам тоже попробовал, ситуация не изменилась.
Пробовал на всех прерываниях, если пины соседние, то наводка (или что это ) проскакивает.
Кондер на 1 нанофарад вроде (одной ножкой в на пин, другой к плюсу) вроде помог. Надо еще потестировать.
Но все же, откуда этот эффект взялся? Почему даже при подкючении только (длинного) провода в соседний пин, навоки на него прекращались?
А к плюсу-то зачем? Разницы конечно нет....
Провод один или в паре с другими? Может быть между ними есть ёмкость?
А существование электромагнитных волн предсказал английский физик Фарадей в 1832 году.
Не знаю даже, как то показалось так вот надо) да и плюс рядом был)
Провод 6ти жильный. Из низ 3 на другой датчик идут (но он никак не влиял) и 3 на этот датчик GND + и сигнал.
С электронаводками я уже сталкивался некоторое премя назад, по этому провод сразу с экраном взял.
Но опять же, были бы наводки на провод - были бы лишние импульсы на 18 ноге, куда подключен этот провод. А импульсы ловит 19 нога, которая пустая или с потягивающим резистором к +. Вот это меня больше всего удивляет.
Хочется все таки догнать откуда лезет это все и почему при подключении датчика не через провод, а напрямую, такого эффекта нет.
Мне это реально взорвало мозг!!!
В общем проблему, вероятно, можно считать решенной.
Спасибо за помощь!
Но . . . но если кто то сможет объяснить откуда эта наводка берется, буду очень признателен!
Пустая нога ловит импульсы от соседней.
А в кабеле соседние жилы- это конденсатор.
Он эти импульсы "корОтит на землю" ( у вас на питание)
В общем проблему, вероятно, можно считать решенной.
Спасибо за помощь!
Но . . . но если кто то сможет объяснить откуда эта наводка берется, буду очень признателен!
электромагнитные волны.
мы их не видим, а они существуют. а беруться много откуда, природные и рукотворные.
Парни, спасибо за помощь! ))