Go Down

Topic: CAN BUS: Red de Arduinos (Read 39 times) previous topic - next topic

Igor R

Feb 27, 2011, 08:34 pm Last Edit: Feb 27, 2011, 09:07 pm by Igor R Reason: 1
Hola,

Aunque en algún post ya he puesto la dirección de la web, este finde ya se ha ampliado un poco más, y ya empieza a estar más "presentable" para una presentación oficial...  ;)

En las últimas semanas hemos estado trabajando en este proyecto: http://secuduino.blogspot.com/
Se trata de un "brick" + librería para disponer de bus CAN en nuestros Arduinos. La idea de no usar shield, es para que sea compatible con todas las placas oficiales y no oficiales de Arduino.

La conexión se realiza mediante SPI a a la placa de tipo brick, siendo configurable el chip select y el pin de recepción de mensaje, para tener máxima flexibilidad si se está usando alguna otra shield/componente que necesite SPI.






Los primeros montajes de ejemplo de uso han sido:

HELLO WORLD!! (usando un MEGA y un Diecimila/UNO):
http://www.youtube.com/watch?v=3P4nZnrv9mM

ALARMA:
http://www.youtube.com/watch?v=f34TJ1MoNPc&feature=player_embedded

SERVO:
http://www.youtube.com/watch?v=fanymVjG4U4


En la página se puede encontrar más información, así como los programas, que resultan muy directos gracias a la librería.
Resulta más fácil de implementar una red CAN que una RS485, ya que el controlador hardware hace toda la tarea "sucia" por nosotros, como son los mensajes,timing,CRC,reglas,errores,.. En RS485 el usuario tiene que crearse todo ésto via soft, ya que sólo define la capa física.
La velocidad alcanzable es hasta de 1 Mbps.
En el FAQ de la página, se puede encontrar información muy útil acerca del bus CAN, que muchas veces es dificil de conseguir.
Se trata de un bus muy utilizado y muy estable para sistemas de control en "tiempo real". Las aplicaciones son domótica, control distribuido, automoción, automatización, alarmas,....

El próximo ejemplo será algun "hack" para el coche!!!   ]:D



Saludos




Igor R.








Sergegsx

Impresionante Igor !!!

Estoy deseando ver el hack para coche, cuando tenga tiempo (dentro de un mes) quiero ver si pudo conectar mi arduino UNO a mi Ford Focus y coger velocidad, consumo, rpms, etc...

estoy muy interesado en tu trabajo asi que estare atento.

No tengo mucha experiencia con Arduino asi que espero poder conseguirlo gracias a tus manuales.
* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Igor R

#2
Feb 27, 2011, 10:29 pm Last Edit: Feb 27, 2011, 10:35 pm by Igor R Reason: 1
Igual para el Focus tienes suerte y puedes sacar los datos via CAN por el OBD.... :D
Los del grupo Volkswagen, la CAN del OBD esta protegida y hay que habilitarla mediante la la linea K (otro protocolo). Pero si tienes suerte, igual para tu coche es inmediato!!!
Tienes que hacer un poco de investigación.....;)

http://www.aim-sportline.com/download/ecu/stock/ford/Ford_Focus_OBDII_connection_100_eng.pdf

jnogues

Hola Igor.

Es impresionante tu trabajo. Gracias por compartirlo. Acabo de empezar con Arduino
para realizar una red domótica educativa con RS485, pero me has convencido para
que me plantee CAN. ¿Hago bien?

Jaume N.

Igor R

#4
Feb 27, 2011, 10:51 pm Last Edit: Feb 27, 2011, 10:53 pm by Igor R Reason: 1
Hola Jaume,

El RS485 resulta casi inmediato y fácil de implementar con Arduino, ya que tan sólo hay que añadirle el transceiver y usar la UART del micro.
Por otro lado, viene la dificultad con el soft, ya que te tienes que crear todo un protocolo con mensaje, reglas, checksum o crc, ...
El RS485 sólo define la capa física (señales), y todo lo demás es el diseñador. En el ambito industrial, Profibus, Modbus, DMX,... son algunos de los protocolos que se usan sobre RS485.

Con CAN bus, esto es transparente para el usuario, ya que el controlador hardware lo hace por ti. Y te aseguras de tener un protocolo seguro, que los mensajes se entreguen, robusto, y fácil de implementar, ya que sólo tienes que preocuparte del ID y de los bytes de datos, todo lo demás es transparente.
Como Arduino no lo tiene integrado, necesitas un controlador hardware externo + transceiver, por lo que hace un poco más "dificil" el hardware, pero muchísimo más sencillo el soft.

Ahora ya, elección de cada uno..... Yo me quedo con CAN!!  ;)


Salu2



Igor R.

Go Up