El OBDII Completo/Herramientas de Diagnostico/ELM327

Prácticamente todos los automóviles en producción hoy en día tienen por ley una interfaz para conexión de equipo de diagnóstico. La transferencia de datos de estas interfaces obedece a diversos estándares, pero ninguno de ellos es directamente utilizable por una PC o dispositivo inteligente. El circuito integrado ELM 327 (ELM Electronics, 2014), basado en un PIC de Microchip, está diseñado para actuar como puente entre estos puertos OBD y una interface estándar RS232 serial. Además de poder detectar automáticamente e interpretar nueve protocolos OBD, el ELM327 también provee soporte para comunicaciones de alta velocidad, un modo de bajo consumo de energía y el estándar J1939 para vehículos de carga pesada.

La relevancia de este IC para cualquier proyecto que involucre OBD es, como la compañía lo publicita permite delegar al IC toda la comunicación a bajo nivel para el estándar que sea, para poder enfocarse en alto nivel al desarrollo del proyecto.

Si bien está pensado para comunicación RS232, la salida corresponde a UART a la cual se le pueden conectar interfaces RS232, USB, Bluetooth o similares. El default es 38400 bps, 8 bits, no parity, 1 stop. Si todo es correcto, en reset el IC prende sus 4 LEDs en secuencia (lamp test) y envía el mensaje

ELM 321 v2.1
>

El IC responde con su nombre de IC y la versión de software. El símbolo > es el prompt del mismo. El comando más sencillo para verificar comunicación es enviar un reset por medio del comando AT Z, terminado con un retorno de carro 0x0D. El IC contesta con la secuencia descrita anteriormente Al 2016 la versión más reciente publicada es la 2.1, siendo las anteriores 1.0 a 1.4. En el mercado hay algunos dispositivos que se publican como versión 1.5. Desafortunadamente estas son versiones clonadas con algunos errores. La primera versión 1.0 salió al mercado desprotegida, por lo que en China se extrajo el código de esta primera versión y se comercializa por su cuenta como 1.5.

El IC tiene varios comandos de configuración, accesibles por el prefijo AT. Los más usuales son:

  • AT <CR> - Repite el ultimo comando
  • AT E0, AT E1 – Eco encendido o apagado
  • AT Z – Reset
  • AT @1 – Regresa la descripción del componente
  • AT @2 – Regresa la identificación del componente
  • AT RV – Lee el voltaje del vehículo
  • AT DP – Describe el protocolo actual del vehículo
  • AT DPH – Describe cual protocolo se está usando de acuerdo a la tabla
  • AT SP h – Utilizar el protocolo h de la tabla y grabarlo
  • AT SP Ah – Búsqueda automática de protocolo a partir del numero h
  • AT TP Ah – intenta comunicarte por protocolo numero h y sigue buscando
  • AT D – Regresa el IC a sus valores por default

La lista de números de protocolos soportados (comando h) es la siguiente:

  • 0 – automático
  • 1 – SAE J1850 PWM (41.6 Kbaud)
  • 2 - SAE J1850 VPW (10.4 Kbaud)
  • 3 – ISO9141-2 (5 bauds inicio, 10.4 Kbauds)
  • 4 - ISO14230-4 KWP (5 bauds inicio, 10.4 Kbauds)
  • 5 - ISO14230-4 KWP (inicio rapido, 10.4 Kbauds)
  • 6 – ISO15765 -4 CAN (11 bits ID, 500 Kbauds)
  • 7 – ISO15765 -4 CAN (29 bits ID, 500 Kbauds)
  • 8 – ISO15765 -4 CAN (11 bits ID, 250 Kbauds)
  • 9 – ISO15765 -4 CAN (29 bits ID, 250 Kbauds)
  • A – SAE J1939 CAN (29 bits ID, 250 Kbauds)
  • B – USER1 CAN (11 bits ID, 125 Kbauds)
  • C – USER2 CAN (11 bits ID, 50 Kbauds)

El primer protocolo listado (0) es una manera conveniente de indicarle al ELM327 que no se conoce el protocolo del vehículo, por lo tanto debe iniciar una búsqueda.

Para comunicarse por el OBD a través del ELM27 simplemente se le envía en caracteres ASCII por el serial el par hexadecimal correspondiente. Como ejemplo, para conocer las revoluciones del motor, este es el PID 0C del modo 1, por lo que en un hiperterminal conectado se teclearía:

>01 OC

Si el motor está encendido, la respuesta sería similar a:

41 OC 1A F8

El valor retornado (1A F8) es en realidad un valor entero hexadecimal de dos bytes. Convertido a decimal es 6904. De acuerdo al estándar, el valor retornado está en cuartos de vuelta, por lo que al dividir 6904/4 las rpm del motor son 1726. Es de notar que esta comunicación que se acaba de realizar fue completamente independiente del tipo de vehículo y protocolo utilizado.


Para mayor referencia

editar

Wikipedia ELM327 (inglés)

Elm electronics - On Board Diagnostics (OBD) ICs


Next Page: Herramientas de diagnóstico populares
Previous Page: Protocolo ISO 15765-1 a -4 – CAN-BUS
Main Page: El OBDII Completo - Indice