Você está na página 1de 108

CENTRO PAULA SOUZA

FACULDADE DE TECNOLOGIA
FATEC SANTO ANDRÉ
Tecnologia em Eletrônica Automotiva

LUIZ RICARDO TRAJANO DA SILVA


TIAGO SANTOS DE ARAÚJO

FERRAMENTA DE DIAGNÓSTICO
AUTOMOTIVO OBD II

Santo André – São Paulo


2010
CENTRO PAULA SOUZA
FACULDADE DE TECNOLOGIA
FATEC SANTO ANDRÉ
Tecnologia em Eletrônica Automotiva

LUIZ RICARDO TRAJANO DA SILVA


TIAGO SANTOS DE ARAÚJO

FERRAMENTA DE DIAGNÓSTICO
AUTOMOTIVO OBD II

Monografia apresentada ao Curso de Tecnologia


em Eletrônica Automotiva da FATEC Santo
André, como requisito parcial para conclusão do
curso em Tecnologia em Eletrônica Automotiva.

Orientador: Professor. Weslley Medeiros Torres.

Santo André – São Paulo


2010
Dedicamos este trabalho a nossas famílias
e a todos os nossos amigos que sempre
estiveram presentes durante está etapa de
nossas vidas.
AGRADECIMENTOS

Atenciosamente, a Deus e afetuosamente, as nossas famílias, enviamos nossa eterna

gratidão, pelo exemplo de vida, por oferecerem todo o suporte para nossa educação, semente

deste trabalho. E principalmente, por vibrarem a cada conquista.

De maneira especial, ao nosso orientador, o Professor Weslley Medeiros Torres, da

Faculdade de Tecnologia de Santo André – FATEC, por sua paciência e comprometimento

durante nosso trabalho em conjunto.

Gostaríamos de agradecer aos Professores Mestre. Cleber William Gomes, Mestre

Edson Kitani e Orlando Salvo Junior, pelo apoio que tivemos, e a todos aqueles que direta ou

indiretamente contribuíram para a realização deste trabalho. Agradecemos aos professores,

colaboradores e funcionários da Fatec Santo André por terem reservado um tempo de suas

vidas para a transmissão de seus conhecimentos e por sempre estarem dispostos a nos ajudar.
“É a chave que abre a porta lá do

quarto dos segredos. Vem mostrar que nunca

é tarde, vem mostrar que é sempre cedo. E

que para cada pecado sempre existe um

perdão. Não tem certo nem errado, todo

mundo tem razão, e que o ponto de vista é que

é o ponto da questão.”

Raul Seixas
RESUMO

Com o aumento da eletrônica embarcada nos veículos automotores, passa a ser


fundamental o desenvolvimento de equipamentos que melhorem o desempenho, aumente o
conforto, a segurança e que controlem o nível de emissões de poluentes, etc. Em vista disso,
nós nos propomos a desenvolver um sistema que realize a aquisição de dados, monitorando o
funcionamento do veículo e que detecte possíveis falhas. Esta monografia tem como objetivo
o desenvolvimento de um scanner automotivo, cuja função é a aquisição de dados presentes
nos módulos eletrônicos existentes em veículos equipados com sistemas de diagnósticos
embarcados de segunda geração. Composto por elementos de hardware, baseado
principalmente em um microcontrolador PIC16F877A e em um circuito integrado da família
ELM..

Palavras chaves: Diagnóstico Veicular, OBD II, Scanner automotivo, DTC (Código
de Falha).
ABSTRACT

With the increase of electronics, becomes crucial to the development of equipment,


improve performance, enhance comfort and safety, controlling the emissions of pollutants and
so on. In view of this, we propose a system that performs data acquisition, monitoring the
operation of the vehicle and detecting possible failures. This monograph aims to develop an
automotive scanner, whose function is the data acquisition modules present in existing
electronic systems in vehicles equipped with onboard diagnostics, second-generation.
Compound of hardware elements, based on a microcontroller and an integrated circuit family
ELM.

Key Word: Vehicle Diagnose, OBD II (on board diagnostics), automotive scanner,
DTCs (Diagnostic Trouble Codes).
LISTA DE ILUSTRAÇÕES

FIGURA 1: COMBUSTÍVEL DA ELETRÔNICA EMBARCADA......................................................... 18


FIGURA 2 ARQUITETURA CENTRALIZADA .............................................................................. 19
FIGURA 3: ARQUITETURA DISTRIBUÍDA ................................................................................. 20
FIGURA 4 : RESPONSABILIDADE X COMPLEXIDADE................................................................. 21
FIGURA 5: CONECTOR OBDII................................................................................................ 25
FIGURA 6: EXEMPLO DO CÓDIGO DTC P0143........................................................................ 27
FIGURA 7: ARQUITETURA DE REDE OBD-II............................................................................ 28
FIGURA 8: BARRAMENTO DE DIAGNÓSTICO ISO 9141-2......................................................... 29
FIGURA 9: TOPOLOGIA KWP 2000 ........................................................................................ 30
FIGURA 10 : TEMPO DE 1 BIT ................................................................................................. 32
FIGURA 11: EXEMPLO DE COMUNICAÇÃO USART ASSÍNCRONO............................................. 33
FIGURA 12: PINAGEM DO ELM-327 ....................................................................................... 34
FIGURA 13: DIAGRAMA DE BLOCOS DA FERRAMENTA DE DIAGNÓSTICO AUTOMOTIVO ............. 36
FIGURA 14: ESQUEMA DO HARDWARE DA COMUNICAÇÃO COM O VEÍCULO. ............................. 37
FIGURA 16: CIRCUITO DE INTERFACE ENTRE USUÁRIO E HARDWARE DE CONTROLE................... 38
FIGURA 15: CONFIGURAÇÃO BÁSICA DO MICROCONTROLADOR............................................... 38
FIGURA 17: ESQUEMA LIGAÇÃO E COMUNICAÇÃO COM O DISPLAY DE LCD ............................ 39
FIGURA 18: ESQUEMA GERAL DA FERRAMENTA DE DIAGNÓSTICO AUTOMOTIVO. ..................... 39
FIGURA 19:ESQUEMA DE LIGAÇÃO DO ELM327..................................................................... 41
FIGURA 20: SOFTWARE OBDSPY ......................................................................................... 41
FIGURA 21: AQUISIÇÃO DE DADOS SOFTWARE DE MONITORAMENTO. ..................................... 42
FIGURA 22: FUNÇÃO ENVIA .................................................................................................. 43
FIGURA 23: FUNÇÃO RECEBEMASK. ...................................................................................... 44
FIGURA 25: FUNÇÃO ASCII .................................................................................................... 45
FIGURA 24: DESIGN DE SOFTWARE DE ALTO NÍVEL ............................................................... 45
FIGURA 26: FUNÇÃO FALHA .................................................................................................. 46
FIGURA 27: TRATAMENTO DO DADO DA PRESSÃO DO COLETOR DE ADMISSÃO ......................... 47
FIGURA 28: TRATAMENTO DE DADOS DA ROTAÇÃO ................................................................ 48
FIGURA 29: TRATAMENTO DE DADOS DE VELOCIDADE ........................................................... 48
FIGURA 30: TRATAMENTO DE DADOS DO AVANÇO DA IGNIÇÃO .............................................. 49
FIGURA 31: TRATAMENTO DE DADOS DA TPAR ...................................................................... 49
FIGURA 32: TRATAMENTO DE DADOS DA POSIÇÃO DA VÁLVULA BORBOLETA .......................... 49
FIGURA 33: TRATAMENTO DOS DADOS DO DTC ..................................................................... 50
FIGURA 34:FUNÇÃO APAGAR CÓDIGO DE FALHA .................................................................... 51
FIGURA 35: TELA INICIAL ..................................................................................................... 55
FIGURA 36 : TELA PRINCIPAL ................................................................................................ 56
FIGURA 37 : PARÂMETROS DTC1 .......................................................................................... 56
FIGURA 38 : PARÂMETROS DTC2 .......................................................................................... 56
FIGURA 39: NÚMERO DE DTC`S ............................................................................................ 57
FIGURA 40: NÚMERO DTC`S ................................................................................................. 57
FIGURA 41: IDENTIFICAÇÃO DTC`S ....................................................................................... 57
FIGURA 42: APAGAR DTC`S.................................................................................................. 57
LISTA DE TABELAS

TABELA 1: CÓDIGO DE FALHA 1º DÍGITO ................................................................................ 26


TABELA 2: CÓDIGO DE FALHA 2º DÍGITO ................................................................................ 26
TABELA 3: CÓDIGO DE FALHA 3º DÍGITO ................................................................................ 27
TABELA 4: PARÂMETROS DE LEITURA .................................................................................... 42
TABELA 5: INICIALIZAÇÃO .................................................................................................... 46
TABELA 6: EXEMPLO DE MENSAGENS ENVIADAS E RECEBIDAS ............................................... 46
TABELA 7: EXEMPLO DE REQUISIÇÃO DE CÓDIGOS DE FALHA ................................................. 50
TABELA 8: REQUISIÇÃO PARA APAGAR MEMÓRIA................................................................... 51
TABELA 9: SIMULAÇÃO DA FERRAMENTA DE DIAGNÓSTICO AUTOMOTIVO ............................. 52
SUMÁRIO

1 INTRODUÇÃO ................................................................................................... 14

1.1 OBJETIVOS E MOTIVAÇÃO ................................................................................. 15


1.2 CONTEÚDO ...................................................................................................... 15

2. SISTEMA DIAGNÓSTICO EMBARCADO .................................................... 17

2.1 ELETRÔNICA EMBARCADA ................................................................................ 17


2.2 TECNOLOGIAS DE ARQUITETURAS ELETRÔNICAS .............................................. 18
2.2.1 Arquitetura Centralizada .......................................................................... 19
2.2.2 Arquitetura Distribuída ............................................................................ 20
2.3 DIAGNÓSTICO VEICULAR ................................................................................. 22
2.3.1 OBD no Brasil.......................................................................................... 23
2.3.2 Resolução CONAMA Nº 315 .................................................................... 23
2.3.3Resolução CONAMA Nº 354 ..................................................................... 23
2.4 CONECTOR PADRÃO OBD II ............................................................................. 24
2.4.1 Localização .............................................................................................. 24
2.4.2 Pinagem ................................................................................................... 25
2.5 CÓDIGOS DE FALHA DE DIAGNÓSTICO ............................................................... 26
2.6 PROTOCOLOS DE COMUNICAÇÃO DE DIAGNOSE ................................................ 27
2.6.1 Protocolo ISO 9141-2 – A norma mais utilizada....................................... 29
2.6.2 Protocolo ISO 14230 (KWP 2000) ........................................................... 29
2.6.3 Protocolo SAE J1850 ............................................................................... 30
2.6.4 Protocolo ISO 15765 ................................................................................ 31
2.6.5 Protocolo ISO 1939.................................................................................. 31
2.7 COMUNICAÇÃO SERIAL – UART ....................................................................... 32
2.7.1 Modo Assíncrono ..................................................................................... 32
2.8 ELM 327 ......................................................................................................... 33
2.8.1 As aplicações do dispositivo ELM327 ...................................................... 34
2.8.2 Características Principais: ....................................................................... 34

3.METODOLOGIA ................................................................................................ 35

3.1 REQUISITOS DO PRODUTO ................................................................................ 35


3.2 SOLUÇÕES TÉCNICA ......................................................................................... 35
3.2.1 Hardware ................................................................................................. 36
3.2.1.1 ELM 327. .......................................................................................... 36
3.2.1.2 Microcontrolador PIC16F877A ......................................................... 38
3.2.1.3 Teclas e Display de interface. ............................................................ 38
3.2.2 Software ................................................................................................... 40
3.2.2.1 Requisitos do software....................................................................... 42
3.2.2.2 Design do Software. .......................................................................... 42
3.2.2.2.1 Design de Alto Nível .................................................................. 45
3.2.2.2.1 Design detalhado ........................................................................ 46
3.2.2.2.1.1 Inicialização. ........................................................................ 46
3.2.2.2.1.1 Parâmetros de leitura. ........................................................... 46
3.2.2.2.1.3 Códigos de falha DTC. ......................................................... 50
3.2.2.2.1.4 Apagar DTC ........................................................................ 51

4. ANÁLISE DOS RESULTADOS ........................................................................ 52

4.1 SIMULAÇÃO. .................................................................................................... 52


4.2 TESTES NO VEÍCULO ........................................................................................ 53
4.3 RESULTADOS ................................................................................................... 54
4.3 SESSÃO DE DIAGNÓSTICO ................................................................................. 55
4.3.1 Parâmetros de Leitura.............................................................................. 56
4.3.2 Leitura dos DTC`s .................................................................................... 56

5. CONCLUSÃO..................................................................................................... 58

5.1 PROPOSTAS FUTURAS ....................................................................................... 58

6. REFERÊNCIAS.................................................................................................. 59
ANEXO ................................................................................................................... 62

ANEXO A – CÓDIGO DO PROGRAMA. .................................................................... 62


ANEXO B – DATASHEET ELM-327 – COMANDO AT. ............................................ 62
ANEXO C - LISTA COM OS DTC`S ....................................................................... .62
1 INTRODUÇÃO

A indústria automotiva motivada pela redução nos custos de produção, pelas leis que
limitam os níveis de emissões de gases resultantes do processo de combustão, pelo aumento
da segurança e conforto dos ocupantes e por melhorias de desempenho, iniciou a substituição
dos antigos sistemas (mecânicos, hidráulicos e pneumáticos) que possuíam eficiência muito
menor por sistemas eletrônicos. (TOSI & GALVÃO & LIMA, 2008).

Segundo Guimarães (GUIMARÃES, 2003), a eletrônica embarcada representa todo e


qualquer sistema eletro-eletrônico montado em uma aplicação móvel. Este conceito iniciou-se
nos veículos através da ECU, Unidade Eletrônica de Controle (Electronic Control Unit) , que
fisicamente, nada mais é que um módulo eletrônico responsável por realizar um determinado
controle. Em um primeiro momento foram colocadas diversas ECUs responsáveis pelo
controle de diferentes componentes, porém com o passar do tempo comprovou se ser
indispensável a troca de informação entre elas, o que levou ao surgimento de um barramento
eletrônico eficiente, robusto e flexível. Desenvolvia-se então o CAN (Controller Area
Network).

Tornava-se então indispensável uma ferramenta padrão que permita a verificação do


funcionamento de cada módulo eletrônico existente em um veículo. No principio cada
fabricante desenvolveu seu próprio sistema de diagnóstico, com software e interface
específica, o que acarretava a ocorrência de inúmeros problemas, devido a quando houvesse
uma falha, como cada fabricante tinha códigos e especificações próprias, era relativamente
complexo realizar o diagnóstico.

Então, em 1988, a SAE (Society of Automotive Engineers) com ajuda da EPA


(Environmental Protection Agency) criou o OBD (On‐Board Diagnosis), o sistema de
diagnose de bordo para controle das emissões e de identificação da provável origem das
falhas DTCs (Diagnostic Trouble Codes) armazenados na memória da unidade de controle do
motor. Serve também para monitorar componentes do carro e pode também executar rotinas
de diagnóstico permitindo prever falhas e adiantar consertos e substituições necessárias.

Sua primeira versão era simples, conforme Belo (BELO, 2003), não se padronizava as
mensagens utilizadas pelas diversas montadoras, eram realizadas leituras de um reduzido
número de códigos de falha e monitorava-se alguns sensores. Na segunda versão esses
problemas foram solucionados e inúmeros dados podem ser lidos através do agora OBDII,
14
que além de ser mais completo, padronizou as mensagens de comunicação, facilitando
enormemente o processo de diagnóstico. Agora muitos dos códigos de erro devem ser iguais,
independente da marca do veículo, e como a interface física e o protocolo são os mesmos, um
só aparelho pode ser utilizado para diagnosticar diversos automóveis.

Os veículos devem estar equipados com um sistema OBD concebido, construído e


instalado de um modo que possibilite identificar os diversos tipos de falhas e deteriorações
que possam manifestar-se durante toda a vida do veículo.

O acesso ao sistema OBD necessário para a inspeção, diagnose, manutenção ou


reparação do veículo deve ser irrestrito e normalizado. Este deve ser concebido, construído e
instalado no veículo de modo que permita satisfazer as condições normais de utilização.

A conexão física é realizada através de um conector de diagnostico de dezesseis pinos


denominado DLC (Diagnostic Link conector), através desse, sistemas externos como
scanners, podem acessar os DTCs (Diagnostic Trouble Codes), que são os códigos de falhas
armazenados na memória da unidade de controle do motor.

Este projeto é composto por uma parte, monográfica, que descreve o processo de
trabalho e o embasamento teórico, e finalmente uma parte experimental.

1.1 Objetivos e motivação

Este trabalho tem por objetivo desenvolver uma ferramenta de diagnóstico veicular para
veículos que possuam o sistema OBD-II, utilizando componentes eletrônicos que se
encontram na placa de experiências McLab2, juntamente com um circuito integrado dedicado
da família ELM e um software desenvolvido para o equipamento.

A motivação foi a oportunidade de se consolidar o conhecimento adquirido durante todo


o curso além de contribuir academicamente com os resultados para futuras pesquisas.

1.2 Conteúdo

Este trabalho estará assim dividido; o capítulo 2 discorrerá sobre uma revisão
bibliográfica mostrando os principais conceitos de sistema de diagnóstico veicular; o padrão
OBD-II, os protocolos de comunicação automotivos, o circuito integrado da família ELM e a

15
comunicação serial. No capítulo 3 será detalhado todo processo de aplicação da metodologia
utilizada no desenvolvimento do projeto. No capítulo 4 descrevem os ensaios e os resultados
obtidos, estratificando-os para um estudo comparativo entre o desejado e o realizado.
Analisar-se-á se a meta foi atingida e quais foram as dificuldades encontradas neste projeto.
Finalmente, no capítulo 5 discutem-se as conclusões obtidas dos resultados e a proposição de
novos estudos e desafios.

16
2. SISTEMA DIAGNÓSTICO EMBARCADO

2.1 Eletrônica embarcada

Segundo Guimarães, a eletrônica embarcada representa todo e qualquer sistema eletro-


eletrônico montado em uma aplicação móvel, seja em um automóvel, um navio ou um avião.
(GUIMARÃES, 2003).

Conforme Andreatini (ANDREATINI, 2003), o processo da penetração da eletrônica


no mercado automotivo, foi lento, devido principalmente à relação de custo benefício.
Historicamente a eletrônica embarcada teve seu início na década de 1960, porém naquele
momento, devido a ser uma imposição e não por um desejo dos consumidores, não obteve
sucesso. Durante a década de 1970 dois eventos retomaram sua inclusão:

- A redução do consumo de combustível e a introdução de leis governamentais para a


redução da emissão de poluentes na atmosfera.

- O desenvolvimento a custos relativamente baixos de dispositivos em estado sólido, o


que facilitou a introdução da eletrônica digital no gerenciamento de motores.

A indústria automotiva vem há anos utilizando-se de sistemas eletro-eletrônicos no


controle de funções do veículo, boa parte destes foi desenvolvido de forma independente,
sendo cada um responsável por um determinado tipo de função. Contudo com o passar do
tempo provou-se indispensável o compartilhamento de informações, mais facilmente
conseguido através da utilização dos sistemas eletro-eletrônicos interligados, sendo cada um
responsável por uma função, na qual todas juntas se completam. (TOSI & GALVÃO &
LIMA, 2008).

Desde então a utilização da eletrônica embarcada se incrementa dia à dia, e será ainda
maior no futuro. Abaixo, descrevem-se algumas das presentes e futuras aplicações da
eletrônica embarcada no automóvel:
- Redes de comunicação, navegação e entretenimento.
- Direção ativa
- Freios eletrônicos
- Conforto e Segurança

17
-Controle eletrônico da injeção do combustível (minimizar consumo e maximizar
desempenho).
- Instrumentação para a medição de parâmetros do desempenho do veiculo e a
obtenção de diagnósticos de eventuais falhas do sistema.
Sendo este último base para a construção desta monografia e para montagem do
trabalho prático.

A figura 1 mostra os pontos que levam ao incremento da eletrônica embarcada.

Figura 1: Combustível da eletrônica embarcada


(Fonte: Notas de aula do professor Kleber N. Hodel, 2009)

Perceba que, os desejos dos clientes têm extrema relação com o avanço da eletrônica
embarcada, seja para cumprimento de normas de emissão, diagnose, segurança, conforto,
custo, eficiência, economia, etc.

2.2 Tecnologias de Arquiteturas Eletrônicas

Segundo Guimarães (GUIMARÃES, 2003), as arquiteturas elétricas são as formas


pelos quais os sistemas de controle são interconectados em uma aplicação embarcada.

18
Atualmente, no setor automobilístico destacam-se dois tipos: arquitetura centralizada e a
arquitetura distribuída.

2.2.1 Arquitetura Centralizada

Neste tipo de arquitetura uma única ECU (Eletronic Control Unit) é responsável por
todo o controle existente no sistema, recebendo os sinais de entrada (através dos sensores), os
processando e comandando as respectivas saídas (atuadores) de controle do sistema.

Figura 2 Arquitetura Centralizada


(Fonte: Notas de aula do professor Kleber N. Hodel, 2009)

O diagrama esquemático que representa este conceito de arquitetura é apresentado na


figura 2. Dentro da ECU são encontrados o hardware e software que permitem a leitura das
entradas, seu processamento e a atuação das saídas, além da diagnose para verificação de seu
funcionamento.

Como vantagens podem destacar:

- Facilidade na coleta de informações do sistema devido a todos os dados de entrada


serem disponíveis para ECU durante toda a operação.
- Simplicidade do hardware, sendo constituído de sensores e atuadores, cabeamento e
uma ECU para controle e processamento de dados.
- Baixo custo de desenvolvimento

Como desvantagens podem destacar:

- Limitação das possibilidades de expansão do sistema.


19
- Grande quantidade de cabeamento.
2.2.2 Arquitetura Distribuída

Neste tipo de arquitetura, num mesmo sistema de controle, várias ECU´s interligadas,
dividem o controle e processamento de diversas funções existentes no veículo.

Figura 3: Arquitetura Distribuída


(Fonte: Notas de aula do professor Kleber N. Hodel, 2009)

O diagrama esquemático que representa este conceito de arquitetura é apresentado na


figura 3. As ECU´s encontram-se interligadas, dividindo entre elas a execução de diversas
funções existentes no veículo. Tendo seu funcionamento monitorado pela diagnose através de
um protocolo de comunicação.

Como vantagens podemos destacar:

- Maior robustez do sistema de controle.


- Facilidade na ampliação do sistema.
- Quantidade reduzida de cabeamento.
- Possibilita modularização do projeto do sistema e da execução dos testes de
validação, aumentando assim a confiabilidade.

Como desvantagens podemos destacar:

-Implica a existência de um software de controle da rede de comunicação.

20
-Exige a utilização de um protocolo de comunicação.

Depois de relacionadas as vantagens e desvantagens fundamentais das duas principais


arquiteturas veiculares, acrescentamos que a escolha de uma delas para uma determinada
aplicação móvel, depende da ponderação de alguns fatores, tais como: o tempo necessário à
implantação da arquitetura, sua viabilidade econômica, complexidade e robustez.

Figura 4 : Responsabilidade x Complexidade


(GUIMARÃES, 2003)

A figura 4 faz uma relação entre a responsabilidade por ECU do sistema de controle,
maior na arquitetura centralizada, com a complexidade deste sistema, maior na arquitetura
distribuída.
Em vista disso, das evoluções tecnológicas e das possibilidades de futuras expansões
com o mínimo de alterações do sistema como um todo, optou-se pela maior eficiência das
arquiteturas distribuídas. (GUIMARÃES, 2003)
Diante disso, se fez necessário a utilização de um protocolo de comunicação, para a
interconexão dos módulos, troca de informações pertinentes a cada uma das funções
controladas, processadas e executadas no sistema. Então a Bosch apresentou o CAN
(Controller Area Network). Esse sistema se mostrou o mais eficiente, robusto e adequado para
tal função e logo ganhou a aceitação dos fabricantes de automóveis e passou a dominar a
indústria automotiva.

21
2.3 Diagnóstico Veicular

Segundo Guimarães (GUIMARÃES, 2007), o termo diagnóstico veicular representa as


funções ou ferramentas que permitem a programação ou verificação do funcionamento dos
módulos eletrônico existente em um veículo. E devido ao aumento da eletrônica embarcada,
passa a ser mandatório o desenvolvimento de dispositivos que permitam, por exemplo, o
diagnóstico de falhas eventuais do sistema. Considerando esta necessidade, ele classifica as
falhas em duas categorias: as possíveis de serem identificadas pelo motorista e as
identificadas somente com o auxílio de ferramentas especiais. A primeira é chamada de On-
Board Diagnosis (OBD) e é realizada por meio da lâmpada de mau funcionamento do motor e
avisos sonoros existentes no painel de instrumentos. A segunda pode ser chamada de Off-
Board Diagnosis e é realizada pelos dispositivos eletrônicos capazes de se comunicar com os
módulos do veículo. (GUIMARÃES, 2007, p. 227).

Belo (BELO, 2003) afirma que os sistemas de diagnóstico foram desenvolvidos com o
propósito de manter os níveis de emissão de poluentes dos veículos dentro de padrões
estabelecidos. Os sistemas de primeira geração eram simples e realizam essa função de forma
eficiente, porém possuíam algumas deficiências graves. Primeiramente ao fato de que as
falhas somente eram identificadas quando houvesse desgaste do componente ao ponto deste
tornar-se inoperante, o que era muito prejudicial, pois se aumentava assim os níveis de
emissão de poluentes. Outra grave deficiência era a dificuldade do acesso a essas informações
de diagnostico de falha, pois cada fabricante possuía seus próprios protocolos, do qual o
acesso aos serviços de diagnose somente eram realizados por ferramentas disponibilizadas
pelos próprios. (BELO, 2003)

O sistema embarcado de segunda geração OBD-II (On-board Diagnostic Generation


2) foi definido pela CARB (California Air Resources Board), foi primeiramente
implementado em todos os veículos americanos produzidos após 1996, é uma norma para
diagnóstico veicular, relacionada a emissões de poluentes. O objetivo é detectar falhas nos
veículos, cujo desempenho possa aumentar os limites de emissões, ao ponto que estas
excedam os limites pré-estabelecidos por leis ambientais da agência de proteção ambiental
americana (Environment Protection Agency ou EPA). O sistema estabelece um conjunto de
sistema de serviços de diagnóstico presentes nos veículos e implementados por uma
ferramenta de diagnóstico geral (scanners), fabricada por diversos fabricantes independentes.

22
Diniz (DINIZ & COLÓN & SILVA & AGUIAR & SILVA. F & PALÁCIOS, 2009)
afirma que, o próximo passo será a introdução do padrão OBD-III, na qual o veiculo entrará
em contato com as autoridades responsáveis no caso de aumento dos níveis de emissões, e
esta será notificada e atuará para que o defeito seja reparado. Com isso, não será mais
necessário o controle de emissões de gases, que atualmente acontece de dois em dois anos,
aumentando assim a eficiência.

2.3.1 OBD no Brasil


A seguir uma breve introdução das principais legislações vigentes no mercado
automotivo brasileiro. As resoluções visam dar continuidade as atualizações do PROCONVE
(Programa de Controle de Poluição do Ar por Veículos Automotores), instituído pela
resolução do CONAMA (Conselho Nacional do Meio Ambiente) Nº18, DE 06 DE MAIO DE
1986, que tem como objetivo principal reduzir os níveis de emissão de poluentes pelo
escapamento e por evaporação, promovendo o desenvolvimento da tecnologia nacional.
(DINIZ & COLÓN & SILVA & AGUIAR & SILVA. F & PALÁCIOS, 2009).

2.3.2 Resolução CONAMA Nº 315


Especifica basicamente os prazos e limites de emissões de poluentes que a serem
seguidos pelas montadoras.

2.3.3Resolução CONAMA Nº 354


Considera a adoção do programa OBD aos veículos automotores (para veículos leves
de passageiros, produzidos ou importados), contribui para a melhoria da qualidade ambiental
e possibilita a prevenção da ocorrência de danos severos aos sistemas de controle de emissão.
O padrão foi baseado no já existente e implantado OBD-II. A principal tarefa da resolução foi
definir os parâmetros a serem medidos e prazo para implantação pelas montadoras
(CONAMA, 315). A implementação no Brasil foi definida em duas fases, ao qual o
cronograma é o seguinte:
OBDBr-1:
- A partir de 1º de janeiro de 2007, no mínimo para 40% do total anual de veículos;
- A partir de 1º de janeiro de 2008, no mínimo para 70% do total anual de veículos;
- A partir de 1º de janeiro de 2009, para a totalidade de veículos;
- Sensor Pressão Absoluta ou Fluxo de Ar
- Sensor Posição da Borboleta
- Sensor de Temperatura de Arrefecimento
23
- Sensor Temperatura de Ar
- Sensor Oxigênio (somente o sensor pré-catalisador)
- Sensor de Velocidade do Veículo
- Sensor de Posição do Eixo Comando de Válvulas
- Sensor de Posição do Virabrequim
- Sistemas de Re-circulação dos Gases de Escape (EGR)
- Sensor para Detecção de Detonação
- Válvulas Injetoras
- Sistema de Ignição
- Módulo Controle Eletrônico do motor
- Lâmpada Indicadora de Mau Funcionamento (LIM)
- Outros componentes que o fabricante julgue relevantes para a correta avaliação do
funcionamento do veículo e controle de emissões de poluentes.

OBDBr-2:

-À partir de 1º de janeiro de 2010, no mínimo para 60% do total anual de veículos;


-À partir de 1º de janeiro de 2011, para a totalidade de veículos;

Complementarmente às funções e características do Sistema OBDBr-1, o sistema


OBDBr-2 deve detectar e registrar a existência de falhas de combustão, deterioração do(s)
sensor(es) de oxigênio primário(s) e eficiência de conversão do catalisador que acarretem
aumento de emissões, também apresentar características mínimas para a detecção de falhas
nos seguintes componentes:
- Sensores de Oxigênio (pré e pós-catalisador)
- Válvula de Controle da Purga do Cânister

2.4 Conector padrão OBD II

Trata-se do conector padrão mencionado na norma ISO 15031-5:2006, para


comunicação entre veículo e equipamento externo para diagnostico de emissões.
2.4.1 Localização
A localização em veículos de passeio e em veículos comerciais leves deve atender às
seguintes especificações:
Local de fácil acesso ao banco do motorista.
Próximo ao Painel de Instrumentos.
24
Entre a coluna de direção e a ECU.
Distância de 300 mm além da ECU.
2.4.2 Pinagem
É composto por 16 pinos, sendo estes descritos na figura 5.

Figura 5: Conector OBDII


(Fonte: Notas de aula do professor Orlando Salvo Junior, 2010)

Observe que, o conector formato `D` - oferece maior facilidade de conexão com uma
mão e sem visão.
Contatos 2 e 10 – J1850 Bus+ e J1850 Bus
Contatos 6 e 14 – CAN High e CAN Low – ISO 15765-4
Contatos 7 e 14 – Linha K e Linha L - ISO 9141-2 e ISSO 14239-4
Contato 4. Massa do chassi – fornecer massa eficiente para equipamento externo.
Contato 5. Sinal massa – referência para comunicação.
Contato 16 - Positivo permanente:
Conector tipo A – 12V (4A)
Conector tipo B – 24V (2A)
Protegido por fusível ou elemento protetor no circuito.
Referência para comunicação da linha K.
25
Contatos 1, 3, 8, 9 11, 12 e 13-Podem ser utilizados pelo fabricante de equipamento,
mantendo alta impedância com os contatos 4 e 5. Por exemplo > 500 k Ohms.

2.5 Códigos de falha de diagnóstico

A utilização de códigos de falha de diagnóstico padronizados facilita e muito a vida de


quem irá realizar a manutenção no veículo. A norma SAE J2012 estabelece um sistema de
código alfanumérico com 5 caracteres, cada um dos quais representa um valor específico.
O primeiro dígito indica a localização do defeito no veículo. Como se é possível
visualizar na tabela 1.

Tabela 1: Código de Falha 1º dígito

(Fonte: CERQUEIRA & BEZERRA & ZAMBONI & EDSON, 2009)

O segundo dígito indica a entidade responsável pela sua definição. Através deste é
possível verificar se o código é comum a todos os fabricantes (padrão ISO/SAE) ou
específico. Como é possível visualizar na tabela 2.
Tabela 2: Código de Falha 2º dígito

(Fonte: CERQUEIRA & BEZERRA & ZAMBONI & EDSON, 2009)

26
O terceiro dígito do código de falhas, cujos valores são mostrados na tabela 3, refere-
se a um subgrupo de funções do veículo. E o quarto e o quinto dígito referem-se à falha
específica no referido subgrupo.

Tabela 3: Código de Falha 3º dígito

(Fonte: BELO, 2003)

Conforme figura 6 (exemplo) o código de falhas DTC (Diagnostic Trouble Code) é


transmitido por dois bytes de informação para cada DTC.

Figura 6: Exemplo do código DTC P0143


.(Fonte: ISO 15031-5:2006)

Para realizar a identificação da falha, a lista com os DTC`s encontram-se no anexo C.

2.6 Protocolos de Comunicação de Diagnose

O protocolo é um conjunto de regras ou convenções formuladas para controlar a troca


de dados entre dois dispositivos desejando uma conexão. Incluem como elementos básicos o
formato de dados e níveis de sinal, tempo e gerenciamento e coordenação de erros das
informações. (GUIMARÃES & FILHO & SILVA. A & CAMPOS & SILVA. C &
PALÁCIOS, 2003).

O sistema OBD-II apresenta uma arquitetura de rede baseada no modelo OSI (Open
Systems Interconnection), que é um modo de se subdividir os sistemas de comunicação em

27
camadas, definido pela norma ISO 7498, contendo conforme figura 7, camadas de aplicação,
enlace e física.

Figura 7: Arquitetura de rede OBD-II


(Fonte: BELO, 2003)

Perceba que, conforme Belo (BELO, 2003), a camada de aplicação é responsável


pelos serviços de diagnose disponibilizados ao usuário, sendo constituída sob infra-estrutura
de serviços de comunicação baseadas em camadas inferiores e possui um único protocolo,
definido pela norma SAE J1979. A camada de enlace de dados é responsável pelo
reconhecimento das mensagens e detecção de erros durante a comunicação, utilizando-se dos
serviços da camada física, que é a camada inferior e trata da transmissão das mensagens
através de um meio físico.

Para garantir compatibilidade com os protocolos de diagnose primeira geração, as


camadas de enlace de dados e a física podem possuir diferentes protocolos: ISO 9141-2, SAE
28
J 1850 PWM, SAE J I850 VPW, ISO 14230-4 (KWP 2000), ISO 15765-4 (CAN) e SAE
J1939-73 (CAN). O equipamento para diagnóstico deve determinar automaticamente a
interface de comunicação para fornecer serviços OBD e continuar repetindo o teste de
protocolo até o usuário interromper. Caso persista, informar ao usuário sobre a
impossibilidade de comunicação ou que a informação solicitada não está disponível. Deve
suportar um protocolo por veículo, testá-los em qualquer ordem, determinar qual linha de
comunicação é a do veículo (K, CAN, BUS) e informar ao usuário que a inicialização está
acontecendo. (SALVO JUNIOR, 2010).

2.6.1 Protocolo ISO 9141-2 – A norma mais utilizada

Este protocolo estabelece a comunicação através de um barramento serial, é composto


por duas linhas de comunicação (denominadas K e L), define o formato das mensagens e
procedimentos para a detecção de erros e inicialização da comunicação. (BELO, 2003)
- Os módulos eletrônicos devem possuir uma K ou duas (K +L) linhas de comunicação
para diagnóstico ou inspeção.
- O módulo eletrônico ou o veículo devem providenciar a tensão positiva permanente
bem como o terra, para o scanner.
- A linha K provê de uma forma digital serial a informação, do modulo eletrônico para
o scanner e pode ser utilizada para inicializar uma comunicação serial. (GUIMARÃES, 2007)

Figura 8: Barramento de Diagnóstico ISO 9141-2


(Fonte:GUIMARÃES, 2007)

A figura 8 representa as linhas K e L de dois módulos eletrônicos conectados juntos, e


esse sistema é conhecido como barramento.

2.6.2 Protocolo ISO 14230 (KWP 2000)

O protocolo ISO 14230 ou KWP 2000 “Keyword Protocol 2000”, é segundo Belo
(BELO, 2003), um conjunto de normas estabelecidas pela ISO, com o objetivo de definir
29
requisitos comuns para a utilização dos sistemas de diagnóstico implementados com o uso de
uma linha de comunicação serial. Apresenta tanto serviços de diagnostico, que compõem a
camada de aplicação e permitem o acesso a diagnose embarcada, quanto serviços de
comunicação que fornece a infra-estrutura necessária para a comunicação com a unidade
eletrônica.
Conforme Guimarães (GUIMARÂES, 2007), este protocolo permite a compatibilidade
com as implementações da ISO 9141-2 existentes, e explora novas opções para proporcionar
uma maior flexibilidade e melhorar o desempenho.

A figura abaixo apresenta a topologia KWP 2000, aonde a linha K é utilizada para a
inicialização e comunicação e a linha L é um opcional, somente para inicialização.

Figura 9: Topologia KWP 2000


(Fonte:ISO 14230-2:1999)

2.6.3 Protocolo SAE J1850

O Protocolo estabelece uma rede de comunicação de dados usada para o


compartilhamento de informações entre os módulos eletrônicos do automóvel. Através de
duas abordagens distintas os sinais digitais são comunicados utilizando-se de um conceito de
multiplexação por divisão de tempo: (BELO, 2003)
- SAE J1850 PWM – modulação por largura de pulso fixa: 41,6 kbaud, padrão da
Ford: o valor de um símbolo é determinado pela duração do pulso.
- Pino 2: Bus +
- Pino 10:-Bus
- Alta tensão de +5 V
- Comprimento da mensagem é limitado a 11 bytes, inclusive CRC
- Utiliza um esquema de arbitragem, multi-mestre chamado de “Carrier Sense Multiple
Access com Non-Destructive da Arbitragem "(CSMA / DND).

30
Descrição do funcionamento:
- Bus alterna entre passivas e ativas para cada bit
- Alta tensão do barramento é dominante
- Dominante símbolos
• Bus Active: Longo domina pulsos curtos
• Bus Passiva: Curto domina pulsos longos

- SAE J1850 VPW – modulação por largura de pulso variável- 10.4/41.6 kbaud,
padrão da General Motors: o valor do símbolo é determinado pela largura do pulso e pelo
estado do barramento.
- Pino 2: Bus +
- Bus fica inativo baixo
- Alta tensão de +7 V
- Ponto de Decisão é +3,5 V
- comprimento da mensagem é limitado a 11 bytes, inclusive CRC
- Emprega CSMA / NDA

-Descrição do funcionamento:
- Tempo de bit fixo.
- Pulso de curta ou longa iniciando com tempo start bit.
- Longo domina curta.

2.6.4 Protocolo ISO 15765

É baseado na norma ISO 14230 – parte 3, conforme Guimarães (GUIMARÂES,


2007), pois esta já continha as informações necessárias para implementar os serviços de
diagnóstico.
Define o cabeçalho de mensagens, a camada física e o protocolo de fragmentação para
permitir a implementação efetiva do CAN Bus em diagnósticos.

2.6.5 Protocolo SAE J1939

Segundo Guimarães (GUIMARÂES, 2007), seu principal propósito é proporcionar


arquiteturas padronizadas. É um protocolo de alto nível que define a comunicação entre os
módulos.
Qualquer unidade de controle eletrônica (ECU), utilizando J1939 tem permissão para
transmitir uma mensagem na rede quando a bus está ociosa. Cada mensagem inclui um
31
identificador de 29 bits, que define a prioridade da mensagem de dados, e está contida dentro
de uma matriz de dados de 8 bytes que segue o identificador, e verifica qual ECU enviou a
mensagem.

2.7 Comunicação serial – USART

O nome USART significa Universal Synchronous Asynchronous Receiver


Transmitter. Trata-se de um protocolo universal que possui duas formas de trabalho: o
sincronizado e o não sincronizado ( síncrono e assíncrono). (SOUZA & LAVINIA,2003).
O modo de trabalho utilizado neste projeto foi o não-sincronizado.
2.7.1 Modo Assíncrono
Neste modo de trabalho a comunicação utiliza duas vias, e ambas são utilizadas para
dados, na qual uma será utilizada para a transmissão (TX) e a outra para a Recepção
(RX),desta forma as informações são enviadas e recebidas ao mesmo tempo. Este padrão de
comunicação é muito empregado, por exemplo, para implementar o padrão RS-232. (SOUZA
& LAVINIA,2003).
A sincronização entre os equipamentos que estão realizando a comunicação é realizada
pela própria via de dados através da seleção do Baud Rate ou velocidade da comunicação. O
Baud Rate define o intervalo de cada bit na comunicação e é indicado em bits por segundo.
Em uma comunicação serial RS232C, os dois equipamentos devem estar ajustados para uma
mesma velocidade. Desta forma o sincronismo é obtido para transmissão/recepção de cada
byte através do Start bit. (SOUZA & LAVINIA,2003)

Figura 10 : Tempo de 1 bit


(Fonte: SOUZA & LAVINIA,2003)

O TX de um lado deve ser conectado no RX do outro, e vice-versa, sempre o TX de


um equipamento será saída e o seu RX será sempre entrada. As duas vias de comunicação
possuem o seu estado padrão como sendo em nível alto. Quando um lado inicia a sua
transmissão, ele insere um nível baixo em seu TX, mantendo por um tempo T BIT, esta borda
de descida é interpretada pelo RX do outro equipamento, que inicia a sincronização para o

32
recebimento desse byte. Este pulso em nível baixo é denominado de Start Bit (SOUZA &
LAVINIA,2003).

Após o Start Bit, TX enviara 8 bits de dados, cada um desses bits possuem o mesmo
intervalo de tempo do Start Bit. Rx o interpretar e deixa passar o tempo para depois coletar os
8 bits, cada um dos bit é pego no meio tempo de bit, ou seja, TBIT/2.No fim da transmissão o
TX envia um Stop Bit, que nada mais é do que um bit em nível lógico1, para garantir que a
linha volte ao seu estado de repouso padrão. (SOUZA & LAVINIA,2003).

No total da comunicação serão enviados 10 bits (1 Start Bit + 8 Bit de Dados + 1 Stop
Bit). A figura 11 representa o envio do byte 01101001.

Figura 11: Exemplo de comunicação USART Assíncrono


(Fonte: SOUZA & LAVINIA,2003)

2.8 ELM 327

Quase todos os automóveis produzidos hoje em dia devem, por lei, ter uma interface
através da qual, equipamentos de teste podem obter informações de diagnóstico. A
transferência de dados nesta interface segue vários padrões, e nenhum deles é diretamente
compatível com PCs ou PDAs. O ELM327 é designado para atuar como uma ponte entre
estas portas OBD (On board Diagnostics) e as portas padrão RS232. O resultado é um CI
(Circuito Integrado) que pode buscar e converter automaticamente a maioria dos protocolos
em uso atualmente. O ELM327 requer poucos componentes externos para torná-lo um
circuito funcional e é produzido tendo como núcleo um microcontrolador da família

33
PIC18F2x8x da Microchip. A figura 12 apresenta. a pinagem do ELM-327. (Datasheet ELM
327).

Figura 12: Pinagem do ELM-327


(Fonte: Datasheet ELM-327)
2.8.1 As aplicações do dispositivo ELM327

- Scanners Automotivos
- Kits didáticos
- Leitores de DTCs (Diagnostic Trouble Codes – códigos de erros)

2.8.2 Características Principais:

- Suporte a 12 protocolos
- Baud rate da porta RS232 até 500kbps
- Busca automática por um protocolo
- Plenamente configurável com comandos AT
- Entrada para monitoramento da bateria
- Design CMOS de baixo consumo.

34
3.METODOLOGIA
Este capítulo mostra a metodologia utilizada para o desenvolvimento da ferramenta de
diagnóstico veicular automotivo.

3.1 Requisitos do Produto

Primeiramente foram definidos quais seriam os requisitos para o desenvolvimento da


ferramenta de diagnóstico automotivo:

1. Utilizar a placa de experiências MCLAB2.


2. O Software deverá ser realizado em linguagem C.
3. Interface com sistemas de diagnose OBD II.
4. Realizar a comunicação com veículos que possuam os protocolos de
comunicação ISO 9141-2, SAE J 1850 PWM, SAE J I850 VPW, ISO 14230-4 (KWP
2000), ISO 15765-4 (CAN) e SAE J1939-73 (CAN).
5. Realizar a identificação automática do protocolo de comunicação que é
utilizado pelo veículo.
6. Realizar a leitura dos parâmetros de rotação do motor, do avanço da ignição, da
temperatura do ar, da pressão no coletor de admissão, da velocidade do veículo e da
posição da válvula borboleta.
7. Identificar quantos códigos de falhas o a unidade de controle do motor possui.
8. Mostrar no display de LCD pelo menos dois códigos de falhas.
9. Permitir que o usuário apague as falhas que estão presentes na unidade de
controle do motor.
10. Interface com o usuário através de teclas e display de LCD.

3.2 Soluções técnica

Com os requisitos definidos o desenvolvimento da ferramenta de diagnóstico


automotivo foi divido em dois blocos, um bloco de comunicação e outro bloco de controle. O
bloco de comunicação será responsável por atender diretamente aos requisitos 3, 4 e 5,
enquanto o bloco de controle será responsável por atender aos demais requisitos.
O bloco de controle enviara para o bloco de comunicação as mensagens referentes às
requisições feitas pelo usuário utilizando as teclas através de uma comunicação serial RS232
suportada pelos módulos USART (Universal synchronous Asynchronous Receiver-
35
Transmitter – Receptor-Transmissor Assíncrono Universal) contidos nos dois blocos, o bloco
de comunicação recebera estas mensagens e as convertera para o protocolo de comunicação
que o veículo utiliza, para assim, fazer a comunicação com a unidade de controle do veículo e
obter a resposta para a mensagem de requisição do usuário.

Figura 13: Diagrama de blocos da ferramenta de diagnóstico automotivo

3.2.1 Hardware

Para a construção do hardware os seguintes componentes foram selecionados:


 ELM327.
 Microcontrolador PIC16F877A.
 (4) Quatro Teclas.
 Display de LCD 16X2.

3.2.1.1 ELM 327.


O ELM 327 é um conhecido Scanner automotivo que é amplamente utilizado em
conjunto com uma base PC, o que torna fácil a busca de informações, ele realiza a
comunicação com todos os protocolos necessários e identifica automaticamente o protocolo
de comunicação que o veículo utiliza, ele possui um hardware e software completo para fazer
a comunicação com o veiculo através de um conector OBDII e para fazer a comunicação com
uma base PC através de um cabo USB.
O intuito do nosso trabalho não esta na parte de comunicação com o veiculo e sim na
aquisição e tratamento de dados, por isso, nesta parte do hardware focalizaremos apenas nas
partes que utilizamos com esta finalidade.

No hardware original do ELM327 há um CI FT232BL da empresa FTDI, que realiza a


conversão da comunicação RS-232 disponível nos terminais 17 e 18 do ELM327 para sinais
USB. Como o nosso intuito é o de fazer com que o ELM327 passe a se comunicar com um
microcontrolador PIC 16F877A, fizemos a alteração no hardware original retirando toda
parte de comunicação USB, resultando no hardware da figura 14, no qual mantemos os

36
circuitos de condicionamento de sinais referentes à comunicação de cada protocolo, o circuito
regulador de tensão e a disponibilidade dos pinos 17 e 18 para a comunicação com o PIC
16F877A.

Figura 14: Esquema do hardware da comunicação com o veículo.


(Fonte: DataSheet ELM 327 OBD to RS232 Interpreter).

Analisou-se que o CI ELM327 é um PIC18F2480 da família de circuitos lógicos


CMOS, igualmente ao nosso microcontrolodador PIC16F877A, sendo necessário somente
conectarmos os Pinos Rx e Tx de um microcontrolador, nos pinos Tx e Rx do outro
microcontrolador, respectivamente. Para assegurar o correto funcionamento da comunicação é
necessário também que os dois microcontroladores compartilhem de uma mesma tensão de
alimentação, na qual utilizamos a tensão de 5V fornecida pelo circuito regulador de tensão
que possui um CI 78L05, que alimentará o nosso hardware do bloco de controle.

37
3.2.1.2 Microcontrolador PIC16F877A
A placa de experiências MCLAB2 possui um microcontrolador PIC16F877A de 40
pinos, que atende aos nossos requisitos, pois possui o módulo interno para a comunicação
USART, faz o controle para a escrita do LCD de 16X2 e tem portas suficientes para a
conexão das quatro teclas.
A figura 15 mostra o circuito básico para o funcionamento do microcontrolador. Os
capacitores C1 e C2 estão conectados ao cristal oscilador X1 de modo a formarem um circuito
oscilador de 4MHZ que será utilizado pelo microcontrolador para definir a sua velocidade de
processamento interno. A alimentação de 5V será fornecida pelo hardware de comunicação.

Figura 15: Configuração básica do microcontrolador

3.2.1.3 Teclas e Display de interface.


Para a realização do interfaceamento entre o usuário e a placa de controle utilizamos
as 4teclas e o display de LCD de 16X2 que estão na placa de experiências McLab2. As teclas
se encontram na configuração pull-up (Nível lógico alto), sendo tanto utilizadas para o
usuário avançar e recuar nas telas, como para entrar e sair de uma função especifica. O
circuito pode ser visto em maiores detalhes na figura 16.

Figura 16: Circuito de interface entre usuário e hardware de controle

O display de LCD alfanumérico de 2 linhas por 16 segmentos foi utilizado para a


leitura e seleção dos parâmetro desejados, pois ele é capaz de mostrar todas as mensagens
38
listadas nos requisitos, tendo a função básica de uma IHM (Interface Homem Máquina). A
sua ligação está representada na figura 17( tipo de comunicação paralelo)..

Figura 17: Esquema ligação e comunicação com o display de LCD

A figura 18 apresenta o esquema geral do hardware que compõem o sistema da


ferramenta de diagnóstico automotivo.

Figura 18: Esquema geral da ferramenta de diagnóstico automotivo.

39
3.2.2 Software

Para a realização do software foi feita uma lista de requisitos, que foi formulada a
partir de uma analise feita do processo de comunicação realizada entre um veículo VW Polo,
o ELM 327 e um computador (ver figura 19).
Analisou-se o processo de comunicação instalando dois softwares em um computador.
O primeiro foi o software chamado OBD2SPY (ver figura 20), que está no CD que
acompanha o equipamento ELM327, e que tem a função de scanner automotivo e o outro foi
o HHD Free Serial Port Monitor para descobrirmos quais são os dados trocados entre o
software e o ELM327.
O foco desta primeira etapa foi o de interpretar as perguntas e as respostas obtidas pelo
software de diagnóstico a cada informação requisitada, para desta forma realizar o nosso
software.
Após a análise concluí-se que o código da troca de dados utilizada pelo Polo segue um
padrão estipulado pela norma SAE J1979, o que facilita o trabalho, uma vez que não é
necessário simular diversas condições de trabalho para se obter um código para cada
situação.
A comunicação com o ELM327 possui duas linhas de comando, a primeira é um
conjunto de comandos AT, que são utilizados para a configuração interna do ELM327, por
exemplo: reset o chip utiliza-se o comando AT Z , a segunda são os comandos utilizados
para se obter as informações do veículo, que no caso do POLO segue o padrão da norma
SAEJ1979.
Toda vez que se envia um pacote de dados para o ELM327 o último dado deve ser um
caracter simples de retorno, que segundo a tabela ASCII é 0x0D(hexadecimal), desta forma
ele compreende que a informação chegou ao fim. Após serem enviados os dados para o
ELM327 deve se esperar até que este responda com um caractere „>‟(0x3E), que significa que
ele está pronto para receber uma nova mensagem. A figura 21 abaixo representa o processo de
aquisição dos valores da pressão no coletor de admissão e a rotação do veículo.

40
Figura 19:Esquema de ligação do ELM327.
(Fonte http://www.elec-intro.com/obd-ii-tool )

Figura 20: Software OBDSPY

41
Figura 21: Aquisição de dados Software de monitoramento.

3.2.2.1 Requisitos do software


Os requisitos para o nosso software são:
1. Realizar a comunicação USART com o bloco de comunicação, para o envio e
aquisição de dados.
2. Fazer o controle de escrita do LCD, para apresentar os valores ao usuário.
3. Leitura das teclas de entrada.
4. Identificar as mensagens requisitadas.
5. Tratar os dados recebidos.

3.2.2.2 Design do Software.


Através da norma J1979 obteve-se qual é a mensagem que deve ser enviada para o
veículo e qual é a resposta que deve ser esperada para se adquirir a informação desejada, a
tabela 4 apresenta o parâmetro de leitura associado a sua respectiva mensagem.

Tabela 4: Parâmetros de leitura

Parâmetro de Leitura Mensagem de Resposta Esperada


Aquisição
Pressão no Coletor de Admissão 01 0B 41 0B 00
Rotação do Motor 01 0C 41 0C 00 00
Velocidade do Veículo 01 0D 41 0D 00
Avanço da Ignição 01 0E 41 0E 00
Temperatura do Ar 01 0F 41 0F 00

42
Posição da Válvula Borboleta 01 11 41 11 00

(fonte: SAE J1979)

Observa-se que os dois primeiros caracteres das mensagens de aquisição „0‟ e „1‟, são
respondidos por „4‟ e „1‟ seguidos por mais 2 caracteres que correspondem ao parâmetro de
leitura desejado, estes quatro primeiros caracteres servem para requisitar a mensagem e para
verificar se a mensagem que está chegando é a correta, os caracteres subseqüentes dos quatro
primeiros representam o valor real do parâmetro de leitura desejado, mas para cada parâmetro
é necessário um tratamento diferente.
No software utilizamos a função printf( ) (utilizada para possibilitar a saída de dados
na linguagem C, onde os dados são direcionados para o dispositivo padrão de saida, que no
caso do microcontrolador PIC é a porta serial) para o envio das mensagens e a função getc()
(utilizada para a entrada de dados, através da porta serial, esta função aguarda a chegada de
uma caractere através da porta serial), para a armazená-las em uma matriz, toda vez que uma
mensagem é recebida pelo microcontrolador ela é armazenada nesta matriz e logo em seguida
é realizada uma função para o tratamento destes dados que alocara as informações pertinentes
para as suas respectivas variáveis.
A função Envia( ) foi construída com o intuito de tornar mais fácil o processo de
programação, como todas as mensagens enviadas possuem no máximo 5 caracteres, contando
com o caractere de retorno, esta função contém 5 entradas (a,b,c,d,e) para inserir a mensagem
que será enviada 1entrada(f) que indica o tamanho da mensagem. A função pode ser vista na
figura 21.

Figura 22: Função Envia

A função RecebeMask() foi construído para receber a mensagem e armazená-la na


matriz RecebeDados1[], ela não armazena o caractere espaço(0x20), possui 4 entradas, para
43
ser inserida os valores esperados dos 4 primeiros caracteres de retorno, que representam a
máscara da mensagem e fica esperando o caractere „>‟ para sair da função. A função pode ser
vista na figura 22.

Figura 23: Função RecebeMask.

Quando um dado de uma resposta precisa ser tratado ele passa pela função ASCII( );
Esta função converte um valor inicial em um valor diferente daquele representado na tabela
ASCII( ). A figura abaixo apresenta esta função.
44
Figura 24: Função Ascii

3.2.2.2.1 Design de Alto Nível

Figura 25: Design de Software de Alto Nível

45
3.2.2.2.1 Design detalhado

3.2.2.2.1.1 Inicialização.

Nesta parte é enviada ao ELM327 mensagens para a sua configuração interna e uma
solicitação para ver quantos códigos de erro a ECU possui atualmente. No display é mostrado
as frases INICIALIZANDO e CARSCANNER V2. 0.
As mensagens enviadas e as respostas obtidas conforme tabela 5 são:

Tabela 5: Inicialização

Mensagem Resposta
ATZ . ATZ...ELM327 V1.5..>
01 01 41 01 00 06 61 60 ..>

Na mensagem de resposta da solicitação 01 01 o 6° caractere identifica quantos DTC a


ECU possui.

Figura 26: Função Falha

A função falha() armazena o 6° caractere da mensagem recebida na variável QTD.

3.2.2.2.1.1 Parâmetros de leitura.

Nesta fase é enviada para ECU mensagens de requisição das mensagens que contém
os valores dos parâmetros de leitura, a tabela 6 apresenta as mensagens enviadas e lidas pelo
microcontrolador durante um teste.
Tabela 6: Exemplo de Mensagens enviadas e recebidas

Mensagem Resposta
010B 41 0B 5B ..>
010C 41 0C 1A F8 ..>
010D 41 0D 45 ..>
010E 41 0E B3 ..>

46
010F 41 0F 55 ..>
0111 41 11 43.. >

Na mensagem de resposta da solicitação 01 0B os caracteres 5 e B representam o valor


da pressão no coletor de admissão. Como esses dois caracteres são armazenadas em posições
diferentes da matriz RecebeDados1[], deve-se unir os dois caracteres em uma mesma
variável, para isso pega-se o primeiro caractere, no caso 5, passa-se este pela função
ASCII(),o aloca em uma variável Dadoa, e o desloca para a esquerda em 4 posições, pega-se o
segundo caractere, passa ele pela função ASCII(),o aloca em uma outra variável Dadob e
realiza a operação lógica OU entre as duas variáveis e aloca esse novo dado em uma variável
Kp, este valor representa a pressão no coletor de admissão do veículo segundo a norma SAE
J1979(pág.13), ou seja, 5B equivale a 91Kpa. A figura 27 mostra as linhas de código do
programa.

Figura 27: Tratamento do dado da pressão do coletor de admissão

Na mensagem de resposta da solicitação 01 0C os caracteres 1,A,F e B representam o


valor da Rotação do Motor. Como esses quatro caracteres são armazenadas em posições
diferentes da matriz RecebeDados1[], deve-se unir os quatro caracteres em uma mesma
variável, para isso pega-se o primeiro caractere, no caso 1, passa ele pela função ASCII(),o
aloca em uma variável Dadoa, e o desloca para a esquerda em 4 posições, pega-se o segundo
caractere, o passa pela função ASCII(),o aloca em uma outra variável Dadob e realiza-se a
operação lógica OU entre as duas variáveis e aloca esse novo dado em uma variável
denominada Dadoc, pega-se o terceiro caractere, no caso F, passa ele pela função ASCII(),o
aloca em uma variável Dadoa, o desloca para a esquerda em 4 posições, pega-se o quarto
caractere, o passamos ele pela função ASCII(),o aloca em uma outra variável Dadob e realiza-
se a operação lógica OU entre as duas variáveis e o aloca esse novo dado em uma variável
denominada Dadod, pega-se o Dadoc o desloca para a esquerda em 8 posições e realiza-se a
operação lógica OU entre ele e o Dadod o resultado é alocado na variável RPM. O resultado
da rotação do motor é segundo a norma SAE J1979(pág.13) o valor da variável RPM/4, ou
seja, 1AF8 equivale a 1726RPM. A figura 28 apresenta as linhas de código.
47
Figura 28: Tratamento de dados da rotação

Na mensagem de resposta da solicitação 01 0D os caracteres 4 e 5 representam o valor


da velocidade no veículo. Como esses dois caracteres são armazenadas em posições diferentes
da matriz RecebeDados1[], deve-se unir os dois caracteres em uma mesma variável, o
processo é o mesmo utilizado na requisição para a obtenção do valor da pressão no coletor de
admissão, mudando apenas a variável final que ao invés de ser Kp é a variável Km que
representa a velocidade do veículo segundo a norma SAE J1979(pág.13), ou seja, 45 equivale
a 69km/h. A figura 29 apresenta as linhas de código do programa.

Figura 29: Tratamento de dados de velocidade

Na mensagem de resposta da solicitação 01 0E os caracteres B e 3 representam o valor


do avanço da ignição. Como esses dois caracteres são armazenadas em posições diferentes da
matriz RecebeDados1[], deve-se unir os dois caracteres em uma mesma variável, o processo é
o mesmo utilizado na requisição para a obtenção do valor da pressão no coletor de admissão,
mudando apenas a variável final que ao invés de ser Kp é a variável Ign, o valor que
representa o avanço de ignição do motor segundo a norma SAE J1979(pág.13) é (Ign/2) – 64 ,
ou seja, B3 equivale a 25°. A figura 30 mostra as linhas de código do programa.

48
Figura 30: Tratamento de dados do Avanço da Ignição

Na mensagem de resposta da solicitação 01 0F os caracteres 5 e 5 representam o valor


da temperatura do ar do coletor de admissão. Como esses dois caracteres são armazenadas em
posições diferentes da matriz RecebeDados1[], deve-se unir os dois caracteres em uma mesma
variável, o processo é o mesmo utilizado na requisição para a obtenção do valor da pressão no
coletor de admissão, mudando apenas a variável final que ao invés de ser Kp é a variável
TpAr, o valor que representa a temperatura do ar do coletor de admissão segundo a norma
SAE J1979(pág.13) é TpAr –40 , ou seja, 55 equivale a 45°. A figura 31 mostra as linhas de
código do programa.

Figura 31: Tratamento de dados da TpAr

Na mensagem de resposta da solicitação 01 11 os caracteres 4 e 3representam o valor


da posição da válvula borboleta . Como esses dois caracteres são armazenadas em posições
diferentes da matriz RecebeDados1[], deve-se unir os dois caracteres em uma mesma
variável, o processo é o mesmo utilizado na requisição para a obtenção do valor da pressão no
coletor de admissão, mudando apenas a variável final que ao invés de ser Kp é a variável Ped,
o valor que representa a posição da válvula borboleta segundo a norma SAE J1979(pág.13) é
(Pedx100)/255 ), ou seja, 43 equivale a 26%. A figura 32 mostra as linhas de código do
programa.

Figura 32: Tratamento de dados da posição da válvula borboleta

49
3.2.2.2.1.3 Códigos de falha DTC.

Nesta parte é enviada para ECU a mensagens de requisição dos códigos de erro, a
tabela 7 apresenta a mensagem enviada e a lida pelo microcontrolador durante um teste.
Tabela 7: Exemplo de Requisição de códigos de falha

Mensagem Resposta
03 43 02 01 01 13 0000..>

Na mensagem de resposta da solicitação 03, cada intervalo de 4 caracteres representa


um código de falha, assim os caracteres 0201 e 0113 representam 2 códigos de falhas, o
primeiro caractere ira indicar o grupo de sistema e a posição 0 dos dígitos de controle(ver
Tabela 2, Pg.24), onde é necessário identificá-lo, não é necessário fazer nenhum tratamento
com os caracteres subseqüentes somente escrevê-los diretamente na tela do display. A figura
31 mostra o tratamento desta informação, a função ComandoLCD ( int a) a ponta para uma
posição do display e a função EscritaLCD() escreve um determinado caractere naquela
posição. No caso acima os caracteres 0201 correspondem ao DTC P0201 e os caracteres 0113
correspondem ao DTC P0113.

Figura 33: Tratamento dos dados do DTC

50
3.2.2.2.14 Apagar DTC

Nesta fase é enviada para ECU as mensagens para apagar a memória dos códigos de
falhas da ECU.
Tabela 8: Requisição para apagar memória

Mensagem Resposta
04 44..>

Na mensagem de resposta da solicitação 04, a resposta da unidade é somente 44 que


confirma que a unidade foi apagada, desta forma, após o envio da mensagem espera-se que
esta seja confirmada com o retorno dos caracteres 44.Caso isso aconteça, será escrito no LCD
a palavra OK e caso não aconteça a palavra NO . A figura.32.apresenta as linhas de código
que desempenham essa função.

Figura 34:Função apagar código de falha

51
4. ANÁLISE DOS RESULTADOS

Para a analise dos resultados testou-se todas as funções da ferramenta de diagnóstico


automotivo no veiculo VW Polo, este veículo já possuía um código de falha conhecido o
P0201, que indica falha de mau funcionamento no circuito da válvula injetora do cilindro 1. O
objetivo para a realização dos testes é identificar a funcionalidade e as limitações do
equipamento.
As seguintes funções foram testadas:
-Leitura dos parâmetros; rotação do motor, avanço de ignição, pressão no coletor de
admissão, temperatura do ar, velocidade do veiculo e posição da válvula borboleta.
-Identificação de quantos códigos de falhas o veículo possui.
-Identificação de dois códigos de falhas.
-Apagar a memória dos códigos de falhas da unidade eletrônica do veículo.

4.1 Simulação.

Para comprovar que a ferramenta de diagnóstico automotivo estava funcionando como


o pretendido, antes de testá-la no veículo VW Polo, foram simuladas as respostas esperadas
através do Siow (Serial Monitor Input/Output Windows), que é um software instalado no PC
para o envio e recebimento de dados através da porta serial, no qual este simulava o veículo.
Elaborou-se uma tabela com respostas baseadas em cada mensagem enviada pela ferramenta
de diagnóstico automotivo e quais eram os valores que esperavam ser visualizados no display.
Tabela 9: Simulação da Ferramenta de Diagnóstico Automotivo

Ferramenta de Diagnóstico Siow (Simulação)


Valor esperado no display
Mensagem Resposta
0101. 41 01 02 00 00 00 ..> 2 DTC
010B. 41 01 5B ..> 91 [KPa]
010C. 41 01 02 1A F8 ..> 1726 [RPM[
010D. 41 01 5F ..> 95 [Km/h]
010E. 41 01 A0 00 00 00 ..> 16[°]
010F. 41 0F 55 ..> 45 [C°]
0111. 41 01 AE ..> 68[%]
03. 43 01 00 00 22 00 00 ..> P0100 e P0022

52
04. 44 ..> OK

Com a tabela pronta iniciou-se a simulação seguindo as etapas:


1. Conectar a placa de experiência McLab2 com um computador para a realização
da comunicação serial RS232.
2. Abrir o Software Siow e o configurar para realizar a comunicação serial a 9600
bits por segundo.
3. Ligar a placa de experiências e começar a receber as mensagens.
4. Para cada mensagem recebida utilizar como resposta os valores da tabela 9.
5. Comparar os resultados.

Durante está simulação todos os valores esperados foram obtidos com sucesso
mostrando que a ferramenta de diagnóstico cumpre quase todos os requisitos, pois com a
simulação não é possível testar a função de apagar a memória de códigos de falhas da unidade
de controle do motor.

4.2 Testes no Veículo

Após a simulação fez se um novo teste das funções da ferramenta de diagnóstico


automotivo diretamente no veículo.
Através do conector OBDII do veículo conectamos a ferramenta de diagnóstico
automotivo e começamos o teste.
Seguimos as seguintes etapas:
1. Conectar a ferramenta de diagnóstico automotivo no veículo através do
conector OBDII.
2. Ligar a ignição do veículo e dar a partida no motor.
3. Ligar a ferramenta de diagnóstico automotivo.
4. Iniciar a sessão de leitura de parâmetros.
5. Acelerar o veículo de forma que altere a rotação do motor e verificar os
seguintes parâmetros:
 Comparar a rotação do motor visualizada no display com a rotação do
motor mostrada no tacômetro do painel de instrumentos do veículo;

53
 Observar se ao apertar o acelerador do veículo até o seu fim o valor da
posição da válvula borboleta visualizada no display mostra 100%;
 Observar que conforme a rotação aumenta ocorrem alterações no valor
do avanço da ignição visualizado no display;
 Observar que conforme a rotação aumenta a pressão no coletor de
admissão diminui;
 Observar alterações no valor da temperatura do ar;
6. Encerrar a leitura de parâmetros;
7. Iniciar a sessão de códigos de falhas;
8. Ver quantos códigos de falhas a unidade de controle possui, neste caso é para
ela indicar que o veículo possui pelo menos um erro pois sabe-se que o veículo está
com mau funcionamento no circuito da válvula injetora do cilindro 1;
9. Ver os códigos de falha, como dito anteriormente nesta etapa deve ser
visualizado pelo menos o código de falha P0201.
10. Apagar os códigos de falha da unidade eletrônica do veículo.
11. Desligar o veículo.
12. Desligar a ferramenta de diagnóstico automotivo
13. Ligar o veículo.
14. Ligar a ferramenta de diagnóstico automotivo
15. Iniciar a sessão de códigos de falhas, nesta etapa o veículo deve apresentar zero
códigos de falhas, pois a memória de códigos de falhas da unidade de controle do
motor foi apagada anteriormente.
16. Desligar o veículo
17. Desligar a ferramenta de diagnóstico
18. Encerrar testes.

4.3 Resultados

De maneira geral todos os valores visualizados nos parâmetros de leitura encontram-se


com valores típicos, dentro do normal, os únicos dois parâmetros que se podem comprovar
por meio visual que estão certos são os valores da rotação do motor e da posição da válvula
borboleta, porém como as informações dos parâmetros de leituras que são vistas no display
são as mesmas que a unidade de controle possui, já que é ela que envia estas informações para

54
a ferramenta de diagnóstico automotiva e como através da simulação comprovamos que o
software está funcionando corretamente, todas as informações visualizadas no display estão
corretas.
A visualização da quantidade de códigos de falhas, a visualização dos códigos de
falhas e o processo de apagar os códigos de falhas funcionaram todos como o pretendido.
O funcionamento da ferramenta de diagnóstico na sessão de parâmetros de leituras
apresentou certa lentidão na atualização dos valores, devido à seleção da velocidade de
transmissão baixa de 9600 bits por segundo.
Pode se apenas visualizar 2 códigos de falhas.
Após apagar a memória do código de falhas da unidade eletrônica é necessário
desligar o veículo e a ferramenta de diagnóstico automotivo e religá-los para que a ferramenta
faça a leitura da quantidade de códigos de falhas, pois ela só faz isso quando ela esta
inicializando, o ideal seria que não fosse preciso realizar este processo para atualizar a
informação da quantidade de códigos de falhas que a unidade de controle do motor possui.
Houve a tentativa de utilizar a ferramenta de diagnóstico automotivo em um veículo
da fabricante FORD, um Fiesta 2008, a tentativa não houve êxito, pois o veículo não utiliza
somente a norma SAEJ1979 na camada de aplicação, ele utiliza a norma SAE J2190 em
conjunto com a norma SAE J1979.

4.3 Sessão de Diagnóstico

As Figuras listadas abaixo apresentam as interfaces do usuário da ferramenta de


diagnóstico automotivo, durante a execução de uma sessão de diagnósticos.

Figura 35: Tela Inicial

A figura 35 mostra a interface da tela inicial, onde o programa encontra-se em fase de


inicialização.

55
Figura 36 : Tela Principal

A figura 36 mostra a interface da tela principal, após inicialização, onde encontram-se


dispostos as funções do processo de diagnose:
- Parâmetros
- DTC
Para realizar a escolha do próximo passo, o usuário deve pressionar o:
- Botão S1 – RECUA CURSOR
- Botão S2 – ENTRA NA FUNÇÃO ESPECÍFICA
- Botão S3 – SAI DA FUNÇÃO ESPECÍFICA
- Botão S4 – AVANÇA CURSOR

4.3.1 Parâmetros de Leitura

Estas telas (figuras 37 e 38), disponibilizarão para o usuário 6 parâmetros de leitura


diferentes, sendo eles a rotação do motor, o avanço da ignição, a temperatura do ar, a pressão
no coletor de admissão, a velocidade do veículo e a posição da válvula borboleta.

Figura 37 : Parâmetros DTC1

Figura 38 : Parâmetros DTC2

4.3.2 Leitura dos DTC`s

Esta tela irá disponibilizar para o usuário a leitura dos códigos de falha.

56
Esta tela (figura 39), por exemplo, informa que o veículo não possui códigos de falha.

Figura 39: Número de DTC`s

Esta tela (figura 40), por exemplo, informa ao usuário que o veículo possui 2 códigos

de falha.

Figura 40: Número DTC`s

Esta tela (figura 41) informa ao usuário a identificação do código de falha.

Figura 41: Identificação DTC`s

Esta tela (figura 42) apaga os códigos de falha.

Figura 42: Apagar DTC`s

57
5. CONCLUSÃO

Todo o processo, desde a pesquisa inicial até o termino, foi muito instrutivo e além de
consolidar pontos da tecnologia aprendidos na FATEC, permitiu visualizar como é
organizado um projeto, seu desenvolvimento e nesse caso como se trabalha em grupo para
atingir um objetivo comum.
Pode-se dizer que, como é seu objetivo, o projeto de formatura mostra a consolidação
dos integrantes desse grupo como tecnólogos, capazes de, partindo de uma idéia, traçarem
uma projeto e, organizadamente, chegarem a uma conclusão satisfatória, nesse caso um
projeto funcional.
De maneira geral todas as características que motivaram o projeto e que foram citadas
nos objetivos desta monografia foram alcançadas com sucesso. Tanto a leitura das mensagens
de falhas quanto o monitoramento dos parâmetros do veículo durante o seu funcionamento
foram realizados de maneira extremamente satisfatória.

5.1 Propostas Futuras

Neste projeto foram realizadas as leituras dos parâmetros de rotação do motor, de


avanço da ignição, da temperatura do ar, da pressão no coletor de admissão, da velocidade do
veículo e da posição da válvula borboleta, além da leitura dos códigos de falhas (limitado a 3
falhas por vez). Deixam-se como propostas futuras, o aprimoramento do software para leitura
de um maior número de parâmetros, a ampliação das quantidades de falhas a serem lidas, a
migração do software para uma base PC (como por exemplo, LabView), devido a limitação do
hardware, a utilização de um módulo XBee para comunicação sem fio e a adaptação de um
cartão de memória SD para o armazenamento de dados para a futuras análises.

58
6. REFERÊNCIAS

ANDREATINI, Sergio M.;A Diagnose Auxiliando o Motorista; São Paulo; 2003.

BELO, Valdeci Pereira; Sistema para Diagnóstico Automático de Falhas em Veículos


Automotores OBD-2, Dissertação, UFMG, Belo Horizonte, 2003.

CERQUEIRA, Ademar Dutra; BEZERRA, Fernando Venezian; ZAMBONI, Guilherme;


EDSON, Thomas; Sistema de Diagnose para Veículos que utiliza os protocolos ISO 9141-
2 e ISO 14230-4 através de uma plataforma em Labview; Santo André; 2009.

Curso de Eletrônica Automotiva da Fatec Santo André; 2010.

Datasheet: ELM327 DSD; “ELM327 OBD to RS232 interpreter”; disponível em:


http://www.elmelctronics.com/elm327.pdf. Acesso em 15 out. 2010, 09h35m45.

Datasheet: FT232BL; “FT232BL/BQ USB UART IC Datasheet Version 2.1”; disponível


em: www.ftdichip.com/Documents/datasheets.htm. Acesso em 10 fev. 2011, 15h09m24.

DINIZ, Ivando; COLÓN, Diogo; SILVA, Bruno, AGUIAR, Felipe, Cássio; SILVA, Cirilo;
PALÁCIOS Silvio; Scanner Automotivo Wireless; Brasil; 2009.

GUIMARÃES, Alexandre de Almeida; Definição dos Principais Conceitos de Diagnose,


CAN e Tipos de Diagnose Conceituação BÁSICA; São Paulo; 2003.

GUIMARÃES, Alexandre de Almeida; Eletrônica Embarcada Automotiva, 1 edição,


Brasil, Editora Érica, 2007.

GUIMARÃES, Alexandre de Almeida; Eletrônica Embarcada Automotiva, 1 edição,


Brasil, Editora Érica, 2007.

GUIMARÃES, Alexandre; FILHO, Ângelo; Silva, SILVA, Carlos, CAMPOS, Cássio;


SILVA, Cirilo; PALÁCIOS Silvio; Diagnose Veicular – Principais Padrões e Normas
disponiveis; São Paulo; 2003.

59
HODEL, Kleber Nogueira; Notas de Aula da Disciplina de Redes de Comunicação
Veicular Ministrada ao Curso de Eletrônica Automotiva da Fatec Santo André; 2009.

International Organization for Standardization, ISO 15031-5:2006 Road vehicles


Communication between vehicle and external equipment for emissions-related
diagnostics -Part 5: Emissions-related diagnostic services. ISO, 2006.

International Organization for Standardization. ISO 14230-2 Keyword protocol 2000 Part 2:
Data link layer. ISO, 1996.

International Organization for Standardization. ISO 14230-3 - Road Vehicles – Diagnostic


systems - Keyword Protocol 2000 - Draft Part 3: Implementation. ISO, 1996.

International Organization for Standardization. ISO 14230-4 - Road Vehicles – Diagnostic


systems - Keyword Protocol 2000 - Part 4: Requirements For Emission related Systems.
ISO, 1997.

International Organization for Standardization. ISO 7498 - Open Systems Interconnection.


ISO.

International Organization for Standardization. ISO 9141-2 - Road vehicles – Diagnostic


systems - CARB requirements for interchange of digital information. ISO, 1994.Society
of Automotive Engineers. SAE J1850 - Class B Data Communication Network Interface.
SAE.

International Organization for Standardization. ISO/DIS 14230-1 - Road Vehicles -


Diagnostic systems - Keyword Protocol 2000 - Part 1: Physical Layer. ISO, 1995.

JUNIOR, Orlando Salvo; Notas de Aula da Disciplina de Diagnose Veicular Ministrada


ao

Microchip; Introduction to MPLAB IDE Web Seminar, MPLAB Integrated Development


Environment (IDE), 2010

Resolução CONAMA n° 315, de 29 de outubro de 2002 – CONAMA (Conselho Nacional do


Meio Ambiente)

Resolução CONAMA n° 354, de 13 de dezembro de 2004 – CONAMA (Conselho Nacional


do Meio Ambiente)

60
Society of Automotive Engineers. SAE J1939 - OBD Communications Compliance Test
Cases for Heavy Duty Components and Vehicles. SAE, 2009 .

Society of Automotive Engineers. SAE J1979 - E/E Diagnostic Test Modes. SAE, 1998.

Society of Automotive Engineers. SAE J2012 - Recommended Format and Messages for
Diagnostic Trouble Codes. SAE.

SOUZA, David Jose & LAVINIA; Nicolás Cesar; Conectando o PIC: Recursos
Avançados; Editora Érica, Brasil, 2003.

TOSI, Enzo Lorenzon; GALVÃO, Erick Bruno Santos; LIMA, Pedro Camargo;
Desenvolvimento de um Datalogger para aplicações Automotivas, Dissertação, USP, São
Paulo, 2008.

61
ANEXO

ANEXO A – Código do Programa.

ANEXO B – Datasheet ELM 327 – Comando AT.

ANEXO C – Lista com os DTC`s.

62
ANEXO A – Código do Programa.
.
////////////////////////////////////////////////////////////////////////////////
// TCC - Trabalho de Conclusão do Curso //
////////////////////////////////////////////////////////////////////////////////

/* Nome do projeto/Modulo: CarScanner LT v2.0 */


/* HARDWARE : PIC16f877 */
/* COMP : PCW C Compiler */
/* AMBIENTE : MPLAB IDE V8.20 */
/* AUTORES : LUIZ RICARDO TRAJANO DA SILVA */
/* : TIAGO SANTOS DE ARAÚJO */
/* SEMESTRE : 6° */
/* DATA : 17/08/2010 */
/* REVISÕES : TRABALHO FINAL */
/* Data : 09/12/2010 */
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// # Diretivas //
////////////////////////////////////////////////////////////////////////////////

#include "16f877a.h" // Definições do Microcontrolador


#include "stdio.h" // Habilita I/O
#fuses XT, NOPROTECT, NOWDT, NOLVP
#use delay (clock=4000000) // Frequencia do Operação
#use rs232 (baud = 9600, xmit = pin_c6, rcv = pin_c7) // RS-232

////////////////////////////////////////////////////////////////////////////////
// Variaveis Globais //
////////////////////////////////////////////////////////////////////////////////

//Proposito: DECLARAR E INICILIAZAR AS VARIAVEIS DO PROGRAMA //

////////////////////////////////////////////////////////////////////////////////

short int Flag1 = 0,


Flag2=0,
Flag3=0,
Flag4=0,
Flag5=0,
Flag0=0,
x=0,
Trava=0;
signed int EstadoA=0;
63
int RecebeDados1[16],
Dadoa=0,
Dadob=0,
Enter=0,
Rp,
QTD,
DTC1,
EstadoB =0;
char EnviaMensagem[5],
String1[13] = {'I','N','I','C','I','A','L','I','Z','A','N','D','O'},
String2[10] = {'P','A','R','A','M','E','T','R','O','S'},
String3[3] = {'D','T','C'},
String4[15] = {'C','A','R','S','C','A','N','N','E','R','
','V','2','.','0'},
String5[14] = {'V','E','I','C','U','L','O',' ','P','O','S','S','U','I'},
a=0,
c=0,
i=0,
d=0;
long int At=0,
Dadoc=0,
Dadod=0,
Rpm=0,
TpAr=0,
Ign=0,
Kp=0,
Km=0,
Ped = 0,
DTCQ,
Debouncing = 0,
Debouncing1 = 0,
Debouncing2 = 0,
Debouncing3 = 0;
////////////////////////////////////////////////////////////////////////////////
// Prototipagem de Funções //
////////////////////////////////////////////////////////////////////////////////

/* Proposito: DECLARAÇÃO DAS FUNÇÕES */

////////////////////////////////////////////////////////////////////////////////
void Interrupcao(void);
void InitHw(void);
void InitVetores(void);
void Envia(char a, char b, char c, char d, char e, int f);
void Ascii(int a);
void Rotacao(void);
void RotacaoLcd(void);
void Temperatura(void);
void TemperaturaLcd(void);

64
void Ignicao(void);
void IgnicaoLcd(void);
void Pressao(void);
void PressaoLcd(void);
void Velocidade(void);
void VelocidadeLCD(void);
void Borboleta(void);
void BorboletaLCD(void);
void Controle(void);
void RecebeMask(char u, char w, char y, char z);
void Tela1(void);
void TelaP1(void);
void TelaP2(void);
void TelaP3(void);
void TelaD1(void);
void TelaD2(void);
void TelaD3(void);
void main(void);
void codigo1(void);
void codigo2(void);
void codigo3(void);
void main(void);
////////////////////////////////////////////////////////////////////////////////
// Interrupção do Timer 0 //
////////////////////////////////////////////////////////////////////////////////

/* Proposito: TRATAMENTO DA INTERRUPÇÃO DO TIMER 0 */

////////////////////////////////////////////////////////////////////////////////

#int_timer0
void Interrupcao(void)
{
set_timer0(131+get_timer0());

if(Debouncing>0)
{
Debouncing--; // Decremento do Debouncing Botão S1.
}
if(Debouncing1>0)
{
Debouncing1--; // Decremento do Debouncing Botão S4.
}
if(Debouncing2>0)
{
Debouncing2--; // Decremento do Debouncing Botão S2.
}
if(Debouncing3>0)

65
{
Debouncing3--; // Decremento do Debouncing Botão S3.
}
}

////////////////////////////////////////////////////////////////////////////////

/* NOME : INICIALIZAÇÃO DO HARDWARE */

////////////////////////////////////////////////////////////////////////////////

void InitHw(void)
{
enable_interrupts(global); // Habilita Interrupção Externa.
enable_interrupts(int_timer0);
setup_ccp2 (CCP_PWM); // Seleciona RC1 como Saída com PWM.
setup_ccp1 (CCP_PWM); // Seleciona RC2 como Saída com PWM.
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8); // Utilizado para gerar.
set_tris_c(0xd1);
set_timer0(131); // Set o timer 0 (131)
}

////////////////////////////////////////////////////////////////////////////////

/* NOME : INICIALIZAÇÃO DOS VETORES */

////////////////////////////////////////////////////////////////////////////////

void InitVetores(void)
{
for(i=0;i<5;i++)
{
EnviaMensagem[i]=0;
}
for(i=0;i<16;i++)
{
RecebeDados1[i]=0;
}
}

////////////////////////////////////////////////////////////////////////////////
// Função Comando //
////////////////////////////////////////////////////////////////////////////////

void comando()
66
{
output_low(pin_e1);
output_low(pin_e0);
output_high(pin_e1);
delay_us(30);
output_low (pin_e1);
}

////////////////////////////////////////////////////////////////////////////////
// Função Escrita //
////////////////////////////////////////////////////////////////////////////////

void escrita()
{
output_high(pin_e0);
output_low(pin_e1);
output_high(pin_e1);
delay_us(30);
output_low(pin_e1);
delay_us(30);
}

////////////////////////////////////////////////////////////////////////////////

/* NOME : FUNÇÃO LCD */


/* PROPOSITO : ESCRITA - COMANDO - LIMPA */

////////////////////////////////////////////////////////////////////////////////

void EscritaLCD(int a)
{
output_d(a);
escrita();
delay_us(40);
}

void ComandoLCD(int a)
{
output_d(a);
comando();
delay_us(40);
}

void LimpaLcd(void)
{
output_d(0X01);
67
comando();
delay_ms(5);
}

////////////////////////////////////////////////////////////////////////////////
// Preparação //
////////////////////////////////////////////////////////////////////////////////

void Preparacao()
{
delay_ms(15); // Aguarda 15 ms.
output_d(0X30); // Envia o comando para do Display.
comando();
delay_ms(4); // Aguarda 4 ms.
output_d(0X30); // Envia o comando novamente para o Display.
comando();
delay_us(100);
output_d(0X30); // Envia o comando novamente para o Display.
comando();
delay_us(40);
output_d(0X38); // Envia o comando novamente para o Display.
comando();
delay_us(40);
output_d(0X01); // Envia o comando novamente para o Display.
comando();
delay_us(1800);
output_d(0X0C); // Envia o comando novamente para o Display.
comando();
delay_us(40);
output_d(0X06); // Envia o comando novamente para o Display.
comando();
delay_us(40);
}
////////////////////////////////////////////////////////////////////////////////
// # ENVIA //
////////////////////////////////////////////////////////////////////////////////

void Envia(char a, char b, char c, char d, char e, int f)


{
InitVetores();
EnviaMensagem[0] = a ;
EnviaMensagem[1] = b ;
EnviaMensagem[2] = c ;
EnviaMensagem[3] = d ;
EnviaMensagem[4] = e ;
for(i=0;i<f;i++)
{
printf("%c", EnviaMensagem[i]);

68
}
}

////////////////////////////////////////////////////////////////////////////////
// # ASCII //
////////////////////////////////////////////////////////////////////////////////

void Ascii(int a)
{
switch (a)
{
case 0x30 : Rp = 0;break;
case 0x31 : Rp = 1;break;
case 0x32 : Rp = 2;break;
case 0x33 : Rp = 3;break;
case 0x34 : Rp = 4;break;
case 0x35 : Rp = 5;break;
case 0x36 : Rp = 6;break;
case 0x37 : Rp = 7;break;
case 0x38 : Rp = 8;break;
case 0x39 : Rp = 9;break;
case 0x41 : Rp = 10;break;
case 0x42 : Rp = 11;break;
case 0x43 : Rp = 12;break;
case 0x44 : Rp = 13;break;
case 0x45 : Rp = 14;break;
case 0x46 : Rp = 15;break;
}
}

////////////////////////////////////////////////////////////////////////////////
// # ROTAÇÃO //
////////////////////////////////////////////////////////////////////////////////

void Rotacao(void)
{

Envia('0', '1', '0','C','\r',5);


RecebeMask(0x04,0x01,0x00,0x0C);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
69
Dadoa = Dadoa << 4;
Dadoc = Dadoa | Dadob;
Ascii(RecebeDados1[6]);
Dadoa = Rp;
Ascii(RecebeDados1[7]);
Dadob = Rp;
Dadoa = Dadoa << 4;
Dadod = Dadoa | Dadob;
Dadoc =Dadoc << 8;
Rpm = Dadoc | Dadod;
Rpm = (Rpm/4);

void RotacaoLcd(void)
{

int Mil, Cent, Dez, Uni;

Mil = Rpm/1000;
Cent = (Rpm%1000)/100;
Dez = ((Rpm%1000)%100)/10;
Uni = ((Rpm%1000)%100)%10;
EscritaLCD(0x30 + Mil);
EscritaLCD(0x30 + Cent);
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
}

void Temperatura(void)
{

Envia('0', '1', '0','F','\r',5);


RecebeMask(0x34,0x31,0x30,0x46);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
Dadoa = Dadoa << 4;
TpAr = Dadoa | Dadob;
TpAr = TpAr - 40;

70
void TemperaturaLcd(void)
{
int Cent, Dez, Uni;
Dez = (TpAr%100)/10;
Uni = (TpAr%100)%10;
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
EscritaLCD('C');
}

void Ignicao(void)
{
Envia('0', '1', '0','E','\r',5);
RecebeMask(0x36,0x32,0x30,0x30);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
Dadoa = Dadoa << 4;
Ign = Dadoa | Dadob;
Ign = (Ign/2)-64;

}
void IgnicaoLcd(void)
{
int Cent, Dez, Uni;
Dez = (Ign%100)/10;
Uni = (Ign%100)%10;
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
}
void Pressao(void)
{

Envia('0', '1', '0','B','\r',5);


RecebeMask(0x36,0x32,0x30,0x30);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
Dadoa = Dadoa << 4;
Kp = Dadoa | Dadob;
}
void PressaoLcd(void)
{

71
int Cent, Dez, Uni;
Cent = Kp/100;
Dez = (Kp%100)/10;
Uni = (Kp%100)%10;
EscritaLCD(0x30 + Cent);
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
}
void Velocidade(void)
{
Envia('0', '1', '0','D','\r',5);
RecebeMask(0x36,0x32,0x30,0x30);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
Dadoa = Dadoa << 4;
Km = Dadoa | Dadob;
}

void VelocidadeLCD(void)
{
int Cent, Dez, Uni;
Cent = Km/100;
Dez = (Km%100)/10;
Uni = (Km%100)%10;
EscritaLCD(0x30 + Cent);
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
}
void Borboleta(void)
{
Envia('0', '1', '1','1','\r',5);
RecebeMask(0x36,0x32,0x30,0x30);

Ascii(RecebeDados1[4]);
Dadoa = Rp;
Ascii(RecebeDados1[5]);
Dadob = Rp;
Dadoa = Dadoa << 4;
Ped = Dadoa | Dadob;
Ped = (Ped*100)/255;
}

void BorboletaLCD(void)
{
int Cent, Dez, Uni;

72
Cent = Ped/100;
Dez = (Ped%100)/10;
Uni = (Ped%100)%10;
EscritaLCD(0x30 + Cent);
EscritaLCD(0x30 + Dez);
EscritaLCD(0x30 + Uni);
}
void falha(void)
{

QTD = RecebeDados1[5];

}
void Codigo1(void)
{

DTC1 = RecebeDados1[2];
if(DTC1 == 0x30)
{
DTC1 = 'P';

}
if(DTC1 == 0x34)
{
DTC1 = 'C';

}
if(DTC1 == 0x43)
{
DTC1 = 'B';

}
if(DTC1 == 0x38)
{
DTC1 = 'U';

EscritaLCD(DTC1);
EscritaLCD(0x30);
for(i=3;i<6;i++)
{
EscritaLCD(RecebeDados1[i]);
}
}
void Codigo2(void)
73
{

DTC1 = RecebeDados1[6];
if(DTC1 == 0x30)
{
DTC1 = 'P';

}
if(DTC1 == 0x34)
{
DTC1 = 'C';

}
if(DTC1 == 0x43)
{
DTC1 = 'B';

}
if(DTC1 == 0x38)
{
DTC1 = 'U';

EscritaLCD(DTC1);
EscritaLCD(0x30);
for(i=7;i<10;i++)
{
EscritaLCD(RecebeDados1[i]);
}
}
void Codigo3(void)
{

DTC1 = RecebeDados1[10];
if(DTC1 == 0x30)
{
DTC1 = 'P';

}
if(DTC1 == 0x34)
{
DTC1 = 'C';

74
if(DTC1 == 0x43)
{
DTC1 = 'B';

}
if(DTC1 == 0x38)
{
DTC1 = 'U';

EscritaLCD(DTC1);
EscritaLCD(0x30);
for(i=11;i<14;i++)
{
EscritaLCD(RecebeDados1[i]);
}
}
////////////////////////////////////////////////////////////////////////////////
// # Controle //
////////////////////////////////////////////////////////////////////////////////

void Controle(void)
{
if((!input(pin_b0)) && (!Flag1) && (!Debouncing))
{
Flag1 = 1;
Debouncing = 500;
}
if((Flag1) && (!Debouncing))
{
EstadoA--;
LimpaLCD();
Flag1 = 0;
Debouncing = 0;
}
if((!input(pin_b3)) && (!Flag2) && (!Debouncing1))
{
Flag2 = 1;
Debouncing1 = 500;
}
if((Flag2) && (!Debouncing1))
{
EstadoA ++;
LimpaLCD();
Flag2 = 0;
Debouncing1 = 0;
}

75
if((!input(pin_b1)) && (!Flag3) && (!Debouncing2))
{
Flag3 = 1;
Debouncing2 = 500;

}
if((Flag3) && (!Debouncing2))
{
Enter =1;
EstadoA = 0;
Flag3 = 0;
Debouncing2 = 0;
LimpaLCD();
}
if((!input(pin_b2)) && (!Flag4) && (!Debouncing3))
{
Flag4 = 1;
Debouncing3 = 500;
}
if((Flag4) && (!Debouncing3))
{
Enter =0;
EstadoA=0;
LimpaLCD();
Flag4 = 0;
Debouncing3 = 0;
}
}
////////////////////////////////////////////////////////////////////////////////
// # RECEBE //
////////////////////////////////////////////////////////////////////////////////

void RecebeMask(char u, char w, char y, char z)


{
short int M1=0,M2=0,M3=0,M4=0;
int b = 0;
char dado = 0;
x=0;

while(x == 0)
{

Flag0 = Kbhit();
if(Flag0==1)
{
dado = getc();

76
Flag0=0;
if(dado==0x3E)
{
if(RecebeDados1[0]== u)
{
M1=1;
}
if(RecebeDados1[1]== w)
{
M2=1;
}
if(RecebeDados1[2]== y)
{
M3=1;
}
if(RecebeDados1[3]== z)
{
M4=1;
}
if(M1==1 && M2==1 && M3==1 && M4==1)
{
At ++;
}
else
{

}
x=1;
}
if(dado != 0x20)
{
RecebeDados1[b]=dado;
b++;
}

void Tela1(void)
{
ComandoLCD(0x80);
for(i=0; i<10; i++)
{

77
EscritaLCD(String2[i]); // Envia o comando novamente para o Display.
}
ComandoLCD(0xC0);
for(i=0; i<3; i++)
{
EscritaLCD(String3[i]); // Envia o comando novamente para o Display.
}
}
void TelaP1(void)
{
ComandoLCD(0x80);
EscritaLCD('R');
EscritaLCD('P');
EscritaLCD('M');
ComandoLCD(0x89);
EscritaLCD('A');
EscritaLCD('i');
EscritaLCD('g');
ComandoLCD(0xC0);
EscritaLCD('T');
EscritaLCD('p');
EscritaLCD('A');
EscritaLCD('r');
ComandoLCD(0xC9);
EscritaLCD('k');
EscritaLCD('P');
EscritaLCD('a');

void TelaP2(void)
{
ComandoLCD(0x80);
EscritaLCD('T');
EscritaLCD('p');
EscritaLCD('A');
EscritaLCD('r');
ComandoLCD(0x89);
EscritaLCD('k');
EscritaLCD('P');
EscritaLCD('a');
ComandoLCD(0xC0);
EscritaLCD('K');
EscritaLCD('m');
EscritaLCD('/');
EscritaLCD('h');
ComandoLCD(0xC9);
EscritaLCD('%');
}

78
void TelaP3(void)
{
ComandoLCD(0x80);
EscritaLCD('K');
EscritaLCD('m');
EscritaLCD('/');
EscritaLCD('h');
ComandoLCD(0x89);
EscritaLCD('%');
ComandoLCD(0xC0);
EscritaLCD('R');
EscritaLCD('P');
EscritaLCD('M');
ComandoLCD(0xC9);
EscritaLCD('I');
EscritaLCD('g');
EscritaLCD('n');
}

void TelaD1(void)
{

ComandoLCD(0x80);
for(i=0; i<14; i++)
{
EscritaLCD(String5[i]);
}

ComandoLCD(0xC7);
for(i=0; i<3; i++)
{
EscritaLCD(String3[i]);
}

ComandoLCD(0xC5);
EscritaLCD(QTD);
}

void TelaD2(void)
{

ComandoLCD(0x85);
Codigo1();
ComandoLCD(0xC5);
Codigo2();

79
}
void TelaD3(void)
{
if(QTD >= 0x33)
{
ComandoLCD(0x85);
Codigo3();
}
ComandoLCD(0xC0);
EscritaLCD('A');
EscritaLCD('P');
EscritaLCD('A');
EscritaLCD('G');
EscritaLCD('A');
EscritaLCD('R');
EscritaLCD('?');

}
////////////////////////////////////////////////////////////////////////////////
// # Principal //
////////////////////////////////////////////////////////////////////////////////

void main(void)
{
InitHw();
Preparacao(); //Inicializa o display LCD.
while(true)
{

Controle();
if(Enter ==0)
{
if(EstadoA>2)
{
EstadoA = 1;
}
if(EstadoA<0)
{
EstadoA = 2;
}

switch(EstadoA)
80
{
case 0: if(Trava == 0)
{

ComandoLCD(0x81);
for(i=0; i<13; i++)
{
EscritaLCD(String1[i]); // Envia o comando
novamente para o Display.
}
ComandoLCD(0xC0);
for(i=0; i<15; i++)
{
EscritaLCD(String4[i]); // Envia o comando
novamente para o Display.
}
Envia('A','T','Z',0X0D,'0',4);
RecebeMask(0X00,0X00,0X00,0X00);

Envia('A','T','E','0',0X0D,5);
RecebeMask(0X00,0X00,0X00,0X00);

Envia('A','T','L','0',0X0D,5);
RecebeMask(0X00,0X00,0X00,0X00);

Envia('0','1','0','1',0X0D,5);
RecebeMask(0X34,0X31,0X30,0X31);
falha();

Trava = 1;

}
LimpaLCD();
EstadoA=2;
break;
case 1: Tela1();
ComandoLCD(0xCF);
EscritaLCD('<'); // Envia o comando novamente para o
Display.
EstadoB=2;
break;
case 2: Tela1();
ComandoLCD(0x8F);
EscritaLCD('<'); // Envia o comando novamente para o
Display.

81
EstadoB=1;
break;

}
}
if(Enter == 1 && EstadoB==1)
{
if(EstadoA>5)
{
EstadoA=0;
}
if(EstadoA<0)
{
EstadoA=5;
}
switch(EstadoA)
{
case 0:
ComandoLCD(0x8F);
EscritaLCD('<');
TelaP1();
if(EstadoA==0)
{
Rotacao();
ComandoLCD(0x83);
RotacaoLCD();
}
if(EstadoA==0)
{
Temperatura();
ComandoLCD(0xC4);
TemperaturaLCD();
}
if(EstadoA==0)
{
Ignicao();
ComandoLCD(0x8C);
IgnicaoLCD();
}

if(EstadoA==0)
{
Pressao();
ComandoLCD(0xCC);
PressaoLCD();
}

82
break;

case 1: ComandoLCD(0xCF);
EscritaLCD('<');
TelaP1();
if(EstadoA==1)
{
Rotacao();
ComandoLCD(0x83);
RotacaoLCD();
}
if(EstadoA==1)
{
Ignicao();
ComandoLCD(0x8C);
IgnicaoLCD();
}
if(EstadoA==1)
{
Temperatura();
ComandoLCD(0xC4);
TemperaturaLCD();
}
if(EstadoA==1)
{
Pressao();
ComandoLCD(0xCC);
PressaoLCD();
}
break;

case 2: TelaP2();
ComandoLCD(0x8F);
EscritaLCD('<');
if(EstadoA==2)
{
Temperatura();
ComandoLCD(0x84);
TemperaturaLCD();
}
if(EstadoA==2)
{
Pressao();
ComandoLCD(0x8C);
PressaoLCD();
}
if(EstadoA==2)
{
Velocidade();

83
ComandoLCD(0xC4);
VelocidadeLCD();
}
if(EstadoA==2)
{
Borboleta();
ComandoLCD(0xCA);
BorboletaLCD();
}
break;
case 3: TelaP2();
ComandoLCD(0xCF);
EscritaLCD('<');
if(EstadoA==3)
{
Temperatura();
ComandoLCD(0x84);
TemperaturaLCD();
}
if(EstadoA==3)
{
Pressao();
ComandoLCD(0x8C);
PressaoLCD();
}
if(EstadoA==3)
{
Velocidade();
ComandoLCD(0xC4);
VelocidadeLCD();
}
if(EstadoA==3)
{
Borboleta();
ComandoLCD(0xCA);
BorboletaLCD();
}
break;
case 4: TelaP3();
ComandoLCD(0x8F);
EscritaLCD('<');
if(EstadoA==4)
{
Velocidade();
ComandoLCD(0x84);
VelocidadeLCD();
}
if(EstadoA==4)
{
Borboleta();

84
ComandoLCD(0x8A);
BorboletaLCD();
}
if(EstadoA==4)
{
Rotacao();
ComandoLCD(0xC3);
RotacaoLCD();
}
if(EstadoA==4)
{
Ignicao();
ComandoLCD(0xCC);
IgnicaoLCD();
}
break;
case 5: TelaP3();
ComandoLCD(0xCF);
EscritaLCD('<');
if(EstadoA==5)
{
Velocidade();
ComandoLCD(0x84);
VelocidadeLCD();
}
if(EstadoA==5)
{
Borboleta();
ComandoLCD(0x8A);
BorboletaLCD();
}
if(EstadoA==5)
{
Rotacao();
ComandoLCD(0xC3);
RotacaoLCD();
}
if(EstadoA==5)
{
Ignicao();
ComandoLCD(0xCC);
IgnicaoLCD();
}
break;
}
}
if(Enter ==1 && EstadoB==2)
{
if(EstadoA>5)
{

85
EstadoA=0;
}
if(EstadoA<0)
{
EstadoA=0;
}
switch(EstadoA)
{
case 0: TelaD1();
ComandoLCD(0x8F);
break;

case 1: TelaD1();
ComandoLCD(0xCF);
EscritaLCD('<');
break;
case 2: Envia('0','3','\r','0','0',3);
RecebeMask(0X34,0X33,0X00,0X00);
TelaD2();
ComandoLCD(0x8F);
EscritaLCD('<');
break;
case 3: Envia('0','3','\r','0','0',3);
RecebeMask(0X34,0X33,0X00,0X00);
TelaD2();
ComandoLCD(0xCF);
EscritaLCD('<');
break;
case 4: TelaD3();
ComandoLCD(0x8F);
EscritaLCD('<');
break;
case 5: TelaD3();
ComandoLCD(0xCF);
EscritaLCD('<');
Envia('0','4','\r','0','0',3);
RecebeMask(0X34,0X34,0X00,0X00);

if(RecebeDados1[0] == 0x34 && RecebeDados1[1] == 0x34)


{
LimpaLCD();
EscritaLCD('O');
EscritaLCD('K');
}
else
{
LimpaLCD();
EscritaLCD('N');
EscritaLCD('O');

86
}
delay_ms(1000);
Enter =0;
break;

}
}
}
}

////////////////////////////////////////////////////////////////////////////////
// # FIM //
////////////////////////////////////////////////////////////////////////////////

87
ANEXO B – Datasheet ELM 327 – Comando AT.

88
89
ANEXO C – Lista com os DTC`s
(Fonte: http://www.obd-codes.com/trouble_codes)

Códigos de falha - Powertrain


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 Positions System Performance Bank 1
P0009 Engine Position System Performance Bank 2
P0010 "A" Camshaft Position Actuator Circuit (Bank 1)
P0011 "A" Camshaft Position - Timing Advanced or System Performance (Bank 1)
P0012 "A" Camshaft Position - Timing Over-Retarded (Bank 1)
P0013 "B" Camshaft Position - Actuator Circuit (Bank 1)
P0014 "B" Camshaft Position - Timing Over-Advanced or System Performance (Bank
P0015 "B" Camshaft Position -Timing Over-Retarded (Bank 1) - See Trouble Cod
P0016 Crankshaft Position - Camshaft Position Correlation (Bank 1 Sensor A)
P0017 Crankshaft Position - Camshaft Position Correlation (Bank 1 Sensor B)
P0018 Crankshaft Position - Camshaft Position Correlation (Bank 2 Sensor A)
P0019 Crankshaft Position - Camshaft Position Correlation (Bank 2 Sensor B)
P0020 "A" Camshaft Position Actuator Circuit (Bank 2)
P0021 "A" Camshaft Position - Timing Over-Advanced or System Performance (Bank
P0022 "A" Camshaft Position - Timing Over-Retarded (Bank 2)
P0023 "B" Camshaft Position - Actuator Circuit (Bank 2) - See Trouble Code P0020
P0024 "B" Camshaft Position - Timing Over-Advanced or System Performance (Bank
P0025 "B" Camshaft Position - Timing Over-Retarded (Bank 2) - See Trouble Code
P0026 Intake Valve Control Solenoid Circuit Range/Performance Bank 1
P0027 Exhaust Valve Control solenoid Circuit Range/Performance Bank 1
P0028 Intake valve Control Solenoid Circuit Range/Performance Bank 2
P0029 Exhaust Valve Control Solenoid Circuit Range/Performance Bank 2
P0030 HO2S Heater Control Circuit (Bank 1 Sensor 1)
P0031 HO2S Heater Control Circuit Low (Bank 1 Sensor 1)
P0032 HO2S Heater Control Circuit High (Bank 1 Sensor 1)
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 (Bank 1 Sensor 2)
P0037 HO2S Heater Control Circuit Low (Bank 1 Sensor 2)
P0038 HO2S Heater Control Circuit High (Bank 1 Sensor 2)
P0039 Turbo/Super Charger Bypass Valve Control Circuit Range/Performance
P0040 Upstream Oxygen Sensors Swapped From Bank To Bank
P0041 Downstream Oxygen Sensors Swapped From Bank To Bank
P0042 HO2S Heater Control Circuit (Bank 1 Sensor 3)

90
P0043 HO2S Heater Control Circuit Low (Bank 1 Sensor 3)
P0044 HO2S Heater Control Circuit High (Bank 1 Sensor 3)
P0050 HO2S Heater Control Circuit (Bank 2 Sensor 1)
P0051 HO2S Heater Control Circuit Low (Bank 2 Sensor 1)
P0052 HO2S Heater Control Circuit High (Bank 2 Sensor 1)
P0053 HO2S Heater Resistance (Bank 1, Sensor 1)
P0054 HO2S Heater Resistance (Bank 1, Sensor 2)
P0055 HO2S Heater Resistance (Bank 1, Sensor 3)
P0056 HO2S Heater Control Circuit (Bank 2 Sensor 2)
P0057 HO2S Heater Control Circuit Low (Bank 2 Sensor 2)
P0058 HO2S Heater Control Circuit High (Bank 2 Sensor 2)
P0059 HO2S Heater Resistance (Bank 2, Sensor 1)
P0060 HO2S Heater Resistance (Bank 2, Sensor 2)
P0061 HO2S Heater Resistance (Bank 2, Sensor 3)
P0062 HO2S Heater Control Circuit (Bank 2 Sensor 3)
P0063 HO2S Heater Control Circuit Low (Bank 2 Sensor 3)
P0064 HO2S Heater Control Circuit High (Bank 2 Sensor 3)
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 Input
P0073 Ambient Air Temperature Sensor Circuit High Input
P0074 Ambient Air Temperature Sensor Circuit Intermittent
P0075 Intake Valve Control Solenoid Circuit (Bank 1)
P0076 Intake Valve Control Solenoid Circuit Low (Bank 1)
P0077 Intake Valve Control Solenoid Circuit High (Bank 1)
P0078 Exhaust Valve Control Solenoid Circuit (Bank 1)
P0079 Exhaust Valve Control Solenoid Circuit Low (Bank 1)
P0080 Exhaust Valve Control Solenoid Circuit High (Bank 1)
P0081 Intake valve Control Solenoid Circuit (Bank 2)
P0082 Intake Valve Control Solenoid Circuit Low (Bank 2)
P0083 Intake Valve Control Solenoid Circuit High (Bank 2)
P0084 Exhaust Valve Control Solenoid Circuit (Bank 2)
P0085 Exhaust Valve Control Solenoid Circuit Low (Bank 2)
P0086 Exhaust Valve Control Solenoid Circuit High (Bank 2)
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
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
91
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 Malfunction
P0101 Mass or Volume Air Flow Circuit Range/Performance Problem
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 Malfunction
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 Circuit Malfunction
P0111 Intake Air Temperature Circuit Range/Performance Problem
P0112 Intake Air Temperature Circuit Low Input
P0113 Intake Air Temperature Circuit High Input
P0114 Intake Air Temperature Circuit Intermittent
P0115 Engine Coolant Temperature Circuit Malfunction
P0116 Engine Coolant Temperature Circuit Range/Performance Problem
P0117 Engine Coolant Temperature Circuit Low Input
P0118 Engine Coolant Temperature Circuit High Input
P0119 Engine Coolant Temperature Circuit Intermittent
P0120 Throttle Position Sensor/Switch A Circuit Malfunction
P0121 Throttle Position Sensor/Switch A Circuit Range/Performance Problem
P0122 Throttle Position Sensor/Switch A Circuit Low Input
P0123 Throttle Position Sensor/Switch A Circuit High Input
P0124 Throttle Position Sensor/Switch A Circuit Intermittent
P0125 Insufficient Coolant Temperature for Closed Loop Fuel Control
P0126 Insufficient Coolant Temperature for Stable Operation
P0128 Coolant Thermostat (Coolant Temperature Below Thermostat Regulating ture)
P0130 02 Sensor Circuit Malfunction (Bank I Sensor 1)
P0131 02 Sensor Circuit Low Voltage (Bank I Sensor I)
P0132 02 Sensor Circuit High Voltage (Bank I Sensor 1)
P0133 02 Sensor Circuit Slow Response (Bank 1 Sensor 1)
P0134 02 Sensor Circuit No Activity Detected (Bank I Sensor 1)
P0135 02 Sensor Heater Circuit Malfunction (Bank 1 Sensor 1)
P0136 02 Sensor Circuit Malfunction (Bank I Sensor 2)
P0137 02 Sensor Circuit Low Voltage (Bank I Sensor 2)
P0138 02 Sensor Circuit High Voltage (Bank I Sensor 2)
P0139 02 Sensor Circuit Slow Response (Bank 1 Sensor 2)
P0140 02 Sensor Circuit No Activity Detected (Bank 1 Sensor 2)
P0141 02 Sensor Heater Circuit Malfunction (Bank 1 Sensor 2)
P0142 02 Sensor Circuit Malfunction (Bank I Sensor 3)
P0143 02 Sensor Circuit Low Voltage (Bank I Sensor 3)
P0144 02 Sensor Circuit High Voltage (Bank I Sensor 3)
P0145 02 Sensor Circuit Slow Response (Bank 1 Sensor 3)
P0146 02 Sensor Circuit No Activity Detected (Bank I Sensor 3)
P0147 02 Sensor Heater Circuit Malfunction (Bank I Sensor 3)
92
P0150 02 Sensor Circuit Malfunction (Bank 2 Sensor I)
P0151 02 Sensor Circuit Low Voltage (Bank 2 Sensor I)
P0152 02 Sensor Circuit High Voltage (Bank 2 Sensor 1)
P0153 02 Sensor Circuit Slow Response (Bank 2 Sensor 1)
P0154 02 Sensor Circuit No Activity Detected (Bank 2 Sensor 1)
P0155 02 Sensor Heater Circuit Malfunction (Bank 2 Sensor 1)
P0156 02 Sensor Circuit Malfunction (Bank 2 Sensor 2)
P0157 02 Sensor Circuit Low Voltage (Bank 2 Sensor 2)
P0158 02 Sensor Circuit High Voltage (Bank 2 Sensor 2)
P0159 02 Sensor Circuit Slow Response (Bank 2 Sensor 2)
P0160 02 Sensor Circuit No Activity Detected (Bank 2 Sensor 2)
P0161 02 Sensor Heater Circuit Malfunction (Bank 2 Sensor 2)
P0162 02 Sensor Circuit Malfunction (Bank 2 Sensor 3)
P0163 02 Sensor Circuit Low Voltage (Bank 2 Sensor 3)
P0164 02 Sensor Circuit High Voltage (Bank 2 Sensor 3)
P0165 02 Sensor Circuit Slow Response (Bank 2 Sensor 3)
P0166 02 Sensor Circuit No Activity Detected (Bank 2 Sensor 3)
P0167 02 Sensor Heater Circuit Malfunction (Bank 2 Sensor 3)
P0170 Fuel Trim Malfunction (Bank 1)
P0171 System too Lean (Bank 1)
P0172 System too Rich (Bank 1)
P0173 Fuel Trim Malfunction (Bank 2)
P0174 System too Lean (Bank 2)
P0175 System too Rich (Bank 2)
P0176 Fuel Composition Sensor Circuit Malfunction
P0177 Fuel Composition Sensor Circuit Range/Performance
P0178 Fuel Composition Sensor Circuit Low Input
P0179 Fuel Composition Sensor Circuit High Input
P0180 Fuel Temperature Sensor A Circuit Malfunction
P0181 Fuel Temperature Sensor A Circuit Range/Performance
P0182 Fuel Temperature Sensor A Circuit Low Input
P0183 Fuel Temperature Sensor A Circuit High Input
P0184 Fuel Temperature Sensor A Circuit Intermittent
P0185 Fuel Temperature Sensor B Circuit Malfunction
P0186 Fuel Temperature Sensor B Circuit Range/Performance
P0187 Fuel Temperature Sensor B Circuit Low Input
P0188 Fuel Temperature Sensor B Circuit High Input
P0189 Fuel Temperature Sensor B Circuit Intermittent
P0190 Fuel Rail Pressure Sensor Circuit Malfunction
P0191 Fuel Rail Pressure Sensor Circuit Range/Performance
P0192 Fuel Rail Pressure Sensor Circuit Low Input
P0193 Fuel Rail Pressure Sensor Circuit High Input
P0194 Fuel Rail Pressure Sensor Circuit Intermittent
P0195 Engine Oil Temperature Sensor Malfunction
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 Malfunction
93
P0201 Injector Circuit Malfunction - Cylinder 1
P0202 Injector Circuit Malfunction - Cylinder 2
P0203 Injector Circuit Malfunction - Cylinder 3
P0204 Injector Circuit Malfunction - Cylinder 4
P0205 Injector Circuit Malfunction - Cylinder 5
P0206 Injector Circuit Malfunction - Cylinder 6
P0207 Injector Circuit Malfunction - Cylinder 7
P0208 Injector Circuit Malfunction - Cylinder 8
P0209 Injector Circuit Malfunction - Cylinder 9
P0210 Injector Circuit Malfunction - Cylinder 10
P0211 Injector Circuit Malfunction - Cylinder 11
P0212 Injector Circuit Malfunction - Cylinder 12
P0213 Cold Start Injector 1 Malfunction
P0214 Cold Start Injector 2 Malfunction
P0215 Engine Shutoff Solenoid Malfunction
P0216 Injection Timing Control Circuit Malfunction
P0217 Engine Overtemp Condition
P0218 Transmission Over Temperature Condition
P0219 Engine Overspeed Condition
P0220 Throttle/Petal Position Sensor/Switch B Circuit Malfunction
P0221 Throttle/Petal Position Sensor/Switch B Circuit Range/Performance Problem
P0222 Throttle/Petal Position Sensor/Switch B Circuit Low Input
P0223 Throttle/Petal Position Sensor/Switch B Circuit High Input
P0224 Throttle/Petal Position Sensor/Switch B Circuit Intermittent
P0225 Throttle/Petal Position Sensor/Switch C Circuit Malfunction
P0226 Throttle/Petal Position Sensor/Switch C Circuit Range/Performance Problem
P0227 Throttle/Petal Position Sensor/Switch C Circuit Low Input
P0228 Throttle/Petal Position Sensor/Switch C Circuit High Input
P0229 Throttle/Petal Position Sensor/Switch C Circuit Intermittent
P0230 Fuel Pump Primary Circuit Malfunction
P0231 Fuel Pump Secondary Circuit Low
P0232 Fuel Pump Secondary Circuit High
P0233 Fuel Pump Secondary Circuit Intermittent
P0234 Engine Overboost Condition
P0235 Turbocharger Boost Sensor A Circuit Malfunction
P0236 Turbocharger Boost Sensor A Circuit Range/Performance
P0237 Turbocharger Boost Sensor A Circuit Low
P0238 Turbocharger Boost Sensor A Circuit High
P0239 Turbocharger Boost Sensor B Malfunction
P0240 Turbocharger Boost Sensor B Circuit Range/Performance
P0241 Turbocharger Boost Sensor B Circuit Low
P0242 Turbocharger Boost Sensor B Circuit High
P0243 Turbocharger Wastegate Solenoid A Malfunction
P0244 Turbocharger Wastegate Solenoid A Range/Performance
P0245 Turbocharger Wastegate Solenoid A Low
P0246 Turbocharger Wastegate Solenoid A High
P0247 Turbocharger Wastegate Solenoid B Malfunction
P0248 Turbocharger Wastegate Solenoid B Range/Performance
P0249 Turbocharger Wastegate Solenoid B Low
94
P0250 Turbocharger Wastegate Solenoid B High
P0251 Injection Pump Fuel Metering Control "A" Malfunction (Cam/Rotor/Injector)
P0252 Injection Pump Fuel Metering Control "A" Range/Performance
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" Malfunction (Cam/Rotor/Injector)
P0257 Injection Pump Fuel Metering Control "B" Range/Performance Injector)
P0258 Injection Pump Fuel Metering Control "B" Low (Cam/R
P0259 Injection Pump Fuel Metering Control "B" High (Cam/R
P0260 Injection Pump Fuel Metering Control "B" Intermittent Injector)
P0261 Cylinder I Injector Circuit Low
P0262 Cylinder I Injector Circuit High
P0263 Cylinder I Contribution/Balance Fault
P0264 Cylinder 2 Injector Circuit Low
P0265 Cylinder 2 Injector Circuit High
P0266 Cylinder 2 Contribution/Balance Fault
P0267 Cylinder 3 Injector Circuit Low
P0268 Cylinder 3 Injector Circuit High
P0269 Cylinder 3 Contribution/Balance Fault
P0270 Cylinder 4 Injector Circuit Low
P0271 Cylinder 4 Injector Circuit High
P0272 Cylinder 4 Contribution/Balance Fault
P0273 Cylinder 5 Injector Circuit Low
P0274 Cylinder 5 Injector Circuit High
P0275 Cylinder S Contribution/Balance Fault
P0276 Cylinder 6 Injector Circuit Low
P0277 Cylinder 6 Injector Circuit High
P0278 Cylinder 6 Contribution/Balance Fault
P0279 Cylinder 7 Injector Circuit Low
P0280 Cylinder 7 Injector Circuit High
P0281 Cylinder 7 Contribution/Balance Fault
P0282 Cylinder 8 Injector Circuit Low
P0283 Cylinder 8 Injector Circuit High
P0284 Cylinder 8 Contribution/Balance Fault
P0285 Cylinder 9 Injector Circuit Low
P0286 Cylinder 9 Injector Circuit High
P0287 Cylinder 9 Contribution/Balance Fault
P0288 Cylinder 10 Injector Circuit Low
P0289 Cylinder 10 Injector Circuit High
P0290 Cylinder 10 Contribution/Balance Fault
P0291 Cylinder 11 Injector Circuit Low
P0292 Cylinder 11 Injector Circuit High
P0293 Cylinder 11 Contribution/Balance Fault
P0294 Cylinder 12 Injector Circuit Low
P0295 Cylinder 12 Injector Circuit High
P0296 Cylinder 12 Contribution/Range Fault
P0300 Random/Multiple Cylinder Misfire Detected
P0301 Cylinder 1 Misfire Detected
95
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
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 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 Signal Circuit
P0320 Ignition/Distributor Engine Speed Input Circuit Malfunction
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
P0325 Knock Sensor 1 Circuit Malfunction (Bank I or Single Sensor)
P0326 Knock Sensor 1 Circuit Range/Performance (Bank 1 or Single Sensor)
P0327 Knock Sensor 1 Circuit Low Input (Bank I or Single Sensor)
P0328 Knock Sensor 1 Circuit High Input (Bank I or Single Sensor)
P0329 Knock Sensor 1 Circuit Intermittent (Bank 1 or Single Sensor)
P0330 Knock Sensor 2 Circuit Malfunction (Bank 2)
P0331 Knock Sensor 2 Circuit Range/Performance (Bank 2)
P0332 Knock Sensor 2 Circuit Low Input (Bank 2)
P0333 Knock Sensor 2 Circuit High Input (Bank 2)
P0334 Knock Sensor 2 Circuit Intermittent (Bank 2)
P0335 Crankshaft Position Sensor A Circuit Malfunction
P0336 Crankshaft Position Sensor A Circuit Range/Performance
P0337 Crankshaft Position Sensor A Circuit Low Input
P0338 Crankshaft Position Sensor A Circuit High Input
P0339 Crankshaft Position Sensor A Circuit Intermittent
P0340 Camshaft Position Sensor Circuit Malfunction
P0341 Camshaft Position Sensor Circuit Range/Performance
P0342 Camshaft Position Sensor Circuit Low Input
P0343 Camshaft Position Sensor Circuit High Input
P0344 Camshaft Position Sensor Circuit Intermittent
P0345 Camshaft Position Sensor A Circuit Malfunction (Bank 2)
P0346 Camshaft Position Sensor A Circuit Range/Performance (Bank 2)
P0347 Camshaft Position Sensor A Circuit Low Input (Bank 2)
P0348 Camshaft Position Sensor A Circuit High Input (Bank 2)
P0349 Camshaft Position Sensor A Circuit Intermittent (Bank 2)
P0350 Ignition Coil Primary/Secondary Circuit Malfunction
P0351 Ignition Coil A Primary/Secondary Circuit Malfunction
96
P0352 Ignition Coil B Primary/Secondary Circuit Malfunction
P0353 Ignition Coil C Primary/Secondary Circuit Malfunction
P0354 Ignition Coil D Primary/Secondary Circuit Malfunction
P0355 Ignition Coil E Primary/Secondary Circuit Malfunction
P0356 Ignition Coil F Primary/Secondary Circuit Malfunction
P0357 Ignition Coil G Primary/Secondary Circuit Malfunction
P0358 Ignition Coil H Primary/Secondary Circuit Malfunction
P0359 Ignition Coil I Primary/Secondary Circuit Malfunction
P0360 Ignition Coil J Primary/Secondary Circuit Malfunction
P0361 Ignition Coil K Primary/Secondary Circuit Malfunction
P0362 Ignition Coil L Primary/Secondary Circuit Malfunction
P0370 Timing Reference High Resolution Signal A Malfunction
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 Pulses
P0375 Timing Reference High Resolution Signal B Malfunction
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" Malfunction
P0381 Glow Plug/Heater Indicator Circuit Malfunction
P0382 Exhaust Gas Recirculation Flow Malfunction
P0385 Crankshaft Position Sensor B Circuit Malfunction
P0386 Crankshaft Position Sensor B Circuit Range/Performance
P0387 Crankshaft Position Sensor B Circuit Low Input
P0388 Crankshaft Position Sensor B Circuit High Input
P0389 Crankshaft Position Sensor B Circuit Intermittent
P0400 Exhaust Gas Recirculation Flow Malfunction
P0401 Exhaust Gas Recirculation Flow Insufficient Detected
P0402 Exhaust Gas Recirculation Flow Excessive Detected
P0403 Exhaust Gas Recirculation Circuit Malfunction
P0404 Exhaust Gas Recirculation Circuit Range/Performance
P0405 Exhaust Gas Recirculation Sensor A Circuit Low
P0406 Exhaust Gas Recirculation Sensor A Circuit High
P0407 Exhaust Gas Recirculation Sensor B Circuit Low
P0408 Exhaust Gas Recirculation Sensor B Circuit High
P0410 Secondary Air Injection System Malfunction
P0411 Secondary Air Injection System Incorrect Flow Detected
P0412 Secondary Air Injection System Switching Valve A Circuit Malfunction
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 Malfunction
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 Relay "A" Circuit Malfunction
P0419 Secondary Air Injection System Relay "B" Circuit Malfunction
P0420 Catalyst System Efficiency Below Threshold (Bank 1)
97
P0421 Warm Up Catalyst Efficiency Below Threshold (Bank 1)
P0422 Main Catalyst Efficiency Below Threshold (Bank 1)
P0423 Heated Catalyst Efficiency Below Threshold (Bank 1)
P0424 Heated Catalyst Temperature Below Threshold (Bank 1)
P0430 Catalyst System Efficiency Below Threshold (Bank 2)
P0431 Warm Up Catalyst Efficiency Below Threshold (Bank 2)
P0432 Main Catalyst Efficiency Below Threshold (Bank 2)
P0433 Heated Catalyst Efficiency Below Threshold (Bank 2)
P0434 Heated Catalyst Temperature Below Threshold (Bank 2)
P0440 Evaporative Emission Control System Malfunction
P0441 Evaporative Emission Control System Incorrect Purge Flow
P0442 Evaporative Emission Control System Leak Detected (small leak)
P0443 Evaporative Emission Control System Purge Control Valve Circuit
P0444 Evaporative Emission Control System Purge Control Valve Circuit Open
P0445 Evaporative Emission Control System Purge Control Valve Circuit Shorted
P0446 Evaporative Emission Control System Vent Control Circuit Malfunction
P0447 Evaporative Emission Control System Vent Control Circuit Open
P0448 Evaporative Emission Control System Vent Control Circuit Shorted
P0449 Evaporative Emission Control System Vent Valve/Solenoid Circuit Malfunct
P0450 Evaporative Emission Control System Pressure Sensor Malfunction
P0451 Evaporative Emission Control System Pressure Sensor Range/Performance
P0452 Evaporative Emission Control System Pressure Sensor Low Input
P0453 Evaporative Emission Control System Pressure Sensor High Input
P0454 Evaporative Emission Control System Pressure Sensor Intermittent
P0455 Evaporative Emission Control System Leak Detected (gross leak)
P0456 Evaporative Emissions System Small Leak Detected
P0457 Evaporative Emission Control System Leak Detected
P0458 Evaporative Emission System Purge Control Valve Circuit Low
P0459 Evaporative Emission System Purge Control Valve Circuit High
P0460 Fuel Level Sensor Circuit Malfunction
P0461 Fuel Level Sensor Circuit Range/Performance
P0462 Fuel Level Sensor Circuit Low Input
P0463 Fuel Level Sensor Circuit High Input
P0464 Fuel Level Sensor Circuit Intermittent
P0465 Purge Flow Sensor Circuit Malfunction
P0466 Purge Flow Sensor Circuit Range/Performance
P0467 Purge Flow Sensor Circuit Low Input
P0468 Purge Flow Sensor Circuit High Input
P0469 Purge Flow Sensor Circuit Intermittent
P0470 Exhaust Pressure Sensor Malfunction
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 Malfunction
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
98
P0480 Cooling Fan I Control Circuit Malfunction
P0481 Cooling Fan 2 Control Circuit Malfunction
P0482 Cooling Fan 3 Control Circuit Malfunction
P0483 Cooling Fan Rationality Check Malfunction
P0484 Cooling Fan Circuit Over Current
P0485 Cooling Fan Power/Ground Circuit Malfunction
P0500 Vehicle Speed Sensor Malfunction
P0501 Vehicle Speed Sensor Range/Performance
P0502 Vehicle Speed Sensor Low Input
P0503 Vehicle Speed Sensor Intermittent/Erratic/High
P0505 Idle Control System Malfunction
P0506 Idle Control System RPM Lower Than Expected
P0507 Idle Control System RPM Higher Than Expected
P0510 Closed Throttle Position Switch Malfunction
P0520 Engine Oil Pressure Sensor/Switch Circuit Malfunction
P0521 Engine Oil Pressure Sensor/Switch Circuit Range/Performance
P0522 Engine Oil Pressure Sensor/Switch Circuit Low Voltage
P0523 Engine Oil Pressure Sensor/Switch Circuit High Voltage
P0530 A/C Refrigerant Pressure Sensor Circuit Malfunction
P0531 A/C Refrigerant Pressure Sensor Circuit Range/Performance
P0532 A/C Refrigerant Pressure Sensor Circuit Low Input
P0533 A/C Refrigerant Pressure Sensor Circuit High Input
P0534 Air Conditioner Refrigerant Charge Loss
P0550 Power Steering Pressure Sensor Circuit Malfunction
P0551 Power Steering Pressure Sensor Circuit Range/Performance
P0552 Power Steering Pressure Sensor Circuit Low Input
P0553 Power Steering Pressure Sensor Circuit High Input
P0554 Power Steering Pressure Sensor Circuit Intermittent
P0560 System Voltage Malfunction
P0561 System Voltage Unstable
P0562 System Voltage Low
P0563 System Voltage High
P0565 Cruise Control On Signal Malfunction
P0566 Cruise Control Off Signal Malfunction
P0567 Cruise Control Resume Signal Malfunction
P0568 Cruise Control Set Signal Malfunction
P0569 Cruise Control Coast Signal Malfunction
P0570 Cruise Control Accel Signal Malfunction
P0571 Cruise Control/Brake Switch A Circuit Malfunction
P0572 Cruise Control/Brake Switch A Circuit Low
P0573 Cruise Control/Brake Switch A Circuit High
P0574 Cruise Control Related Malfunction
P0575 Cruise Control Related Malfunction
P0576 Cruise Control Related Malfunction
P0576 Cruise Control Related Malfunction
P0578 Cruise Control Related Malfunction
P0579 Cruise Control Related Malfunction
P0580 Cruise Control Related Malfunction
P0600 Serial Communication Link Malfunction
99
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 PCM Processor Fault
P0607 Control Module Performance
P0608 Control Module VSS Output "A" Malfunction
P0609 Control Module VSS Output "B" Malfunction
P0620 Generator Control Circuit Malfunction
P0621 Generator Lamp "L" Control Circuit Malfunction
P0622 Generator Field "F" Control Circuit Malfunction
P0650 Malfunction Indicator Lamp (MIL) Control Circuit Malfunction
P0654 Engine RPM Output Circuit Malfunction
P0655 Engine Hot Lamp Output Control Circuit Malfunction
P0656 Fuel Level Output Circuit Malfunction
P0700 Transmission Control System Malfunction
P0701 Transmission Control System Range/Performance
P0702 Transmission Control System Electrical
P0703 Torque Converter/Brake Switch B Circuit Malfunction
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 Input
P0708 Transmission Range Sensor Circuit High Input
P0709 Transmission Range Sensor Circuit Intermittent
P0710 Transmission Fluid Temperature Sensor Circuit Malfunction
P0711 Transmission Fluid Temperature Sensor Circuit Range/Performance
P0712 Transmission Fluid Temperature Sensor Circuit Low Input
P0713 Transmission Fluid Temperature Sensor Circuit High Input
P0714 Transmission Fluid Temperature Sensor Circuit Intermittent
P0715 Input/Turbine Speed Sensor Circuit Malfunction
P0716 Input/Turbine Speed Sensor Circuit Range/Performance
P0717 Input/Turbine Speed Sensor Circuit No Signal
P0718 Input/Turbine Speed Sensor Circuit Intermittent
P0719 Torque Converter/Brake Switch B Circuit Low
P0720 Output Speed Sensor Circuit Malfunction
P0721 Output Speed Sensor Range/Performance
P0722 Output Speed Sensor No Signal
P0723 Output Speed Sensor Intermittent
P0724 Torque Converter/Brake Switch B Circuit High
P0725 Engine Speed input Circuit Malfunction
P0726 Engine Speed Input Circuit Range/Performance
P0727 Engine Speed Input Circuit No Signal
P0728 Engine Speed Input Circuit Intermittent
P0730 Incorrect Gear Ratio
P0731 Gear I Incorrect ratio
P0732 Gear 2 Incorrect ratio
P0733 Gear 3 Incorrect ratio
100
P0734 Gear 4 Incorrect ratio
P0735 Gear 5 Incorrect ratio
P0736 Reverse incorrect gear ratio
P0740 Torque Converter Clutch Circuit Malfunction
P0741 Torque Converter Clutch Circuit Performance or Stuck Off
P0742 Torque Converter Clutch Circuit Stock On
P0743 Torque Converter Clutch Circuit Electrical
P0744 Torque Converter Clutch Circuit Intermittent
P0745 Pressure Control Solenoid Malfunction
P0746 Pressure Control Solenoid Performance or Stuck Off
P0747 Pressure Control Solenoid Stuck On
P0748 Pressure Control Solenoid Electrical
P0749 Pressure Control Solenoid Intermittent
P0750 Shift Solenoid A Malfunction
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 Malfunction
P0756 Shift Solenoid B Performance or Stock Off
P0757 Shift Solenoid B Stuck On
P0758 Shift Solenoid B Electrical
P0759 Shift Solenoid B Intermittent
P0760 Shift Solenoid C Malfunction
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 Malfunction
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 Malfunction
P0771 Shift Solenoid E Performance or Stuck Off
P0772 Shift Solenoid E Stuck On
P0773 Shift Solenoid E Electrical
P0774 Shift Solenoid E Intermittent
P0780 Shift Malfunction
P0781 1-2 Shift Malfunction
P0782 2-3 Shift Malfunction
P0783 3-4 Shift Malfunction
P0784 4-5 Shift Malfunction
P0785 Shift/Timing Solenoid Malfunction
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 Malfunction
101
P0801 Reverse Inhibit Control Circuit Malfunction
P0803 1-4 Upshift (Skip Shift) Solenoid Control Circuit Malfunction
P0804 1-4 Upshift (Skip Shift) Lamp Control Circuit Malfunction

Códigos de falha do Body

Os códigos de falha da carroceria do veiculo não são padronizados por norma.

Códigos de falha do Chassis

C0000 - Vehicle Speed Information Circuit Malfunction


C0035 - Left Front Wheel Speed Circuit Malfunction
C0040 - Right Front Wheel Speed Circuit Malfunction
C0041 - Right Front Wheel Speed Sensor Circuit Range/Performance (EBCM)
C0045 - Left Rear Wheel Speed Circuit Malfunction
C0046 - Left Rear Wheel Speed Sensor Circuit Range/Performance (EBCM)
C0050 - Right Rear Wheel Speed Circuit Malfunction
C0051 - LF Wheel Speed Sensor Circuit Range/Performance (EBCM)
C0060 - Left Front ABS Solenoid #1 Circuit Malfunction
C0065 - Left Front ABS Solenoid #2 Circuit Malfunction
C0070 - Right Front ABS Solenoid #1 Circuit Malfunction
C0075 - Right Front ABS Solenoid #2 Circuit Malfunction
C0080 - Left Rear ABS Solenoid #1 Circuit Malfunction
C0085 - Left Rear ABS Solenoid #2 Circuit Malfunction
C0090 - Right Rear ABS Solenoid #1 Circuit Malfunction
C0095 - Right Rear ABS Solenoid #2 Circuit Malfunction
C0110 - Pump Motor Circuit Malfunction
C0121 - Valve Relay Circuit Malfunction
C0128 - Low Brake Fluid Circuit Low
C0141 - Left TCS Solenoid #1 Circuit Malfunction
C0146 - Left TCS Solenoid #2 Circuit Malfunction
C0151 - Right TCS Solenoid #1 Circuit Malfunction
C0156 - Right TCS Solenoid #2 Circuit Malfunction
C0161 - ABS/TCS Brake Switch Circuit Malfunction
C0221 - Right Front Wheel Speed Sensor Circuit Open
C0222 - Right Front Wheel Speed Signal Missing
C0223 - Right Front Wheel Speed Signal Erratic
C0225 - Left Front Wheel Speed Sensor Circuit Open
C0226 - Left Front Wheel Speed Signal Missing
C0227 - Left Front Wheel Speed Signal Erratic
C0229 - Drop Out of Front Wheel Speed Signals
C0235 - Rear Wheel Speed Signal Circuit Open
C0236 - Rear Wheel Speed Signal Circuit Missing
C0237 - Rear Wheel Speed Signal Erratic
C0238 - Wheel Speed Mismatch
102
C0241 - EBCM Control Valve Circuit
C0245 - Wheel Speed Sensor Frequency Error
C0254 - EBCM Control Valve Circuit
C0265 - EBCM Relay Circuit
C0266 - EBCM Relay Circuit
C0267 - Pump Motor Circuit Open/Shorted
C0268 - Pump Motor Circuit Open/Shorted
C0269 - Excessive Dump/Isolation Time
C0271 - EBCM Malfunction
C0272 - EBCM Malfunction
C0273 - EBCM Malfunction
C0274 - Excessive Dump/Isolation Time
C0279 - Powertrain Configuration Not Valid
C0281 - Brake Switch Circuit
C0283 - Traction Switch Shorted to Ground
C0284 - EBCM Malfunction
C0286 - ABS Indicator Lamp Circuit Shorted to B+
C0287 - Delivered Torque Circuit
C0288 - Brake Warning Lamp Circuit Shorted to B+
C0290 - Lost Communications With PCM
C0292 - Lost Communications With PCM
C0291 - Lost Communications With BCM
C0297 - Powertrain Configuration Data Not Received
C0298 - Powertrain Indicated Traction Control Malfunction
C0300 - Rear Speed Sensor Malfunction
C0305 - Front Speed Sensor Malfunction
C0306 - Motor A or B Circuit
C0308 - Motor A/B Circuit Low
C0309 - Motor A/B Circuit High
C0310 - Motor A/B Circuit Open
C0315 - Motor Ground Circuit Open
C0321 - Transfer Case Lock Circuit
C0323 - T-Case Lock Circuit Low
C0324 - T-Case Lock Circuit High
C0327 - Encoder Circuit Malfunction
C0357 - Park Switch Circuit High
C0359 - Four Wheel Drive Low Range (4LO) Discrete Output Circuit
C0362 - 4LO Discrete Output Circuit High
C0367 - Front Axle Control Circuit High
C0374 - General System Malfunction
C0376 - Front/Rear Shaft Speed Mismatch
C0379 - Front Axle System
C0387 - Unable to Perform Shift
C0472 - Steering Handwheel Speed Sensor Signal V Low
C0473 - Steering Handwheel Speed Sensor Signal V High
C0495 - EVO Tracking Error
C0498 - Steering Assist Control Actuator Feed Circuit Low
C0499 - Steering Assist Control Solenoid Feed Circuit High
C0503 - Steering Assist Control Solenoid Return Circuit Low
103
C0504 - Steering Assist Control Solenoid Return Circuit High
C0550 - ECU Malfunction - internal write / checksum malfunction
C0559 - EEPROM Checksum Error
C0563 - Calibration ROM Checksum Error
C0577 - Left Front Solenoid Circuit Low
C0578 - Left Front Solenoid Circuit High
C0579 - Left Front Solenoid Circuit Open
C0582 - Right Front Solenoid Circuit Low
C0583 - Right Front Solenoid Circuit High
C0584 - Right Front Solenoid Circuit Open
C0587 - Left Rear Solenoid Circuit Low
C0588 - Left Rear Solenoid Circuit High
C0589 - Left Rear Solenoid Circuit Open
C0592 - Right Rear Solenoid Circuit Low
C0593 - Right Rear Solenoid Circuit High
C0594 - Right Rear Solenoid Circuit Open
C0611 - VIN Information Error
C0615 - Left Front Position Sensor Malfunction
C0620 - Right Front Position Sensor Malfunction
C0625 - Left Rear Position Sensor Malfunction
C0628 - Level Control Position Sensor Circuit High
C0630 - Right Rear Position Sensor Malfunction
C0635 - Left Front Normal Force Circuit Malfunction
C0638 - Left Front Normal Force Circuit High
C0640 - Right Front Normal Force Circuit Malfunction
C0643 - Right Front Normal Force Circuit High
C0655 - Level Control Compressor Relay Malfunction
C0657 - Level Control Compressor Circuit Low
C0658 - Level Control Compressor Circuit High
C0660 - Level Control Exhaust Valve Circuit Malfunction
C0662 - Level Control Exhaust Valve Circuit Low
C0663 - Level Control Exhaust Valve Circuit High
C0665 - Chassis Pitch Signal Circuit
C0690 - Damper Control Relay Circuit Malfunction
C0691 - Damper Control Relay Circuit Range
C0693 - Damper Control Relay Circuit High
C0695 - Position Sensor Overcurrent (8 volt supply)
C0696 - Position Sensor Overcurrent (5 volt supply)
C0710 - Steering Position Signal Malfunction
C0750 - Tire Pressure Monitor (TPM) system sensor not transmitting
C0755 - Tire Pressure Monitor (TPM) system sensor not transmitting
C0760 - Tire Pressure Monitor (TPM) system sensor not transmitting
C0765 - Tire Pressure Monitor (TPM) system sensor not transmitting
C0800 - Device Power #1 Circuit Malfunction
C0896 - Electronic Suspension Control (ESC) voltage is outside the normal range of 9 to 15.5
volts

Códigos de falha de Redes (alguns são reservados)


104
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 (+)
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
105
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
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
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"
U0145....Lost Communication With Body Control Module "E"
U0146....Lost Communication With Gateway "A"
106
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
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
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
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 Contro
U0415....Invalid Data Received From Anti-Lock Brake System Control
U0416....Invalid Data Received From Vehicle Dynamics Control Modu
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 Mo
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
107
108

Você também pode gostar