Программное избавление от помех концевых выключателй

svorog
Offline
Зарегистрирован: 27.04.2017

Всем доброго вечера. На установке имеется 7 концевиков провода от которых проходят вблизи с силовыми кабелями, от чего получают наводки и выскакивают ложные срабатывания. Пытаюсь избавиться программным методом, для чего хочу использовать резервную плату Меги которая стоит рядом с управляющей Мегой. т.е. получать сигнал с датчика на промежуточную плату ( А1-А7 вх сигнал,А8-А14 выходной сигнал ), проверять через 20мс точно ли сработал датчик  и тогда отправлять сигнал с другого выхода на вход управляющей платы, для этого попробывал на основе примеров написать вот такой код 

int kn1 = 96;// Пин входного сигнала 1
int kn2 = 95;
int kn3 = 94;
int kn4 = 93;// Пин входного сигнала 4
int kn5 = 92;
int kn6 = 91;
int kn7 = 90;
int dat1 = 89; // Пин выходного сигнала 1 
int dat2 = 88;
int dat3 = 87;
int dat4 = 86;
int dat5 = 85;
int dat6= 84;
int dat7 = 83;

void setup() {
  pinMode(kn1, INPUT);
  pinMode(dat1, OUTPUT);
  pinMode(kn2, INPUT);
  pinMode(dat2, OUTPUT);
  pinMode(kn3, INPUT);
  pinMode(dat3, OUTPUT);
   pinMode(kn4, INPUT);
  pinMode(dat4, OUTPUT);
   pinMode(kn5, INPUT);
  pinMode(dat5, OUTPUT);
   pinMode(kn6, INPUT);
  pinMode(dat6, OUTPUT);
   pinMode(kn7, INPUT);
  pinMode(dat7, OUTPUT);
}

bool flag1       = LOW;
bool lastButton1 = LOW;
bool flag2       = LOW;
bool lastButton2 = LOW;
bool flag3       = LOW;
bool lastButton3 = LOW;
bool flag4       = LOW;
bool lastButton4 = LOW;
bool flag5       = LOW;
bool lastButton5 = LOW;
bool flag6       = LOW;
bool lastButton6 = LOW;
bool flag7       = LOW;
bool lastButton7 = LOW;
bool debounce1() {
  bool current1 = digitalRead(kn1);
  if (current1 != lastButton1) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current1 = digitalRead(kn1);           // Считываем стабилизированное значение
  }
  return current1;
}
bool debounce2() {
  bool current2 = digitalRead(kn2);
  if (current2 != lastButton2) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current2 = digitalRead(kn2);           // Считываем стабилизированное значение
  }
  return current2;
}
bool debounce3() {
  bool current3 = digitalRead(kn3);
  if (current3 != lastButton3) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current3 = digitalRead(kn3);           // Считываем стабилизированное значение
  }
  return current3;
  }
  bool debounce4() {
  bool current4 = digitalRead(kn4);
  if (current4 != lastButton4) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current4 = digitalRead(kn4);           // Считываем стабилизированное значение
  }
  return current4;
  }
   bool debounce5() {
  bool current5 = digitalRead(kn5);
  if (current5 != lastButton5) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current5 = digitalRead(kn5);           // Считываем стабилизированное значение
  }
  return current5;
  }
  bool debounce6() {
  bool current6 = digitalRead(kn6);
  if (current6 != lastButton6) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current6 = digitalRead(kn6);           // Считываем стабилизированное значение
  }
  return current6;
  }
   bool debounce7() {
  bool current7 = digitalRead(kn7);
  if (current7 != lastButton7) {                  // Старое значение отличается от полученного
    delay(20);                                  // Ждем пока состояние стабилизируется - игнорируем дребезг
    current7 = digitalRead(kn7);           // Считываем стабилизированное значение
  }
  return current7;
  }
void loop() {
  int currentDat1 = debounce1();               // Получаем стабилизированное значение
  int currentDat2 = debounce2();
  int currentDat3 = debounce3();
  int currentDat4 = debounce4();
  int currentDat5 = debounce5();
  int currentDat6 = debounce6();
  int currentDat7 = debounce7();
  if (lastButton1 == LOW && currentDat1 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag1 = !flag1;                               // Меняем флаг статуса выходного сигнала 1
    digitalWrite(dat1, flag1);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton2 == LOW && currentDat2 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag2 = !flag2;                               // Меняем флаг статуса выходного сигнала 2
    digitalWrite(dat2, flag2);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton3 == LOW && currentDat3 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag3 = !flag3;                               // Меняем флаг статуса выходного сигнала 3
    digitalWrite(dat3, flag3);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton4 == LOW && currentDat4 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag4 = !flag4;                               // Меняем флаг статуса выходного сигнала 4
    digitalWrite(dat4, flag4);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton5 == LOW && currentDat1 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag5 = !flag5;                               // Меняем флаг статуса выходного сигнал5
    digitalWrite(dat5, flag5);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton6 == LOW && currentDat6 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag6 = !flag6;                               // Меняем флаг статуса выходного сигнала 6
    digitalWrite(dat6, flag6);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
   if (lastButton7 == LOW && currentDat7 == HIGH) { // Если состояние кнопки "нажата" - HIGH, а предыдущее LOW - фиксируем событие нажатия кнопки
    flag7 = !flag7;                               // Меняем флаг статуса выходного сигнала 7
    digitalWrite(dat7, flag7);                 // В зависимости от флага, подаем логическую единицу на выход 1
  }
  lastButton1 = currentDat1;  // Запоминаем последнее состояние входного сигнала 1
  lastButton2 = currentDat2;    
  lastButton3 = currentDat3;  
  lastButton1 = currentDat4;
  lastButton1 = currentDat5;
  lastButton1 = currentDat6;
  lastButton1 = currentDat7;  
}

Но что то опять мои датчики как то плохо неправильно работают, можете подсказать это рабочий код? если не рабочий, можно указать/исправить ошибки? или может просто стоит время повторной проверки увеличить?

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

а попробовать использовать экранированные с заземлённым экраном провода слабо ?

svorog
Offline
Зарегистрирован: 27.04.2017

vvadim пишет:

а попробовать использовать экранированные с заземлённым экраном провода слабо ?

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

Может я не правильно обозначил входы /выходы, я имею ввиду 95-83 контакты? или может у кого то есть более простой код от дребезга? 

Logik
Offline
Зарегистрирован: 05.08.2014

код от дребез или от наводок? Самый простой код от наводок - резистор небольшого номинала на подтяжке установленный возле контролера. От дребезга простейший код - неТараПися, дай ему кончить дребезжать.

//земля только общесетевая  

Непонял, с силовой чтоле общая 8)

svorog
Offline
Зарегистрирован: 27.04.2017

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

Да земля только силовая

Logik
Offline
Зарегистрирован: 05.08.2014

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

Общая земля сигнальных и силовых цепей недопустима. Конечно хороше бы знать что там за "сила". Одним и 10Вт сила, другим 100кВт - маломощное. Давайте больше информаци. Правильное решение - гальваноразвязка. Иногда допустимое - отдельно вести 2 земли и обеденять их в одной точку, часто возле БП.

Logik
Offline
Зарегистрирован: 05.08.2014

Код выше - с намеком на борьбу с дребезгом, но пауза 20мсек не всегда достаточна. Архитектура кода кривая и не позволит существенно увеличить паузу. Начнется тормозня по другим кнопкам, устроит ли такое - незнаю.

svorog
Offline
Зарегистрирован: 27.04.2017

Вообще если глядеть по ослиллограмме то это постоянная пила - соответственно основная моя проблема это  наводки.  По  току : 7 шаговиков 48В до 5А и инф. кабель  заходят в шкаф в общей пластиковой гофре, и другого места прокладке кабелей нет. Сигнальный кабель в "шубе" и перед платой ферритовый фильтр. До этого установка стояла в другом месте, уводил заземление  на 12мм арматуру на 1,5 метра забитую в землю, но ситуацию это не изменило. В общем аппаратно решить эту проблему пробовал несколько раз не получилось, вот подумал что можно как то программо с помощью дополнительной платы избавится от помех

Logik
Offline
Зарегистрирован: 05.08.2014

Смотрите, ток у Вас 7*5=35А по максимуму. Допустим сопротивление общего провода - 0,1Ом, тогда протекая по нему возникнет падение 3,5В. Если это падение окажется на входе - от этой помехи не избавится. Потому должны быть 2 раздельных физически общих провода. Тяжело без схемы вобщето. Если 2 провода есть и не помогает - подтянуть с того конца где коннтроллер небольшим резистором, до 100Ом. Дальше смотреть осцилографом, картинку можна сюда показать, вместе посмотрим. Возможно програмно еще чего можна сделать. Или аппаратно RC фильтр. Не поможет - гальваноразвязывать.

SLKH
Offline
Зарегистрирован: 17.08.2015

svorog пишет:

Всем доброго вечера. На установке имеется 7 концевиков провода от которых проходят вблизи с силовыми кабелями, от чего получают наводки и выскакивают ложные срабатывания. Пытаюсь избавиться программным методом, для чего хочу использовать резервную плату Меги которая стоит рядом с управляющей Мегой. т.е. получать сигнал с датчика на промежуточную плату ( А1-А7 вх сигнал,А8-А14 выходной сигнал ), проверять через 20мс точно ли сработал датчик  и тогда отправлять сигнал с другого выхода на вход управляющей платы, для этого попробывал на основе примеров написать вот такой код

давить аппаратно. резисторы, конденсаторы, триггеры шмитта с гистерезисом, с повышенным питанием.

svorog
Offline
Зарегистрирован: 27.04.2017

Пытался аппаратно, заказал вот такие микросхемы

http://www.alldatasheet.com/view.jsp?Searchword=Mc14490p%20datasheet&gclid=CjwKCAjw7O_pBRA3EiwA_lmtfihUxmeRSRdQpShylEwgQxDmdQ2yJhEleC9yB-UIysy1PbWjRtpagxoCViUQAvD_BwE

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

В общем сейчас уже последняя надежда на программное решение вопроса.

SLKH
Offline
Зарегистрирован: 17.08.2015

svorog пишет:

В общем сейчас уже последняя надежда на программное решение вопроса.

маловероятно, что получится что-то путное.

см. #5: "Общая земля сигнальных и силовых цепей недопустима" - это не каприз, а осонанная необходимость.

К каждому датчику от платы управления должны идти  2 своих провода, желательно свитые.

Ну и подтяжка +  ФНЧ на входе.

svorog
Offline
Зарегистрирован: 27.04.2017

Земля сейчас не общая, просто приборную землю пока никуда не подключал.

От датчиков у меня идет только один провод на котором либо логический ноль либо высокой уровень.  Подтяжку  и ФНЧ для 7ми концевиков это целую плату надо промежуточную ставить, а  нормально разместить  её даже негде.

svorog
Offline
Зарегистрирован: 27.04.2017

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

SLKH
Offline
Зарегистрирован: 17.08.2015

svorog пишет:

Земля сейчас не общая, просто приборную землю пока никуда не подключал.

и как же оно вообще работает?

схему мы, конечно же, не увидим...

 

Цитата:
От датчиков у меня идет только один провод на котором либо логический ноль либо высокой уровень.  Подтяжку  и ФНЧ для 7ми концевиков это целую плату надо промежуточную ставить, а  нормально разместить  её даже негде.
разместить дополнительную мегу можно, а 14 резисторов и 7 конденсаторов - никак.

svorog
Offline
Зарегистрирован: 27.04.2017

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

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

svm
Offline
Зарегистрирован: 06.11.2016

Поставьте оптроны, не мучайтесь.

bwn
Offline
Зарегистрирован: 25.08.2014

А какие резисторы на подтяжке концевиков?

svorog
Offline
Зарегистрирован: 27.04.2017

Подтяжка внутренняя.

bwn
Offline
Зарегистрирован: 25.08.2014

svorog пишет:

Подтяжка внутренняя.

Так попробуйте наружную, ом эдак триста.

svorog
Offline
Зарегистрирован: 27.04.2017

вторые концы резисторов  можно спасять в один и повесить на землю?

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

Резисторы вместе и на +5 вольт. Можно посмотреть на наводку на проводе при использовании резисторов 330 Ом или 510 Ом или 1 кОм. Если есть наводка больше 0.5 вольта резистор надо уменьшать. Но ставить надо максимальный. Конденсатор параллельно контатактам концевика, такой чтобы при подобранным резисторе обеспечить постоянную времени RC цепи больше 1 милисекунды.

svorog
Offline
Зарегистрирован: 27.04.2017

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

-NMi-
Offline
Зарегистрирован: 20.08.2018

bwn пишет:

svorog пишет:

Подтяжка внутренняя.

Так попробуйте наружную, ом эдак триста.

300 Ом на землю а концевик через 1 кОм на +48 В. Место соединения резисторов 300 Ом и 1 кОм на ардуину через резистор 1 кОм и буит щастье!

bwn
Offline
Зарегистрирован: 25.08.2014

svorog пишет:

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

Попробуйте сперва просто резистор, возможно будет достаточно и его. 50кОм  (вроде так) и 1кОм, очень разные вещи. 

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

Конденсаторы можно прямо на контакты концевиков под болтики закрепить. Или на одном попробовать и посмотреть что будет. Дребезга точно не будет.

 

svm
Offline
Зарегистрирован: 06.11.2016

nik182 пишет:

Конденсаторы можно прямо на контакты концевиков под болтики закрепить. Или на одном попробовать и посмотреть что будет. Дребезга точно не будет.

 

Дребезга может быть и не будет, а наводки (особенно импульсные) при длине кабеля несколько метров-неизбежны. Для борьбы с ними и используются оптроны. Так в плазморезах (где концевик оси "Z" находится практически рядом с горелкой) используются промышленные оптроны от Broadcom c увеличенным до 15 мм оптическим каналом и практически нулевой проходной емкостью. И никаких наводок и ложных срабатываний. Правда RC фильтры по обеим сторонам оптрона никто не отменял. А в обычной силовой электронике, подойдет любой оптрон, главное развязать цепи питания контроллера и оптронов и использовать оптрон при максимально допустимых токов фотодиода.

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

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

svm
Offline
Зарегистрирован: 06.11.2016

nik182 пишет:
Импульсные наводки конденсаторами режутся. Оптроны и полное разделение земель и питаний это конечно наилучшее решение, но и требующее многие телодвижения.

Теоретически рассуждать мы можем долго, а каковы  реальные условия работы контроллера у ТС. Длинна кабелей, характер и мощность нагрузки? От этого многое зависит.

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

Мощности и прокладка озвучены. Длины нет. Но есть общие принципы уменьшения наводок. Даже в описанном ТС окружении можно добится вполне приличного результата. Главный принцип - переход к токам.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Да зачем оптопары? Если электричество экономить не надо, то можно обойтись элементарным преобразователем ток- напряжение на делителе. 

Резисторы надо брать на пол ватта. При 12 вольтах ток будет 77мА. Наводки будут гаситься 56омным резистором. 

svm
Offline
Зарегистрирован: 06.11.2016

nik182 пишет:
Мощности и прокладка озвучены. Длины нет. Но есть общие принципы уменьшения наводок. Даже в описанном ТС окружении можно добится вполне приличного результата. Главный принцип - переход к токам.

Извиняюсь, не заметил семь достаточно серьезных шаговиков. А они являются достаточно мощными источниками импульсных помех. Да еще скорее всего, сигналы их управления ШИМятся, что дает помеху с очень широком спектром. Судя по всему это какой-то ЧПУ станок, а значит есть движущиеся части, а это уже статика. И вся эта куча проводов идет в одном кабель канале. Самый надежный вариант это опторазвязка, по габаритам места практически не займет, а надежность повысится безо всяких танцев с бубном.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Подвесник в лифте- это 50-70 метров плоского резинового никогда в жизни  не экранированного кабеля
10-20 жил по  0.75 квадрата.
Все жилы просто параллельно в резине.
Обычно параллельно 2-3 таких сложено друг на друга.
Всё это двигается за кабиной постоянно изгибаясь
В нём и 24 постоянки и 220 и 380 идут.
Сигналы с герконов 24 Вольта напрямую в контроллер, 220 через оптроны
CAN-BUS  к кнопкам отдельно идёт,  а тот который на кабину- тот вместе со всеми.
Частотник наверху с ШИМом 10 килоГерц
и мотором 5-7 килоВатт, синхронным или асинхронным.
Контакторы хлопают с током 40-60 Ампер.

Никогда никаких помех!!!!!!!!!

svorog
Offline
Зарегистрирован: 27.04.2017

Длинна кабелей примерно 3м, да шаговики управляются ШИМом

 

схема подключения моих щелевых оптических датчиков выглядит примерно так, питание +5В, земля и выходной сигнальный провод на котором при срабатывании +5В

Вот какая осциллограмма, сейчас переставил установку в другое место сигнал стал значительно чише,  наводки не более +-0,5В

0,5В не могут ведь довать ложное срабатывание? значит проблема в контроллере обработчике?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

svorog пишет:
0,5В не могут ведь довать ложное срабатывание? значит проблема в контроллере обработчике?

Ну это как сказать. С одной стороны бабочка не помеха поднять штангу волку, а с другой стороны https://youtu.be/K3mjc6RFTv0?t=30 . Вот и на аппаратном уровне сделайте что бы так и не происходило.

Подсказка : запрещеные уровни.

Поменяйте обработчик кнопки #4

svorog
Offline
Зарегистрирован: 27.04.2017

Спасибо, посмотрел Ваш пост по слылки, но подсказка не моего уровня.  Пытал осмыслить код с тремя кнопками но так и не разобрался.

svorog
Offline
Зарегистрирован: 27.04.2017

я правильно понял, что мне необходимо сигнальный провод подтянуть через резистор на +5В,  и его же через конденсатор на землю? Под рукой сечас резостьры на 10к и 470 Ом, кондеры 0,07 и 0,1мкф. С резистором на 470 Ом  и с конденсатором на 0,1 навекрное можно попробовать?

svm
Offline
Зарегистрирован: 06.11.2016

svorog пишет:

 

я правильно понял, что мне необходимо сигнальный провод подтянуть через резистор на +5В,  и его же через конденсатор на землю? Под рукой сечас резостьры на 10к и 470 Ом, кондеры 0,07 и 0,1мкф. С резистором на 470 Ом  и с конденсатором на 0,1 навекрное можно попробовать?

От этого резистора зависит чувствительность фотоприемника и он ограничивает ток через него. 470 Ом-это очень мало. И чувствительность упадет и есть риск спалить фототранзистор. Лучше не рисковать. Конденсатор что 0,07, что 0,1 - это практически одно и тоже и вреда от них не будет

-NMi-
Offline
Зарегистрирован: 20.08.2018

trembo пишет:

Никогда никаких помех!!!!!!!!!

Можно с тобой поподробнее пообщаться по поводу автоматики лифтов?

svorog
Offline
Зарегистрирован: 27.04.2017

"..От этого резистора зависит чувствительность фотоприемника и он ограничивает ток через него..."   

попробовал через 10 кОм ситуацию не изменило,  теже +-0,5В, только после выключения питания ещё небольшая задержка по шуму, наверное кондер разряжается...

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

Концевики какие? Механические или оптические?

bwn
Offline
Зарегистрирован: 25.08.2014

nik182 пишет:
Концевики какие? Механические или оптические?

ТС оптику рисует.((( Я когда резистор советовал, думал про механические, увы.((((

Logik
Offline
Зарегистрирован: 05.08.2014

Отличный поворот сюжета )))

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

-NMi- пишет:

trembo пишет:

Никогда никаких помех!!!!!!!!!

Можно с тобой поподробнее пообщаться по поводу автоматики лифтов?

по скайпу можно написать.....

svorog
Offline
Зарегистрирован: 27.04.2017

Ну вообще у меня 3 оптических и 4 индуктивных датчика, выше  в #22  писал что выход у меня один информационный сигнал относительно земли, не думал что принцип измерения тут играет роль, т.к. все они хоть и разные а ведут себя одинаково ... плохо.

svm
Offline
Зарегистрирован: 06.11.2016

svorog пишет:

Ну вообще у меня 3 оптических и 4 индуктивных датчика, выше  в #22  писал что выход у меня один информационный сигнал относительно земли, не думал что принцип измерения тут играет роль, т.к. все они хоть и разные а ведут себя одинаково ... плохо.

Это не датчики ведут себя плохо, а наводки на линии и по земле. Все ваши датчики имеют относительно высокое выходное сопротивление, поэтому для борьбы с наводками можно поставить прямо на датчиках эмиттерные повторители. Получится что-то типа совета из поста #30. Ну и земляные  провода не объединять, как у Вас нарисовано на схеме, а вести отдельно прямо до контроллера желательно витой парой.

svorog
Offline
Зарегистрирован: 27.04.2017

 

Что то не пойму как можно применить совет из #30 для моей схемы,  ограничить питание датчиков 100Ом резистором а потом между информационным и землей (минусом) 56 Ом ? 

svm
Offline
Зарегистрирован: 06.11.2016

svorog пишет:

 

Что то не пойму как можно применить совет из #30 для моей схемы,  ограничить питание датчиков 100Ом резистором а потом между информационным и землей (минусом) 56 Ом ? 

Не совсем, выход датчика подключить к базе транзистора, включенного по схеме эмиттерного повторителя. Тогда можно поставить в его эмиттере низкоомный резистор 56 Ом. Типа этого:

enjoyneering
enjoyneering аватар
Offline
Зарегистрирован: 05.09.2016

вот это код на 2 страницы для подавления дребезга! автор, arduino и так тяжело, пожалейте его. поставте железный подавитель. наприер как сделанно у платы MKS Robin Mini