Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme

TEMA: Comunicación CAN entre arduinos

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1390

Hola José Luis, gracias por la bienvenida, un gusto conocerte y yo también espero que pueda aportar algo útil para Uds, creo que yo también aprenderé de Uds, debo decir que del can bus no se casi nada, he leído lo que sugirió Dea, muy rápidamente y para estar en tema.

Espero que DEA pueda solucionar su problema familiar así retoma el proyecto con ganas, se que eso es lo importante.

Ayer hablé un poco del RS485, pero no sé cuáles son los requerimientos del proyecto, se que quieren comunicar dos micros (arduinos), el CAN es útil en el ámbito automotriz, desconozco si se usa en otro ámbito, creo que existen muchas formas más económicas de hacerlo (ttl, uart, I²C,SPI, etc), pero si lo que se desea es aprender a usar el periférico de CAN es una buena escusa para aprender algo nuevo.

Yo al programar en assembler ya lo tengo más que solucionado y efectivamente probado, lo uso en control de accesos, fabricó el lector wiegand 26, el controlador (Nodo esclavo) y el soft de la PC (Máster), el soft lo programe en VB6, uso mí propio protocolo que definí hace 20 años atrás y anda de maravillas, tengo una clínica médica que usa esto con un server corriendo mí soft y 115 nodos esclavos, se comunican a 115kbaud que es más que suficiente para el sistema, todo está cableado x TCP para los pisos (conversor TCP-> RS485) y en cada piso hay un bus RS485 que une físicamente los controles de acceso.

Otro tema, mí osciloscopio comprado hace poco, tiene decodificador de protocolos Uart, I²C,Spi y CAN bus, quizás aprenda a usarlo ya que no he tenido tiempo de estudiarlo, solo estoy usando lo básico.

Saludos a todos y espero que estén bien.
El siguiente usuario dijo gracias: asesorplaza1

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1391

Bien venido Horacio.

la idea de DEA de la comunicación a través de Can Bus, surgió de mi proyecto del ROV

www.cambatronics.com/foro/index.php/mont...lce-con-mando-de-ps2

ya que entre otras cosas pretendo que se comuniquen dos Arduinos a la mayor distancia posible (100 metros), y por que no a la mayor velocidad posible, por cable de red, y que el Esclavo, que es el que esta dentro del vehículo, me controle unos sensores, y me mande esas lecturas a otro Arduino, el Maestro, que esta en el puesto de control donde estoy conduciendo el vehículo, mira el tema desde el principio y veras la idea, de momento estoy comunicándome con Bus I2C, y encima de la mesa funciona bastante bien, pero como todo seguro que se puede mejorar, para eso esta el foro, para dar ideas y mejorar los proyectos

un saludo.
El siguiente usuario dijo gracias: Tacho57

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Última Edición: por asesorplaza1.

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1392

Efectivamwnre en los coches es donde mas se esta utilizando el cam bus, pero no solo lo podemos encontrar ahí. Yo en la industria lo he encontrado en varios sitios. Obviamente se pueden utilizar otras formas de enviar los datos, pero en concreto en esta nos vamos a centrar en conocer la forma de enviar y recibir datos utilizando un protocolo can bus.

El rs485 es algo que tambien s me metere en un futuro.

Con respecto al tema de la instrumentacion, yo actualmente estoy aun acomodandome en una nueva provincia. No me ha quedado mas remedio que cambiar, ya que el trabajo donde yo vivia excaseaba y despues de cerrar la fabrica donde yo trabajaba no quedo mas remedio. Cuando pasen una semanas y este todo mas por mi mano, tengo pensado tambien invertir algo de dinero en instrumentacion. Es algo que ya habia hablado con el compañero Dea. Basicamente queria comprar un osciloscopio nuevo, tambien un microscopio que mi vista ya no es la de hace 30 años y alguna cosilla mas.

Que modelo de osciloscopio has comprado?
El siguiente usuario dijo gracias: Tacho57

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1393

Gracias por la bienvenida, ahora me queda más claro cual es la aplicación, veré de visitar el link que me pasaste, seguramente en CAN bus es ideal para llegar a un resultado satisfactorio y de forma rápida, sin romperse tanto la cabeza con los protocolos, retransmisión en caso de error, etc, al tener un tranceptor inteligente supongo que manejara de forma automatica todo ese lio y con las librerías adecuadas no vas a tener grandes problemas, el bus RS485 es muy básico, es como manejar una UART que te da varios kilómetros, yo lo he probado a 1000 mts y sin ningún problema, pero la contra es que el protocolo lo definis vos, si hay errores debes calcular un CRC para su detección, retransmitir el paquete y analizar cantidad de bytes recibidos, nodo al cual va destinado el mensaje ..., es decir que trabajas mucho y debes hacer cientos de pruebas, cómo ventaja controlas el 100% de la comunicación, no dependes de librerías de terceros, o sea si algo no anda el error es tuyo y no de la librería, es más fácil de debuguear.

Saludos y seguiré atentamente el proyecto

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1394

Hola José Luis, perfecta la explicación, yo también los seguiré atentamente, nunca se sabe cuándo se necesita usar el CAN bus, siempre es útil haber experimentado antes de usarlo en alguna aplicación comercial o desarrollo.

Para el RS485 no debes estudiar nada, es usar una UART, solo debes mover a 1 o a 0 el pin de cambio de sentido de comunicación, pasar a TX o RX en el bus, el resto es implementar un protocolo que sea seguro para que los datos lleguen sin errores y sin pérdida de paquetes, eso es todo x soft, yo use algo parecido al protocolo IP, también vi que es casi identico al CAN bus, uso un "02" hex como start message, luego un byte de número de nodo (0 a 255) al cual va dirigido el mensaje, Luego un byte contador de bytes del paquete, un byte de comando, luego los datos, CRC final (uso el que viejo CRC de los floppy disk de 16 bits CRC16 se llama, hay documentación de eso en la web) y por último un "03" hex 0ara terminar la comunicación, es muy simple y efectivo, antes usaba la EXOR de todos los bytes pero luego de años de usarlo me di cuenta que algunos errores no los interceptada y pasaban como si estuviera OK el paquete, con el CRC se corrigió el problema.

El modo de transmisión es de tipo Master- slave, en mí caso el soft de la PC pone un conversor USB <-> RS485 (me lo diseñe yo con un FT232RL y un SN 75176 este último es el driver RS485) en modo transmisión y actúa como Máster, todos los nodos colgados al bus escuchan, son esclavos, no hacen nada hasta que no les llega un mensaje de la PC. El método de transmisión de datos que uso es por "Polling" secuencial, es decir la PC arma el mensaje con el comando interrogar nodo, en pieza por el nodo 1, le pregunta tenés algo para reportarme ?, todos los nodos que no sean Nodo1 abortan la comunicación y el Nodo1 responde un ACK y turne dos respuestas posibles: 1) nada nuevo que reportar 2) me entrega el evento que es fecha y hora del acceso, número de tarjeta que pasó y el status del evento, si el nodo 1 recibe errores responde con un NACK (not acknowledge, no entendí en castizo) esto obliga a la PC a retransmitir el mensaje, lo hace n veces hasta que la PC lo da por muerto o con problemas a dicho nodo ( marco en un semáforo en la PC el nodo en rojo, para que alguien revise el sistema), en el caso que no responda nunca la PC maneja un Timeout para que no se quede trabada en ese nodo, luego de una comunicación exitosa con el nodo 1 sigue con el resto hasta terminar la cantidad de nodos total del sistema, luego retoma el nodo 1 y así sigue hasta el infinito, esto es lo que se conoce como "Poleo" en castellano, el máster interroga a los esclavos en una secuencia ascendente de número de nodo.

Creo que esto se aplica 100% al can bus, por eso me extendi en la explicación (quizás demasiado jajaja).

Después te comento lo del osciloscopio, tengo 3 y son de distintas generaciones, creo que vale la pena extenderse en la explicación del porque de la elección y capacidades de cada uno.

Finalmente para soldar en smd 0805 uso una buena lupa, no microscopio que podría servir si quieres analizar las soldaduras de los chips, particularmente uso un ocular de joyero (no se muy bien como se llama, te lo colocas en un ojo y miras la placa a 1cm de distancia), con una buena lupa logré soldar chips de 88 patas con separación de 0,32 de mm entre patas, uso mí propia técnica que me da buenos resultados, yo como consejo no invertiria en microscopio, con lo que te comenté se trabaja muy cómodo, mí vista tampoco es la de hace 40 años jeje.

Abrazo y dsps te mando lo del osciloscopio, y alguna foto de la lupa que uso, no es nada del otro mundo pero es barata y eficaz
El siguiente usuario dijo gracias: asesorplaza1

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Comunicación CAN entre arduinos 7 meses 3 semanas antes #1395

Jose Luis, me faltó lo más importante espero que consigas trabajo en breve y que mejore tu situación !!!

Creo que el tema instrumental debería abrir un nuevo tema para que no se mezcle con el CAN bus, así es más prolijo y es fácil seguir el hilo de la conversación, más teniendo en cuenta que mis explicaciones no son cortas jajaja, que opinan de abrir nuevo tema ?

Espero que me haya explicado bien en el tema de la comunicación por RS485, cualquier duda un placer poder despejar dudas.

Abrazo

Pd: luego paso el link al nuevo tema de instrumental para el que esté interesado, gracias

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 0.132 segundos
Gracias a Foro Kunena