jueves, 11 de agosto de 2011

Mazda 3, pruebas de diagnosis OBD


Pues como ya veis el título no acompaña mucho a la transmisión inalámbrica de las señales del can bus, que es con lo que os dije que iba a continuar en mi anterior post y esto es porque hace como 1 semana que tengo acceso a un Mazda 3 del año 2007 con terminal de diagnosis OBD por medio de can BUS (justo ahora que llevaba 2 meses buscando algún coche de estas características y había desistido de seguir buscando...). 
Con esto se me ha presentado una nueva vía para conocer mejor el bus CAN, sus mensajes y su funcionamiento, así que he decidido dejar un poco de lado el tema de la transmisión inalámbrica (ya que además me esta causando innumerables problemas el intentar adaptar la librería de SECUduino a el hardware que estoy utilizando para la transmisión, lo que supongo que me llevará a realizar otro intensivo estudio de la librería, el MCP2551 y el MCP2515....para intentar adaptarla...ya que me encuentro algo perdido ante la compresión de la librería...), y ponerme manos a la obra a intentar sacar parámetros del coche por medio del terminal de OBD.
Lo primero de todo que hice fue comprobar que funcionaba por CAN BUS, para ellos comprobé que entre los pines 6 y 14 del conector había una resistencia de 60 Ω....y ¡allí estaban!.
Para el análisis del bus, dispongo de un Arduino Uno que ya adquirí hace un tiempo, junto al shield y la librería de SECUduino. Únicamente he tenido que adquirir un conector de OBD a db9 para así "engancharme" al coche. En esta pagina podéis adquirirlo:
http://www.cooking-hacks.com/


Tras esto gracias (de nuevo xD) a SECUduino, utilice el código usado en uno de los proyectos que se encuentran en su pagina, para poder intentar sacar las rpm del coche, y así comprobar que el vehículo responde a los PID estantar que podemos encontrar en la wikipedia.


Y funcionó perfectamente, aquí os dejo con algunas imágenes y un vídeo del programa sacando los valores de las rpm:

Tras esto me puse a realizar mas códigos para leer otros valores. 

Primero hice un sencillo programa en el que simplemente leía lo que recibía del terminal OBD, según tengo entendido trabaja de manera pedido-respuesta, por lo que no detectaba ningún mensaje, aunque comento esto porque nada mas cargar el programa, el coche (encendido) realizo un anómalo aumento de las revoluciones y dejo de responder a cualquier tipo de orden que realizara externamente (pisar el acelerador para aumentar las revoluciones...). No se cual puede ser la razón, pero me ha parecido como si el coche se quejara porque lo estoy intentando analizar.....:)

A parte de esto, he probado varios códigos (sacando los PID de la wikipedia) y algunos de ellos, los de los primeros PID que encontramos en la tabla de la wikipedia como 0C-0D-11 han funcionado perfectamente (velocidad, posición del acelerador, rpm ) mientras que otros con PID como 45-46-51-5B-67 (tipo de combustible, temperatura ambiente, temperatura refrigerante...), no funcionaban o recibían mensajes con los 2 últimos bytes del mensaje como […..FF-64] en intervalos de tiempos largos y no iguales. Ahora voy a intentar analizar la causa de que algunos PIDs funcionen y otros no, intentando modificar el mensaje para ver todos los mensajes que manda el coche tras la petición y probando otros PIDs nuevos. Os mantendré informados por si saco alguna conclusión relevante de los PIDs.
De aquí en adelante seguiré intentando conseguir el máximo numero de parámetros del Mazda y comenzare con la librería, haber si puedo hacer algo...


Un saludo!!!

No hay comentarios:

Publicar un comentario