1 UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA DIVISIÓN DE INGENIERÍA MECÁNICA E INDUSTRIAL INGENIERÍA MECATRÓNICA Diseño de un sistema de monitoreo OBDII con comunicación GSM QUE PARA OBTENER EL TÍTULO DE INGENIERO MECATRÓNICO PRESENTA: DANIEL ANDRÉS RAMOS CORIA DIRECTOR DE TESIS: M.I. BILLY ARTURO FLORES MEDERO NAVARRO México, D.F. Febrero 2014 UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. 2 Cap. 1 Introducción.................................................................................................................1 1.1Resumen .......................................................................1 1.2 Introducción .......................................................................1 1.3 Objetivos .......................................................................4 1.4 Justificación .......................................................................4 1.5 Estado del Arte .......................................................................6 1.6 Metodología y Materiales .......................................................................7 1.7 Alcance .......................................................................8 Cap. 2 Introducción a los Sistemas del Automóvil Moderno.................................................10 2.1 Chasís .....................................................................11 2.2 Motor .....................................................................13 2.3 Sistema de Combustible .....................................................................17 2.4 Sistema de Ignición .....................................................................22 2.5 Sistema de Enfriamiento .....................................................................24 2.6 Sistema de Escape ......................................................................26 2.7 Sistema de Lubricación ......................................................................26 2.8 Tren Motriz ......................................................................27 2.9 Suspensión ......................................................................29 2.10 Frenos ......................................................................30 2.11 Otros sistemas y sensores ......................................................................32 2.12 OBD.I y OBD.II ......................................................................33 2.13 Comunicación Serial ......................................................................38 2.14 Protocolos de Comunicación estandarizados por OBD.II...…………………...............44 REFERENCIAS ......................................................................46 3 Cap. 3 Desarrollo ......................................................................48 3.1 Sistema de Adquisición ......................................................................49 3.2 Elección del Microcontrolador …..................................................................51 3.3 Limitaciones de la Programación del Proyecto – CAN ……......................................54 3.4 Acondicionamiento y Traducción entre Protocolos ..........................................56 3.5 Estructura del Programa de Adquisición de Datos ...........................................59 3.6 Subsistema de Interpretación de la Información ..............................................65 3.7 Subsistema de Transmisión de Información – GSM .........................................68 3.8 Monitores y Condiciones para ejecutarlos .....................................................75 3.9 Descripción de Conexión de los distintos Subsistemas ......................................79 3.10 Programación del Microcontrolador ..........................................................82 REFERENCIAS ....................................................................89 Cap. 4 Resultados ….................................................................90 Cap. 5 Conclusiones ......................................................................98 Cap. 6 Anexos ....................................................................101 Anexo 1 DIAGNÓSTICO MAZDA MX-5 Anexo 2 MAX233 CABLE 4 Anexo 3 ELM323DS Anexo 4 MCP2551 CAN Anexo 5 ELM327 AT Commands Anexo 6 DTC Database (OBD-II Trouble Codes) 5 CAP. 1 – INTRODUCCIÓN 1.1 - RESUMEN En el siguiente trabajo se plantea el diseño y construcción de un modelo funcional de un sistema de análisis de los sistemas del automóvil que pueden ser monitoreados durante la operación normal del mismo siguiendo los protocolos OBD-II. El sistema obtendrá la información necesaria y será capaz de leer los códigos de error generados por el automóvil en caso de existir alguna falla. Al sistema se añadirá un subsistema de comunicación GSM para transmitir la información adquirida del monitor OBD-II (una vez procesada, analizada y decodificada) en un mensaje de texto a un número de celular preestablecido para informar al usuario de las fallas existentes. El sistema planteado brinda la función de verificación de los sistemas analizables según OBD-II en un dispositivo que trabaja sin afectar a ninguno de los sistemas del auto, dando la posibilidad de informarnos a la brevedad de las fallas en nuestro auto, las posibles consecuencias y la gravedad de las mismas. En conclusión, se pretende diseñar y construir el modelo funcional de un sistema que podría aumentar la seguridad vehicular en cuanto a funcionamiento del automóvil se refiere. 1.2 – INTRODUCCIÓN Recientemente se han empezado a desarrollar sistemas aprovechando lo mejor de la tecnología de las telecomunicaciones para realizar tareas no directamente relacionadas con la comunicación humana. El desarrollo de protocolos y tecnologías como GSM, 3G y 6 GPRS permiten hoy en día controlar aparatos de forma remota cómodamente desde un celular con sólo enviar un mensaje de texto o hacer una llamada telefónica. Una de las industrias que se ha visto más beneficiada con la aparición de tecnologías de telecomunicación ha sido la industria automotriz. Varios sistemas han sido desarrollados para dar protección a los dueños de automóviles utilizando formas de comunicación o interacción a distancia – los primeros sistemas, con radiofrecuencia desde emisores y receptores simples creados per se para cumplir con la labor de activar o desactivar sistemas de seguridad contra robo. Posteriormente han aparecido los sistemas de seguridad contra robo de automóviles que reciben instrucciones tan simples como cortar la corriente eléctrica del auto para apagarlo mediante la decodificación de un mensaje de texto o al recibir una llamada telefónica de un número preestablecido. Estos son los sistemas comercializados actualmente que nos brindan mayor seguridad; cualquier víctima de robo de automóvil puede hacer rápidamente una llamada desde cualquier teléfono (fijo de casa, público o un celular) y cortar la corriente del auto de manera remota para proteger su propiedad. Mucho se ha hecho y queda mucho por hacer en cuanto a la seguridad activa que se puede desarrollar para el robo de automóviles, sin embargo, existe también otro tipo de seguridad que no ha sido desarrollado a la par de la protección contra robo por entidades externas a las grandes compañías automovilísticas – la seguridad de la correcta funcionalidad de los sistemas del automóvil. Actualmente prácticamente la totalidad de los autos y camionetas que se construyen año con año en el planeta con la finalidad de atender una creciente demanda del mercado del autotransporte funcionan con una gran cantidad de sistemas eléctricos. Algunos por nombrar son el sistema de inyección electrónica, dirección asistida, transmisión, controles 7 de estabilidad (EBD), sistemas de frenos antibloqueo (ABS), gran parte del tren motriz, etc. Esto permitió desde la aparición de los sistemas eléctricos de control para el automóvil que se pensara en una forma de diagnosticar problemas sin tener que desmontar las piezas del auto. Así, en 1969, Volkswagen diseña el primer sistema de monitoreo on-board o a bordo. Pronto, distintos armadores como Datsun, General Motors, entre otros desarrollaron sus propios sistemas de monitoreo on-board. Fue hasta 1988 cuando la Sociedad de Ingenieros Automotrices (SAE) recomendó crear un conector estándar para todas las marcas para comunicar a los escáneres automotrices con los microcontroladores del auto y así obtener la información del sistema on-board. Así es como nace el estándar OBD (On-board diagnostics). Sin embargo, aunque el conector fue estandarizado, los protocolos de comunicación y los códigos generados siguieron siendo exclusivos de cada marca. Fue hasta 1996 cuando apareció el sucesor del OBD, el OBD-II, que además de mantener un conector estándar, estandarizó los protocolos de comunicación y los códigos, obligando a todos los diseñadores de los sistemas de diagnóstico on-board a utilizar los mismos códigos alfanuméricos para diagnosticar los mismos problemas. Existe sólo una letra dentro del código de OBD-II que puede ser utilizada libremente por las diferentes marcas para diagnosticar problemas específicos de cada marca o modelo. Problemas de inyección, del sistema de dirección, del sistema eléctrico, etc. son diagnosticados de la misma forma para todas las marcas y generan un código idéntico que puede ser leído por un escáner automotriz de cualquier marca. 8 1.3 - OBJETIVOS Los objetivos de este trabajo de tesis son: - Diseñar el sistema de intercomunicación entre el sistema de diagnóstico OBD-II (existente en los modelos actuales de automóvil), el sistema decodificador/interpretador de códigos y el transmisor de la información. - Diseñar el circuito de interconexión del transmisor GSM con el sistema de diagnóstico OBD-II. - Construir el modelo funcional del sistema en cuestión y realizar las pruebas necesarias. - Documentación de todo el proceso de desarrollo. 1.4 – JUSTIFICACIÓN La realización del trabajo de tesis que comprende las etapas de investigación y diseño, es una forma de poner en práctica los conocimientos adquiridos. Esta tesis permite dar solución a un problema real planteando el diseño de un modelo que toma características de otros y añade algunas nuevas para crear un sistema innovador. El trabajo a futuro puede ser muy amplio, pero como tema de tesis, se ha acotado al diseño de un único sistema compuesto a su vez de tres subsistemas: el de recepción de datos desde el OBD-II existente en el auto, el de interpretación de códigos y el subsistema de transmisión de datos por medio de radio haciendo uso de un módulo GSM. La construcción del modelo funcional será la culminación de este proyecto puesto que es la forma en que se podrán probar los resultados del funcionamiento correcto. Para poder desarrollar el diseño anterior para convertirse en un producto terminado faltan varias 9 etapas. Como se mencionó anteriormente, estas etapas quedan fuera del alcance del trabajo pero podrán ser desarrolladas a posteriori para aprovechar el trabajo hecho de tesis y crear un producto interesante para el mercado automotriz. En este país pueden resultar especialmente atractivos los sistemas de vigilancia y rastreo de nuestros automóviles, pero en cualquier parte del mundo un auto puede sufrir una avería. Es una característica intrínseca de cualquier producto la posibilidad de tener fallas en cualquier momento de su vida útil. La probabilidad de suceder en un momento o en otro será una cosa que dependa de diversos factores, pero en lo que se refiere a la industria automotriz, vemos que es común encontrar fallas en el tren motriz, en la transmisión, o probablemente las más comunes, en el proceso de combustión y por lo tanto en la emisión de subproductos de la combustión que no cumplen con las normas. Es por lo anterior que he elegido un tema como este y por lo que creo, los conocimientos de la carrera pueden ser un buen principio para desarrollar un trabajo que proponga una solución a dichos problemas. El sistema planteado funcionará constantemente analizando la situación de los sistemas y en caso de existir una falla, el código de error generado será transmitido desde el mismo mediante la comunicación GSM a un celular. Las bases de datos de los códigos ya existen puesto que se manejan de forma estandarizada. Lo que queda es dar la interpretación de la falla exacta y crear un anexo para la base de datos de fallas comunes asociadas al sistema en cuestión. Teniendo el sistema completo, el sistema permitirá al usuario conocer la naturaleza de la falla, con lo cual éste podrá prevenir daños mayores o evitar problemas secundarios relacionados con la avería del auto. Así mismo, el sistema puede servir a los conductores y propietarios de automóviles para tener un diagnóstico preliminar de las fallas. Cualquier diagnóstico posterior en talleres o 10 centros de servicio debería coincidir, al menos en cuanto a la raíz del problema, con el diagnóstico brindado por el sistema OBD-II-GSM. 1.5 - ESTADO DEL ARTE Actualmente existen varios sistemas basados en las lecturas de los códigos generados a partir del estándar OBD-II, pero no muchos brindan la posibilidad de que el usuario del automóvil pueda identificar las fallas de su propio auto. Casi todos los dispositivos están enfocados a la facilidad de lectura y a la comodidad de los técnicos que utilizan los sistemas OBD-II como métodos de diagnóstico para reparar automóviles ajenos. Una de las patentes que se pudieron hallar fue la de un dispositivo que permite comunicar el dispositivo de diagnóstico OBD-II con una computadora mediante una conexión inalámbrica[1.1]. Si bien es cierto que esta forma de comunicación opera bajo el mismo principio que el sistema propuesto para esta tesis, el protocolo de comunicación y por lo tanto el alcance y las aplicaciones son completamente distintos. Algunas otras patentes encontradas alrededor del estándar OBD-II se centran básicamente en la función de estos sistemas de diagnosticar fallas en la combustión o mezclas que emiten gases dañinos; así, existen sistemas que dan aviso al operador del sistema de cuándo el vehículo se encuentra en las condiciones óptimas para hacer el análisis[1.2][1.3]. Una última patente encontrada en una base de datos muestra un dispositivo que aísla el sistema de diagnóstico on-board del automóvil de la computadora a la que se quiera conectar para hacer el diagnóstico mediante una tarjeta de adquisición de información[1.4]. Este último dispositivo es similar a la primera etapa de adquisición de datos que se busca diseñar para el sistema completo planteado para esta tesis. 11 1.6 - METODOLOGÍA y MATERIALES El diseño del sistema planteado implica llevar a cabo una inspección profunda de la literatura para conocer el funcionamiento de los sistemas OBD-II. Los sistemas OBD-II tienen una comunicación estandarizada serial, con palabras definidas de 8 bits que incluyen los códigos de error. Será necesario conocer el tipo de protocolo de comunicación y de interpretación de dichas palabras, así como los circuitos mínimos para poder establecer la comunicación con el sistema de diagnóstico OBD-II, de forma que un microcontrolador pueda adquirir la información. Una vez completada la investigación de los protocolos y circuitos mínimos, se procederá a crear el circuito de adquisición de datos sin elementos actuadores, de forma que se puedan realizar las pruebas de la primera etapa del sistema. Para desarrollar la etapa de interpretación y la de transmisión de información, habrá que desarrollar el programa de traducción de los datos adquiridos a códigos o palabras que puedan ser transmitidas haciendo uso de la tecnología GSM. Esta etapa implica la parte más fuerte de técnicas de programación de microcontroladores y será en la que se lleve la mayor parte del tiempo. Para ello, se requerirá tener al menos el módulo antes mencionado funcionando y un módulo de comunicación GSM adecuado para el microcontrolador con el que se trabaje. Una vez implementado por completo el sistema electrónico, se procederá a crear una pequeña base de datos con códigos que sirvan de ejemplo (de acuerdo a la codificación estandarizada de OBD-II creada por SAE) para mostrar el funcionamiento del sistema completo. 12 1.7 - ALCANCE El proyecto se centrará en el diseño de un sistema de seguridad respecto al funcionamiento del auto, pero existen muchos otros subsistemas que pueden diseñarse en torno al de comunicación remota del sistema OBD-II. Como alcance de esta tesis queda únicamente diseñar el sistema de comunicación de los datos generados por el sistema OBD-II del auto, así como construir el modelo funcional. Sin embargo, a futuro se podrá diseñar un método de localización de automóviles averiados mediante dispositivos de posicionamiento global que aprovechen la naturaleza del sistema y su capacidad de transmitir remotamente información de las fallas. El usuario tendrá la capacidad de conectar la antena de posicionamiento global que encontrará la posición del automóvil para enviarla en un mensaje de texto al teléfono celular predeterminado de forma que se pueda tener la posición exacta del auto; lo anterior, con la finalidad de tener una forma exacta de encontrar el auto en caso de avería y enviar asistencia a la brevedad al punto en el que el auto se encuentre averiado. 13 REFERENCIAS [1.1] Felix, Carelin; Raglend, I. Jacob; Home Automation Using GSM; Proceedings of 2011 International Conference on Signal Processing, Communication, Computing and Networking Technologies (ICSCCN 2011). [1.2] http://www.liveviewgps.com/gps+gsm+tracker+.html [1.3] [1.4] [1.5] [1.6] 14 CAP. 2 - INTRODUCCIÓN A LOS SISTEMAS DEL AUTOMÓVIL MODERNO En este capítulo se hablará de algunos de los principios básicos de funcionamiento de un automóvil moderno, pues de esta forma se comprenderá mejor el funcionamiento de los sistemas de diagnóstico a bordo. Posteriormente, una vez entendidos algunos de dichos sistemas, se explicará más a detalle el sistema de diagnóstico a bordo OBD-II, uno de los pilares centrales de esta tesis. Un automóvil es un medio de transporte que lleva más de un siglo basándose en los mismos principios para su propulsión. El primer automóvil con motor de combustión interna data de 1885, y desde entonces, los principios en los que se basa siguen siendo los mismos. Sin embargo, muchos sistemas se han incorporado e interconectado para dar lugar a funciones cada vez más complejas de control, que brindan confort, mejor economía de combustible, potencia, etc. Los automóviles más comunes, aun hoy en día, utilizan un motor de combustión interna de pistones en casi todos los casos (aunque existen algunas excepciones como el caso de motores rotativos Wankel utilizados en autos como el Mazda RX-8), así como una transmisión para transferir el movimiento a las llantas, un sistema de dirección que permite conducir el auto hacia donde se quiere, un chasís y carrocería que dan estructura, la suspensión que funge como el nexo entre las condiciones ásperas del camino y el auto, un sistema eléctrico que en el caso más básico consta de pocas piezas que permiten generar la 15 chispa que enciende el combustible dentro de los cilindros y componentes para recargar esa batería; además de estos sistemas, los autos suelen tener varios sistemas periféricos de los que nos ocuparemos en el capítulo. A pesar de seguir siendo el tipo de auto más común, hoy en día no todos los vehículos que circulan por las calles son de gasolina o diesel. Existen cada vez más vehículos eléctricos, híbridos (uso de motores de combustión y eléctricos en el mismo automóvil), de gas, etc. Esta tesis se centra en los vehículos de combustión interna de gasolina y diesel porque son los que se encuentran con mayor facilidad en la ciudad, y porque son éstos los que han dado origen a los sistemas de diagnóstico a bordo, por lo que el desarrollo de estos sistemas es más fácilmente comprensible explicado con componentes de estos vehículos. Esto no quiere decir que los autos y camionetas eléctricos, híbridos y demás no tengan sistemas de este tipo, y de hecho son prácticamente idénticos y conservan los mismos estándares. Los 4 tipos de códigos que puede generar el sistema de OBD-II son de tren motriz (P), eléctricos o de cableado (U), chasís (C) o carrocería (B). Sabiendo esto, hay que tener presente que cualquier código de error generado por un componente o sistema debe caer dentro de estas categorías, por lo que hay que intentar identificar dentro de qué categoría podría participar cada uno de los sistemas que a continuación se explican. 2.1 - CHASÍS El chasís es el esqueleto del automóvil pues tiene la función de brindar una estructura sobre la cual todos los demás sistemas se montan. Por ello mismo, debe ser una estructura rígida pero ligera en la medida de lo posible, que asegure además protección al auto y sobre todo a 16 los conductores y pasajeros. Es una pieza pocas veces vista del auto pues se encuentra cubierta por muchas otras piezas, pero es fundamental. Existen diversas configuraciones de chasís y han existido muchas otras a través de la historia que en la actualidad han caído en desuso. A continuación se explican las configuraciones actúales más comunes. Chasís de escalera – Es el tipo de chasís más comúnmente utilizado en camiones y camionetas grandes. Se llama así por la forma que tiene, que consta de dos largueros o rieles y varios travesaños que brindan rigidez para evitar flexiones y torsiones. Sobre esta estructura se monta la carrocería y se distingue perfectamente una o del otro. (Figura 2.1 – Chasís de escalera)[2.1] Backbone – Este tipo de chasís cada vez se usa menos. Consiste en una estructura rectangular de solera o tubos de acero o aluminio que forman un bastidor similar al chasís de escalera pero sin los travesaños o crossmembers intermedios. Tubular spaceframe – Utiliza tubos para formar la estructura del automóvil. Con ellos se forma tanto la parte baja como una parte de la carrocería, sobre la que luego se montan placas de distintos materiales para dar forma al auto. Este tipo de carrocería tampoco es muy común actualmente salvo por algunos autos de carreras que la siguen utilizando. 17 Monocasco – Actualmente es la configuración más común y se utiliza cada vez más. Existen diversas configuraciones de ésta, pero en su forma más esencial utiliza elementos de la carrocería como elementos estructurales junto con piezas únicamente estructurales. En este caso no se puede hacer una distinción perfecta entre lo que pertenece a la carrocería y lo que pertenece al chasís. Se puede encontrar prácticamente en todos los automóviles y las camionetas pequeñas y medianas. (Figura 2.2 - Chasís Monocasco)[2.2] Este tipo de estructura facilita a los ingenieros diseñar secciones que permiten una deformación controlada en caso de choque para disipar la mayor cantidad de energía y que ésta no sea absorbida por los ocupantes, de forma que el impacto que ellos reciban cause el menor daño posible. 2.2 - MOTOR Como se mencionó anteriormente, el tipo más común de motor de combustión interna es el de pistones y cilindros. El motor de 4 tiempos utiliza un monobloque, que es la estructura principal del motor. Es una pieza en metal fundido que contiene las cavidades de los cilindros dentro de los que se mueven los pistones cuando ocurre la explosión del combustible. Los pistones son la contraparte de los cilindros y se encargan de aprovechar 18 la explosión del combustible para generar un movimiento lineal ascendente/descendente cíclico que es transformado en un movimiento rotacional por el cigüeñal. La gasolina es introducida a los cilindros por medio de inyectores que la atomizan para que las partículas de gasolina tengan la mayor superficie de contacto para fomentar una reacción de combustión rápida y pareja. Además, dentro de cada cilindro existe al menos una bujía que se encarga de generar una chispa que incendia la gasolina en el momento preciso para que ésta explote y provoque que la mezcla de gases se expanda. Como se sabe, para que la reacción de combustión ocurra, es necesaria la presencia del combustible (gasolina o diesel), una fuente externa de energía que inicie la reacción (chispa de las bujías) y un comburente, que es oxígeno. Para poder introducir oxígeno a la cámara de combustión, se utiliza un sistema de inducción de aire; el aire es tomado del exterior, filtrado e introducido a la cámara por medio de válvulas. La apertura y cierre de válvulas debe obedecer estrictos tiempos para permitir que sólo entre aire en el momento en que no se está llevando a cabo la explosión dentro del cilindro y que no se salga cuando la explosión ocurre. Esto está determinado por el tiempo del motor. Se llama motor de 4 tiempos a los motores más comúnmente utilizados porque cíclicamente se lleva a cabo el siguiente proceso: 1) Inyección de la gasolina y del aire necesario para la reacción. 2) Compresión de la mezcla aire-gasolina. 3) Explosión de la mezcla y carrera del pistón dentro del cilindro. Esta parte del ciclo es en la que se lleva a cabo el trabajo útil de la combustión. 4) Escape de gases subproducto de la combustión. 19 (Figura 2.3 – Esquema de combustión de un motor de 4 tiempos)[2.3] Mientras en un cilindro ocurre una etapa de la combustión, en los otros está ocurriendo una etapa distinta, una contraparte siempre coordinada. De esta forma se aprovecha la explosión de un grupo de cilindros en determinado momento para funcionar como método de compresión de los otros. Así, el funcionamiento del motor parece ser continuo y no hay fluctuaciones molestas. Este funcionamiento del motor es muy básico y en el pasado todo era regulado mecánicamente, desde la apertura de válvulas hasta la descarga de la chispa de las bujías. Hoy en día, los sistemas electrónicos brindan un control mucho más preciso, lo que ha tenido como consecuencia el mejor aprovechamiento del combustible para generar mayor potencia y torque en motores más pequeños, menores emisiones, etc. Sin embargo, como se podrá intuir, el control tan rápido y preciso de las variables que intervienen en este ciclo resulta muy complicado para un circuito sencillo. Es por ello que se generaron los sistemas de inyección de combustible y las unidades de control del tren motriz. Esta es una parte muy importante para esta tesis porque gran parte de las fallas detectables por OBD-II provienen del tren motriz; de hecho, la mayor cantidad de códigos de error corresponde a tren motriz por la complejidad de los sistemas y los cálculos necesarios para que éste funcione correctamente. Aquí vale la pena introducir la unidad PCM (Powertrain Control 20 Module), que se encarga de controlar todas las variables involucradas con la generación de la combustión y la transmisión de ese movimiento hacia las ruedas del vehículo. Intervienen muchos sensores y variables como la presión del aceite en el motor, temperatura del anticongelante, del aire que toma del exterior, la presión del aire, el tiempo del motor, la cantidad de gasolina que debe inyectar para determinada mezcla aire- combustible, entre otros. La complejidad radica en la increíble precisión que debe manejarse, por lo que son necesarios sensores redundantes para asegurar que las lecturas sean correctas. Algunos autos incorporan sistemas de inducción forzada; esto quiere decir que utilizan medios externos al motor para forzar una mayor cantidad de aire hacia adentro de la cámara de combustión, de forma que se obtenga una mezcla más rica de combustible y comburente que incremente la energía que se puede aprovechar durante la explosión. Sin embargo, al ser sistemas externos, se necesita una forma de introducir el aire desperdiciando la menor cantidad de energía posible. Para ello existen los turbocargadores y supercargadores. Estos son medios de comprimir el aire que viene del exterior hacia la cámara de combustión. La única diferencia en ellos es el principio bajo el cual funcionan – mientras que el turbo utiliza la alta temperatura de los gases subproducto de la combustión para hacer funcionar un compresor de aire, el supercargador utiliza una banda acoplada al cigüeñal para la compresión. Los motores diesel tienen grandes diferencias con el motor de gasolina de 4 tiempos, pero también tienen grandes similitudes. En el caso de motores diesel, la combustión sucede de forma espontánea cuando se alcanza determinada presión al interior del cilindro. Por lo anterior, este tipo de motor no utiliza bujías. En general los esfuerzos que sufre un motor diesel suelen ser más grandes que los que debe soportar uno de gasolina, por lo que algunos 21 de los componentes deben ser más robustos. En cuanto a la administración del combustible y el aire para generar la mezcla, existen diferencias, pero para lo que nos atañe en esta tesis, no es importante conocer dichas diferencias a fondo. El constante monitoreo de sensores y el cálculo de la inyección de aire y combustible sucede de manera muy similar a lo que pasa en uno de gasolina. 2.3 - SISTEMA DE COMBUSTIBLE El sistema de combustible está formado por el tanque de combustible donde se almacena el combustible (que le da al auto determinada autonomía de viaje), las líneas de combustible que llevan la gasolina o el diesel del tanque al motor, un filtro para evitar que ciertas impurezas entren a la cámara de combustión y por lo menos una bomba de combustible. Hay además sistemas de medición del nivel del combustible, inyectores, etc. Existen también líneas de retorno de combustible que proporcionan un medio para regresar al tanque el combustible no quemado o inyectado en exceso. El canister es un componente que recupera el combustible que no se aprovecha porque se evapora; se encarga de recuperarlo y enviarlo a una línea de combustible que lo devuelve al tanque. Los inyectores de combustible introducen el combustible al sistema de inducción de aire para que una vez atomizado el combustible, se mezcle con el aire y genere una mezcla controlada que entre a la cámara de combustión. También existen sistemas de inyección directa, es decir que inyectan la gasolina directamente a la cámara de combustión y el aire por otro lado, haciéndose la mezcla directamente en la cámara. En los sistemas convencionales (no de inyección directa), el combustible es inyectado después de la válvula de mariposa en el cuerpo de aceleración. Para controlar la inyección del combustible, existe 22 un riel de inyectores hacia donde se envía el combustible para ser distribuido a cada inyector, un regulador de presión y los propios inyectores. Los inyectores son pequeñas válvulas electromecánicas formadas por una aguja y una pequeña bobina que al tener una corriente eléctrica circulando a través de ella, levanta la aguja que abre la válvula. La presión del combustible inyectado durante la apertura se mantiene constante, por lo que lo rico de la mezcla depende únicamente del tiempo que permanece abierta esta válvula. Este tiempo es controlado con enorme precisión por el PCM. (Figura 2.4 – Diagrama del interior de un motor de gasolina)[2.4] Uno de los subsistemas más importantes para el automóvil moderno y para la tesis que se presenta es el Módulo de Control del Tren Motriz o PCM (el ya mencionado Powertrain Control Module). Éste módulo es conocido también como ECM (Engine Control Module), 23 ECU (Electronic Control Unit), aunque este último es bastante genérico ya que existen varias ECUs en un automóvil para controlar distintos sistemas. El PCM es conocido como la “computadora” del automóvil pues funge como el sistema nervioso del mismo al ser la unidad central que recibe información de los sensores y envía información a actuadores como servos, válvulas, etc. PCM será considerado el término adecuado en esta tesis puesto que es el nombre estandarizado aceptado por OBD-II[2.5]. Es importante elegir un protocolo y medio correcto de enviar y recibir información por toda la red eléctrica del auto, que en algunos casos llega a estar conformada por más de 120 metros de cables. Esta complejidad y la importancia de la velocidad de transmisión de información así como la asignación de prioridades a determinados sensores bajo ciertas condiciones de manejo hacen del sistema eléctrico uno bastante complejo. Comenzaremos por enlistar algunos de los sensores básicos que requiere cualquier automóvil actual para poder circular así como una breve explicación de su función. El primero es el sensor lambda, que se encarga de medir la cantidad de oxígeno en los gases de escape para brindar una retroalimentación de qué tan completa está siendo la combustión dentro del motor. Si la cantidad de oxígeno es alta a la salida del sistema de escape, el PCM debe corregir inyectando una mayor cantidad de combustible a la mezcla para alcanzar la mezcla estequiométrica. El sensor de temperatura de admisión del oxígeno es necesario para saber la cantidad de combustible que se debe inyectar. De la temperatura de entrada del oxígeno depende la densidad del mismo, que implica indirectamente la concentración de oxígeno por unidad de volumen. A mayor temperatura, menor densidad y por ende menor cantidad de oxígeno, por lo que el sistema de inyección de combustible debe compensar inyectando más gasolina. 24 El sensor de presión de aire en el múltiple de admisión es un sensor que se encarga de determinar indirectamente la carga del motor. Cuando la presión es alta en el múltiple de admisión, la carga del motor es alta, por lo que el sistema de inyección debe introducir más combustible. El sensor de velocidad del cigüeñal mide la velocidad de giro de este componente para saber en qué momento preciso debe inyectar la gasolina y abrir o cerrar las válvulas. El sensor de posición del acelerador efectúa una medición de qué tanto está pisando el acelerador el conductor para determinar si se requiere una mezcla más rica en combustible. El sensor de golpeteo o knock sensor es un sensor que ayuda a determinar si el motor está trabajando correctamente, captando las vibraciones de las explosiones dentro de cada cilindro, determinando si las vibraciones ocurren en el momento correcto o si están sucediendo a destiempo. El sensor de flujo de aire calcula el gasto másico de aire entrando para poder determinar cuánta gasolina hay que inyectar para que la mezcla sea la correcta. Por último, el sensor de temperatura del anticongelante se encarga de medir qué tan frío o caliente está el motor. Si el motor arrancó recientemente, lo más probable es que esté frío y necesite calentarse. Para ello, el sistema de inyección requiere una mezcla más rica en combustible cuando el motor está frío. El automóvil muchas veces trabaja en ralentí, es decir, sin que el conductor pise el pedal de acelerador. Esto sucede cuando, por ejemplo, cuando se llega a un alto y se debe detener el coche pero sin apagarlo. Una válvula de bypass se encarga de mantener cierta apertura de la válvula de mariposa para que entre la cantidad justa de aire que mantenga el auto en cierto régimen de revoluciones para que no se apague y que pueda seguir manteniendo determinados sistemas en funcionamiento. De esto también se encarga el PCM, regulando 25 la apertura de la mariposa en función de la temperatura de entrada del aire al múltiple de admisión y de algunas de las otras variables antes mencionadas. El sistema de inducción de aire controla la entrada de aire de acuerdo a la posición del acelerador. La posición de éste determina la apertura de la válvula de mariposa para permitir el paso de la cantidad correcta de aire. Este aire debe ser filtrado para no introducir impurezas al cilindro. El aire debe pasar a través del cuerpo de aceleración antes de entrar al múltiple de admisión (intake manifold) después de haber sido filtrado. (Figura 2.5 – Diagrama del sistema de inducción)[2.6] Existen muchos otros sensores relacionados directamente con el sistema de OBD-II y del control de emisiones, así como muchos otros más para controlar otros sistemas como el audio del coche, alarmas por puertas mal cerradas y demás, pero con los sensores mencionados y brevemente explicados hasta aquí se puede tener una idea de cómo trabaja fundamentalmente el sistema del tren motriz de un automóvil moderno. Como se mencionó anteriormente, existen numerosos sensores de precisión, en algunos casos redundantes dado que se necesita un control muy preciso sobre el auto. Para explicar 26 el funcionamiento de algunos de estos sensores será mejor explicar primero el funcionamiento de los sistemas directamente relacionados con ellos, comenzando por el sistema de ignición. 2.4 - SISTEMA DE IGNICIÓN El sistema de ignición es el encargado de suministrar la energía inicial para llevar a cabo la reacción de combustión en el caso de motores de gasolina (se mencionó anteriormente que en los motores diesel la combustión sucede únicamente por el aumento de presión en la cámara de combustión). (Figura 2.6 – Diagrama de un transformador eléctrico) Dentro de la cámara de combustión de cada cilindro se tiene al menos una bujía, que es una pieza que consta de dos electrodos muy cercanos entre sí; la distancia entre ellos es cuidadosamente calibrada y actualmente vienen así de fábrica, no hay necesidad de variar la distancia que hay entre electrodos. Mediante un transformador es posible cambiar el voltaje que puede suministrar la batería del automóvil (12 [V]) a cerca de 30,000 [V], suficientes para crear un arco eléctrico entre los dos electrodos de la bujía. Esta chispa enciende el combustible atomizado que se encuentra en la etapa de compresión dentro del cilindro. El 27 voltaje a la salida del transformador es dependiente de la relación existente entre el número de espiras de cada embobinado del transformador. De la misma forma, la relación de la corriente en cada embobinado está determinada por la relación entre el número de espiras. Esta expresión nos dice la relación que debe existir entre el número de espiras del embobinado secundario y el primario. Cuando por alguna razón ocurre algún problema en este circuito, como por ejemplo, que el esmalte de alguno de los embobinados se deteriore, puede ocurrir un corto circuito dentro del embobinado, por lo que varias espiras dejan de trabajar, reduciendo la relación de espiras, por lo que el voltaje a la salida varía. Esto puede provocar fallas en componentes eléctricos, y la falla será detectada por el sistema de diagnóstico. Hace algún tiempo el momento en que se emitía la chispa en las bujías estaba determinado por el distribuidor, un componente mecánico que se encargaba de hacer conexiones con las bujías y la bobina de encendido (transformador) girando un disco con un conector móvil giratorio. La velocidad de giro del distribuidor estaba determinada por la velocidad del motor, teniendo el distribuidor dos veces la velocidad angular del motor. Actualmente la velocidad de disparo de las bujías está determinada por la medición de la velocidad del cigüeñal. La chispa puede emitirse incluso “antes de tiempo” respecto a lo que haría un distribuidor mecánico para lograr la combustión más completa; a esto se llama el timing del motor. En los sistemas más modernos de inyección directa, cada bujía cuenta con su propia 28 bobina de encendido y es la computadora la que controla el momento de ignición de cada una. 2.5 - SISTEMA DE ENFRIAMIENTO El proceso de combustión en la cámara del motor genera calor que se transfiere al exterior por conducción y convección mayoritariamente a través de los gases y de las paredes del motor y el tren motriz. Las temperaturas al interior de la cámara de combustión pueden llegar a pasar los 3500[°C][2.7]. Si no se tuviera un sistema de enfriamiento, rápidamente se alcanzarían temperaturas dañinas para el motor y todos los componentes aledaños; hay que considerar que la temperatura de fusión del acero es de cerca de 1500[°C] y de poco menos de 700[°C] para el aluminio. Es por ello que en todos los autos debe existir un sistema que de alguna forma continuamente enfríe al motor para evitar la transferencia excesiva de energía en forma de calor descontroladamente. El sistema de enfriamiento consiste de un sistema de delgados canales dentro del motor por el que se hace circular una mezcla de agua con un agente anticongelante. Esta mezcla circula en las cercanías de los cilindros y en algunas ocasiones del múltiple de admisión para mantener una temperatura constante de aproximadamente 100 [°C]. El líquido se hace circular por estos canales haciendo uso de una bomba de agua que luego envía la mezcla hacia los intercambiadores de calor que sirven para la calefacción de la cabina. La siguiente parte del circuito que sigue el líquido caliente es el radiador, un componente metálico o plástico con delgados canales muy largos, doblados en un arreglo de aletas que brindan un área de contacto grande para proveer de un medio extenso para el intercambio de calor. En este componente se enfría la mezcla anticongelante-refrigerante con el paso del aire. Cuando el aire que circula de forma 29 natural hacia el radiador no es suficiente, entra en funcionamiento un ventilador eléctrico que envía el aire requerido hacia el radiador. Si la temperatura del motor se mantiene por debajo de 80 [°C], los materiales del motor no tienen las dimensiones adecuadas que adquieren por la expansión térmica de los materiales, por lo que las tolerancias entre cilindro y pistón pueden llegar a ser muy grandes, teniendo importantes pérdidas de eficiencia. (Figura 2.7 – Esquema del sistema de enfriamiento)[2.8] Cerca del 50% del calor que provoca la combustión se extrae por el sistema de escape, mientras que sólo cerca de un 10% se extrae por el sistema de lubricación. El restante 40% debe ser extraído por el sistema de enfriamiento[2.9]. En este sistema, en la manguera que llega hacia el radiador se encuentra el housing del termostato, el sensor encargado de medir la temperatura de la mezcla de anticongelante-refrigerante y enviar la información que permite conectar el sistema de enfriamiento o desconectarlo y hacer un bypass cuando la temperatura del motor es menor a la adecuada. Finalmente, una vez enfriada la mezcla es enviada de nuevo hacia la bomba de agua para ser recirculada por todo el sistema hacia el motor. 30 2.6 - SISTEMA DE ESCAPE Este sistema se encarga de expulsar los gases que se generan como subproducto de la combustión para poder desalojar el volumen que ocupan en el motor y para evitar el calentamiento del mismo. Consiste del múltiple de escape, convertidor catalítico, silenciador (mofle) y la punta del escape. El sistema de escape se deshace de estos gases que no se pueden aprovechar directamente en la cámara de combustión de nuevo, pero en el proceso, desecha sustancias como CO2, monóxido de carbono, óxidos nitrosos, partículas sólidas, así como otros hidrocarburos. Estas sustancias son dañinas y debe reducirse tanto como se pueda la cantidad emitida de éstas. Para evitar la emisión excesiva de estas sustancias es necesario el convertidor catalítico, un componente que consta de una cámara a la que entran los gases de escape y en la que se queman rápidamente las sustancias dañinas como monóxido de carbono e hidrocarburos para formar CO2 no tóxico y vapor de agua. Para que la reacción de combustión ocurra rápidamente son necesarios catalizadores de esta reacción. Éstos suelen ser metales preciosos como paladio, platino y rodio, por lo cual, este componente resulta ser muy caro. 2.7 - SISTEMA DE LUBRICACIÓN El sistema de lubricación se encarga de formar una película delgada de aceite entre los componentes metálicos que tienen superficies de contacto en movimiento constante. Las tolerancias son muy pequeñas entre componentes por lo que la elección del aceite con viscosidad adecuada es muy importante. De la misma forma, el aceite resulta importante pues como ya se dijo sirve también como refrigerante para el motor. El sistema de 31 lubricación utiliza una bomba de aceite para circular este fluido (primero a través de un filtro que detiene las impurezas para no contaminar el interior del motor) y luego a través de los canales y componentes mismos. 2.8 - TREN MOTRIZ El tren motriz está formado por el motor mismo así como todos los sistemas que se encargan de transmitir el movimiento del motor hacia las llantas. Los primeros componentes que interactúan del lado del lado de la cabina con el conductor son el clutch o embrague y la caja de la transmisión. El embrague es un componente rotatorio que se encarga de acoplar mediante platos friccionantes la caja de la transmisión con el cigüeñal para poder transmitir el movimiento a un ensamble de engranes que brindan la relación adecuada para proveer un torque suficiente para impulsar el vehículo. La relación de los engranes de la caja de la transmisión determina también la velocidad máxima a la que se puede circular. Conforme menor es el orden de la relación de los engranes, mayor torque podrá transmitirse pero menor será la velocidad de salida hacia las llantas de tracción. Cuando el conductor presiona el pedal del embrague, deforma un resorte que separa los discos del embrague, desacoplándolos y por ende anulando la interacción entre la caja de la transmisión y el cigüeñal. Esto da ocasión al conductor para poder cambiar el engrane de la transmisión, para luego soltar gradualmente el pedal del clutch, permitiendo el acoplamiento firme nuevamente de los discos friccionantes. 32 (Figura 2.8 – Esquema de una transmisión manual)[2.10] En el caso de automóviles con transmisión automática no existe un clutch. En este caso existe un par de turbinas sumergidas en un aceite especial (aceite de transmisión automática). El motor hace girar una de las turbinas en el interior del fluido; cuando el auto se encuentra en condición de ralentí, el fluido se mueve a la misma velocidad que la turbina acoplada al motor pero sin provocar el movimiento de la otra turbina. Cuando el conductor presiona el acelerador, la velocidad angular de la primera turbina aumenta, cambiando la velocidad del fluido y el ángulo de impacto que éste tiene sobre los álabes de la segunda turbina. Esto provoca que la segunda turbina pronto se ponga en movimiento hasta alcanzar la misma velocidad que la otra. El problema es que mientras las velocidades de ambas se igualan, hay pérdidas de energía cinética en forma de calor, por lo cual, las transmisiones automáticas suelen ser menos eficientes que las manuales. 33 2.9 - SUSPENSIÓN Así como el chasís es considerado la columna vertebral del auto, la suspensión puede ser considerada como las piernas. Son elementos mecánicos que conectan las llantas al auto. Brinda soporte, rigidez adecuada para mantener la dirección y posición del auto durante curvas, absorbe los impactos recibidos durante el manejo por irregularidades de la superficie, dan soporte al peso de todos los componentes y aseguran un manejo suave y placentero. El sistema consiste de elementos simples como un resorte por cada llanta, amortiguador, brazos de control, rines y llantas. El ensamble de los resortes y amortiguadores aseguran que se absorban los impactos provocados por el camino sin tener una respuesta transitoria oscilatoria que ocurriría si sólo se emplearan resortes. El amortiguador es un ensamble de cilindros telescópicos con gas o aceite en su interior que provocan determinada fuerza que se opone al movimiento dependiendo de la velocidad con que se aplique una fuerza externa. (Figura 2.9 – Esquema del sistema de suspensión de un automóvil)[11] 34 Actualmente existen en los autos de gama alta también amortiguadores que cambian su coeficiente de amortiguamiento de acuerdo al tipo de manejo que necesita el conductor; ésta puede ser seleccionada desde la cabina, yendo desde un manejo de confort (con coeficientes de amortiguamiento relativamente bajos y por ende obteniendo una sensación de suspensión suave) hasta un manejo deportivo (con la suspensión más dura para mejorar el trazado de curvas). 2.10 - FRENOS Los frenos son uno de los sistemas más simples del auto pero a la vez de los más importantes, por lo cual se han adicionado algunos componentes para mejorar la seguridad. El sistema de frenos consiste en tambores y zapatas o discos y balatas, líneas de frenos, un cilindro maestro, líquido de frenos, el pedal de freno y freno de estacionamiento o de mano, junto con algunos otros componentes secundarios. Cuando el usuario pisa el pedal de freno, mediante un émbolo provoca el movimiento de fluido de frenos en el cilindro maestro, que sirve como medio para aumentar la fuerza aplicada a los cilindros individuales de cada freno; estos cilindros cierran las balatas para friccionar contra los discos y así detener el vehículo. En los autos modernos, se incluye un servo llamado brake booster que sirve para asistir en el frenado aumentando la presión haciendo uso de una presión de vacío generada por el motor o por una bomba. 35 (Figura 2.10 – Diagrama de un sistema de frenos de disco adelante y tambor atrás)[2.12] Los sistemas de ABS sirven para evitar el bloqueo de los frenos en condiciones bruscas de frenado. En un automóvil sin sistema ABS, cuando el conductor presiona fuertemente el pedal del freno, las balatas pueden llegar a bloquearse sujetando el disco y evitando el rodamiento de las llantas; esto puede provocar que la llanta comience a deslizar sobre el pavimento, sobre todo en condiciones de superficies con hielo, aceite o mojadas. Si lo anterior sucede, se puede perder el control del vehículo. En los autos con sistema ABS esto no ocurre. El sistema de ABS consta de sensores de velocidad en cada llanta, una válvula de alivio para los frenos, una bomba y un sistema de control. Cuando los sensores de velocidad detectan que una llanta ha dejado de girar, se abre la válvula de alivio de los frenos dejando liberarse los pistones del freno en particular que se encuentra bloqueado. Para seguir cumpliendo con su labor de detener el coche, la bomba entra en funcionamiento casi instantáneamente y vuelve a cerrar los pistones para presionar la balata de nuevo. La operación se repite liberando y presionando la balata varias veces por segundo hasta que el auto frena correctamente. Otro sistema común incluido en muchos vehículos modernos es la distribución electrónica de frenado EBD. Algunos otros sistemas como el control de 36 estabilidad también controlan el frenado individual de cada llanta para corregir las pérdidas de control y conservar la dirección correcta de acuerdo al ángulo de giro del volante. 2.11 - OTROS SISTEMAS Y SENSORES Algunos otros sensores comunes se encuentran por ejemplo en la caja automática para determinar la selección de la velocidad por parte del conductor, para controlar la iluminación, presión de las llantas en algunos autos, temperatura de la cabina, sensores de aceleración necesarios para pre-tensores de cinturones de seguridad y bolsas de aire, sensores de cajuela o puertas abiertas, y demás sistemas sofisticados que se han ido agregando con fines de confort, seguridad, etc. Todos estos sensores envían información constante que debe ser tomada en cuenta. El mal funcionamiento de algunos de ellos puede no implicar una amenaza durante el manejo, pero como se vio, algunos de ellos son críticos y el mal funcionamiento puede provocar accidentes graves e incluso fatales. Si bien es cierto que aun existen varios protocolos de comunicación entre sistemas en el automóvil (incluso varios en un mismo automóvil, aunque con distintos propósitos, nunca varios protocolos de comunicación para el sistema de OBD-II de un mismo auto), OBD-II intenta estandarizar muchos parámetros para poder tener códigos genéricos que permitan a los técnicos diagnosticar, reparar y analizar autos de cualquier marca. OBD-II es un sistema diseñado para controlar las emisiones y reportar fallas que pueden alterar a los sistemas que tienen impacto sobre las emisiones. Muchas veces nos preguntamos por qué no se generan códigos de error detectables con un escáner automotriz o por qué no se enciende el testigo del MIL cuando ocurre una falla a los sistemas de entretenimiento, de luces, etc. y esto es porque no son sistemas monitoreados 37 por OBD-II. Sin embargo, se podrá pensar que son necesarios módulos de control y ECUs para poder llevar a cabo tareas como controlar el reproductor de discos, indicar la presión baja de una llanta u otras. Es cierto, existen varias ECUs en un automóvil interconectadas que necesitan transmitir información; basta pensar en los sistemas de audio que incrementan el volumen conforme aumenta la velocidad del auto. Existe una comunicación entre sistemas siguiendo protocolos que pueden o no estar estandarizados por OBD-II. Sin embargo, dado que cada vez es mayor la información que envían y reciben las ECUs, cada vez se necesitan microcontroladores más poderosos y una arquitectura más robusta para la transmisión de información. Muchas de estas ECUs no forman parte de los sistemas de los que se ocupa OBD-II y por lo tanto cuando fallan no generan códigos de error ni encienden el MIL en el tablero. Esto no es una falla de OBD-II, simplemente muchos sistemas secundarios del automóvil no están cubiertos por el diagnóstico de OBD-II dado que no son parte fundamental para el funcionamiento del auto. Si no se trata de fallas que puedan afectar la función principal del automóvil, es decir fungir como un medio de transporte seguro para los pasajeros, los sistemas no se incluyen dentro de los que monitorea OBD-II. Hay que recordar de dónde viene OBD-II como sistema y por qué sólo monitorea sistemas como tren motriz, la red eléctrica, chasís o carrocería. 2.12 - OBD-I y OBD-II En la década de 1970, la contaminación causada por los automóviles comenzaba a dejar ver los primeros estragos que estaba causando. Científicos de todo el mundo comenzaron a dar pruebas de la relación entre el deterioro ambiental y la contaminación causada en buena parte por éstos. Fue así como se empezaron a desarrollar sistemas para reducir la emisión 38 de subproductos de la combustión dañinos e incluso tóxicos, pero como todo desarrollo, en un inicio fueron diseños ineficientes que tuvieron efectos negativos sobre otros aspectos. En un principio los dispositivos utilizados en los autos redujeron significativamente la potencia y torque[2.13]. La situación mejoró con la aparición del convertidor catalítico, pues este componente fue tan efectivo en su propósito que las armadoras de autos comenzaron a quitar los viejos dispositivos que utilizaban para corregir las emisiones; con ello, se comenzó a dar motivos a la gente para pensar que talvez estos sistemas no tenían por qué significar pérdidas de potencia. Los controles de smog comenzaron a ser cada vez más comunes y en algunas regiones de Estados Unidos se empezaron a hacer obligatorias algunas de las regulaciones. California fue y sigue siendo probablemente el estado más estricto y uno de los que mayor participación ha tenido en materia de regulación de emisiones. Para la década de 1980 era el único estado en exigir un sistema de diagnóstico a bordo. Por ello, fue también que en la década de 1980, General Motors desarrolló el primer sistema OBD, un sistema simple que se encargaba de diagnosticar fallas de los sensores necesarios para el control de emisiones. Dado que las pruebas de emisiones obligatorias se hacían únicamente midiendo el contenido de los gases de escape, muchas veces la presencia de un código de error en el sistema significaba el rechazo inmediato en el centro de verificación. Entonces, el automovilista tenía que llevar su auto al taller y un técnico averiguaría el sensor que estaba fallando leyendo el código. Este sistema (más tarde llamado OBD-I) era un sistema rudimentario, no estandarizado, para diagnosticar fallas simples en algunos de los sistemas relacionados con las emisiones. Los diagnósticos que realizaba eran simplemente de funcionamiento/no funcionamiento de los componentes y se encontraba limitado a pocos subsistemas de la administración del 39 motor (como control de combustible, recirculación de gases de escape y algunos componentes electrónicos relacionados con éstos). Si los componentes funcionaban mal, el sistema no era capaz de detectar este tipo de falla pues los componentes a fin de cuentas seguían en funcionamiento. Fallas no detectables por estos sistemas podían incluir desde mal funcionamiento del convertidor catalítico hasta falta de explosión en algún cilindro. Los ingenieros y técnicos de entonces conocían las limitaciones de estos sistemas y estaban conscientes de las capacidades para las cuales habían sido diseñados. Teniendo en cuenta la limitación de diagnóstico de emisiones, OBD-I no era tratado como el sistema de diagnóstico de emisiones, por lo que cada vez que el gobierno indicaba que había que realizar una verificación de emisiones, se utilizaban sensores externos y un dinamómetro. El conector dentro del vehículo al cual se debían conectar los escáneres no estaba estandarizado, por lo que cada fabricante podía tener su propio diseño. (Figura 2.11 – Del lado izquierdo se ve un conector OBD-I Renault; del lado derecho un conector DLC de OBD-II)[2.14] De la misma forma, los códigos de falla (DTC’s, Diagnostic Trouble Codes) tampoco estaban estandarizados, ni el protocolo de comunicación. Esto hacía que para los técnicos automotrices el diagnóstico de fallas fuera muy complicado y costoso pues había que 40 adquirir un escáner especial para cada marca y entender la metodología a seguir por cada uno de los fabricantes para hallar las fallas en los vehículos. OBD requería la inclusión de un testigo en el tablero que indicara si una falla era detectada (MIL, Malfunction Indicator Lamp), pero incluso este testigo no estaba estandarizado, por lo que en algunos vehículos podía aparecer sólo como un pequeño ícono, en otros casos como texto y un ícono, y en otros sólo como texto, en colores distintos y en formas que los usuarios no podían asociar de la misma forma. Aun más, en algunas ocasiones la falla podía persistir pero la luz indicadora se apagaba, por lo que los conductores creían que se había arreglado la falla. Así se mantuvo el sistema desde 1988 hasta 1996 cuando entró en funcionamiento el nuevo sistema de diagnóstico a bordo, OBD-II. Al inicio de la década de 1990 el Congreso de Estados Unidos aprobó el Acta de Aire Limpio (Clean Air Act) que obligaba a las armadoras automotrices a incluir el sistema de diagnóstico. Fue así como nació OBD-II. OBD-II nació de las exigencias gubernamentales por un mejor control de emisiones. En 1996 la EPA (Environmental Protection Agency) hizo obligatoria la utilización de los estándares de la California Air Resources Board, que hasta entonces regulaba el control de emisiones en ese estado únicamente[2.15]. La estandarización fue bien recibida por las distintas compañías automotrices y rápidamente adoptaron los nuevos componentes que debían formar parte del sistema. Entre los nuevos requerimientos del estándar se incluyó un conector llamado DLC (Data Line Connector) de 16 pines, con forma de trapecio y localizado siempre en una misma zona cerca del asiento del conductor y del tablero, a una distancia no mayor a 300 [mm] del tablero[2.16]; generalmente se coloca debajo del volante en un área accesible pero no muy visible. 41 (Figura 2.12 – Conector DLC estandarizado en OBD-II)[2.17] Más que un protocolo de administración de los sistemas de ignición y combustible se convirtió en un protocolo de manejo de emisiones y fallas que pudieran generar problemas con ello. Así mismo se volvió un requisito que el sistema fuera capaz de generar códigos de error llamados DTC’s (Diagnostic Trouble Codes), códigos que deben ser iguales para cualquier marca para diagnosticar problemas comunes. Están formados por letras y números. Para fallas más específicas de cada marca existen códigos propios también administrados por OBD-II, pero a pesar de ello, siguen un estándar en cuanto a la manera en que se forman, utilizando la misma cantidad de letras y números y forma para cualquier marca. En el capítulo de desarrollo en el subtema de códigos de diagnóstico se profundizará más en la interpretación de los DTC’s. Otra característica del sistema es la generación de freeze frame data, una “fotografía” instantánea de las condiciones del vehículo medida por todos los sensores del sistema al momento de generarse un DTC. Esta información es útil junto con el DTC mismo para poder averiguar bajo qué condiciones ocurrió un problema y cómo estas condiciones pueden estar asociadas al mal funcionamiento de algún componente o subsistema. Un requisito más fue la estandarización del MIL (Malfunction Indicator Light), el testigo que vemos en el tablero cuando algún DTC se genera. 42 (Figura 2.13 – Ícono del MIL)[2.18] Finalmente, se estandarizaron algunos protocolos de comunicación aunque no uno exclusivamente por el grado de desarrollo que ya tenían algunas de las compañías automotrices de sus sistemas. Para poder entender un poco lo que implican los protocolos de comunicación dentro de la red interna del auto, el siguiente apartado hablará sobre la comunicación serial. 2.13 - COMUNICACIÓN SERIAL La comunicación serial es una forma de comunicar dispositivos electrónicos. Abarca una serie de protocolos muy comunes que se difundieron durante mucho tiempo por su extendido uso en computadoras para poder comunicar periféricos como impresoras con el CPU. La mayoría de las computadoras de escritorio de hace unos 10 años incorporaban al menos un puerto serial RS-232 y en muchas ocasiones, se contaba con dos de ellos. Algunos otros dispositivos que utilizan comúnmente la comunicación serial son dispositivos de instrumentación como tarjetas de adquisición de datos o con dispositivos remotos de muestreo. 43 La comunicación serial permite el envío y recepción de caracteres o bytes de información como cadenas, de forma que sólo se puede enviar o recibir un bit a la vez. A diferencia de la comunicación en paralelo, en la que se pueden enviar varios bits a la vez que conforman un byte, la comunicación serial necesita enviar cada byte por partes, lo que la convierte en una comunicación más lenta. Sin embargo, una de las ventajas de la comunicación serial es que el método de comunicación es mucho más sencillo y permite la transmisión de información a mayores distancias. Un dispositivo conectado por comunicación en paralelo con otro no debe estar conectado con más de 2 metros de cable y el total de la longitud de cable utilizada entre todos los dispositivos conectados no puede ser mayor a 20 metros, según el estándar dictado por la norma IEEE 488 (Institute of Electrical and Electronics Engineers); en contraste, la comunicación serial permite conexiones entre dispositivos con longitudes de cable de hasta 1200 metros. Aunque la velocidad de transmisión de información en comunicación en serie se dice que es baja, la transmisión de información puede darse entre 9600 y 38400 baudios, es decir, de 9600 a 38400 bits por segundo, lo que permite hacer sin problema la lectura de códigos de falla y lecturas de todos los sensores conectados al sistema de diagnóstico a bordo sin problema, siempre y cuando, no se necesite refrescar la información de dichos sensores varios cientos de veces por segundo. La comunicación serial se utiliza comúnmente para enviar información en código ASCII (American Standard Code for Information Interchange). Para este tipo de comunicación, independientemente del estándar que se utilice, se ocupan 3 líneas – 1 es la línea de tierra o referencia, 2 es la línea de transmisión y 3 es la línea de recepción. La comunicación serial suele ser asincrónica, lo que quiere decir que mientras por una línea se envían datos, por la otra se puede recibir información de manera independiente. 44 En algunos protocolos específicos de comunicación serial existen otras líneas para el handshaking o intercambio de pulsos de sincronización y confirmación, sin embargo, las únicas tres líneas estrictamente necesarias para la comunicación serial son las primeras tres mencionadas. (Figura 2.14 – Diagrama de un conector DB9 para comunicación serial)[2.19] Existen parámetros de la comunicación serial que pueden ser fijos o configurables por el programador; estos parámetros son: a) Bits de datos: Se refiere a la cantidad de bits de transmisión, es decir, el tamaño de cada paquete de bits enviado. Comúnmente se manejan bytes de 8 bits, sin embargo, en la comunicación serial, pueden enviarse paquetes de 5,7 u 8 bits. Esto depende del tipo de información que se desee enviar. Por ejemplo, el código ASCII utiliza 7 bits para poder codificar los 127 caracteres que lo conforman, mientras que el ASCII extendido usa 8 bits pues cuenta con 255 caracteres. Los paquetes incluyen los bits de inicio, parada, bits de datos y paridad. 45 b) Bits de parada: Se utilizan para indicar el fin de comunicación de un único paquete. Normalmente se utilizan 1, 1.5 o 2 bits. Puesto que cada uno de los dispositivos conectados al bus serial tiene su propio reloj, éstos no están sincronizados normalmente. Los bits de parada, además de indicar el fin de un paquete de información, dan tiempo a los relojes de adquirir un margen de tolerancia para la siguiente transmisión/recepción de información. Entre más bits de parada se utilizan, mayor es la tolerancia y más segura es la transmisión de información, pero la velocidad disminuye. c) Paridad: Es otra medida de seguridad para checar si la información enviada está siendo recibida de forma correcta. Existen cuatro tipos de paridad, que son par, impar, espaciada y marcada, así como existe la opción de no usar paridad. Para paridad par, el puerto serial fija el bit de paridad (que resulta ser el último bit después de los bits de datos) a un valor definido para asegurarse que la transmisión tenga siempre un número par en estado alto lógico. En cambio, si la paridad es impar, se busca que siempre se tenga un número impar de bits en estado alto lógico. De esta forma, si la información está siendo afectada por ruido, habrá paquetes que no cumplan con las características de paridad y se pueden detectar los errores. d) Baud rate: Es la velocidad de transmisión de la información. Indica el número de bits por segundo que se transmiten. Esto quiere decir que el reloj debe muestrear tantas veces por segundo las líneas de recepción como se indique en el baudaje o velocidad de transmisión. También se enviarán tantos bits por segundo como se indique en el baudaje. A mayor baudaje, más información se puede transmitir en menos tiempo pero la distancia entre dispositivos debe ser menor. Para largas distancias, el baudaje debe ser bajo. 46 Existen varios protocolos de comunicación serial ampliamente utilizados. Los protocolos han ido variando conforme transcurre el tiempo y se desarrollan nuevas tecnologías. También han sido más utilizados algunos protocolos en cierto tipo de aplicaciones y menos en otras, pero existen en particular tres protocolos que se han difundido mucho; estos protocolos son RS-232, RS-485 y RS-422. RS-232 (Estándar ANSI/EIA-232) es la más común de todas las comunicaciones seriales. Su uso comenzó a ser difundido principalmente por IBM, por lo que muchas computadoras de escritorio y dispositivos compatibles con ellas lo tienen. Se utilizaron mucho para conectar periféricos como ratones, teclados, impresoras, módems y muchos equipos de instrumentación industrial. RS-232 se limita a comunicación entre dispositivos punto a punto y el puerto serial de la computadora. Uno de los elementos estandarizados por la norma para la comunicación RS-232 es el conector, llamado DB9, que consta de 9 pines. Los pines de datos son Tx (transmisión) y Rx (recepción). Para el handshake se utiliza el pin 7 (RTS), el pin 8 (CTS), el pin 6 (DSR), el pin 1 (DCD) y el pin 4 (DTR). El pin de tierra es el pin 5 y finalmente, el pin 9 se utiliza sólo para conectar PLC’s (Programmable Logical Controller) a un modem telefónico. Este tipo de comunicación maneja niveles de voltaje entre -12[V] y 12 [V], donde -12[V] representan un 1 lógico y 12 [V] representan un 0 lógico. El estado de reposo en la entrada y salida de datos es de -12[V]. Para poder comunicar dos dispositivos por comunicación serial, los siguientes pines deben estar conectados entre sí: 47 (Figura 2.15 – Líneas de comunicación de un bus de comunicación serial)[2.20] RS-422 es el protocolo serial utilizado en las computadoras Macintosh. En este tipo de comunicación, las señales enviadas son diferenciales, es decir, referidas a una tierra propia del dispositivo conectado, mientras que en RS-232 se utilizan señales referenciadas a tierra. Las ventajas de este tipo de comunicación dada su naturaleza diferencial es que se vuelve una comunicación menos susceptible de ser afectada por ruido e interferencia, lo que permite transmisiones de datos a mayores distancias. Es por lo anterior, que algunas aplicaciones industriales utilizan este protocolo. RS-485 es una mejora sobre RS-422 en el número de dispositivos que se pueden conectar al bus. Así, en RS-485, se pueden tener hasta 32 dispositivos en el bus en vez de 10. Este tipo de comunicación es la más apta para aplicaciones industriales por el gran número dispositivos que se pueden conectar al bus. Puesto que RS-485 es una mejora del protocolo RS-422, todos los dispositivos aptos para comunicarse por RS-422 también pueden comunicarse por RS-485. La distancia de transmisión también se ve afectada positivamente por la alta inmunidad al ruido, logrando una correcta comunicación a distancias entre dispositivos de hasta 4000 pies. 48 2.14 - PROTOCOLOS DE COMUNICACIÓN ESTANDARIZADOS POR OBD-II OBD-II ha estandarizado más de un protocolo de comunicación dado que las distintas compañías automotrices diseñaron e implementaron durante años algunos protocolos, creando todo un sistema de sensores, actuadores y unidades de control adecuados a dichos protocolos. Estos protocolos de comunicación son los siguientes: a) SAE J1850 PWM, SAE J1850 VPW, ISO9141-2, ISO14230-4 (KWP2000) y desde 2003 también ISO 15765-4/SAE J2480. A continuación una explicación breve de cada uno. SAE J1850 PWM y SAE J1850 VPW son protocolos utilizados principalmente en automóviles Ford y GM. PWM (Pulse Width Modulation) es un protocolo que utiliza un bus de dos líneas y modulación de ancho de pulso con una velocidad de transmisión de 41.6 kb/s. Esta comunicación es diferencial como en el caso del protocolo RS-422. Un pulso de entre 4.25 – 20 [V] es un 1 lógico mientras que cualquier señal por debajo de 3.5 [V] es un 0 lógico. Para el caso de VPW, principalmente utilizado en automóviles de GM, el bus utiliza únicamente una línea y la velocidad de transmisión es de 10.4 kb/s. b) ISO 9141-2 es un protocolo de comunicación serial de una sola línea en el bus con velocidad de 10.4 kb/s; es similar a RS-232 pero con niveles lógicos distintos, no hay bits de handshake y sólo utiliza una línea en vez de las dos que utiliza RS-232. Lo utilizan vehículos de Chrysler, algunas compañías asiáticas y unas cuantas europeas. La longitud máxima de los mensajes de 12 bytes. 49 c) ISO 14230-4 (KWP200) El bus es idéntico al de ISO 9141-2 así como la velocidad de transmisión de la información pero la longitud de los mensajes puede ser de hasta 255 bytes. d) ISO 5765 (CAN) es el protocolo más utilizado actualmente. Su uso es obligatorio para todos los vehículos que se comercializan en Estados Unidos desde el 2008. Existen variantes que trabajan a 250 kb/s y otras a 500 kb/s. Utiliza dos líneas de comunicación en el bus. De este protocolo de comunicación nos ocuparemos más adelante en el capítulo de desarrollo puesto que este es el protocolo que utilizan los dos automóviles que se utilizaron para pruebas para la realización de esta tesis. Así mismo, este protocolo es el más utilizado actualmente y existe una fuerte tendencia a sustituir los otros protocolos por éste dada su mayor velocidad de transmisión y mejor blindaje ante interferencias. 50 REFERENCIAS [2.1] Linde, Arvid; How your car Works – your guide to the components & systems of modern cars, including hybrid & electric vehicles, p.46 [2.2] Linde, Arvid; How your car Works – your guide to the components & systems of modern cars, including hybrid & electric vehicles, p.48 [2.3] http://web.mit.edu/16.unified/www/SPRING/propulsion/notes/node25.html [2.4] Duffy, James E; Modern Automotive Technology; Tinley Park, Illinois, The Goodheart-Wilcox Company, INC, 2009, p. 6 [2.5] OBD-II Code Reader Owners Manual, Innova Electronics Corp. [2.6] http://askville.amazon.com/Whats-air-induction-system-problem- car/AnswerViewer.do?requestId=10566693 [2.7] Linde, Arvid; How your car Works – your guide to the components & systems of modern cars, including hybrid & electric vehicles, p. 709 [2.8] Duffy, James E; Modern Automotive Technology; Tinley Park, Illinois, The Goodheart-Wilcox Company, INC, 2009, p. 15 [2.9] Linde, Arvid; How your car Works – your guide to the components & systems of modern cars, including hybrid & electric vehicles, p. 724 [2.10] http://automecanico.com/auto2000/dif8.jpg [2.11] Knowles, Don; Shop Manual for Automotive Supension & Steering Systems, p. 6 [2.12] http://www.automotriz.net/tecnica/images/conocimientos-basicos/49/freno- hidraulico.GIF [2.13] Henderson, Bob et al; OBD-II & Electronic Engine management Systems, Haynes Techbook, Haynes North America, Inc. 2006. [2.14] http://www.greebid.com/upload/pro/renault-12-pin-to-OBD-II-female-connector- adapter-OBD-II.jpg [2.15] Santini, Al; OBD-II Functions, Monitors & Diagnostique Techniques, Delmar - Cengage Learning, NY, USA, 2011. [2.16] OBD-II Code Reader Owners Manual, The Easiest And Best Way To Troubleshoot 1996 and Newer OBD II Vehicles, Innova Electronics Corp.Instruction MRP-#93-0178, printed in Taiwan. 51 [2.17] http://www.obdtester.com/OBD-II_connector [2.18] http://www.dec.ny.gov/images/air_images/checkengine2.JPG [2.19] http://www.tikina.net/navigation/DB9.jpeg [2.20] http://www.interfacebus.com/Automotive_SAE_J1850_Bus.html [2.21] http://www.interfacebus.com/CAN-Bus-Description-Vendors-Canbus-Protocol.html [2.22] http://digital.ni.com/public.nsf/allkb/039001258CEF8FB686256E0F005888D1 52 CAP. 3 – DESARROLLO En este capítulo se dará una explicación de partes del circuito utilizado en conjunto para conformar los sistemas de adquisición de información, de traducción de la misma y de retransmisión hacia un celular. Como desde ahora podrá suponerse, la división en estas tres partes es la forma más simple de explicar el sistema completo. Así mismo, se explicará la estructura del programa y la forma en que éste trabaja. Como se vio en el capítulo de antecedentes, los protocolos de comunicación que maneja OBD-II son protocolos de comunicación serial pero son distintos en algunos aspectos de los protocolos manejables por los microcontroladores que se consideraron para la realización de esta tesis. El más común de los protocolos de comunicación serial que manejan todos los microcontroladores propuestos es RS-232 y de hecho fue éste el que se terminó utilizando dadas sus adecuadas capacidades de velocidad de transmisión, simpleza en el diseño de los circuitos de acoplamiento entre etapas, disponibilidad de piezas en tiendas de componentes electrónicos, simplicidad de programación del código y librerías disponibles para los distintos microcontroladores adecuadas para esta comunicación. Así pues, se explicará el desarrollo de este sistema cronológicamente. De ahora en adelante se dividirá al dispositivo diseñado en los tres subsistemas (adquisición, interpretación, retransmisión) que se desarrollaron en tres etapas, siendo la primera la correspondiente al desarrollo del subsistema de adquisición y comunicación con el módulo de OBD-II. Una vez que se estableció la comunicación correctamente con dicho sistema en el auto, se procedió a interpretar la información adquirida y finalmente se llevó a cabo la 53 programación del módulo de retransmisión por GSM hacia un celular. Los tres sistemas se desarrollaron primero cumpliendo únicamente con las funciones más básicas para verificar que era posible seguir refinándolos para cumplir con todos sus objetivos. Una vez cumplido lo anterior se procedió a arreglar algunos problemas y detalles de todos ellos, con lo cual se fue perfeccionando el funcionamiento de todos. 3.1 - SISTEMA DE ADQUISICIÓN El principal objetivo del sistema diseñado es el de leer códigos de error (DTC’s) generados por el propio sistema de OBD-II en caso de generarse y ser enviados a la brevedad al conductor para poder darle a conocer la naturaleza de la falla. Asimismo, la transmisión de la información hacia un número preprogramado correspondiente a un taller con el código de error y otra información útil como el número de serie del automóvil. Es evidente que para que el sistema diseñado pueda funcionar, primero es necesario establecer una comunicación directamente con el módulo de OBD-II para monitorear constantemente la aparición de códigos de error. Sin el monitoreo constante, una falla que puede resultar grave pasará inadvertida salvo por el testigo del MIL que se enciende en el tablero en algunas ocasiones. El MIL algunas veces se enciende y se queda encendido si la falla no es muy grave, pero en caso de presentarse una falla grave, el testigo parpadeará para indicar al conductor que es mejor apagar el auto para no afectar a otros componentes o sistemas. Aun así, el conductor no tiene idea de lo que puede estar pasando en su auto y ésta puede ser información valiosa perdida. Si bien es cierto que no es crítico monitorear en el orden de varias decenas o centenas de veces por segundo el estado de nuestro automóvil, 54 sí es conveniente monitorear al menos varias veces por minuto el mismo con la finalidad de detectar códigos de error pocos segundos después de haber sido generados. En general las fallas que pueden aparecer no afectarán a otros sistemas en menos de unos minutos debido a que ya existen métodos de control de fallas y de reacción o compensación de muchos de los sistemas ante malos funcionamientos. Por ejemplo, cuando existe una fuga en las líneas de vacío, los sensores de oxígeno notarán que la mezcla aire-combustible no es rica y no brinda la potencia necesaria, por lo que compensará inyectando más combustible hasta que se corrija el comportamiento; si el nivel de combustible necesario que se inyecta llega al límite, dentro de poco tiempo se generará un DTC P0171 o P0174[3.1]. Los procedimientos de control de fallas nos dan la ventaja de poder conservar un sistema cuya velocidad de transmisión de información (directamente relacionada con la velocidad de muestreo) no necesita ser elevada. Una vez inicializado el módulo de escaneo de errores verificará el estado del auto aproximadamente cada 15 segundos. En caso de detectar la aparición de un código de error, se procederá a interpretar el código y a reenviarlo. Todo ello toma menos de un minuto, tiempo suficiente para alertar al conductor y permitirle que reaccione. Como se vio en el capítulo de antecedentes, cualquier protocolo de comunicación avalado por el estándar de OBD-II trabaja en velocidades de transmisión de información de al menos 10.4 kb/s, pero esto es únicamente necesario para la correcta comunicación entre sensores de condiciones cambiantes debido al camino. Hay que tomar en cuenta por ejemplo que durante el manejo, las vibraciones del camino transmitidas directamente hacia el automóvil a través de llantas, suspensión y demás componentes pueden llegar a alcanzar frecuencias de hasta 30 [Hz]; lo anterior quiere decir que durante el manejo las condiciones 55 de rugosidad del pavimento por el que circula el auto pueden llegar a tener periodos de cambio de décimas o centésimas de segundo que podrían implicar derrape de llantas (control de módulo ABS), condiciones ásperas de manejo que deben ser contrarrestadas rápidamente por suspensiones activas, controles de tracción, etc. Otro ejemplo en el que es necesario que la información sea transmitida a altas velocidades (500 kB/segundo)[3.2] entre sensores es en frenadas bruscas en las que puede requerirse de la pre-tensión de cinturones de seguridad, reacción de los sistemas como bolsas de aire, etc. en caso de colisión. De hecho, una de las razones más fuertes para que Estados Unidos haya comenzado a pedir como estándar el uso del protocolo CAN para todos los autos comercializados a partir de 2008 es que es el protocolo que soporta las mayores velocidades, las mayores distancias de cableado entre sensores y actuadores, mayor número de componentes y menor interferencia en sus líneas. El sistema diseñado y con el que se realizaron pruebas está enfocado a automóviles que manejan dicho protocolo. 3.2 - ELECCIÓN DEL MICROCONTROLADOR Los microcontroladores son dispositivos de control empaquetados en un circuito integrado. Están integrados por varios subsistemas muy similares a los de un microprocesador de una computadora, sin embargo, los microcontroladores están diseñados de tal forma que puedan ser autosuficientes y de bajo costo. Para ello, cuentan con una unidad aritmético-lógica que realiza todas las operaciones matemáticas del microcontrolador; cuentan a su vez con temporizadores, puertos para entradas y salidas digitales y analógicas, memoria RAM, un oscilador que permite coordinar la ejecución de las instrucciones del microcontrolador, entre algunos otros elementos. 56 Para esta tesis, se necesita utilizar un microcontrolador para contar con un dispositivo que sin interferir con el funcionamiento del auto y de forma autónoma recupere constantemente información del auto y revise si éste se encuentra en condiciones correctas de funcionamiento o si existe una falla. Una computadora personal resulta absurda para tal aplicación pues son bastante más grandes, pesadas, caras y con muchos más recursos (que no se utilizarían) que un microcontrolador. Los dos microcontroladores más ampliamente utilizados académicamente por su gran capacidad y polivalencia son los microcontroladores PIC de la compañía Microchip y los AtMega de la compañía Atmel (utilizados en las tarjetas de desarrollo Arduino). A pesar de ser circuitos integrados que contienen casi todo lo necesario para trabajar, la flexibilidad de los microcontroladores sólo se logra dejando la posibilidad a los ingenieros y diseñadores de conectarles diversos componentes electrónicos. También es necesario que se cree un código de programación que proporcione al microcontrolador las instrucciones a ejecutar una vez que se encuentre trabajando. Para ello, existen lenguajes de programación distintos que van desde el código máquina hasta lenguajes de programación de alto nivel como el lenguaje G que utiliza Labview. Actualmente existe una alternativa que brinda las ventajas de Arduino y PIC: el ChipKit Max32. Éste es un microcontrolador PIC32 embebido en una tarjeta de desarrollo similar a las de Arduino, pero con más memoria flash, mayor velocidad, etc. 57 A continuación se presenta una tabla comparativa de los microcontroladores/tarjetas: MICROCONTROLADOR PUERTOS UART PUERTOS DIGITALES MEMORIA FLASH RAM FREC. OSCILADOR IDE PROPIO PIC 18F2550 1 18 32K 2K 20 MHz NO ARDUINO UNO 1 14 32K 2K 16 MHz SÍ ARDUINO MEGA 4 54 128K 8K 16 MHz SÍ CHIPKIT MAX32 6 83 512K 128K 80 MHz SÍ (Figura 3.1 – Tabla comparativa de microcontroladores/tarjetas de desarrollo) Los microcontroladores PIC están diseñados para poder formar parte de sistemas embebidos con únicamente la cantidad estrictamente necesaria de componentes (como cualquier microcontrolador), pero la compañía ChipKit ha desarrollado tarjetas que integran al microcontrolador junto con otros elementos como osciladores externos de cuarzo, conexiones directas a sus puertos de entradas y salidas, convertidores de niveles de voltaje para comunicación serial, leds indicadores, reguladores de voltaje, etc. para que los diseñadores puedan hacer pruebas de sus circuitos y programas en un ambiente más amigable antes de trasladar el diseño a una placa fenólica de diseño exclusivo para la aplicación deseada. El objetivo del presente trabajo de tesis es diseñar el circuito de adquisición y transmisión de información obtenida por los distintos sensores del auto y la detección de errores, así como la construcción de un modelo funcional que permita observar el funcionamiento del circuito. Es por lo anterior que se seleccionó un microcontrolador PIC32 embebido en una tarjeta de pruebas Max32. Existen otras 4 razones por las cuales se seleccionó este microcontrolador sobre otros – la primera es que las tarjetas Max32 vienen con un pequeño microcontrolador anexo que sirve de bootloader; esto quiere decir que contiene el código necesario para poder transferir el 58 código de programas a través de una conexión serial sin la necesidad de un programador dedicado exclusivo. La segunda razón vuelve a estas tarjetas sumamente atractivas para desarrollo, pues permite el uso del lenguaje de programación de Arduino así como de su ambiente de desarrollo (IDE) para escribir, depurar, compilar y transferir el código. Arduino cuenta con licencias de código abierto tanto para sus circuitos como para el software mediante el cual se programan los microcontroladores, por lo que el uso y modificación de cualquiera de sus versiones de hardware o software no infringe ninguna ley ni requiere del pago de derechos, gracias a lo cual, el equipo de ChipKit ha sido capaz de modificar su ambiente de desarrollo y compiladores para adaptarse a los microcontroladores PIC32. La siguiente razón es que el ambiente de programación de Arduino y su lenguaje de programación son muy amigables, pues sus sentencias son muy similares a la estructura de cualquier lenguaje de programación basado en C y cuentan con una gran cantidad de librerías dedicadas y muchos foros de ayuda en internet. 3.3 - LIMITACIONES DE LA PROGRAMACIÓN DEL PROYECTO Hay una pequeña variación en la codificación de la información que brindan los autos con protocolo de comunicación CAN sobre los demás (más adelante se hablará a detalle de esto), pero en realidad el sistema bien podría servir para cualquier protocolo aceptado por OBD con la modificación de un par de líneas del código del microcontrolador. Sin embargo, más vale tener presente desde ahora que dado que los autos disponibles para pruebas de esta tesis utilizan CAN como protocolo, la programación se llevó a cabo únicamente para vehículos de esta naturaleza. 59 Como se decía antes, el sistema debe ser capaz de adquirir de alguna forma la información generada por el módulo de diagnóstico del propio automóvil; para ello hay que traducir del protocolo (en este caso CAN) a RS-232. El problema del presente trabajo con la utilización de un traductor de OBD/CAN a RS-232 fue que, como la comunicación serial de este tipo está cayendo en desuso actualmente por la aparición de nuevas tecnologías como USB 3.0 de alta velocidad, comunicación por bluetooth, etc., en México y en Estados Unidos es muy difícil conseguir los circuitos integrados traductores. La importación de estos circuitos desde China resulta muy cara, considerando que los 2 circuitos integrados que se necesitan son simplemente microcontroladores PIC preprogramados. De la misma forma, los cables existentes que incluyen en su empaquetado el circuito funcional de interpretación, no se consiguen ni en México ni en Estados Unidos, pero fue posible adquirir uno de ellos con envío gratis a México. Considerando el costo de envío, los componentes adicionales que debe incluir el circuito y el costo de fabricación del circuito impreso, resulta una mejor opción simplemente comprar el cable que tiene empaquetado el mismo circuito que se presenta en la nota de aplicación del IC ELM327. Cualquier persona interesada en cualquier momento puede imprimir el layout de los componentes a conectar que se indica en la nota de aplicación de los microcontroladores preprogramados y hacer el PCB, soldar los componentes y obtener el mismo resultado que en el circuito que se vende ensamblado. Para esta tesis no se llevó a cabo ese trabajo por el costo que implica y porque no hay nada innovador en ello; el circuito está más que probado y resuelto y no es objetivo de esta tesis probar el funcionamiento de las partes del circuito. Como referencia, al final de la tesis en los apartados se puede encontrar el layout de los componentes electrónicos del traductor de OBD/CAN a RS-232. 60 3.4 - ACONDICIONAMIENTO Y TRADUCCIÓN ENTRE PROTOCOLOS Como ya quedó establecido anteriormente, el protocolo OBD-II para la detección de fallas y comunicación de la ECU con aparatos especiales se realiza de acuerdo a uno de entre 4 protocolos distintos: J1850 PWM, J1850 VPW, ISO9141/14230 e ISO15765 (CAN). Ninguno de los anteriores trabaja con los mismos niveles de voltaje con los que trabajan los microcontroladores propuestos, que son niveles TTL. El protocolo de comunicación CAN es un protocolo cuyas siglas significan Controller Area Network. Fue desarrollado por la firma alemana Robert Bosch GmbH y patentado en 1982. Originalmente se pensó para aplicaciones de comunicación industrial o de campo, pero con el tiempo comenzó a ganar cada vez más popularidad en la rama automotriz. Se utiliza como una topología bus para la transmisión de mensajes en entornos en los que se tiene más de una CPU (Central Processing Unit). Esto es importante en los automóviles actuales puesto que cuentan con más de una ECU para poder controlar los distintos sistemas. Para reducir el cableado y el ruido debido al gran número de cables, el protocolo CAN utiliza conexiones multiplexadas. La comunicación con este protocolo se realiza de forma asíncrona, serial y multicast; esto último quiere decir que todos los sistemas conectados al bus pueden enviar y recibir información de acuerdo a una temporización determinada. CAN utiliza pares trenzados de cables y apantallados para reducir la interferencia; así mismo se conectan resistencias de 100[Ω] entre los cables para evitar convertirlos en antenas. Con este blindaje a la interferencia, se logran velocidades de comunicación de hasta 40 kbps hasta a 1000m de distancia o 1 Mbps hasta una distancia de 40m. En los coches por cuestiones de seguridad y para evitar pérdidas de datos, se utilizan velocidades de 125 kbps y 500 kbps. 61 Cada nodo conectado al bus CAN tiene la capacidad de monitorear toda la red y saber si algún otro nodo está transmitiendo información en ese momento. De ser así, ningún otro nodo transmite información en ese momento. Si en un instante, dos nodos que esperan su turno para enviar un mensaje detectan que la red está libre y comienzan la comunicación simultáneamente, se detecta la colisión y por medio de un método de arbitración basado en prioridades se resuelve el problema. Para que cada nodo se pueda conectar al bus es necesario tener un dispositivo de interfaz que controle los datos enviados y los recibidos. La compañía Microchip creó un circuito integrado (MCP2551) que permite la conexión de un controlador de CAN directamente con el bus de transmisión y recepción. Una de las características de este circuito integrado es que puede trabajar con potenciales eléctricos de 12 [V] o 24 [V], que como sabemos, no son compatibles con los del microcontrolador que debe adquirir los datos. Aun más, el protocolo no permite que los datos sean interpretados directamente por el microcontrolador por lo que aun restan varias etapas por explicar para acondicionar las señales enviadas por el bus CAN hasta el microcontrolador. La utilización del MCP2551 sólo permite la conexión de un controlador de por sí diseñado para CAN con el bus, pero no traduce de este tipo de comunicación a otro. Es aquí en donde entra otro circuito integrado – el ELM327. El ELM327 es otro microcontrolador preprogramado por Microchip que permite traducir de un protocolo de comunicación avalado por OBD-II a comunicación serial RS-232. Ésta última sí es la comunicación entendida por los microcontroladores. En el capítulo anterior ya se explicaron las características de este tipo de comunicación. 62 (Figura 3.2– Diagrama de conexión del ELM327 y el MCP2551)[3.3] A pesar de que el tipo de comunicación es entendible por los microcontroladores en cuanto a la forma de codificar los caracteres enviados, los microcontroladores no pueden conectarse directamente a dispositivos seriales RS-232 ya que los niveles de voltaje que éstos últimos manejan están entre 12[V] y -12[V], mientras que los microcontroladores deben trabajar con voltajes TTL, es decir, de entre 0[V] y 5[V]. Para ello, se debe utilizar un circuito que permita acondicionar una última vez la señal antes de enviarla al microcontrolador. Para ello, el fabricante de componentes electrónicos MAXIM creó una familia de circuitos integrados con este propósito, como el MAX232, MAX233 o el MAX3323. 63 (Figura 3.3– Diagrama de conexión del MAX233) Una vez realizadas todas estas etapas de acondicionamiento y traducción de los mensajes entre protocolos, es posible establecer la comunicación entre el microcontrolador y las ECU del auto para poder enviar y recibir información útil para el sistema en desarrollo. 3.5 - ESTRUCTURA DEL PROGRAMA DE ADQUISICIÓN DE DATOS Hay que considerar para esta parte que uno de los componentes utilizados para la etapa de acondicionamiento y traducción entre protocolos es el microcontrolador ELM327. Este microcontrolador está preprogramado por Microchip y permite la reprogramación de algunas de sus funciones internas para poder mejorar la comunicación. Puesto que la reprogramación de funciones de la comunicación se puede hacer en cualquier momento, incluso estando conectado el dispositivo de adquisición de datos al auto, el bus utilizado para enviar datos a la ECU es el mismo que el bus para reprogramar las funciones del microcontrolador de traducción. Por ello, es necesario distinguir entre comandos enviados a la ECU de los enviados al microcontrolador. Al final de esta tesis, en el apartado 64 de anexos, se puede encontrar una tabla con los comandos necesarios para reprogramar las funciones del microcontrolador ELM327. En la figura 3.4 se presenta el diagrama de flujo que sigue el programa para la adquisición de datos. 65 (Figura 3.4 – Diagrama de flujo del programa de adquisición de datos) ( t~It 'Q ) 1 c._,.,.;; ... .. , .......... ......... oóo 1 e ............ ... -_ .. ..... _-- 1 0 .... _ j ,od .. ,.., ... " .. ~~..,.;". ""',." "'oo j Roin ",*,,, - ,,,,ni,,,,", ,.,, ElWl27 ~ .. _.., " Co~, _ " " .. '_ .... ......... oóo - ... -. .. ...,. Es ..... 66 Para la etapa de pruebas, puesto que se diseñaron las partes de adquisición de datos, la de interpretación de códigos de error y la de transmisión de información de errores en tres etapas distintas, las pruebas del circuito de adquisición se realizaron primero con la adquisición de información específica, como temperatura del anticongelante, del aceite del motor, revoluciones por minuto, voltaje en la batería, etc. de forma que se pudieran comprobar fácilmente los datos obtenidos con instrumentos sencillos. Para poder observar que la comunicación se realizara correctamente, los mensajes enviados por el PCM del auto fueron desplegados sin interpretar e interpretados en una pantalla de cristal líquido conectada directamente al microcontrolador. (Figura 3.5 – Fotografía de la conexión de la pantalla de cristal líquido al microcontrolador para depurar la comunicación) Cada mensaje enviado hacia el PCM fue desplegado por unos segundos en la pantalla de cristal líquido y luego se desplegó la respuesta en la misma pantalla. Este fue un método de 67 depurar el código y de probar la correcta configuración de parámetros de comunicación serial entre el microcontrolador y el ELM327 (con el MAX233 de por medio). La recepción de caracteres basura hizo evidente la falla en la configuración de parámetros como el baudaje. Una de las etapas críticas de desarrollo de este subsistema fue en la detección de una falla con la comunicación entre el microcontrolador y el ELM327. Cuando se configuró correctamente la comunicación desde una computadora hacia el ELM327 a través de un puerto serial, se pudo reconocer que los parámetros de la comunicación RS-232 eran correctos. Sin embargo, a la hora de configurar con los mismos parámetros el microcontrolador, la pantalla de cristal líquido sólo desplegaba caracteres basura. Tomó un tiempo encontrar la verdadera razón de esto y a continuación se da explicación de ello: dado que la comunicación serial depende en gran medida de la variación de los niveles de voltaje, es necesario mantener niveles comunes de referencia a través del tiempo. Cuando se conectó el MAX233 al circuito, no se hizo el acoplamiento correctamente de los niveles de referencia (GND) entre ELM327 y el microcontrolador, por lo que habiendo variaciones en los niveles de voltaje cada vez que se enviaba un caracter por las líneas de RS-232, el ELM327 recibía también variaciones de voltaje, pero no las correspondientes a los caracteres enviados. Esto provocaba que la información transmitida hacia el ELM327 fuera errónea y que éste respondiera de la misma forma hacia el puerto de comunicación serial del microcontrolador. Una vez hecho este acoplamiento, los problemas de comunicación serial entre ELM327 y el microcontrolador se resolvieron finalmente. Para determinar que la falla estaba corregida y que no había niveles de voltaje variando entre el ELM327 y el PCM, se hizo uso de uno de los parámetros a configurar más simples del ELM327: la calibración de la lectura de voltaje de la batería. 68 El ELM327 tiene incluido un pequeño convertidor analógico-digital (ADC o Analogic to Digital Converter) que se utiliza para medir el voltaje de la batería y determinar que las lecturas y la información enviada/recibida es la correcta. Mediante los comandos AT del ELM327 se puede calibrar haciendo uso de un multímetro e igualando el valor leído por el ELM327 al del multímetro. Para ello sólo se necesita enviar el código “AT CV xxyy” donde las “xx” representan los Volts y “yy” las centésimas de Volt. Todos los comandos de configuración del ELM327 deben enviarse siempre incluyendo “AT ” al inicio, pues de lo contrario, la información es directamente enviada a través del ELM327 al PCM; si esto sucede, simplemente el PCM responderá con un mensaje que indica que no se comprendió la instrucción. Para poder saber si se calibró correctamente la lectura de potencial eléctrico del ELM327 basta con enviar un comando “AT RV” que quiere decir Read Voltage, a lo que el ELM327 debería responder algo como “12.78V”. En este caso la lectura fue 12.6V. (Figura 3.6 – Fotografía de la calibración de la lectura de voltaje del ELM327) La pequeña variación en el voltaje leído por el ELM327 es normal, pero se hizo la recalibración del mismo para obtener los valores exactos en la lectura. Hay que tener presente de todas formas que el ELM327 nunca hace mediciones de las variables que monitorean los sensores del automóvil. La calibración de esta lectura se hace sólo para 69 determinar si existen fallas en la alimentación del ELM327 o pueden existir fallas en el sistema eléctrico que puedan interferir con la comunicación de éste con el PCM. 3.6 - SUBSISTEMA DE INTERPRETACIÓN DE LA INFORMACIÓN Este subsistema se define así para ser consistentes con las otras partes del sistema, sin embargo esta etapa se lleva a cabo únicamente a nivel de software. Se trata de discernir entre caracteres útiles o caracteres basura. Si los caracteres tienen sentido, se les interpreta para averiguar qué código está enviando el PCM. El programa comienza por abrir la comunicación serial entre el microcontrolador y el ELM327, así como la comunicación con la etapa de retransmisión de información. Una vez que se ha llevado a cabo lo anterior, se entra en un ciclo infinito que aproximadamente cada 20 segundos verifica el estado del OBD-II, buscando DTC’s. Para ello se borra el búfer del puerto serial para asegurar que no se leen caracteres que hayan estado ahí por error. Luego se envía el código correspondiente (03) al ELM327 para solicitar los DTC’s presentes. Si los DTC’s no están completos, el código 03 para solicitar el despliegue de éstos no es el correcto (como se mencionó anteriormente, hay DTC’s que se almacenan temporalmente en el PCM y sólo encienden un MIL o generan un DTC permanente cuando se repiten las condiciones de falla). Para el proyecto de tesis que aquí se desarrolla, únicamente se hará la verificación de códigos de error confirmados mediante el envío del código 03 puesto que no es conveniente alertar a un conductor de condiciones que pudieron haber detectado una falla de baja importancia y que no se han repetido. 70 Con el envío del código 03, el PCM debe responder una serie de caracteres que deben incluir un mensaje de confirmación de lectura correcta, así como los códigos de error detectados. Una respuesta al envío del código 03 podría ser la siguiente: 43 01 33 00 00 00 00 El 43 representa una confirmación de lectura de un código 43. Si el código enviado desde el microcontrolador hubiera sido un 02, la respuesta que se esperaría sería un 42; lo mismo para los demás códigos enviados. Esta primera parte de la respuesta resulta muy útil para depurar la información; si el microcontrolador envía un código 03 y el PCM no devuelve una cadena que inicie con 43, algo está mal con la comunicación serial y el resto de los caracteres seguramente serán basura. El siguiente caracter representa el tipo de falla detectada para todos los protocolos de comunicación aceptados por OBD-II excepto para CAN. Para todos los protocolos excepto CAN indica el tipo de falla de acuerdo a la siguiente figura: 0 P0 Códigos de Tren Motriz (Powertrain) - Definidos por SAE 1 P1 " " - Definidos por armadora 2 P2 " " - Definidos por SAE 3 P3 " " - Definidos en conjunto por SAE y armadora 4 C0 Códigos de chasís - Definidos por SAE 5 C1 " " - Definidos por armadora 6 C2 " " - Definidos por armadora 7 C3 " " - Reservados para el futuro 8 B0 Códigos de carrocería - Definidos por SAE 9 B1 " " - Definidos por armadora A B2 " " - Definidos por armadora B B3 " " - Reservados para el futuro C U0 Códigos de red/eléctricos - Definidos por SAE D U1 " " - Definidos por armadora E U2 " " - Definidos por armadora F U3 " " - Reservados para el futuro (Figura 3.7 – Definición del segundo par de dígitos de una respuesta a un código 03) 71 Para el caso de CAN, esta información se encuentra en el tercer par de caracteres. Para CAN el segundo par de caracteres indica el número de DTC’s presentes en la memoria del PCM. En algunos casos resulta útil para saber si existe más de 1 DTC, sin embargo para el sistema diseñado para esta tesis, se hace la lectura completa de la cadena de caracteres enviada que contiene todos los DTC’s presentes y se hace la interpretación de todos ellos. La respuesta anterior (43 01 33 00 00 00 00) en CAN sería la siguiente: 43 01 01 33 Donde el segundo par de dígitos indica la existencia de 1 DTC. Los siguientes caracteres de la respuesta son idénticos para todos los protocolos incluyendo CAN. Leyendo a partir del “01 33” se puede obtener la siguiente información:  El 0 indica, como ya se mencionó, la existencia de un código P0, es decir de tren motriz definido por SAE o genérico.  Los otros 3 caracteres “1 33” indican el código específico. Así, la respuesta completa se convierte en un código P0133, que corresponde a “Oxygen sensor circuit slow response” o “Respuesta lenta del circuito de sensor de oxígeno”. De esta forma se pueden identificar todos los códigos pues todos siguen esta convención. Si existiera más de un DTC, después del 01 33 seguirían los demás códigos almacenados. Por lo anterior, el código programado en el microcontrolador separa la cadena de la respuesta en grupos de 4 caracteres y por cada 4 caracteres hace la interpretación del DTC correspondiente. Esta información se interpreta y para cada DTC se genera un mensaje con la interpretación del código, que luego se almacena en una variable String para texto. Cuando toda la cadena de caracteres ha sido interpretada, el String se termina y se envía a la siguiente etapa, la de retransmisión de la información. 72 3.7 - SUBSISTEMA DE TRANSMISIÓN DE INFORMACIÓN – GSM La comunicación del módulo creado para diagnosticar fallas verificables por OBD-II se lleva a cabo siguiendo un protocolo GSM dada la compatibilidad de módulos con las tarjetas de desarrollo Arduino y Max32. Existe un módulo o shield de conectividad GSM que se puede conectar directamente sobre las tarejetas de un Arduino UNO o MEGA y el ChipKit Max32. Este módulo brinda distintas posibilidades de comunicación haciendo uso de la tecnología GSM. Se eligió el uso de un módulo de comunicación GSM en vez de otro tipo de comunicación de acuerdo a la siguiente matriz de decisión, cuyos parámetros son:  Disponibilidad del material.  Autonomía de alimentación.  Precio de componentes.  Costo de utilización.  Conocimientos de programación.  Tiempo de programación.  Componentes extras necesarios.  Portabilidad. 73 (Figura 3.8 – Matriz de decisión para módulo de transmisión de datos) En resumen, se eligió el módulo GSM para Arduino dado que el objetivo de esta tesis es desarrollar un sistema capaz de diagnosticar fallas y enviar la información de forma inmediata a un usuario; no es objetivo de la presente tesis desarrollar un nuevo protocolo de comunicación. El uso de bluetooth es una de las opciones contempladas como alternativa al módulo de GSM, con lo cual se tendría que agregar al sistema un aparato receptor de la información enviada por el bluetooth (como un celular con capacidad de recepción bluetooth). De ser así, sería necesario monitorear constantemente el tráfico de información hacia el celular a través del puerto bluetooth para saber si en determinado momento se recibe algún código de error, y entonces interpretar la información y dar aviso al usuario. El código debería permitir al celular permanecer en estado de alerta ante algún fallo, dejando todo el tiempo el radio bluetooth activo. Esto resulta en un alto consumo energético por parte del celular, pues es bien sabido que mantener el radio bluetooth de un celular consume una corriente considerable que provoca la descarga de la batería bastante más rápido que si no se utiliza. Para un sistema de diagnóstico que debe correr todo el tiempo, en especial en situaciones que pueden resultar críticas (como durante viajes de carretera, de noche, etc.), el implicar 74 una descarga de la batería del celular resulta una situación sumamente inconveniente. Este es uno de los motivos más fuertes para descartar el uso de fuentes externas de monitoreo de información como un celular. Si bien es cierto que siempre puede utilizarse en un automóvil un cargador de batería para el teléfono, esto sólo obliga al usuario a añadir accesorios al sistema que no forman realmente parte del mismo; son restricciones que vuelven al sistema dependiente de otros y menos confiable. Una razón más por la cual no se utiliza el bluetooth junto con un celular es por la incompatibilidad que existe entre el software que tendría que ser desarrollado para recibir e interpretar los códigos. Existen actualmente al menos dos sistemas operativos que abarcan la mayor parte del mercado de los celulares, cuyos códigos hacen complicada la homologación del procesamiento de la información desde las primeras etapas para lograr que ésta sea compatible con lectores en cualquier celular de cualquier marca. Además tendría que desarrollarse independientemente el código de lectura para cada sistema operativo dado que estos son completamente incompatibles entre sí. En etapas de diseño, el uso de radios bluetooth se incluyó en la programación para monitorear de forma inalámbrica la información proveniente del automóvil con fines de depuración de la misma. En los archivos anexos se incluye el código de transmisión/recepción de información mediante un puerto serial por software utilizado para comunicar a una laptop o computadora con bluetooth la información proveniente del sistema OBD-II del automóvil. 75 (Figura 3.9 – Fotografía de primeras pruebas del circuito con pantalla LCD) De la misma forma, para las etapas de diseño y con fines de despliegue de información para depuración, se incluyó el uso de pantallas de cristal líquido (LCD). Para poder llevar cabo la comunicación desde el microcontrolador con un celular mediante mensajes de texto (SMS), es necesario conectarse a la red GSM para poder enviar información a un usuario determinado por un número telefónico. Los celulares actuales que usan GSM para enviar mensajes de texto necesitan una tarjeta SIM. SIM quiere decir Subscriber Identity Module y es una pequeña tarjeta que contiene un número de identificación que consta de lo siguiente:  Un número que identifica al cliente.  El número internacional de identidad del suscriptor móvil.  Una clave secreta de autentificación. 76 El SIM contiene un microprocesador, memoria y se le programa un software para almacenar y procesar información que incluye el número telefónico, identificación para generar cargos a la cuenta del suscriptor y una pequeña cantidad de información del usuario como números telefónicos SMS guardados, etc. Para el caso de esta tesis, la SIM utilizada es de la compañía Telcel. La importancia de la operadora se explica a continuación. La configuración de la comunicación con la red GSM se lleva a cabo al inicio del código programado en el microcontrolador. GSM es una red que utiliza ondas de radio con frecuencias estandarizadas. Existen en todo el mundo los mismos rangos de frecuencia aceptados, pero cada compañía con los permisos asignados por el gobierno decide en qué rangos de frecuencia trabajar. Las frecuencias en las que trabaja GSM en todo el mundo son las siguientes: GSM 400 450.4 - 457.6 MHz Tx, 460.4 - 467.6 MHz Rx GSM 400b 478.8 - 486 MHz Tx, 488.8 - 496 MHz Rx GSM 850 824 - 849 MHz Tx, 869 - 894 MHz Rx GSM 900 880 - 915 MHz Tx, 925 - 960 MHz Rx GSM 1800 1710 - 1785 MHz Tx, 1805 - 1880 MHz Rx GSM 1900 1850 - 1910 MHz Tx, 1930 - 1990 MHz Rx (Figura 3.10 – Tabla de frecuencias asignadas a cada banda de GSM) Para el caso de Telcel, la frecuencia en la que trabaja es 1800 MHz, por lo que es necesario seleccionar la configuración adecuada desde que se inicializa el módulo de GSM. Para el caso de otras compañías, éstas pueden operar en más de una frecuencia, por lo que será necesario elegir la combinación adecuada. Toda la comunicación entre el microcontrolador y el módulo de GSM se lleva a cabo a través de las 2 líneas de comunicación serial Tx y Rx. A su vez, el módulo de GSM se comunica a la red usando una antena de Quad Band o cuatribanda, que permite transmisión y recepción de datos en todo el espectro de banda de GSM. 77 Para poder funcionar correctamente, el sistema necesita al menos dos puertos de comunicación serial: el primero para comunicar al microcontrolador con el ELM327 y el segundo para comunicar al microcontrolador con el módulo GSM. La utilización de la tarjeta Max32 evita la creación de un puerto de comunicación serial virtual puesto que este microcontrolador incluye 4 puertos seriales RS-232 por hardware, a diferencia de la tarjeta Arduino UNO que sólo cuenta con uno. Como se definió en el capítulo de comunicación serial, el envío de información a través de las líneas de transmisión/recepción está determinado por los tiempos en que se mantiene pulsado un nivel de voltaje equivalente a la tierra del circuito. Partiendo de esta idea, es posible configurar dos pines de entrada/salida digital del Arduino para fungir como los pines de transmisión y recepción siempre y cuando sean capaces de encenderse y apagarse en intervalos iguales o menores de tiempo al que se mantiene en estado bajo un puerto de comunicación serial por hardware; esta sería la alternativa de comunicación para solucionar la falta de puertos seriales por hardware de una tarjeta de desarrollo como Arduino UNO. Sin embargo, la comunicación serial por hardware brinda más seguridad y estabilidad que el puerto que se configura por software, y dado que la confiabilidad del sistema debe ser tratada con mayor cuidado, se prefiere que la comunicación entre los distintos módulos se haga únicamente por hardware. La velocidad de transmisión/recepción de la información puede llegar a ser determinante en muchos casos de la eficiencia de un sistema; en ocasiones no enviar la actualización de los datos a través de un puerto serial con una velocidad adecuada puede implicar pérdida de información valiosa. En estos casos, se deberá elegir la mayor velocidad de transmisión/recepción cambiando el baudaje en la configuración del microcontrolador. 78 Cuando la velocidad de transmisión de información no resulta crítica, es preferible elegir las velocidades más bajas posibles pues de esta forma se asegura que la probabilidad de transmitir caracteres erróneos se reduzca. A mayor velocidad de transmisión, mayor es la probabilidad de enviar caracteres equívocos debido a la rápida variación de niveles de voltaje que tiene que ocurrir. Por ejemplo, la velocidad de transmisión de información entre los distintos módulos del automóvil que utilizan el protocolo CAN debe ser muy superior a la del sistema que se está diseñando dado que existe un gran número de sensores y módulos que se intercomunican y que envían información crucial para la toma de decisiones que tendrán inferencia sobre los actuadores del automóvil. La falla en la transmisión de este tipo de información o la transmisión retardada puede resultar en una respuesta inadecuada de sistemas tan críticos como el control de estabilidad o el módulo antibloqueo para los frenos. De hecho, es tal la importancia de la velocidad de transmisión y la prioridad de los distintos módulos en cada momento que el protocolo de comunicación CAN debe gran parte de su complejidad a los medios que utiliza para la resolución de estos problemas. Sin embargo, en nuestro caso, cuando una falla ocurre en el automóvil, el módulo de OBD-II lo detecta y genera un código de error que se almacena hasta que externamente se borra (mediante un código apropiado, accediendo al sistema de OBD-II) o cuando se cumplen las condiciones críticas para borrarlo. Esta última forma de borrar un código sucede de forma automática a veces y deben cumplirse condiciones específicas. Para entender cómo se borran los códigos de error hay que entender antes cómo es que se generan. 3.8 - MONITORES Y CONDICIONES PARA EJECUTARLOS 79 Los códigos de error son una consecuencia del escaneo automático de los módulos que hace el sistema de OBD-II. Sin embargo, no se monitorean siempre los mismos módulos en un barrido constante. Para que los distintos módulos sean revisados por el sistema, se tienen que cumplir algunas condiciones. Cada verificación de los distintos módulos se denomina “monitor”. Para ejecutar un monitor, se deben cumplir condiciones tan simples como tener el motor andando en condiciones de ralentí; esto resulta así por ejemplo para el monitor del sistema de combustible. Sin embargo, hay monitores que no se ejecutan más que bajo condiciones muy específicas. Estas condiciones no se alcanzan en cualquier momento, y en esto radica la dificultad de llevar a cabo el escaneo de algunos de los sistemas del auto en algunas ocasiones. Los técnicos deben asegurarse de ejecutar los monitores correctos antes de poder decir que un auto no tiene una falla. Si el monitor no se ejecuta, tampoco se generará el código de error. Esto evidentemente no quiere decir que no exista una falla, sino únicamente que no se han cumplido las condiciones para verificar determinado módulo. Existen 9 monitores, de los cuales 3 son continuos, es decir que se ejecutan constantemente; sus criterios de habilitación son sencillos – operar el vehículo con el motor encendido en condiciones normales de manejo. Estos 3 monitores son:  Monitor comprehensivo de componentes (CCM).  Monitor de combustible.  Monitor de fallas en las explosiones de los cilindros. Los 6 monitores que no se ejecutan constantemente y que requieren de criterios de habilitación más complejos son los siguientes:  Monitor de eficiencia del catalizador.  Monitor del sistema evaporativo y de emisiones (EVAP). 80  Monitor de recirculación de gases de escape (EGR).  Monitor del catalizador calentado.  Monitor de sensor calentado de oxígeno.  Monitor secundario de inyección de aire (AIR). Algunos de los criterios de habilitación de los monitores sólo se cumplen bajo ciertas condiciones. Por ejemplo, el monitor EGR sólo se ejecuta cuando el automóvil se encuentra caliente y no en ralentí, pues en ralentí el sistema de recirculación de gases de escape se encuentra cerrado. Si el sistema no está listo o funcionando, cualquier monitoreo de las variables resultará en información que no puede ser comparada contra los umbrales programados en el PCM, así que no se puede tratar como información que brinde un diagnóstico del funcionamiento de un sistema. Cuando en un taller se debe llevar a cabo un escaneo completo de todos los sistemas del auto que OBD-II puede monitorear, es necesario ejecutar un trip o viaje, que en términos de OBD-II se refiere a cumplir con todos y cada uno de los criterios de habilitación de todos los monitores y posteriormente apagar el motor. Para ello, se ha diseñado un ciclo de manejo que asegura cumplir con esos criterios sin causar conflictos entre monitores. A continuación se presenta un diagrama de un viaje en terminología de OBD-II: 81 (Figura 3.11 – Diagrama de un viaje en terminología de OBD-II) Los pasos dentro de este ciclo son los siguientes:  Encendido en frío (temperatura del anticongelante-refrigerante menor a 50°C).  5-8 minutos de calentamiento en ralentí.  Primera aceleración a 55 mph con el aire acondicionado apagado y a la mitad del régimen del acelerador.  Primera etapa de crucero a 55 mph durante 3 minutos.  Primera desaceleración a 20 mph. 82  Segunda aceleración hasta 60 mph a ¾ del régimen del acelerador.  Segunda etapa de crucero a 60 mph durante 5 minutos.  Segunda desaceleración sin aplicar freno ni clutch. Como es de suponer, en algunas ocasiones durante condiciones de manejo normal se pueden llegar a cumplir con las condiciones para ejecutar determinado módulo, con lo cual, de existir una falla que caiga dentro de los sistemas que verifica este monitor, se generará un código de error y su respectivo almacenamiento de información de las condiciones en las que sucedió la falla (freeze frame data). El sistema aquí planteado es capaz de enviar la información de los códigos detectados por cualquier monitor puesto que la información que genera y almacena una vez hallada la falla es idéntica a la que generan los monitores más simples. Una vez que el monitor se ha ejecutado y se ha generado un DTC debido a una falla, pueden existir condiciones que apaguen el indicador luminoso (MIL o el testigo que observamos como el “Check Engine”) del tablero. Estas condiciones se cumplen al encender el auto 3 veces seguidas sin fallas y cumpliendo los criterios de habilitación del monitor que generó el DTC. En el caso del DTC generado en el Mazda MX-5, éste se mantuvo presente todo el tiempo que el auto estuvo encendido después de haberse generado. Las siguientes 3 veces que se encendió el auto en frío el indicador luminoso del tablero de una falla se mantuvo. Fue después de 3 veces de encender sin fallas en frío y sin presionar el pedal del acelerador que la luz se apagó. Este comportamiento sólo lo encontraremos en fallas que se presentan una vez y luego dejan de presentarse en sistemas que se checan por uno de los monitores más comunes, el de Sistema de Combustible. Sin embargo, aunque el testigo del MIL se apaga, el DTC sigue presente en el PCM. A partir de 83 que se ha apagado el MIL, el PCM enciende un contador de warm-ups; éstos consisten en encender el auto, alcanzar una temperatura de 72°C y haber tenido un incremento de temperatura de al menos 22.2°C. Cuando el auto ejecuta determinado número de warm-ups (números comunes son 40 y 80 aunque depende de cada fabricante), el PCM borra completamente el DTC. Una vez que se genera el código de falla, este se queda almacenado en el sistema de OBD- II para poder ser leído después con un escáner automotriz. Esta condición es aprovechada por el sistema diseñado para enviar información de fallas poco tiempo después de haber sido generado el DTC. No es crítico enviar el código inmediatamente después de haber sido generado, el sistema OBD-II de por sí no requiere de acciones inmediatas después de generar un DTC. En el caso de tener una falla grave, el indicador de falla del tablero parpadea para indicar al conductor que la falla puede causar problemas más graves de continuar así. En esos casos lo más recomendable es apagar el auto y trasladarlo a un taller con una grúa. El periodo de muestreo de la información puede estar en el orden de segundos para asegurar tener un sistema eficiente. Esto no sacrifica el correcto funcionamiento del sistema de diagnóstico pues en segundos bien se puede enviar el código de falla al celular receptor y alertar al conductor de la naturaleza de la falla. 3.9 - DESCRIPCIÓN DE CONEXIÓN DE LOS DISTINTOS SUBSISTEMAS Evidentemente para el desarrollo de todo el sistema fue necesario ir depurando cada uno de los subsistemas y verificando su correcto funcionamiento adquiriendo la información correcta y enviándola al siguiente subsistema, por lo cual fue necesario hacer las 84 conexiones pertinentes de ellos desde etapas tempranas. En este subtema se muestran algunas imágenes y breves explicaciones de la conexión de los distintos subsistemas para entender cómo es que se relacionan entre sí. Para empezar, el cable con el conector DLC de 16 pines que a su vez contiene al microcontrolador MCP2551 y al microcontrolador ELM327 tiene en el otro extremo un conector DB9 hembra, que es necesario conectar a una terminal macho. De esta terminal macho se toman los cables correspondientes a Tx, Rx y GND. Para poder programar el microcontrolador, es necesario interrumpir la conexión del cable Rx entre el microcontrolador y el MAX233. Esto asegura que la comunicación serial que existe entre el puerto USB de la computadora y el controlador/receptor de la comunicación serial de la tarjeta de desarrollo se dé de forma correcta. Si no se desconecta dicho puerto, el código desarrollado en el IDE no puede ser programado al microcontrolador. Para facilitar la depuración del código y poder reprogramar el microcontrolador sin dificultades, se añadió un switch para poder desacoplar esta parte del circuito con facilidad cada vez que se requiere sin necesidad de desconectar partes ni abrir la caja protectora de los circuitos. (Figura 3.12 – Switch para desconectar el canal de recepción de datos entre controlador/receptorMAX233 y microcontrolador) 85 El microcontrolador debe ser alimentado por una fuente de voltaje de corriente directa y un voltaje de entrada de entre 6-20 [V], por lo que es posible conectarlo directamente a la toma de corriente del encendedor del auto, que suministra directamente los 12 [V] que brinda la batería. La corriente de todo el circuito puede llegar a 2 [A] cuando se encuentra trabajando el microcontrolador, el cable y microcontroladores de la adquisición de datos y el transmisor GSM (siendo este último el que más corriente requiere). Sin embargo, una batería automotriz bien puede suministrar estos niveles de voltaje a través de la toma de corriente. Es conveniente sin embargo incluir en la línea de alimentación un fusible que permita el paso de corrientes ligeramente mayores para evitar daños a la batería y otros componentes del auto si llegase a ocurrir una falla. (Figura 3.13 – Cable de alimentación para toma de corriente de encendedor con fusible) Como se puede apreciar desde la figura 3.12, los componentes necesarios para hacer funcionar correctamente al controlador/receptor MAX233 se soldaron a una placa fenólica. Ésta a su vez descansa con pines rectos conectada a los headers hembra del módulo de GSM que va sobre la tarjeta de desarrollo. Al módulo de transmisión GSM es necesario conectar la antena correspondiente y dejar esta fuera de la caja protectora para asegurar la mejor recepción posible para una buena conexión a la red. 86 El módulo de GSM está prediseñado para ser ensamblado sobre las tarjetas de desarrollo Arduino y todas las compatibles con esta disposición de pines. Así, el módulo se conecta a los headers de la tarjeta de desarrollo con pines rectos espaciados 0.1 pulgadas. Para proteger todo el circuito y evitar desconexiones o cortos circuitos por el movimiento de los cables y los componentes del mismo, se cortó una caja de plástico a la que se fija la tarjeta de desarrollo con tornillos. Ésta tiene salida para el cable de comunicación serial y para el cable USB para la programación, así como el interruptor para desacoplar el MAX233. La entena se encuentra fija a un lado con una tuerca y una rondana de seguridad. (Figura 3.14 – Caja protectora del sistema, interruptor para programación y antena) 3.10 - PROGRAMACIÓN DEL MICROCONTROLADOR El código del microcontrolador se encuentra dividido en una primera parte de inicialización/configuración de parámetros y declaración de variables. También en esta parte deben importarse las librerías de código que contienen funciones pre-programadas para llevar a cabo funciones como la comunicación serial por software. 87 Se deben declarar los dos puertos digitales que se utilizarán como puertos de comunicación serial por software. Así mismo se debe definir desde el inicio un teléfono móvil al cual llegarán los datos por defecto cuando ocurra una falla en el automóvil y el sistema de OBD- II la detecte. Enseguida viene una etapa de configuración del microcontrolador en cuanto al funcionamiento de sus puertos, la comunicación serial y la inicialización del módulo de GSM. Es necesario primero inicializar la comunicación serial con por software en los pines previamente definidos en una velocidad de transmisión/recepción baja por las razones 88 mencionadas anteriormente en este capítulo. Se necesita añadir un tiempo de espera de 35 segundos aproximadamente para asegurar que el módulo de GSM se inicialice correctamente y se conecte a la red de telefonía. Luego, de acuerdo a los comandos AT del manual de módulo GSM, se debe enviar a través de las líneas de comunicación serial por software el comando AT+CMGF=1, que prepara el módulo para enviar y recibir mensajes de texto SMS. Para poder saber que el módulo se ha inicializado correctamente hasta este punto y que se encuentra listo para enviar mensajes de texto, se enciende un led indicador conectado al pin 13. Ahora toca el turno a la comunicación serial por hardware, que se inicializa con una velocidad de transmisión/recepción mayor. Una vez que se ha establecido correctamente este parámetro, se añade un tiempo de espera de 5 segundos para asegurar que la inicialización sea correcta y que los niveles de voltaje vuelven a niveles estables antes de comenzar la transmisión de datos a través de la línea que va hacia el microcontrolador ELM327. Finalmente, se lleva a cabo una rutina de reinicialización del microcontrolador ELM327. Esta rutina es una nueva etapa del programa y consta únicamente del envío del comando correspondiente de reinicio al ELM327 seguido de una espera suficiente para permitirle iniciar con todos los parámetros correctos que se hallan programados en el ELM327 (y que a su vez pueden ser modificados mediante comandos de configuración AT). Si el comando de reinicialización del ELM327 es recibido correctamente, el microcontrolador enciende 89 los leds indicadores del conector en una secuencia que indica al usuario que éste está listo para comenzar a trabajar. Una vez sucedido esto, se cierra la comunicación serial para eliminar completamente de forma segura cualquier caracter que se haya almacenado en el buffer, pues de existir, estos caracteres sólo son caracteres basura como resultado de variaciones en los niveles de voltaje de las líneas de comunicación. Después de cerrar la comunicación, se reinicia y se procede a la rutina central del programa, la rutina cíclica que se encarga de monitorear al sistema de OBD-II. La rutina cíclica loop se repite en menos de 10 segundos y monitorea constantemente al sistema de OBD-II. Para empezar, debe averiguar si existe un código de error esperando a ser leído en el buffer del sistema de OBD-II. Ello se consigue simplemente enviando un código 03 de acuerdo al manual de funcionamiento del ELM327. Es importante destacar que el ELM327 no distingue entre mayúsculas y minúsculas y discrimina todos los espacios incluidos en los códigos enviados. Si el usuario decide incluirlos y enviarlos, es únicamente para facilitarse la lectura del código completo durante la etapa de programación. Una vez que se envía el código 03, el ELM327 debe responder con un 43 si se ha recibido correctamente la instrucción, seguido de 0’s en caso de no existir códigos de error u otro número en caso de existir uno o más códigos de error (DTC’s). 90 La lectura de la respuesta se almacena en la cadena de texto “mensaje” carácter por carácter. Enseguida, se recortan los primeros 5 caracteres de la respuesta completa, pues éstos son sólo una confirmación de la instrucción enviada. El verdadero contenido de la respuesta viene a partir del sexto carácter. Mientras no se cumpla la condición de que el sexto carácter del mensaje sea el caracter >, se almacenan tramos de la cadena original “mensaje” de 6 caracteres de longitud. Una vez almacenados en “recortado” se procede a almacenar el mensaje sin esa parte recortada. La cadena “recortado” debe contener un mensaje con un código (DTC) con toda la información siguiendo la convención de los DTC’s según el estándar de OBD-II. Así, con esta pequeña cadena, se procede a averiguar el contenido de dicha información mediante una estructura if que se encarga de averiguar a qué código de error corresponde. 91 Así el código se repite con la misma instrucción básica para los diversos códigos de error que puede arrojar OBD-II. Por ejemplo, uno de los utilizados para la demostración de los resultados en el siguiente capítulo: De no encontrar un código de error contenido en el mensaje recortado, el sistema arroja el siguiente mensaje: Finalmente, una vez encontrada la información de todos los DTC’s presentes en la línea de caracteres enviada por OBD-II, se procede a enviar la cadena de información interpretada al módulo de GSM y enviar los comandos necesarios por la línea de comunicación serial por software para hacer el envío de información a la red de telefonía. Cuando se ha detectado un código de error (DTC) y se ha llevado a cabo todo el proceso de detección y envío de la información a través del módulo GSM, el sistema completo se interrumpe y espera a su reinicialización. Lo anterior es necesario dado que el DTC se encuentra presente en la memoria interna del PCM y del módulo de OBD-II para poder ser leído en un futuro por un escáner automotriz si es necesario. Borrar la información del DTC 92 es muy sencillo enviando un comando simple al ELM327, pero esto no es conveniente puesto que así como elimina el DTC mismo, borra toda la información del freeze frame data que puede resultar muy útil para la correcta reparación en un taller. Borrar esta información junto con el DTC resuelve un problema de mínima importancia – mantener al sistema de diagnóstico en funcionamiento constante – con el inconveniente de eliminar información útil para reparar el vehículo. De cualquier forma, una vez que se ha detectado un código de error y el usuario ha sido advertido de una falla y su descripción, el usuario sabe que más fallas pueden ocurrir y se encuentra advertido de las primeras fallas. A partir de este punto, el sistema de OBD-II no deja de funcionar, funciona al igual que siempre y permite el monitoreo constante; lo único que dejará de funcionar es el sistema de alertas por SMS al celular. Sin embargo, la mayoría de las fallas que ocurren en el automóvil generarán códigos de error en menos de 10 segundos (el tiempo que toma un ciclo completo del microcontrolador del sistema de monitoreo), por lo cual, para cuando éste entre en funcionamiento, es muy probable que ya no se vayan a generar más DTC’s. 93 REFERENCIAS [3.1] http://www.obd-codes.com/faq/fuel-trims.php [3.2] http://www.advancedautomotivetraining.com/downloads/OBD%20II%20Network% 20Diagnostics%20State.pdf [3.3] ELM327 datasheet, http://www.elmelectronics.com [3.4] Santini, Al; OBD-II Functions, Monitors & Diagnostique Techniques, Delmar - Cengage Learning, NY, USA, 2011. [3.5] http://www.deq.state.va.us/Programs/AirCheckVirginia/ForMotoristsVehicleOwners/Under standingOBDMonitors.aspx [3.6] Sánchez, Julio y Cantón, María; Microcontroller Programming – The Microchip PIC; U.S. CRC Press, 2007. [3.7] http://ocw.um.es/ingenierias/sistemas-embebidos/material-de-clase-1/ssee-da-t03- 02.pdf (del curso “Introducción al bus CAN – Sistemas Embebidos”) [3.8] http://www.cise.com/portal/notas-tecnicas/item/166-protocolo-de- comunicaci%C3%B3n-can.html [3.9] http://www.arduino.cc/es/ [3.10] http://www.atmel.com/devices/atmega128.aspx [3.11] http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010405 [3.12] http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/morales_h_oe/capitulo3.pdf [3.13] ELM323DS datasheet, http://www.elmelectronics.com 94 CAP. 4 – RESULTADOS Los resultados de algunas pruebas al sistema de diagnóstico y alerta se exhiben en este capítulo brevemente junto con una explicación de las condiciones que originan los DTCs correspondientes. Las fallas detectadas y diagnosticadas con el módulo diseñado fueron inducidas con el propósito de probar el correcto funcionamiento del sistema desarrollado. Sólo se exhiben 3 pruebas, pero el principio de funcionamiento de la detección de códigos de error y envío de información es exactamente igual para cualquier código de error detectado. Una vez que el sistema monitorea al sistema de OBD-II y encuentra un código de error almacenado, procede a la descomposición del mismo y a la búsqueda de su significado en la base de datos almacenada en la memoria del microcontrolador. En esta etapa, se realizaron pruebas en dos automóviles (Mazda MX-5 y Nissan 350Z) para probar el envío de los mensajes de texto SMS con la información del tipo de falla encontrada en cada uno. En este caso, el celular que recibe los mensajes de texto tiene almacenado el número de la tarjeta SIM dedicada al módulo de diagnóstico; el usuario almacenado en la memoria del celular con el que se identifica este número es “OBD Cellular Shield”, por lo cual veremos en las fotografías tomadas a la pantalla del celular receptor de los mensajes este nombre. Algunas de las fallas que pueden ocurrir en el automóvil pueden ser realmente graves y dañar completamente el funcionamiento de algún componente, subsistema o sistema; existen algunas otras sin embargo que suceden por condiciones simples que se suelen arreglar fácilmente y bajo las cuales, si no se utiliza prolongadamente el vehículo, no se 95 generarán fallas graves. Estas últimas son las que se aprovechan para depurar el código y el funcionamiento del sistema y generar resultados para mostrar en este capítulo. A continuación se muestra una captura de pantalla del celular que recibió tres códigos de error para diagnósticos distintos. Los errores fueron generados y detectados en los dos vehículos para mostrar que el sistema puede funcionar en cualquier automóvil que cuente con OBD-II y protocolo CAN (y con algunas breves modificaciones para cualquier protocolo de OBD-II, como se mencionó en un capítulo anterior). (Imagen 4.1 – Captura de pantalla de celular receptor de SMS de diagnóstico) Comencemos por el segundo mensaje que aparece en la imagen. Éste dice “P05 24 Engine Oil Pressure Too Low. DIAGNOSIS MODULE WILL BE INTERRUPTED UNTIL RESET”. Este mensaje quiere decir que se detectó un nivel muy bajo en la presión del aceite del motor. Si esto fuera cierto bajo condiciones normales de operación, el vehículo podría 96 correr un grave peligro de dañar el motor por la incorrecta lubricación de los componentes internos como pistones y cilindros. Para poder generar este código de error no se tuvo que arriesgar la integridad del motor de ninguna manera. Para poder generarlo, se hizo la extracción del aceite del motor drenándolo como se haría en un cambio de aceite de mantenimiento rutinario. Para ello hay que precalentar el aceite para asegurar una viscosidad adecuada (relativamente más baja a la que se tiene con el aceite frío) y luego desenroscar el tornillo de drenaje del cárter que se encuentra en la parte baja del vehículo. Esta falla se provocó en el Nissan 350Z. (Imagen 4.2 – Drenado de aceite de Nissan 350Z para provocar DTC P0524) El motor de este auto necesita aproximadamente 5 litros de aceite, que deben ser reemplazados por aceite mineral o sintético limpio y en buenas condiciones de forma regular. Con cada cambio de aceite debe reemplazarse también el filtro de aceite que se encuentra cubierto por las tolvas de la parte baja del vehículo. Para poder drenar el aceite y cambiar el filtro es necesario levantarlo en bases especiales (jamás mantenerlo únicamente 97 sobre gatos mecánicos o hidráulicos), quitar las tolvas plásticas de protección y desatornillar los componentes con herramientas especiales. Una vez que se desenrosca el tornillo del drenaje del aceite, el aceite comienza a fluir y puede tardar un par de minutos en salir por completo. (Imagen 4.3 – Drenado de aceite del motor de Nissan 350Z) Una vez que el aceite es drenado y el filtro de aceite reemplazado por uno nuevo, se procede a encender el switch del auto SIN ENCENDER EL MOTOR. Es muy importante no echar a andar el motor pues dado que no contiene la cantidad necesaria de aceite para lubricar, al iniciar el movimiento de los pistones dentro de los cilindros, se puede provocar fricción excesiva entre las partes que pueden llegar incluso a fundirse. Esta es una falla que daña el motor completamente, muchas veces provocando la necesidad de reemplazarlo por uno nuevo pues no tiene reparación. 98 Con el switch encendido pero el motor apagado, el sistema de OBD-II comienza a trabajar y detecta que la presión del aceite es demasiado baja. Esto genera rápidamente un DTC, enciende el testigo del MIL y el sistema de diagnóstico mediante GSM comienza a trabajar. Segundos después de detectar el DTC presente, el módulo busca la interpretación del DTC en su base de datos, la escribe al mensaje de texto (SMS) y lo envía al número de celular predeterminado. (Imagen 4.4 – Código de error de presión de aceite demasiado baja) Esto en una situación real puede alertar al conductor de una caída en la presión del aceite que puede dañar seriamente su motor. Con ello, el conductor sabe que debe detener el vehículo y buscar al menos un lugar donde comprar aceite para llenar el cárter. La parte en mayúsculas del mensaje “DIAGNOSIS MODULE WILL BE INTERRUPTED UNTIL RESET” quiere decir que el módulo de diagnóstico pasará a un estado de reposo en el cual no detectará nuevos DTCs generados hasta que el automóvil se apague. Si el auto se apaga y el DTC no desaparece, el código será detectado de nuevo por el sistema cuando el auto se encienda para alertar al conductor de la condición del mismo. En caso de desaparecer el DTC, el módulo no lo diagnosticará y no enviará más el mensaje. Si el conductor recibe el mensaje de alerta con el código de error, deberá proceder con precaución y arreglar la falla por su propia cuenta si tiene la habilidad para hacerlo o llevar el automóvil a un taller. El DTC deberá ser borrado de la memoria del sistema de OBD-II 99 mediante el uso de un escáner automotriz de ser necesario, con lo cual dejará de ser detectado el error cuando el módulo de diagnóstico GSM comience a funcionar de nuevo. El siguiente código de error que se explica es el “P03 02 Cylinder 2 Missfire Detected. DIAGNOSIS MODULE WILL BE INTERRUPTED UNTIL RESET”. Este DTC quiere decir que se detectó una falla de explosión en el cilindro # 2 del motor. (Imagen 4.5 – Código de error por falla de explosión en el cilindro # 2) Esta falla se generó en el Mazda MX5 abriendo ligeramente el espacio entre los electrodos de una de las bujías y reinstalándola. Para ello se hizo uso de un calibrador de bujías que permite medir separación correcta entre los electrodos hasta 0.038 [mm]. (Imagen 4.6 – Juego de galgas para calibración de bujías) La separación incorrecta de los electrodos de las bujías provoca que la chispa no se genere en el momento adecuado y no se queme correctamente la gasolina. Los sensores de golpeteo del motor detectan esta falla y se detecta la presencia de gasolina sin quemar 100 dentro de uno de los cilindros, con lo cual se indica la falla. Este tipo de falla puede ser nocivo para el motor y diversos componentes si se conduce el vehículo bajo estas condiciones de forma prolongada. Para la detección del DTC y la generación del mensaje de alerta, el motor sólo tuvo que andar algunos segundos así sin provocar fallas ni daños mayores. Un usuario puede prevenir daños a su motor y otros componentes cuando recibe el mensaje de alerta simplemente apagando el motor. Cuando el técnico obtenga el diagnóstico del auto, rápidamente sabrá que existe alguna falla en el riel de inyectores, en una de las bujías o en las válvulas de un determinado cilindro, por lo cual, la falla será rápidamente encontrada y reparada sin haber dañado otros componentes. Finalmente se describe el DTC del primer mensaje, el “P06 01 Internal Control Module Memory Check Sum Error. DIAGNOSIS MODULE WILL BE INTERRUPTED UNTIL RESET”. (Imagen 4.7 – Código de error por falla en PCM) Este DTC ocurrió realmente en el Mazda MX5 y es un código de error no provocado con fines de demostración. Es un código de error bastante grave que significa que se ha encontrado una falla en la comunicación serial del PCM con otros módulos. Esta falla se detecta con una operación matemática muy simple que lleva a cabo el PCM para comprobar que el código programado por el fabricante en su memoria conserva su integridad. Lo que hace el PCM para comprobarlo es sumar todos los dígitos que conforman al código y compara la suma de éstos con un valor almacenado en la memoria; si el número coincide, 101 no se detecta ningún error, pero cuando la suma no coincide, quiere decir que el código almacenado en la memoria del PCM está corrupto. En el Mazda MX5 lo anterior sucedió por un corto circuito que se hizo durante la etapa de diseño del sistema de diagnóstico por GSM. Accidentalmente uno de los cables del circuito se salió de la protoboard e hizo tierra directamente por un brevísimo instante, seguido por la aparición del MIL en el tablero del auto y la generación de este DTC. La descarga súbita provocó que la programación del código del PCM se dañara de alguna forma pero funcionó aun la parte de detección de errores de OBD-II. Este código se mantuvo así durante mucho tiempo y fungió como la primera prueba de funcionamiento correcto del sistema de diagnóstico por GSM. El automóvil pudo andar en todo momento sin problemas, aun con el testigo del MIL encendido. Estas fallas pueden en muchas ocasiones no llegar a tener impacto sobre el manejo del vehículo, pero en muchas otras pueden significar simplemente que el vehículo no arranque. Una vez que se verificó el funcionamiento correcto del sistema y la posibilidad de enviar este DTC como prueba, el vehículo fue llevado a un taller especializado en el que se programó de nuevo el PCM, con lo cual se corrigió el problema. Posteriormente se borró el DTC y con ello el testigo del MIL. 102 CAP. 5 – CONCLUSIONES Este trabajo de tesis concluye con las etapas de pruebas al sistema diseñado. Las pruebas fueron realizadas en distintos automóviles para poder evaluar la funcionalidad independiente del sistema. Es cierto que existe una pequeña variación en el código que se debe programar en el microcontrolador para la interpretación de la información adquirida dependiendo del protocolo (habiendo una diferencia entre el protocolo CAN respecto a los demás debido a que el primero agrega 2 dígitos extras), pero el resto de la decodificación es idéntica. De cualquier forma, la mayor parte de los automóviles que se fabrican actualmente está mostrando una tendencia a adoptar el protocolo CAN para la comunicación entre módulos así como para el sistema de diagnóstico a bordo. Las pruebas realizadas se llevaron a cabo generando códigos de error de fallas mínimas con impactos leves en el funcionamiento del automóvil puesto que éstas son fáciles de corregir y debidamente controladas son fácilmente reversibles. La funcionalidad del sistema de diagnóstico OBD-II nos permite detectar desde fallas mínimas que casi pueden ser consideradas mantenimiento hasta fallas realmente graves; con ello, la etapa de pruebas se ve beneficiada, pues al detectar fallas sencillas en el sistema, se asegura que la interpretación de información y el envío oportuno de la misma al usuario sucederá exactamente igual para otras fallas más graves. La estandarización de los códigos de falla en un número idéntico de caracteres a leer independientemente de la falla fue concebida desde el principio con esto en mente – el diseño de sistemas de adquisición. Asegurando que los códigos tuvieran la misma longitud y se codificaran de la misma forma, se 103 consiguió que con relativamente pocos recursos de hardware y software, los aparatos pudieran identificar fallas de cualquier tipo. Hoy en día vemos que cada vez más sistemas trabajan haciendo uso de una increíble cantidad de microcontroladores y componentes electrónicos, por lo que en un futuro cercano probablemente veamos una generación nueva de protocolos de diagnóstico a bordo que incluyan más caracteres, más información, velocidades de transmisión mayores, entre otras características, sin embargo, con el sistema planteado se sientan las bases para desarrollar sistemas actualizados de transmisión de esta información directamente al usuario del auto. Habiendo encontrado una forma relativamente sencilla de adquirir la información de diagnóstico del auto en tiempo real y la forma de transferir un decantado de lo más importante para el usuario, se genera nuevas posibilidades. El desarrollo automotriz año con año es más acelerado debido a la enorme competencia que existe entre compañías y a los avances tecnológicos de distintas ramas que pueden beneficiar a los conductores y pasajeros. Cada vez se exige más en cuanto a confort, economía de combustible y seguridad, y en la lucha por satisfacer las necesidades de los clientes, las compañías automotrices se encuentran en una feroz carrera por desarrollar las mejores opciones al menor costo; esto sin embargo exige de las mismas compañías el uso de sistemas robustos que garanticen al usuario su correcto funcionamiento desde que compra un auto hasta muchos años después. Para poder generar sistemas robustos que satisfagan las necesidades de los clientes, es bueno tener buenos sistemas de diagnóstico, pues cualquier producto está propenso a fallar, sin embargo, la oportunidad con que se detecten las fallas y se corrijan será la clave para mantener un grado de lealtad de los clientes y de confianza, pilares clave de las ventas en la industria automotriz y en casi cualquier mercado hoy en día. 104 Así como cada vez los autos son más complejos y cuentan con más sistemas interconectados para satisfacer a públicos más exigentes, se necesita cada vez más del trabajo de equipos de diseño y manufactura interdisciplinarios. La ingeniería mecatrónica es cada vez más empleada en el desarrollo de productos como los automóviles por esta misma razón, pues cada vez se necesita más de la interacción holística entre las ramas de mecánica, electrónica, control y programación o sistemas computacionales. 105 CAP. 6 – ANEXOS 106 Generic Powertrain Trouble Codes (P0xxx, P2xxx, P34xx - P39xx) P0001 Fuel Volume Regulator Control Circuit/Open P0002 Fuel Volume Regulator Control Circuit Range/Performance P0003 Fuel Volume Regulator Control Circuit Low P0004 Fuel Volume Regulator Control Circuit High P0005 Fuel Shutoff Valve "A" Control Circuit/Open P0006 Fuel Shutoff Valve "A" Control Circuit Low P0007 Fuel Shutoff Valve "A" Control Circuit High P0008 Engine Position System Performance P0009 Engine Position System Performance P0010 "A" Camshaft Position Actuator Circuit P0011 "A" Camshaft Position - Timing Over-Advanced or System Performance P0012 "A" Camshaft Position - Timing Over-Retarded P0013 "B" Camshaft Position - Actuator Circuit P0014 "B" Camshaft Position - Timing Over-Advanced or System Performance P0015 "B" Camshaft Position - Timing Over-Retarded P0016 Crankshaft Position - Camshaft Position Correlation P0017 Crankshaft Position - Camshaft Position Correlation P0018 Crankshaft Position - Camshaft Position Correlation P0019 Crankshaft Position - Camshaft Position Correlation P0020 "A" Camshaft Position Actuator Circuit P0021 "A" Camshaft Position - Timing Over-Advanced or System Performance P0022 "A" Camshaft Position - Timing Over-Retarded P0023 "B" Camshaft Position - Actuator Circuit P0024 "B" Camshaft Position - Timing Over-Advanced or System Performance P0025 "B" Camshaft Position - Timing Over-Retarded P0026 Intake Valve Control Solenoid Circuit Range/Performance P0027 Exhaust Valve Control Solenoid Circuit Range/Performance P0028 Intake Valve Control Solenoid Circuit Range/Performance 107 P0029 Exhaust Valve Control Solenoid Circuit Range/Performance P0030 HO2S Heater Control Circuit P0031 HO2S Heater Control Circuit Low P0032 HO2S Heater Control Circuit High P0033 Turbo Charger Bypass Valve Control Circuit P0034 Turbo Charger Bypass Valve Control Circuit Low P0035 Turbo Charger Bypass Valve Control Circuit High P0036 HO2S Heater Control Circuit P0037 HO2S Heater Control Circuit Low P0038 HO2S Heater Control Circuit High P0039 Turbo/Super Charger Bypass Valve Control Circuit Range/Performance P0040 O2 Sensor Signals Swapped Bank 1 Sensor 1/ Bank 2 Sensor 1 P0041 O2 Sensor Signals Swapped Bank 1 Sensor 2/ Bank 2 Sensor 2 P0042 HO2S Heater Control Circuit P0043 HO2S Heater Control Circuit Low P0044 HO2S Heater Control Circuit High P0045 Turbo/Super Charger Boost Control Solenoid Circuit/Open P0046 Turbo/Super Charger Boost Control Solenoid Circuit Range/Performance P0047 Turbo/Super Charger Boost Control Solenoid Circuit Low P0048 Turbo/Super Charger Boost Control Solenoid Circuit High P0049 Turbo/Super Charger Turbine Overspeed P0050 HO2S Heater Control Circuit P0051 HO2S Heater Control Circuit Low P0052 HO2S Heater Control Circuit High P0053 HO2S Heater Resistance P0054 HO2S Heater Resistance P0055 HO2S Heater Resistance P0056 HO2S Heater Control Circuit P0057 HO2S Heater Control Circuit Low P0058 HO2S Heater Control Circuit High P0059 HO2S Heater Resistance 108 P0060 HO2S Heater Resistance P0061 HO2S Heater Resistance P0062 HO2S Heater Control Circuit P0063 HO2S Heater Control Circuit Low P0064 HO2S Heater Control Circuit High P0065 Air Assisted Injector Control Range/Performance P0066 Air Assisted Injector Control Circuit or Circuit Low P0067 Air Assisted Injector Control Circuit High P0068 MAP/MAF - Throttle Position Correlation P0069 Manifold Absolute Pressure - Barometric Pressure Correlation P0070 Ambient Air Temperature Sensor Circuit P0071 Ambient Air Temperature Sensor Range/Performance P0072 Ambient Air Temperature Sensor Circuit Low P0073 Ambient Air Temperature Sensor Circuit High P0074 Ambient Air Temperature Sensor Circuit Intermittent P0075 Intake Valve Control Solenoid Circuit P0076 Intake Valve Control Solenoid Circuit Low P0077 Intake Valve Control Solenoid Circuit High P0078 Exhaust Valve Control Solenoid Circuit P0079 Exhaust Valve Control Solenoid Circuit Low P0080 Exhaust Valve Control Solenoid Circuit High P0081 Intake Valve Control Solenoid Circuit P0082 Intake Valve Control Solenoid Circuit Low P0083 Intake Valve Control Solenoid Circuit High P0084 Exhaust Valve Control Solenoid Circuit P0085 Exhaust Valve Control Solenoid Circuit Low P0086 Exhaust Valve Control Solenoid Circuit High P0087 Fuel Rail/System Pressure - Too Low P0088 Fuel Rail/System Pressure - Too High P0089 Fuel Pressure Regulator 1 Performance P0090 Fuel Pressure Regulator 1 Control Circuit 109 P0091 Fuel Pressure Regulator 1 Control Circuit Low P0092 Fuel Pressure Regulator 1 Control Circuit High P0093 Fuel System Leak Detected - Large Leak P0094 Fuel System Leak Detected - Small Leak P0095 Intake Air Temperature Sensor 2 Circuit P0096 Intake Air Temperature Sensor 2 Circuit Range/Performance P0097 Intake Air Temperature Sensor 2 Circuit Low P0098 Intake Air Temperature Sensor 2 Circuit High P0099 Intake Air Temperature Sensor 2 Circuit Intermittent/Erratic P0100 Mass or Volume Air Flow Circuit P0101 Mass or Volume Air Flow Circuit Range/Performance P0102 Mass or Volume Air Flow Circuit Low Input P0103 Mass or Volume Air Flow Circuit High Input P0104 Mass or Volume Air Flow Circuit Intermittent P0105 Manifold Absolute Pressure/Barometric Pressure Circuit P0106 Manifold Absolute Pressure/Barometric Pressure Circuit Range/Performance P0107 Manifold Absolute Pressure/Barometric Pressure Circuit Low Input P0108 Manifold Absolute Pressure/Barometric Pressure Circuit High Input P0109 Manifold Absolute Pressure/Barometric Pressure Circuit Intermittent P0110 Intake Air Temperature Sensor 1 Circuit P0111 Intake Air Temperature Sensor 1 Circuit Range/Performance P0112 Intake Air Temperature Sensor 1 Circuit Low P0113 Intake Air Temperature Sensor 1 Circuit High P0114 Intake Air Temperature Sensor 1 Circuit Intermittent P0115 Engine Coolant Temperature Circuit P0116 Engine Coolant Temperature Circuit Range/Performance P0117 Engine Coolant Temperature Circuit Low P0118 Engine Coolant Temperature Circuit High P0119 Engine Coolant Temperature Circuit Intermittent P0120 Throttle/Pedal Position Sensor/Switch "A" Circuit P0121 Throttle/Pedal Position Sensor/Switch "A" Circuit Range/Performance 110 P0122 Throttle/Pedal Position Sensor/Switch "A" Circuit Low P0123 Throttle/Pedal Position Sensor/Switch "A" Circuit High P0124 Throttle/Pedal Position Sensor/Switch "A" Circuit Intermittent P0125 Insufficient Coolant Temperature for Closed Loop Fuel Control P0126 Insufficient Coolant Temperature for Stable Operation P0127 Intake Air Temperature Too High P0128 Coolant Thermostat (Coolant Temperature Below Thermostat Regulating Temperature) P0129 Barometric Pressure Too Low P0130 O2 Sensor Circuit P0131 O2 Sensor Circuit Low Voltage P0132 O2 Sensor Circuit High Voltage P0133 O2 Sensor Circuit Slow Response P0134 O2 Sensor Circuit No Activity Detected P0135 O2 Sensor Heater Circuit P0136 O2 Sensor Circuit P0137 O2 Sensor Circuit Low Voltage P0138 O2 Sensor Circuit High Voltage P0139 O2 Sensor Circuit Slow Response P0140 O2 Sensor Circuit No Activity Detected P0141 O2 Sensor Heater Circuit P0142 O2 Sensor Circuit P0143 O2 Sensor Circuit Low Voltage P0144 O2 Sensor Circuit High Voltage P0145 O2 Sensor Circuit Slow Response P0146 O2 Sensor Circuit No Activity Detected P0147 O2 Sensor Heater Circuit P0148 Fuel Delivery Error P0149 Fuel Timing Error P0150 O2 Sensor Circuit P0151 O2 Sensor Circuit Low Voltage P0152 O2 Sensor Circuit High Voltage 111 P0153 O2 Sensor Circuit Slow Response P0154 O2 Sensor Circuit No Activity Detected P0155 O2 Sensor Heater Circuit P0156 O2 Sensor Circuit P0157 O2 Sensor Circuit Low Voltage P0158 O2 Sensor Circuit High Voltage P0159 O2 Sensor Circuit Slow Response P0160 O2 Sensor Circuit No Activity Detected P0161 O2 Sensor Heater Circuit P0162 O2 Sensor Circuit P0163 O2 Sensor Circuit Low Voltage P0164 O2 Sensor Circuit High Voltage P0165 O2 Sensor Circuit Slow Response P0166 O2 Sensor Circuit No Activity Detected P0167 O2 Sensor Heater Circuit P0168 Fuel Temperature Too High P0169 Incorrect Fuel Composition P0170 Fuel Trim P0171 System Too Lean P0172 System Too Rich P0173 Fuel Trim P0174 System Too Lean P0175 System Too Rich P0176 Fuel Composition Sensor Circuit P0177 Fuel Composition Sensor Circuit Range/Performance P0178 Fuel Composition Sensor Circuit Low P0179 Fuel Composition Sensor Circuit High P0180 Fuel Temperature Sensor A Circuit P0181 Fuel Temperature Sensor A Circuit Range/Performance P0182 Fuel Temperature Sensor A Circuit Low P0183 Fuel Temperature Sensor A Circuit High 112 P0184 Fuel Temperature Sensor A Circuit Intermittent P0185 Fuel Temperature Sensor B Circuit P0186 Fuel Temperature Sensor B Circuit Range/Performance P0187 Fuel Temperature Sensor B Circuit Low P0188 Fuel Temperature Sensor B Circuit High P0189 Fuel Temperature Sensor B Circuit Intermittent P0190 Fuel Rail Pressure Sensor Circuit P0191 Fuel Rail Pressure Sensor Circuit Range/Performance P0192 Fuel Rail Pressure Sensor Circuit Low P0193 Fuel Rail Pressure Sensor Circuit High P0194 Fuel Rail Pressure Sensor Circuit Intermittent P0195 Engine Oil Temperature Sensor P0196 Engine Oil Temperature Sensor Range/Performance P0197 Engine Oil Temperature Sensor Low P0198 Engine Oil Temperature Sensor High P0199 Engine Oil Temperature Sensor Intermittent P0200 Injector Circuit/Open P0201 Injector Circuit/Open - Cylinder 1 P0202 Injector Circuit/Open - Cylinder 2 P0203 Injector Circuit/Open - Cylinder 3 P0204 Injector Circuit/Open - Cylinder 4 P0205 Injector Circuit/Open - Cylinder 5 P0206 Injector Circuit/Open - Cylinder 6 P0207 Injector Circuit/Open - Cylinder 7 P0208 Injector Circuit/Open - Cylinder 8 P0209 Injector Circuit/Open - Cylinder 9 P0210 Injector Circuit/Open - Cylinder 10 P0211 Injector Circuit/Open - Cylinder 11 P0212 Injector Circuit/Open - Cylinder 12 P0213 Cold Start Injector 1 P0214 Cold Start Injector 2 113 P0215 Engine Shutoff Solenoid P0216 Injector/Injection Timing Control Circuit P0217 Engine Coolant Over Temperature Condition P0218 Transmission Fluid Over Temperature Condition P0219 Engine Overspeed Condition P0220 Throttle/Pedal Position Sensor/Switch "B" Circuit P0221 Throttle/Pedal Position Sensor/Switch "B" Circuit Range/Performance P0222 Throttle/Pedal Position Sensor/Switch "B" Circuit Low P0223 Throttle/Pedal Position Sensor/Switch "B" Circuit High P0224 Throttle/Pedal Position Sensor/Switch "B" Circuit Intermittent P0225 Throttle/Pedal Position Sensor/Switch "C" Circuit P0226 Throttle/Pedal Position Sensor/Switch "C" Circuit Range/Performance P0227 Throttle/Pedal Position Sensor/Switch "C" Circuit Low P0228 Throttle/Pedal Position Sensor/Switch "C" Circuit High P0229 Throttle/Pedal Position Sensor/Switch "C" Circuit Intermittent P0230 Fuel Pump Primary Circuit P0231 Fuel Pump Secondary Circuit Low P0232 Fuel Pump Secondary Circuit High P0233 Fuel Pump Secondary Circuit Intermittent P0234 Turbo/Super Charger Overboost Condition P0235 Turbo/Super Charger Boost Sensor "A" Circuit P0236 Turbo/Super Charger Boost Sensor "A" Circuit Range/Performance P0237 Turbo/Super Charger Boost Sensor "A" Circuit Low P0238 Turbo/Super Charger Boost Sensor "A" Circuit High P0239 Turbo/Super Charger Boost Sensor "B" Circuit P0240 Turbo/Super Charger Boost Sensor "B" Circuit Range/Performance P0241 Turbo/Super Charger Boost Sensor "B" Circuit Low P0242 Turbo/Super Charger Boost Sensor "B" Circuit High P0243 Turbo/Super Charger Wastegate Solenoid "A" P0244 Turbo/Super Charger Wastegate Solenoid "A" Range/Performance P0245 Turbo/Super Charger Wastegate Solenoid "A" Low 114 P0246 Turbo/Super Charger Wastegate Solenoid "A" High P0247 Turbo/Super Charger Wastegate Solenoid "B" P0248 Turbo/Super Charger Wastegate Solenoid "B" Range/Performance P0249 Turbo/Super Charger Wastegate Solenoid "B" Low P0250 Turbo/Super Charger Wastegate Solenoid "B" High P0251 Injection Pump Fuel Metering Control "A" (Cam/Rotor/Injector) P0252 Injection Pump Fuel Metering Control "A" Range/Performance (Cam/Rotor/Injector) P0253 Injection Pump Fuel Metering Control "A" Low (Cam/Rotor/Injector) P0254 Injection Pump Fuel Metering Control "A" High (Cam/Rotor/Injector) P0255 Injection Pump Fuel Metering Control "A" Intermittent (Cam/Rotor/Injector) P0256 Injection Pump Fuel Metering Control "B" (Cam/Rotor/Injector) P0257 Injection Pump Fuel Metering Control "B" Range/Performance (Cam/Rotor/Injector) P0258 Injection Pump Fuel Metering Control "B" Low (Cam/Rotor/Injector) P0259 Injection Pump Fuel Metering Control "B" High (Cam/Rotor/Injector) P0260 Injection Pump Fuel Metering Control "B" Intermittent (Cam/Rotor/Injector) P0261 Cylinder 1 Injector Circuit Low P0262 Cylinder 1 Injector Circuit High P0263 Cylinder 1 Contribution/Balance P0264 Cylinder 2 Injector Circuit Low P0265 Cylinder 2 Injector Circuit High P0266 Cylinder 2 Contribution/Balance P0267 Cylinder 3 Injector Circuit Low P0268 Cylinder 3 Injector Circuit High P0269 Cylinder 3 Contribution/Balance P0270 Cylinder 4 Injector Circuit Low P0271 Cylinder 4 Injector Circuit High P0272 Cylinder 4 Contribution/Balance P0273 Cylinder 5 Injector Circuit Low P0274 Cylinder 5 Injector Circuit High P0275 Cylinder 5 Contribution/Balance P0276 Cylinder 6 Injector Circuit Low 115 P0277 Cylinder 6 Injector Circuit High P0278 Cylinder 6 Contribution/Balance P0279 Cylinder 7 Injector Circuit Low P0280 Cylinder 7 Injector Circuit High P0281 Cylinder 7 Contribution/Balance P0282 Cylinder 8 Injector Circuit Low P0283 Cylinder 8 Injector Circuit High P0284 Cylinder 8 Contribution/Balance P0285 Cylinder 9 Injector Circuit Low P0286 Cylinder 9 Injector Circuit High P0287 Cylinder 9 Contribution/Balance P0288 Cylinder 10 Injector Circuit Low P0289 Cylinder 10 Injector Circuit High P0290 Cylinder 10 Contribution/Balance P0291 Cylinder 11 Injector Circuit Low P0292 Cylinder 11 Injector Circuit High P0293 Cylinder 11 Contribution/Balance P0294 Cylinder 12 Injector Circuit Low P0295 Cylinder 12 Injector Circuit High P0296 Cylinder 12 Contribution/Balance P0297 Vehicle Overspeed Condition P0298 Engine Oil Over Temperature P0299 Turbo/Super Charger Underboost P0300 Random/Multiple Cylinder Misfire Detected P0301 Cylinder 1 Misfire Detected P0302 Cylinder 2 Misfire Detected P0303 Cylinder 3 Misfire Detected P0304 Cylinder 4 Misfire Detected P0305 Cylinder 5 Misfire Detected P0306 Cylinder 6 Misfire Detected P0307 Cylinder 7 Misfire Detected 116 P0308 Cylinder 8 Misfire Detected P0309 Cylinder 9 Misfire Detected P0310 Cylinder 10 Misfire Detected P0311 Cylinder 11 Misfire Detected P0312 Cylinder 12 Misfire Detected P0313 Misfire Detected with Low Fuel P0314 Single Cylinder Misfire (Cylinder not Specified) P0315 Crankshaft Position System Variation Not Learned P0316 Engine Misfire Detected on Startup (First 1000 Revolutions) P0317 Rough Road Hardware Not Present P0318 Rough Road Sensor "A" Signal Circuit P0319 Rough Road Sensor "B" P0320 Ignition/Distributor Engine Speed Input Circuit P0321 Ignition/Distributor Engine Speed Input Circuit Range/Performance P0322 Ignition/Distributor Engine Speed Input Circuit No Signal P0323 Ignition/Distributor Engine Speed Input Circuit Intermittent P0324 Knock Control System Error P0325 Knock Sensor 1 Circuit P0326 Knock Sensor 1 Circuit Range/Performance P0327 Knock Sensor 1 Circuit Low P0328 Knock Sensor 1 Circuit High P0329 Knock Sensor 1 Circuit Input Intermittent P0330 Knock Sensor 2 Circuit P0331 Knock Sensor 2 Circuit Range/Performance P0332 Knock Sensor 2 Circuit Low P0333 Knock Sensor 2 Circuit High P0334 Knock Sensor 2 Circuit Input Intermittent P0335 Crankshaft Position Sensor "A" Circuit P0336 Crankshaft Position Sensor "A" Circuit Range/Performance P0337 Crankshaft Position Sensor "A" Circuit Low P0338 Crankshaft Position Sensor "A" Circuit High 117 P0339 Crankshaft Position Sensor "A" Circuit Intermittent P0340 Camshaft Position Sensor "A" Circuit P0341 Camshaft Position Sensor "A" Circuit Range/Performance P0342 Camshaft Position Sensor "A" Circuit Low P0343 Camshaft Position Sensor "A" Circuit High P0344 Camshaft Position Sensor "A" Circuit Intermittent P0345 Camshaft Position Sensor "A" Circuit P0346 Camshaft Position Sensor "A" Circuit Range/Performance P0347 Camshaft Position Sensor "A" Circuit Low P0348 Camshaft Position Sensor "A" Circuit High P0349 Camshaft Position Sensor "A" Circuit Intermittent P0350 Ignition Coil Primary/Secondary Circuit P0351 Ignition Coil "A" Primary/Secondary Circuit P0352 Ignition Coil "B" Primary/Secondary Circuit P0353 Ignition Coil "C" Primary/Secondary Circuit P0354 Ignition Coil "D" Primary/Secondary Circuit P0355 Ignition Coil "E" Primary/Secondary Circuit P0356 Ignition Coil "F" Primary/Secondary Circuit P0357 Ignition Coil "G" Primary/Secondary Circuit P0358 Ignition Coil "H" Primary/Secondary Circuit P0359 Ignition Coil "I" Primary/Secondary Circuit P0360 Ignition Coil "J" Primary/Secondary Circuit P0361 Ignition Coil "K" Primary/Secondary Circuit P0362 Ignition Coil "L" Primary/Secondary Circuit P0363 Misfire Detected - Fueling Disabled P0364 Reserved P0365 Camshaft Position Sensor "B" Circuit P0366 Camshaft Position Sensor "B" Circuit Range/Performance P0367 Camshaft Position Sensor "B" Circuit Low P0368 Camshaft Position Sensor "B" Circuit High P0369 Camshaft Position Sensor "B" Circuit Intermittent 118 P0370 Timing Reference High Resolution Signal "A" P0371 Timing Reference High Resolution Signal "A" Too Many Pulses P0372 Timing Reference High Resolution Signal "A" Too Few Pulses P0373 Timing Reference High Resolution Signal "A" Intermittent/Erratic Pulses P0374 Timing Reference High Resolution Signal "A" No Pulse P0375 Timing Reference High Resolution Signal "B" P0376 Timing Reference High Resolution Signal "B" Too Many Pulses P0377 Timing Reference High Resolution Signal "B" Too Few Pulses P0378 Timing Reference High Resolution Signal "B" Intermittent/Erratic Pulses P0379 Timing Reference High Resolution Signal "B" No Pulses P0380 Glow Plug/Heater Circuit "A" P0381 Glow Plug/Heater Indicator Circuit P0382 Glow Plug/Heater Circuit "B" P0383 Reserved by SAE J2012 P0384 Reserved by SAE J2012 P0385 Crankshaft Position Sensor "B" Circuit P0386 Crankshaft Position Sensor "B" Circuit Range/Performance P0387 Crankshaft Position Sensor "B" Circuit Low P0388 Crankshaft Position Sensor "B" Circuit High P0389 Crankshaft Position Sensor "B" Circuit Intermittent P0390 Camshaft Position Sensor "B" Circuit P0391 Camshaft Position Sensor "B" Circuit Range/Performance P0392 Camshaft Position Sensor "B" Circuit Low P0393 Camshaft Position Sensor "B" Circuit High P0394 Camshaft Position Sensor "B" Circuit Intermittent P0400 Exhaust Gas Recirculation Flow P0401 Exhaust Gas Recirculation Flow Insufficient Detected P0402 Exhaust Gas Recirculation Flow Excessive Detected P0403 Exhaust Gas Recirculation Control Circuit P0404 Exhaust Gas Recirculation Control Circuit Range/Performance P0405 Exhaust Gas Recirculation Sensor "A" Circuit Low 119 P0406 Exhaust Gas Recirculation Sensor "A" Circuit High P0407 Exhaust Gas Recirculation Sensor "B" Circuit Low P0408 Exhaust Gas Recirculation Sensor "B" Circuit High P0409 Exhaust Gas Recirculation Sensor "A" Circuit P0410 Secondary Air Injection System P0411 Secondary Air Injection System Incorrect Flow Detected P0412 Secondary Air Injection System Switching Valve "A" Circuit P0413 Secondary Air Injection System Switching Valve "A" Circuit Open P0414 Secondary Air Injection System Switching Valve "A" Circuit Shorted P0415 Secondary Air Injection System Switching Valve "B" Circuit P0416 Secondary Air Injection System Switching Valve "B" Circuit Open P0417 Secondary Air Injection System Switching Valve "B" Circuit Shorted P0418 Secondary Air Injection System Control "A" Circuit P0419 Secondary Air Injection System Control "B" Circuit P0420 Catalyst System Efficiency Below Threshold P0421 Warm Up Catalyst Efficiency Below Threshold P0422 Main Catalyst Efficiency Below Threshold P0423 Heated Catalyst Efficiency Below Threshold P0424 Heated Catalyst Temperature Below Threshold P0425 Catalyst Temperature Sensor P0426 Catalyst Temperature Sensor Range/Performance P0427 Catalyst Temperature Sensor Low P0428 Catalyst Temperature Sensor High P0429 Catalyst Heater Control Circuit P0430 Catalyst System Efficiency Below Threshold P0431 Warm Up Catalyst Efficiency Below Threshold P0432 Main Catalyst Efficiency Below Threshold P0433 Heated Catalyst Efficiency Below Threshold P0434 Heated Catalyst Temperature Below Threshold P0435 Catalyst Temperature Sensor P0436 Catalyst Temperature Sensor Range/Performance 120 P0437 Catalyst Temperature Sensor Low P0438 Catalyst Temperature Sensor High P0439 Catalyst Heater Control Circuit P0440 Evaporative Emission System P0441 Evaporative Emission System Incorrect Purge Flow P0442 Evaporative Emission System Leak Detected (small leak) P0443 Evaporative Emission System Purge Control Valve Circuit P0444 Evaporative Emission System Purge Control Valve Circuit Open P0445 Evaporative Emission System Purge Control Valve Circuit Shorted P0446 Evaporative Emission System Vent Control Circuit P0447 Evaporative Emission System Vent Control Circuit Open P0448 Evaporative Emission System Vent Control Circuit Shorted P0449 Evaporative Emission System Vent Valve/Solenoid Circuit P0450 Evaporative Emission System Pressure Sensor/Switch P0451 Evaporative Emission System Pressure Sensor/Switch Range/Performance P0452 Evaporative Emission System Pressure Sensor/Switch Low P0453 Evaporative Emission System Pressure Sensor/Switch High P0454 Evaporative Emission System Pressure Sensor/Switch Intermittent P0455 Evaporative Emission System Leak Detected (large leak) P0456 Evaporative Emission System Leak Detected (very small leak) P0457 Evaporative Emission System Leak Detected (fuel cap loose/off) P0458 Evaporative Emission System Purge Control Valve Circuit Low P0459 Evaporative Emission System Purge Control Valve Circuit High P0460 Fuel Level Sensor "A" Circuit P0461 Fuel Level Sensor "A" Circuit Range/Performance P0462 Fuel Level Sensor "A" Circuit Low P0463 Fuel Level Sensor "A" Circuit High P0464 Fuel Level Sensor "A" Circuit Intermittent P0465 EVAP Purge Flow Sensor Circuit P0466 EVAP Purge Flow Sensor Circuit Range/Performance P0467 EVAP Purge Flow Sensor Circuit Low 121 P0468 EVAP Purge Flow Sensor Circuit High P0469 EVAP Purge Flow Sensor Circuit Intermittent P0470 Exhaust Pressure Sensor P0471 Exhaust Pressure Sensor Range/Performance P0472 Exhaust Pressure Sensor Low P0473 Exhaust Pressure Sensor High P0474 Exhaust Pressure Sensor Intermittent P0475 Exhaust Pressure Control Valve P0476 Exhaust Pressure Control Valve Range/Performance P0477 Exhaust Pressure Control Valve Low P0478 Exhaust Pressure Control Valve High P0479 Exhaust Pressure Control Valve Intermittent P0480 Fan 1 Control Circuit P0481 Fan 2 Control Circuit P0482 Fan 3 Control Circuit P0483 Fan Rationality Check P0484 Fan Circuit Over Current P0485 Fan Power/Ground Circuit P0486 Exhaust Gas Recirculation Sensor "B" Circuit P0487 Exhaust Gas Recirculation Throttle Position Control Circuit P0488 Exhaust Gas Recirculation Throttle Position Control Range/Performance P0489 Exhaust Gas Recirculation Control Circuit Low P0490 Exhaust Gas Recirculation Control Circuit High P0491 Secondary Air Injection System Insufficient Flow P0492 Secondary Air Injection System Insufficient Flow P0493 Fan Overspeed P0494 Fan Speed Low P0495 Fan Speed High P0496 Evaporative Emission System High Purge Flow P0497 Evaporative Emission System Low Purge Flow P0498 Evaporative Emission System Vent Valve Control Circuit Low 122 P0499 Evaporative Emission System Vent Valve Control Circuit High P0500 Vehicle Speed Sensor "A" P0501 Vehicle Speed Sensor "A" Range/Performance P0502 Vehicle Speed Sensor "A" Circuit Low Input P0503 Vehicle Speed Sensor "A" Intermittent/Erratic/High P0504 Brake Switch "A"/"B" Correlation P0505 Idle Air Control System P0506 Idle Air Control System RPM Lower Than Expected P0507 Idle Air Control System RPM Higher Than Expected P0508 Idle Air Control System Circuit Low P0509 Idle Air Control System Circuit High P0510 Closed Throttle Position Switch P0511 Idle Air Control Circuit P0512 Starter Request Circuit P0513 Incorrect Immobilizer Key P0514 Battery Temperature Sensor Circuit Range/Performance P0515 Battery Temperature Sensor Circuit P0516 Battery Temperature Sensor Circuit Low P0517 Battery Temperature Sensor Circuit High P0518 Idle Air Control Circuit Intermittent P0519 Idle Air Control System Performance P0520 Engine Oil Pressure Sensor/Switch Circuit P0521 Engine Oil Pressure Sensor/Switch Range/Performance P0522 Engine Oil Pressure Sensor/Switch Low Voltage P0523 Engine Oil Pressure Sensor/Switch High Voltage P0524 Engine Oil Pressure Too Low P0525 Cruise Control Servo Control Circuit Range/Performance P0526 Fan Speed Sensor Circuit P0527 Fan Speed Sensor Circuit Range/Performance P0528 Fan Speed Sensor Circuit No Signal P0529 Fan Speed Sensor Circuit Intermittent 123 P0530 A/C Refrigerant Pressure Sensor "A" Circuit P0531 A/C Refrigerant Pressure Sensor "A" Circuit Range/Performance P0532 A/C Refrigerant Pressure Sensor "A" Circuit Low P0533 A/C Refrigerant Pressure Sensor "A" Circuit High P0534 Air Conditioner Refrigerant Charge Loss P0535 A/C Evaporator Temperature Sensor Circuit P0536 A/C Evaporator Temperature Sensor Circuit Range/Performance P0537 A/C Evaporator Temperature Sensor Circuit Low P0538 A/C Evaporator Temperature Sensor Circuit High P0539 A/C Evaporator Temperature Sensor Circuit Intermittent P0540 Intake Air Heater "A" Circuit P0541 Intake Air Heater "A" Circuit Low P0542 Intake Air Heater "A" Circuit High P0543 Intake Air Heater "A" Circuit Open P0544 Exhaust Gas Temperature Sensor Circuit P0545 Exhaust Gas Temperature Sensor Circuit Low P0546 Exhaust Gas Temperature Sensor Circuit High P0547 Exhaust Gas Temperature Sensor Circuit P0548 Exhaust Gas Temperature Sensor Circuit Low P0549 Exhaust Gas Temperature Sensor Circuit High P0550 Power Steering Pressure Sensor/Switch Circuit P0551 Power Steering Pressure Sensor/Switch Circuit Range/Performance P0552 Power Steering Pressure Sensor/Switch Circuit Low Input P0553 Power Steering Pressure Sensor/Switch Circuit High Input P0554 Power Steering Pressure Sensor/Switch Circuit Intermittent P0555 Brake Booster Pressure Sensor Circuit P0556 Brake Booster Pressure Sensor Circuit Range/Performance P0557 Brake Booster Pressure Sensor Circuit Low Input P0558 Brake Booster Pressure Sensor Circuit High Input P0559 Brake Booster Pressure Sensor Circuit Intermittent P0560 System Voltage 124 P0561 System Voltage Unstable P0562 System Voltage Low P0563 System Voltage High P0564 Cruise Control Multi-Function Input "A" Circuit P0565 Cruise Control On Signal P0566 Cruise Control Off Signal P0567 Cruise Control Resume Signal P0568 Cruise Control Set Signal P0569 Cruise Control Coast Signal P0570 Cruise Control Accelerate Signal P0571 Brake Switch "A" Circuit P0572 Brake Switch "A" Circuit Low P0573 Brake Switch "A" Circuit High P0574 Cruise Control System - Vehicle Speed Too High P0575 Cruise Control Input Circuit P0576 Cruise Control Input Circuit Low P0577 Cruise Control Input Circuit High P0578 Cruise Control Multi-Function Input "A" Circuit Stuck P0579 Cruise Control Multi-Function Input "A" Circuit Range/Performance P0580 Cruise Control Multi-Function Input "A" Circuit Low P0581 Cruise Control Multi-Function Input "A" Circuit High P0582 Cruise Control Vacuum Control Circuit/Open P0583 Cruise Control Vacuum Control Circuit Low P0584 Cruise Control Vacuum Control Circuit High P0585 Cruise Control Multi-Function Input "A"/"B" Correlation P0586 Cruise Control Vent Control Circuit/Open P0587 Cruise Control Vent Control Circuit Low P0588 Cruise Control Vent Control Circuit High P0589 Cruise Control Multi-Function Input "B" Circuit P0590 Cruise Control Multi-Function Input "B" Circuit Stuck P0591 Cruise Control Multi-Function Input "B" Circuit Range/Performance 125 P0592 Cruise Control Multi-Function Input "B" Circuit Low P0593 Cruise Control Multi-Function Input "B" Circuit High P0594 Cruise Control Servo Control Circuit/Open P0595 Cruise Control Servo Control Circuit Low P0596 Cruise Control Servo Control Circuit High P0597 Thermostat Heater Control Circuit/Open P0598 Thermostat Heater Control Circuit Low P0599 Thermostat Heater Control Circuit High P0600 Serial Communication Link P0601 Internal Control Module Memory Check Sum Error P0602 Control Module Programming Error P0603 Internal Control Module Keep Alive Memory (KAM) Error P0604 Internal Control Module Random Access Memory (RAM) Error P0605 Internal Control Module Read Only Memory (ROM) Error P0606 ECM/PCM Processor P0607 Control Module Performance P0608 Control Module VSS Output "A" P0609 Control Module VSS Output "B" P0610 Control Module Vehicle Options Error P0611 Fuel Injector Control Module Performance P0612 Fuel Injector Control Module Relay Control P0613 TCM Processor P0614 ECM / TCM Incompatible P0615 Starter Relay Circuit P0616 Starter Relay Circuit Low P0617 Starter Relay Circuit High P0618 Alternative Fuel Control Module KAM Error P0619 Alternative Fuel Control Module RAM/ROM Error P0620 Generator Control Circuit P0621 Generator Lamp/L Terminal Circuit P0622 Generator Field/F Terminal Circuit 126 P0623 Generator Lamp Control Circuit P0624 Fuel Cap Lamp Control Circuit P0625 Generator Field/F Terminal Circuit Low P0626 Generator Field/F Terminal Circuit High P0627 Fuel Pump "A" Control Circuit /Open P0628 Fuel Pump "A" Control Circuit Low P0629 Fuel Pump "A" Control Circuit High P0630 VIN Not Programmed or Incompatible - ECM/PCM P0631 VIN Not Programmed or Incompatible - TCM P0632 Odometer Not Programmed - ECM/PCM P0633 Immobilizer Key Not Programmed - ECM/PCM P0634 PCM/ECM/TCM Internal Temperature Too High P0635 Power Steering Control Circuit P0636 Power Steering Control Circuit Low P0637 Power Steering Control Circuit High P0638 Throttle Actuator Control Range/Performance P0639 Throttle Actuator Control Range/Performance P0640 Intake Air Heater Control Circuit P0641 Sensor Reference Voltage "A" Circuit/Open P0642 Sensor Reference Voltage "A" Circuit Low P0643 Sensor Reference Voltage "A" Circuit High P0644 Driver Display Serial Communication Circuit P0645 A/C Clutch Relay Control Circuit P0646 A/C Clutch Relay Control Circuit Low P0647 A/C Clutch Relay Control Circuit High P0648 Immobilizer Lamp Control Circuit P0649 Speed Control Lamp Control Circuit P0650 Malfunction Indicator Lamp (MIL) Control Circuit P0651 Sensor Reference Voltage "B" Circuit/Open P0652 Sensor Reference Voltage "B" Circuit Low P0653 Sensor Reference Voltage "B" Circuit High 127 P0654 Engine RPM Output Circuit P0655 Engine Hot Lamp Output Control Circuit P0656 Fuel Level Output Circuit P0657 Actuator Supply Voltage "A" Circuit/Open P0658 Actuator Supply Voltage "A" Circuit Low P0659 Actuator Supply Voltage "A" Circuit High P0660 Intake Manifold Tuning Valve Control Circuit/Open P0661 Intake Manifold Tuning Valve Control Circuit Low P0662 Intake Manifold Tuning Valve Control Circuit High P0663 Intake Manifold Tuning Valve Control Circuit/Open P0664 Intake Manifold Tuning Valve Control Circuit Low P0665 Intake Manifold Tuning Valve Control Circuit High P0666 PCM/ECM/TCM Internal Temperature Sensor Circuit P0667 PCM/ECM/TCM Internal Temperature Sensor Range/Performance P0668 PCM/ECM/TCM Internal Temperature Sensor Circuit Low P0669 PCM/ECM/TCM Internal Temperature Sensor Circuit High P0670 Glow Plug Module Control Circuit P0671 Cylinder 1 Glow Plug Circuit P0672 Cylinder 2 Glow Plug Circuit P0673 Cylinder 3 Glow Plug Circuit P0674 Cylinder 4 Glow Plug Circuit P0675 Cylinder 5 Glow Plug Circuit P0676 Cylinder 6 Glow Plug Circuit P0677 Cylinder 7 Glow Plug Circuit P0678 Cylinder 8 Glow Plug Circuit P0679 Cylinder 9 Glow Plug Circuit P0680 Cylinder 10 Glow Plug Circuit P0681 Cylinder 11 Glow Plug Circuit P0682 Cylinder 12 Glow Plug Circuit P0683 Glow Plug Control Module to PCM Communication Circuit P0684 Glow Plug Control Module to PCM Communication Circuit Range/Performance 128 P0685 ECM/PCM Power Relay Control Circuit /Open P0686 ECM/PCM Power Relay Control Circuit Low P0687 ECM/PCM Power Relay Control Circuit High P0688 ECM/PCM Power Relay Sense Circuit /Open P0689 ECM/PCM Power Relay Sense Circuit Low P0690 ECM/PCM Power Relay Sense Circuit High P0691 Fan 1 Control Circuit Low P0692 Fan 1 Control Circuit High P0693 Fan 2 Control Circuit Low P0694 Fan 2 Control Circuit High P0695 Fan 3 Control Circuit Low P0696 Fan 3 Control Circuit High P0697 Sensor Reference Voltage "C" Circuit/Open P0698 Sensor Reference Voltage "C" Circuit Low P0699 Sensor Reference Voltage "C" Circuit High P0700 Transmission Control System (MIL Request) P0701 Transmission Control System Range/Performance P0702 Transmission Control System Electrical P0703 Brake Switch "B" Circuit P0704 Clutch Switch Input Circuit Malfunction P0705 Transmission Range Sensor Circuit Malfunction (PRNDL Input) P0706 Transmission Range Sensor Circuit Range/Performance P0707 Transmission Range Sensor Circuit Low P0708 Transmission Range Sensor Circuit High P0709 Transmission Range Sensor Circuit Intermittent P0710 Transmission Fluid Temperature Sensor "A" Circuit P0711 Transmission Fluid Temperature Sensor "A" Circuit Range/Performance P0712 Transmission Fluid Temperature Sensor "A" Circuit Low P0713 Transmission Fluid Temperature Sensor "A" Circuit High P0714 Transmission Fluid Temperature Sensor "A" Circuit Intermittent P0715 Input/Turbine Speed Sensor "A" Circuit 129 P0716 Input/Turbine Speed Sensor "A" Circuit Range/Performance P0717 Input/Turbine Speed Sensor "A" Circuit No Signal P0718 Input/Turbine Speed Sensor "A" Circuit Intermittent P0719 Brake Switch "B" Circuit Low P0720 Output Speed Sensor Circuit P0721 Output Speed Sensor Circuit Range/Performance P0722 Output Speed Sensor Circuit No Signal P0723 Output Speed Sensor Circuit Intermittent P0724 Brake Switch "B" Circuit High P0725 Engine Speed Input Circuit P0726 Engine Speed Input Circuit Range/Performance P0727 Engine Speed Input Circuit No Signal P0728 Engine Speed Input Circuit Intermittent P0729 Gear 6 Incorrect Ratio P0730 Incorrect Gear Ratio P0731 Gear 1 Incorrect Ratio P0732 Gear 2 Incorrect Ratio P0733 Gear 3 Incorrect Ratio P0734 Gear 4 Incorrect Ratio P0735 Gear 5 Incorrect Ratio P0736 Reverse Incorrect Ratio P0737 TCM Engine Speed Output Circuit P0738 TCM Engine Speed Output Circuit Low P0739 TCM Engine Speed Output Circuit High P0740 Torque Converter Clutch Circuit/Open P0741 Torque Converter Clutch Circuit Performance or Stuck Off P0742 Torque Converter Clutch Circuit Stuck On P0743 Torque Converter Clutch Circuit Electrical P0744 Torque Converter Clutch Circuit Intermittent P0745 Pressure Control Solenoid "A" P0746 Pressure Control Solenoid "A" Performance or Stuck Off 130 P0747 Pressure Control Solenoid "A" Stuck On P0748 Pressure Control Solenoid "A" Electrical P0749 Pressure Control Solenoid "A" Intermittent P0750 Shift Solenoid "A" P0751 Shift Solenoid "A" Performance or Stuck Off P0752 Shift Solenoid "A" Stuck On P0753 Shift Solenoid "A" Electrical P0754 Shift Solenoid "A" Intermittent P0755 Shift Solenoid "B" P0756 Shift Solenoid "B" Performance or Stuck Off P0757 Shift Solenoid "B" Stuck On P0758 Shift Solenoid "B" Electrical P0759 Shift Solenoid "B" Intermittent P0760 Shift Solenoid "C" P0761 Shift Solenoid "C" Performance or Stuck Off P0762 Shift Solenoid "C" Stuck On P0763 Shift Solenoid "C" Electrical P0764 Shift Solenoid "C" Intermittent P0765 Shift Solenoid "D" P0766 Shift Solenoid "D" Performance or Stuck Off P0767 Shift Solenoid "D" Stuck On P0768 Shift Solenoid "D" Electrical P0769 Shift Solenoid "D" Intermittent P0770 Shift Solenoid "E" P0771 Shift Solenoid "E" Performance or Stuck Off P0772 Shift Solenoid "E" Stuck On P0773 Shift Solenoid "E" Electrical P0774 Shift Solenoid "E" Intermittent P0775 Pressure Control Solenoid "B" P0776 Pressure Control Solenoid "B" Performance or Stuck off P0777 Pressure Control Solenoid "B" Stuck On 131 P0778 Pressure Control Solenoid "B" Electrical P0779 Pressure Control Solenoid "B" Intermittent P0780 Shift Error P0781 1-2 Shift P0782 2-3 Shift P0783 3-4 Shift P0784 4-5 Shift P0785 Shift/Timing Solenoid P0786 Shift/Timing Solenoid Range/Performance P0787 Shift/Timing Solenoid Low P0788 Shift/Timing Solenoid High P0789 Shift/Timing Solenoid Intermittent P0790 Normal/Performance Switch Circuit P0791 Intermediate Shaft Speed Sensor "A" Circuit P0792 Intermediate Shaft Speed Sensor "A" Circuit Range/Performance P0793 Intermediate Shaft Speed Sensor "A" Circuit No Signal P0794 Intermediate Shaft Speed Sensor "A" Circuit Intermittent P0795 Pressure Control Solenoid "C" P0796 Pressure Control Solenoid "C" Performance or Stuck off P0797 Pressure Control Solenoid "C" Stuck On P0798 Pressure Control Solenoid "C" Electrical P0799 Pressure Control Solenoid "C" Intermittent P0800 Transfer Case Control System (MIL Request) P0801 Reverse Inhibit Control Circuit P0802 Transmission Control System MIL Request Circuit/Open P0803 1-4 Upshift (Skip Shift) Solenoid Control Circuit P0804 1-4 Upshift (Skip Shift) Lamp Control Circuit P0805 Clutch Position Sensor Circuit P0806 Clutch Position Sensor Circuit Range/Performance P0807 Clutch Position Sensor Circuit Low P0808 Clutch Position Sensor Circuit High 132 P0809 Clutch Position Sensor Circuit Intermittent P0810 Clutch Position Control Error P0811 Excessive Clutch Slippage P0812 Reverse Input Circuit P0813 Reverse Output Circuit P0814 Transmission Range Display Circuit P0815 Upshift Switch Circuit P0816 Downshift Switch Circuit P0817 Starter Disable Circuit P0818 Driveline Disconnect Switch Input Circuit P0819 Up and Down Shift Switch to Transmission Range Correlation P0820 Gear Lever X-Y Position Sensor Circuit P0821 Gear Lever X Position Circuit P0822 Gear Lever Y Position Circuit P0823 Gear Lever X Position Circuit Intermittent P0824 Gear Lever Y Position Circuit Intermittent P0825 Gear Lever Push-Pull Switch (Shift Anticipate) P0826 Up and Down Shift Switch Circuit P0827 Up and Down Shift Switch Circuit Low P0828 Up and Down Shift Switch Circuit High P0829 5-6 Shift P0830 Clutch Pedal Switch "A" Circuit P0831 Clutch Pedal Switch "A" Circuit Low P0832 Clutch Pedal Switch "A" Circuit High P0833 Clutch Pedal Switch "B" Circuit P0834 Clutch Pedal Switch "B" Circuit Low P0835 Clutch Pedal Switch "B" Circuit High P0836 Four Wheel Drive (4WD) Switch Circuit P0837 Four Wheel Drive (4WD) Switch Circuit Range/Performance P0838 Four Wheel Drive (4WD) Switch Circuit Low P0839 Four Wheel Drive (4WD) Switch Circuit High 133 P0840 Transmission Fluid Pressure Sensor/Switch "A" Circuit P0841 Transmission Fluid Pressure Sensor/Switch "A" Circuit Range/Performance P0842 Transmission Fluid Pressure Sensor/Switch "A" Circuit Low P0843 Transmission Fluid Pressure Sensor/Switch "A" Circuit High P0844 Transmission Fluid Pressure Sensor/Switch "A" Circuit Intermittent P0845 Transmission Fluid Pressure Sensor/Switch "B" Circuit P0846 Transmission Fluid Pressure Sensor/Switch "B" Circuit Range/Performance P0847 Transmission Fluid Pressure Sensor/Switch "B" Circuit Low P0848 Transmission Fluid Pressure Sensor/Switch "B" Circuit High P0849 Transmission Fluid Pressure Sensor/Switch "B" Circuit Intermittent P0850 Park/Neutral Switch Input Circuit P0851 Park/Neutral Switch Input Circuit Low P0852 Park/Neutral Switch Input Circuit High P0853 Drive Switch Input Circuit P0854 Drive Switch Input Circuit Low P0855 Drive Switch Input Circuit High P0856 Traction Control Input Signal P0857 Traction Control Input Signal Range/Performance P0858 Traction Control Input Signal Low P0859 Traction Control Input Signal High P0860 Gear Shift Module Communication Circuit P0861 Gear Shift Module Communication Circuit Low P0862 Gear Shift Module Communication Circuit High P0863 TCM Communication Circuit P0864 TCM Communication Circuit Range/Performance P0865 TCM Communication Circuit Low P0866 TCM Communication Circuit High P0867 Transmission Fluid Pressure P0868 Transmission Fluid Pressure Low P0869 Transmission Fluid Pressure High P0870 Transmission Fluid Pressure Sensor/Switch "C" Circuit 134 P0871 Transmission Fluid Pressure Sensor/Switch "C" Circuit Range/Performance P0872 Transmission Fluid Pressure Sensor/Switch "C" Circuit Low P0873 Transmission Fluid Pressure Sensor/Switch "C" Circuit High P0874 Transmission Fluid Pressure Sensor/Switch "C" Circuit Intermittent P0875 Transmission Fluid Pressure Sensor/Switch "D" Circuit P0876 Transmission Fluid Pressure Sensor/Switch "D" Circuit Range/Performance P0877 Transmission Fluid Pressure Sensor/Switch "D" Circuit Low P0878 Transmission Fluid Pressure Sensor/Switch "D" Circuit High P0879 Transmission Fluid Pressure Sensor/Switch "D" Circuit Intermittent P0880 TCM Power Input Signal P0881 TCM Power Input Signal Range/Performance P0882 TCM Power Input Signal Low P0883 TCM Power Input Signal High P0884 TCM Power Input Signal Intermittent P0885 TCM Power Relay Control Circuit/Open P0886 TCM Power Relay Control Circuit Low P0887 TCM Power Relay Control Circuit High P0888 TCM Power Relay Sense Circuit P0889 TCM Power Relay Sense Circuit Range/Performance P0890 TCM Power Relay Sense Circuit Low P0891 TCM Power Relay Sense Circuit High P0892 TCM Power Relay Sense Circuit Intermittent P0893 Multiple Gears Engaged P0894 Transmission Component Slipping P0895 Shift Time Too Short P0896 Shift Time Too Long P0897 Transmission Fluid Deteriorated P0898 Transmission Control System MIL Request Circuit Low P0899 Transmission Control System MIL Request Circuit High P0900 Clutch Actuator Circuit/Open P0901 Clutch Actuator Circuit Range/Performance 135 P0902 Clutch Actuator Circuit Low P0903 Clutch Actuator Circuit High P0904 Gate Select Position Circuit P0905 Gate Select Position Circuit Range/Performance P0906 Gate Select Position Circuit Low P0907 Gate Select Position Circuit High P0908 Gate Select Position Circuit Intermittent P0909 Gate Select Control Error P0910 Gate Select Actuator Circuit/Open P0911 Gate Select Actuator Circuit Range/Performance P0912 Gate Select Actuator Circuit Low P0913 Gate Select Actuator Circuit High P0914 Gear Shift Position Circuit P0915 Gear Shift Position Circuit Range/Performance P0916 Gear Shift Position Circuit Low P0917 Gear Shift Position Circuit High P0918 Gear Shift Position Circuit Intermittent P0919 Gear Shift Position Control Error P0920 Gear Shift Forward Actuator Circuit/Open P0921 Gear Shift Forward Actuator Circuit Range/Performance P0922 Gear Shift Forward Actuator Circuit Low P0923 Gear Shift Forward Actuator Circuit High P0924 Gear Shift Reverse Actuator Circuit/Open P0925 Gear Shift Reverse Actuator Circuit Range/Performance P0926 Gear Shift Reverse Actuator Circuit Low P0927 Gear Shift Reverse Actuator Circuit High P0928 Gear Shift Lock Solenoid Control Circuit/Open P0929 Gear Shift Lock Solenoid Control Circuit Range/Performance P0930 Gear Shift Lock Solenoid Control Circuit Low P0931 Gear Shift Lock Solenoid Control Circuit High P0932 Hydraulic Pressure Sensor Circuit 136 P0933 Hydraulic Pressure Sensor Range/Performance P0934 Hydraulic Pressure Sensor Circuit Low P0935 Hydraulic Pressure Sensor Circuit High P0936 Hydraulic Pressure Sensor Circuit Intermittent P0937 Hydraulic Oil Temperature Sensor Circuit P0938 Hydraulic Oil Temperature Sensor Range/Performance P0939 Hydraulic Oil Temperature Sensor Circuit Low P0940 Hydraulic Oil Temperature Sensor Circuit High P0941 Hydraulic Oil Temperature Sensor Circuit Intermittent P0942 Hydraulic Pressure Unit P0943 Hydraulic Pressure Unit Cycling Period Too Short P0944 Hydraulic Pressure Unit Loss of Pressure P0945 Hydraulic Pump Relay Circuit/Open P0946 Hydraulic Pump Relay Circuit Range/Performance P0947 Hydraulic Pump Relay Circuit Low P0948 Hydraulic Pump Relay Circuit High P0949 Auto Shift Manual Adaptive Learning Not Complete P0950 Auto Shift Manual Control Circuit P0951 Auto Shift Manual Control Circuit Range/Performance P0952 Auto Shift Manual Control Circuit Low P0953 Auto Shift Manual Control Circuit High P0954 Auto Shift Manual Control Circuit Intermittent P0955 Auto Shift Manual Mode Circuit P0956 Auto Shift Manual Mode Circuit Range/Performance P0957 Auto Shift Manual Mode Circuit Low P0958 Auto Shift Manual Mode Circuit High P0959 Auto Shift Manual Mode Circuit Intermittent P0960 Pressure Control Solenoid "A" Control Circuit/Open P0961 Pressure Control Solenoid "A" Control Circuit Range/Performance P0962 Pressure Control Solenoid "A" Control Circuit Low P0963 Pressure Control Solenoid "A" Control Circuit High 137 P0964 Pressure Control Solenoid "B" Control Circuit/Open P0965 Pressure Control Solenoid "B" Control Circuit Range/Performance P0966 Pressure Control Solenoid "B" Control Circuit Low P0967 Pressure Control Solenoid "B" Control Circuit High P0968 Pressure Control Solenoid "C" Control Circuit/Open P0969 Pressure Control Solenoid "C" Control Circuit Range/Performance P0970 Pressure Control Solenoid "C" Control Circuit Low P0971 Pressure Control Solenoid "C" Control Circuit High P0972 Shift Solenoid "A" Control Circuit Range/Performance P0973 Shift Solenoid "A" Control Circuit Low P0974 Shift Solenoid "A" Control Circuit High P0975 Shift Solenoid "B" Control Circuit Range/Performance P0976 Shift Solenoid "B" Control Circuit Low P0977 Shift Solenoid "B" Control Circuit High P0978 Shift Solenoid "C" Control Circuit Range/Performance P0979 Shift Solenoid "C" Control Circuit Low P0980 Shift Solenoid "C" Control Circuit High P0981 Shift Solenoid "D" Control Circuit Range/Performance P0982 Shift Solenoid "D" Control Circuit Low P0983 Shift Solenoid "D" Control Circuit High P0984 Shift Solenoid "E" Control Circuit Range/Performance P0985 Shift Solenoid "E" Control Circuit Low P0986 Shift Solenoid "E" Control Circuit High P0987 Transmission Fluid Pressure Sensor/Switch "E" Circuit P0988 Transmission Fluid Pressure Sensor/Switch "E" Circuit Range/Performance P0989 Transmission Fluid Pressure Sensor/Switch "E" Circuit Low P0990 Transmission Fluid Pressure Sensor/Switch "E" Circuit High P0991 Transmission Fluid Pressure Sensor/Switch "E" Circuit Intermittent P0992 Transmission Fluid Pressure Sensor/Switch "F" Circuit P0993 Transmission Fluid Pressure Sensor/Switch "F" Circuit Range/Performance P0994 Transmission Fluid Pressure Sensor/Switch "F" Circuit Low 138 P0995 Transmission Fluid Pressure Sensor/Switch "F" Circuit High P0996 Transmission Fluid Pressure Sensor/Switch "F" Circuit Intermittent P0997 Shift Solenoid "F" Control Circuit Range/Performance P0998 Shift Solenoid "F" Control Circuit Low P0999 Shift Solenoid "F" Control Circuit High P0A00 Motor Electronics Coolant Temperature Sensor Circuit P0A01 Motor Electronics Coolant Temperature Sensor Circuit Range/Performance P0A02 Motor Electronics Coolant Temperature Sensor Circuit Low P0A03 Motor Electronics Coolant Temperature Sensor Circuit High P0A04 Motor Electronics Coolant Temperature Sensor Circuit Intermittent P0A05 Motor Electronics Coolant Pump Control Circuit/Open P0A06 Motor Electronics Coolant Pump Control Circuit Low P0A07 Motor Electronics Coolant Pump Control Circuit High P0A08 DC/DC Converter Status Circuit P0A09 DC/DC Converter Status Circuit Low Input P0A10 DC/DC Converter Status Circuit High Input P0A11 DC/DC Converter Enable Circuit/Open P0A12 DC/DC Converter Enable Circuit Low P0A13 DC/DC Converter Enable Circuit High P0A14 Engine Mount Control Circuit/Open P0A15 Engine Mount Control Circuit Low P0A16 Engine Mount Control Circuit High P0A17 Motor Torque Sensor Circuit P0A18 Motor Torque Sensor Circuit Range/Performance P0A19 Motor Torque Sensor Circuit Low P0A20 Motor Torque Sensor Circuit High P0A21 Motor Torque Sensor Circuit Intermittent P0A22 Generator Torque Sensor Circuit P0A23 Generator Torque Sensor Circuit Range/Performance P0A24 Generator Torque Sensor Circuit Low P0A25 Generator Torque Sensor Circuit High 139 P0A26 Generator Torque Sensor Circuit Intermittent P0A27 Battery Power Off Circuit P0A28 Battery Power Off Circuit Low P0A29 Battery Power Off Circuit High P2000 NOx Trap Efficiency Below Threshold P2001 NOx Trap Efficiency Below Threshold P2002 Particulate Trap Efficiency Below Threshold P2003 Particulate Trap Efficiency Below Threshold P2004 Intake Manifold Runner Control Stuck Open P2005 Intake Manifold Runner Control Stuck Open P2006 Intake Manifold Runner Control Stuck Closed P2007 Intake Manifold Runner Control Stuck Closed P2008 Intake Manifold Runner Control Circuit/Open P2009 Intake Manifold Runner Control Circuit Low P2010 Intake Manifold Runner Control Circuit High P2011 Intake Manifold Runner Control Circuit/Open P2012 Intake Manifold Runner Control Circuit Low P2013 Intake Manifold Runner Control Circuit High P2014 Intake Manifold Runner Position Sensor/Switch Circuit P2015 Intake Manifold Runner Position Sensor/Switch Circuit Range/Performance P2016 Intake Manifold Runner Position Sensor/Switch Circuit Low P2017 Intake Manifold Runner Position Sensor/Switch Circuit High P2018 Intake Manifold Runner Position Sensor/Switch Circuit Intermittent P2019 Intake Manifold Runner Position Sensor/Switch Circuit P2020 Intake Manifold Runner Position Sensor/Switch Circuit Range/Performance P2021 Intake Manifold Runner Position Sensor/Switch Circuit Low P2022 Intake Manifold Runner Position Sensor/Switch Circuit High P2023 Intake Manifold Runner Position Sensor/Switch Circuit Intermittent P2024 Evaporative Emissions (EVAP) Fuel Vapor Temperature Sensor Circuit P2025 Evaporative Emissions (EVAP) Fuel Vapor Temperature Sensor Performance P2026 Evaporative Emissions (EVAP) Fuel Vapor Temperature Sensor Circuit Low Voltage 140 P2027 Evaporative Emissions (EVAP) Fuel Vapor Temperature Sensor Circuit High Voltage P2028 Evaporative Emissions (EVAP) Fuel Vapor Temperature Sensor Circuit Intermittent P2029 Fuel Fired Heater Disabled P2030 Fuel Fired Heater Performance P2031 Exhaust Gas Temperature Sensor Circuit P2032 Exhaust Gas Temperature Sensor Circuit Low P2033 Exhaust Gas Temperature Sensor Circuit High P2034 Exhaust Gas Temperature Sensor Circuit P2035 Exhaust Gas Temperature Sensor Circuit Low P2036 Exhaust Gas Temperature Sensor Circuit High P2037 Reductant Injection Air Pressure Sensor Circuit P2038 Reductant Injection Air Pressure Sensor Circuit Range/Performance P2039 Reductant Injection Air Pressure Sensor Circuit Low Input P2040 Reductant Injection Air Pressure Sensor Circuit High Input P2041 Reductant Injection Air Pressure Sensor Circuit Intermittent P2042 Reductant Temperature Sensor Circuit P2043 Reductant Temperature Sensor Circuit Range/Performance P2044 Reductant Temperature Sensor Circuit Low Input P2045 Reductant Temperature Sensor Circuit High Input P2046 Reductant Temperature Sensor Circuit Intermittent P2047 Reductant Injector Circuit/Open P2048 Reductant Injector Circuit Low P2049 Reductant Injector Circuit High P2050 Reductant Injector Circuit/Open P2051 Reductant Injector Circuit Low P2052 Reductant Injector Circuit High P2053 Reductant Injector Circuit/Open P2054 Reductant Injector Circuit Low P2055 Reductant Injector Circuit High P2056 Reductant Injector Circuit/Open P2057 Reductant Injector Circuit Low 141 P2058 Reductant Injector Circuit High P2059 Reductant Injection Air Pump Control Circuit/Open P2060 Reductant Injection Air Pump Control Circuit Low P2061 Reductant Injection Air Pump Control Circuit High P2062 Reductant Supply Control Circuit/Open P2063 Reductant Supply Control Circuit Low P2064 Reductant Supply Control Circuit High P2065 Fuel Level Sensor "B" Circuit P2066 Fuel Level Sensor "B" Performance P2067 Fuel Level Sensor "B" Circuit Low P2068 Fuel Level Sensor "B" Circuit High P2069 Fuel Level Sensor "B" Circuit Intermittent P2070 Intake Manifold Tuning (IMT) Valve Stuck Open P2071 Intake Manifold Tuning (IMT) Valve Stuck Closed P2075 Intake Manifold Tuning (IMT) Valve Position Sensor/Switch Circuit P2076 Intake Manifold Tuning (IMT) Valve Position Sensor/Switch Circuit Range/Performance P2077 Intake Manifold Tuning (IMT) Valve Position Sensor/Switch Circuit Low P2078 Intake Manifold Tuning (IMT) Valve Position Sensor/Switch Circuit High P2079 Intake Manifold Tuning (IMT) Valve Position Sensor/Switch Circuit Intermittent P2080 Exhaust Gas Temperature Sensor Circuit Range/Performance P2081 Exhaust Gas Temperature Sensor Circuit Intermittent P2082 Exhaust Gas Temperature Sensor Circuit Range/Performance P2083 Exhaust Gas Temperature Sensor Circuit Intermittent P2084 Exhaust Gas Temperature Sensor Circuit Range/Performance P2085 Exhaust Gas Temperature Sensor Circuit Intermittent P2086 Exhaust Gas Temperature Sensor Circuit Range/Performance P2087 Exhaust Gas Temperature Sensor Circuit Intermittent P2088 "A" Camshaft Position Actuator Control Circuit Low P2089 "A" Camshaft Position Actuator Control Circuit High P2090 "B" Camshaft Position Actuator Control Circuit Low P2091 "B" Camshaft Position Actuator Control Circuit High 142 P2092 "A" Camshaft Position Actuator Control Circuit Low P2093 "A" Camshaft Position Actuator Control Circuit High P2094 "B" Camshaft Position Actuator Control Circuit Low P2095 "B" Camshaft Position Actuator Control Circuit High P2096 Post Catalyst Fuel Trim System Too Lean P2097 Post Catalyst Fuel Trim System Too Rich P2098 Post Catalyst Fuel Trim System Too Lean P2099 Post Catalyst Fuel Trim System Too Rich P2100 Throttle Actuator Control Motor Circuit/Open P2101 Throttle Actuator Control Motor Circuit Range/Performance P2102 Throttle Actuator Control Motor Circuit Low P2103 Throttle Actuator Control Motor Circuit High P2104 Throttle Actuator Control System - Forced Idle P2105 Throttle Actuator Control System - Forced Engine Shutdown P2106 Throttle Actuator Control System - Forced Limited Power P2107 Throttle Actuator Control Module Processor P2108 Throttle Actuator Control Module Performance P2109 Throttle/Pedal Position Sensor "A" Minimum Stop Performance P2110 Throttle Actuator Control System - Forced Limited RPM P2111 Throttle Actuator Control System - Stuck Open P2112 Throttle Actuator Control System - Stuck Closed P2113 Throttle/Pedal Position Sensor "B" Minimum Stop Performance P2114 Throttle/Pedal Position Sensor "C" Minimum Stop Performance P2115 Throttle/Pedal Position Sensor "D" Minimum Stop Performance P2116 Throttle/Pedal Position Sensor "E" Minimum Stop Performance P2117 Throttle/Pedal Position Sensor "F" Minimum Stop Performance P2118 Throttle Actuator Control Motor Current Range/Performance P2119 Throttle Actuator Control Throttle Body Range/Performance P2120 Throttle/Pedal Position Sensor/Switch "D" Circuit P2121 Throttle/Pedal Position Sensor/Switch "D" Circuit Range/Performance P2122 Throttle/Pedal Position Sensor/Switch "D" Circuit Low Input 143 P2123 Throttle/Pedal Position Sensor/Switch "D" Circuit High Input P2124 Throttle/Pedal Position Sensor/Switch "D" Circuit Intermittent P2125 Throttle/Pedal Position Sensor/Switch "E" Circuit P2126 Throttle/Pedal Position Sensor/Switch "E" Circuit Range/Performance P2127 Throttle/Pedal Position Sensor/Switch "E" Circuit Low Input P2128 Throttle/Pedal Position Sensor/Switch "E" Circuit High Input P2129 Throttle/Pedal Position Sensor/Switch "E" Circuit Intermittent P2130 Throttle/Pedal Position Sensor/Switch "F" Circuit P2131 Throttle/Pedal Position Sensor/Switch "F" Circuit Range Performance P2132 Throttle/Pedal Position Sensor/Switch "F" Circuit Low Input P2133 Throttle/Pedal Position Sensor/Switch "F" Circuit High Input P2134 Throttle/Pedal Position Sensor/Switch "F" Circuit Intermittent P2135 Throttle/Pedal Position Sensor/Switch "A" / "B" Voltage Correlation P2136 Throttle/Pedal Position Sensor/Switch "A" / "C" Voltage Correlation P2137 Throttle/Pedal Position Sensor/Switch "B" / "C" Voltage Correlation P2138 Throttle/Pedal Position Sensor/Switch "D" / "E" Voltage Correlation P2139 Throttle/Pedal Position Sensor/Switch "D" / "F" Voltage Correlation P2140 Throttle/Pedal Position Sensor/Switch "E" / "F" Voltage Correlation P2141 Exhaust Gas Recirculation Throttle Control Circuit Low P2142 Exhaust Gas Recirculation Throttle Control Circuit High P2143 Exhaust Gas Recirculation Vent Control Circuit/Open P2144 Exhaust Gas Recirculation Vent Control Circuit Low P2145 Exhaust Gas Recirculation Vent Control Circuit High P2146 Fuel Injector Group "A" Supply Voltage Circuit/Open P2147 Fuel Injector Group "A" Supply Voltage Circuit Low P2148 Fuel Injector Group "A" Supply Voltage Circuit High P2149 Fuel Injector Group "B" Supply Voltage Circuit/Open P2150 Fuel Injector Group "B" Supply Voltage Circuit Low P2151 Fuel Injector Group "B" Supply Voltage Circuit High P2152 Fuel Injector Group "C" Supply Voltage Circuit/Open P2153 Fuel Injector Group "C" Supply Voltage Circuit Low 144 P2154 Fuel Injector Group "C" Supply Voltage Circuit High P2155 Fuel Injector Group "D" Supply Voltage Circuit/Open P2156 Fuel Injector Group "D" Supply Voltage Circuit Low P2157 Fuel Injector Group "D" Supply Voltage Circuit High P2158 Vehicle Speed Sensor "B" P2159 Vehicle Speed Sensor "B" Range/Performance P2160 Vehicle Speed Sensor "B" Circuit Low P2161 Vehicle Speed Sensor "B" Intermittent/Erratic P2162 Vehicle Speed Sensor "A" / "B" Correlation P2163 Throttle/Pedal Position Sensor "A" Maximum Stop Performance P2164 Throttle/Pedal Position Sensor "B" Maximum Stop Performance P2165 Throttle/Pedal Position Sensor "C" Maximum Stop Performance P2166 Throttle/Pedal Position Sensor "D" Maximum Stop Performance P2167 Throttle/Pedal Position Sensor "E" Maximum Stop Performance P2168 Throttle/Pedal Position Sensor "F" Maximum Stop Performance P2169 Exhaust Pressure Regulator Vent Solenoid Control Circuit/Open P2170 Exhaust Pressure Regulator Vent Solenoid Control Circuit Low P2171 Exhaust Pressure Regulator Vent Solenoid Control Circuit High P2172 Throttle Actuator Control System - Sudden High Airflow Detected P2173 Throttle Actuator Control System - High Airflow Detected P2174 Throttle Actuator Control System - Sudden Low Airflow Detected P2175 Throttle Actuator Control System - Low Airflow Detected P2176 Throttle Actuator Control System - Idle Position Not Learned P2177 System Too Lean Off Idle P2178 System Too Rich Off Idle P2179 System Too Lean Off Idle P2180 System Too Rich Off Idle P2181 Cooling System Performance P2182 Engine Coolant Temperature Sensor 2 Circuit P2183 Engine Coolant Temperature Sensor 2 Circuit Range/Performance P2184 Engine Coolant Temperature Sensor 2 Circuit Low 145 P2185 Engine Coolant Temperature Sensor 2 Circuit High P2186 Engine Coolant Temperature Sensor 2 Circuit Intermittent/Erratic P2187 System Too Lean at Idle P2188 System Too Rich at Idle P2189 System Too Lean at Idle P2190 System Too Rich at Idle P2191 System Too Lean at Higher Load P2192 System Too Rich at Higher Load P2193 System Too Lean at Higher Load P2194 System Too Rich at Higher Load P2195 O2 Sensor Signal Stuck Lean P2196 O2 Sensor Signal Stuck Rich P2197 O2 Sensor Signal Stuck Lean P2198 O2 Sensor Signal Stuck Rich P2199 Intake Air Temperature Sensor 1 / 2 Correlation P2200 NOx Sensor Circuit P2201 NOx Sensor Circuit Range/Performance P2202 NOx Sensor Circuit Low Input P2203 NOx Sensor Circuit High Input P2204 NOx Sensor Circuit Intermittent Input P2205 NOx Sensor Heater Control Circuit/Open P2206 NOx Sensor Heater Control Circuit Low P2207 NOx Sensor Heater Control Circuit High P2208 NOx Sensor Heater Sense Circuit P2209 NOx Sensor Heater Sense Circuit Range/Performance P2210 NOx Sensor Heater Sense Circuit Low Input P2211 NOx Sensor Heater Sense Circuit High Input P2212 NOx Sensor Heater Sense Circuit Intermittent P2213 NOx Sensor Circuit P2214 NOx Sensor Circuit Range/Performance P2215 NOx Sensor Circuit Low Input 146 P2216 NOx Sensor Circuit High Input P2217 NOx Sensor Circuit Intermittent Input P2218 NOx Sensor Heater Control Circuit/Open P2219 NOx Sensor Heater Control Circuit Low P2220 NOx Sensor Heater Control Circuit High P2221 NOx Sensor Heater Sense Circuit P2222 NOx Sensor Heater Sense Circuit Range/Performance P2223 NOx Sensor Heater Sense Circuit Low P2224 NOx Sensor Heater Sense Circuit High P2225 NOx Sensor Heater Sense Circuit Intermittent P2226 Barometric Pressure Circuit P2227 Barometric Pressure Circuit Range/Performance P2228 Barometric Pressure Circuit Low P2229 Barometric Pressure Circuit High P2230 Barometric Pressure Circuit Intermittent P2231 O2 Sensor Signal Circuit Shorted to Heater Circuit P2232 O2 Sensor Signal Circuit Shorted to Heater Circuit P2233 O2 Sensor Signal Circuit Shorted to Heater Circuit P2234 O2 Sensor Signal Circuit Shorted to Heater Circuit P2235 O2 Sensor Signal Circuit Shorted to Heater Circuit P2236 O2 Sensor Signal Circuit Shorted to Heater Circuit P2237 O2 Sensor Positive Current Control Circuit/Open P2238 O2 Sensor Positive Current Control Circuit Low P2239 O2 Sensor Positive Current Control Circuit High P2240 O2 Sensor Positive Current Control Circuit/Open P2241 O2 Sensor Positive Current Control Circuit Low P2242 O2 Sensor Positive Current Control Circuit High P2243 O2 Sensor Reference Voltage Circuit/Open P2244 O2 Sensor Reference Voltage Performance P2245 O2 Sensor Reference Voltage Circuit Low P2246 O2 Sensor Reference Voltage Circuit High 147 P2247 O2 Sensor Reference Voltage Circuit/Open P2248 O2 Sensor Reference Voltage Performance P2249 O2 Sensor Reference Voltage Circuit Low P2250 O2 Sensor Reference Voltage Circuit High P2251 O2 Sensor Negative Current Control Circuit/Open P2252 O2 Sensor Negative Current Control Circuit Low P2253 O2 Sensor Negative Current Control Circuit High P2254 O2 Sensor Negative Current Control Circuit/Open P2255 O2 Sensor Negative Current Control Circuit Low P2256 O2 Sensor Negative Current Control Circuit High P2257 Secondary Air Injection System Control "A" Circuit Low P2258 Secondary Air Injection System Control "A" Circuit High P2259 Secondary Air Injection System Control "B" Circuit Low P2260 Secondary Air Injection System Control "B" Circuit High P2261 Turbo/Super Charger Bypass Valve - Mechanical P2262 Turbo Boost Pressure Not Detected - Mechanical P2263 Turbo/Super Charger Boost System Performance P2264 Water in Fuel Sensor Circuit P2265 Water in Fuel Sensor Circuit Range/Performance P2266 Water in Fuel Sensor Circuit Low P2267 Water in Fuel Sensor Circuit High P2268 Water in Fuel Sensor Circuit Intermittent P2269 Water in Fuel Condition P2270 O2 Sensor Signal Stuck Lean P2271 O2 Sensor Signal Stuck Rich P2272 O2 Sensor Signal Stuck Lean P2273 O2 Sensor Signal Stuck Rich P2274 O2 Sensor Signal Stuck Lean P2275 O2 Sensor Signal Stuck Rich P2276 O2 Sensor Signal Stuck Lean P2277 O2 Sensor Signal Stuck Rich 148 P2278 O2 Sensor Signals Swapped Bank 1 Sensor 3 / Bank 2 Sensor 3 P2279 Intake Air System Leak P2280 Air Flow Restriction / Air Leak Between Air Filter and MAF P2281 Air Leak Between MAF and Throttle Body P2282 Air Leak Between Throttle Body and Intake Valves P2283 Injector Control Pressure Sensor Circuit P2284 Injector Control Pressure Sensor Circuit Range/Performance P2285 Injector Control Pressure Sensor Circuit Low P2286 Injector Control Pressure Sensor Circuit High P2287 Injector Control Pressure Sensor Circuit Intermittent P2288 Injector Control Pressure Too High P2289 Injector Control Pressure Too High - Engine Off P2290 Injector Control Pressure Too Low P2291 Injector Control Pressure Too Low - Engine Cranking P2292 Injector Control Pressure Erratic P2293 Fuel Pressure Regulator 2 Performance P2294 Fuel Pressure Regulator 2 Control Circuit P2295 Fuel Pressure Regulator 2 Control Circuit Low P2296 Fuel Pressure Regulator 2 Control Circuit High P2297 O2 Sensor Out of Range During Deceleration P2298 O2 Sensor Out of Range During Deceleration P2299 Brake Pedal Position / Accelerator Pedal Position Incompatible P2300 Ignition Coil "A" Primary Control Circuit Low P2301 Ignition Coil "A" Primary Control Circuit High P2302 Ignition Coil "A" Secondary Circuit P2303 Ignition Coil "B" Primary Control Circuit Low P2304 Ignition Coil "B" Primary Control Circuit High P2305 Ignition Coil "B" Secondary Circuit P2306 Ignition Coil "C" Primary Control Circuit Low P2307 Ignition Coil "C" Primary Control Circuit High P2308 Ignition Coil "C" Secondary Circuit 149 P2309 Ignition Coil "D" Primary Control Circuit Low P2310 Ignition Coil "D" Primary Control Circuit High P2311 Ignition Coil "D" Secondary Circuit P2312 Ignition Coil "E" Primary Control Circuit Low P2313 Ignition Coil "E" Primary Control Circuit High P2314 Ignition Coil "E" Secondary Circuit P2315 Ignition Coil "F" Primary Control Circuit Low P2316 Ignition Coil "F" Primary Control Circuit High P2317 Ignition Coil "F" Secondary Circuit P2318 Ignition Coil "G" Primary Control Circuit Low P2319 Ignition Coil "G" Primary Control Circuit High P2320 Ignition Coil "G" Secondary Circuit P2321 Ignition Coil "H" Primary Control Circuit Low P2322 Ignition Coil "H" Primary Control Circuit High P2323 Ignition Coil "H" Secondary Circuit P2324 Ignition Coil "I" Primary Control Circuit Low P2325 Ignition Coil "I" Primary Control Circuit High P2326 Ignition Coil "I" Secondary Circuit P2327 Ignition Coil "J" Primary Control Circuit Low P2328 Ignition Coil "J" Primary Control Circuit High P2329 Ignition Coil "J" Secondary Circuit P2330 Ignition Coil "K" Primary Control Circuit Low P2331 Ignition Coil "K" Primary Control Circuit High P2332 Ignition Coil "K" Secondary Circuit P2333 Ignition Coil "L" Primary Control Circuit Low P2334 Ignition Coil "L" Primary Control Circuit High P2335 Ignition Coil "L" Secondary Circuit P2336 Cylinder #1 Above Knock Threshold P2337 Cylinder #2 Above Knock Threshold P2338 Cylinder #3 Above Knock Threshold P2339 Cylinder #4 Above Knock Threshold 150 P2340 Cylinder #5 Above Knock Threshold P2341 Cylinder #6 Above Knock Threshold P2342 Cylinder #7 Above Knock Threshold P2343 Cylinder #8 Above Knock Threshold P2344 Cylinder #9 Above Knock Threshold P2345 Cylinder #10 Above Knock Threshold P2346 Cylinder #11 Above Knock Threshold P2347 Cylinder #12 Above Knock Threshold P2400 Evaporative Emission System Leak Detection Pump Control Circuit/Open P2401 Evaporative Emission System Leak Detection Pump Control Circuit Low P2402 Evaporative Emission System Leak Detection Pump Control Circuit High P2403 Evaporative Emission System Leak Detection Pump Sense Circuit/Open P2404 Evaporative Emission System Leak Detection Pump Sense Circuit Range/Performance P2405 Evaporative Emission System Leak Detection Pump Sense Circuit Low P2406 Evaporative Emission System Leak Detection Pump Sense Circuit High P2407 Evaporative Emission System Leak Detection Pump Sense Circuit Intermittent/Erratic P2408 Fuel Cap Sensor/Switch Circuit P2409 Fuel Cap Sensor/Switch Circuit Range/Performance P2410 Fuel Cap Sensor/Switch Circuit Low P2411 Fuel Cap Sensor/Switch Circuit High P2412 Fuel Cap Sensor/Switch Circuit Intermittent/Erratic P2413 Exhaust Gas Recirculation System Performance P2414 O2 Sensor Exhaust Sample Error P2415 O2 Sensor Exhaust Sample Error P2416 O2 Sensor Signals Swapped Bank 1 Sensor 2 / Bank 1 Sensor 3 P2417 O2 Sensor Signals Swapped Bank 2 Sensor 2 / Bank 2 Sensor 3 P2418 Evaporative Emission System Switching Valve Control Circuit / Open P2419 Evaporative Emission System Switching Valve Control Circuit Low P2420 Evaporative Emission System Switching Valve Control Circuit High P2421 Evaporative Emission System Vent Valve Stuck Open P2422 Evaporative Emission System Vent Valve Stuck Closed 151 P2423 HC Adsorption Catalyst Efficiency Below Threshold P2424 HC Adsorption Catalyst Efficiency Below Threshold P2425 Exhaust Gas Recirculation Cooling Valve Control Circuit/Open P2426 Exhaust Gas Recirculation Cooling Valve Control Circuit Low P2427 Exhaust Gas Recirculation Cooling Valve Control Circuit High P2428 Exhaust Gas Temperature Too High P2429 Exhaust Gas Temperature Too High P2430 Secondary Air Injection System Air Flow/Pressure Sensor Circuit P2431 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Range/Performance P2432 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Low P2433 Secondary Air Injection System Air Flow/Pressure Sensor Circuit High P2434 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Intermittent/Erratic P2435 Secondary Air Injection System Air Flow/Pressure Sensor Circuit P2436 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Range/Performance P2437 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Low P2438 Secondary Air Injection System Air Flow/Pressure Sensor Circuit High P2439 Secondary Air Injection System Air Flow/Pressure Sensor Circuit Intermittent/Erratic P2440 Secondary Air Injection System Switching Valve Stuck Open P2441 Secondary Air Injection System Switching Valve Stuck Closed P2442 Secondary Air Injection System Switching Valve Stuck Open P2443 Secondary Air Injection System Switching Valve Stuck Closed P2444 Secondary Air Injection System Pump Stuck On P2445 Secondary Air Injection System Pump Stuck Off P2446 Secondary Air Injection System Pump Stuck On P2447 Secondary Air Injection System Pump Stuck Off P2500 Generator Lamp/L-Terminal Circuit Low P2501 Generator Lamp/L-Terminal Circuit High P2502 Charging System Voltage P2503 Charging System Voltage Low P2504 Charging System Voltage High P2505 ECM/PCM Power Input Signal 152 P2506 ECM/PCM Power Input Signal Range/Performance P2507 ECM/PCM Power Input Signal Low P2508 ECM/PCM Power Input Signal High P2509 ECM/PCM Power Input Signal Intermittent P2510 ECM/PCM Power Relay Sense Circuit Range/Performance P2511 ECM/PCM Power Relay Sense Circuit Intermittent P2512 Event Data Recorder Request Circuit/ Open P2513 Event Data Recorder Request Circuit Low P2514 Event Data Recorder Request Circuit High P2515 A/C Refrigerant Pressure Sensor "B" Circuit P2516 A/C Refrigerant Pressure Sensor "B" Circuit Range/Performance P2517 A/C Refrigerant Pressure Sensor "B" Circuit Low P2518 A/C Refrigerant Pressure Sensor "B" Circuit High P2519 A/C Request "A" Circuit P2520 A/C Request "A" Circuit Low P2521 A/C Request "A" Circuit High P2522 A/C Request "B" Circuit P2523 A/C Request "B" Circuit Low P2524 A/C Request "B" Circuit High P2525 Vacuum Reservoir Pressure Sensor Circuit P2526 Vacuum Reservoir Pressure Sensor Circuit Range/Performance P2527 Vacuum Reservoir Pressure Sensor Circuit Low P2528 Vacuum Reservoir Pressure Sensor Circuit High P2529 Vacuum Reservoir Pressure Sensor Circuit Intermittent P2530 Ignition Switch Run Position Circuit P2531 Ignition Switch Run Position Circuit Low P2532 Ignition Switch Run Position Circuit High P2533 Ignition Switch Run/Start Position Circuit P2534 Ignition Switch Run/Start Position Circuit Low P2535 Ignition Switch Run/Start Position Circuit High P2536 Ignition Switch Accessory Position Circuit 153 P2537 Ignition Switch Accessory Position Circuit Low P2538 Ignition Switch Accessory Position Circuit High P2539 Low Pressure Fuel System Sensor Circuit P2540 Low Pressure Fuel System Sensor Circuit Range/Performance P2541 Low Pressure Fuel System Sensor Circuit Low P2542 Low Pressure Fuel System Sensor Circuit High P2543 Low Pressure Fuel System Sensor Circuit Intermittent P2544 Torque Management Request Input Signal "A" P2545 Torque Management Request Input Signal "A" Range/Performance P2546 Torque Management Request Input Signal "A" Low P2547 Torque Management Request Input Signal "A" High P2548 Torque Management Request Input Signal "B" P2549 Torque Management Request Input Signal "B" Range/Performance P2550 Torque Management Request Input Signal "B" Low P2551 Torque Management Request Input Signal "B" High P2552 Throttle/Fuel Inhibit Circuit P2553 Throttle/Fuel Inhibit Circuit Range/Performance P2554 Throttle/Fuel Inhibit Circuit Low P2555 Throttle/Fuel Inhibit Circuit High P2556 Engine Coolant Level Sensor/Switch Circuit P2557 Engine Coolant Level Sensor/Switch Circuit Range/Performance P2558 Engine Coolant Level Sensor/Switch Circuit Low P2559 Engine Coolant Level Sensor/Switch Circuit High P2560 Engine Coolant Level Low P2561 A/C Control Module Requested MIL Illumination P2562 Turbocharger Boost Control Position Sensor Circuit P2563 Turbocharger Boost Control Position Sensor Circuit Range/Performance P2564 Turbocharger Boost Control Position Sensor Circuit Low P2565 Turbocharger Boost Control Position Sensor Circuit High P2566 Turbocharger Boost Control Position Sensor Circuit Intermittent P2567 Direct Ozone Reduction Catalyst Temperature Sensor Circuit 154 P2568 Direct Ozone Reduction Catalyst Temperature Sensor Circuit Range/Performance P2569 Direct Ozone Reduction Catalyst Temperature Sensor Circuit Low P2570 Direct Ozone Reduction Catalyst Temperature Sensor Circuit High P2571 Direct Ozone Reduction Catalyst Temperature Sensor Circuit Intermittent/Erratic P2572 Direct Ozone Reduction Catalyst Deterioration Sensor Circuit P2573 Direct Ozone Reduction Catalyst Deterioration Sensor Circuit Range/Performance P2574 Direct Ozone Reduction Catalyst Deterioration Sensor Circuit Low P2575 Direct Ozone Reduction Catalyst Deterioration Sensor Circuit High P2576 Direct Ozone Reduction Catalyst Deterioration Sensor Circuit Intermittent/Erratic P2577 Direct Ozone Reduction Catalyst Efficiency Below Threshold P2600 Coolant Pump Control Circuit/Open P2601 Coolant Pump Control Circuit Range/Performance P2602 Coolant Pump Control Circuit Low P2603 Coolant Pump Control Circuit High P2604 Intake Air Heater "A" Circuit Range/Performance P2605 Intake Air Heater "A" Circuit/Open P2606 Intake Air Heater "B" Circuit Range/Performance P2607 Intake Air Heater "B" Circuit Low P2608 Intake Air Heater "B" Circuit High P2609 Intake Air Heater System Performance P2610 ECM/PCM Internal Engine Off Timer Performance P2611 A/C Refrigerant Distribution Valve Control Circuit/Open P2612 A/C Refrigerant Distribution Valve Control Circuit Low P2613 A/C Refrigerant Distribution Valve Control Circuit High P2614 Camshaft Position Signal Output Circuit/Open P2615 Camshaft Position Signal Output Circuit Low P2616 Camshaft Position Signal Output Circuit High P2617 Crankshaft Position Signal Output Circuit/Open P2618 Crankshaft Position Signal Output Circuit Low P2619 Crankshaft Position Signal Output Circuit High P2620 Throttle Position Output Circuit/Open 155 P2621 Throttle Position Output Circuit Low P2622 Throttle Position Output Circuit High P2623 Injector Control Pressure Regulator Circuit/Open P2624 Injector Control Pressure Regulator Circuit Low P2625 Injector Control Pressure Regulator Circuit High P2626 O2 Sensor Pumping Current Trim Circuit/Open P2627 O2 Sensor Pumping Current Trim Circuit Low P2628 O2 Sensor Pumping Current Trim Circuit High P2629 O2 Sensor Pumping Current Trim Circuit/Open P2630 O2 Sensor Pumping Current Trim Circuit Low P2631 O2 Sensor Pumping Current Trim Circuit High P2632 Fuel Pump "B" Control Circuit /Open P2633 Fuel Pump "B" Control Circuit Low P2634 Fuel Pump "B" Control Circuit High P2635 Fuel Pump "A" Low Flow / Performance P2636 Fuel Pump "B" Low Flow / Performance P2637 Torque Management Feedback Signal "A" P2638 Torque Management Feedback Signal "A" Range/Performance P2639 Torque Management Feedback Signal "A" Low P2640 Torque Management Feedback Signal "A" High P2641 Torque Management Feedback Signal "B" P2642 Torque Management Feedback Signal "B" Range/Performance P2643 Torque Management Feedback Signal "B" Low P2644 Torque Management Feedback Signal "B" High P2645 "A" Rocker Arm Actuator Control Circuit/Open P2646 "A" Rocker Arm Actuator System Performance or Stuck Off P2647 "A" Rocker Arm Actuator System Stuck On P2648 "A" Rocker Arm Actuator Control Circuit Low P2649 "A" Rocker Arm Actuator Control Circuit High P2650 "B" Rocker Arm Actuator Control Circuit/Open P2651 "B" Rocker Arm Actuator System Performance or Stuck Off 156 P2652 "B" Rocker Arm Actuator System Stuck On P2653 "B" Rocker Arm Actuator Control Circuit Low P2654 "B" Rocker Arm Actuator Control Circuit High P2655 "A" Rocker Arm Actuator Control Circuit/Open P2656 "A" Rocker Arm Actuator System Performance or Stuck Off P2657 "A" Rocker Arm Actuator System Stuck On P2658 "A" Rocker Arm Actuator Control Circuit Low P2659 "A" Rocker Arm Actuator Control Circuit High P2660 "B" Rocker Arm Actuator Control Circuit/Open P2661 "B" Rocker Arm Actuator System Performance or Stuck Off P2662 "B" Rocker Arm Actuator System Stuck On P2663 "B" Rocker Arm Actuator Control Circuit Low P2664 "B" Rocker Arm Actuator Control Circuit High P2665 Fuel Shutoff Valve "B" Control Circuit/Open P2666 Fuel Shutoff Valve "B" Control Circuit Low P2667 Fuel Shutoff Valve "B" Control Circuit High P2668 Fuel Mode Indicator Lamp Control Circuit P2669 Actuator Supply Voltage "B" Circuit /Open P2670 Actuator Supply Voltage "B" Circuit Low P2671 Actuator Supply Voltage "B" Circuit High P2700 Transmission Friction Element "A" Apply Time Range/Performance P2701 Transmission Friction Element "B" Apply Time Range/Performance P2702 Transmission Friction Element "C" Apply Time Range/Performance P2703 Transmission Friction Element "D" Apply Time Range/Performance P2704 Transmission Friction Element "E" Apply Time Range/Performance P2705 Transmission Friction Element "F" Apply Time Range/Performance P2706 Shift Solenoid "F" P2707 Shift Solenoid "F" Performance or Stuck Off P2708 Shift Solenoid "F" Stuck On P2709 Shift Solenoid "F" Electrical P2710 Shift Solenoid "F" Intermittent 157 P2711 Unexpected Mechanical Gear Disengagement P2712 Hydraulic Power Unit Leakage P2713 Pressure Control Solenoid "D" P2714 Pressure Control Solenoid "D" Performance or Stuck Off P2715 Pressure Control Solenoid "D" Stuck On P2716 Pressure Control Solenoid "D" Electrical P2717 Pressure Control Solenoid "D" Intermittent P2718 Pressure Control Solenoid "D" Control Circuit / Open P2719 Pressure Control Solenoid "D" Control Circuit Range/Performance P2720 Pressure Control Solenoid "D" Control Circuit Low P2721 Pressure Control Solenoid "D" Control Circuit High P2722 Pressure Control Solenoid "E" P2723 Pressure Control Solenoid "E" Performance or Stuck Off P2724 Pressure Control Solenoid "E" Stuck On P2725 Pressure Control Solenoid "E" Electrical P2726 Pressure Control Solenoid "E" Intermittent P2727 Pressure Control Solenoid "E" Control Circuit / Open P2728 Pressure Control Solenoid "E" Control Circuit Range/Performance P2729 Pressure Control Solenoid "E" Control Circuit Low P2730 Pressure Control Solenoid "E" Control Circuit High P2731 Pressure Control Solenoid "F" P2732 Pressure Control Solenoid "F" Performance or Stuck Off P2733 Pressure Control Solenoid "F" Stuck On P2734 Pressure Control Solenoid "F" Electrical P2735 Pressure Control Solenoid "F" Intermittent P2736 Pressure Control Solenoid "F" Control Circuit/Open P2737 Pressure Control Solenoid "F" Control Circuit Range/Performance P2738 Pressure Control Solenoid "F" Control Circuit Low P2739 Pressure Control Solenoid "F" Control Circuit High P2740 Transmission Fluid Temperature Sensor "B" Circuit" P2741 Transmission Fluid Temperature Sensor "B" Circuit Range Performance 158 P2742 Transmission Fluid Temperature Sensor "B" Circuit Low P2743 Transmission Fluid Temperature Sensor "B" Circuit High P2744 Transmission Fluid Temperature Sensor "B" Circuit Intermittent P2745 Intermediate Shaft Speed Sensor "B" Circuit P2746 Intermediate Shaft Speed Sensor "B" Circuit Range/Performance P2747 Intermediate Shaft Speed Sensor "B" Circuit No Signal P2748 Intermediate Shaft Speed Sensor "B" Circuit Intermittent P2749 Intermediate Shaft Speed Sensor "C" Circuit P2750 Intermediate Shaft Speed Sensor "C" Circuit Range/Performance P2751 Intermediate Shaft Speed Sensor "C" Circuit No Signal P2752 Intermediate Shaft Speed Sensor "C" Circuit Intermittent P2753 Transmission Fluid Cooler Control Circuit/Open P2754 Transmission Fluid Cooler Control Circuit Low P2755 Transmission Fluid Cooler Control Circuit High P2756 Torque Converter Clutch Pressure Control Solenoid P2757 Torque Converter Clutch Pressure Control Solenoid Control Circuit Performance or Stuck Off P2758 Torque Converter Clutch Pressure Control Solenoid Control Circuit Stuck On P2759 Torque Converter Clutch Pressure Control Solenoid Control Circuit Electrical P2760 Torque Converter Clutch Pressure Control Solenoid Control Circuit Intermittent P2761 Torque Converter Clutch Pressure Control Solenoid Control Circuit/Open P2762 Torque Converter Clutch Pressure Control Solenoid Control Circuit Range/Performance P2763 Torque Converter Clutch Pressure Control Solenoid Control Circuit High P2764 Torque Converter Clutch Pressure Control Solenoid Control Circuit Low P2765 Input/Turbine Speed Sensor "B" Circuit P2766 Input/Turbine Speed Sensor "B" Circuit Range/Performance P2767 Input/Turbine Speed Sensor "B" Circuit No Signal P2768 Input/Turbine Speed Sensor "B" Circuit Intermittent P2769 Torque Converter Clutch Circuit Low P2770 Torque Converter Clutch Circuit High P2771 Four Wheel Drive (4WD) Low Switch Circuit P2772 Four Wheel Drive (4WD) Low Switch Circuit Range/Performance 159 P2773 Four Wheel Drive (4WD) Low Switch Circuit Low P2774 Four Wheel Drive (4WD) Low Switch Circuit High P2775 Upshift Switch Circuit Range/Performance P2776 Upshift Switch Circuit Low P2777 Upshift Switch Circuit High P2778 Upshift Switch Circuit Intermittent/Erratic P2779 Downshift Switch Circuit Range/Performance P2780 Downshift Switch Circuit Low P2781 Downshift Switch Circuit High P2782 Downshift Switch Circuit Intermittent/Erratic P2783 Torque Converter Temperature Too High P2784 Input/Turbine Speed Sensor "A"/"B" Correlation P2785 Clutch Actuator Temperature Too High P2786 Gear Shift Actuator Temperature Too High P2787 Clutch Temperature Too High P2788 Auto Shift Manual Adaptive Learning at Limit P2789 Clutch Adaptive Learning at Limit P2790 Gate Select Direction Circuit P2791 Gate Select Direction Circuit Low P2792 Gate Select Direction Circuit High P2793 Gear Shift Direction Circuit P2794 Gear Shift Direction Circuit Low P2795 Gear Shift Direction Circuit High P2A00 O2 Sensor Circuit Range/Performance P2A01 O2 Sensor Circuit Range/Performance P2A02 O2 Sensor Circuit Range/Performance P2A03 O2 Sensor Circuit Range/Performance P2A04 O2 Sensor Circuit Range/Performance P2A05 O2 Sensor Circuit Range/Performance P3400 Cylinder Deactivation System P3401 Cylinder 1 Deactivation/lntake Valve Control Circuit/Open 160 P3402 Cylinder 1 Deactivation/lntake Valve Control Performance P3403 Cylinder 1 Deactivation/lntake Valve Control Circuit Low P3404 Cylinder 1 Deactivation/lntake Valve Control Circuit High P3405 Cylinder 1 Exhaust Valve Control Circuit/Open P3406 Cylinder 1 Exhaust Valve Control Performance P3407 Cylinder 1 Exhaust Valve Control Circuit Low P3408 Cylinder 1 Exhaust Valve Control Circuit High P3409 Cylinder 2 Deactivation/lntake Valve Control Circuit/Open P3410 Cylinder 2 Deactivation/lntake Valve Control Performance P3411 Cylinder 2 Deactivation/lntake Valve Control Circuit Low P3412 Cylinder 2 Deactivation/lntake Valve Control Circuit High P3413 Cylinder 2 Exhaust Valve Control Circuit/Open P3414 Cylinder 2 Exhaust Valve Control Performance P3415 Cylinder 2 Exhaust Valve Control Circuit Low P3416 Cylinder 2 Exhaust Valve Control Circuit High P3417 Cylinder 3 Deactivation/lntake Valve Control Circuit/Open P3418 Cylinder 3 Deactivation/lntake Valve Control Performance P3419 Cylinder 3 Deactivation/lntake Valve Control Circuit Low P3420 Cylinder 3 Deactivation/lntake Valve Control Circuit High P3421 Cylinder 3 Exhaust Valve Control Circuit/Open P3422 Cylinder 3 Exhaust Valve Control Performance P3423 Cylinder 3 Exhaust Valve Control Circuit Low P3424 Cylinder 3 Exhaust Valve Control Circuit High P3425 Cylinder 4 Deactivation/lntake Valve Control Circuit/Open P3426 Cylinder 4 Deactivation/lntake Valve Control Performance P3427 Cylinder 4 Deactivation/lntake Valve Control Circuit Low P3428 Cylinder 4 Deactivation/lntake Valve Control Circuit High P3429 Cylinder 4 Exhaust Valve Control Circuit/Open P3430 Cylinder 4 Exhaust Valve Control Performance P3431 Cylinder 4 Exhaust Valve Control Circuit Low P3432 Cylinder 4 Exhaust Valve Control Circuit High 161 P3433 Cylinder 5 Deactivation/lntake Valve Control Circuit/Open P3434 Cylinder 5 Deactivation/lntake Valve Control Performance P3435 Cylinder 5 Deactivation/lntake Valve Control Circuit Low P3436 Cylinder 5 Deactivation/lntake Valve Control Circuit High P3437 Cylinder 5 Exhaust Valve Control Circuit/Open P3438 Cylinder 5 Exhaust Valve Control Performance P3439 Cylinder 5 Exhaust Valve Control Circuit Low P3440 Cylinder 5 Exhaust Valve Control Circuit High P3441 Cylinder 6 Deactivation/lntake Valve Control Circuit/Open P3442 Cylinder 6 Deactivation/lntake Valve Control Performance P3443 Cylinder 6 Deactivation/lntake Valve Control Circuit Low P3444 Cylinder 6 Deactivation/lntake Valve Control Circuit High P3445 Cylinder 6 Exhaust Valve Control Circuit/Open P3446 Cylinder 6 Exhaust Valve Control Performance P3447 Cylinder 6 Exhaust Valve Control Circuit Low P3448 Cylinder 6 Exhaust Valve Control Circuit High P3449 Cylinder 7 Deactivation/lntake Valve Control Circuit/Open P3450 Cylinder 7 Deactivation/lntake Valve Control Performance P3451 Cylinder 7 Deactivation/lntake Valve Control Circuit Low P3452 Cylinder 7 Deactivation/lntake Valve Control Circuit High P3453 Cylinder 7 Exhaust Valve Control Circuit/Open P3454 Cylinder 7 Exhaust Valve Control Performance P3455 Cylinder 7 Exhaust Valve Control Circuit Low P3456 Cylinder 7 Exhaust Valve Control Circuit High P3457 Cylinder 8 Deactivation/lntake Valve Control Circuit/Open P3458 Cylinder 8 Deactivation/lntake Valve Control Performance P3459 Cylinder 8 Deactivation/lntake Valve Control Circuit Low P3460 Cylinder 8 Deactivation/lntake Valve Control Circuit High P3461 Cylinder 8 Exhaust Valve Control Circuit/Open P3462 Cylinder 8 Exhaust Valve Control Performance P3463 Cylinder 8 Exhaust Valve Control Circuit Low 162 P3464 Cylinder 8 Exhaust Valve Control Circuit High P3465 Cylinder 9 Deactivation/lntake Valve Control Circuit/Open P3466 Cylinder 9 Deactivation/lntake Valve Control Performance P3467 Cylinder 9 Deactivation/lntake Valve Control Circuit Low P3468 Cylinder 9 Deactivation/lntake Valve Control Circuit High P3469 Cylinder 9 Exhaust Valve Control Circuit/Open P3470 Cylinder 9 Exhaust Valve Control Performance P3471 Cylinder 9 Exhaust Valve Control Circuit Low P3472 Cylinder 9 Exhaust Valve Control Circuit High P3473 Cylinder 10 Deactivation/lntake Valve Control Circuit/Open P3474 Cylinder 10 Deactivation/lntake Valve Control Performance P3475 Cylinder 10 Deactivation/lntake Valve Control Circuit Low P3476 Cylinder 10 Deactivation/lntake Valve Control Circuit High P3477 Cylinder 10 Exhaust Valve Control Circuit/Open P3478 Cylinder 10 Exhaust Valve Control Performance P3479 Cylinder 10 Exhaust Valve Control Circuit Low P3480 Cylinder 10 Exhaust Valve Control Circuit High P3481 Cylinder 11 Deactivation/lntake Valve Control Circuit/Open P3482 Cylinder 11 Deactivation/lntake Valve Control Performance P3483 Cylinder 11 Deactivation/lntake Valve Control Circuit Low P3484 Cylinder 11 Deactivation/lntake Valve Control Circuit High P3485 Cylinder 11 Exhaust Valve Control Circuit/Open P3486 Cylinder 11 Exhaust Valve Control Performance P3487 Cylinder 11 Exhaust Valve Control Circuit Low P3488 Cylinder 11 Exhaust Valve Control Circuit High P3489 Cylinder 12 Deactivation/lntake Valve Control Circuit/Open P3490 Cylinder 12 Deactivation/lntake Valve Control Performance P3491 Cylinder 12 Deactivation/lntake Valve Control Circuit Low P3492 Cylinder 12 Deactivation/lntake Valve Control Circuit High P3493 Cylinder 12 Exhaust Valve Control Circuit/Open P3494 Cylinder 12 Exhaust Valve Control Performance 163 P3495 Cylinder 12 Exhaust Valve Control Circuit Low P3496 Cylinder 12 Exhaust Valve Control Circuit High P3497 Cylinder Deactivation System 164 Generic Body Trouble Codes (B0xxx, B3xxx) (As of 2005, generic body codes have not been completely defined by auto-makers.) B0001 PCM Discrete Input Speed Signal Error B0004 PCM Discrete Input Speed Signal Not Present B0005 In Park Switch Circuit Malfunction B0016 RF/Passenger Frontal Deployment Loop (Single Stage or Stage 1) Resistance Low B0017 RF/Passenger Frontal Deployment Loop (Single Stage or Stage 1) Open B0018 RF/Passenger Frontal Deployment Loop (Single Stage or Stage 1) Short to Ground/Voltage Out of Range B0022 LF/Driver Frontal Deployment Loop (Single Stage or Stage 1) Resistance Low B0024 LF/Driver Frontal Deployment Loop (Single Stage or Stage 1) Short to Ground/Voltage Out of Range B0026 LF/Driver Frontal Deployment Loop (Single Stage or Stage 1) Open B0028 RF/Passenger Side Deployment Loop Resistance Low B0029 RF/Passenger Side Deployment Loop Open B0030 RF/Passenger Side Deployment Loop Short to Ground/Voltage Out of Range B0035 ADS Closed/Shorted to Ground B0036 ADS Open/Missing/Shorted to Battery B0037 AUX switch closed/shorted to ground B0038 AUX switch open/shorted to battery B0040 LF/Driver Side Deployment Loop Resistance Low B0041 LF/Driver Side Deployment Loop Open B0045 LF Side Deploy Loop Short to Ground/Voltage Out of Range B0051 Deployment Commanded B0053 Deployment Commanded with Loop Malfunctions Present B0057 RF/Passenger Pretensioner Deployment Loop Resistance Low B0058 RF/Passenger Pretensioner Deployment Loop Open B0059 RF/Passenger Pretensioner Deployment Loop Short to Ground/Voltage Out of Range B0064 LF/Driver Pretensioner Deployment Loop Resistance Low 165 B0065 LF/Driver Pretensioner Deployment Loop Open B0066 LF/Driver Pretensioner Deployment Loop Short to Ground/Voltage Out of Range B0073 Supplemental Deployment Loop #1 Resistance Low B0074 Supplemental Deployment Loop #1 Open B0075 Supplemental Deployment Loop #1 Short to Ground/Voltage Out of Range B0077 LF/Driver SIS Malfunction B0078 RF/Passenger SIS Malfunction B0079 Incorrect LF/Driver SIS Installed B0080 Discard LF/Driver SIS B0081 Incorrect RF/Passenger SIS Installed B0082 Discard RF/Passenger SIS B0086 Supplemental Deployment Loop #2 Resistance Low B0087 Supplemental Deployment Loop #2 Open B0088 Supplemental Deployment Loop #2 Short to Ground/Voltage Out of Range B0090 Active switch voltage out of range B0091 Active switch: wrong state B0092 PPS passenger detection error B0093 PPS/CPS self-test malfunction B0094 CPS childseat detection error B0095 SDM-PPS/CPS mismatch malfunction B0126 Right Panel Discharge Temperature Fault B0131 Right Heater Discharge Temperature Fault B0159 Outside Air Temperature Sensor Circuit Range/Performance B0164 Passenger Compartment Temperature Sensor #1 (Single Sensor or LH) Circuit Range/Performance B0169 In-car Temp Sensor Failure (passenger -not used) B0174 Output Air Temperature Sensor #1 (Upper; Single or LH) Circuit Range/Performance B0179 Output Air Temperature Sensor #2 (Lower; Single or LH) Circuit Range/Performance B0184 Solar Load Sensor #1 CKT Range B0189 Solar Load Sensor #2 CKT Range B0248 Mode Door Inoperative Error B0249 Heater/Defrost/AC Door Range Error 166 B0268 A/I Door Inoperative Error B0269 Air Inlet Door Range Error B0408 Temperature Control #1 (Main/Front) Circuit Malfunction B0409 Air Mix Door #1 Range Error B0419 Air Mix Door #2 Range Error B0423 Air Mix Door #2 Inoperative Error B0428 Air Mix Door #3 Inoperative Error B0429 Temperature Control #3 Rear Circuit Range/Performance B0510 RH Panel Discharge Temp Sensor Failure B0515 RH Heater Discharge Temp Sensor Failure B0520 Rear Discharge Temp Sensor Failure B0530 Fuel Level Sensor Stuck B0532 Fuel Sensor Shorted To Ground B0533 Fuel Sensor Open/Shorted To B+ B0688 Security System Indicator Circuit High B0768 Service Indicator Circuit High B0846 +5 Volt Reference Out of Range B0856 Battery 2 Out of Range 167 Generic Network Trouble Codes (U0xxx, U3xxx) U0001 High Speed CAN Communication Bus U0002 High Speed CAN Communication Bus Performance U0003 High Speed CAN Communication Bus (+) Open U0004 High Speed CAN Communication Bus (+) Low U0005 High Speed CAN Communication Bus (+) High U0006 High Speed CAN Communication Bus (-) Open U0007 High Speed CAN Communication Bus (-) Low U0008 High Speed CAN Communication Bus (-) High U0009 High Speed CAN Communication Bus (-) shorted to Bus (+) U0010 Medium Speed CAN Communication Bus U0011 Medium Speed CAN Communication Bus Performance U0012 Medium Speed CAN Communication Bus (+) Open U0013 Medium Speed CAN Communication Bus (+) Low U0014 Medium Speed CAN Communication Bus (+) High U0015 Medium Speed CAN Communication Bus (-) Open U0016 Medium Speed CAN Communication Bus (-) Low U0017 Medium Speed CAN Communication Bus (-) High U0018 Medium Speed CAN Communication Bus (-) shorted to Bus (+) U0019 Low Speed CAN Communication Bus U0020 Low Speed CAN Communication Bus Performance U0021 Low Speed CAN Communication Bus (+) Open U0022 Low Speed CAN Communication Bus (+) Low U0023 Low Speed CAN Communication Bus (+) High U0024 Low Speed CAN Communication Bus (-) Open U0025 Low Speed CAN Communication Bus (-) Low U0026 Low Speed CAN Communication Bus (-) High U0027 Low Speed CAN Communication Bus (-) shorted to Bus (+) 168 U0028 Vehicle Communication Bus A U0029 Vehicle Communication Bus A Performance U0030 Vehicle Communication Bus A (+) Open U0031 Vehicle Communication Bus A (+) Low U0032 Vehicle Communication Bus A (+) High U0033 Vehicle Communication Bus A (-) Open U0034 Vehicle Communication Bus A (-) Low U0035 Vehicle Communication Bus A (-) High U0036 Vehicle Communication Bus A (-) shorted to Bus A (+) U0037 Vehicle Communication Bus B U0038 Vehicle Communication Bus B Performance U0039 Vehicle Communication Bus B (+) Open U0040 Vehicle Communication Bus B (+) Low U0041 Vehicle Communication Bus B (+) High U0042 Vehicle Communication Bus B (-) Open U0043 Vehicle Communication Bus B (-) Low U0044 Vehicle Communication Bus B (-) High U0045 Vehicle Communication Bus B (-) shorted to Bus B (+) U0046 Vehicle Communication Bus C U0047 Vehicle Communication Bus C Performance U0048 Vehicle Communication Bus C (+) Open U0049 Vehicle Communication Bus C (+) Low U0050 Vehicle Communication Bus C (+) High U0051 Vehicle Communication Bus C (-) Open U0052 Vehicle Communication Bus C (-) Low U0053 Vehicle Communication Bus C (-) High U0054 Vehicle Communication Bus C (-) shorted to Bus C (+) U0055 Vehicle Communication Bus D U0056 Vehicle Communication Bus D Performance U0057 Vehicle Communication Bus D (+) Open U0058 Vehicle Communication Bus D (+) Low 169 U0059 Vehicle Communication Bus D (+) High U0060 Vehicle Communication Bus D (-) Open U0061 Vehicle Communication Bus D (-) Low U0062 Vehicle Communication Bus D (-) High U0063 Vehicle Communication Bus D (-) shorted to Bus D (+) U0064 Vehicle Communication Bus E U0065 Vehicle Communication Bus E Performance U0066 Vehicle Communication Bus E (+) Open U0067 Vehicle Communication Bus E (+) Low U0068 Vehicle Communication Bus E (+) High U0069 Vehicle Communication Bus E (-) Open U0070 Vehicle Communication Bus E (-) Low U0071 Vehicle Communication Bus E (-) High U0072 Vehicle Communication Bus E (-) shorted to Bus E (+) U0073 Control Module Communication Bus Off U0074 Reserved by Document U0075 Reserved by Document U0076 Reserved by Document U0077 Reserved by Document U0078 Reserved by Document U0079 Reserved by Document U0080 Reserved by Document U0081 Reserved by Document U0082 Reserved by Document U0083 Reserved by Document U0084 Reserved by Document U0085 Reserved by Document U0086 Reserved by Document U0087 Reserved by Document U0088 Reserved by Document U0089 Reserved by Document 170 U0090 Reserved by Document U0091 Reserved by Document U0092 Reserved by Document U0093 Reserved by Document U0094 Reserved by Document U0095 Reserved by Document U0096 Reserved by Document U0097 Reserved by Document U0098 Reserved by Document U0099 Reserved by Document U0100 Lost Communication With ECM/PCM "A" U0101 Lost Communication with TCM U0102 Lost Communication with Transfer Case Control Module U0103 Lost Communication With Gear Shift Module U0104 Lost Communication With Cruise Control Module U0105 Lost Communication With Fuel Injector Control Module U0106 Lost Communication With Glow Plug Control Module U0107 Lost Communication With Throttle Actuator Control Module U0108 Lost Communication With Alternative Fuel Control Module U0109 Lost Communication With Fuel Pump Control Module U0110 Lost Communication With Drive Motor Control Module U0111 Lost Communication With Battery Energy Control Module "A" U0112 Lost Communication With Battery Energy Control Module "B" U0113 Lost Communication With Emissions Critical Control Information U0114 Lost Communication With Four-Wheel Drive Clutch Control Module U0115 Lost Communication With ECM/PCM "B" U0116 Reserved by Document U0117 Reserved by Document U0118 Reserved by Document U0119 Reserved by Document U0120 Reserved by Document 171 U0121 Lost Communication With Anti-Lock Brake System (ABS) Control Module U0122 Lost Communication With Vehicle Dynamics Control Module U0123 Lost Communication With Yaw Rate Sensor Module U0124 Lost Communication With Lateral Acceleration Sensor Module U0125 Lost Communication With Multi-axis Acceleration Sensor Module U0126 Lost Communication With Steering Angle Sensor Module U0127 Lost Communication With Tire Pressure Monitor Module U0128 Lost Communication With Park Brake Control Module U0129 Lost Communication With Brake System Control Module U0130 Lost Communication With Steering Effort Control Module U0131 Lost Communication With Power Steering Control Module U0132 Lost Communication With Ride Level Control Module U0133 Reserved by Document U0134 Reserved by Document U0135 Reserved by Document U0136 Reserved by Document U0137 Reserved by Document U0138 Reserved by Document U0139 Reserved by Document U0140 Lost Communication With Body Control Module U0141 Lost Communication With Body Control Module "A" U0142 Lost Communication With Body Control Module "B" U0143 Lost Communication With Body Control Module "C" U0144 Lost Communication With Body Control Module "D" U0145 Lost Communication With Body Control Module "E" U0146 Lost Communication With Gateway "A" U0147 Lost Communication With Gateway "B" U0148 Lost Communication With Gateway "C" U0149 Lost Communication With Gateway "D" U0150 Lost Communication With Gateway "E" U0151 Lost Communication With Restraints Control Module 172 U0152 Lost Communication With Side Restraints Control Module U0153 Lost Communication With Side Restraints Control Module U0154 Lost Communication With Restraints Occupant Sensing Control Module U0155 Lost Communication With Instrument Panel Cluster (IPC) Control Module U0156 Lost Communication With Information Center "A" U0157 Lost Communication With Information Center "B" U0158 Lost Communication With Head Up Display U0159 Lost Communication With Parking Assist Control Module U0160 Lost Communication With Audible Alert Control Module U0161 Lost Communication With Compass Module U0162 Lost Communication With Navigation Display Module U0163 Lost Communication With Navigation Control Module U0164 Lost Communication With HVAC Control Module U0165 Lost Communication With HVAC Control Module U0166 Lost Communication With Auxiliary Heater Control Module U0167 Lost Communication With Vehicle Immobilizer Control Module U0168 Lost Communication With Vehicle Security Control Module U0169 Lost Communication With Sunroof Control Module U0170 Lost Communication With "Restraints System Sensor A" U0171 Lost Communication With "Restraints System Sensor B" U0172 Lost Communication With "Restraints System Sensor C" U0173 Lost Communication With "Restraints System Sensor D" U0174 Lost Communication With "Restraints System Sensor E" U0175 Lost Communication With "Restraints System Sensor F" U0176 Lost Communication With "Restraints System Sensor G" U0177 Lost Communication With "Restraints System Sensor H" U0178 Lost Communication With "Restraints System Sensor I" U0179 Lost Communication With "Restraints System Sensor J" U0180 Lost Communication With Automatic Lighting Control Module U0181 Lost Communication With Headlamp Leveling Control Module U0182 Lost Communication With Lighting Control Module 173 U0183 Lost Communication With Lighting Control Module U0184 Lost Communication With Radio U0185 Lost Communication With Antenna Control Module U0186 Lost Communication With Audio Amplifier U0187 Lost Communication With Digital Disc Player/Changer Module "A" U0188 Lost Communication With Digital Disc Player/Changer Module "B" U0189 Lost Communication With Digital Disc Player/Changer Module "C" U0190 Lost Communication With Digital Disc Player/Changer Module "D" U0191 Lost Communication With Television U0192 Lost Communication With Personal Computer U0193 Lost Communication With "Digital Audio Control Module A" U0194 Lost Communication With "Digital Audio Control Module B" U0195 Lost Communication With Subscription Entertainment Receiver Module U0196 Lost Communication With Rear Seat Entertainment Control Module U0197 Lost Communication With Telephone Control Module U0198 Lost Communication With Telematic Control Module U0199 Lost Communication With "Door Control Module A" U0200 Lost Communication With "Door Control Module B" U0201 Lost Communication With "Door Control Module C" U0202 Lost Communication With "Door Control Module D" U0203 Lost Communication With "Door Control Module E" U0204 Lost Communication With "Door Control Module F" U0205 Lost Communication With "Door Control Module G" U0206 Lost Communication With Folding Top Control Module U0207 Lost Communication With Movable Roof Control Module U0208 Lost Communication With "Seat Control Module A" U0209 Lost Communication With "Seat Control Module B" U0210 Lost Communication With "Seat Control Module C" U0211 Lost Communication With "Seat Control Module D" U0212 Lost Communication With Steering Column Control Module U0213 Lost Communication With Mirror Control Module 174 U0214 Lost Communication With Remote Function Actuation U0215 Lost Communication With "Door Switch A" U0216 Lost Communication With "Door Switch B" U0217 Lost Communication With "Door Switch C" U0218 Lost Communication With "Door Switch D" U0219 Lost Communication With "Door Switch E" U0220 Lost Communication With "Door Switch F" U0221 Lost Communication With "Door Switch G" U0222 Lost Communication With "Door Window Motor A" U0223 Lost Communication With "Door Window Motor B" U0224 Lost Communication With "Door Window Motor C" U0225 Lost Communication With "Door Window Motor D" U0226 Lost Communication With "Door Window Motor E" U0227 Lost Communication With "Door Window Motor F" U0228 Lost Communication With "Door Window Motor G" U0229 Lost Communication With Heated Steering Wheel Module U0230 Lost Communication With Rear Gate Module U0231 Lost Communication With Rain Sensing Module U0232 Lost Communication With Side Obstacle Detection Control Module U0233 Lost Communication With Side Obstacle Detection Control Module U0234 Lost Communication With Convenience Recall Module U0235 Lost Communication With Cruise Control Front Distance Range Sensor U0300 Internal Control Module Software Incompatibility U0301 Software Incompatibility with ECM/PCM U0302 Software Incompatibility with Transmission Control Module U0303 Software Incompatibility with Transfer Case Control Module U0304 Software Incompatibility with Gear Shift Control Module U0305 Software Incompatibility with Cruise Control Module U0306 Software Incompatibility with Fuel Injector Control Module U0307 Software Incompatibility with Glow Plug Control Module U0308 Software Incompatibility with Throttle Actuator Control Module 175 U0309 Software Incompatibility with Alternative Fuel Control Module U0310 Software Incompatibility with Fuel Pump Control Module U0311 Software Incompatibility with Drive Motor Control Module U0312 Software Incompatibility with Battery Energy Control Module A U0313 Software Incompatibility with Battery Energy Control Module B U0314 Software Incompatibility with Four-Wheel Drive Clutch Control Module U0315 Software Incompatibility with Anti-Lock Brake System Control Module U0316 Software Incompatibility with Vehicle Dynamics Control Module U0317 Software Incompatibility with Park Brake Control Module U0318 Software Incompatibility with Brake System Control Module U0319 Software Incompatibility with Steering Effort Control Module U0320 Software Incompatibility with Power Steering Control Module U0321 Software Incompatibility with Ride Level Control Module U0322 Software Incompatibility with Body Control Module U0323 Software Incompatibility with Instrument Panel Control Module U0324 Software Incompatibility with HVAC Control Module U0325 Software Incompatibility with Auxiliary Heater Control Module U0326 Software Incompatibility with Vehicle Immobilizer Control Module U0327 Software Incompatibility with Vehicle Security Control Module U0328 Software Incompatibility with Steering Angle Sensor Module U0329 Software Incompatibility with Steering Column Control Module U0330 Software Incompatibility with Tire Pressure Monitor Module U0331 Software Incompatibility with Body Control Module "A" U0400 Invalid Data Received U0401 Invalid Data Received From ECM/PCM U0402 Invalid Data Received From Transmission Control Module U0403 Invalid Data Received From Transfer Case Control Module U0404 Invalid Data Received From Gear Shift Control Module U0405 Invalid Data Received From Cruise Control Module U0406 Invalid Data Received From Fuel Injector Control Module U0407 Invalid Data Received From Glow Plug Control Module 176 U0408 Invalid Data Received From Throttle Actuator Control Module U0409 Invalid Data Received From Alternative Fuel Control Module U0410 Invalid Data Received From Fuel Pump Control Module U0411 Invalid Data Received From Drive Motor Control Module U0412 Invalid Data Received From Battery Energy Control Module A U0413 Invalid Data Received From Battery Energy Control Module B U0414 Invalid Data Received From Four-Wheel Drive Clutch Control Module U0415 Invalid Data Received From Anti-Lock Brake System Control Module U0416 Invalid Data Received From Vehicle Dynamics Control Module U0417 Invalid Data Received From Park Brake Control Module U0418 Invalid Data Received From Brake System Control Module U0419 Invalid Data Received From Steering Effort Control Module U0420 Invalid Data Received From Power Steering Control Module U0421 Invalid Data Received From Ride Level Control Module U0422 Invalid Data Received From Body Control Module U0423 Invalid Data Received From Instrument Panel Control Module U0424 Invalid Data Received From HVAC Control Module U0425 Invalid Data Received From Auxiliary Heater Control Module U0426 Invalid Data Received From Vehicle Immobilizer Control Module U0427 Invalid Data Received From Vehicle Security Control Module U0428 Invalid Data Received From Steering Angle Sensor Module U0429 Invalid Data Received From Steering Column Control Module U0430 Invalid Data Received From Tire Pressure Monitor Module U0431 Invalid Data Received From Body Control Module "A"