Что на самом деле измеряет велокомпьютер для расчета скорости велосипеда?

Что на самом деле измеряет велокомпьютер для расчета скорости велосипеда? Это время одного оборота $T$ или количество оборотов $n$ за заданное время $t_0$?

Если радиус колеса равен $R$, то скорость велосипеда $v$ определяется как

$v = 2 \pi R /T$

в первом случае и по

$v = 2\pi R n/t_0$ во втором.

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

Они используют некий алгоритм для «сглаживания» незначительных вариаций. Точный алгоритм не имеет значения — результаты будут одинаковыми.
@DanielRHicks Итак, какой метод используется? У вас есть более подробная информация?
Я предполагаю, что это варьируется от бренда к бренду. Я думаю, что они измеряют несколько оборотов и вычисляют скорость/расстояние. Я подозреваю, что по крайней мере некоторые из них изменяют количество оборотов в зависимости от скорости, чтобы они могли обновляться примерно раз в секунду, независимо от скорости.
Планируете ли вы использовать эту информацию в проекте или это просто любопытство?
@heltonbiker Я преподаю физику в старшей школе. В школьных учебниках есть хорошие упражнения, которые рассматривают велокомпьютеры как примеры реального мира в контексте вращающихся тел, обсуждая частоту и скорость... Однако иногда предполагается, что велокомпьютер фактически измеряет время одного оборота, а иногда что измеряет количество оборотов за заданный интервал времени. Поэтому я хочу получить некоторые базовые знания о том, как это работает на самом деле (а не только о том, как это может работать в теории). Тем не менее, ваш ответ полезен!
Я предполагаю, что не приветствуется перекрестная публикация этого вопроса на физике.stackexchange и electronics.stackexchange. Однако есть ли другой общепринятый способ уведомить пользователей этих сайтов об этом вопросе? Я не уверен, что это хорошая идея, чтобы перенести его на один из этих сайтов.
Основная проблема велокомпьютеров заключается в том, что то, что они отображают как текущую скорость, на самом деле является средней скоростью за короткий недавний интервал времени, а не фактической мгновенной скоростью. При разгоне отображаемая скорость всегда меньше, чем должна, а при торможении наоборот, потому что есть задержка. Единственный способ избежать этого — предоставить способы непрерывного измерения меньших угловых перемещений колеса, а не только полных приращений оборота.
Это похоже на чисто математический вопрос. Есть 3 ответа разной длины и мнений. По последним подсчетам всего 23 комментария. Давай, ребята. Должен быть лаконичный ответ.
@ user313 это абсолютно не математический вопрос. Вопрос предполагает, что есть один ответ, который совершенно неверен. Велокомпьютер получает сигнал одного импульса за оборот. В вопросе упоминаются две вещи, которые вы могли бы сделать с этим, и не упоминается фильтрация, необходимая для получения достаточно стабильного ответа.

Ответы (4)

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

Менее распространенный подход (используемый в старой линейке спидометров Avocet, включая почтенный и почитаемый Avocet 50) использовал индукционную катушку и магнитное кольцо с 20 маленькими магнитами, прикрепленными вокруг ступицы. Индукционная катушка могла быстро подсчитывать изменение тока. Вы можете увидеть подробности этого подхода в заявке на патент Avocet для 50, но его разработчик обсудил некоторые особенности этого подхода в этом сообщении Usenet от 1994 года .

Хотя эти два разных метода могут использоваться для сбора данных, необходимых для расчета скорости, точные используемые алгоритмы могут отличаться от устройства к устройству. Это видно по тому, как часто рассчитывается каденс. Почти все велокомпьютеры с датчиком частоты вращения педалей используют герконы, поскольку скорость вращения кривошипов достаточно мала для сброса герконов. Однако разные производители используют разные периоды усреднения, тайм-ауты, задержки и события запуска перед отображением результата. Расчеты скорости работают аналогичным образом, и иногда можно увидеть доказательства этого выбора, изучив данные о скорости и частоте вращения педалей .от велокомпьютеров, которые хранят эти значения и позволяют их загружать после поездки. Вот, например, график, показывающий запись скорости с трех разных устройств, которые были установлены на один и тот же велосипед для одной и той же поездки (PowerTap, Polar S710 и SRM Pro — это измерители мощности, но здесь мы сосредоточимся на только на зарегистрированной скорости). Каждое устройство было настроено на одинаковую окружность колеса, но гистограммы показывают, что каждое из них хранит и сообщает немного разные скорости.

скорость, зафиксированная тремя устройствами во время одной поездки

Простой и фактически отвечает на вопрос, сформулированный ОП. +1

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

РЕДАКТИРОВАТЬ НА БОЛЕЕ ПРАВДОВЫЙ АЛГОРИТМ:

Каждый раз, когда магнит замыкает геркон, на часы отправляется запрос на получение временной метки, событие с временной меткой отправляется в буфер, а длина окружности колеса добавляется к текущему расстоянию и к одометру.

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

Помимо постоянно хранимых переменных (текущее расстояние, максимальная скорость и т. д.), компьютер работает с тремя временными переменными: LAST_TIME, TEMP_TIME и TEMP_DISTANCE, все они равны нулю. Функция present_time(), связанная с часами, здесь абстрагируется как ресурс, доступный по запросу.

Каждый раз, когда геркон замыкает контакт, компьютер выполняет следующие операции:

TRIP_DISTANCE = TRIP_DISTANCE + WHEEL_CIRCUMFERENCE
if LAST_TIME is zero:
    LAST_TIME = present_time()
else:
    TEMP_TIME = TEMP_TIME + (present_time() - LAST_TIME)
    LAST_TIME = present_time()
    TEMP_DISTANCE = TEMP_DISTANCE + WHEEL_CIRCUMFERENCE

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

CURRENT_SPEED = TEMP_DISTANCE / TEMP_TIME
TEMP_TIME = TEMP_DISTANCE = 0
AVERAGE_SPEED = TRIP_DISTANCE / TRIP_TIME
if CURRENT_SPEED > MAXIMUM_SPEED:
    MAXIMUM_SPEED = CURRENT_SPEED

Наконец, каждый раз, когда активируется функция автостопа (когда велосипед останавливается):

LAST_TIME = 0

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

Стоит учитывать две вещи:

  1. Если компьютер работает с функцией автозапуска/автостопа, если колесо слишком долго завершает поворот, функция обновления скорости переходит в режим паузы;
  2. Скорее всего, эти переменные имеют фиксированную/целочисленную природу, то есть имеют максимальное значение. Для TEMP_TIME, которое, вероятно, работает с микросекундным разрешением, это может привести к переполнению переменной, если между обновлениями скорости прошло слишком много времени. Это подразумевает минимальную скорость для правильной работы, зависящую от размера памяти и типа числа этих переменных в интегральной схеме.

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

Что ж, технически время в RTC — это целое число, но это целое число, которое увеличивается очень часто, так что оно настолько близко к непрерывному, насколько можно надеяться получить.
@DanielRHicks Ты прав. Я имел в виду, что ВРЕМЯ по своей природе является постоянной величиной, а количество кругов (измеряемое переключателем) - нет, оно увеличивается только с шагом в полный оборот. Поскольку кварцевые устройства измеряют время в микросекундах или меньше, оно имеет достаточное разрешение, чтобы быть эквивалентным числу с плавающей запятой, как вы сказали, - по крайней мере, с учетом применения измерения скорости велосипеда.
Это звучит разумно. Это противоположно (с точки зрения этого вопроса) тому, что я понимаю как истину. Где вы берете информацию? (FTR, мне интересно, я не собираюсь начинать спор или что-то в этом роде. Просто хочу знать, не ошибаюсь ли я, и как быть уверенным.)
@zenbike На самом деле, это объяснение больше похоже на предположение, чем на фактическое знание, но я немного разбираюсь в программировании, инженерии и электронике, и это был бы «необходимый» способ сделать это: поскольку количество колес нельзя измерять постоянно ( только при замыкании геркона), необходимо считать время каждого оборота колеса, а не количество оборотов за фиксированный интервал времени, особенно учитывая, что велосипедные колеса крутятся при относительно низких оборотах.
Быстрый эксперимент: поверните колесо на один полный оборот, чтобы переключатель датчиков циклометра сработал 2 раза. Вы получаете показания скорости, даже на мгновение? Мой нет. Требуется активация переключателя 10-12 раз, прежде чем можно будет рассчитать скорость. Насколько я понимаю, это связано с тем, что требуется чтение в 2-3 раза больше длины периода обновления, прежде чем можно будет обработать первоначальный расчет. Как это играет? Кстати, это может превратиться в долгий разговор. Вы готовы написать мне напрямую? Если да, я пришлю вам письмо.
Поскольку все, о чем идет речь, является гипотетическим, я не думаю, что электронная почта была бы продуктивной, по крайней мере, по этому поводу. Что я знаю, так это то, что функция автозапуска/остановки циклометров требует минимальной скорости для работы. Кроме того, я думаю, что буфер, о котором я упоминал, может быть заполнен до того, как колесо завершит полный оборот, если оно слишком медленное. У меня была Vetta с очень высокой частотой обновления, которая показывала минимальную скорость менее 2 км/ч. Мои кошачьи глаза начинают измерять только около 4 или 5 км/ч.
Не уверен, что вы там говорите. Кажется, это означает, что вы считаете свою собственную теорию непрактичной из-за размера буфера? Или я неправильно понимаю?
HB, будучи программистом, который время от времени работает над механическими вещами, я думаю, что ваш базовый алгоритм примерно такой, каким он был бы (хотя я бы сделал это немного по-другому). Но сеть-сеть заключается в том, что не будет долгосрочной «ошибки» (кроме той, что связана с простыми проблемами точности). Сам алгоритм может быть легко точен.

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

Осталось применить формулу преобразования в километры в час или мили в час.

Инструкции:

  1. Измерьте окружность колеса в миллиметрах, в идеале с помощью метода выкатывания, описанного здесь . Преобразуйте миллиметры колеса в дюймы, разделив на 25,4. (25,4 мм = 1 дюйм) Разделите на 12, чтобы получить длину окружности в футах.

  2. Рассчитайте количество оборотов колеса на милю, разделив 5280 на длину окружности шины в футах.

  3. Рассчитайте скорость в минуту, разделив скорость колеса на число оборотов шины на милю. Например, если скорость колеса составляет 300 об/мин, шина в примере движется со скоростью 0,446 мили в минуту.

  4. Умножьте скорость в милях в минуту на 60, чтобы преобразовать скорость в мили в час (миль в час).

  5. Умножьте на 1,609344, чтобы получить скорость в км/ч.

    Пример:

  • Окружность колеса = 2105 мм
  • 2105 / 25,4 = 82,8740157 дюймов окружности.
  • 82,8740157 дюймов окруж. / 12 = 6,90616798 футов окружности.
  • 5280 / 6,90616798 футов окружности. = 764,533967 оборотов колеса, чтобы проехать одну милю
  • 350 об/мин / 764,533967 = 0,45779523 мили в минуту
  • 0,45779523 миль в минуту x 60 = 27,4677135 миль в час
  • 27,4677135 миль в час x 1,609344 = 44,205 километра в час

В этом примере «350» — это переменная, которую циклометр считает с помощью магнитного датчика. Большинство циклометров обновляют расчет от одного раза в секунду до одного раза в 5 секунд.

Хорошее математическое объяснение здесь.

Спасибо. Значит, он измеряет количество оборотов в секунду (или за 5 секунд в зависимости от модели), а не время, необходимое для одного оборота? Проблема не в том, как рассчитать скорость из оборотов в минуту или преобразовать единицы измерения (кстати, я из Германии, где используются только метрические единицы).
А я живу в Дубае, где используются только метрические единицы. Большинство циклометров предлагают оба варианта и используют этот метод расчета. Ваш вопрос заключался в том, измеряет ли циклометр обороты колеса за заданное время или время на один оборот. Ответ первый, но вы должны вычислить второе из первого, чтобы получить скорость в час. Есть ли лучший способ прояснить это?
Да, это вопрос. У вас есть ссылка на это? Для меня оба метода кажутся разумными, вы можете взять фиксированное время, скажем, 2 секунды, и подсчитать количество оборотов (это то, что на самом деле используется, как вы сказали), или вы можете измерить время для одного оборота. Знаете, почему последний не используется? Опять же, проблема на самом деле не в том, как рассчитать вещи, когда у вас есть измерения (это одна из причин, по которой я включил формулы в свой вопрос, чтобы показать, что это не проблема...)
«Что на самом деле измеряет велокомпьютер для расчета скорости велосипеда?» вопрос, на который я пытался ответить. Возможно, с излишним пояснением... Ссылок нет, но сделано именно так. Я знаю это, потому что уже 10 лет управляю мастерской по обслуживанию велосипедов, и этот метод развертывания необходим для точного измерения скорости. Можно было бы пойти другим путем, но я знаю, что это то, что используется.
Что касается того, почему, я думаю, только потому, что вам нужно будет обновлять каждую секунду, если вы измеряете время за оборот. Измерение числа оборотов обеспечивает достаточно точное считывание с меньшей вычислительной мощностью и меньшим потреблением энергии батареи, поскольку вам нужно обновлять только один раз в 5-10 секунд. И только недавно велокомпьютеры действительно превратились в компьютеры какой-то реальной мощности...
Я думаю, что третья переменная, то есть длина окружности колеса, упущена из ваших мыслей. Неважно, как вы вычисляете вращение, как время или расстояние, если у вас есть точная длина окружности. По сути, вы просто решаете уравнение для другой переменной. Но я знаю, что на практике считают количество оборотов.

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

"Это время одного оборота $T$ или количество оборотов $n$ за заданное время $t_0$"

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

Также обратите внимание, что велокомпьютеры — устройства с чрезвычайно низким энергопотреблением. Вы ожидаете, что поместите монетную батарейку в один и он будет работать годами. Чем быстрее работают программы, тем больше энергии они потребляют. Итак, у вас есть одна быстрая процедура, подсчитывающая время. Вторая процедура запускается только тогда, когда она видит сигнал от датчика колеса. Он захватывает текущее значение таймера и сохраняет его. Более медленная фоновая процедура берет эти временные интервалы и использует длину окружности для расчета скорости.

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

Колесные датчики должны работать быстрее, чем вы подозреваете. Мои велокомпьютеры всегда могли измерять скорость более 40 миль в час. Я предполагаю, что они могут разогнаться как минимум до 60 миль в час. Это означает, что с шиной 700x25 датчик колеса может делать 12-13 оборотов в секунду на скорости 60 миль в час. Я также давно не оценивал его, но герконовые датчики должны быть намного дороже, чем датчики на эффекте Холла. Герконовые датчики используют дорогие металлы (серебро, или висмут, или ???) , могут быть ненадежными, не любят быстрых переключений и генерируют электронные помехи.

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