Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELTRICA
CURSO DE GRADUAO EM ENGENHARIA ELTRICA
FORTALEZA
NOVEMBRO 2014
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)
___________________________________________________________________________
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
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
Analog-to-Digital Converter
BCM
CAN
CARB
DIP
dsPIC
DTC
ECU
EU
European Union
EOBD
ICSP
IDE
LCD
MIL
MIPS
OBD
On-Board Diagnostics
PCI
PCM
PID
PWM
Pulse-Width Modulation
SAE
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
14
Figura 2.2 - Logo da Sociedade dos Engenheiros Automotivos
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
Pino
Funo
Pino
Funo
No-padronizada
No-padronizada
10
No-padronizada
11
No-padronizada
Aterramento do Chassis
12
No-padronizada
Aterramento de Diagnstico
13
No-padronizada
14
15
No-padronizada
16
Tenso da Bateria
16
Figura 2.4 - Conector de Diagnstico do Toyota Etios
Fonte: Prpria
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
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
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
02
Fornece os valores dos parmetros veiculares quando ocorreu o DTC mais recente
03
04
05
18
06
07
08
09
0A
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
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
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
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
21
Figura 3.2 - Cabo OBD-II Tipo B e seu diagrama eltrico
22
Figura 3.3 - Microcontrolador dsPIC30F4013
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
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
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
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
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
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
01
R$ 3,00
Mori
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
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
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);
// 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
int
int
float
char
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]
=
=
=
=
=
=
=
=
=
=
";
";
";
";
";
";
";
";
";
";
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
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)
}
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;
//
//
//
//
//
//
//
//
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;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
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;
}
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;
}
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
um
um
um
um
cada
cada
cada
cada
um
um
um
um
dos
dos
dos
dos
bits
bits
bits
bits
Subida
}
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;
//
LCD_DB7 = (CharLCD
LCD_DB6 = (CharLCD
LCD_DB5 = (CharLCD
LCD_DB4 = (CharLCD
LCD_E
= 1;
//
PausaUs(5);
//
LCD_E
= 0;
//
PausaUs(100);
}
void EscreverStringLCD(char* StringLCD, int n)
{
for(i=0;i<n;i++)
EscreverCharLCD(StringLCD[i]);
}
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