Reparo sistemas de dirección eléctrica para coches, especialmente Fiat, Alfa y Lancya (fabricantes de Delphi), y necesito hacer alguna herramienta para probar estas reparaciones. Me refiero a encenderlo, por ejemplo.
He investigado durante algún tiempo, y me di cuenta de que necesito que las señales del bus CAN sean simuladas como las eps ECU está recibiendo paquetes de ignición de la CAN. Aquí voy...
Necesito saber cómo puedo leer y enviar paquetes CAN desde/hacia el autobús. Quiero decir, qué herramienta o cualquier otra cosa. He estado intentando con Arduino Uno + a SparkFun CAN BUS Shield pero no obtengo ningún resultado. Cuando todo está conectado, mi consola serial no está olfateando ningún paquete. Creo que he conectado todo correctamente, y he probado diferentes velocidades de bits, he cambiado las placas y el escudo de Arduino, he probado muchos ejemplos diferentes. He invertido muchas horas sin ningún beneficio... Estaba usando SEAT Ibiza 2010 para I+D, conectado CAN-H y CAN-L en el OBD puerto, en las líneas CAN de la radio, etc...
Cualquier idea de lo que podría estar mal es bienvenida, así como un nuevo método para hacer mi proyecto...
Información:
ACTUALIZACIÓN 2 (28/12/2014): Usé un multímetro porque no tengo un osciloscopio. La lectura de los voltajes siempre me da 2.5V en CAN-H y CAN-L, obtengo estas lecturas en el CAN-H CAN-L de Arduino y en el puerto OBD2 (Pines 6 y 14)
ACTUALIZACIÓN 3 (29/12/2014): Estoy planeando cambiar a algún lenguaje de programación con una interfaz CAN, cualquier sugerencia es bienvenida, ¡gracias!
ACTUALIZACIÓN 3.1 (30/12/2014): Definitivamente, estoy tomando otra forma de hacer esto, estoy esperando que Kvaser y ECOM me respondan en sus correos de apoyo. De esa manera podremos saber si sus herramientas encajan con mi proyecto. Os mantendré informados, ¡gracias por toda la ayuda! :)
0 votos
Mi mejor suposición es que tu receptor CAN está recibiendo los paquetes de transmisión. Pero como su identificador no coincide con la dirección de destino, su receptor CAN simplemente descarta el paquete. Usted podría estar buscando algo como esto ebay.com/itm/
0 votos
@Nick Alexeev pero como creo que el código utilizado es para olfatear todos los datos en itinerancia en estas líneas, ¿no debería mostrar algo? X_X De todas formas, ya he pedido el ELM, pero no sé si puedo enviar paquetes HEX personalizados al CAN Bus para mi propósito de simular señales ¡Gracias por su atención! :)
0 votos
¿Qué es el "I+D"?
0 votos
Con un osciloscopio se puede determinar la tasa de bits y si las señales del bus CAN están realmente presentes en la pantalla del bus CAN.
0 votos
¿Puede publicar el código que está utilizando?
0 votos
¿Puedes proporcionar un enlace al escudo de bus CAN de SparkFun (actualizando tu pregunta)?
0 votos
Pregunta Lectura del bus CAN de un Chevrolet Cruze con un Arduino Uno es muy similar a la tuya (Arduino Uno con un escudo de bus CAN de SparkFun). Es posible que desee explorar la información en ella, experimentar, y volver aquí (actualizar su pregunta con la nueva información encontrada). Eres bienvenido a enviarme un ping por correo electrónico o Twitter cuando hayas terminado, para que podamos obtener una respuesta adecuada a tu pregunta (en lugar de sólo sugerir la compra de nuevos equipos costosos - no veo ninguna razón por la que esto no debería funcionar, al menos no parcialmente).
0 votos
@Peter Mortensen I+D es "Investigación y desarrollo", actualizaré el post con la url de lo que utilicé, los códigos están en el rar que subí a dropbox, los probé todos, pero sin éxito. Sobre la pregunta del chevrolet cruze, lo leí, pero nada de eso resuelve mis problemas... no puedo gastar tanto en un equipo nuevo, y mi principal interés después de mi trabajo es aprender sobre el can bus, con arduino y sparkfun debería llegar a leer al menos los mensajes... ¿algún consejo? si necesitas alguna información solo dímelo y te puedo proporcionar cualquier cosa, un video o cualquier otra cosa.
0 votos
Consejo: utilice un osciloscopio para leer la tasa de bits y algunos COBIDs (no creo que los COBIDs se vean afectados por relleno de bits ). Tanto CAN-H como CAN-L deben tener señales con respecto a tierra. Haz la medición lo más cerca posible del transceptor CAN en el Arduino. Si no tienes acceso a un osciloscopio, utiliza un voltímetro para seguir las señales del bus CAN del coche al escudo del Arduino - tanto CAN-H como CAN-L tendrán un voltaje característico (promedio). Publica los resultados actualizando la pregunta.
0 votos
Si encuentra un COBID, puede utilizarlo en el software - dependiendo del software, puede requerir que utilice un COBID particular. Incluso si quieres mirar todos los COBIDs, este es un paso importante para establecer si algún mensaje puede ser recibido.
0 votos
Los 2,5V tanto en CAN-H como en CAN-L pueden indicar que no hay tráfico (o muy poco tráfico).
0 votos
¿Cuál es la tensión (exacta) si se mide entre CAN-H y CAN-L? (Publica el resultado actualizando la pregunta).
0 votos
En los ejemplos que he seguido, la gente recibía un montón de mensajes con CAN ID y bytes HEX. Por cierto, ¿a qué te refieres con COBID?
0 votos
Todavía no lo sabemos - estamos en modo de resolución de problemas en este momento. Nos esperar que haya tráfico en el bus y, por tanto, la diferencia de tensión (media) entre CAN-H y CAN-L debe ser algo diferente de 0 voltios. Cuánto depende del tráfico. También estamos casi a ciegas sin un osciloscopio. (COBID es la primera parte de un mensaje de bus CAN. A menudo es de 11 bits o 29 bits ( J1939 ) largo).
0 votos
Podría preguntarle a un amigo que tenga un osciloscopio, ¿qué necesito comprobar con eso? @Peter Mortensen
0 votos
En primer lugar, hay que determinar el tiempo de los bits. Se trata del menor tiempo entre transiciones (de baja a alta/de alta a baja): los tiempos de transición son un múltiplo del tiempo de bit. Por ejemplo, si el tiempo de bit es de 1,5 µs, el tiempo entre transiciones será de 1,5 µs, 3,0 µs, 4,5 µs, 6,0 µs, 7,5 µs, etc. Mida entre CAN-L y CAN-H (requiere tierra flotante) y dispare en el mismo canal (por ejemplo, CH1) con un nivel de disparo de 0,5 V, dispare en modo DC (el modo AC también servirá si el osciloscopio no es defectuoso ). Intenta determinar el tiempo de los bits con la mayor precisión posible.
0 votos
En segundo lugar, lea los bits de un mensaje completo e intente darle sentido (el relleno de bits lo complica) - por ejemplo, se utilizan COBIDs de 11 o 29 bits. Probablemente sea más fácil hacerlo para los mensajes más cortos.
0 votos
No pude conseguir un osciloscopio de mi amigo, ¿algún otro consejo @PeterMortensen? Gracias por tu ayuda
0 votos
Estoy recibiendo 3,7V y 1,3V en CAN-High y CAN-Low en las líneas CAN de la radio, ¿podría estar protegido el puerto OBD2? Si es así, ¿cómo puedo evitarlo?
0 votos
(De todos modos, no se recibe ninguna información con las líneas de la lata de radio)
0 votos
Creo que deberías perseguir las señales del bus CAN a la radio primero. Necesitas encontrar la tasa de bits. Usted podría utilizar un estándar Disparador de Schmitt con umbrales de tensión de 2,5 V y 2,9 V. Introduce la salida del disparador Schmitt en una entrada digital del Arduino. Escribe un programa para encontrar la temporización de los bits. Por ejemplo, configure un temporizador/contador con una resolución de tiempo suficientemente alta y espere las transiciones. Cuando haya una transición, envía el valor del temporizador/contador a la salida estándar para que aparezca en el terminal del Arduino IDE.
0 votos
- con't. Debe haber una diferencia de tiempo mínima característica, correspondiente al tiempo de bit (repetido muchas veces). (En la salida, haga que el programa sólo emita valores para las primeras, digamos, 20 transiciones).