Объединение датчиков в массив

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#1

Сообщение richialex » 05.04.2021{, 01:06}

Здравствуйте. Есть ли возможность штатными блоками объединить несколько датчиков в массив? Стоит задача из 5 фоторезисторов сделать "один". Фоторезисторы расположены в ряд и каждый выдает от 200 до 1000, а нужно чтобы этот ряд из 5 фотоэлементов выдавал (к примеру) от 0 до 5000, при этом в один момент времени тень падает только на один из них. Помогите пожалуйста, а то уже неделю бьюсь над этой задачей. Уже даже блок пытался создать на основе библиотеки QTRSensors (Вроде делает как раз то, что необходимо), но без результата.
Вложения
foto.png
foto.png (4.74 КБ) 469 просмотров

dsfbuy
Сержант
Сообщения: 158
Зарегистрирован: 03.11.2018{, 12:40}
Репутация: 20
Откуда: Братск
Имя: Виктор

Объединение датчиков в массив

#2

Сообщение dsfbuy » 05.04.2021{, 01:30}

richialex писал(а):
05.04.2021{, 01:06}
Стоит задача из 5 фоторезисторов сделать "один".
sum.png

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#3

Сообщение richialex » 05.04.2021{, 11:20}

dsfbuy писал(а):
05.04.2021{, 01:30}
richialex писал(а):
05.04.2021{, 01:06}
Стоит задача из 5 фоторезисторов сделать "один".
sum.png
Так попробовал сделать в первую очередь ))). Но в моем случае данная схема не работает, так как тень тонкая и в единицу времени перекрывает только один фоторезистор, да и когда попадает между ними, то все датчики оказываются в открытом состоянии.

Аватара пользователя
rw6cm
Полковник
Сообщения: 1993
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 223
Имя: Владимир

Объединение датчиков в массив

#4

Сообщение rw6cm » 05.04.2021{, 12:08}

richialex,
Логику не пойму.
Если предположить, что интенсивность света одинаковая (макс ),
то на какой бы датчик не падала тень результат будет один =4000
какой смысл?
Win10-64, FLProg (portable)

edyapd
Лейтенант
Сообщения: 661
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 47
Имя: Эдуард

Объединение датчиков в массив

#5

Сообщение edyapd » 05.04.2021{, 12:11}

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

Аватара пользователя
Pratak
Сержант
Сообщения: 197
Зарегистрирован: 08.02.2016{, 20:21}
Репутация: 6
Откуда: Севастополь
Имя: Дмитрий
Контактная информация:

Объединение датчиков в массив

#6

Сообщение Pratak » 05.04.2021{, 15:59}

ТС видимо тех. задание не правильно изложил... или не полностью... или логику не так себе представил))). Вечером с работы вернется и все расскажет))). По мне так устройство на солнечный трекер похоже.
Изображение

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#7

Сообщение richialex » 05.04.2021{, 19:51}

rw6cm писал(а):
05.04.2021{, 12:08}
Если предположить, что интенсивность света одинаковая (макс ),
Интенсивность одинаковая.
rw6cm писал(а):
05.04.2021{, 12:08}
то на какой бы датчик не падала тень результат будет один =4000
Когда один из датчиков перекрывается, показания чуть меньше.
edyapd писал(а):
05.04.2021{, 12:11}
если у вас вывод каждого фоторезистора заводится на МК, то к чему такие сложности?
Да. Каждый датчик подключен к своему аналоговому порту.
edyapd писал(а):
05.04.2021{, 12:11}
Как вы собираетесь анализировать ситуацию, когда тень попадает между датчиками?
И тут же появился третий. Как вы собираетесь анализировать закрывается датчик или открывается?
Вот над этим и ломаю голову....
Pratak писал(а):
05.04.2021{, 15:59}
ТС видимо тех. задание не правильно изложил... или не полностью... или логику не так себе представил))). Вечером с работы вернется и все расскажет))).
Скорее всего так и есть. Приношу все свои извинения! Вчера на ночь глядя писал, не все исходные дал. Изложу суть:

Устройство суть намотчик провода.

Провод свободно свисая наматывается на катушку, но так как скорость смотки постоянная (И изменить я это никак не могу), а угловая скорость намотки меняется (Так как при намотке увеличивается диаметр катушки), то приходится постоянно вручную снижать скорость намотки. Сейчас фоторезисторы играют роль стопора (На самом деле для этого хватает и одного, но собрал уже пять на будущее). Т.е. при срабатывании двигатель намотчика останавливается и через секунду вновь возобновляет намотку. В таком режиме и работает: Старт - стоп. Но при этом, что не нравится, провод постоянно дергается и в целом, за цикл намотки все равно приходится следить за скоростью.

Так вот. Хочется сделать автоматическую намотку. Чтобы скорость скорость двигателя намотчика подстраивалась под увеличивающийся диаметр. Нашел в интернете примеры с библиотекой QTRSensors, (она из нескольких фоторезисторов делает один, на сколько я понял), в том числе управление двигателями через PID (Она к примеру используется в ардуино машинах, которые катаются по черной линии, без нее рысканье по линии, с ней плавное движение), от туда и взял идею. В моем примере, например, удержание тени от провода на среднем датчике: Выше - снижаем скорость, ниже - увеличиваем.
Вложения
111.png
111.png (10.15 КБ) 356 просмотров

Аватара пользователя
AlexCrane
Лейтенант
Сообщения: 569
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 138
Откуда: Ульяновск
Имя: Александр

Объединение датчиков в массив

#8

Сообщение AlexCrane » 05.04.2021{, 20:05}

richialex писал(а):
05.04.2021{, 19:51}
Как вы собираетесь анализировать ситуацию, когда тень попадает между датчиками?
Ну тут просто ничего ни делать и ждать сигнала от какого-либо датчика
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#9

Сообщение richialex » 05.04.2021{, 20:30}

AlexCrane писал(а):
05.04.2021{, 20:05}
Ну тут просто ничего ни делать и ждать сигнала от какого-либо датчика
Ну вот первый кирпичик здания.... Кстати двигатель намотчика шаговый Nema17. Работает на Ваших блоках... v1.3
edyapd писал(а):
05.04.2021{, 12:11}
Как вы собираетесь анализировать закрывается датчик или открывается?
Есть тень - датчик закрыт. Нет тени - датчик закрыт. С противоположной стороны от фоторезисторов стоит лазер с линзой выдающий линию. Верхняя планка играет роль стопора (Останавливает двигатель). Подключена как кнопка. На случай если провод пролетит фоторезисторы "незамеченным"
Вложения
20210405_222847.jpg

edyapd
Лейтенант
Сообщения: 661
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 47
Имя: Эдуард

Объединение датчиков в массив

#10

Сообщение edyapd » 05.04.2021{, 21:05}

richialex писал(а):
05.04.2021{, 19:51}
Да. Каждый датчик подключен к своему аналоговому порту.
richialex писал(а):
05.04.2021{, 20:30}
Есть тень - датчик закрыт. Нет тени - датчик закрыт
По сути, вы используете фоторезистор как обычный бинарный элемент. Думаю, что для этого можно взять фотодиод и не надо будет задействовать аналоговые входа и их опрос. Можно будет посадить на обычный цифровой вход.

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#11

Сообщение richialex » 05.04.2021{, 21:23}

edyapd писал(а):
05.04.2021{, 21:05}
Думаю, что для этого можно взять фотодиод и не надо будет задействовать аналоговые входа и их опрос.
Под рукой были. И по сути так и делал пока стояла Uno, я подключал фоторезистор к цифровому пину через переменный резистор, ловя им точку срабатывания при текущей освещенности. Не нравилось то, что при хорошей чувствительности были ложные срабатывания, а при уменьшении чувствительности фоторезистор иногда не видел препятствие. Аналоговый сигнал с компаратором, в моем случае срабатывает четче и быстрее, да и мега вполне справляется. При наличии кучи свободных пинов не увидел необходимости зажиматься, еще и дисплей через сериал повесил, чтоб i2c не использовать.
Последний раз редактировалось richialex 05.04.2021{, 21:30}, всего редактировалось 1 раз.

Аватара пользователя
rw6cm
Полковник
Сообщения: 1993
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 223
Имя: Владимир

Объединение датчиков в массив

#12

Сообщение rw6cm » 05.04.2021{, 21:29}

richialex писал(а):
05.04.2021{, 19:51}
В моем примере, например, удержание тени от провода на среднем датчике: Выше - снижаем скорость, ниже - увеличиваем.
диаметр провода разный, перекрытие разное и мало тени.
Тогда можно сделать подвесную шторку на ролике с подшипником.
это будет более чувствительно и предсказуемо.
СпойлерПоказать
Безымянный.png
Безымянный.png (5.6 КБ) 322 просмотра
Win10-64, FLProg (portable)

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#13

Сообщение richialex » 05.04.2021{, 21:54}

rw6cm писал(а):
05.04.2021{, 21:29}
диаметр провода разный
Диаметр всегда примерно одинаковый. 1,5 - 2 мм.
rw6cm писал(а):
05.04.2021{, 21:29}
Тогда можно сделать подвесную шторку на ролике с подшипником.
Тоже думал над механическим решением, типа большого ролика и датчика холла с магнитом, или потенциометра. Вот еще как вариант шторка. Если программным путем решить не удастся, до буду уже рассматривать такие варианты.

Загорелся потому, что увидел по сути готовое решение в коде для arduino. Вот и подумал, что в FLProg можно реализовать что-то подобное.

Аватара пользователя
AlexCrane
Лейтенант
Сообщения: 569
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 138
Откуда: Ульяновск
Имя: Александр

Объединение датчиков в массив

#14

Сообщение AlexCrane » 05.04.2021{, 22:18}

richialex,
А если так
Скорость ШД.png
Скорость.flp
(355.1 КБ) 6 скачиваний
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#15

Сообщение richialex » 05.04.2021{, 23:09}

AlexCrane писал(а):
05.04.2021{, 22:18}
А если так
Спасибо! Домотает и буду пробовать с подбором параметров. Надеюсь заработает.

Сейчас повторно (Вернее это уже наверно попытка номер 7) сел за пользовательский блок. Пытаюсь создать его на примере из состава библиотеки. Фактически, если загрузить его в плату, то он делает как раз то, что нужно. Выдает в UART положение темной линии в массиве из 5 датчиков. Если ни то ни то не получится, то наверное лишу себя пары пива и пойду в "Прием заказов" ))).

Код: Выделить всё

#include <QTRSensors.h>

// This example is designed for use with six analog QTR sensors. These
// reflectance sensors should be connected to analog pins A0 to A5. The
// sensors' emitter control pin (CTRL or LEDON) can optionally be connected to
// digital pin 2, or you can leave it disconnected and remove the call to
// setEmitterPin().
//
// The setup phase of this example calibrates the sensors for ten seconds and
// turns on the Arduino's LED (usually on pin 13) while calibration is going
// on. During this phase, you should expose each reflectance sensor to the
// lightest and darkest readings they will encounter. For example, if you are
// making a line follower, you should slide the sensors across the line during
// the calibration phase so that each sensor can get a reading of how dark the
// line is and how light the ground is. Improper calibration will result in
// poor readings.
//
// The main loop of the example reads the calibrated sensor values and uses
// them to estimate the position of a line. You can test this by taping a piece
// of 3/4" black electrical tape to a piece of white paper and sliding the
// sensor across it. It prints the sensor values to the serial monitor as
// numbers from 0 (maximum reflectance) to 1000 (minimum reflectance) followed
// by the estimated location of the line as a number from 0 to 5000. 1000 means
// the line is directly under sensor 1, 2000 means directly under sensor 2,
// etc. 0 means the line is directly under sensor 0 or was last seen by sensor
// 0 before being lost. 5000 means the line is directly under sensor 5 or was
// last seen by sensor 5 before being lost.

QTRSensors qtr;

const uint8_t SensorCount = 5;
uint16_t sensorValues[SensorCount];

void setup()
{
  // configure the sensors
  qtr.setTypeAnalog();
  qtr.setSensorPins((const uint8_t[]){A9, A10, A5, A12, A11}, SensorCount);
//  qtr.setEmitterPin(2);

  delay(500);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH); // turn on Arduino's LED to indicate we are in calibration mode

  // analogRead() takes about 0.1 ms on an AVR.
  // 0.1 ms per sensor * 4 samples per sensor read (default) * 6 sensors
  // * 10 reads per calibrate() call = ~24 ms per calibrate() call.
  // Call calibrate() 400 times to make calibration take about 10 seconds.
  for (uint16_t i = 0; i < 400; i++)
  {
    qtr.calibrate();
  }
  digitalWrite(LED_BUILTIN, LOW); // turn off Arduino's LED to indicate we are through with calibration

  // print the calibration minimum values measured when emitters were on
  Serial.begin(9600);
  for (uint8_t i = 0; i < SensorCount; i++)
  {
    Serial.print(qtr.calibrationOn.minimum[i]);
    Serial.print(' ');
  }
  Serial.println();

  // print the calibration maximum values measured when emitters were on
  for (uint8_t i = 0; i < SensorCount; i++)
  {
    Serial.print(qtr.calibrationOn.maximum[i]);
    Serial.print(' ');
  }
  Serial.println();
  Serial.println();
  delay(1000);
}

void loop()
{
  // read calibrated sensor values and obtain a measure of the line position
  // from 0 to 5000 (for a white line, use readLineWhite() instead)
  uint16_t position = qtr.readLineBlack(sensorValues);

  // print the sensor values as numbers from 0 to 1000, where 0 means maximum
  // reflectance and 1000 means minimum reflectance, followed by the line
  // position
  for (uint8_t i = 0; i < SensorCount; i++)
  {
    Serial.print(sensorValues[i]);
    Serial.print('\t');
  }
  Serial.println(position);

  delay(250);
}
Отправлено спустя 1 час 50 минут 1 секунду:
AlexCrane писал(а):
05.04.2021{, 22:18}
А если так
Вроде заработала Ваша схема. Правда немного в видоизмененном виде. Не совсем понял для чего в Вашей схеме компаратор с ==, если не сложно подскажите пожалуйста его назначение, может полезная функция а я ее вырезал. Пока его не убрал счетчик все время считал вверх. В любом случае еще раз Спасибо! Попробую пока с ней поработать, может получится PID прикрутить. С ним всяко плавнее....
Вложения
222.png

edyapd
Лейтенант
Сообщения: 661
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 47
Имя: Эдуард

Объединение датчиков в массив

#16

Сообщение edyapd » 06.04.2021{, 04:26}

richialex писал(а):
06.04.2021{, 00:59}
Не совсем понял для чего в Вашей схеме компаратор с ==, если не сложно подскажите пожалуйста его назначение, может полезная функция а я ее вырезал.
Я хоть и не AlexCrane, но рискну ответить. Сравнение с "2" нужно было, что бы останавливать счётчик. На логическую "И" подавался "0" и уже не важно, что приходит с генератора.
И странно, что у вас при этом продолжался счёт вверх.

sillver
Сержант
Сообщения: 188
Зарегистрирован: 27.04.2017{, 12:04}
Репутация: 2

Объединение датчиков в массив

#17

Сообщение sillver » 06.04.2021{, 10:33}

Добрый день. Я хочу вставить свои 5 копеек. У нас на производстве для таких задач используют активные отдатчики, сменилось натяжение компенсатор добавил/убрал обороты на отдающем приводе правда мы используем частотники,но думаю и ШИМом можно обойтись.

richialex
Рядовой
Сообщения: 30
Зарегистрирован: 01.07.2020{, 21:41}
Репутация: 0
Имя: Alex

Объединение датчиков в массив

#18

Сообщение richialex » 06.04.2021{, 21:44}

edyapd писал(а):
06.04.2021{, 04:26}
Сравнение с "2" нужно было, что бы останавливать счётчик. На логическую "И" подавался "0" и уже не важно, что приходит с генератора.
И странно, что у вас при этом продолжался счёт вверх.
Да. Уже позже "въехал". При первых тестах, на втором датчике были завышены данные для сравнения и он пропускал импульсы. При это схема работала не верно.

Отправлено спустя 1 минуту 52 секунды:
sillver писал(а):
06.04.2021{, 10:33}
У нас на производстве для таких задач используют активные отдатчики
Спасибо за Ваш комментарий. К сожалению у меня не возможности менять скорость отдачи. Поэтому работаю только с приемником.

sillver
Сержант
Сообщения: 188
Зарегистрирован: 27.04.2017{, 12:04}
Репутация: 2

Объединение датчиков в массив

#19

Сообщение sillver » 06.04.2021{, 23:12}

richialex писал(а):
06.04.2021{, 21:46}
К сожалению у меня не возможности менять скорость отдачи. Поэтому работаю только с приемником.
Отрицательный результат, это тоже результат с ним появляется опыт! может стоит попробовать ? В промышленности много умов работали!!! а может это проще?

DanilaWERT
Сержант
Сообщения: 142
Зарегистрирован: 01.12.2018{, 14:20}
Репутация: 1
Имя: danila

Объединение датчиков в массив

#20

Сообщение DanilaWERT » 06.04.2021{, 23:40}

richialex писал(а):
06.04.2021{, 21:46}
К сожалению у меня не возможности менять скорость отдачи.
А если механически притормаживать отдачу..Пусть шаговик крутится под небольшой нагрузкой...че ему будет.

Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость