¿Qué mide realmente una ciclocomputadora para calcular la velocidad de la bicicleta?

¿Qué mide realmente una ciclocomputadora para calcular la velocidad de la bicicleta? ¿Es el tiempo de una revolución $T$ o es el número de revoluciones $n$ por tiempo dado $t_0$?

Si el radio de la rueda es $R$ entonces obtienes la velocidad de la bicicleta $v$ por

$v = 2 \pi R /T$

en el primer caso y por

$v = 2\pi R n/t_0$ en el segundo.

Puede parecer una pequeña diferencia, pero estoy realmente interesado en este detalle. Espero que alguien pueda aclarar esto y dar algunas referencias.

Usan algún algoritmo para "suavizar" las variaciones menores. El algoritmo preciso es irrelevante; los resultados serán los mismos.
@DanielRHicks Entonces, ¿qué método se usa? ¿Tienes más detalles?
Supongo que varía de una marca a otra. Creo que cronometran varias revoluciones y calculan la velocidad/distancia a partir de eso. Sospecho que al menos algunos varían la cantidad de revoluciones cronometradas según la velocidad, de modo que pueden actualizarse una vez por segundo más o menos, independientemente de la velocidad.
¿Planea utilizar esta información en un proyecto, o es solo pura curiosidad?
@heltonbiker Estoy enseñando física en la escuela secundaria. Hay buenos ejercicios en los libros escolares que consideran las ciclocomputadoras como ejemplos del mundo real en el contexto de los cuerpos en rotación, discutiendo la frecuencia y la velocidad... Sin embargo, a veces se asume que una computadora de bicicleta mide de hecho el tiempo de una revolución y otras veces que mide el número de revoluciones en un intervalo de tiempo dado. Así que quiero obtener algunos conocimientos previos sobre cómo funciona realmente (y no solo cómo podría funcionar en teoría). ¡Sin embargo, su respuesta es útil!
Supongo que no es bienvenido enviar esta pregunta a physics.stackexchange y electronics.stackexchange también. Sin embargo, ¿hay otra forma aceptada de notificar a los usuarios de esos sitios sobre esta pregunta? No estoy seguro si es una buena idea migrarlo a uno de esos sitios.
El principal problema de los ciclocomputadores es que lo que muestran como velocidad actual es, de hecho, la velocidad media de un breve intervalo de tiempo reciente, y nunca la velocidad instantánea real. Cuando estás acelerando, la velocidad que se muestra siempre es menor de la que debería, y cuando estás frenando, es al contrario, porque hay un retraso. La única forma de evitarlo sería proporcionar formas de medir continuamente desplazamientos angulares más pequeños de la rueda en lugar de solo incrementos de giro completo.
Esto parece una pregunta de matemáticas puras. Hay 3 respuestas de diferentes longitudes y opiniones. En el último recuento hay 23 comentarios en total. Vamos amigos. Debe haber una respuesta concisa.
@ user313 no es absolutamente una pregunta de matemáticas. La pregunta asume que hay una respuesta, que es muy incorrecta. El ciclocomputador recibe una señal de un pulso por revolución. La pregunta menciona dos cosas que podría hacer con eso y no menciona el filtrado que necesita para obtener una respuesta razonablemente estable.

Respuestas (4)

La respuesta es "ambos, dependiendo". La mayoría de los ciclómetros de bicicleta actuales utilizan un interruptor de láminas y un temporizador, y miden el tiempo entre activaciones sucesivas del interruptor a medida que pasa un imán. Una ventaja de este método es su simplicidad y bajo costo, aunque si el imán está mal colocado o si la velocidad de rotación de la rueda es demasiado alta, el interruptor de lengüeta puede ser engañado, ya que el interruptor de lengüeta tarda un tiempo en restablecerse. .

Un enfoque menos común (utilizado por la antigua línea de velocímetros Avocet, incluido el venerable y venerado Avocet 50) usaba una bobina de inducción y un anillo magnético con 20 imanes pequeños unidos alrededor del cubo. La bobina de inducción podría contar rápidamente el cambio en la corriente. Puede ver los detalles de este enfoque en la solicitud de patente de Avocet para el 50, pero su diseñador discutió algunas de las idiosincrasias de ese enfoque en esta publicación de Usenet de 1994 .

Aunque estos dos métodos diferentes se pueden utilizar para recopilar los datos necesarios para calcular la velocidad, los algoritmos exactos utilizados pueden diferir de un dispositivo a otro. Uno puede ver esto en la forma en que a menudo se calcula la cadencia. Casi todas las computadoras para bicicletas que tienen un sensor de cadencia usan un interruptor de láminas, ya que la velocidad de rotación de las bielas es lo suficientemente baja como para que los interruptores de láminas se reinicien. Sin embargo, diferentes fabricantes utilizan diferentes períodos de promediación, tiempos de espera, retrasos y eventos desencadenantes antes de mostrar el resultado. Los cálculos de velocidad funcionan de manera similar y, en ocasiones, se pueden ver las pruebas de estas elecciones al examinar los datos de velocidad y cadencia.de ciclocomputadores que almacenan estos valores y permiten descargarlos después del viaje. Aquí, por ejemplo, hay un gráfico que muestra el registro de velocidad de tres dispositivos diferentes que se montaron en la misma bicicleta para el mismo recorrido (un PowerTap, un Polar S710 y un SRM Pro; estos son medidores de potencia, pero aquí nos enfocamos sólo en la velocidad registrada). Cada dispositivo se configuró con la misma circunferencia de rueda, pero los histogramas muestran que cada uno almacena e informa velocidades ligeramente diferentes.

velocidad registrada por tres dispositivos en el mismo viaje

Simple, y en realidad responde la pregunta formulada por el OP. +1

Piense en una ciclocomputadora como una combinación cableada de una calculadora, un reloj de cuarzo y una CPU dedicada que trabaja con un búfer.

EDITAR A UN ALGORITMO MÁS PLAUSIBLE:

Cada vez que el imán cierra el interruptor de lengüeta, se envía una solicitud al reloj para capturar una marca de tiempo, se envía un evento con marca de tiempo a un búfer y la circunferencia de la rueda se agrega a la distancia actual y al odómetro.

Cada vez que la CPU actualiza la velocidad actual, toma el primer y el último evento con marca de tiempo del búfer, calcula la distancia (circunferencia de la rueda multiplicada por el número de eventos menos uno) y la divide por el tiempo transcurrido calculado (última marca de tiempo menos primera marca de tiempo en el búfer), mostrando la velocidad y limpiando el búfer.

Además de las variables almacenadas de forma persistente (distancia actual, velocidad máxima, etc.), el ordenador trabaja con tres variables temporales: LAST_TIME, TEMP_TIME y TEMP_DISTANCE, todas ellas puestas a cero. La función present_time(), relacionada con el reloj, se resume aquí como un recurso disponible a pedido.

Cada vez que el interruptor de láminas cierra contacto, la computadora realiza las siguientes operaciones:

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

Cada vez que la computadora actualiza la pantalla, realiza las siguientes operaciones:

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

Finalmente, cada vez que se activa la función de parada automática (cuando la bicicleta está parada):

LAST_TIME = 0

Todas estas operaciones no solo son triviales desde el punto de vista computacional, sino también casi en tiempo real porque están implementadas por hardware en el circuito integrado.

Vale la pena considerar dos cosas:

  1. Si la computadora está funcionando con la función de inicio automático / parada automática, si la rueda tarda demasiado en completar un giro, la función de actualización de velocidad entra en modo de pausa;
  2. Lo más probable es que estas variables tengan una naturaleza de punto fijo/entero, es decir, tienen un valor máximo. Para TEMP_TIME, que probablemente funciona con una resolución de microsegundos, esto podría provocar un desbordamiento variable si transcurre demasiado tiempo entre las actualizaciones de velocidad. Eso implica una velocidad mínima para que funcione correctamente, dependiendo del tamaño de la memoria y del tipo de número de estas variables en el circuito integrado.

Además, es necesario que cuente el tiempo entre revoluciones, no el número de revoluciones durante un intervalo de tiempo fijo, porque el tiempo es una medida continua (coma flotante) y el número de vueltas de la rueda es una medida discreta (entera). Si se usara la segunda opción, la velocidad siempre se "redondearía" al valor entero más cercano posible, dando resultados incorrectos excepto para velocidades muy altas.

Bueno, técnicamente, el tiempo en el RTC es un número entero, pero es un número entero que se incrementa con mucha frecuencia, por lo que es lo más continuo que uno podría esperar.
@DanielRHicks Tienes razón. Lo que quise decir es que el TIEMPO es una magnitud continua por naturaleza, mientras que el número de vueltas (medido por un interruptor) no lo es, solo aumenta en incrementos de vuelta completa. Dado que los dispositivos de cuarzo miden el tiempo en microsegundos o menos, tiene suficiente resolución para ser equivalente a un número de coma flotante, como dijiste, al menos considerando la aplicación de medir velocidades de bicicletas.
Esto suena razonable. Es lo contrario (en términos de esta pregunta) de lo que yo entiendo que es verdad. ¿De dónde obtiene su información? (FTR, estoy interesado, no busco iniciar una discusión o lo que sea. Solo quiero saber si estoy equivocado y cómo estar seguro).
@zenbike En realidad, esta explicación es más una suposición que un conocimiento real, pero sé un poco de programación, ingeniería y electrónica, y esa sería la forma "necesaria" de hacerlo: ya que el número de ruedas no se puede medir continuamente ( solo cuando el interruptor de láminas se cierra), es necesario que cuentes el tiempo de cada giro de la rueda, y no el número de giros en un intervalo de tiempo fijo, especialmente considerando que las ruedas de las bicicletas giran a RPM relativamente bajas.
Experimento rápido: gire la rueda una revolución completa, de modo que el interruptor de los sensores del ciclómetro se active 2 veces. ¿Obtiene una lectura de la velocidad, aunque sea momentáneamente? El mío no. Requiere la activación del interruptor 10-12 veces antes de que se pueda calcular la velocidad. Tengo entendido que eso se debe a que necesita una lectura de 2 a 3 veces la duración del período de actualización antes de que se pueda procesar el cálculo inicial. ¿Cómo funciona eso? Por cierto, esto podría convertirse en una larga conversación. ¿Estás dispuesto a enviarme un correo electrónico directamente? Si es así, te enviaré un correo electrónico.
Dado que todo lo que se está discutiendo es hipotético, no creo que enviar un correo electrónico sea productivo, al menos sobre esto. Lo que sé es que la función de inicio/parada automática de los ciclómetros requiere una velocidad mínima para funcionar. Además de eso, creo que el búfer que mencioné podría estar lleno antes de que la rueda complete una vuelta completa si es demasiado lento. He tenido un Vetta con una frecuencia de actualización muy rápida que mostraba velocidades mínimas de menos de 2 km/h. Mis cateyes empiezan a medir solo unos 4 o 5km/h.
No estoy seguro de lo que estás diciendo allí. ¿Eso parece implicar que cree que su propia teoría no es práctica debido al tamaño del búfer? ¿O estoy malinterpretando?
HB, siendo un programador que a veces trabaja en cosas mecánicas, creo que su algoritmo básico es más o menos lo que sería (aunque yo lo haría de manera ligeramente diferente). Pero la red-red es que no habría un "error" a largo plazo (aparte del debido a simples problemas de precisión). El algoritmo en sí puede ser fácilmente preciso.

Un ciclómetro mide el número de revoluciones y lo multiplica por la circunferencia exterior de la rueda y el neumático (o una aproximación cercana, dependiendo de cómo lo configuró el usuario) para obtener la distancia recorrida durante un período determinado de tiempo.

Aplicar la fórmula de conversión a KMH o MPH es todo lo que queda.

Instrucciones:

  1. Mida la circunferencia de la rueda en milímetros, idealmente utilizando el método de despliegue descrito aquí . Convierte la medida milimétrica de la rueda a pulgadas dividiendo por 25,4. (25,4 mm = 1 pulgada) Divida por 12 para obtener la circunferencia en pies.

  2. Calcula las revoluciones de las ruedas por milla dividiendo 5280 por la circunferencia de la llanta en pies.

  3. Calcula la velocidad por minuto dividiendo la velocidad de la rueda por las revoluciones de la llanta por milla. Por ejemplo, si la velocidad de la rueda es de 300 rpm, la llanta del ejemplo se mueve a 0,446 millas por minuto.

  4. Multiplique la velocidad en millas por minuto por 60 para convertir la velocidad en millas por hora (mph).

  5. Multiplique por 1.609344 para obtener la velocidad en KPH.

    Ejemplo:

  • Circunferencia de la rueda = 2105 mm
  • 2105 / 25,4 = 82,8740157 pulgadas de circunferencia.
  • 82.8740157 pulgadas de circunferencia. / 12 = 6,90616798 pies circ.
  • 5280 / 6.90616798 pies circ. = 764.533967 revoluciones de rueda para viajar una milla
  • 350 RPM / 764.533967 = .45779523 millas por minuto
  • .45779523 millas por minuto x 60 = 27.4677135 millas por hora
  • 27,4677135 millas por hora x 1,609344 = 44,205 kilómetros por hora

En este ejemplo "350" es una variable que el ciclómetro cuenta usando un sensor magnético. La mayoría de los ciclómetros actualizan el cálculo entre una vez por segundo y una vez cada 5 segundos.

Buena explicación matemática aquí.

Gracias. Entonces, ¿mide el número de revoluciones por segundo (o por 5 segundos según el modelo) y no el tiempo necesario para una revolución? El problema no es cómo calcular la velocidad a partir de las rpm o convertir unidades (por cierto, soy de Alemania, donde solo se usan unidades métricas).
Y vivo en Dubai, donde solo se usan unidades métricas. La mayoría de los ciclómetros ofrecen ambas opciones y utilizan este método de cálculo. Tu pregunta era si el ciclómetro mide las revoluciones de la rueda en un tiempo determinado o el tiempo de una revolución. La respuesta es la primera, pero debe calcular la última a partir de la primera para obtener la velocidad por hora. ¿Hay una mejor manera de dejar eso claro?
Sí, esa es la pregunta. Tienes una referencia para eso? Para mí, ambos métodos parecen ser razonables, podría tomar un tiempo fijo, digamos 2 segundos y contar el número de revoluciones (eso es lo que realmente se usa como dijo) o podría medir el tiempo para una revolución. ¿Sabes por qué no se usa este último? Nuevamente, el problema realmente no es cómo calcular las cosas una vez que tiene las medidas (esa es una de las razones por las que incluí las fórmulas en mi pregunta, para mostrar que ese no es el problema ...)
"¿Qué mide realmente una ciclocomputadora para calcular la velocidad de la bicicleta?" es la pregunta que estaba tratando de responder. Posiblemente con exceso de explicación... No hay referencias, pero esto es lo que se hace. Lo sé porque he estado administrando un taller de servicio de bicicletas durante 10 años, y ese método de despliegue es lo que se necesita para obtener una medición precisa de la velocidad. Podrías ir por el otro lado, pero sé que esto es lo que se usa.
En cuanto a por qué, creo que solo porque necesitaría actualizar cada segundo si mide el tiempo por revolución. La medición del número de revoluciones permite una lectura razonablemente precisa, con menor potencia de procesamiento y menor consumo de energía de la batería, ya que solo necesita actualizar una vez cada 5 a 10 segundos. Y es solo recientemente que las computadoras para bicicletas realmente se han convertido en computadoras con algún poder real...
Creo que la tercera variable, que es la circunferencia de la rueda, falta en sus pensamientos. No importa de qué manera calcule la rotación, como tiempo o distancia, si tiene la circunferencia precisa. Esencialmente, solo estás resolviendo la ecuación para una variable diferente. Pero sé que en la práctica cuentan el número de revoluciones.

He diseñado sistemas integrados para medir la velocidad varias veces (no una computadora para bicicletas, pero lo mismo para locomotoras). Su pregunta es fácil de responder:

"¿Es el momento de una revolución $T$ o es el número de revoluciones $n$ por tiempo dado $t_0$"

Tienes dos variables, tiempo y número de revoluciones. Una computadora puede medir el tiempo con mucha precisión. Una computadora no puede medir revoluciones ni de cerca con tanta precisión. (Simplemente no hay muchos de ellos, ya que ocurren lentamente, por lo que tendría que lidiar con revoluciones fraccionarias en cada período de tiempo fijo). Entonces, en función de lo que se puede medir con mayor precisión, desea medir la cantidad de tiempo. toma para hacer una revolución. Puede medir fácilmente el tiempo en microsegundos, desde el momento en que su sensor ve que comienza una revolución hasta la próxima vez que se activa el mismo sensor.

También tenga en cuenta que las computadoras para bicicletas son dispositivos de muy bajo consumo de energía. Espera poner una batería de moneda en una y hacer que funcione durante años. Cuanto más rápido se ejecutan las rutinas de software, más potencia consumen. Así que tienes una rutina rápida, contando el tiempo. La segunda rutina solo se ejecuta cuando ve una señal del sensor de la rueda. Toma el valor del temporizador actual y lo guarda. Una rutina de fondo de ejecución más lenta toma estos intervalos de tiempo y usa la circunferencia para calcular una velocidad.

Las velocidades calculadas se almacenan en un búfer móvil, donde ejecuta un filtro digital de paso bajo en estas velocidades para suavizarlas. (Por ejemplo, agregue la velocidad actual a la velocidad anterior, divida por 2, y esa es la velocidad mostrada. En la práctica, usa un filtro más complicado usando más puntos).

Los sensores de las ruedas deben poder funcionar más rápido de lo que sospechas. Mis ciclocomputadores siempre han sido capaces de medir velocidades de más de 40 mph. Supongo que pueden subir hasta al menos 60 mph. Eso significa que con un neumático de 700x25, el sensor de la rueda puede hacer de 12 a 13 revoluciones por segundo a 60 mph. Tampoco le he puesto precio desde hace tiempo, pero los sensores de láminas tienen que ser mucho más caros que los sensores de efecto Hall. Los sensores de láminas usan metales costosos (plata, bismuto o ???) , pueden ser poco confiables, no les gusta la conmutación rápida y generan ruido electrónico.

Entonces, la respuesta a su pregunta es que desea medir la cantidad de tiempo que toma cada revolución , no la cantidad de revoluciones en un período de tiempo fijo.