¿Puedo reasignar una ECU de coche/bicicleta usando el bus CAN?

Estoy pensando en usar algo como esto para conectar un Arduino a una unidad de control de motor de motocicleta (ECU): Arduino CAN-Bus Shield con soporte de tarjeta uSD .

Nunca hice algo como esto; Usando el bus CAN, ¿puedo leer solo algunos parámetros de diagnóstico en la ECU o también puedo reasignar algunos parámetros de la ECU?

Puede cambiar algunos parámetros, ¡pero no todos!

Respuestas (3)

Es posible que puedas hacerlo, pero definitivamente no será fácil.

Un problema es que la mayoría de los vehículos no tienen uno, sino al menos tres buses CAN:

  • Bus de alta criticidad
    • Motor/tren de fuerza
    • Frenado
    • ESP/ABS
    • bolsas de aire
    • Todas las demás cosas críticas de seguridad que necesitan baja latencia y alta prioridad
  • Autobús de conveniencia/equipo de mediana importancia
    • Ventilación / aire acondicionado / calefacción
    • Iluminación (interior, a veces también exterior)
    • Información del tablero (valores de cuadrante, pantallas, indicadores, etc.)
    • Todas las demás características de conveniencia en su automóvil
  • Autobús de control de entretenimiento
    • Control de radio/reproductor de CD
    • Sistemas de entretenimiento a bordo
    • Sistemas de navegación
    • Kits de integración de teléfono para automóvil (silenciar la radio durante una llamada, etc.)

Su millaje puede variar, pero la mayoría de los fabricantes utilizan este tipo de subdivisión.

Su problema es que el conector ODB-II instalado en los automóviles/bicicletas modernos no está conectado directamente a uno de estos autobuses. En cambio, generalmente está conectado a un dispositivo de "puerta de enlace" aislado ópticamente. Permite que el equipo de diagnóstico consulte algunos valores básicos y obtenga una respuesta. Por lo tanto, proporciona una capa de abstracción, de modo que todos los vehículos pueden diagnosticarse utilizando el mismo dispositivo de diagnóstico genérico.

Algunas puertas de enlace tienen un método para pasar al "modo de servicio", que luego le permite enviar mensajes sin procesar directamente a uno de los buses CAN y ver lo que ya está allí. Sin embargo, eso ni siquiera es posible en todos los modelos, y siempre está bloqueado con algún tipo de código PIN específico del vehículo (que debe olfatear en el garaje o descifrar usando la fuerza bruta).

Una alternativa es conectar su escudo Arduino directamente a uno de los buses CAN. Tendrá que encontrar los cables en el compartimiento del motor o en otro lugar y empalmarlos en su propio conector. No tome esto a la ligera; Si el bus CAN de gestión del motor falla mientras conduce a alta velocidad, se encuentra en peligro real e inmediato . No solo se detiene el motor, sino que, según el nivel de automatización y control electrónico que tenga su automóvil, todos los tipos de sistemas fallan en diversos grados. Dirección asistida, asistente de frenado, ESP, ABS, luces de freno, control del acelerador, bolsas de aire... Todo puede dejar de funcionar.

Si realmente desea poder configurar la ECU de administración del motor , eso es completamente diferente del diagnóstico simple. Hablando de manera realista, no podrá aplicar ingeniería inversa a ese proceso durante su vida, a menos que tenga algún tipo de conocimiento interno. Como mínimo, necesitaría tener acceso a una herramienta de configuración/programación oficial del fabricante del vehículo que pueda tomar prestada para rastrear los mensajes CAN/ODB que envía y recibe. Aún así, tendría que invertir meses de trabajo (y algunos autos que explotan en el proceso) solo para poder cambiar algunos parámetros.

Si persiste en conectarse directamente al bus CAN de gestión del motor, utilice siempre un interruptor de desconexión de batería estilo coche de carreras montado a su alcance directo. Cuando las cosas van mal, siempre debería poder interrumpir la alimentación.

En resumen: será mejor que compre equipos específicos del fabricante (de terceros). Ese es el tipo de equipo que los servicios profesionales de ajuste de chips también tienden a usar, generalmente con gran éxito.

Por ejemplo, para autos Renault como el mío, recomendaría comprar un Renault CLIP. Esa es la herramienta que utilizan los concesionarios de Renault para diagnosticar y configurar las ECU y viene con software y documentación completos.

Por último, pero no menos importante, tenga en cuenta que a menudo es ilegal aumentar la velocidad máxima y/o la potencia de salida de su vehículo sin autorización o registro con la autoridad pertinente.

Para su referencia: gran parte de mi conocimiento práctico de la experimentación con bus CAN se obtuvo de este increíble hilo .

Algunos puedes, otros no, depende de la marca/modelo/año.

Sin embargo, el principal problema es saber lo que está haciendo en cuanto al motor: muy pocas personas son buenas para ajustar (y casi nadie puede hacerlo mejor que el fabricante) y si se equivoca, derretirá un pistón o lo acortará seriamente. la vida útil de su motor.

Una ruta diferente para ajustar es mirar un sistema como Megasquirt, es un ajuste retro de bricolaje y tiene una buena comunidad de soporte. Para una bicicleta hay una versión compacta llamada Microsquirt.

Te explico la situación más detalladamente. Soy informático y estoy estudiando en Arduino en este momento. Tengo un amigo que es ingeniero mecánico y tiene una colaboración con un equipo de carreras de motos. Él sabe cuál es el parámetro que debe modificarse porque después de cada vuelta de calificación reasignan algunos parámetros de la ECU usando una computadora portátil. Como los parametros que hay que modificar son pocos y hay una formula matematica para calcularlos me pregunto si usando Arduino puedo implementar un sistema sencillo que funcione asi: 1) se conecta a la ECU 2) lee algun parametro de la ECU
3) Calcular el nuevo valor de algún parámetro 4) Actualizar este parámetro con los nuevos valores. Nada más.
Entonces, en teoría, si puede modificar estos parámetros de la ECU usando una computadora portátil, la ECU le permite cambiar los valores de estos parámetros. Lo que sabría si usando el CAN BUS solo puedo leer o también actualizar parámetros que en la ECU son modificables. Y en el caso concreto sabría si en tu opinión, usando Arduino (y un shield como el vinculado) puedo intentar modificar estos parámetros. TNX
@AndreaNobili AFAIK, debe estar usando algún software para modificar este parámetro desde su computadora portátil. En general, los fabricantes de motores proporcionan su software personalizado solo a través del cual puede cambiar los parámetros del motor. Por lo tanto, dudo que pueda hacer lo mismo con cualquier otro dispositivo. (Para su información, trabajo para un fabricante gigante de motores diésel y no permitimos que nadie modifique los valores... Tenemos encriptaciones en su lugar :)
Si la computadora portátil puede leerlo/modificarlo, el arduino también puede hacerlo. Solo necesita saber los comandos que se envían.
@JohnU Estoy de acuerdo... Pero la mayoría de las veces, los fabricantes de motores utilizan un protocolo propietario como una capa superior... Así que es un poco difícil de decodificar... Además, necesitará herramientas como CANalyzer, etc.

No recomiendo hacer esto en un Arduino. Necesitarás años para terminar este proyecto. Arduino es el camino equivocado. ¿Por qué deberías reinventar la rueda?

Estás buscando HUD ECU Hacker .

Si su ECU es compatible con los comandos OBD2 estándar a través del bus CAN utilizando el protocolo ISO 15765 y los ID de CAN estándar, simplemente conecte HUD ECU Hacker y vea los códigos de falla y los parámetros de su ECU.

HUD ECU Hacker también tiene un emulador de ECU incorporado y se puede adaptar a otros modelos de ECU con archivos XML.

También puede mostrar todo el tráfico en el bus CAN en tiempo real y le permite establecer filtros para rangos de ID específicos. En el terminal CAN Raw incorporado, puede enviar manualmente comandos de bus CAN y ver las respuestas.

HUD ECU Hacker es un software de caridad , lo que significa que puede usarlo sin restricciones, pero se le pide que haga una donación a una ONG de su elección si usa el programa con frecuencia.

HUD ECU Hacker se ejecuta en Windows XP, 7, 8, 10, 11 (32 y 64 bits).

Puede usar un adaptador J2534 chino barato ($ 30 - $ 40 USD) para conectarse al bus CAN. Estos adaptadores se conectan a cualquier computadora a través de USB. Lea el archivo de ayuda muy detallado sobre los diferentes tipos de adaptadores. HUD ECU Hacker también puede instalar los controladores que necesita para todos los adaptadores compatibles.

A continuación, puede ver a HUD ECU Hacker comunicándose con una ECU DENI E1700. Todo el tráfico de datos se puede registrar en un archivo de registro HTML .

Descarga: https://netcult.ch/elmue/HUD%20ECU%20Hacker

HUD ECU Hacker CAN Bus Transferencia de datos ECU