Sie sind auf Seite 1von 54

UNIVERSIDADE FEDERAL DO CEAR

CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELTRICA
CURSO DE GRADUAO EM ENGENHARIA ELTRICA

RODRIGO ROCHA PINHEIRO

ELETRNICA AUTOMOTIVA EMBARCADA: ESTUDO DO SISTEMA OBD E


DESENVOLVIMENTO DE UM PROTTIPO PARA DIAGNSTICO VEICULAR

FORTALEZA
NOVEMBRO 2014

RODRIGO ROCHA PINHEIRO

ELETRNICA AUTOMOTIVA EMBARCADA: ESTUDO DO SISTEMA OBD E


DESENVOLVIMENTO DE UM PROTTIPO PARA DIAGNSTICO VEICULAR

Monografia submetida ao Curso de Graduao


em Engenharia Eltrica da Universidade
Federal do Cear como parte dos requisitos
para obteno do grau de Graduado em
Engenharia Eltrica.
reas de concentrao: Eletrnica
Automotiva, Sistemas Embarcados.
Orientador: Prof. Dr. Luiz Henrique Silva
Colado Barreto.

FORTALEZA
NOVEMBRO 2014

___________________________________________________________________________

Pgina reservada para ficha catalogrfica que deve ser confeccionada aps apresentao e
alteraes sugeridas pela banca examinadora.
Para solicitar a ficha catalogrfica de seu trabalho, acesse o site: www.biblioteca.ufc.br, clique
no banner Catalogao na Publicao (Solicitao de ficha catalogrfica)

___________________________________________________________________________

RODRIGO ROCHA PINHEIRO

ELETRNICA AUTOMOTIVA EMBARCADA: ESTUDO DO SISTEMA OBD E


DESENVOLVIMENTO DE UM PROTTIPO PARA DIAGNSTICO VEICULAR

Esta monografia foi julgada adequada para a


obteno do grau de Graduado em Engenharia
Eltrica e aprovada em sua forma final pelo
Orientador e pela Banca Examinadora.
Aprovada em: ___/___/______.

BANCA EXAMINADORA

________________________________________________
Prof. Dr. Luiz Henrique Silva Colado Barreto
Universidade Federal do Cear

_________________________________________________
Eng. Nicolas de Arajo Moreira
Universidade Federal do Cear

_________________________________________________
Eng. Alexandre Martins Frota
Ford Motor Company Brasil Ltda - Diviso Troller

E ele, sem saber que era impossvel,


foi l e fez. - Jean Cocteau

AGRADECIMENTOS
Primeiramente, gostaria de agradecer minha me e minha irm, pelo amor e pelo
apoio que sempre me foram dados durante toda a minha vida. Gostaria de agradecer tambm
ao meu av, pelos conselhos de vida e pelo constante incentivo busca por conhecimento.
Agradeo ao meu orientador, Professor Luiz Henrique, pela disponibilidade e pela
ateno durante todo o desenvolvimento deste trabalho, e aos meus colegas de curso,
Abraho, Breno, Bruno, Chico, Jordanno, Matheus, Moyzes e Nicholas, por terem tornado os
meus dias na faculdade durante esses seis anos bem mais divertidos.
Tenho que agradecer tambm aos meus gestores de estgio na fbrica da Ford,
Engenheiros Alexandre Frota e Saulo Tavares, pelos conhecimentos transmitidos na rea de
Eletrnica Automotiva e pelas sugestes de projeto para este trabalho.
Por fim, minha namorada, todo o meu profundo agradecimento. Pelo amor, pela
compreenso, pelo incentivo e pelos conselhos, sempre me ajudando a ser, pessoalmente e
profissionalmente, cada vez melhor.

RESUMO
Este trabalho tem como objetivos o estudo e a aplicao do sistema OBD para a
realizao de diagnstico automotivo. Inicialmente, foi apresentada uma viso geral sobre a
evoluo da eletrnica embarcada automotiva e sobre o desenvolvimento de sistemas de
diagnstico veicular. Em seguida, foi realizada uma abordagem mais aprofundada do sistema
OBD-II, contemplando os padres definidos e as aplicaes possveis. Ento, todo o processo
de desenvolvimento da aplicao escolhida foi apresentado e explicado, assim como os
resultados obtidos durante os testes de funcionamento. Por fim, foi realizada uma concluso
geral acerca deste trabalho, indicando os objetivos alcanados, as dificuldades encontradas, os
aprendizados obtidos e os possveis trabalhos futuros.
Palavras-chave: Eletrnica Automotiva, Sistemas Embarcados, OBD, dsPIC.

ABSTRACT
This work aims to present the study and application of the OBD system to perform
automotive diagnosis. Initially an overview of the automotive embedded electronics evolution
and the vehicle diagnostics systems development was presented. Then a further approach of
the OBD-II system was performed, considering the standard settings and possible
applications. After that the whole process of developing the chosen application was presented
and explained, as well as the results obtained during the running tests. Finally a general
conclusion about this work was made, stating the objectives achieved, the difficulties
encountered, the knowledge obtained and possible future works.
Keywords: Automotive Electronics, Embedded Systems, OBD, dsPIC.

LISTA DE ILUSTRAES
Figura 2.1 - Luz Indicadora de Mal-funcionamento................................................................. 13
Figura 2.2 - Logo da Sociedade dos Engenheiros Automotivos .............................................. 14
Figura 2.3 - Esquemtico do Conector de Diagnstico ............................................................ 15
Figura 2.4 - Conector de Diagnstico do Toyota Etios ............................................................ 16
Figura 2.5 - Estruturao dos Cdigos de Falha ....................................................................... 17
Figura 2.6 - Escner Porttil AutoBoss V30 ............................................................................ 18
Figura 2.7 - Computador de Bordo Multitronics VC731 ......................................................... 19
Figura 2.8 - Interfaceador Bluetooth ELM327 ......................................................................... 19
Figura 2.9 - Datalogger TEXA OBD Log ................................................................................ 19
Figura 3.1 - Esboos iniciais do design do prottipo ............................................................... 20
Figura 3.2 - Cabo OBD-II Tipo B e seu diagrama eltrico ...................................................... 21
Figura 3.3 - Microcontrolador dsPIC30F4013 ......................................................................... 22
Figura 3.4 - Mapa dos pinos utilizados do dsPIC30F4013 ...................................................... 22
Figura 3.5 - Amostras enviadas pela Microchip ....................................................................... 23
Figura 3.6 - Display LCD 20x4 com controlador integrado..................................................... 23
Figura 3.7 - Transceptor CAN MCP2551 ................................................................................ 24
Figura 3.8 - Fluxograma da Lgica Implementada .................................................................. 25
Figura 3.9 - Ambiente de Desenvolvimento Integrado MPLAB X .......................................... 26
Figura 3.10 - Esquemtico para Gravao do Firmware.......................................................... 26
Figura 3.11 - Ambiente de Desenvolvimento Integrado Altium Designer............................... 27
Figura 3.12 - Placa de Circuito Impresso Desenvolvida .......................................................... 27
Figura 3.13 - Toyota Etios Hatchback XLS ............................................................................. 28
Figura 3.14 - Programao da Estrutura de Funcionamento .................................................... 30
Figura 3.15 - Funcionamento do Modo Tempo Real ............................................................... 30
Figura 3.16 - Funcionamento do Modo Diagnstico ................................................................ 31

LISTA DE TABELAS
Tabela 2.1 - Pinagem do Conector de Diagnstico .................................................................. 15
Tabela 2.2 - Protocolos de Comunicao OBD-II.................................................................... 16
Tabela 2.3 - Modos de Requisio de Dados ........................................................................... 17
Tabela 2.4 - Requisio e Recebimento de Dados ................................................................... 18
Tabela 3.1 - Lista de Materiais e Respectivos Custos .............................................................. 28
Tabela 3.2 - PIDs Suportados pelo Veculo de Testes ............................................................. 29
Tabela 3.3 - PIDs Escolhidos para Implementao .................................................................. 29

LISTA DE ABREVIATURAS E SIGLAS


ADC

Analog-to-Digital Converter

BCM

Body Control Module

CAN

Controller Area Network

CARB

California Air Resources Board

DIP

Dual In-line Package

dsPIC

Digital Signal Peripheral Interface Controller

DTC

Diagnostic Trouble Code

ECU

Electronic Control Unit

EU

European Union

EOBD

European On-Board Diagnostics

ICSP

In-Circuit Serial Programming

IDE

Integrated Development Environment

LCD

Liquid Crystal Display

MIL

Malfunction Indicator Light

MIPS

Milhes de Instrues Por Segundo

OBD

On-Board Diagnostics

PCI

Placa de Circuito Impresso

PCM

Powertrain Control Module

PID

Parameter Identification Number

PWM

Pulse-Width Modulation

SAE

Society of Automotive Engineers

SUMRIO
1 INTRODUO ..................................................................................................................... 12
2 SISTEMA OBD ..................................................................................................................... 13
2.1 Viso Geral ............................................................................................................. 13
2.2 Histria e Evoluo ................................................................................................. 13
2.3 Sistema OBD-II ...................................................................................................... 14
2.3.1 Conector de Diagnstico .......................................................................... 15
2.3.2 Protocolos de Comunicao ..................................................................... 16
2.3.3 Parmetros Veiculares e Cdigos de Falha .............................................. 17
2.4 Aplicaes ............................................................................................................... 18
3 PROTTIPO DESENVOLVIDO ......................................................................................... 20
3.1 Proposta de Projeto ................................................................................................. 20
3.2 Microcontrolador .................................................................................................... 21
3.3 Outros Componentes .............................................................................................. 23
3.3.1 Display LCD ............................................................................................ 23
3.3.2 Transceptor CAN ..................................................................................... 24
3.4 Firmware ................................................................................................................. 25
3.5 Hardware................................................................................................................. 27
3.6 Funcionamento ....................................................................................................... 28
4 CONCLUSO ....................................................................................................................... 32
REFERNCIAS BIBLIOGRFICAS ..................................................................................... 33
APNDICE A .......................................................................................................................... 34
APNDICE B ........................................................................................................................... 41
ANEXO A ................................................................................................................................ 42
ANEXO B ................................................................................................................................ 51
ANEXO C ................................................................................................................................ 52
ANEXO D ................................................................................................................................ 53

12
1 INTRODUO
Segundo Andreatini (2003), a eletrnica foi inicialmente embarcada em automveis
comerciais por volta dos anos 1970. Nesta poca, tanto foram introduzidas especificaes
governamentais que visavam a reduo da emisso de poluentes, como tambm dispositivos
de estado slido comeavam a ser produzidos a custos bem inferiores aos anteriores.
Assim, como a reduo do consumo de combustvel exigida por lei era praticamente
impossvel de ser alcanada com as solues normalmente aplicadas, a eletrnica embarcada,
que passou a apresentar uma relao de custo-benefcio aceitvel, foi introduzida em veculos
para gerenciar a injeo de combustvel para combusto interna do motor (Andreatini, 2003).
Segundo Guimares (2007), hoje praticamente todas as funcionalidades de um
automvel so controladas por mdulos eletrnicos chamados de ECUs (Electronic Control
Units), sendo os principais o PCM (Powertrain Control Module), que controla o conjunto
motor-transmisso, e o BCM (Body Control Module), que controla os principais perifricos
automotivos. Alm disso, as montadoras esto utilizando cada vez mais os sistemas X-bywire, que substituem os sistemas puramente mecnicos convencionais por sistemas
eletromecnicos modernos, constitudos por mdulos de controle, sensores e atuadores
(Guimares, 2007).
A presena de diversos mdulos e sistemas eletrnicos distribudos por todo o
automvel caracteriza uma arquitetura eltrica denominada distribuda, que hoje
amplamente mais utilizada que a convencional arquitetura centralizada (Guimares, 2007).
Para a interconexo das ECUs e dos diversos sistemas existentes em uma arquitetura
distribuda, faz-se necessria a utilizao de um protocolo de comunicao, tendo grande
destaque o protocolo de comunicao serial CAN (Controller Area Network).
Com o aumento considervel do nvel de eletrnica embarcada nos veculos [uma lista
com algumas definies em eletrnica automotiva encontra-se no Apndice A deste trabalho],
tornou-se quase impossvel aos operadores de linhas de produo e aos mecnicos das
oficinas das concessionrias diagnosticarem eventuais falhas eletrnicas nos mdulos e
sistemas por meio de testes eltricos simples ou mesmo por intuio (Guimares, 2007).
Assim, o desenvolvimento de um sistema capaz de permitir a comunicao com o veculo e a
realizao de um diagnstico de falhas em tempo real se mostra extremamente relevante.
Dentro desse contexto, este trabalho tem como objetivos o estudo do atual padro de
diagnstico veicular utilizado na indstria automotiva mundial e o desenvolvimento de um
prottipo para aplicao dos conceitos analisados.

13
2 SISTEMA OBD
2.1 Viso Geral
O termo OBD (On-Board Diagnostics) refere-se ao sistema automotivo presente na
maioria dos carros atuais que permite a realizao de autodiagnstico e indicao da situao
de vrios subsistemas veiculares a motoristas e mecnicos.
Segundo Manavella (2009), por meio do sistema OBD, o diagnstico automotivo, que
antes era caracterizado simplesmente pelo acendimento da MIL (Malfunction Indicator Light)
caso ocorresse algum problema interno, pode hoje ser realizado tanto por meio da anlise dos
dados em tempo real dos subsistemas veiculares, como tambm por meio da indicao de
DTCs (Diagnostic Trouble Codes), que so cdigos de falha pr-definidos pelo padro OBD e
que permitem a rpida identificao e reparao de situaes irregulares.
Figura 2.1 - Luz Indicadora de Mal-funcionamento

Fonte: Prpria

2.2 Histria e Evoluo


Segundo a Agncia de Proteo Ambiental da Califrnia (2009), a SAE (Society of
Automotive Engineers), organizao responsvel pela normatizao de padres tcnicos nas
reas automotiva e aeroespacial, props, em 1988, a padronizao tanto de uma lista de
cdigos DTCs, como tambm do conector a ser utilizado em diagnstico automotivo. Porm,
o sistema popularmente conhecido como OBD-I, definido pela CARB (California Air
Resources Board) para os novos veculos vendidos na Califrnia (EUA) em 1991, no
apresentava nem protocolo de comunicao nem conector padronizados.

14
Figura 2.2 - Logo da Sociedade dos Engenheiros Automotivos

Fonte: Site SAE International [http://www.sae.org]

A CARB, motivada pelo desejo de realizar um programa de testes de emisses


automotivas em todo o territrio americano, especificou o chamado sistema OBD-II em 1994,
o qual finalmente incorporou a lista de DTCs e o conector padronizados, os quais haviam sido
sugeridos pela SAE. No ano de 1996, o sistema OBD-II foi ento definido como obrigatrio
para todos os automveis produzidos e vendidos nos Estados Unidos (Agncia de Proteo
Ambiental da Califrnia, 2009).
A EU (European Union) definiu que o sistema EOBD (European On-Board
Diagnostics), modelo europeu equivalente ao OBD-II, seria obrigatrio para os veculos a
gasolina e a diesel vendidos na EU em 2001 e em 2003, respectivamente (Parlamento
Europeu, 1998). J a Austrlia definiu que o sistema ADR 79/01 (Australian Design Rule
79/01), modelo australiano equivalente ao OBD-II, seria obrigatrio para os veculos a
gasolina e a diesel vendidos na Austrlia em 2006 e em 2007 (Governo Australiano, 2005).
2.3 Sistema OBD-II
Diferentemente do sistema OBD-I, no qual os pouqussimos DTCs implementados
eram indicados ao motorista por meio de piscadas consecutivas da MIL sem que houvesse
nenhum padro entre as diversas montadoras, o sistema OBD-II foi desenvolvido com um alto
grau de capacidade de diagnstico e de padronizao (Manavella, 2009).
O padro OBD-II define o tipo de conector de diagnstico e sua respectiva pinagem,
os tipos de protocolos de comunicao disponveis para implementao, o formato das
mensagens a serem recebidas e transmitidas, os identificadores de cada um dos parmetros
veiculares a serem monitorados e uma extensa lista de DTCs pr-definidos e padronizados
[uma lista com as principais normas utilizadas para a definio do padro OBD-II encontra-se
no Apndice B deste trabalho].

15
2.3.1 Conector de Diagnstico
O sistema OBD-II padronizou como conector de interface para diagnstico o modelo
definido pela norma SAE J1962, o qual est ilustrado na Figura 2.3 e apresenta a pinagem
definida na Tabela 2.1.
Figura 2.3 - Esquemtico do Conector de Diagnstico

Fonte: Site Wikipedia [http://en.wikipedia.org/wiki/On-board_diagnostics]


Tabela 2.1 - Pinagem do Conector de Diagnstico

Pino

Funo

Pino

Funo

No-padronizada

No-padronizada

SAE J1850 VPW e PWM (+)

10

SAE J1850 PWM (-)

No-padronizada

11

No-padronizada

Aterramento do Chassis

12

No-padronizada

Aterramento de Diagnstico

13

No-padronizada

ISO 15765-4 CAN (CANH)

14

ISO 15765-4 CAN (CANL)

ISO 9141-2 (K-Line)

15

ISO 9141-2 (L-Line)

No-padronizada

16

Tenso da Bateria

Diferentemente dos diversos conectores de diagnstico no-padronizados do sistema


OBD-I, os quais eram normalmente encontrados sob o cap do veculo, foi definido para o
sistema OBD-II que o conector de diagnstico deveria ser instalado dentro do veculo, a uma
distncia mdia de 60 cm abaixo do volante. A Figura 2.4 ilustra a localizao do conector de
diagnstico do veculo Toyota Etios.

16
Figura 2.4 - Conector de Diagnstico do Toyota Etios

Fonte: Prpria

2.3.2 Protocolos de Comunicao


O sistema OBD-II definiu que poderiam ser implementados para realizar a interface
entre o veculo e a ferramenta de diagnstico cinco tipos de protocolos de comunicao, os
quais so apresentados na Tabela 2.2. Uma rpida maneira de se identificar qual protocolo foi
implementado em determinado veculo verificar quais pinos do conector foram utilizados.
Tabela 2.2 - Protocolos de Comunicao OBD-II

Protocolo

Norma

VPW

SAE J1850

General Motors

10,4 kbps

2 e 10

PWM

SAE J1850

Ford

41,6 kbps

ISO 9141

ISO 9141-2

ISO

10,4 kbps

7 e 15

4 KWP2000

ISO 14230

ISO

10,4 kbps

7 e 15

ISO 15765-4

Bosch

500 kbps

6 e 14

CAN

Desenvolvedor Taxa de Transmisso Pinagem OBD-II

Apesar de ter sido o protocolo de comunicao mais recentemente adicionado


especificao do sistema OBD-II, o protocolo CAN , desde 2008, padro nico obrigatrio
na implementao do sistema de diagnstico dos novos veculos produzidos (Agncia de
Proteo Ambiental dos Estados Unidos, 2005).
Segundo Guimares (2007), o protocolo de comunicao CAN foi desenvolvido na
dcada de 80 pela empresa alem Robert Bosch, sendo aplicado inicialmente a nibus e
caminhes e, atualmente, na indstria, em automveis, navios e tratores. Trata-se de um
protocolo de comunicao serial sncrono, que trabalha baseado no conceito multimestre
(todos os mdulos da rede alternam entre mestres e escravos), que apresenta barramento
baseado em um par tranado diferencial de fios (CAN High e CAN Low) e velocidade mxima
de transmisso de dados de 1 Mbps.

17
2.3.3 Parmetros Veiculares e Cdigos de Falha
O sistema OBD-II definiu um mtodo de requisio e resposta para os diversos
parmetros veiculares e cdigos de falha que o veculo disponibiliza.
Os parmetros veiculares em tempo real so identificados por meio de PIDs
(Parameter Identification Numbers), os quais so definidos pela norma SAE J1979. Os
cdigos de falha, conforme j mencionado, so definidos como DTCs e so estruturados
conforme indicado na Figura 2.5 [diversas listas com os principais PIDs e DTCs podem ser
encontradas em http://www.outilsobdfacile.com/obd-presentation.php].
Figura 2.5 - Estruturao dos Cdigos de Falha

Fonte: Site BMW Diagnostics [http://www.bimmerscan.com/what-is-on-board-diagnostics-obd/]

O acesso aos diversos parmetros veiculares e tambm aos eventuais cdigos de falha
do veculo realizado por meio da seleo de um dentre os dez modos de requisio de dados
definidos pela SAE J1979, os quais so apresentados na Tabela 2.3.
Tabela 2.3 - Modos de Requisio de Dados

Modo

Descrio

01

Fornece os valores dos parmetros veiculares em tempo real

02

Fornece os valores dos parmetros veiculares quando ocorreu o DTC mais recente

03

Fornece os DTCs armazenados na memria do veculo

04

Limpa todos os DTCs armazenados na memria do veculo

05

Fornece os resultados dos testes de monitoramento do sensor de oxignio (no-CAN)

18
06

Fornece os resultados dos testes de monitoramento do sensor de oxignio (CAN)

07

Fornece os DTCs pendentes (detectados no ciclo atual e/ou no anterior)

08

Controla a operao do sistema de diagnstico

09

Fornece informaes gerais e especficas do veculo

0A

Fornece todos os DTCs permanentes (armazenados e apagados)


As montadoras de veculos no precisam implementar todos os modos definidos pela

SAE J1979 em seus sistemas de diagnstico e, alm disso, podem tambm definir modos
adicionais alternativos. Situao anloga ocorre com os PIDs e com os DTCs: no exigida a
implementao de todos os cdigos definidos pela norma e permitida a definio de novos
cdigos especficos.
Ento, definidos PIDs, DTCs e modos de requisio, o mtodo de requisio e
resposta de dados via sistema OBD-II, o qual ocorre por meio de envios e recebimentos de
mensagens de 8 bytes no barramento CAN do veculo, finalmente indicado na Tabela 2.4.
Tabela 2.4 - Requisio e Recebimento de Dados

Bytes (7-0)

Tipo de
Mensagem

ID CAN
Mensagem

Requisio

0x7DF

Cdigo
PID

Modo de
Requisio

Nmero de
bytes (2)

Resposta

0x7E8

PID PID PID PID Cdigo


Modo
D
C
B
A
PID
Requisitado

Nmero de
bytes (6)

2.4 Aplicaes
Diversas ferramentas que exploram o sistema OBD foram desenvolvidas, integrando
funcionalidades que vo muito alm do diagnstico automotivo. As principais aplicaes so:
Escner porttil: acesso simples e rpido aos cdigos de falha, normalmente com
funcionalidade de limpeza de DTCs e plotagem de grficos de parmetros veiculares.
Figura 2.6 - Escner Porttil AutoBoss V30

Fonte: Site OBDSpace [http://portuguese.obdspace.com/]

19
Computador de bordo: exibio de informaes complementares ao motorista, como
carga do motor e consumo instantneo de combustvel.
Figura 2.7 - Computador de Bordo Multitronics VC731

Fonte: Site Drive2 [http://www.drive2.ru/]

Interfaceador: conexo USB, Bluetooth ou WiFi para anlise veicular em PCs,


celulares ou tablets de parmetros veiculares e cdigos de falha.
Figura 2.8 - Interfaceador Bluetooth ELM327

Fonte: Site Weiku [http://www.weiku.com/]

Datalogger: armazenamento de dados veiculares para anlises posteriores de


motoristas, operadores de frotas veiculares e at mesmo agncias de seguros automotivos.
Figura 2.9 - Datalogger TEXA OBD Log

Fonte: Site TexaFrance [http://www.texafrance.fr/]

Ento, aps uma anlise das possveis aplicaes do sistema OBD-II a sistemas
embarcados, optou-se pelo desenvolvimento de um dispositivo capaz de exercer tanto as
funes de computador de bordo, como tambm as funes de escner porttil.

20
3 PROTTIPO DESENVOLVIDO
3.1 Proposta de Projeto
O projeto proposto para este trabalho foi o desenvolvimento de um dispositivo
eletrnico microcontrolado capaz de se comunicar, via barramento CAN, com um veculo de
passeio por meio do sistema OBD-II.
Aps muitas pesquisas de projetos j existentes, onde as caractersticas interface com
o usurio, conexo com o veculo, tamanho do dispositivo e funcionalidades embarcadas
foram analisadas, foi definido o design do prottipo, cujos esboos iniciais so apresentados
na Figura 3.1.
Figura 3.1 - Esboos iniciais do design do prottipo

Fonte: Prpria

Em relao interface com o usurio, foi definido que as informaes do veculo


obtidas pelo dispositivo seriam exibidas em um display LCD, sendo a exibio das
informaes controlada por meio de 3 botes (Central, Esquerdo e Direito). Alm disso, um
potencimetro foi previsto para controle da luminosidade do display LCD.
Em relao conexo com o veculo, foi definida a utilizao de um conector DB9,
localizado na parte central traseira do dispositivo, para permitir a conexo com o veculo por
meio de um cabo OBD-II Tipo B (SAE J1962 / DB9F), o qual encontra-se ilustrado,
juntamente com o seu diagrama eltrico, na Figura 3.2.

21
Figura 3.2 - Cabo OBD-II Tipo B e seu diagrama eltrico

Fonte: Site AutoCheckEngine [http://autocheckengine.com/products/obdii_cable_type_b.htm]

Em relao ao tamanho do dispositivo, foi definida a utilizao de uma placa de cobre


de 10 cm de comprimento e 10 cm de largura para o hardware, permitindo a alocao de todos
os componentes de interface com o usurio (display, botes e potencimetro) e apresentando
boa ergonomia para a operao do dispositivo.
Por fim, em relao s funcionalidades embarcadas, foi definido que, alm da funo
principal de obteno e exibio de informaes do veculo, o dispositivo tambm
apresentaria um sensor de temperatura (medio da temperatura interna do veculo), uma
sada PWM (possvel utilizao em equipamentos de Apurao e Cronometragem de Rallys),
programao in-circuit ICSP e uma chave liga/desliga.
3.2 Microcontrolador
Para a escolha do microcontrolador a ser utilizado neste projeto, foram definidos dois
pr-requisitos bsicos: possuir Mdulo CAN integrado e apresentar muitas portas I/O para o
controle do display LCD. Assim, foi utilizada a plataforma Parametric Search da Microchip
[http://www.microchip.com/ParamChartSearch/Chart.aspx?branchID=50], por meio da qual
foram buscados microcontroladores com Mdulo CAN integrado.
Ento, devido a experincias anteriores com microcontroladores da famlia dsPIC30F
e devido tambm ao fato de apresentar 30 portas I/O em um encapsulamento DIP (Dual Inline Package), o microcontrolador escolhido para este projeto foi o dsPIC30F4013-30I/P.

22
Figura 3.3 - Microcontrolador dsPIC30F4013

Fonte: Site Microchip [ww1.microchip.com/downloads/en/DeviceDoc/70138E.pdf]

O microcontrolador dsPIC30F4013 um dispositivo de arquitetura 16 bits, operao a


at 30 MIPS (milhes de instrues por segundo), faixa de tenso de operao de 2,5 a 5,5 V
e encapsulamento com 40 pinos. Apresenta mdulo ADC (conversor analgico digital) com
resoluo de 12 bits, mdulo PWM (modulao por largura de pulso) com resoluo de 16
bits e mdulo CAN com operao mxima de 1 Mbps (Microchip, 2010).
Para este projeto, os mdulos e perifricos do dsPIC30F4013 utilizados foram: portas
I/O (display LCD), mdulo de programao in-circuit (ICSP), Interrupo Externa 1 e
mdulo Change Notification (botes), mdulo CAN (interface CAN), mdulo PWM (sinal de
sada PWM) e mdulo ADC (medio de temperatura interna). Uma viso geral dos mdulos
e perifricos utilizados apresentada na Figura 3.4.
Figura 3.4 - Mapa dos pinos utilizados do dsPIC30F4013

Fonte: Site Microchip [ww1.microchip.com/downloads/en/DeviceDoc/70138E.pdf] com alteraes

23
Ento, escolhido o microcontrolador a ser utilizado neste projeto, foram solicitadas
duas amostras grtis diretamente Microchip, por meio da plataforma Samples Web Site
[http://www.microchip.com/samples/].
Figura 3.5 - Amostras enviadas pela Microchip

Fonte: Prpria

3.3 Outros Componentes


3.3.1 Display LCD
Para este projeto, foi escolhido um display LCD de 80 caracteres (matriz de 4 linhas e
20 colunas), devido ao seu tamanho adequado proposta do projeto e tambm devido sua
capacidade de exibio simultnea de vrias informaes.
Diversos fabricantes produzem placas contendo controladores integrados ao display
LCD, sendo o Hitachi HD44780 o controlador mais popular. A Figura 3.6 mostra a placa
utilizada neste projeto, ilustrando o display LCD e a interface com o controlador.
Figura 3.6 - Display LCD 20x4 com controlador integrado

Fonte: Prpria

24
O controlador Hitachi HD44780 possui faixa de tenso de operao de 2,7 a 5,5 V,
operao a at 2 MHz, interfaces 4-bit ou 8-bit e diversas funes pr-definidas, como display
clear, cursor home, display character blink, cursor shift e display shift (Hitachi Ltd., 1998).
A interface com o controlador se d por meio de 3 pinos de controle (RS, R/W e E) e 8
pinos de escrita de dados (D7-D0). Alm disso, na placa do display com o controlador
integrado h dois pinos de ajuste da tenso aplicada ao LED da luz de fundo (A e K),
responsveis pelo controle da luminosidade do display.
Para comandar o display LCD, utiliza-se dos 3 pinos de controle citados: o pino R/W
(Read/Write), o qual define se a operao a ser realizada de leitura ou de escrita, foi
diretamente aterrado para permitir somente operaes de escrita; j os pinos RS (Register
Selection), o qual define se a operao a ser realizada de instruo de comando ou de escrita
de caracteres, e E (Enable), o qual controla o envio de comandos ao display, so controlados
diretamente pelo microcontrolador.
O envio de dados e comandos ao display pode ser realizado pelos modos 4-bit e 8-bit,
os quais referem-se quantidade de bits enviados sequencialmente. Para este projeto, optouse pelo modo 4-bit, devido necessidade de utilizar apenas 4 pinos de dados (D7-D4), em vez
de todos os 8 pinos (D7-D0). Assim, o envio de dados feito em dois envios consecutivos dos
nibbles superior e inferior, ambos liberados por meio de um pulso negativo no pino E.
E, em relao aos pinos de controle de luminosidade (A-K), foi implementada uma
diferena de potencial definida por um potencimetro linear para a realizao de um controle
linear do LED da luz de fundo do display.
3.3.2 Transceptor CAN
Para a conexo entre um microcontrolador que apresenta mdulo CAN integrado e o
barramento CAN propriamente dito, necessrio um dispositivo capaz de converter os sinais
digitais em sinais diferenciais e vice-versa. Para este projeto, o dispositivo escolhido para
interfacear o microcontrolador e o barramento CAN foi o Microchip MCP2551.
Figura 3.7 - Transceptor CAN MCP2551

Fonte: Documento TB3101 Microchip [http://ww1.microchip.com/downloads/en/DeviceDoc/90003101A.pdf]

25
O MCP2551 um transceptor CAN (funes de transmissor e receptor) responsvel
pela interface controlador-barramento. Ele possui faixa de tenso de operao de 4,5 a 5,5 V,
operao a at 1 Mbps e funcionamento como buffer de proteo para o controlador contra
picos de tenso no barramento CAN (Microchip, 2010).
Vale ressaltar que h a necessidade de se utilizar, conforme visto na Figura 3.7, um
resistor de 120 entre os sinais do barramento CAN, o qual funciona como uma terminao
eltrica para minimizar interferncias nos sinais de comunicao.
3.4 Firmware
Definidos o escopo do projeto e os principais componentes, iniciou-se, em seguida, o
desenvolvimento do firmware a ser gravado no microcontrolador. A lgica implementada est
apresentada no fluxograma da Figura 3.8.
Figura 3.8 - Fluxograma da Lgica Implementada

Fonte: Prpria

26
Para este projeto, dado que o microcontrolador escolhido fabricado pela Microchip,
foi utilizado o software MPLAB X IDE (Integrated Development Environment), tanto para
desenvolvimento do programa como para gravao do firmware no microcontrolador.
Figura 3.9 - Ambiente de Desenvolvimento Integrado MPLAB X

Fonte: Prpria

Assim, o programa desenvolvido, o qual apresentado no Anexo A deste trabalho e


baseado no fluxograma ilustrado na Figura 3.8, foi escrito em linguagem C e detalhadamente
comentado linha-a-linha para fins explicativos e didticos no mbito deste trabalho.
Por fim, para realizar a gravao do firmware no microcontrolador, foram utilizados o
mdulo ICSP do dsPIC e o programador Microchip PICkit3 em conjunto com o MPLAB X.
Figura 3.10 - Esquemtico para Gravao do Firmware

Fonte: Guia do Usurio do PICkit3 [http://ww1.microchip.com/downloads/en/DeviceDoc/52116A.pdf]

27
3.5 Hardware
O hardware do prottipo desenvolvido neste trabalho foi feito baseado no design
definido na Seo 3.1 e integralmente projetado no software Altium Designer. Tanto o
esquemtico do circuito, o qual apresentado no Anexo B, como o roteamento das trilhas, o
qual apresentado no Anexo C, foram definidos por meio dessa ferramenta.
Figura 3.11 - Ambiente de Desenvolvimento Integrado Altium Designer

Fonte: Prpria

Aps a definio do layout das trilhas e malhas da PCI (placa de circuito impresso),
iniciou-se o processo de manufatura da placa. Para este projeto, foi escolhido o mtodo da
transferncia trmica de imagem seguida de corroso por percloreto de ferro. Todo o processo
realizado, desde a transferncia das trilhas para a placa at a aplicao do verniz, est
ilustrado no Anexo D deste trabalho.
Figura 3.12 - Placa de Circuito Impresso Desenvolvida

Fonte: Prpria

28
Por fim, aps a manufatura e a montagem do hardware desenvolvido, realizou-se um
levantamento dos custos envolvidos neste projeto, a fim de se obter uma estimativa do
oramento necessrio para a produo do prottipo. O valor total do prottipo foi R$ 61,98, e
a lista de materiais utilizados com os respectivos custos apresentada na Tabela 3.1.
Tabela 3.1 - Lista de Materiais e Respectivos Custos

Componente / Material

Quantidade

Custo

Loja

Cabo OBD-II Tipo B

01

R$ 14,21

eBay

Capacitores, resistores

Vrios

R$ 3,60

Mori

Conectores, botes

Vrios

R$ 6,50

Mori

Cristal 20 MHz

01

R$ 5,00

Mori

Diodos, LEDs

Vrios

R$ 3,00

Mori

Display LCD 20x4

01

R$ 14,67

eBay

dsPIC30F4013

01

Microchip

L7805CV

01

R$ 2,00

Mori

MCP2551

01

Microchip

10

MCP9700

01

Microchip

11

Parafusos, porcas

Vrios

R$ 2,50

Mori

12

Percloreto de Ferro

01

R$ 10,00

Mori

13

Placa de cobre 10x10

01

R$ 3,00

Mori

Custo Total: R$ 61,98


3.6 Funcionamento
Finalizado o processo de produo do prottipo projetado, iniciaram-se os testes de
funcionamento. O primeiro passo para a configurao do dispositivo foi a definio dos PIDs
suportados pelo veculo de testes, que, no caso, foi um Toyota Etios Hatchback XLS.
Figura 3.13 - Toyota Etios Hatchback XLS

Fonte: Site Toyota [http://www.toyota.com.br/modelos/etios-hatch/]

29
Por meio dos PIDs 0x00, 0x20 e 0x40, foi possvel solicitar ao veculo de testes a
informao sobre quais PIDs so suportados, ou seja, quais parmetros veiculares o sistema
OBD-II fornece em tempo real. A Tabela 3.2 ilustra os PIDs suportados, alm de indicar
tambm quais foram os 11 PIDs escolhidos para implementao neste projeto.
Tabela 3.2 - PIDs Suportados pelo Veculo de Testes

PID
Suportado
Implementado
PID
Suportado
Implementado
PID
Suportado
Implementado
PID
Suportado
Implementado
PID
Suportado
Implementado
PID
Suportado
Implementado

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
X X
X X X X X
X X X X X
X X X
X X X
X
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
X
X X X
X
X
X
X
X
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
X X
X X
X
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
X
X
X
X
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
X X
X X
X
X X
X X X
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F

A Tabela 3.3 indica os 11 PIDs escolhidos para implementao, apresentando o cdigo


PID em hexadecimal, a descrio dos parmetros veiculares e as suas respectivas unidades.
Tabela 3.3 - PIDs Escolhidos para Implementao

PID
Descrio
Unidade
Carga do Motor Percentual
%
1 0x04
Velocidade do Motor
rpm
2 0x0C
Velocidade do Veculo
km/h
3 0x0D
Posio do Acelerador
%
4 0x11
kPa
5 0x0B Presso do Coletor de Admisso
mm:ss
6 0x1F Tempo desde a Partida do Motor
C
7 0x05 Temperatura da gua do Motor
C
8 0x0F Temperatura do Ar de Admisso
Nvel do Combustvel
%
9 0x2F
10 0x03 Status do Sistema de Combustvel
Padro OBD
11 0x1C

30
Assim, aps a implementao da requisio dos PIDs escolhidos para este projeto, foi
definida uma estrutura de funcionamento baseada em dois menus de visualizao de dados:
Tempo Real e Diagnstico. No Menu Tempo Real, so exibidas as informaes em tempo
real referentes aos parmetros veiculares, obtidas por meio da requisio dos PIDs escolhidos.
No Menu Diagnstico, so exibidas as informaes referentes resposta da solicitao de
DTCs (Modo 0x03), indicando a existncia ou a inexistncia de algum cdigo de falha.
Figura 3.14 - Programao da Estrutura de Funcionamento

Fonte: Prpria

Ento, realizada a primeira conexo do prottipo desenvolvido com o veculo de


testes, foram obtidos os resultados esperados para o funcionamento do dispositivo. Esses
resultados so apresentados nas Figuras 3.15 e 3.16 para requisio de PIDs e para requisio
de DTCs, respectivamente.
Figura 3.15 - Funcionamento do Modo Tempo Real

31

Fonte: Prpria
Figura 3.16 - Funcionamento do Modo Diagnstico

Fonte: Prpria

Analisando-se os resultados obtidos por meio do Menu Tempo Real, foi possvel
verificar que todos os valores requisitados dos parmetros veiculares em tempo real foram
informados corretamente e com resposta imediata a variaes.
E, analisando-se os dados informados pelo veculo em resposta ao Modo de
Requisio de Dados 0x03 por meio do Menu de Diagnstico, foi possvel verificar que,
conforme a Tabela 2.4, os dois bytes de diagnstico fornecidos pelo veculo foram ambos
0x00, indicando que o veculo de testes no apresenta nenhum cdigo de falha armazenado na
sua memria.

32
4 CONCLUSO
Os objetivos iniciais deste trabalho foram a realizao de um estudo aprofundado do
atual padro de sistema de diagnstico automotivo e o desenvolvimento de um prottipo para
aplicao dos conhecimentos estudados. Assim, analisando os resultados obtidos nos testes de
funcionamento do dispositivo desenvolvido, pode-se concluir que todos os objetivos iniciais
foram alcanados satisfatoriamente.
As principais dificuldades encontradas durante o desenvolvimento deste trabalho
foram a quantidade nfima de referncias em portugus sobre o sistema OBD-II e a complexa
configurao Bit Timing do protocolo de comunicao CAN que foi implementada no
microcontrolador. Apesar das dificuldades, o trabalho foi muito bem-sucedido, possibilitando
ao autor um relevante aprendizado na rea de Eletrnica Automotiva e uma forte evoluo
nos conhecimentos em Sistemas Embarcados.
Por fim, como sugestes para trabalhos futuros, pode-se indicar o estudo comparativo
entre os protocolos de comunicao CAN e FlexRay para aplicaes automotivas, a aplicao
de tecnologias de comunicao sem fio para dispositivos OBD-II, a anlise do sistema
OBDBr-2 conforme Resoluo 354/2004 do CONAMA e Instrues Normativas 126/2006 e
24/2009 do IBAMA, e o estudo analtico dos protocolos de segurana de dados aplicados aos
sistemas de diagnstico veicular.

33
REFERNCIAS BIBLIOGRFICAS
GUIMARES, A. A., Eletrnica Embarcada Automotiva, 1 ed., So Paulo, 2007.
MANAVELLA, H. J., Diagnstico Automotivo Avanado, 1 ed., So Paulo, 2009.
ANDREATINI, A. M., A Diagnose Auxiliando o Motorista, In: 5 Seminrio sobre a
Eletroeletrnica Aplicada Mobilidade, So Paulo, 2003.
Parlamento Europeu, Directive 98/69/EC, In: Official Journal L 350, 1998.
Governo Australiano, Australian Design Rule 79/01, In: ComLaw Website, 2005.
Governo Australiano, Australian Design Rule 79/02, In: ComLaw Website, 2005.
Robert Bosch GmbH, CAN Specification Version 2.0, 1991.
HARTWICH, F., The Configuration of the CAN Bit Timing, In: 6 Conferncia CAN
Internacional, Turin, 1999.
Site Oficial Environmental Protection Agency (Disponvel em: http://www.epa.gov/obd/,
Acesso em: 20 de outubro de 2014)
Site Oficial California Air Resources Board (Disponvel em: http://www.arb.ca.gov/msprog
/odprog/obdprog.htm, Acesso em: 20 de outubro de 2014)
Site Oficial CAN in Automation (Disponvel em: http://www.can-cia.org/index.php?id=can,
Acesso em: 20 de outubro de 2014)
Microchip Technology Inc., dsPIC30F4013 Data Sheet, 2010.
Microchip Technology Inc., MCP2551 Data Sheet, 2010.
Microchip Technology Inc., Understanding Microchips CAN Module Bit Timing, 2001.
Hitachi Ltd., HD44780U Data Sheet, 1998.

34
APNDICE A
GLOSSRIO ELETRNICA DESCOMPLICADA
(Disponvel em: http://www.automotivebusiness.com.br/dicionario.pdf)
(Acesso em: 12 de setembro de 2014)
ABS (Anti-lock Brake System): sistema que controla a ao dos freios sobre cada roda,
evitando que elas travem. Em frenagens severas, esta ao reduz o espao de frenagem entre
20 e 30% e ainda mantm o controle direcional do veculo.
ACC (Automatic Climate Control): mdulo eletrnico que comanda o aquecimento, arcondicionado e distribuio do ar pelo habitculo, controlando principalmente a temperatura
do ar fornecido. Tambm conhecido como ECC (Electronic Climate Control), ou
popularmente como ar condicionado digital.
ACM (Airbag Control Module): mdulo eletrnico de controle do sistema de airbag.
Realiza clculos sofisticados a partir de dados vindos de sensores instalados em diversos
pontos do automvel para identificar sem enganos uma coliso e disparar o enchimento dos
airbags em milsimos de segundo.
AFL (Adaptive Forward Lighting): sistema que modifica automaticamente o padro de
acendimento dos faris conforme as condies ambientes para melhor visibilidade do
motorista. Tambm abaixa o facho de luz quando houver outro carro passando no sentido
contrrio.
Alternador: gerador, capaz de transformar energia mecnica em eltrica. No automvel, ele
absorve energia mecnica do motor para suprir a alimentao de todos os sistemas eltricos,
alm de oferecer a recarga adequada para a bateria. Para alguns modelos de automveis
futuros, o alternador e o motor de partida sero reunidos num nico equipamento.
Arquitetura eletroeletrnica: a forma de interligar os sistemas eletrnicos dentro do
automvel. Na arquitetura centralizada todos os sensores e atuadores so ligados em um nico
mdulo eletrnico, que concentra as funes de controle de todos os sistemas. Na arquitetura
distribuda existem vrios mdulos eletrnicos, cada qual especializado no controle de um
sistema especfico, para onde convergem todos os sensores e atuadores daquele sistema, e que
se comunica com os demais mdulos, enviando e recebendo informaes e comandos.
ASR (Anti Slip Regulator): sistema que evita o escorregamento dos pneus de trao sob
forte acelerao. Caso uma das rodas de trao escorregue, o ASR atua atravs do sistema do
diferencial eletrnico (EDS), ou caso as duas rodas destracionem simultaneamente, envia um

35
comando para o mdulo de injeo eletrnica do motor para reduzir momentaneamente a
potncia.
Atuadores: dispositivos eletromecnicos que transformam comandos eltricos em aes
mecnicas proporcionais. Um bico injetor possui uma vlvula mecnica que se abre quando o
mdulo de injeo energiza a bobina do bico. Como o bico injetor tem uma vazo calibrada,
h uma proporo entre o tempo que o bico fica aberto e a quantidade de combustvel
injetado, permitindo que o mdulo da injeo controle precisamente a quantidade de
combustvel fornecida naquele evento.
Automatic Headlamp Leveling: sistema que monitora a altura das rodas em relao ao
veculo e atua sobre a inclinao dos faris para manter constante a inclinao dos fachos de
luz em relao ao solo. O recurso obrigatrio em sistemas de iluminao de alta potncia,
como faris de xenon, para evitar o ofuscamento da viso dos motoristas que trafegam no
sentido contrrio.
Barramento: conjunto de condutores eltricos ou ticos que formam um canal de
comunicao digital comum entre vrios mdulos eletrnicos. As informaes que fluem pelo
barramento so formatadas segundo um protocolo de comunicao.
Bateria: dispositivo eltrico capaz de armazenar energia na forma eletroqumica e depois
disponibiliz-la eletricamente. Sua capacidade expressa em Ampres-hora. O padro atual
de tenso de 12 Volts, porm um novo padro de 42 Volts est em estudo para suprir as
necessidades futuras dos sistemas e acessrios automotivos.
CAN (Controller Area Network): sistema padronizado de rede local para a troca de dados
entre computadores. Usada nos automveis para comunicao entre os vrios mdulos
eletrnicos, permitindo que operem de forma integrada.
CC (Cruise Control): sistema de controle automtico de velocidade. Mantm uma
velocidade de cruzeiro constante de acordo com a programada pelo motorista. Popularmente
conhecido como piloto automtico. Sua evoluo, o ACC (Automatic Cruise Control no
confundir com Automatic Climate Control, que usa a mesma sigla) usa um radar para
monitorar obstculos e veculos frente. Dependendo da velocidade de aproximao do
obstculo, o ACC pode desacelerar o motor ou mesmo comandar os freios automaticamente,
sem a interveno do motorista. Quando no houver mais obstculos em aproximao, o
sistema volta a acelerar at a velocidade programada.
Chicote: conjunto unificado de fios, formando um nico componente. Um chicote une
mecanicamente vrios fios que passam pelo mesmo lugar. Os fios so terminados em

36
conectores, facilitando a manipulao e a conexo eltrica correta em componentes eltricos
ou em outros chicotes. Tambm conhecido como fiao.
Cluster: Conjunto unificado em que so montados todos os instrumentos, displays, luzes
indicadoras, e circuitos impressos.
DAB (Digital Audio Broadcast): sistema de radiodifuso em padro digital. um padro
menos sensvel a rudos e interferncias que os atuais sistemas AM e FM e permite mais
estaes dentro da mesma banda.
Deteco de falhas: sistemas digitais podem realizar checagens de funcionamento de
sensores e atuadores junto com suas funes normais de controle. Quando detectam uma
inconsistncia em algum componente, este pode ser desabilitado e um cdigo indicativo desta
falha gerado. Dependendo do problema, o programa do mdulo saber se pode continuar
operando em segurana e, caso o defeito tenha sido de um sensor no crtico, pode simular
seu funcionamento para a rotina principal de controle a partir de dados dos demais sensores,
aumentando a tolerncia a falhas do sistema.
Diagnstico veicular: conjunto de hardware e software que avalia as condies de
funcionamento passadas e presentes dos mdulos eletrnicos do veculo. Ele pode ser feito on
board pelo prprio motorista ou off board, atravs de uma unidade de diagnstico ou tester. A
unidade de diagnstico ligada ao veculo por meio de uma porta de comunicao (nos
veculos mais modernos, no padro OBD II), e l pode-se observar as leituras de todos os
sensores e demais parmetros operacionais com que cada mdulo do veculo est operando. A
unidade pode tambm ler todo histrico de cdigos de falha armazenado na memria de cada
mdulo, traduzir este cdigo para uma descrio mais compreensvel para o mecnico ou
ainda adotar medidas para sanar os problemas.
Display: mostrador eletrnico. Pode informar dados de diversas formas (numrica,
alfanumrica, grfica) e usar diferentes tipos de tecnologia (LED, OLED, LCD, etc.).
DTC (Diagnostic Trouble Code): cdigo de diagnstico de falha. um nmero gerado pelo
mdulo de controle respectivo falha detectada. Quando a unidade de diagnstico l este
cdigo, pode buscar uma descrio equivalente da falha que seja compreensvel ao mecnico.
O registro dos cdigos de falha na memria dos mdulos de controle permite ao mecnico
verificar falhas intermitentes que no estejam ocorrendo no instante da leitura destes dados.
EBD (Electronic Brake force Distribution): sistema que controla independentemente a
fora de frenagem em cada roda a partir das capacidades previstas de aderncia para elas.
Num veculo em curva, por exemplo, o peso transferido das rodas internas para as externas
curva, diminuindo a capacidade de frenagem das rodas internas e aumentando a das externas.

37
Sem o EBD, numa frenagem de emergncia em curva as rodas internas podem travar ou o
ABS atuar sobre elas prematuramente, muito antes do limite das rodas externas ser atingido,
diminuindo a eficincia da frenagem e comprometendo a estabilidade direcional do veculo.
Com o EBD, as rodas so freadas proporcionalmente s suas capacidades naquele instante,
equilibrando a frenagem.
EDC (Electronic Diesel Control): mdulo eletrnico de controle para sistemas de injeo de
motores a Diesel.
EDS (Electronic Diferential-lock System): sistema que controla o escorregamento das rodas
motrizes atuando sobre os freios destas rodas. Caso uma das rodas motrizes deslize por
excesso de potncia de acelerao, o EDS aciona o freio desta roda, limitando seu
escorregamento e permitindo que mais potncia seja direcionada para a outra roda atravs do
diferencial. O conjunto funciona como um diferencial com bloqueio inteligente.
EFI (Electronic Fuel Injection): designa genericamente injeo eletrnica de combustvel
para motores de ciclo Otto. O termo pode ser substitudo por outros que sejam mais
especficos ao tipo de injeo utilizada, como injees monoponto (SPI Single Point
Injection), multiponto (MPFI Multi Point Fuel Injection) ou injeo sequencial (SFI
Sequential Fuel Injection).
EKS (Electronic clutch System): sistema eletrnico que aciona automaticamente a
embreagem em sistemas de cmbio convencional, dispensando o pedal de acionamento.
Eletrnica Embarcada: sistema eletrnico projetado para ser usado em algum tipo
especfico de veculo de transporte, onde as exigncias so superiores s dos sistemas
eletrnicos fixos. Entre estas exigncias esto a maior resistncia a vibraes, maior
tolerncia a condies climticas adversas (frio, calor, umidade, exposio ao sol e gua,
etc.), tolerncia total ou parcial a sobrecargas e interferncia eletromagntica, entre outros
fatores.
ESP (Electronic Stability Program): sistema que atua independentemente sobre os freios de
cada roda para manter o controle direcional do veculo. Se o veculo sofrer um desvio por um
escorregamento das rodas dianteiras, o freio da roda traseira do lado oposto ao desvio
acionado, trazendo o veculo de volta trajetria. Se o desvio for causado pelo
escorregamento das rodas do eixo traseiro, o freio da roda dianteira do mesmo lado do desvio
do eixo traseiro acionado.
ETC (Electronic Throttle Control): sistema de abertura controlada eletronicamente da
borboleta de acelerao. Substitui o tradicional cabo de ao por um potencimetro que mede a
posio do pedal do acelerador, e um motor eltrico controlado pelo mdulo eletrnico da

38
injeo que atua sobre a abertura da borboleta. Conhecido popularmente como acelerador
eletrnico.
Fusvel: componente de proteo do circuito eltrico contra sobrecargas. simplesmente um
condutor calibrado para fundir-se ao ser percorrido por determinada corrente eltrica,
protegendo a fiao e demais componentes eltricos contra sobrecargas. Entretanto, ele no
protege sistemas eletroeletrnicos sensveis a vrios outros tipos de defeitos.
GPS (Global Positioning System): sistema que permite calcular o posicionamento na
superfcie da Terra de um receptor que l sinais enviados por satlites especiais. Receptores
de GPS especficos para automveis combinam as informaes de posicionamento local e de
destino com mapas de ruas para projetar rotas e indicar direes verbalmente aos motoristas.
Infotainment: termo em ingls que aglutina o termo information com o termo
entretainment. No automvel refere-se aos recursos que juntam entretenimento (rdio, TV,
filmes, msica) e informao (computador de bordo completo, celular, internet, web, e-mail)
para o motorista e os passageiros.
Interruptor: dispositivo eltrico usado para controlar a interrupo da corrente eltrica em
um circuito. Pode ser usado para ligar e desligar circuitos ou partes dele, alterando seu
funcionamento. Na maioria dos casos, os comandos eltricos manuais do automvel so
interruptores.
Mdulo eletrnico: mdulo eletrnico feito para concentrar todas as funes de controle para
aplicaes especficas. Tambm chamado de ECM (Electronic Control Module) ou ECU
(Electronic Control Unit).
Motor de partida: motor eltrico que inicia o funcionamento do motor de combusto do
veculo, que necessita de uma rotao mnima para se manter operando. O motor de partida
movimenta o motor principal da imobilidade at a rotao mnima de funcionamento em
condies de sustentao.
OBD (On-Board Diagnostics): interface de comunicao padronizada para mdulos
eletrnicos automotivos, usada por sistemas de diagnstico. O padro atual o OBD II, que
une sob um mesmo conector fsico quatro padres de comunicao anteriores (SAE J1850
VPW usado pela GM americana, SAE J1850 PWM usado pela Ford americana, ISO 9141
usada pela Chrysler, todos os fabricantes europeus e boa parte dos demais).
PAS (Parking Assistant System): sistema de auxlio ao motorista para estacionamento.
Atravs de sensores, avalia a existncia de obstculos fora do campo de viso do motorista,
enquanto uma tela no painel mostra imagens de uma cmera instalada na traseira do veculo
sobrepostas por marcas de distncias e de limites, enquanto alertas auditivos e visuais podem

39
ser disparados em intensidade proporcional ao risco de coliso. Sistemas mais avanados,
inteligentes (IPAS Inteligent Assistant System) podem realizar a manobra sozinhos,
monitorados pelo motorista.
Passive Entry and Start System: sistema que permite ao motorista trancar e destrancar as
portas do automvel e dar a partida no motor sem usar chaves. O motorista carrega consigo
um pequeno transponder que transmite um sinal de rdio codificado para um mdulo
eletrnico que destrava as portas e libera o acionamento do boto de partida. Quando o
veculo est estacionado, o simples afastamento do motorista faz o mdulo travar as portas e
bloquear a partida.
RDS (Radio Data System): padro de transmisso de dados em conjunto com os sinais das
emissoras de radiodifuso. Entre as informaes transmitidas podem estar o nome da
emissora, frequncia, nome do programa ou da msica, tipo de programao e informaes
sobre o trnsito.
Rel: tipo de interruptor acionado por solenoide. Um rel pode possuir um ou mltiplos
contatos acionados simultaneamente pelo solenoide, permitindo que um nico comando
eltrico interfira em vrios circuitos eltricos independentes ou que uma corrente de baixa
intensidade possa comandar uma carga que demande alta corrente. geralmente um elemento
de comando de sistemas.
Sensores: dispositivos eletroeletrnicos que transformam diversas grandezas fsicas em
grandezas eltricas correspondentes que podem ser medidas pelos mdulos eletrnicos. O
sensor de temperatura do motor varia sua resistncia eltrica em funo da temperatura da
gua de refrigerao. Ao medir a resistncia eltrica do sensor, o mdulo de injeo eletrnica
pode calcular a temperatura do motor.
TPMS (Tyre Pressure Monitoring System): sistema com um sensor de presso em cada
roda, capaz de indicar a presso dos pneus no computador de bordo e alertar o motorista para
um pneu com baixa presso ou que esteja perdendo presso rapidamente.
Touch Switch: interruptor de toque. Interruptor eletrnico sensvel ao toque humano,
eliminando a ao mecnica dos interruptores convencionais.
Tracking System: sistema de rastreamento que permite acompanhar o posicionamento do
veculo ao longo do tempo. Pode ser passivo, com o sistema registrando informaes
internamente para leitura posterior; ou ativo, onde o sistema transmite continuamente sua
posio para monitorao em tempo real. muito usado o sistema GPS, mas tambm podem
ser usados transponders lidos por estaes fixas ao longo das vias.
Transceptor: equipamento que concentra um transmissor e um receptor.

40
Transponder: transceptor automtico, que responde com uma mensagem automtica, fixa ou
no, a uma mensagem enviada por outro sistema. Nos sistemas de chave codificada, um
transponder no corpo da chave responde com um cdigo a uma mensagem de rdio enviada
por um transceptor no painel. Caso a mensagem enviada pelo transponder da chave seja a
mesma da chave original, o mdulo de injeo eletrnica habilita-se para que o motor possa
funcionar.
USB (Universal Serial Bus): interface de comunicao padronizada para computadores e
dispositivos.
X-by-Wire: tecnologia genrica onde um comando mecnico ou hidrulico substitudo por
um mdulo de controle, sensores e atuadores, desfazendo a conexo direta entre o dispositivo
de comando e o sistema comandado. Originado no setor aeronutico (fly-by-wire), est
surgindo no setor automotivo aplicado ao acelerador (drive-by-wire), freios (brake-by-wire),
direo (steering-by-wire).

41
APNDICE B
NORMAS APLICADAS AO SISTEMA OBD
(Disponvel em: http://en.wikipedia.org/wiki/On-board_diagnostics#Standards_documents)
(Acesso em: 7 de outubro de 2014)
SAE J1850: define os protocolos de comunicao serial VPW e PWM.
SAE J1939: define o protocolo de comunicao para veculos heavy duty.
SAE J1962: define o conector de diagnstico padro.
SAE J1978: define os requisitos mnimos de operao das ferramentas de diagnstico.
SAE J1979: define a padronizao para os modos de diagnstico.
SAE J2012: define a padronizao para os cdigos de falha.
SAE J2178-1: define os formatos de cabealho de mensagens e endereamento.
SAE J2178-2: fornece as definies dos parmetros dos dados veiculares.
SAE J2284-3: define as camadas fsica e de dados do protocolo CAN 500 kbps.
ISO 9141: Sistemas de Diagnstico
Parte 1: Requirements for interchange of digital information
Parte 2: CARB requirements for interchange of digital information
Parte 3: Verification of the communication between vehicle and OBD II scan tool
ISO 11898: Controller Area Network (CAN)
Parte 1: Data link layer and physical signalling
Parte 2: High-speed medium access unit
Parte 3: Low-speed, fault-tolerant, medium-dependent interface
ISO 15031: Comunicao entre veculo e ferramenta de diagnstico relativo a emisses
Parte 1: General information and use case definition
Parte 2: Guidance on terms, definitions, abbreviations and acronyms
Parte 3: Diagnostic connector and related electrical circuits, specification and use
Parte 4: External test equipment
Parte 5: Emissions-related diagnostic services
Parte 6: Diagnostic trouble code definitions
ISO 15765: Diagnstico em redes CAN
Parte 1: General information
Parte 2: Network layer services ISO 15765-2
Parte 3: Implementation of unified diagnostic services (UDS on CAN)
Parte 4: Requirements for emissions-related systems

42
ANEXO A
// BIBLIOTECAS
#include <p30F4013.h>
// CONFIGURAES
_FOSC(HS2_PLL8);
_FWDT(WDT_OFF);
_FICD(ICS_PGD);

// Oscilador: HS/2 w/PLL 8x


// Watchdog: Desligado
// Pinos ICSP: PGC/EMUC e PGD/EMUD

// DEFINIES
#define Fosc
#define Fcy
#define FT1
#define PrescaleT1
#define PeriodoT1
#define FPWM
#define PrescalePWM
#define PeriodoPWM
#define DutyCycle1

8 * (20000000/2)
Fosc / 4
1000000
1
Fcy / (FT1*PrescaleT1)
20000
1
Fcy / (FPWM*PrescalePWM) - 1
(PeriodoPWM + 1) / 100

#define
#define
#define
#define
#define
#define
#define
#define

_RF4
_RF5
_LATD3
_LATD9
_LATA11
_LATC14
_LATC13
_LATB8

BotaoD
BotaoC
LCD_RS
LCD_E
LCD_DB4
LCD_DB5
LCD_DB6
LCD_DB7

#define true
#define false

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

CN17
CN18
RD3
RD9
RA11
RC14
RC13
RB8

1
0

// VARIVEIS
int
FlagBotaoE = false, FlagBotaoD = false, FlagBotaoC = false;
int
i, n, ContadorT1 = 0, LimiteContadorT1;
int
PorcentagemDC, DutyCycle = 50;
float BufferAD, TensaoADReal, TensaoADTemp, TemperaturaAD, TemperaturaInterna;
int
char

ModoLCD, ComandoLCD, MenuDeExibicaoLCD = 1, PaginaDeExibicaoLCD = 1;


CharLCD, StringLCD[20];

int
int
float
char

Modo, PID1, PID2;


PID, intA, intB, Minutos;
floatA, floatB, Segundos;
StringPID[20], StringDTC[20];

char
char
char
char
char
char
char
char
char
char

MensagemInicial1[20]
MensagemInicial2[20]
MensagemInicial3[20]
MensagemInicial4[20]
Mensagem1Pagina1[20]
Mensagem1Pagina2[20]
Mensagem1Pagina3[20]
Mensagem1Pagina4[20]
Mensagem2Pagina1[20]
Mensagem2Pagina2[20]

=
=
=
=
=
=
=
=
=
=

" UFC - DEE - TCC


"
Rodrigo Rocha
"
Sistema OBD
"
2014.2
" TEMPO REAL (1/4)
" TEMPO REAL (2/4)
" TEMPO REAL (3/4)
" TEMPO REAL (4/4)
" DIAGNOSTICO (1/1)
" Resposta Modo 0x03:

";
";
";
";
";
";
";
";
";
";

43
// PROTTIPOS
void ConfigurarIO();
void ConfigurarInterrupcoes();
void ConfigurarTimer1();
void ConfigurarPWM();
void ConfigurarADC();
void ConfigurarCAN();
void ConfigurarLCD();
void
void
void
float
int
void
void
void
void
void
void

PausaMs(int);
PausaUs(int);
AtualizarDC(int);
LerTemperatura();
ObterPID(int, int);
ObterDTC(void);
ComandarLCD(int, int);
EscreverCharLCD(char);
EscreverStringLCD(char*, int);
VerificacaoBotoes();
ExibicaoLCD();

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

Configurao
Configurao
Configurao
Configurao
Configurao
Configurao
Configurao
//
//
//
//
//
//
//
//
//
//
//

Funo
Funo
Funo
Funo
Funo
Funo
Funo
Funo
Funo
Funo
Funo

das portas I/O


das interrupes
do Timer 1
do PWM
do ADC
da CAN
do Display LCD

Pausa Milissegundos
Pausa Microssegundos
Atualizar Duty Cycle
Ler Temperatura em C
para Obteno de PIDs
para Obteno de DTCs
para Comandar o LCD
para Escrever Char no LCD
para Escrever String no LCD
para Verificao dos Botes
de Exibio do Display LCD

// *****************************************************************************
// TRATAMENTO DAS INTERRUPES
void _ISR _T1Interrupt()
{
_T1IF = 0;
ContadorT1++;
}
void _ISR _CNInterrupt()
{
_CNIF = 0;
if(BotaoC == 0)
FlagBotaoC = true;
else if(BotaoD == 0)
FlagBotaoD = true;
}
void _ISR _INT1Interrupt()
{
_INT1IF = 0;
FlagBotaoE = true;
}
// *****************************************************************************
// FUNO PRINCIPAL
int main()
{
ConfigurarIO();
ConfigurarInterrupcoes();
ConfigurarTimer1();
ConfigurarPWM();
ConfigurarADC();
ConfigurarCAN();
ConfigurarLCD();

44
while(true)
{
VerificacaoBotoes();
ExibicaoLCD();
}
}
// *****************************************************************************
// CONFIGURAES PRINCIPAIS
void ConfigurarIO()
{
_TRISD8 = 1;
_TRISF4 = 1;
_TRISF5 = 1;
_TRISD0 = 0;
_TRISF0 = 1;
_TRISF1 = 0;
_TRISB9 = 1;
_TRISD3 = 0;
_TRISD9 = 0;
_TRISA11 = 0;
_TRISC14 = 0;
_TRISC13 = 0;
_TRISB8 = 0;

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

INT1
CN17
CN18
OC1
C1RX
C1TX
ADC
RD3
RD9
RA11
RC14
RC13
RB8

ADPCFG = 0xFFFF;
_PCFG9 = 0;

(LCD)
(LCD)
(LCD)
(LCD)
(LCD)
(LCD)

// Portas analgicas desabilitadas


// Porta analgica AN9 (RB9) habilitada

}
void ConfigurarInterrupcoes()
{
_T1IP
= 0b111;
// Prioridade Timer 1
_CNIP
= 0b110;
// Prioridade Botes Central e Direito
_INT1IP = 0b101;
// Prioridade Boto Esquerdo
_T1IF
= 0;
_CNIF
= 0;
_INT1IF = 0;

// Flag Timer 1
// Flag Botes Central e Direito
// Flag Boto Esquerdo

_T1IE
_CNIE
_CN17IE
_CN18IE
_INT1IE

//
//
//
//
//

=
=
=
=
=

0;
1;
1;
1;
1;

Disable Timer 1
Enable Change Notification
Enable Boto Direito
Enable Boto Central
Enable Boto Esquerdo

}
// *****************************************************************************
// CONFIGURAES DOS MDULOS
void ConfigurarTimer1()
{
_TCKPS = 0b00;
PR1
= PeriodoT1;
TMR1
= 0;
_TON
= 1;
}

// Timer de 1 kHz
//
//
//
//

Prescale 1:1
Define o registrador PR1
Limpa o registrador TMR1
Inicia o Timer

45
void ConfigurarPWM()
{
_OCM
=
_OCTSEL
=
T2CONbits.TCKPS =
PR2
=
OC1R
=
OC1RS
=
TMR2
=
T2CONbits.TON
=
}
void ConfigurarADC()
{
_ASAM = 0;
_SSRC = 0b111;
_CH0SA = 0b1001;
_ADCS = 19;
_SAMC = 31;
_ADON = 1;
}

// PWM de 20 kHz
0b110;
0;
0b00;
PeriodoPWM;
0;
20 * DutyCycle1;
0;
1;

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

Seleciona o Modo PWM


Seleciona o Timer 2 como fonte
Prescale 1:1
Define o registrador PR2
Duty Cycle do primeiro ciclo (0%)
Duty Cycle dos demais ciclos (20%)
Limpa o registrador TMR2
Inicia o PWM

// ADC 12-bits de 1 canal


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

Amostragem: manual
Converso: automtica
Entrada analgica: AN9
Perodo do clock AD: Tad = (19+1)/2 * Tcy = 10 * Tcy
Perodo de amostragem: 31 * Tad
Inicia o ADC

void ConfigurarCAN()
// CAN 11bit 500kbps (Bit Timing = 1 + 3 + 8 + 8 = 20TQ)
{
_REQOP = 0b100;
// Altera o Modo de Operao: Configurao
while(_OPMODE != 0b100);
// Aguarda a alterao do Modo de Operao
C1TX0CONbits.TXREQ
C1TX0CONbits.TXPRI
C1TX0SIDbits.SID10_6
C1TX0SIDbits.SID5_0
C1TX0SIDbits.SRR
C1TX0SIDbits.TXIDE
C1TX0EIDbits.EID17_14
C1TX0EIDbits.EID13_6
C1TX0DLCbits.EID5_0
C1TX0DLCbits.TXRTR
C1TX0DLCbits.TXRB1
C1TX0DLCbits.TXRB0
C1TX0DLCbits.DLC
C1RX0CONbits.RXFUL
C1RX0CONbits.DBEN
C1RX1CONbits.RXFUL
C1RXM0SID
C1RXM0EIDH
C1RXM0EIDL
_CANCKS
_SAM
_SEG2PHTS
_BRP
_PRSEG
_SEG1PH
_SEG2PH
_SJW

=
=
=
=
=
=
=
=

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

1;
1;
1;
0b000000;
0b010;
0b111;
0b111;
0b11;

_REQOP = 0b000;
while(_OPMODE != 0b000);
}

0;
0b11;
0x1F;
0x1F;
0;
0;
0;
0;
0;
0;
0;
0;
8;
0;
1;
0;
0;
0;
0;
//
//
//
//
//
//
//
//

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

Clear no bit de Requisio de Transmisso


Prioridade de Transmisso Mais Alta
5 bits superiores do Functional ID 0x7DF
6 bits inferiores do Functional ID 0x7DF
Transmisso Normal*
Transmisso com Standard Identifier 11bit
Clear Registrador Extended Identifier
Clear Registrador Extended Identifier
Clear Registrador Extended Identifier
Transmisso Normal*
TX Reserved Bits
TX Reserved Bits
Transmisso de Mensagem em 8 bytes
Clear no bit de Recepo de Mensagem RX0
Overflow do RX0 direcionado para RX1
Clear no bit de Recepo de Mensagem RX1
Clear Registrador Acceptance Filter Mask
Clear Registrador Acceptance Filter Mask
Clear Registrador Acceptance Filter Mask

Fcan = Fcy
Trs Sample Points
Phase Segment 2 programvel
TQ = 2/Fcan (Baud Rate = 1/20TQ = Fcy/40)
Propagation Segment = 3TQ
Phase Segment 1 = 8TQ
Phase Segment 2 = 8TQ
Synchronized Jump Width = 4TQ
// Altera o Modo de Operao: Normal
// Aguarda a alterao do Modo de Operao

46
void ConfigurarLCD()
// Display LCD 20x4, Controlador SPLC780, Modo 4-bits
{
PausaMs(1);
// Aguarda a devida energizao do LCD
ComandarLCD(0,0x20);
// Define o Modo de Operao em 4-bits
ComandarLCD(1,0x28);
// Define o Nmero de Linhas igual a 4
ComandarLCD(1,0x0C);
// Liga o Display LCD
ComandarLCD(1,0x06);
// Define Incremento Positivo e Sem Shift
ComandarLCD(1,0x01);
// Clear no Display LCD
ComandarLCD(1,0x80+0); // Coloca o cursor na primeira posio
PausaMs(1);
// Aguarda a devida configurao do LCD
}
// *****************************************************************************
// FUNES COMPLEMENTARES
void PausaMs(int LimiteContadorT1)
// Funo Pausa Milissegundos
{
_T1IE = 1;
// Enable Timer1
for(i=0;i<1000;i++)
// Ciclo de reduo
{
while(ContadorT1 < LimiteContadorT1);
// Pausa o programa
ContadorT1 = 0;
// Zera o contador
}
_T1IE = 0;
// Disable Timer1
}
void PausaUs(int LimiteContadorT1)
// Funo Pausa Microssegundos
{
_T1IE = 1;
// Enable Timer1
while(ContadorT1 < LimiteContadorT1);
// Pausa o programa
ContadorT1 = 0;
// Zera o contador
_T1IE = 0;
// Disable Timer1
}
void AtualizarDC(int PorcentagemDC)
// Funo Atualizar Duty Cycle
{
if(PorcentagemDC < 0)
// Filtragem do valor PorcentagemDC
PorcentagemDC = 0;
// Filtragem do valor PorcentagemDC
else if (PorcentagemDC > 100)
// Filtragem do valor PorcentagemDC
PorcentagemDC = 100;
// Filtragem do valor PorcentagemDC
OC1RS = PorcentagemDC * DutyCycle1;
// Atualiza o Duty Cycle
}
float LerTemperatura()
// Funo Ler Temperatura em C
{
_SAMP = 1;
// Inicia a amostragem e a converso
while(!_DONE);
// Aguarda o fim da converso
BufferAD = ADCBUF0;
// Armazena o resultado da converso
_DONE = 0;
// Clear no bit DONE
TensaoADReal = 5 * (BufferAD/4095);
// Converso 12-bits para tenso
TensaoADTemp = TensaoADReal - 0.5;
// Elimina o piso de 500 mV a 0C
TemperaturaAD = TensaoADTemp / 0.01;
// Utiliza o fator de 10 mV / 1C
return TemperaturaAD;
// Retorna o valor calculado
}
int ObterPID(int Modo, int PID1)
// Obteno de
{
C1TX0B1 = (((Modo << 8) & 0xFF00) | ((0x02 >> 0) &
C1TX0B2 = (((0x55 << 8) & 0xFF00) | ((PID1 >> 0) &
C1TX0B3 = (((0x55 << 8) & 0xFF00) | ((0x55 >> 0) &

PIDs
0x00FF)); // Carrega os
0x00FF)); // 8 bytes
0x00FF)); // que sero

47
C1TX0B4 = (((0x55 << 8) & 0xFF00) | ((0x55 >> 0) & 0x00FF)); // transmitidos
C1TX0CONbits.TXREQ = 1;
// Requisita a transmisso da mensagem
while(C1TX0CONbits.TXREQ); // Aguarda a transmisso da mensagem
while(!C1RX0CONbits.RXFUL); // Aguarda o recebimento do PID
PID2 = ( (C1RX0B2 & 0xFF00) | (C1RX0B3 & 0x00FF) ); // Carrega A e B em PID2
C1RX0CONbits.RXFUL = 0;
return PID2;

// Clear no bit RXFUL


// Retorna a mensagem recebida

}
void ObterDTC()
{
C1TX0B1 = (((0x03
C1TX0B2 = (((0x55
C1TX0B3 = (((0x55
C1TX0B4 = (((0x55

// Obteno de DTCs
<<
<<
<<
<<

8)
8)
8)
8)

&
&
&
&

0xFF00)
0xFF00)
0xFF00)
0xFF00)

|
|
|
|

((0x01
((0x55
((0x55
((0x55

>>
>>
>>
>>

0)
0)
0)
0)

&
&
&
&

0x00FF));
0x00FF));
0x00FF));
0x00FF));

//
//
//
//

Carrega os
8 bytes
que sero
transmitidos

C1TX0CONbits.TXREQ = 1;
// Requisita a transmisso da mensagem
while(C1TX0CONbits.TXREQ); // Aguarda a transmisso da mensagem
while(!C1RX0CONbits.RXFUL); // Aguarda o recebimento do PID
sprintf(StringDTC," 0x%04X
0x%04X
",C1RX0B4,C1RX0B3);
EscreverStringLCD(StringDTC,20);
EscreverStringLCD(Mensagem2Pagina2,20);
sprintf(StringDTC," 0x%04X
0x%04X
",C1RX0B2,C1RX0B1);
EscreverStringLCD(StringDTC,20);
C1RX0CONbits.RXFUL = 0;

// Clear no bit RXFUL

}
void ComandarLCD(int ModoLCD, int ComandoLCD)
// Funo para Comandar o LCD
{
LCD_RS = 0;
// Define o modo de Instruo de Comando
LCD_DB7 = (ComandoLCD & 0b10000000) >> 7;
// Carrega
LCD_DB6 = (ComandoLCD & 0b01000000) >> 6;
// Carrega
LCD_DB5 = (ComandoLCD & 0b00100000) >> 5;
// Carrega
LCD_DB4 = (ComandoLCD & 0b00010000) >> 4;
// Carrega
LCD_E
= 1;
// Pulso de Subida
PausaUs(5);
// Aguarda a estabilizao do Pulso de
LCD_E
= 0;
// Pulso de Descida = Pulso de Enable

cada
cada
cada
cada

dos
dos
dos
dos

bits
bits
bits
bits

Subida

if(ModoLCD) // ModoLCD = 1 -> Modo de Operao em 4-bits


{
LCD_DB7 = (ComandoLCD & 0b00001000) >> 3;
// Carrega
LCD_DB6 = (ComandoLCD & 0b00000100) >> 2;
// Carrega
LCD_DB5 = (ComandoLCD & 0b00000010) >> 1;
// Carrega
LCD_DB4 = (ComandoLCD & 0b00000001) >> 0;
// Carrega
LCD_E
= 1;
// Pulso de Subida
PausaUs(5);
// Aguarda a estabilizao do Pulso de
LCD_E
= 0;
// Pulso de Descida = Pulso de Enable
}
PausaMs(1);

um
um
um
um

cada
cada
cada
cada

um
um
um
um

dos
dos
dos
dos

bits
bits
bits
bits

Subida

// Aguarda a estabilizao do LCD aps o comando

}
void EscreverCharLCD(char CharLCD)
// Funo para Escrever Chars
{
LCD_RS = 1;
// Define o modo de Escrita de Dados

48
LCD_DB7 = (CharLCD
LCD_DB6 = (CharLCD
LCD_DB5 = (CharLCD
LCD_DB4 = (CharLCD
LCD_E
= 1;
//
PausaUs(5);
//
LCD_E
= 0;
//

& 0b10000000) >> 7;


// Carrega bit por bit
& 0b01000000) >> 6;
// Carrega bit por bit
& 0b00100000) >> 5;
// Carrega bit por bit
& 0b00010000) >> 4;
// Carrega bit por bit
Pulso de Subida
Aguarda a estabilizao do Pulso de Subida
Pulso de Descida = Pulso de Enable

LCD_DB7 = (CharLCD
LCD_DB6 = (CharLCD
LCD_DB5 = (CharLCD
LCD_DB4 = (CharLCD
LCD_E
= 1;
//
PausaUs(5);
//
LCD_E
= 0;
//

& 0b00001000) >> 3;


// Carrega bit por bit
& 0b00000100) >> 2;
// Carrega bit por bit
& 0b00000010) >> 1;
// Carrega bit por bit
& 0b00000001) >> 0;
// Carrega bit por bit
Pulso de Subida
Aguarda a estabilizao do Pulso de Subida
Pulso de Descida = Pulso de Enable

PausaUs(100);

// Aguarda a estabilizao do LCD aps o comando

}
void EscreverStringLCD(char* StringLCD, int n)
{
for(i=0;i<n;i++)
EscreverCharLCD(StringLCD[i]);
}

// Funo para Escrever Strings

void VerificacaoBotoes()
// Funo para Verificao dos Botes
{
if(FlagBotaoC == true)
{
MenuDeExibicaoLCD++;
if(MenuDeExibicaoLCD > 3)
MenuDeExibicaoLCD = 1;
PaginaDeExibicaoLCD = 1;
PausaMs(100);
FlagBotaoC = false;
}
else if(FlagBotaoE == true)
{
PaginaDeExibicaoLCD--;
if(PaginaDeExibicaoLCD < 1)
PaginaDeExibicaoLCD = 1;
PausaMs(100);
FlagBotaoE = false;
}
else if(FlagBotaoD == true)
{
PaginaDeExibicaoLCD++;
if(PaginaDeExibicaoLCD > 4)
PaginaDeExibicaoLCD = 4;
PausaMs(100);
FlagBotaoD = false;
}
}
void ExibicaoLCD()
// Funo para Exibio dos Menus no Display LCD
{
if(MenuDeExibicaoLCD == 1)
{
EscreverStringLCD(MensagemInicial1,20);
EscreverStringLCD(MensagemInicial2,20);
EscreverStringLCD(MensagemInicial3,20);

49
EscreverStringLCD(MensagemInicial4,20);
PausaMs(250);
}
else if(MenuDeExibicaoLCD == 2)
{
if(PaginaDeExibicaoLCD == 1)
{
EscreverStringLCD(Mensagem1Pagina1,20);
PID = ObterPID(0x01,0x0C);
floatA = ( (PID & 0xFF00) >> 8 );
floatB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Rotacoes:
%.0f rpm
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x04);
floatA = ( (PID & 0xFF00) >> 8 );
floatB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Carga:
%.1f %%
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x0D);
intA = ( (PID & 0xFF00) >> 8 );
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Velocidade: %d km/h
EscreverStringLCD(StringPID,20);

",(256*floatA+floatB)/4);

",floatA*100/255);

",intA);

PausaMs(250);
}
else if(PaginaDeExibicaoLCD == 2)
{
EscreverStringLCD(Mensagem1Pagina2,20);
PID = ObterPID(0x01,0x0B);
intA = ( (PID & 0xFF00) >> 8 );
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Pressao IN: %d kPa
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x11);
floatA = ( (PID & 0xFF00) >> 8 );
floatB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Throttle:
%.1f %%
EscreverStringLCD(StringPID,20);

",intA);

",floatA*100/255);

PID = ObterPID(0x01,0x1F);
floatA = ( (PID & 0xFF00) >> 8 );
floatB = ( (PID & 0x00FF) >> 0 );
Minutos = (floatA*256 + floatB) / 60;
Segundos = (floatA*256 + floatB) - Minutos * 60;
sprintf(StringPID,"Tempo ON:
%dm%02.0fs
",Minutos,Segundos);
EscreverStringLCD(StringPID,20);
PausaMs(250);
}
else if(PaginaDeExibicaoLCD == 3)
{
EscreverStringLCD(Mensagem1Pagina3,20);
PID = ObterPID(0x01,0x0F);
intA = ( (PID & 0xFF00) >> 8 );

50
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Temp Intake: %d oC
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x05);
intA = ( (PID & 0xFF00) >> 8 );
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Temp Motor: %d oC
EscreverStringLCD(StringPID,20);
EscreverStringLCD("

",intA-40);

",intA-40);
",20);

PausaMs(250);
}
else if(PaginaDeExibicaoLCD == 4)
{
EscreverStringLCD(Mensagem1Pagina4,20);
PID = ObterPID(0x01,0x03);
intA = ( (PID & 0xFF00) >> 8 );
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Fuel System: 0x%02X
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x2F);
floatA = ( (PID & 0xFF00) >> 8 );
floatB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Fuel Level: %.1f %%
EscreverStringLCD(StringPID,20);
PID = ObterPID(0x01,0x1C);
intA = ( (PID & 0xFF00) >> 8 );
intB = ( (PID & 0x00FF) >> 0 );
sprintf(StringPID,"Padrao OBD: 0x%02X
EscreverStringLCD(StringPID,20);
PausaMs(250);
}
}
else if(MenuDeExibicaoLCD == 3)
{
EscreverStringLCD(Mensagem2Pagina1,20);
ObterDTC();
PausaMs(250);
}
}

",intA);

",floatA*100/255);

",intA);

51
ANEXO B

52
ANEXO C

53
ANEXO D

Das könnte Ihnen auch gefallen