Mensaje CAN BUS 0x0D0

Dirección y aceleraciones del toyobaru.

El mensaje con CAN ID 0x0D0 es el segundo mensaje más prioritario en el bus CAN del toyobaru y se presenta con una frecuencia de 50 Hz., la segunda más elevada después de los cuatro mensajes con frecuencia de 100 Hz.

Con el vehículo detenido, se aprecia que únicamente se presenta actividad en los dos primeros bytes y sólo en el caso en el que se accione el volante. El análisis de esos dos primeros bytes ante el movimiento del volante permite deducir que el byte D1 actua como más significativo.

Si representamos, considerando un valor con signo, el dato compuesto por los bytes D1 y D0, actuando D1 como más significativo, que parece modificarse con el movimiento del volante, y si lo comparamos con el ángulo de giro del volante que obtenemos del CAN ID 0x018 nos encontramos con la primera sorpresa.

¡ Son simétricos !

Comparativa mensaje 0x018 bytes D0D1 y mensaje 0x0D0 bytes D1D0

Es decir, a primera vista, son los mismos datos, pero con el signo cambiado.

Un análisis más detallado desvela que existe una pequeña diferencia entre los dos valores de unas pocas unidades. Si recordamos el análisis de la trama con CAN ID 0x018, las unidades eran décimas de grado. No se exactamente a que obedece esa pequeña diferencia, pero es relevante que las dos tramas más prioritarias del bus CAN contengan el ángulo de dirección. Señal evidente de la importancia que tiene este valor en el funcionamiento del vehículo.

Con el vehículo detenido no se observa más actividad en la información que fluye por el CAN ID 0x0D0.

Sin embargo las cosas cambian en cuanto el vehículo se pone en marcha. La actividad se hace patente en los bytes D2, D3, D6 y D7. Los bytes D4 y D5 permanecen a cero y en todas las pruebas que he realizado no he visto aun un valor distinto a éste.

El análisis de los bytes D2 y D3, llevan rápidamente a la conclusión que D3 es el byte más significativo.

Representamos los valores y se empiezan a comparar con distintas gráficas conocidas (velocidad, rpm, ángulo de dirección, ...) con objeto de encontrar alguna relación que nos ayude a identificar que pueden representar estos datos.

Después de varias comparativas, la que más llama la atención es la comparativa con el giro del volante. Al igual que ocurría con el valor de la trama con CAN ID 0x018, tenemos que la información contenida en D3D2 invierte su signo de forma opuesta al giro del volante contenido en D1D0.

Pero en este caso, los valores que adopta no son proporcionales al giro del volante. Una comparativa más detallada parecen relacionar el aumento del valor D3D2 con un aumento de D1D0, pero también con un aumento de la velocidad (que como vimos, se obtiene del CAN ID 0x0D1).

Comparativa mensaje 0x0D0 bytes D1D0 y mensaje 0x0D0 bytes D3D2

Para confirmar este supuesto, realizamos una prueba que consiste en que el vehículo realice giros (en este caso a la izquierda).

Vemos en la siguiente figura

Comparativa mensaje 0x0D0 bytes D1D0 y mensaje 0x0D0 bytes D3D2 durante un giro

como el ángulo del volante (en morado), que se mide en en el eje de la izquierda, está ubicado durante la prueba en el entorno de los -1700 (unos 16º-18º, alcanzando los 19º en el segundo 32), mientras que el valor D3D2, que parte de 0 (eje de la derecha) crece conforme lo hace la velocidad, que se puede observar en la gráfica siguiente (obtenida a partir de los datos del CAN ID 0x0D1) y que muestra la velocidad en morado y la acción del freno en verde.,

Velocidad longitudinal y presión sobre el pedal del freno obtenidas de los bytes D1D0 y D2, respectivamente, del mensaje 0x0D1

Se observa también que el valor D3D2 decrece cuando también lo hace la velocidad.

Además, el máximo valor del valor D3D2 se alcanza con la máxima velocidad.

Todo ello me hizo pensar que estaba delante de la aceleración transversal del vehículo. Pero Timur, un usuario del foro www.ft86club.com, que también tiene afición por observar los datos que circulan por el bus CAN, opinaba que se trataba de la velocidad de guiñada. Argumentaba que en maniobras a baja velocidad, de aparcamiento, por ejemplo, se podrían observar valores altos en D3D2, aun siendo la velocidad muy baja.

Para despejar todas las dudas, decidí realizar varias pruebas de giro a radio constante y a distintas velocidades, dado que a radio constante la velocidad de guiñada es proporcional a la velocidad del vehículo, mientras que la aceleración lateral lo es al cuadrado de dicha velocidad.

Así que una mañana de domingo, aprovechando que es cuando menos tráfico hay, me dirigí a la apartada rotonda donde realizo las pruebas de giro a radio constante, para tomar datos y salir de dudas.

Y tras analizar los datos obtenidos, se veía claramente que los valores de D3D2 crecían de forma proporcional a la velocidad, mientras que los del byte D6, que Timur aseguraba que eran los de la aceleración lateral, lo hacían de forma cuadrática. No había duda, Timur estaba en lo cierto.

Los bytes D3D2 del mensaje 0x0D0 reflejan la velocidad de guiñada del vehículo y mientras que el byte D6, con signo (es decir, es negativo cuando el bit más significativo es uno) contiene la aceleración lateral.

Quedaba por obtener el factor de conversión entre la lectura del bus CAN y las unidades correspondientes, pero con todos los datos recogidos era tarea sencilla.

El factor de conversión para la velocidad de guiñada que he obtenido ha sido de 0,2722 º/s. (Timur por su parte obtiene un valor de conversión de 0,2865 º/s)

En cuanto al factor de conversión de la aceleración si coincidimos, pues a ambos obtenemos el mismo resultado: 0,2 m/s2.

Finalmente, había que identificar el valor D7, lo que fue realizado con relativa rapidez una vez consideramos que D7 también es un byte con signo. Cuando se está acostumbrado a ver diagramas de aceleración-velocidad y se ve un diagrama como este:

Velocidad longitudinal obtenida de los bytes D1D0 del mensaje 0x0D1 y aceleración longitudinal obtenida del byte 7 del mensaje 0x0D0.

rápidamente identifica que la línea verde es la aceleración longitudinal que da lugar a la velocidad (en morado). Y es que cuando la línea verde es mayor que cero, la línea morada crece, cuando la línea verde es cero, la línea morada se mantiene, y cuando la línea verde es menor que cero, la línea morada decrece. No ofrece ninguna duda.

Si además filtras las señales (con una media móvil),

Valores filtrados de la velocidad longitudinal obtenida de los bytes D1D0 del mensaje 0x0D1 y aceleración longitudinal obtenida del byte 7 del mensaje 0x0D0.

el efecto es todavía más claro.

Falta por obtener el factor de conversión del valor D7 a m/s2, pero conociendo la velocidad (que siempre podemos obtener de la trama con CAN ID 0x0D1) es relativamente sencillo.

Podemos aproximar el cálculo de la aceleración longitudinal como la diferencia de los valores de la velocidad entre la diferencia de tiempo. Con ese método, estimamos la aceleración longitudinal (tras un filtrado previo de la señal de la velocidad), y la comparamos con la aceleración medida en el bus CAN.

Si obtenemos la razón entre los valores de las dos señales, filtramos los valores extremos,  y obtenemos el valor promedio, resulta que cada metro por segundo cuadrado de velocidad se corresponde con 10 unidades de medida en el bus CAN, es decir, el factor de conversión es 0,1 m/s2.

Conociendo los dos componentes de la aceleración, y una vez los hemos convertido a m/s2, podremos obtener el valor absoluto de la aceleración del vehículo como la raíz cuadrada de la suma de cada aceleración (transversal y longitudinal) al cuadrado.

Añadir un comentario

El código HTML se muestra como texto y las direcciones web se transforman automáticamente.

Page top