Старший сынишка увлёкся страйкболом, а как известно в этой военно-спортивной игре главное правильно работающий привод (страйкбольное оружие).
О его исправности в первую очередь говорит скорость вылета пульки, 6мм шарика. Чем она выше и стабильней, тем лучше работает привод. Есть куча народных способов проверки, пробивания баночки, бутылочки и т.д. Но они хороши для первичной, приблизительной оценки. Для получения точных значений существует специальный прибор, хронограф.
Цена его колеблется от 20$ до 150$ в зависимости от какчества изделия и наворотов.
Так как пользоваться этим прибором предполагалось эпизодически, отваливать за него 100$ не планировалось изначально. Работа недорогого хронографа мне не понравилась, разброс +/- 10м/с меня сильно смущал.
Так как с недавних пор изучаю arduino решено было сделать прибор самостоятельно, тем более в инете полно готовых примеров.
Первая версия из говна и палок макетки уно и пластиковой трубки заработала через 4 часа после старта проекта. Благо у меня осталось несколько ИК диодов от проекта пульта.
К сожалению фотки не делал, но это была копия популярного в инете проекта из того же материала.
Как она работала? Лучше бы она не работала вовсе. Из 10 выстрелов определялись 2-3, такие большие мертвые зоны у датчиков. Чувствительность была или слишком низкой или слишком высокой, не возможно было чётко настроить момент срабатывания, от этого показания изменялись в диапазоне +/- 15м/с, но определить приблизительную скорость всё же удалось.
Можно было засунуть всё это в коробку из под обуви и наслаждаться результатом, но я принял опрометчивое решение, сделать нормальный хронограф.
Начал с правильной измерительной трубки, с 2х мм пропилами ровно через 100мм, подставок под светодиод для равномерной засветки фотодиодов и кондуктора для фотодиодов. Из старой зарядки планировал сделать раструб, но он впоследствии лопнул.
В качестве индикатора взял модуль часов, валявшийся у меня без дела долгое время.
Лирической отступление: многие считают, что при рассказе о поделках необходимо добавлять схему, прошивку, даташит и т.д. Другие жалуются, что схема, прошивка, даташит занимает много места, нужно добавлять архивом, на облаке. Третьи считают, что ардуино это не контроллер, а остальное они и так знают.
А мне, если честно, харит вообще што либо добавлять, кроме фотографий из которых и так всё понятно. Но уважая мнение читателей, готов прислушаться к их совету, как лучше поступить?
В качестве контроллера выбрал arduini pro mini, из за простоты и дешевизны.
И тут я сделал первую ошибку – вначале припаял к плате ардуинку, а затем начал программировать.
Конченый программатор даже отдельную ардуинку шьет два раза, на третий выходит из строя или портит плату, уничтожая загрузчик. Не покупайте такой ни в коем случае.
По логика в среде ардуино должен быть родной загрузчик, порылся в программе, так и оказалось. Называется эта штука ArduinoISP. Собирается достаточно просто.
Шьет ардуинку на ура, в любом состоянии, и ещё приятно мигает диодами, сигнализируя о процессах. Там есть кое какие тонкости, но об этом нужно писать отдельно.
Убитую ардуину пришлось вырезать и припаять с другой стороны платы чудо китайской инженерной мысли – Pro Mikro о которой итальянцы и «среда разработки» даже не слышали, что в последствии сыграет со мной злую шутку. Из плюсов – прямое подключение к компу и удобная отладка. Из минусов – постоянно работающий последовательный интерфейс, передающий на комп непонятные данные.
Новая комбинация прецизионной измерительной трубки, сверхмощных диодов и щелевого фильтра работала стабильно хреново, по непонятной причине.
Для отладки пришлось прибегнуть к серьезному метрологическому прибору – шарику приклеенному к уховёртке.
// прошивка шарика на палочке, кому интересно
#include "TM1637.h" // Подключаем библиотеку
#define CLK 7 // К этому пину подключаем CLK
#define DIO 6 // К этому пину подключаем DIO
TM1637 disp(CLK, DIO);
int sensorPin = A2;
void setup() // Выполняем процедуру 1 раз
<
// Устанавливаем яркость от 0 до 7
disp.set(5);
disp.init(D4056A);
void loop() // Повторяем в бесконечном цикле
<
sensorValue = analogRead(sensorPin);
disp.display(sensorValue); // Выводим значение
delay(1000); // Пауза 1 сек
>
Проверка показала избыточную мощность светодиодов, потому за время пролёта датчика (около 60 микросекунд) программа определяла шарик не очень чётко. Правильное значение sensorValue = 600, тогда при пролёте шара стабильно получаем логический 0, (значение меньше 500).
Современные гаджеты в основном заряжаются от USB потому решил сделать питание и зарядку USB совместимыми. Готовый повышающий стабилизатор с 3В на 5В найти не сложно, сложней сделать правильное управление питанием.
Для этого пришлось изобрести электронное микро реле. Оно приблизительно в 12 раз меньше обычного, магнитного и фактически не потребляет энергии при работе. А так же позволяет включать питание и управлять устройствами используя одну кнопку.
Точность показаний скорости проверял бросая с метровой высоты шарик в прибор.
Прошивка шарика:
V=√2gh
// V это скорость шарика
// g это ускорение свободного падения
// h это высота падения
Сила сопротивления воздуха направлена против скорости движения, её величина пропорциональна характерной площади S, плотности среды ρ и квадрату скорости V:
X=C*pV²S/2
// C — безразмерный аэродинамический коэффициент сопротивления, получается из критериев подобия, например, чисел Рейнольдса и Фруда в аэродинамике.
// Мощность, требуемая для преодоления данной составляющей силы лобового сопротивления, пропорциональна кубу скорости.
P=X*V=C*pV³S/2
// Но движение у нас не равномерное, скорость постоянно растет, а вместе с ней растет и //сопротивление движению шара в упругой среде.
U=∫˳֮UF(U)dU
// ֮ это значок бесконечности
// Средняя скорость шарика в трубке
Vср= ∆S/∆t
// где ∆S пройденное расстояние в метрах
// ∆t время прохождения участка
unsigned long Foto1Time;
unsigned long Foto2Time;
unsigned long DeltaTime;
void setup()
< pinMode(Foto1Pin, INPUT);
pinMode(Foto2Pin, INPUT);
>
void loop()
<
currentTime = micros();
Foto1PinState = digitalRead(Foto1Pin);
if (Foto1PinState == 0)
Foto2PinState = digitalRead(Foto2Pin);
if (Foto2PinState == 0)
>
Рассчитав теоретическую скорость шара при падении с высоты 1м, и написав простейший алгоритм, перешел непосредственно к экспериментам.
Каково же было моё удивление, когда из 20 брошенных шаров ни один в трубку НЕ ПОПАЛ. Причиной всего были микро дефекты направляющего аппарата и несимметричность затвора. Шары летели куда угодно, кроме трубки. Пришлось запускать шары с полуметровой высоты.
Отклонения составили +/- 2м/с и около 5-8% от измеренной скорости, что очень не плохо для кустарного производства.
Но тут вылезла другая проблема. Пролёт шара определялся не каждый раз. Проблема оказалась в «мониторе последовательного порта». У этой платы он работает даже без команды, а время на передачу данных – несколько миллисекунд, что в 1000 раз больше времени измерения скорости шара, потому прибор и затыкался.
Пришлось опять впаивать новую arduino pro mini, а контакты для программирования выводить на лицевую панель.
Старший сынишка увлёкся страйкболом, а как известно в этой военно-спортивной игре главное правильно работающий привод (страйкбольное оружие).
О его исправности в первую очередь говорит скорость вылета пульки, 6мм пластикового шарика. Чем она выше и стабильней, тем лучше работает привод. Есть куча народных способов проверки, пробивания баночки, бутылочки и т.д. Но они хороши для первичной, приблизительной оценки. Для получения точных значений существует специальный прибор, хронограф.
Цена его колеблется от 20$ до 150$ в зависимости от какчества изделия и наворотов.
Так как пользоваться этим прибором предполагалось эпизодически, отваливать за него 100$ не планировалось изначально. Работа недорогого хронографа мне не понравилась, разброс +/- 10м/с меня сильно смущал.
Так как с недавних пор изучаю arduino решено было сделать прибор самостоятельно, тем более в инете полно готовых примеров.
Первая версия из говна и палок макетки уно и пластиковой трубки заработала через 4 часа после старта проекта. Благо у меня осталось несколько ИК диодов от проекта пульта.
К сожалению фотки не делал, но это была копия популярного в инете проекта из того же материала.
Как она работала? Лучше бы она не работала вовсе. Из 10 выстрелов определялись 2-3, такие большие мертвые зоны у датчиков. Чувствительность была или слишком низкой или слишком высокой, не возможно было чётко настроить момент срабатывания, от этого показания изменялись в диапазоне +/- 15м/с, но определить приблизительную скорость всё же удалось.
Можно было засунуть всё это в коробку из под обуви и наслаждаться результатом, но я принял опрометчивое решение, сделать нормальный хронограф.
Начал с правильной измерительной трубки, с 2х мм пропилами ровно через 100мм, подставок под светодиод для равномерной засветки фотодиодов и кондуктора для фотодиодов. Из старой зарядки планировал сделать раструб, но он впоследствии лопнул.
Электрически конструкция датчика состоит из одних проводников. Элементарно.
Никакой обвязки — принципиально — это две "кнопки" с массы на порты 2 и 3, проще детекторного приемника!
Небольшой экскурс в историю(курсивом) — пневматическим оружием занимаюсь более 20 лет, и все это время для измерения скорости пули использовал метод баллистического маятника.
Но появился Дробовик — энергия против магнума калибра 4.5мм -в 100 раз. больше — не бревно-же на подвесах использовать!
На то время уже приобщился к использованию Arduino в мирных целях._
За основу взял конструкцию Михаила Шевченко на двух парах оптических датчиков.
Сделал вариант, устанавливающийся на ствол, но отдача даже пружинной пневматики после нескольких выстрелов разрушала светодиоды.
Попытался собрать универсального рамочного монстра со множеством оптических датчиков — FAIL.
Решив упрощать, пришел к описываемой конструкции, дальше уже некуда 😉
Принцип датчиков позаимствовал у создателей программы Airspeed (родом из 90-х).
Просто добавь микроконтроллер (точность — на порядок выше)!
То-есть, оно когда заработало, то так просто выглядит!
В отличие от звуковых карт, пришлось оперировать не аналоговым сигналом, а переходом с логической 1 на 0.
Удаче предшествовало множество экспериментов — 2 варианта рамок, 3 вида электрической "обвязки" и 4 правки скетчей (программы).
Подтяжка напряжения на цифровые пины (PULLUP) оказалось наиболее жизненным и стабильным решением!
В итоге, вероятность допустить ошибку при повторении данной схемы — мизерная!
Все, дальше нет времени обьяснять, датчики можно собрать просто глядя на фотографии.
Итак, начинаем игру в ПЯТНАШКИ — исходные материалы — деревяный брусок 15х10х5см, два куска полиэтиленового листа 15×15см, толшиной 2.5мм.
На большей толщине рамок — датчики могут не срабатывать, на меньшей — коротить от дуновения ветерка.
Можно взять 3-мм гофрокартон, бальзу, или вовсе сделать рамки из обычных линеек!
Основное что следует помнить — 4мм толщины — уже много, на шести работать и вовсе перестает!
Размер "окна" в рамках — 9×9см (изначально было десять) мало?
Если Вы не можете попасть в десятку, в прямом и переносном смысле, то говорить о необходимости хронометра — рано!
Дальше — вырезаем куски пищевой фольги 11×14 см и при помощи обычного клеящего карандаша аккуратно крепим на рамки с двух сторон.
Последние прикручиваем к основанию (брусок) так, чтобы расстояние между ними составляло 10см (база хронографа, заложенная в скетч).
При этом, сам брус должен быть уже 100мм. на толшину одной рамки (на самом деле древесина в результате усыхания на складе сама уменьшается в размерах 😉
П-образные рамки сделаны из соображений "многоразовости" одного "комплекта" фольги — после каждого выстрела линейкой проводим между парами пластин дабы разомкнуть контакт в районе пулевых отверстий.
Для удобства и простоты обеспечения контакта с фольгой были сделаны зажимы на основе прищепок:
В качестве проводников взял многожильную витую пару — все концы залудил (мы-же помним о том что медь с алюминием напрямую не соединяют!)
Так с этим разобрались.
Теперь перейдем к микроконтроллеру — все отлаживал на arduino Uno (Atmega-328) 16Mhz + LCD Keypad Shield.
Итак, текст скетча (программы):
Вкратце, принцип работы — командой PULLUP на пины 2,3 включается напряжение подтяжки (внутренними резисторами 20-50 кОм)
Пролет пули делает короткое замыкание, регистрируемое прерываниями (sensor FALLING), как наиболее быстрыми командами arduino.
Зная разницу во времени и расстояние между датчиками, вычисляется скорость пули.
ВАЖНА очередность датчиков — первый — на пин 2!
Кто-то возразит, что на пробивание фольги тратится энергия, и реальная скорость пули будет выше!
Поначалу вроде все так и было!
По сравнению со скоростью, замеренной полтора года назад прибором с оптическими датчиками (280м/с) — девайс на фольге выдавал 260!
Энергетически — это 22Джоуля против 19! — потеря сразу трешки!
Но как только я уменьшил базу до 100мм, "фольга" стала показывать верный результат — почему — загадка!
Пули использовал Luman FT 0.56грамма, приборы на основе одного и того-же микроконтроллера, база в обоих случаях — 100мм, одна винтовка
Теперь о стабильности показаний — из 5 выстрелов, "выброс" только по одному, цифры остальных — сходятся.
Да, и последнее, спросите — зачем в век электроники изобретать велосипед?
Все очень просто — ответ — дробовик!
При измерении скорости заряда на вылете — не проблема — подойдет любой прибор!
Но на расстоянии дробь имеет свойство рассеиваться (стандартная мишень для проверки осыпи — 75×75см).
А теперь представьте вариант необходимости замера скорости заряда на 35 метрах — если в клочья разнесет даже китайский прибор за 50$ — будет обидно.
Выход — либо "бронировать" корпус и датчики (достаточно доски 40мм), либо использовать одноразовые.
Измерять есть что и зачем — не за горами введение запрета на охоту свинцом на водоемах(вслед за Европой), надо будет применять стальную дробь, в магазинах за такими патронами будут очереди (либо высокая цена).
При самосборе патронов, пользоваться дедовскими методами оценки эффективности по вхождении в сухую сосновую доску не хочется.
Метких Вам выстрелов, а охотникам — Ни Пуха, Ни Пера!