хорошо. как раз 8 пин свободный у меня. схему надо будет только изменить. добавить полевиков. не хочется прерывание резистором к земле прижимать, наводки замучают, а затвор полевика нормально должно получится. захват нужен по изменению из 1 в 0
заодно подсветку в дисплее пожалуй переделаю на оранжевую, ну так хотелка, нравится оранжевая подсветка, контрастно и глаза не раздражает
jeka_tm, вот написал пример измерителя под твою задачу. Характеристики следующие - измеряет таймером1 длительность между двумя импульсами на их первом спадающем фронте (falling) , максимальное измеряемое время - 4095 µS, минимальное не тестировал. Относительная точность измерения: +/- 0,2µS. Т.к. я потихоньку изучаю асм, то немог упустить случая поупражняться, и вставил немножко кода на асме )) Особенности: в ассемблерном фрагменте в качестве флагов используются два свободных регистра от портов PB6, PB7 (ноги отключены от портов, т.к. на этих пинах висит кварц, а регистры можно задействовать для своих нужд). В строке 4 выключен таймер0, его можно включить, но тогда в случае одновременного прихода прерываний от таймера0 и таймера1 измерение произойдёт с ошибкой в несколько микросекунд.
jeka_tm, таймер0 нежелательно использовать, будут ошибки, хоть и незначительные. Кстати это флажок не разрешения измерения, а он констатирует факт , что сработал второй импульс и можно считать новое значение. Так-же он помогает не выводить в цикле одно и тоже. Значение ICR1 обновляется фактически только после нового измерения, так что будет хранить старое до упора если новое не поступает. Механизма запрещения измерения тут нет.
jeka_tm, у тебя библа дисплея использует таймер0 (через delayMicroseconds) Нужно либо другую библу, которая не использует задержки в работе, либо смириться с возможными ошибками в измерении времени. Третьего не дано :)
Куплю готовый хронограф,можно без корпуса(только спаеную внутрянку),только трубка с датчиками должна быть 10 см,и диаметром 20 мм. Связь личным сообщением вконтакте https://vk.com/maxiplus
есть код который позволяет измерять более высокие скорости, но пока его только 1 человек тестировал. говорит дисплей перестал работать. я пока на своем железе не тестировал, времени не хватает. постараюсь в ближайшее время
Вообщем опробовал новый код, ниже моирезультаты, но предварительно уточню по используемой ардуинке. Я использую такую ардуинку.
Что заметил.
1.Первоначальный экран рисуется.
2. Нет обработки кнопок меню, вообще ноль реакции на нажатие.
3. харкнул бумажкой через трубку с датчиками. Скорость бешенная от 300м/с до 600м/с и рисует одно деление в левом верхнем углу. Но "измеряет" только один раз, дольше вообще ноль реакции, приходится передергивать питание. Уточнение: датчики подключены по старому к 2 и 3 выводу ардуинки, т.к. у меня уже собранный хронограф.
Что касается стабильности измерений в рабочей прошивке, то ниже на картинке мои измерение. Для этого я собрал на ПЛИС так называемый генератор выстрелов, импульсы с которого подавал именно на светодиоды хронографа, отвязав их от питания.
Да извеняться особо не за что, понятно дело, что это только хобби. Я сам только в отпуск ушел, появилось время вот и решил спросить, так как темя для меня интересна, а на таком уровне программирования мозгов не хватает.
у меня показывал и измерял. я кидал болтик. но скорость маленькая, счетчик переполняется и начинаем по новой поэтому чушь показывает. 8 надо оставить свободным. он для ресета дисплея предназначен, а у меня он изначально на 3.3В посажен. мне просто не хочется гаусс доставать, у кого пневматика есть быстрее проверить
Предыдущие версии у меня работают, а эта не хочет. Может из-за того что у меня леонардо, а тут еще и работа с регистрами, вообщем в никакую, сигналов вообще нет по линиям дисплея с момента подачи питания. А вообще правильно ли я закинул. Создал папку со скетчем и туда же закинул библиотеку дисплея скаченную с вашего яндекс диска, 2 файла с расширением h и один с расширением cpp.
Да не приходилось раньше ставить библиотеки. Поставил все через меню IDE как положено, сигналы разово по линиям кидаются после включения питания, но картинки все равно нет. Может быть это из-за сигнала сброса поданного не во время. Может его стоит все таки оторвать от RC цепочки (у себя я так сброс организовал) и припоять его к 8 выводу? Если это так, то эту теорию я смогу проверить только завтра вечером, когда к паяльнику доберусь.
Сам сразу не сообразил посмотреть на обновление экрана по воздействию. Да картинка есть, но показывает фигню. Сначала плювался бумажкой (старая программа показывала порядка 17м/с) значения разные 5,9,7,10. Думал может срабатывает ограничения по минимальной скорости о которых вы писали выше. Пошел стрельнуть из пневматики (скорость порядка 109-111м/с по измерениям старой программы). Сделал порядка 15 выстрелов. 2-3 выстрела не определила скорость, скорее всего несоосность хронографа. А вот остальные 12-13 выстрелов около 16.5-17.2 м/с. Но здесь я думаю имеет значение в программе расстояния между датчиками, у вас он было 0.07, я его поменял на свои 0.105. Поставил обратно ваше значение 0.07, стало порядка 11м/с, хотя реально у меня расстояние между датчиками 10см. Можно сказать работает на больших скоростях, но значения показываюся деленными на 10.
Жалко нет поблизости моего генератора выстрелов, я к нему доберусь только через 2 недели, а так точно бы знал на сколько погрешность на разных скоростях, но возможно буду около мультикомпрессионной винтовки и хоть как то оценю погрешности на разных скоростях.
Еще заметил, что у вас в формуле расчета скорости стоит 24000000 - это я так понимаю частота кварца процессора? А уменя 16М, т.е. для себя я должен ее выставить в фомуле?
Не успел откорректировать предыдущий пост, вы уже ответили. Вечером попробую еще поэкспериментировать, но все же чего не так с значениями деленными на 10
Начал собирать на новом коде прошивку. Но столкнулся с проблемой. Не работает должным образом индикация батарейки. она меняется только по событию - выстрел, хотя код батарейки находится в лупе. Сделал новый проект, только с батарейкой, все работает как положено, а вот в коде с хронографом не работает. Почему не работае луп не пойму, может поможете?
Вообщем если принять значение 0.004096 за константу, то для моего хроногрова с расстоянием между датчиками 106мм (значение откалибровано по осцилографу и генератору выстрелов) расчеты совпадают. При скорости до 25м/с хронограф показывает хрень (в зависимости от заданной скорости хронограф показывал значения 44, 88 и даже 737м/с), а вот при скорости от 26м/с показывает точное значение. С помощью генератора выстрелов заметил, что к скорости около 500м/с погрешность измерения составляет 1м/с, при скорости 350 м/с погрешность около полуметра. Вообщим отличные результаты по сравнению с прошлой версией, где при скорости 500м/с погрешность доходила до 10м/с, хотя и эти результаты быле вполне приемлемы. Но чем точнее тем лучше.
хорошо)) хотя погрешность и хуже в первом вариант, зато от 0 измеряет. короче пусть каждый сам выбирает что ему нужнее. меня сверхвысокие скорости мало интересуют. да и еще момент. ты сигнал подавал от генератора, возьми пневмат и измерь. ты проверил программу, и она работоспособна. тут еще ограничения датчиков ведь есть. нужно с датчиками проверять
Так я к светодиодам подкючался, а не ко входу ардуины, т.е. хронограф проверялся с учетом оптопары. Правда тут есть момент. Когда я работаю от генератора выстрелов, то светодиоды гаснут полностью и с крутыми фронтами, т.е. идеальные условия, а когда будет пролетать пуля, то тут может возникнуть небольшая несоосность выстрела или постепенное перекрытием светодиодов по ходу пролета пули, но все это отрабатывалось на прошлой версии на скоростях около 280м/с и все работало.
хорошо. как раз 8 пин свободный у меня. схему надо будет только изменить. добавить полевиков. не хочется прерывание резистором к земле прижимать, наводки замучают, а затвор полевика нормально должно получится. захват нужен по изменению из 1 в 0
заодно подсветку в дисплее пожалуй переделаю на оранжевую, ну так хотелка, нравится оранжевая подсветка, контрастно и глаза не раздражает
jeka_tm, вот написал пример измерителя под твою задачу. Характеристики следующие - измеряет таймером1 длительность между двумя импульсами на их первом спадающем фронте (falling) , максимальное измеряемое время - 4095 µS, минимальное не тестировал. Относительная точность измерения: +/- 0,2µS. Т.к. я потихоньку изучаю асм, то немог упустить случая поупражняться, и вставил немножко кода на асме )) Особенности: в ассемблерном фрагменте в качестве флагов используются два свободных регистра от портов PB6, PB7 (ноги отключены от портов, т.к. на этих пинах висит кварц, а регистры можно задействовать для своих нужд). В строке 4 выключен таймер0, его можно включить, но тогда в случае одновременного прихода прерываний от таймера0 и таймера1 измерение произойдёт с ошибкой в несколько микросекунд.
спасибо. буду пробовать. если правильно понял этот коэффициент для 16мгц, для другой частоты другой. так?
0.0625f
jeka_tm, ну да. Константа в микросекундах = 1 / частота в мегагерцах.
хорошо. а то в моем 24мгц, а люди на 16мгц собирают
micros или millis получается использовать нельзя если разрешить измерение
jeka_tm, таймер0 нежелательно использовать, будут ошибки, хоть и незначительные. Кстати это флажок не разрешения измерения, а он констатирует факт , что сработал второй импульс и можно считать новое значение. Так-же он помогает не выводить в цикле одно и тоже. Значение ICR1 обновляется фактически только после нового измерения, так что будет хранить старое до упора если новое не поступает. Механизма запрещения измерения тут нет.
вроде понял
dimax изза этой строки дисплей перестал работать //TCCR0B=0;
не блокируется каким то образом пины? у меня используются 5 6 7
jeka_tm, у тебя библа дисплея использует таймер0 (через delayMicroseconds) Нужно либо другую библу, которая не использует задержки в работе, либо смириться с возможными ошибками в измерении времени. Третьего не дано :)
для начала решил пины поменять. задержки при инициализации дисплея нужны, потом не нужны. еще delay используется для кнопок
Куплю готовый хронограф,можно без корпуса(только спаеную внутрянку),только трубка с датчиками должна быть 10 см,и диаметром 20 мм. Связь личным сообщением вконтакте https://vk.com/maxiplus
Здравствуйте!
jeka_tm и dimax есть ли какие продвижения по модернизированному хронографу?
есть код который позволяет измерять более высокие скорости, но пока его только 1 человек тестировал. говорит дисплей перестал работать. я пока на своем железе не тестировал, времени не хватает. постараюсь в ближайшее время
А можно выложить этот код с учетом применяемого дисплея, я постараюсь тоже попробовать, по крайней мере по работе дисплея.
да попробуй. только пины дисплея проверь. может у тебя по другому сделано
https://yadi.sk/d/5uGYVlRitYVcN
Вообщем опробовал новый код, ниже моирезультаты, но предварительно уточню по используемой ардуинке. Я использую такую ардуинку.
Что заметил.
1.Первоначальный экран рисуется.
2. Нет обработки кнопок меню, вообще ноль реакции на нажатие.
3. харкнул бумажкой через трубку с датчиками. Скорость бешенная от 300м/с до 600м/с и рисует одно деление в левом верхнем углу. Но "измеряет" только один раз, дольше вообще ноль реакции, приходится передергивать питание. Уточнение: датчики подключены по старому к 2 и 3 выводу ардуинки, т.к. у меня уже собранный хронограф.
Что касается стабильности измерений в рабочей прошивке, то ниже на картинке мои измерение. Для этого я собрал на ПЛИС так называемый генератор выстрелов, импульсы с которого подавал именно на светодиоды хронографа, отвязав их от питания.
спасибо. буду разбираться
Здравствуйте jeka_tm!
Есть ли какие подвижке в оновленном хронографе?
С удовольствием оттестировал бы новую версию, я сново собрал генератор выстрелов на ПЛИС.
ну так. пример на основе которого я делал новый код по счету тиков не могу найти. на работе вроде должно сохранится. надо проверить
пример мне нужен потому что я сам в этих найстройках таймеров не разбираюсь
+ нашел пример. постараюсь в ближайшие дни допилить
Здравствуйте jeka_tm!
Есть ли какае результаты, получилось ли чего?
привет. извини. замотался. вылетело из головы
Да извеняться особо не за что, понятно дело, что это только хобби. Я сам только в отпуск ушел, появилось время вот и решил спросить, так как темя для меня интересна, а на таком уровне программирования мозгов не хватает.
да какой там уровень. знал бы ты мой))
По работе мастера видно)))
попробуйте кто может измеряет правильно или нет, если ли смысл продолжать
либа находится тут в папке дисплеи
кстати меньше 15м/с для расстояния между датчиками 60мм выдавать будет чушь, минимум скорости считается:
Чего то вообще ни чего не кажет дисплей. Посмотрел осцилографом, сигналов нет на 5,6,7, а 8 у меня с самаго начала к питанию подвязан.
у меня показывал и измерял. я кидал болтик. но скорость маленькая, счетчик переполняется и начинаем по новой поэтому чушь показывает. 8 надо оставить свободным. он для ресета дисплея предназначен, а у меня он изначально на 3.3В посажен. мне просто не хочется гаусс доставать, у кого пневматика есть быстрее проверить
Предыдущие версии у меня работают, а эта не хочет. Может из-за того что у меня леонардо, а тут еще и работа с регистрами, вообщем в никакую, сигналов вообще нет по линиям дисплея с момента подачи питания. А вообще правильно ли я закинул. Создал папку со скетчем и туда же закинул библиотеку дисплея скаченную с вашего яндекс диска, 2 файла с расширением h и один с расширением cpp.
неправильно. ты библиотеку ни разу не ставил? погугли
Да не приходилось раньше ставить библиотеки. Поставил все через меню IDE как положено, сигналы разово по линиям кидаются после включения питания, но картинки все равно нет. Может быть это из-за сигнала сброса поданного не во время. Может его стоит все таки оторвать от RC цепочки (у себя я так сброс организовал) и припоять его к 8 выводу? Если это так, то эту теорию я смогу проверить только завтра вечером, когда к паяльнику доберусь.
я вспомнил. там в коде отображение только после выстрела. перепаивать не надо
поправил код чтобы экран не был пустым при включении, чтобы тебя не смущало
Сам сразу не сообразил посмотреть на обновление экрана по воздействию. Да картинка есть, но показывает фигню. Сначала плювался бумажкой (старая программа показывала порядка 17м/с) значения разные 5,9,7,10. Думал может срабатывает ограничения по минимальной скорости о которых вы писали выше. Пошел стрельнуть из пневматики (скорость порядка 109-111м/с по измерениям старой программы). Сделал порядка 15 выстрелов. 2-3 выстрела не определила скорость, скорее всего несоосность хронографа. А вот остальные 12-13 выстрелов около 16.5-17.2 м/с. Но здесь я думаю имеет значение в программе расстояния между датчиками, у вас он было 0.07, я его поменял на свои 0.105. Поставил обратно ваше значение 0.07, стало порядка 11м/с, хотя реально у меня расстояние между датчиками 10см. Можно сказать работает на больших скоростях, но значения показываюся деленными на 10.
Жалко нет поблизости моего генератора выстрелов, я к нему доберусь только через 2 недели, а так точно бы знал на сколько погрешность на разных скоростях, но возможно буду около мультикомпрессионной винтовки и хоть как то оценю погрешности на разных скоростях.
Еще заметил, что у вас в формуле расчета скорости стоит 24000000 - это я так понимаю частота кварца процессора? А уменя 16М, т.е. для себя я должен ее выставить в фомуле?
а ардуина у тебя 16мгц? там в формуле фигурирует частота
Не успел откорректировать предыдущий пост, вы уже ответили. Вечером попробую еще поэкспериментировать, но все же чего не так с значениями деленными на 10
да все просто. все дело в выводе значений. подправляю. пока без десячиных. смотри число целиком
Начал собирать на новом коде прошивку. Но столкнулся с проблемой. Не работает должным образом индикация батарейки. она меняется только по событию - выстрел, хотя код батарейки находится в лупе. Сделал новый проект, только с батарейкой, все работает как положено, а вот в коде с хронографом не работает. Почему не работае луп не пойму, может поможете?
Основное окно
Вкладка
Если так, то все работает
потому что 54 строка блокирует
Спасибо, че то сам не сообразил. Двигаюсь дальше. jeka_tm вы как то писали
кстати меньше 15м/с для расстояния между датчиками 60мм выдавать будет чушь, минимум скорости считается:
0.06 / 0.004096 = 14.6484 м/с
0,06 между датчиками в метрах. второе не помню. вспомню скажу
Вообщем если принять значение 0.004096 за константу, то для моего хроногрова с расстоянием между датчиками 106мм (значение откалибровано по осцилографу и генератору выстрелов) расчеты совпадают. При скорости до 25м/с хронограф показывает хрень (в зависимости от заданной скорости хронограф показывал значения 44, 88 и даже 737м/с), а вот при скорости от 26м/с показывает точное значение. С помощью генератора выстрелов заметил, что к скорости около 500м/с погрешность измерения составляет 1м/с, при скорости 350 м/с погрешность около полуметра. Вообщим отличные результаты по сравнению с прошлой версией, где при скорости 500м/с погрешность доходила до 10м/с, хотя и эти результаты быле вполне приемлемы. Но чем точнее тем лучше.
хорошо)) хотя погрешность и хуже в первом вариант, зато от 0 измеряет. короче пусть каждый сам выбирает что ему нужнее. меня сверхвысокие скорости мало интересуют. да и еще момент. ты сигнал подавал от генератора, возьми пневмат и измерь. ты проверил программу, и она работоспособна. тут еще ограничения датчиков ведь есть. нужно с датчиками проверять
Так я к светодиодам подкючался, а не ко входу ардуины, т.е. хронограф проверялся с учетом оптопары. Правда тут есть момент. Когда я работаю от генератора выстрелов, то светодиоды гаснут полностью и с крутыми фронтами, т.е. идеальные условия, а когда будет пролетать пуля, то тут может возникнуть небольшая несоосность выстрела или постепенное перекрытием светодиодов по ходу пролета пули, но все это отрабатывалось на прошлой версии на скоростях около 280м/с и все работало.
круто. спасибо. буду знать
Правда есть еще один момент, с фототранзисторами у меня так и не получилось получить хороших результатов и я перешел на фотодиоды.
как подключал фотодиоды? название. схема с компаратором?
блин столько можно проектов допилить, но времени совершенно нет
Фотодиоды использовал такие . Ни ккие компараторы не ставил, просто вместо фототранзистора воткнул фотодиоды и поменял резисторы.
не могу найти характеристики фотодиода
Вродо он