Mi computadora de bicicleta que no es GPS, de otra manera confiable, calcula una velocidad promedio extremadamente inexacta para mis viajes matutinos. Después de mi viaje esta mañana, leí los siguientes valores de la pantalla (las unidades están en millas y millas por hora):
- viaje dist: 1.70
- tiempo de viaje: 00:06:29
- velocidad promedio: 16.47
- velocidad máxima: 23.86
Sin embargo, la velocidad promedio real es: 1.7 / (6/60 + 29/3600) = 15.73. El valor informado está apagado en casi un 5%. Esto me molesta porque me gusta establecer metas para mejorar mi velocidad promedio (para mi "entrenamiento de intervalo" impuesto por el semáforo), pero la inexactitud es mayor que los incrementos de 0.5 mph que alcanzo.
¿Asumiría que una computadora de bicicleta calcularía la velocidad promedio simplemente dividiendo "dist de viaje" por "tiempo de viaje"? ¿Qué es la computación y por qué es diferente del promedio real?
(levemente relacionado: ¿Por qué no se calculan las velocidades promedio sobre la distancia? )
fuente
Respuestas:
Bien, esto realmente requiere cierto conocimiento de cómo funcionan estas pequeñas computadoras internamente. Las computadoras para bicicletas deben tener una potencia extremadamente baja, por lo que la forma más fácil de hacerlo es hacerlas muy simples. Las computadoras normales pueden usar números no enteros. Un número entero es 1,2,3,4, etc., no entero significa, por ejemplo, 1/2, 0.5762 o pi. Las computadoras usan los llamados números de punto flotante para representar números no enteros.
Sin embargo, los números de coma flotante son muy difíciles de usar para estas pequeñas computadoras en comparación con los enteros. ¡Entonces no lo hacen! Solo usan enteros para hacer todos los cálculos necesarios, y con muy pocas excepciones, todos están limitados a enteros de 8 bits. Un entero de 8 bits puede almacenar un valor de 0-255. Por lo tanto, cualquier cálculo (a) no será más preciso que un número entero (por ejemplo: dividir 8 entre 5 producirá 1 en lugar de 1.6 porque no puede representar números detrás del punto decimal) y (b) no puede exceder el rango de 0 -255.
Es aún peor: la mayoría de las computadoras de bicicleta ni siquiera pueden hacer matemáticas. Bueno, generalmente pueden sumar y multiplicar, pero no pueden dividir ni restar. En realidad, son cosas súper básicas, porque tienen que sobrevivir durante un par de años en el jugo en una sola celda.
Entonces, ¿cómo afecta esto al cálculo de la distancia, la velocidad y, finalmente, la velocidad promedio? Bueno, una computadora para bicicleta tiene solo 2 entradas: un temporizador muy preciso (que generalmente genera entre 1024 y 32768 pulsos por segundo) y una entrada de pulso desde un imán en su rueda. También sabe cuánto mide la circunferencia de su rueda. Entonces, para calcular su velocidad actual, hace lo siguiente:
Entonces, digamos que el temporizador funciona a 1024Hz y la rueda de su bicicleta gira a aproximadamente 5 rotaciones por segundo (36 km / ho 22 mph). Esto significaría que contaría el piso (1024/5) = 204 tics de temporizador por rotación de la rueda. En el pequeño procesador hay una tabla de búsqueda que relaciona esos 204 ticks con el tamaño específico de la rueda (que programó) y luego encuentra la velocidad que debe mostrarse en su pantalla. En realidad no lo calcula, porque es muy difícil para ese procesador hacer tales cosas. Además, esta tabla solo necesita ser un par de tamaños de rueda por unas pocas decenas o tal vez 100 valores de tiempo diferentes. Por ejemplo, una tabla de 5x100, bastante pequeña en términos de computadora.
La distancia es muy fácil de calcular: simplemente multiplique la circunferencia de la rueda por el número de rotaciones. Luego use otra tabla de búsqueda para relacionar esto con algo visualizable. Esto también solo requiere una pequeña tabla de búsqueda.
Sin embargo, la velocidad promedio no es algo que se pueda poner en una tabla de búsqueda de tamaño razonable. Hay demasiados valores posibles de distancia de viaje y tiempo de viaje que pueden ocurrir. Entonces, estas computadoras tienen que hacer trampa de alguna manera: o necesitan usar las capacidades matemáticas muy limitadas que tienen, o necesitan redondear algunas cosas o buscar el valor promedio más cercano. Esto es exactamente lo que está haciendo la computadora de su bicicleta.
Hay computadoras para bicicletas más avanzadas, especialmente hoy en día. Con diseños más antiguos, realmente se podía ver esta naturaleza de operación de la tabla de búsqueda: podría mostrar, por ejemplo, 22.3 km / hy 22.5, pero no 22.4. ¿Por qué? No estaba en la tabla de búsqueda. No importa cuánto intente conducir exactamente a 22.4 km / h, en realidad nunca mostrará este valor. Además, los diseños más antiguos solo le permitirían ingresar el tamaño en pulgadas de sus neumáticos, no la circunferencia precisa real en mm.
Hoy en día, en realidad hay computadoras para bicicletas que pueden manejar operaciones matemáticas más "complejas" y usar mejores representaciones de números (enteros de 16 bits o números de coma flotante) para obtener una mejor estimación de su velocidad y promedios.
fuente
Sospecho que el cálculo de la velocidad promedio se realiza con una precisión numérica insuficiente, por todas las razones detalladas en la otra respuesta (esencialmente, haciendo que la batería dure mucho tiempo)
Por ejemplo, supongamos que la distancia se almacena en metros y el tiempo en segundos, por ejemplo:
Si quisiera calcular la velocidad promedio sin usar cálculos de punto flotante, mi primer intento podría ser este:
..esto daría como resultado un valor de 15,48 km / h. Es probable que un dispositivo integrado realice el cálculo de manera bastante diferente y tenga diferentes limitaciones, pero esto muestra el problema general
Comparado esto con el equivalente de coma flotante:
(nota: los cálculos anteriores se realizaron en Python 3,
/
es la división flotante,//
es la división entera).fuente
Creo que la clave radica en la corta distancia que recorre, ya que hay dos puntos de incertidumbre en la forma en que funciona su computadora que tienen un gran impacto si las distancias son cortas pero más o menos desaparecen para distancias más largas.
Primero veamos cómo funciona una computadora de bicicleta digital: básicamente hace dos cosas, ya que cuenta con qué frecuencia el pequeño imán de radio ha pasado su sensor, dándole (con conocimiento de la circunferencia de la rueda) la distancia recorrida, y mide el tiempo entre dos pasajes magnéticos para obtener la velocidad. Si el imán acaba de pasar, la computadora está esperando la próxima vez que pase, lo que significa que la computadora está sorda y ciega durante este tiempo.
Si detiene su bicicleta ahora, hay una situación incómoda para su computadora, ya que espera el próximo impulso del imán que pasa, que nunca llegará ya que la rueda ya no gira. Puede ver este momento en el temporizador de viaje de su computadora, ya que los segundos del cronómetro siguen contando durante aproximadamente 3 a 5 segundos, aunque ya está de pie. Este es el momento en que la computadora espera a que llegue el próximo impulso, pero no recibe ninguno.
Aquí se pone un poco especulativo: supongo que su computadora tiene básicamente dos contadores, uno para el número de rotaciones de las ruedas y otro para el tiempo necesario para esas rotaciones, mientras que el tiempo de viaje se ejecuta en un contador separado que es solo para la salida de tiempo pero no se toma en los cálculos. La diferencia entre el contador de tiempo de rotación (RTC) y el contador de cronómetro (SWC) es que el RTC contiene solo el tiempo en que la computadora puede decir con seguridad que la rueda estaba girando, mientras que el SWC también contiene el tiempo donde la computadora estaba esperando si la rueda sigue girando Como las computadoras de ciclismo se construyen principalmente para viajes más largos (donde normalmente no se detiene cada cinco minutos), esta discrepancia no tendrá un gran efecto allí, pero en su caso con un tiempo de medición muy corto, podría tener un gran efecto.
Si calcula a partir del promedio que tiene su computadora al tiempo que debería haber usado, obtendrá 6 min 12 seg, que es una diferencia de 17 segundos con respecto al tiempo de viaje de su computadora. Escribes algo sobre "entrenamiento de intervalos forzado por semáforos", así que supongo que tienes que detenerte en algunos de ellos. Si ahora asume que su tiempo de viaje contará entre 3 y 5 segundos adicionales en cada parada, solo tomará entre 3 y 5 paradas para obtener la diferencia horaria.
fuente