Что на самом деле измеряет велокомпьютер для расчета скорости велосипеда? Это время одного оборота $T$ или количество оборотов $n$ за заданное время $t_0$?
Если радиус колеса равен $R$, то скорость велосипеда $v$ определяется как
$v = 2 \pi R /T$
в первом случае и по
$v = 2\pi R n/t_0$ во втором.
Может показаться, что это крошечная разница, но меня действительно интересует эта деталь. Надеюсь, кто-то может прояснить это и дать несколько ссылок.
Ответ «оба, в зависимости». В большинстве современных велосипедных циклометров используется геркон и таймер, и они измеряют время между последовательными срабатываниями переключателя при прохождении магнита. Преимуществом этого метода является его простота и низкая стоимость, хотя, если магнит расположен неправильно или если скорость вращения колеса слишком высока, геркон может быть обманут, поскольку геркону требуется некоторое время для сброса. .
Менее распространенный подход (используемый в старой линейке спидометров Avocet, включая почтенный и почитаемый Avocet 50) использовал индукционную катушку и магнитное кольцо с 20 маленькими магнитами, прикрепленными вокруг ступицы. Индукционная катушка могла быстро подсчитывать изменение тока. Вы можете увидеть подробности этого подхода в заявке на патент Avocet для 50, но его разработчик обсудил некоторые особенности этого подхода в этом сообщении Usenet от 1994 года .
Хотя эти два разных метода могут использоваться для сбора данных, необходимых для расчета скорости, точные используемые алгоритмы могут отличаться от устройства к устройству. Это видно по тому, как часто рассчитывается каденс. Почти все велокомпьютеры с датчиком частоты вращения педалей используют герконы, поскольку скорость вращения кривошипов достаточно мала для сброса герконов. Однако разные производители используют разные периоды усреднения, тайм-ауты, задержки и события запуска перед отображением результата. Расчеты скорости работают аналогичным образом, и иногда можно увидеть доказательства этого выбора, изучив данные о скорости и частоте вращения педалей .от велокомпьютеров, которые хранят эти значения и позволяют их загружать после поездки. Вот, например, график, показывающий запись скорости с трех разных устройств, которые были установлены на один и тот же велосипед для одной и той же поездки (PowerTap, Polar S710 и SRM Pro — это измерители мощности, но здесь мы сосредоточимся на только на зарегистрированной скорости). Каждое устройство было настроено на одинаковую окружность колеса, но гистограммы показывают, что каждое из них хранит и сообщает немного разные скорости.
Думайте о велокомпьютере как о встроенной комбинации калькулятора, кварцевых часов и специального процессора, работающего с буфером.
РЕДАКТИРОВАТЬ НА БОЛЕЕ ПРАВДОВЫЙ АЛГОРИТМ:
Каждый раз, когда магнит замыкает геркон, на часы отправляется запрос на получение временной метки, событие с временной меткой отправляется в буфер, а длина окружности колеса добавляется к текущему расстоянию и к одометру.
Каждый раз, когда ЦП обновляет текущую скорость, он берет из буфера первое и последнее события с отметкой времени, вычисляет расстояние (длина окружности колеса, умноженная на число событий минус один) и делит на рассчитанное прошедшее время (последняя отметка времени минус первая метка времени в буфере), отображение скорости и очистка буфера.
Помимо постоянно хранимых переменных (текущее расстояние, максимальная скорость и т. д.), компьютер работает с тремя временными переменными: 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
Все эти операции не только тривиальны с вычислительной точки зрения, но и выполняются практически в реальном времени, поскольку они аппаратно реализованы в интегральной схеме.
Стоит учитывать две вещи:
Также необходимо, чтобы он считал время между оборотами, а не количество оборотов за фиксированный интервал времени, потому что время — это непрерывная (с плавающей запятой) мера, а количество оборотов колеса — дискретная (целочисленная) мера. Если бы использовалась вторая опция, скорость всегда была бы «округлена» до ближайшего возможного целочисленного значения, что давало бы неверные результаты, за исключением очень высоких скоростей.
Велосипедометр измеряет количество оборотов и умножает его на внешнюю окружность колеса и шины (или ее близкое приближение, в зависимости от того, как он был настроен пользователем), чтобы получить расстояние, пройденное за заданный период времени. время.
Осталось применить формулу преобразования в километры в час или мили в час.
Инструкции:
Измерьте окружность колеса в миллиметрах, в идеале с помощью метода выкатывания, описанного здесь . Преобразуйте миллиметры колеса в дюймы, разделив на 25,4. (25,4 мм = 1 дюйм) Разделите на 12, чтобы получить длину окружности в футах.
Рассчитайте количество оборотов колеса на милю, разделив 5280 на длину окружности шины в футах.
Рассчитайте скорость в минуту, разделив скорость колеса на число оборотов шины на милю. Например, если скорость колеса составляет 300 об/мин, шина в примере движется со скоростью 0,446 мили в минуту.
Умножьте скорость в милях в минуту на 60, чтобы преобразовать скорость в мили в час (миль в час).
Умножьте на 1,609344, чтобы получить скорость в км/ч.
Пример:
В этом примере «350» — это переменная, которую циклометр считает с помощью магнитного датчика. Большинство циклометров обновляют расчет от одного раза в секунду до одного раза в 5 секунд.
Я несколько раз разрабатывал встроенные системы для измерения скорости (не велокомпьютер, а то же самое для локомотивов). На ваш вопрос легко ответить:
"Это время одного оборота $T$ или количество оборотов $n$ за заданное время $t_0$"
У вас есть две переменные, время и количество оборотов. Компьютер может очень точно измерять время. Компьютер не может так точно измерять обороты. (Просто их не очень много, поскольку они происходят медленно, поэтому вам придется иметь дело с дробными оборотами в каждый фиксированный период времени.) требуется, чтобы сделать один оборот. Вы можете легко измерить время с точностью до микросекунды, с момента, когда ваш датчик увидит начало оборота, до следующего срабатывания того же самого датчика.
Также обратите внимание, что велокомпьютеры — устройства с чрезвычайно низким энергопотреблением. Вы ожидаете, что поместите монетную батарейку в один и он будет работать годами. Чем быстрее работают программы, тем больше энергии они потребляют. Итак, у вас есть одна быстрая процедура, подсчитывающая время. Вторая процедура запускается только тогда, когда она видит сигнал от датчика колеса. Он захватывает текущее значение таймера и сохраняет его. Более медленная фоновая процедура берет эти временные интервалы и использует длину окружности для расчета скорости.
Рассчитанные скорости сохраняются в прокручивающемся буфере, где вы запускаете цифровой фильтр нижних частот для этих скоростей, чтобы сгладить их. (Например, добавьте текущую скорость к предыдущей скорости, разделите на 2, и вы получите отображаемую скорость. На практике вы используете более сложный фильтр с использованием большего количества точек.)
Колесные датчики должны работать быстрее, чем вы подозреваете. Мои велокомпьютеры всегда могли измерять скорость более 40 миль в час. Я предполагаю, что они могут разогнаться как минимум до 60 миль в час. Это означает, что с шиной 700x25 датчик колеса может делать 12-13 оборотов в секунду на скорости 60 миль в час. Я также давно не оценивал его, но герконовые датчики должны быть намного дороже, чем датчики на эффекте Холла. Герконовые датчики используют дорогие металлы (серебро, или висмут, или ???) , могут быть ненадежными, не любят быстрых переключений и генерируют электронные помехи.
Таким образом, ответ на ваш вопрос заключается в том, что вы хотите измерить количество времени, которое занимает каждый оборот , а не количество оборотов за фиксированный период времени.
Дэниел Р. Хикс
Юлия
Дэниел Р. Хикс
хелтонбайкер
Юлия
Юлия
хелтонбайкер
пользователь313
Росс Милликен