Класс точности секундомера на телефоне

so I need to make a simple but reliable stopwatch with an 1 ms accuracy for an android device (transformer tablet). I have no experience at all with android.
After searching I’m not finding any specifics about what’s the maximum accuracy I could get in this specific context(described below). Perhaps some one here can give me the info I need.
As the stopwatch is going to be used for time reactions and diagnoses 1 ms is the accuracy we need.

what the stopwatch should do is quite simple:

  • Obviously the program start at 00:00.000, from there 7 measures are going to be taken. When the users push a key or the screen, the program should log the elapsed time. at the 7th time the program will save the measures in a txt file.

I don’t even need to display the stamp or the elapsed time and refresh the display.
except for the OS apps, no other applications are going to be running.

Theoretically System.nanoTime() or timestamp would do it. But I’m not sure if this will give me the 1 ms accuracy that I need. can they give me the accuracy I’m looking for? a brief explanation would be useful.
are there another methods?

If some one is a android developer the info will be really appreciated .

Thanks,

UPDATE: Altho the user Nanno made a valid point about the limitations in the Android OS, thus making the 1 ms accuracy stopwatch impossible in a «tablet-only» scenario, Julian’s further answer described an interesting and relatively cheap solution to accomplish the goal using Android ADK (external hardware).

asked May 11, 2012 at 5:57

user1338101's user avatar

user1338101user1338101

711 gold badge3 silver badges9 bronze badges

7

a <1ms accurate android stopwatch solution could be made to work using something like this:

http://developer.android.com/guide/topics/usb/adk.html

hook up buttons to the board, and have your timing code in the remote processor (AVR, programmed using arduino tools. very easy for embedded beginners) Then communicate between the android tablet and the open accessory development kit over USB to display the result on the tablet.

Of course this solution isn’t so useful if you want people to be able to just download it to their devices all over the world from google play… but seeing you mentioned a specific device, maybe you just want to make this project for yourself?

In that case it is doable, just in a very roundabout way.

answered May 11, 2012 at 7:16

Julian Higginson's user avatar

7

With your current setup, I doubt you can get this kind of accuracy, simply because of the inaccuracy of users push a key or the screen.

Before you have successfully pushed the screen, caught the event, and called the function, your accuracy is going to be off. Especially when you think about nanoTime, the interface is adding a random-factor in your measuring that I would not trust it.

Android is not made to run real-time programs, and even if you are not running other programs in the background, the system is ready for it. It can broadcast intents or do other unexpected stuff in the background.. Sure, your interface does have priority, but with the accuracy you’re implying? I don’t think so.

answered May 11, 2012 at 6:45

Nanne's user avatar

NanneNanne

63.8k16 gold badges118 silver badges161 bronze badges

5

Why not use System.currentTimeMillis, you can find here an example of a stop watch written to have a ms accuracy.

answered May 11, 2012 at 6:15

mariomario's user avatar

mariomariomariomario

6601 gold badge9 silver badges29 bronze badges

1

You should try this first:

It would be plausible to get 1 ms accuracy between the keypress and the clock stopping using your android tablet BUT NOT with android OS. You should use UBUNTU for android devices.

get it here: http://www.ubuntu.com/devices/android

About the code , use C++ high precision timers.

Set the app and calls to the higher priority.

As I said try it. you could save time and money!! (Better than starting to buy external hardware)

answered May 13, 2012 at 10:05

UstonL's user avatar

One comment about using System.currentTimeMillis as a stopwatch, I’ve been attempting to use it in this application, and it fails when the user changes the time between the start and stop events. For example, the current time might be 3:09pm when the stopwatch starts timing a 5 minute event.

Then, at 3:11pm, the user may set the time ahead an hour, to 4:11pm. Then, 5 minutes later, the stopwatch stops, and calls System.currentTimeMilli’s, which will return 4:14pm. The program will minus the two times and return a stopwatch elapsed time of 1 hour 5 minutes (instead of the correct 5 minutes)!!!

answered Jun 18, 2012 at 22:45

Tony Tieger's user avatar

Tony TiegerTony Tieger

1132 silver badges4 bronze badges

1

so I need to make a simple but reliable stopwatch with an 1 ms accuracy for an android device (transformer tablet). I have no experience at all with android.
After searching I’m not finding any specifics about what’s the maximum accuracy I could get in this specific context(described below). Perhaps some one here can give me the info I need.
As the stopwatch is going to be used for time reactions and diagnoses 1 ms is the accuracy we need.

what the stopwatch should do is quite simple:

  • Obviously the program start at 00:00.000, from there 7 measures are going to be taken. When the users push a key or the screen, the program should log the elapsed time. at the 7th time the program will save the measures in a txt file.

I don’t even need to display the stamp or the elapsed time and refresh the display.
except for the OS apps, no other applications are going to be running.

Theoretically System.nanoTime() or timestamp would do it. But I’m not sure if this will give me the 1 ms accuracy that I need. can they give me the accuracy I’m looking for? a brief explanation would be useful.
are there another methods?

If some one is a android developer the info will be really appreciated .

Thanks,

UPDATE: Altho the user Nanno made a valid point about the limitations in the Android OS, thus making the 1 ms accuracy stopwatch impossible in a «tablet-only» scenario, Julian’s further answer described an interesting and relatively cheap solution to accomplish the goal using Android ADK (external hardware).

asked May 11, 2012 at 5:57

user1338101's user avatar

user1338101user1338101

711 gold badge3 silver badges9 bronze badges

7

a <1ms accurate android stopwatch solution could be made to work using something like this:

http://developer.android.com/guide/topics/usb/adk.html

hook up buttons to the board, and have your timing code in the remote processor (AVR, programmed using arduino tools. very easy for embedded beginners) Then communicate between the android tablet and the open accessory development kit over USB to display the result on the tablet.

Of course this solution isn’t so useful if you want people to be able to just download it to their devices all over the world from google play… but seeing you mentioned a specific device, maybe you just want to make this project for yourself?

In that case it is doable, just in a very roundabout way.

answered May 11, 2012 at 7:16

Julian Higginson's user avatar

7

With your current setup, I doubt you can get this kind of accuracy, simply because of the inaccuracy of users push a key or the screen.

Before you have successfully pushed the screen, caught the event, and called the function, your accuracy is going to be off. Especially when you think about nanoTime, the interface is adding a random-factor in your measuring that I would not trust it.

Android is not made to run real-time programs, and even if you are not running other programs in the background, the system is ready for it. It can broadcast intents or do other unexpected stuff in the background.. Sure, your interface does have priority, but with the accuracy you’re implying? I don’t think so.

answered May 11, 2012 at 6:45

Nanne's user avatar

NanneNanne

63.8k16 gold badges118 silver badges161 bronze badges

5

Why not use System.currentTimeMillis, you can find here an example of a stop watch written to have a ms accuracy.

answered May 11, 2012 at 6:15

mariomario's user avatar

mariomariomariomario

6601 gold badge9 silver badges29 bronze badges

1

You should try this first:

It would be plausible to get 1 ms accuracy between the keypress and the clock stopping using your android tablet BUT NOT with android OS. You should use UBUNTU for android devices.

get it here: http://www.ubuntu.com/devices/android

About the code , use C++ high precision timers.

Set the app and calls to the higher priority.

As I said try it. you could save time and money!! (Better than starting to buy external hardware)

answered May 13, 2012 at 10:05

UstonL's user avatar

One comment about using System.currentTimeMillis as a stopwatch, I’ve been attempting to use it in this application, and it fails when the user changes the time between the start and stop events. For example, the current time might be 3:09pm when the stopwatch starts timing a 5 minute event.

Then, at 3:11pm, the user may set the time ahead an hour, to 4:11pm. Then, 5 minutes later, the stopwatch stops, and calls System.currentTimeMilli’s, which will return 4:14pm. The program will minus the two times and return a stopwatch elapsed time of 1 hour 5 minutes (instead of the correct 5 minutes)!!!

answered Jun 18, 2012 at 22:45

Tony Tieger's user avatar

Tony TiegerTony Tieger

1132 silver badges4 bronze badges

1

Недавно я работаю над секундомером, который тоже считает миллисекунды. Я читал статьи о том, что нет необходимости обновлять таймер TextView чаще, чем каждые 1/10 секунды, поскольку именно в это время наши глаза могут зарегистрировать изображение. Так работает каждое приложение для секундомера? Даже встроенный секундомер на всех устройствах Android?

Если приложение может быть точным, чтобы отображать каждую миллисекунду, предложите способ для этого, поскольку я застрял.

2 ответа

Я разработал один из ведущих секундомеров для Android, и совет по обновлению бегового дисплея с максимальной точностью до 1/10 секунды является правильным. Нет смысла обновлять экран для нечитаемого значения … это только сделает ваш пользовательский интерфейс медленным.

Я также рекомендовал бы:

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


1

Moog
25 Окт 2018 в 12:11

Если вы слишком часто обновляете текстовое изображение, оно будет нечитаемым. Я не могу говорить обо всех приложениях для секундомеров (никто не может), но могу сказать, что то, что я видел, — это приложения, которые отображают:

0.1
0.2
0.3
0.4
0.5

Только тогда, когда вы остановите таймер, вы увидите полное значение миллисекунды:

0.5432

Нет никакой пользы от отображения всех десятичных знаков во время работы таймера.

Также обратите внимание, что нет возможности отображать каждое значение в миллисекундах во время работы, поскольку частота обновления экрана обычно ограничена 60 кадрами в секунду.


0

weston
22 Май 2018 в 14:34

Сравнение механических и электронных секундомеров

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

Секундомер — это устройство для измерения времени с точностью до долей секунды. Современные секундомеры способны измерять время с очень высокой точностью, до десятитысячной доли секунды.

Это устройство широко используется в любой области спорта, для отслеживания показателей спортсмена. В профессиональном спорте, тренировки или непосредственно соревнования без применения секундомера немыслимы. В ходе тренировки при помощи секундомера можно проследить за достигнутыми на данный момент результатами и в дальнейшем эффективно распределять нагрузку для достижения наилучших показателей. Любители спорта не меньше профессионалов пользуются секундомером. Секундомер также используется в лаборатории для проведения различных опытов. В учебных заведениях также используют этот прибор (школы, лицей, ВУЗ). А в быту пользуются секундомером, к примеру, для приготовления пищи.

секундомер ссср

Секундомеры бывают двух типов:

• механический;

• цифровой.

Если говорить о механическом секундомере, то он имеет определенные достоинства:

• простой в использовании;

• долговечен;

• отсутствуют элементы питания.

У этого механического секундомера есть всего она кнопка управления. При первом нажатии на кнопку запускаем секундомер. Второе нажатие на кнопку останавливает подсчёт. Третье нажатие на кнопку аннулирует показания и возвращает секундомер в исходное положение. Вращая кнопку эту кнопку, мы заводим пружину секундомера.

У механического секундомера есть 3 класса точности. Наипростейший, 3-го класса имеет маркировку СОПпр это тип однострелочных, простого действия, прерываемых секундомеров. Следующий класс точности имеет маркировку СОСпр и его имеют секундомеры 1-го и 2-го классов точности они однострелочные, суммирующего принципа действия, прерываемые.

СДСнпр двухстрелочные, суммирующего принципа действия, непрерываемые относятся к 1-му классу точности. Принцип работы механического секундомера: система колебания встроенная в секундомер это основной механизм. Когда нажимаем на кнопку пуска, рычаг с кулачком приводит в действие колесо с зубчиками, которые в свою очередь соединяет стрелочки с самим механизмом. При повторном нажатии на кнопку наблюдается разъединение механизма от стрелочек, что и останавливает секундомер.

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

Но и у цифрового секундомера есть определенные достоинства:

• точность

• многофункциональность

• огромный выбор моделей

В этом типе секундомеров стоит отметить высокую точность, что немало важно в спорте при установке рекордов. Также этот тип секундомера обладает многими дополнительными функциями, к примеру: память на несколько результатов, звуковой таймер, сравнение результатов и многими другими в зависимости от модели.

К примеру, секундомер типа РС2810 стоит примерно 900 рублей. Устройство имеет надежную конструкцию, он водонепроницаемый, может использоваться в любых условиях. Обладает возможностью измерять время с высокой точностью вплоть до миллисекунд. Есть функция запоминания до десяти результатов одновременно. Также секундомер оснащен будильником и календарем для организации вашего времени.

Рассмотрев типы и области применения этого устройства можно увидеть, что этот простой прибор необходим как в профессиональном спорте, так и в обычном повседневном быту. Где найти секундомер? Его можно приобрести на рынке спорттоваров или в магазине. Механический секундомер можно приобрести за 2-4 тысячи рублей. Электронный секундомер с минимальным набором функций будет стоить до 1000 рублей.

Создано
огромное количество разнообразных
измерительных приборов, отличающихся
конструкцией, принципом работы и
точностью. Точность прибора либо задается
классом
точности

(который обычно нанесен на прибор), либо
указывается в паспорте, прилагаемом к
прибору. Класс точности – это обобщенная
характеристика прибора, характеризующая
допустимые по стандарту значения
погрешностей, влияющих на точность
измерения.

Измерительные
приборы всегда
вносят свой вклад в погрешность измерения,
зависящий от точности прибора.
Соответствующую величину принято
называть приборной
погрешностью
.
В общем случае она может иметь две
составляющие – систематическую
и случайную
.
У правильно настроенного измерительного
прибора систематическая погрешность
либо отсутствует, либо достаточно просто
учитывается.

Для
определения приборной погрешности,
связанной со случайными факторами, мы
будем пользоваться следующими тремя
правилами:

  1. Если
    известен класс точности прибора, причем
    его цифровое обозначение не
    заключено в кружок
    ,
    тогда приборная погрешность определяется
    формулой:

(6)

где
− величина класса точности,− предел измерения прибора (то есть
максимальное значение величины, которое
может измерить данный прибор).

  1. Если
    прибор имеет класс точности, цифровое
    обозначение которого заключено
    в кружок
    ,
    то приборная погрешность определяется
    по
    отношению к данному результату измерения
    (вместо
    предела измерения
    в формуле (6) следует использовать
    измеренное значениефизической величины).

  2. Если
    прибор не имеет класса точности, его
    приборную погрешность обычно принимают
    равной половине цены деления. Цена
    деления

    прибора – это минимальное значение
    величины, которое может измерить данный
    прибор.

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

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

где
− значение величины, полученное в
процессе однократного прямого или
косвенного измерения,− погрешность однократного измерения.Количество измерений (одно) и
доверительная вероятность
в этом случае не указываются
, в отличие
от результата многократного измерения.
Величинав случае прямого однократного измерения
представляет собой приборную погрешность
.

4. Погрешность косвенного измерения

Опишем,
как определить погрешность
косвенного измерения
.
Перед тем как дать общий ответ, рассмотрим
достаточно частный случай определения
такой погрешности. Пусть стоит задача
измерения объема куба. Самый простой
способ решения задачи связан с измерением
− длины ребра куба. После того как она
определена, величина объема куба
рассчитывается по формуле.
Если измерение производилось однократно
с помощью линейки, то результат такого
прямого измерения представляется так:

где
− значение длины ребра, полученное в
процессе однократного измерения,− погрешность прямого измерения, равная
приборной погрешности линейки. Логично
потребовать, чтобы результат косвенного
измерения объема тоже имел вид

Значение
объема
рассчитывается по формуле, связывающей
его со значением длины ребра.
Остается определить величину− погрешность для косвенного измерения
объема. Оказывается, это величина линейно
связана с величинойс помощью следующей формулы:

Здесь
через
мы обозначили
производную функции

по
длине

.

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

(7)

Отметим,
что выражение
означаетчастную
производную функции

по
переменной

.

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

Результаты
однократных измерений всех трех величин
теперь могут быть представлены в
стандартной форме:

прямые
измерения:

м,

с,

косвенное
измерение:

м/с.

Соседние файлы в папке методички Физика

  • #
  • #
  • #
  • #
  • #

Не пропустите также:

  • Классификация крючков для рыбалки по номерам
  • Кладбище 9 января телефон
  • Кладбище михановичи администрация телефон
  • Класс превосходства обои на телефон
  • Классификация красивых номеров мобильных телефонов


  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии