Праивльное ли такое подключение датчиков

kast2k
Offline
Зарегистрирован: 16.01.2015

Добрый день, коллеги!

Хочу подключить к Arduino Mega 2560 R3 48 датчиков приближения.

Скажите, пожалуйста, правильно ли я составил схему подключения или ее можно упростить или чем-то необходимо дополнить? Нужно ли в моем случае ставить регистр подтяжки как на схеме?

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

Рисунок:

 

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

Тема не раскрыта.
Опишите как работает один датчик.
Он активно выдаёт 24 и 0 Вольт? Тогда через диоды по схеме "ИЛИ" на один общий резистор( вернее два- нам ещё делитель нужен)
Есть ли у него, допустим, выход с открытым коллектором? Тогда все выходы параллельно и так далее....
 

kast2k
Offline
Зарегистрирован: 16.01.2015

В нормальном состоянии на выходе датчика 0В. При поступлении металла в зону обнаружения на выходе появляется 24В.

Под "0V" я имел ввиду землю... стыжусь

kast2k
Offline
Зарегистрирован: 16.01.2015

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Я бы дополнительно защитил входы контроллера стабилитронами на 5 вольт... (заметьте, не 6, а 5) А резистор, от средней точки делителя, последовательно, чтобы ток от датчика ограничить...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

через оптопару - надёжность выше....
резистор, оптопара, резистор коллектора фототранзистора ( вместо него встроенный резистор подтяжки можно )

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

48 любых диодов носами наружу в одну точку к резистору оптрона, как недавно сказал SU-27-16, а дальше всё ясно, INPUT_PULLUP....

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 

резистор 3,9 kOm

Гриша
Offline
Зарегистрирован: 27.04.2014

а сколько каналов регистрации? а то ребята собрали все по "или" и вроде как помогли :)

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

Нет!!!!!!!!!!!!!!! Не включайте!!!!!!!!!!!!!!!!!

Схема то правильная.  Только ваши 24 Вольта ( за минусм 0.5 и 2.5 на диодах) - 21 Вольт на 130 Ом - пойдёт ток 160 миллиампер.
Я думаю диод оптрона долго не выживет.
Миллиампер 5-10 бы хватило. Значит резистор 2 - 3 килоома!

И, кстати,  катод диода к минусу датчиков , эмиттер транзистора на землю Ардуины, а вместе их лучше не соединять. Совсем не соединять!

kast2k
Offline
Зарегистрирован: 16.01.2015

Коллеги, спасибо вам за помощь!

Но есть небольшой ньюанс.

Есть стеллаж, на нем 48 ячеек. В каждой ячейке находится датчик. Каждый датчик (в моем представлении) подключается к своему входу на плате. При появлении сигнала на датчике ардуина через СОМ порт пишет номер датчика и далее, софт на компе отображает эту инфу.

Простите что сразу не оговорил данный момент.

Я правильно понимаю, что мне необходимо в данном случае распаять на плате 48 оптронов по схеме предложенной SU-27-16?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

kast2k пишет:

Я правильно понимаю, что мне необходимо в данном случае распаять на плате 48 оптронов по схеме предложенной SU-27-16?

Да ,правильно,сколько каналов,столько и оптронов.

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

А если сработает сразу несколько датчиков?

kast2k
Offline
Зарегистрирован: 16.01.2015

Ардуина передаст номера сработавших датчиков через запятую (1,9,13,26 например), а комп уже распарсит

kast2k
Offline
Зарегистрирован: 16.01.2015

SU-27-16

Не могли бы вы сказать, в какой программе вы рисуете такие схемы?

Спасибо.

gena
Offline
Зарегистрирован: 04.11.2012

,

kast2k пишет:

Коллеги, спасибо вам за помощь!

Но есть небольшой ньюанс.

Есть стеллаж, на нем 48 ячеек. В каждой ячейке находится датчик. Каждый датчик (в моем представлении) подключается к своему входу на плате. При появлении сигнала на датчике ардуина через СОМ порт пишет номер датчика и далее, софт на компе отображает эту инфу.

Простите что сразу не оговорил данный момент.

Я правильно понимаю, что мне необходимо в данном случае распаять на плате 48 оптронов по схеме предложенной SU-27-16?

 

  А может от каждой ячейки (через срабатывание геркона, например) сигнал подавать на резистивную матрицу, далее ардуина с помощью АЦП вычислит какие ячеки открыты и через СОМ порт (посредством оптопары), отправит на ПК результат вычислений? В таком случае 48 входов не надо (проводов меньше). Достаточно и  четырёх аналоговых входов (на каждый по 12-ть ячеек).

Гриша
Offline
Зарегистрирован: 27.04.2014

kast2k пишет:

SU-27-16

Не могли бы вы сказать, в какой программе вы рисуете такие схемы?

Спасибо.

вот такую недавно начал тестить, очень даже стандартный вариант :)

/*
arduino_input_mega

Demonstrates the reading of digital and analog pins of an Arduino Mega
running the StandardFirmata firmware.

To use:
* Using the Arduino software, upload the StandardFirmata example (located
  in Examples > Firmata > StandardFirmata) to your Arduino board.
* Run this sketch and look at the list of serial ports printed in the
  message area below. Note the index of the port corresponding to your
  Arduino board (the numbering starts at 0).  (Unless your Arduino board
  happens to be at index 0 in the list, the sketch probably won't work.
  Stop it and proceed with the instructions.)
* Modify the "arduino = new Arduino(...)" line below, changing the number
  in Arduino.list()[0] to the number corresponding to the serial port of
  your Arduino board.  Alternatively, you can replace Arduino.list()[0]
  with the name of the serial port, in double quotes, e.g. "COM5" on Windows
  or "/dev/tty.usbmodem621" on Mac.
* Run this sketch. The squares show the values of the digital inputs (HIGH
  pins are filled, LOW pins are not). The circles show the values of the
  analog inputs (the bigger the circle, the higher the reading on the
  corresponding analog input pin). The pins are laid out as if the Arduino
  were held with the logo upright (i.e. pin 13 is at the upper left). Note
  that the readings from unconnected pins will fluctuate randomly. 
  
For more information, see: http://playground.arduino.cc/Interfacing/Processing
*/

import processing.serial.*;

import cc.arduino.*;

Arduino arduino;

color off = color(4, 79, 111);
color on = color(84, 145, 158);

void setup() {
  size(880, 540);

  // Prints out the available serial ports.
  println(Arduino.list());
  
  // Modify this line, by changing the "0" to the index of the serial
  // port corresponding to your Arduino board (as it appears in the list
  // printed by the line above).
  arduino = new Arduino(this, Arduino.list()[0], 57600);
  
  // Alternatively, use the name of the serial port corresponding to your
  // Arduino (in double-quotes), as in the following line.
  //arduino = new Arduino(this, "/dev/tty.usbmodem621", 57600);
  
  // Set the Arduino digital pins as inputs.
  for (int i = 0; i <= 53; i++)
    arduino.pinMode(i, Arduino.INPUT);
}

void draw() {
  background(off);
  stroke(on);
  
  // Draw a filled box for each digital pin that's HIGH (5 volts).
  for (int i = 0; i <= 53; i++) {
    if (arduino.digitalRead(i) == Arduino.HIGH)
      fill(on);
    else
      fill(off);

    if (i <= 13) {
      rect(420 - i * 30, 30, 20, 20);
    } else if (i <= 21) {
      rect(480 + (i - 14) * 30, 30, 20, 20);
    } else {
      rect(780 + (i % 2) * 30, 30 + (i - 22) / 2 * 30, 20, 20);
    }
  }
    
  // Draw a circle whose size corresponds to the value of an analog input.
  noFill();
  for (int i = 0; i <= 15; i++) {
    ellipse(280 + i * 30, 500, arduino.analogRead(i) / 16, arduino.analogRead(i) / 16);
  }
}

прога встала и начала работать с первого раза :) , инструкции можно найти на этом сайте:

http://arduino.ru/forum/processing/primer-%E2%84%96-1-vizualizatsiya-vkhodyashchikh-dannykh-mnogo-teksta

Гриша
Offline
Зарегистрирован: 27.04.2014

vvadim пишет:

А если сработает сразу несколько датчиков?

Вы наверное не читали топик? прочитайте пост № 8

http://arduino.ru/forum/apparatnye-voprosy/praivlnoe-li-takoe-podklyuchenie-datchikov#comment-106933

Гриша
Offline
Зарегистрирован: 27.04.2014

trembo пишет:

Нет!!!!!!!!!!!!!!! Не включайте!!!!!!!!!!!!!!!!!

вы похоже тоже не читали :)

SU-27-16 пишет:

резистор 3,9 kOm

Гриша
Offline
Зарегистрирован: 27.04.2014

gena пишет:

  А может от каждой ячейки (через срабатывание геркона, например) сигнал подавать на резистивную матрицу, далее ардуина с помощью АЦП вычислит какие ячеки открыты и через СОМ порт (посредством оптопары), отправит на ПК результат вычислений? В таком случае 48 входов не надо (проводов меньше). Достаточно и  четырёх аналоговых входов (на каждый по 12-ть ячеек).

ЦАП r2r

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

зато если собрать по "И" с диодами... один вход - сигнал;  второй - строб. Корпусов добавится, появится защита МС , алгоритм прост и понятен станет... , блин, не просто, их тепер достать не просто :)

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

Коллеги, я правильно понимаю, что вы предлагаете выводить сигнал с 12 датчиков по такой схеме (грубая реализация)?

А как в этом случае ардуина поймет что в данный момент работают датчики, например, 1,4, 10?

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

Буду очень признателен если скинете примерчик или ссылку.

Спасибо.

kast2k
Offline
Зарегистрирован: 16.01.2015

Если я правильно понял статьи в интернете, то в данном случае выходное напряжение будет расчитываться по формуле

Uвых=V*∑(Ai*1/2n-i)

Минимальный шаг напряжения будет = Vвх*1/2n-i

Далее я читаю val=analogRead(A0) и смотрю какие биты активны и в соответствии с этим пишу данные порт.

Правильно?

Гриша
Offline
Зарегистрирован: 27.04.2014

Вы все правильно поняли вот только R25 = 2к, а не 1к. Очень низкая вероятность правильного определения младшего бита (R12) при большой разрядности (чем выше разрядность, тем ниже вероятность).  Примера у меня нет - только теория (сам собираюсь решать обратную задачу - управление скоростью вращения CD). В этой матрице необходимо будет согласовывать уровни и еще куча прелестей - хотя идея очень интересная. 

А почему Вы не хотите 20й пост применить? HC165 - http://www.chipdip.ru/product/sn74hc165n/ - надежнее в плане доставерности.

Со сдвиговыми регистрами Вам достаточно сделать макет с одним регистром, а потом каскадно наростить, соответственно изменяя алгоритм - это в десятки раз проще.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

trembo пишет:

Миллиампер 5-10 бы хватило. Значит резистор 2 - 3 килоома!

И, кстати,  катод диода к минусу датчиков , эмиттер транзистора на землю Ардуины, а вместе их лучше не соединять. Совсем не соединять!

выше картинки тест - резистор 3,9 kOm ( ток 6 mA ) :)
с развязкой земель - согласен ! если юзать оптопару - то и землю уж тогда отвязать :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

kast2k пишет:

Коллеги, я правильно понимаю, что вы предлагаете выводить сигнал с 12 датчиков по такой схеме (грубая реализация)?

А как в этом случае ардуина поймет что в данный момент работают датчики, например, 1,4, 10?

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

Буду очень признателен если скинете примерчик или ссылку.

Спасибо.

48 датчиков, матрица R2R - преобразование 48-ми разрядного кода в напряжение....
....чтобы потом аналоговым входом перевести в цифру ?
при чём существует неоднозначность преобразования :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

с датчиков через резДелители сигналы приводим к уровню 4...4,5 V , подаём на 6 параллПослед регистров ( по схеме trembo из #20 ) - итого = 96 резисторов , 6 регистров , программа - всё !

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

kast2k , "рисовалка" - Proteus часть ISIS

kast2k
Offline
Зарегистрирован: 16.01.2015

Т.к. разрешение АЦП 10 бит и измерения будут производится относительно 5-ти вольт, поэтому изменение показаний на 1 соответствует фактическому напряжению ~5/1023=4.9мВ. То есть средствами встроенного АЦП я смогу измерить напряжение с точностью до 4.9мВ.

А если я буду отбрасывать младшие 2 разряда (val = analogRead(A0)>>2), то получается шаг ~5/255=19.6мВ.

Будет ли мне достаточно такого шага ? Или все равно мало для 8 битной матрицы? (идея разбить на 6 матриц)

kast2k
Offline
Зарегистрирован: 16.01.2015

SU-27-16 пишет:

с датчиков через резДелители сигналы приводим к уровню 4...4,5 V , подаём на 6 параллПослед регистров ( по схеме trembo из #20 ) - итого = 96 резисторов , 6 регистров , программа - всё !

пойду знакомиться :) спасибо :)

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

TO: SU-27-16 ......с датчиков через резДелители сигналы приводим к уровню 4...4,5 V......

Опять-же - ничего ни к чему не приводим! 48 резисторов, 48 оптронов, 6 регистров.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

trembo пишет:

TO: SU-27-16 ......с датчиков через резДелители сигналы приводим к уровню 4...4,5 V......

Опять-же - ничего ни к чему не приводим! 48 резисторов, 48 оптронов, 6 регистров.

миня душит жаба трат на оптопары.... для сбережения каких-то регистров.....
для надёжности - да, самое то 48+48+6

с матрицей R2R будут ошибки определения сработавшего датчика.....

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

trembo , вопрос по ходу.....
нужны АОТы с фототранзистором на выходе... а MOC30хх - смогут выполнить ту же работу ? 

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

Нееееееееет! Для сбережения всего!
Кто, как и какие блоки питания к датчикам подключал? 
Ведь датчики могут получить корпусную землю где угодно.
А на каждой  земле может тоже быть  что угодно.
И пойдут токи между этими землями....
И разверзнутся эти регисты с белым дымом......

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

.........нужны АОТы.........

А 817-ые чем плохи? Раздирайте любые АТХ блоки питания. Их там есть.
Если доктор мне не врёт- 2 доллара полсотни:
http://www.ebay.com/itm/50PCS-OPTOCOUPLER-SHARP-DIP-4-PC817C-PC817-/400592885148?pt=LH_DefaultDomain_0&hash=item5d4532559c

Для начала хватит.....

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

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

спасибо :)
 

Гриша
Offline
Зарегистрирован: 27.04.2014

сухой остаток последних постов:

1) гальванической рвзвязки не избежать - ее можно реализовать в 2 местах. а) развязаться от датчиков, тогда контроллер остается на стороне компьтера (по питанию). б) обычным делителем или регистрами снимаем показания (общее питание с датчиками, зависит от их исполнения) и развязка интерфейса с комьпьютером.

2) подавать на входы АЦП через r2r  не оптимально, предпочтительнее работать с цифрой. Регистры позволят наростить схему до бесконечности (в ущерб времени опроса). Развязавшись оптопарами от датчиков - повысится надежность схемы.

3) Цена вопроса не высока, можно рассматривать комбинацию решений.

Я ничего не забыл?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

про ущерб от времени опроса - можно забыть :)
у ТС скорость перемещения чего-то относительно датчиков гораздо меньше чем скорость опроса 1......24-ёх регистров разов в 100...10000

kast2k
Offline
Зарегистрирован: 16.01.2015

Огромное всем спасибо! :)

Пошел покупать компоненты. :)

Гриша,

Вы совершенно правы.

Гриша
Offline
Зарегистрирован: 27.04.2014

kast2k пишет:

Огромное всем спасибо! :)

Пошел покупать компоненты. :)

Гриша,

Вы совершенно правы.

не повторите вот эту ошибку:

http://arduino.ru/forum/obshchii/optorazvyazka-ardurino-i-draivernoi-chasti?page=1#comment-68837

там просто человек недопонял и ошибся с питанием, почитайте эту тему.

Да и чего Вы так спешите! Правильно нарисованная схема - половина решения поставленной задачи! Схема где? Здесь обсуждили концепцию, по который Вы должны были принять решение и нарисовать схему.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Гриша
Offline
Зарегистрирован: 27.04.2014

SU-27-16, может Вы и спаяете для ТС? Не всегда полезно "кормить рыбой", гораздо полезнее подарить "удочку"... в разное время к нам на работу устраивались 3 "работника" с высшим образованием, связаным с электроникой (микроэлектроник, АСУшник и т.п.). Так их работа начиналась с изучения школьного курса физики - закона Ома. Слова типа "поставь интегратор" или "посчитай RC  цепь" просто убивали их разум... А приборы они включали "по картинке" - им показали, они зарисовали. Токовый сигнал 4-20 мА на нагрузке 200 Ом вообще не расчитывался, даже после изучения закона Ома... :)  

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

SU-27-16

Не могли бы вы сказать, в какой программе вы рисуете такие схемы?

.....значит пока ещё не может, но моя тоже за дарение не "удочки" , а "лески" хотя бы :)-

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

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

А потенциалы пусть будут какие есть- мы для этого ( для надёжности) оптроны и ставим....

Гриша
Offline
Зарегистрирован: 27.04.2014

trembo пишет:

Опять не правильно. GND каждого датчика отдельно.

проглядел..... :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

trembo пишет:

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

А потенциалы пусть будут какие есть- мы для этого ( для надёжности) оптроны и ставим....

ну, да.... как в авиации - лучше перебздеть, чем недобздеть ! :)
...или как в префе - заложиться на 4-го вальта :)

поддерживаю-согласен полностью ! никто не знает как там с землями у каждого из 48-ми датчиков....
trembo прав - защиту от дурака надо всегда иметь в виду....
....как от миня , например :)

kast2k
Offline
Зарегистрирован: 16.01.2015

SU-27-16 пишет:

SU-27-16

Не могли бы вы сказать, в какой программе вы рисуете такие схемы?

.....значит пока ещё не может, но моя тоже за дарение не "удочки" , а "лески" хотя бы :)-

Т.к. программ по рисованию схем в интернете море , а именно в ваших схемах мне понравился дизайн вот я и поинтересовался.

"Удочки" уже было достаточно :) Благодаря вашим (все участники) ответам я практически разобрался в теме.

Но за последнюю схему вам Спасибо!

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

не последняя !!!!!!!!!!!! ...крайняя :)
...авиационный слэнг :)

...щас поищу установочный пакет на эту "рисовалку" , найду - выложу

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

trembo - ПРАВ ! :)

kast2k
Offline
Зарегистрирован: 16.01.2015

Основываясь на предудущих ответах нарисовал так.

Гриша
Offline
Зарегистрирован: 27.04.2014

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

http://arduino.ru/forum/apparatnye-voprosy/datchik-urovnya-vody-v-akvarium?page=1#comment-106576

Мой брат в Paint рисовал не заморачиваясь - почти весь инверторный сварочник... :)

kast2k
Offline
Зарегистрирован: 16.01.2015

Вы не могли бы пояснить назначение R3 и R4? Не совсем понимаю :(

Ведь у ардуино уже есть свое питание, зачем его же подавать на выход оптрона?