Как прочитать расстояние до проходящего объекта?

Хорошо, ребята, это мой первый пост, и я новичок в Arduino, но немного знаком с программированием, поэтому я надеюсь, что вы, ребята, сможете мне помочь. Если что-то из этого сбивает с толку, заранее извиняюсь! :)

Я хочу иметь возможность использовать датчик TOF, который будет стационарным, чтобы определять расстояние до проходящего объекта в определенный момент после его первого обнаружения, потому что он круглый. Поэтому я хотел использовать фотоэлектрический переключатель, поэтому, когда объект будет проходить, он отправит сигнал на датчик TOF, чтобы прочитать расстояние через 17 мс после этого момента. (Я сделал математику и задержку, чтобы быть в центре (ближайший край к датчику твердого шара) прохождения объекта займет 17 мс) Затем я хотел бы, чтобы это расстояние отображалось на ЖК-экране, пока не пройдет следующий объект и процесс не повторится.... Подумайте о конвейере пояс с баскетбольным мячом. Баскетбольный мяч будет двигаться и проходить мимо датчика, но расстояние до центра (ближайшего края к датчику) мяча будет измеряться в определенный момент и отображаться до тех пор, пока не пройдет следующий мяч.

Следующая проблема заключается в том, что расстояние необходимо преобразовать в «зону». Например, между 10–12 см будет = 2. 12,1–14 будет 3 и т. д. Последняя часть, вероятно, самая простая, но, Я понятия не имею, с чего начать... Я ценю всех, кто помогает!

Мне нужна была помощь с кодом, чтобы заставить это работать с Arduino uno. Датчик tof представляет собой фотоэлектрический датчик VL53L1X и E-931-S35RRQ. И ЖК-дисплей будет 7-сегментным, так что, если он запрограммирован на это, я смогу изменить размеры позже..

, 👍-2

Обсуждение

@velocitygraphix — я удалил часть вашего вопроса о «финансовом вознаграждении», потому что сообщество Stack Exchange не одобряет денежные вознаграждения за вопросы: https://meta.stackoverflow.com/questions/316137/what-to-do-when- оп-предложения-плата-за-решение, @VE7JRO

Да, все шары одного размера. Я не пытаюсь найти размер мяча, только расстояние до каждого, когда он проходит, а затем отображаю его. Спасибо!, @velocitygraphix

Расстояние до середины шара?... Я не уверен, как бы вы назвали середину шара... (на полпути к поверхности окружности?)... это твердый шар, поэтому время датчик полета должен был бы измерить ближайший край мяча на поверхности..., @velocitygraphix

Не уверен, что вы имеете в виду под ближайшим подходом, но я хочу, чтобы он измерялся до части мяча, которая находится ближе всего к датчику, который будет падать на полпути спереди назад при передаче. Представьте себе, что вы указали пальцем горизонтально на высоте, равной половине диаметра мяча... ваш палец является датчиком. Теперь, если мяч катится и задевает ваш палец, это ближайший край к пальцу (датчику), который следует измерить..., @velocitygraphix

Шаровая часть может сбить вас с толку, так как форма не имеет значения, пока датчик считывает расстояние через 17 мс после разрыва луча... пока датчик считывает показания именно в это время, он автоматически измеряйте правильную часть объекта., @velocitygraphix

теперь я понимаю ... у вас это не в голове четко ... в результате ваш пост - просто беспорядок неактуальной информации ... все, что вы хотите, это чтобы датчик TOF снял показания расстояния через 17 мс после триггерный сигнал ... вам нужно только одно предложение, чтобы спросить об этом, а не несколько абзацев, @jsotola

Ну типа. Хотел подробно объяснить. Он также должен удерживать показания на дисплее до тех пор, пока не пройдет следующий объект... а также преобразовать расстояние в "зоны"..., @velocitygraphix

Есть ли какие-то конкретные вопросы по этому проекту? А у вас уже есть датчик TOF? Или хотя бы выбрали?, @chrisl


2 ответа


0

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

Чтобы получить точное время, вы, вероятно, захотите ответить фотоэлектрическому датчику процедурой обслуживания прерывания, которая запускает таймер. Заставьте это работать дальше.

Затем выясните, как взаимодействовать с датчиком ToF. Когда я погуглил, я нашел голый датчик, а также версии на печатных платах с интерфейсом I2C. Возможно, вы сможете найти чью-нибудь библиотеку, которая взаимодействует с сенсором. Заставьте это работать, чтобы вы могли снимать показания с датчика TOF.

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

После того, как все части работают по отдельности, пришло время наметить логику вашей программы и заставить ее работать. Взгляните на пример «мигания без задержки arduino», чтобы узнать, как написать код, обрабатывающий синхронизированные ответы без использования функции delay().

,

0

Датчик работает с частотой 50 Гц; в зависимости от скорости шаров, проходящих через измерительную секцию, вам может потребоваться только дождаться диапазонов меньше (независимо от того, что соответствует бесконечности в вашей настройке), а затем отслеживать диапазоны, пока они не достигнут минимума, сохранить это значение, и вот ваше первый ответ. Это экономит детектор и имеет дополнительное преимущество, заключающееся в том, что оно не зависит от скорости движущегося шарика (вплоть до разрешения, ограниченного частотой измерения датчика и вашими требованиями к точности).

Во второй части просто нужно несколько если, например:

if( range < 10.0 ){
  zone = 1;   // или что еще вам нужно сделать здесь
}
else if( range < 12.0 ){
  zone = 2;
}
else {
  zone = 3;   // где-нибудь еще
}
,