Electrónica y programación para Microcontroladores.

Libros técnicos para electrónica programable.

Email
Contactanos en:

consultas@firtec.com.ar

Arduino

Que es el CAN BUS (Controller Area Network).

Desde mediados de los años 90 en todos los vehículos los sistemas de motor y transmisión se han basado en una red de sensores que envían información a la computadora de abordo, de esta forma se ajusta la cantidad de combustible, los cambios en la transmisión y en general todo lo que hace al funcionamiento del vehículo.

Pero fue recién a mediados del 2000 que los sistemas evolucionaron para incluir el CAN BUS.
Este bus usa el método de transmisión broadcast, es decir, un elemento envía un mensaje a través del bus a todos los componentes, y estos se encargan de saber si la información del mensaje le es útil o no. Si el mensaje fuese de interés para algún nodo, este lo almacena y procesa, si no, simplemente la deshecha.

En este escenario podemos ver que la “Unidad de control 2″, envía el mensaje que tenía almacenado en memoria al bus, y todas las demás unidades ven ese mensaje a sus entradas. Sin embargo la “Unidad de control 3″ deshecha este mensaje en la etapa de “Selección”, mientras que las restantes deciden que es apropiado y lo almacenan.

CAN está orientado a mensajes, es decir la información que se va a intercambiar, se descompone en mensajes, a los cuales se les asigna un identificador y se encapsulan en tramas para su transmisión, este ID o identificador es el que consigue que el nodo pueda saber si el mensaje le será útil.

Las principales características de una red CAN son:

  • Prioridad de mensajes.
  • Garantía de tiempos de latencia.
  • Flexibilidad en la configuración.
  • Recepción por multidifusión (multicast) con sincronización de tiempos.
  • Sistema robusto en cuanto a consistencia de datos.
  • Sistema multimaestro.
  • Detección y señalización de errores.
  • Retransmisión automática de tramas erróneas
  • Distinción entre errores temporales y fallas permanentes de los nodos de la red, y desconexión autónoma de nodos defectuosos.

La información circula por dos cables trenzados que unen todas las unidades de control que forman el sistema. Esta información se trasmite por diferencia de tensión entre los dos cables, de forma que un valor alto de tensión representa un 1 y un valor bajo de tensión representa un 0. La combinación adecuada de unos y ceros conforman el mensaje a trasmitir.

En un cable los valores de tensión oscilan entre 0V y 2.25V, por lo que se denomina cable L (Low) y en el otro, el cable H (High) lo hacen entre 2.75V. y 5V. En caso de que se interrumpa la línea H o que se derive a masa, el sistema trabajará con la señal Low con respecto a masa, en el caso de que se interrumpa la línea L, ocurrirá lo contrario. Esta situación permite que el sistema siga trabajando con uno de los cables cortados o comunicados a masa.
Es importante tener en cuenta que el trenzado entre ambas líneas sirve para anular los campos magnéticos, por lo que no se debe modificar en ningún caso ni el paso ni la longitud de dichos cables.
Dado que la línea es un par trenzado se necesitan resistencias de terminación 120 ohm en ambos extremos del bus, solo colocar la resistencias en los extremos no en los nodos individuales.
Los vehículos modernos pueden tener 70 o más sub-sistemas electrónicos, cada uno con su propia unidad de control electrónico
o ECU.

El sistema anti-bloqueo, las ventanillas eléctricas, espejos, puertas, audio / GPS, control de crucero, dirección asistida eléctrica,… todo tiene su propia red de datos. 
A medida que estos sub-sistemas se hacían más sofisticados, los ingenieros vieron la necesidad de que pudieran comunicarse entre sí y con a computadora central del vehículo. Los sensores necesitan información de otros sensores, por ejemplo, un vehículo con control de crucero adaptativo o alertas de cambio de carril necesita información de una variedad de sensores.
Un vehículo que utiliza limpiaparabrisas automáticos y un sensor de lluvia puede informar al sistema ABS para que accione los frenos ligeramente, el tiempo suficiente para limpiar el agua de lluvia. El control de tracción, el ABS y los sistemas de estabilidad del vehículo deben poder comunicarse entre sí para que el conductor pueda mantener el control durante una parada de emergencia o viraje.
Aquí es donde entra la red de CAN BUS, fue desarrollado por ingenieros de Bosch y en 1986, la Society of Automotive Engineers estandarizó un conjunto de protocolos, y los primeros chips controladores CAN que llegaron al mercado en 1987.
Cuando se está tratando con el sistema CAN BUS en una reparación o mantenimiento es necesario conocer el mapa completo de sensores y microprocesadores y cómo interactúan entre sí, un vehículo moderno se parece a un robot con ruedas.
Si hay un problema con los sensores o procesadores que se están comunicando entre sí, la computadora del vehículo registrará el error con un código específico y se encenderá el indicador “Revisar Motor”.
Aquí es donde las cosas se complican, por ejemplo un código de error que indica una falla de encendido en un cilindro o una mala lectura de un sensor de posición del cigüeñal, un mecánico experto puede usar su poder de deducción para solucionar el problema que causaría esa mala lectura y corregirlo, tal vez usando un voltímetro para ver qué valores vienen de ese sensor o sensores relacionados y ver si tienen en parámetros de voltaje normales.
Esto es mucho más difícil en sistemas CAN BUS, hay muchos de estos módulos y km de cable que los conectan.

Que es el protocolo OBD2.

El protocolo OBD2 (Diagnóstico a bordo) sirve para detectar fallos químicos, mecánicos y eléctricos que afecten el funcionamiento normal del vehículo.
OBD2 es el lenguaje y el CAN es el protocolo de transporte. Leer tramas en el bus CAN es bastante simple, incluso leer los datos que OBD2 envía no es complicado pero saber interpretar la información es otra cosa, muchos códigos de error son genéricos y común a todas las marcas de vehículos, pero hay códigos de error que son exclusivos de cada marca.

En este vídeo se puede ver el funcionamiento de la interfaz MCP2515 para el CAN y un transceptor TJA1050 que conecta esta interfaz con la capa física del CAN. (Todo ya viene montado en una misma placa).
La conexión con el microcontrolador (en este caso Arduino) es mediante el SPI.
Con este tipo de interfaz se pueden leer cualquier tipo de tramas escritas sobre el BUS CAN pero como se dijo antes, otra cosa es entender lo que se esta leyendo.
En la red se pueden encontrar muchos sitios con información de códigos de error enviados desde OBD2. El siguiente es el conector usado para conectar el automóvil con la terminal de dialogo o computadora exterior que lee la información enviada desde OBD2. Este conector se encuentra en el habitáculo del vehículo disimulado por por la tapicería o elementos del tablero.

Como se puede ver en el conector OBD2, existen las conexiones H y L del propio BUS CAN que son los que generalmente usan los lectores de fallas para vehículos.
La interpretación de un código de error es bastante simple, estos códigos de falla constan de 5 caracteres, que son una letra seguida de cuatro números.

Los códigos del 1000 al 1999 son definidos por el fabricante del vehículo y solo siguen la norma general en el formato, los códigos del 0001 al 0999 son definidos completamente por la norma SAE J1979 y es el estándar que hoy en día usan los distintos  fabricantes de vehículos.