Стрелковый таймер

AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

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

также я реализовал еще две функции.
1)По двойному нажатию время до начала зуммера и отсчета рандомизируется. Чтобы сигнал подавался неожиданно
2)вывод последнего сплита(время между выстрелами) на экран

Для улавливания звука используется "датчик хлопка". Если я правильно понял он цифровой и уровень чувствительности регулируется потенциометром на самой плате. Правильное ли это решение или лучше использовать другой датчик. Как его можно програмно загрубить,чтобы не ловил эхо?
13b78626bec38960b6b5dab57ca9a926.jpg
еще один вопрос вызывает подсчет времени. Я использовал генератор и счетчик импульсов. Генератор дает импульс 5мс а затем паузу 15мс. Получается 1 импульс в 20мс. Затем количество импульсов делю на 50 и получаею время в секундах. Правильный ли это способ?
Strelkovy_taymer3.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Стрелковый таймер

Сообщение Ingwar »

AresSk писал(а): 14 янв 2022, 12:30 Как его можно програмно загрубить,чтобы не ловил эхо?
Если выстрелы не очень частые, то можно одновибратором или таймером OFF и Rтриггером.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Ingwar писал(а): 14 янв 2022, 13:20 Если выстрелы не очень частые
частые. до 0.1 сек
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Стрелковый таймер

Сообщение Ingwar »

AresSk писал(а): 14 янв 2022, 13:22 частые. до 0.1 сек
Ну тогда на этом модуле делать конструкцию для превращения его в узконаправленный... Или использовать классический микрофон и раскладывать спектры выстрела и эха, короче совсем не уровень Flprog ))). ИМХО.

Отправлено спустя 3 минуты 32 секунды:
AresSk писал(а): 14 янв 2022, 12:30 Я использовал генератор и счетчик импульсов
А почему ESP8266 ? Там с точностью/повторяемостью может быть не очень.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Ingwar писал(а): 14 янв 2022, 13:27 Ну тогда на этом модуле делать конструкцию для превращения его в узконаправленный... Или использовать классический микрофон и раскладывать спектры выстрела и эха, короче совсем не уровень Flprog ))). ИМХО.
понял, спасибо
Ingwar писал(а): 14 янв 2022, 13:31 А почему ESP8266 ? Там с точностью/повторяемостью может быть не очень.
что было в наличии, ну и чтобы в дальнейшем с интернетом подружить.

На ардуинке,в принципе, тоже можно если она в этом плане получше
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Стрелковый таймер

Сообщение Ingwar »

AresSk писал(а): 14 янв 2022, 13:33 что было в наличии, ну и чтобы в дальнейшем с интернетом подружить.
Если Вам нужна хоть какая то приемлемая точность, то потрудитесь составить программу так, чтобы в период замера не выполнялся код вывода/ввода (дисплей/интернет и т.д.)
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

AresSk писал(а): 14 янв 2022, 12:30 Я использовал генератор и счетчик импульсов. Генератор дает импульс 5мс а затем паузу 15мс. Получается 1 импульс в 20мс. Затем количество импульсов делю на 50 и получаею время в секундах. Правильный ли это способ?
Способ в корне не верный. Никакой точности не получите. Используйте скоростной счетчик.
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Dryundel писал(а): 14 янв 2022, 14:54 Способ в корне не верный. Никакой точности не получите. Используйте скоростной счетчик.
Спасибо за совет.
Начал разбираться со скоростным счетчиком и что-то затупил. Правильно ли я понимаю, что ему необходимо получать импульсы с пина поддерживающего аппаратные прерывания? В таком случае, что будет импульсы задавать? Или мы оставляем генератор 5\15, но он теперь должен выдавать импульсы на этот пин. И с пина уже считываем скоростным счетчиком?
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

AresSk писал(а): 14 янв 2022, 18:54 Правильно ли я понимаю, что ему необходимо получать импульсы с пина поддерживающего аппаратные прерывания?
Правильно понимаете.
AresSk писал(а): 14 янв 2022, 18:54 В таком случае, что будет импульсы задавать?
Ну конечный импульс придет с вашего датчика звука. А вот на счет стартового, надо подумать. Возможно использовать выходной пин связав его с входным на прерываниях.

Отправлено спустя 49 секунд:
AresSk писал(а): 14 янв 2022, 18:54 И с пина уже считываем скоростным счетчиком?
Не дочитал. Решение уже есть. :)
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Dryundel писал(а): 14 янв 2022, 21:02 Не дочитал. Решение уже есть.
Тогда так и поступлю. Спасибо.
Осталось с эхом разобраться
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

[ref]AresSk[/ref], как продвигается проект?
Предположу, что Вы зашли в тупик.
Дошли руки потестировал я подобный датчик звука.
Датчик звука.jpg
В отличии от вашего, на этом присутствует еще и цифровой выход D0
Так вот, пришел я к выводу, что с помощью штатных средств FLProg, создать качественный стрелковый таймер практически нереально. Во всяком случае, мне не удалось придумать как это сделать. Но это не означает что с помощью Arduino (Wemos) и данного звукового датчика нельзя организовать решение побной задачи. Как вариант - надо делать специфические пользовательские блоки или писать скетч на C++.

Вот некоторые результаты исследования датчика.
1. Аналоговый выход датчика в принципе может выдать внятный сигнал хлопка. Однако в FLProg нет штатных средств, с помощью которых возможно гарантировано зафиксировать данный сигнал, т.к. он очень короткий.
2. Попытка использовать цифровой выход штатными средствами, так же не особо удалась по причине того, что в момент хлопка, на этом выходе пролетает довольно внушительная пачка очень коротких импульсов, гарантированная фиксация которых возможна только через пины поддерживающие прерывания.

Вывод:
Надо думать. :)

Вообще задача интересная. Вопрос на сколько она для Вас актуальна.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Dryundel писал(а): 24 янв 2022, 12:23 [ref]AresSk[/ref], как продвигается проект?
Предположу, что Вы зашли в тупик.
Дошли руки потестировал я подобный датчик звука.
Датчик звука.jpg
В отличии от вашего, на этом присутствует еще и цифровой выход D0
Так вот, пришел я к выводу, что с помощью штатных средств FLProg, создать качественный стрелковый таймер практически нереально. Во всяком случае, мне не удалось придумать как это сделать. Но это не означает что с помощью Arduino (Wemos) и данного звукового датчика нельзя организовать решение побной задачи. Как вариант - надо делать специфические пользовательские блоки или писать скетч на C++.

Вот некоторые результаты исследования датчика.
1. Аналоговый выход датчика в принципе может выдать внятный сигнал хлопка. Однако в FLProg нет штатных средств, с помощью которых возможно гарантировано зафиксировать данный сигнал, т.к. он очень короткий.
2. Попытка использовать цифровой выход штатными средствами, так же не особо удалась по причине того, что в момент хлопка, на этом выходе пролетает довольно внушительная пачка очень коротких импульсов, гарантированная фиксация которых возможна только через пины поддерживающие прерывания.

Вывод:
Надо думать. :)

Вообще задача интересная. Вопрос на сколько она для Вас актуальна.
Частично в тупике,да.

На воздухе, где нет эха удалось настроить нормально. В помещении - крайне нестабильный результат
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

AresSk писал(а): 08 фев 2022, 19:50 На воздухе, где нет эха удалось настроить нормально. В помещении - крайне нестабильный результат
А проект можно глянуть?
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Dryundel писал(а): 08 фев 2022, 21:08
AresSk писал(а): 08 фев 2022, 19:50 На воздухе, где нет эха удалось настроить нормально. В помещении - крайне нестабильный результат
А проект можно глянуть?
можно конечно. Но для настройки крутил потенциометр на датчике хлопка
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Brand2
Лейтенант
Сообщения: 450
Зарегистрирован: 26 фев 2018, 21:27
Откуда: Haifa
Имя: Alex
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Стрелковый таймер

Сообщение Brand2 »

[ref]AresSk[/ref],
AresSk писал(а): 14 янв 2022, 13:22 частые. до 0.1 сек
Там что,из АК стреляют?
AresSk
Рядовой
Сообщения: 22
Зарегистрирован: 06 янв 2022, 16:23
Имя: Ефим

Стрелковый таймер

Сообщение AresSk »

Brand2 писал(а): 09 фев 2022, 14:02 [ref]AresSk[/ref],
AresSk писал(а): 14 янв 2022, 13:22 частые. до 0.1 сек
Там что,из АК стреляют?
в том числе... Даже если не брать в расчет автоогонь то на нормальном УСМ выжать сплит 0.15-0.17 не является уж очень большой проблемой
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

AresSk писал(а): 09 фев 2022, 13:46 можно конечно. Но для настройки крутил потенциометр на датчике хлопка
Нет, это не может работать правильно. Причин много.
Самые явные:
1. Вы генерируете импульсы с периодом 20 мс в основном цикле. Этой несущей частотой пользуется скоростной счетчик. Принимаете эту несущую частоту за константу, типа 50Гц. А Вы уверены, что в основном цикле реально генерировать стабильную частоту? Вы ее измерить пробовали в состоянии покоя и в момент выстрела? Думаю Вы сильно удивитесь если измерите. Лучше бы уж тогда использовали в качестве генератора буззер.
2. Тот датчик, фото которого в начале темы, по моему выдает аналоговый сигнал. Я не уверен что в момент выстрела, вход на котором этот датчик, срабатывает один раз. Хотя бы защиту от дребезга поставили. И вообще, Вы его подтянули к земле? Как то я сомневаюсь в эффективности аналогового датчика на цифровом пине.

Есть и еще нюансы, но с это самые большие проблемы и их надо исключать.
Brand2
Лейтенант
Сообщения: 450
Зарегистрирован: 26 фев 2018, 21:27
Откуда: Haifa
Имя: Alex
Благодарил (а): 2 раза
Поблагодарили: 5 раз

Стрелковый таймер

Сообщение Brand2 »

[ref]AresSk[/ref], Для начала разделите задачу на несколько этапов,первый,это подсчет числа выстрелов,я набросал пример,попробуйте,поиграйтесь чувствительностью потенциометра и длительностью одновибратора,может поможет
отстроится от эха.
Можете загрублять чувствительность датчика пока не будет один пульс на выстрел.
Для индикации я поставил светодиод дополнительно.
Данные счетчика можете вывести на дисплей или просто смотреть в мониторе порта.
Подсчет выстрелов.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

[ref]Brand2[/ref], [ref]AresSk[/ref], таймер и одновибратор немного разные вещи, но не суть.
Таймер наверное лучше настроить на задержку отключения, это отфильтрует возможные ложные срабатывания, в том числе и эхо.
А 100 мс это много. Там промежуток в сплите примерно такой, по словам [ref]AresSk[/ref]. Я бы поставил задержку на отключение 30-50 мс для начала.
Однако, еще раз повторюсь, штатные блоки для этого плохо подходят. Хлопок выстрела (без эха) очень короткий, он сопоставим по времени с длительностью цикла программы (если в ней будет еще и дисплей и алгоритмы подсчета). Поэтому гарантировано поймать сигнал на цифровом пине будет затруднительно. Надо использовать пины с прерыванием, а для данной задачи штатных блоков нет.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Стрелковый таймер

Сообщение Dryundel »

[ref]AresSk[/ref]

Итак начнем.

Первое что надо сделать это правильно настроить датчик.
Для этого подключаем его на аналоговый пин.
Для надежности подтяните его к земле 10 - 47 кОм. Именно с этим сопротивлением, в дальнейшем будем использовать датчик, но уже на пине с прерываниями. Хотя может быть это лишнее. Я не смотрел схему датчика.

Берем вот этот тестовый проект.
Настройка датчика.flp
Две кнопки: "Сброс показаний" и "отображение показаний на дисплее".
Кнопки замыкаются на землю.

Важно! Во время теста дисплей должен быть отключен (кнопка "отображение показаний на дисплее" разомкнута). Это для того, что бы не мешать тестированию. Включать дисплей надо только для просмотра показаний.

Данный тестер показывает максимальное напряжение выдаваемое датчиком во время выстрела.
Заданные константы в блоке SCALE актуальны для контроллера с питанием 5V.

Порядок действий:
1. Включаем тестер (Здесь можно посмотреть показания и предварительно настроить датчик так, что бы при тишине (нормальном шумовом фоне) напряжение не превышало 1 v)
2. Производим выстрел
3. Смотрим показания (кнопка"отображение показаний на дисплее")
4. Сбрасываем показания (кнопка"Сброс показаний")
5. Крутим настройку датчика
6. Повторяем все начиная с п.1.

Суть в том, чтобы настроить скачок напряжения при выстреле на 3,6 - 3,7 V. (Актуально для контроллера с питанием 5V)

Пока всё. :)
Вечером постараюсь написать блок регистрации выстрелов для пина с прерываниями.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «ESP8266»

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

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