4 votos

Simulación de bus CAN (propósito automovilístico) - probado Arduino y SparkFun

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:

ARDUINO AND SPARKFUN SHIELD AND SERIAL CONSOLE

Bibliotecas utilizadas

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"?

2voto

Paghalaya Puntos 31

El Arduino CAN shield es muy bueno si quieres construir un ordenador embebido para jugar con CAN. Sin embargo, si he entendido bien, estás construyendo una herramienta única para tu uso personal (o simplemente vas a utilizar una herramienta estándar si existe por el precio adecuado). Por esta razón, te insto a considerar la posibilidad de escribir software para PC en lugar de software embebido para interactuar con las interfaces de hardware CAN existentes y de bajo coste.

Charlie Miller y Chris Valasek usaron esta llamada Herramienta ECOM y escribió un software que interactúa con él. La herramienta ECOM parece tener una API y un controlador de ejemplo. Su libro blanco y software de hacking de coches dará un buen punto de partida para interconectar un PC con un coche. Softing también fabrica hardware de interfaz PC CAN, pero tengo problemas para acceder a su sitio web en este momento, así que no lo enlazaré.

También hay varias herramientas de software comerciales completas para analizar y simular CAN en un PC. La canoa de Vector es una herramienta muy conocida (y cara) para este fin.

0 votos

Hola @downbeat, en primer lugar perdón por no contestar, no vi tu respuesta. ¿Qué interfaz específica (si es barata, mejor :P, si no, la necesito de todos modos) puedo utilizar para la interfaz con el coche con mi IDE? ¿Qué lenguaje utilizar? Sé java, un poco de C++, cualquier información o ejemplos para ello sería muy apreciado.

0 votos

No tengo la reputación para comentar el intercambio de pilas de EE. Lo más probable es que haya algún tipo de controlador suministrado con cualquier tipo de herramienta de bajo coste. La herramienta ECOM que mencioné es $180. That ELM327 is $ 7-$21. Cualquiera de ellos requerirá una cierta cantidad de programación. Parece que ese dispositivo ELM utiliza un conjunto de comandos AT sobre RS232. Yo me interconectaría con eso usando Python, pero debería ser bastante simple una vez que usted consiga la caída del dispositivo.

0 votos

Hace poco encontré el USB2CAN ( 8devices.com/usb2can ), que es aún más barato, vendiéndose a 65 dólares en el momento de escribir este artículo [ shop.8devices.com/index.php?route=producto/ . Lo he utilizado en Linux, pero no en Windows. No sé qué tan rico es el software incluido, pero ciertamente puedes escribir tus propios scripts para interactuar con el controlador directamente. En Linux, hay algunas herramientas CAN preexistentes como cansend, candump, cangen y canplayer.

1voto

Al pacino Puntos 415

Si está dispuesto a comprar algo de la estantería por unos cientos de dólares, los productos Leaf de Kvaser son bastante fáciles de usar. Permiten enviar secuencias pregrabadas de paquetes y monitorizar el bus. Usted puede conseguir uno con un conector OBD-2 si eso es lo que usted necesita.

Construir tu propio equipo de pruebas está bien para un proyecto personal, pero si vas a ganar dinero con estas reparaciones, probablemente sea mejor empezar con algo que sepas que es fiable.

0 votos

gracias por los consejos Adam! ¿podrías dejarme un enlace? ¡Preferiría hacer el mío propio ya que no debería ser muy difícil, así que más tarde puedo mejorar mi herramienta para mis nuevas necesidades, saludos!

1 votos

Aquí hay un enlace al modelo de gama baja: kvaser.com/productos/kvaser-leaf-light-v2

0voto

Felix Puntos 91

Después de haber conseguido obtener números de un bus CAN con un controlador embebido, creo que el mayor problema que estás experimentando es que los ejemplos de los vendedores no inicializan correctamente los registros del controlador para los cuantos CAN y el tiempo de muestreo.

El cristal de 16 MHz frena los esfuerzos de los populares escudos CAN SparkFun y el uso de Seeeed. Entonces el Arduino de baja velocidad no es muy adecuado para mover datos en serie. Ninguno de los ejemplos de código en Internet funciona porque son todos ejemplos enlatados para 1 Mbit/s...

Algunos microcontroladores tienen controladores CAN incorporados (lamentablemente, casi ninguno tiene transceptores). He utilizado un ChipKIT Max32 y un MCP2551 IC a través de breadboard en el circuito de abajo. Además, me conecté a los transceptores de los escudos CAN de SparkFun y Seeed para obtener datos Tx/Rx. El Max32 del ChipKIT tiene dos controladores CAN y un reloj de CPU de 80 MHz, por lo que es muy adecuado para la experimentación CAN. Utilizando una calculadora en línea, pude configurar el controlador del PIC32 en el primer intento.

He suspendido mi desarrollo en el trabajo de CAN para otros proyectos, pero un afiliado ha engatusado a un Arduino Uno con escudos CAN para que lea de un bus de 500 kbit/s. Miré el código que recientemente compartió conmigo, pero no pude encontrar cómo se estableció la sincronización del controlador MCP2515 o cómo difiere del código de ejemplo.

La siguiente placa de desarrollo que voy a probar es la de Ti Connected LaunchPad TM4C123GXL. Tiene controladores CAN, USB OTG, muchas E/S y cuesta 13 dólares.

Enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X