Unidade de Gerenciamento Eletronico de U
Unidade de Gerenciamento Eletronico de U
Unidade de Gerenciamento Eletronico de U
São Paulo
2013
BRUNO CÉSAR FERNANDES PEREIRA
Área de Concentração:
Engenharia Elétrica - Sistemas Eletrônicos
São Paulo
2013
FICHA CATALOGRÁFICA
2D 2 Dimensões ou Bi-dimensional
3D 3 Dimensões ou Tri-dimensional
A/C Ar/Combustível
CI Circuito Integrado
cm Centímetro(s)
CO Monóxido de carbono
g Grama(s)
GND Ground
HC Hidrocarboneto(s)
Hz Hertz
kB Quilobytes
kb/s Quilobits por Segundo
kHz Quilohertz
kPa Quilopascal(is)
L Litro(s)
MHz Megahertz
ms Milisegundo(s)
PC Personal Computer
PI Proporcional Integral
SS Slave Select
uC Microcontrolador
V Volts
VB Válvula Borboleta
Sumário
1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1 Contexto do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.1.1 Ciclo Otto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.1.2 A Importância da Eletrônica no Gerenciamento do Motor . . . . . . 20
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.1 Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.2.2 EspecíĄcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3 JustiĄcativa do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4 Organização do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 Referencial Teórico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1 Estado da Arte no mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Estado da Arte no Brasil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Principais conceitos abordados . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.1 Sistemas de Injeção . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2 Tipos de Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.3 O microcontrolador Freescale S12X . . . . . . . . . . . . . . . . . . 30
2.3.3.1 O Coprocessador XGate . . . . . . . . . . . . . . . . . . . 32
2.3.4 A ferramenta Codewarrior v5.1 HCS12 da Freescale . . . . . . . . . 33
2.3.5 A ferramenta Visual C# da Microsoft . . . . . . . . . . . . . . . . . 36
2.3.6 A ferramenta Altium Designer . . . . . . . . . . . . . . . . . . . . . 37
2.3.7 Protocolos de Comunicação . . . . . . . . . . . . . . . . . . . . . . 38
2.3.7.1 O protocolo SPI . . . . . . . . . . . . . . . . . . . . . . . 39
2.3.7.2 O protocolo UART . . . . . . . . . . . . . . . . . . . . . . 41
2.3.7.3 O protocolo CAN . . . . . . . . . . . . . . . . . . . . . . . 42
2.3.8 Controladores do tipo proporcional-mais-integral (PI) . . . . . . . . 43
3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1 Projeto Conceitual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.1 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1.1 Sonda Lambda . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1.2 Sensor MAP . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1.1.3 Sensor de temperatura do ar . . . . . . . . . . . . . . . . . 51
3.1.1.4 Sensor de temperatura da água . . . . . . . . . . . . . . . 53
3.1.1.5 Sensor de posição da válvula borboleta - TPS . . . . . . . 54
3.1.1.6 Sensor de posição do pedal de aceleração . . . . . . . . . . 56
3.1.1.7 Sensor de rotação . . . . . . . . . . . . . . . . . . . . . . . 57
3.1.1.8 Sensor de fase . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.1.2 Atuadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.1.2.1 Válvula Borboleta . . . . . . . . . . . . . . . . . . . . . . 60
3.1.2.2 Relés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1.2.3 Válvulas Injetoras . . . . . . . . . . . . . . . . . . . . . . 64
3.1.2.4 Bobinas de Ignição . . . . . . . . . . . . . . . . . . . . . . 65
3.1.3 O Motor Volkswagen 2.0L . . . . . . . . . . . . . . . . . . . . . . . 66
3.1.4 A plataforma de projeto . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2 Projeto Detalhado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.1.1 Microcontroladores . . . . . . . . . . . . . . . . . . . . . . 71
3.2.1.2 Regulador de Tensão . . . . . . . . . . . . . . . . . . . . . 73
3.2.1.3 Condicionamento dos Sensores Analógicos . . . . . . . . . 74
3.2.1.4 Condicionamento dos Sensores Digitais . . . . . . . . . . . 75
3.2.1.5 Condicionamento do Sinal de Rotação . . . . . . . . . . . 76
3.2.1.6 Driver de Injeção e Ignição . . . . . . . . . . . . . . . . . 77
3.2.1.7 Driver para a Válvula Borboleta (Ponte H) . . . . . . . . 78
3.2.1.8 Conversor UART-USB . . . . . . . . . . . . . . . . . . . . 80
3.2.1.9 Transceiver CAN . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.1.10 Acionamento de Relé . . . . . . . . . . . . . . . . . . . . . 81
3.2.1.11 Pinagem da placa . . . . . . . . . . . . . . . . . . . . . . . 82
3.2.2 Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.2.2.1 Gerenciamento . . . . . . . . . . . . . . . . . . . . . . . . 85
3.2.2.2 Sincronismo . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.2.2.3 Comunicação . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.2.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.1 Sugestões para projetos futuros . . . . . . . . . . . . . . . . . . . . . . . . 137
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Apêndices 141
1 Introdução
1.2 Objetivos
1.2.1 Geral
Tem-se como principal objetivo deste projeto o desenvolvimento de uma unidade
de gerenciamento eletrônico para um motor a combustão interna modelo Volkswagen 2.0L,
aplicado a um veículo modelo Polo Sedan 2004, substituindo integralmente a unidade ori-
ginal do veículo. Constituído de hardware, firmware e software, o sistema eletrônico deverá
ser capaz de efetuar a correta leitura dos sensores presentes no motor e calcular todos os
parâmetros de atuação, como tempos de abertura dos bicos injetores, adiantamentos dos
sinais enviados às velas de ignição, acionamento de relés e posição da válvula borboleta, de
modo a garantir um controle estável da rotação do motor, na faixa de 800 RPM (marcha
lenta) até 6000 RPM. Além disto, o motor deverá reagir quando for submetido a carga,
fornecendo torque ao seu eixo.
O sistema deverá também realizar outras tarefas como condicionar os sinais pro-
venientes dos sensores, prever na ação de controle as limitações físicas dos atuadores,
fornecer uma interface para monitoramento e diagnose do sistema, além de fornecer uma
opção para controle do motor a partir de um pedal simulado em computador1 .
1.2.2 EspecíĄcos
• Leitura dos sensores de forma rápida e conĄável, com nível de ruído baixo suĄci-
ente a ponto de não causar comportamentos inesperados no controle realizado pelo
firmware;
• Aperfeiçoamento de firmware para cálculos mais precisos dos sinais de atuação (in-
jeção e ignição);
2 Referencial Teórico
Fonte: o autor
coprocessador.
Além disto, vale ressaltar que o coprocessador possui seu próprio conjunto de ins-
truções, que diferem do conjunto de instruções do processador principal. Sendo assim, caso
seja adotada a programação em linguagem de máquina (assembly), o programador deverá
ter conhecimento tanto do conjunto de instruções do XGate, como também do S12X. Caso
seja adotada a programação em linguagem C, o programador pode, por exemplo, mover o
código da rotina de uma interrupção do processador para o coprocessador sem qualquer
perda, ou vice-versa, dado que as instruções nesta linguagem são as mesmas para ambos.
Fonte: o autor
na determinação destes parâmetros, o que facilita muito o trabalho. Uma vez criado o
projeto, o usuário pode iniciar a escrita do seu código, podendo ainda dividi-lo em vários
arquivos.
Com o intuito de reduzir o tempo de trabalho, o programa possui uma ferramenta
chamada Device Initialization. Esta ferramenta provê uma interface visual para facilitar
a inicialização dos registradores do dispositivo. Com isto, o projetista não precisa se
preocupar com todos os detalhes envolvidos na inicialização de um registrador. No caso,
por exemplo, de um registrador para conĄgurar um divisor de frequência, o usuário não
precisaria se preocupar com as fórmulas do datasheet para descobrir a frequência Ąnal
de operação do periférico, uma vez que a própria interface já calcularia e forneceria este
valor. Além disto, a interface também é capaz de detectar conĆitos na inicialização dos
registradores4 . Uma vez realizada a conĄguração de inicialização pela interface, gera-se
de forma automática um arquivo com todos os registradores inicializados com os valores
corretos, Ącando a cargo do projetista apenas incluir este arquivo no programa principal
(main).
Fonte: o autor
Fonte: o autor
Fonte: o autor
barras deslizantes, botões, caixas de texto ou campos de seleção, o que facilita o desen-
volvimento do software. Além disto, o projetista pode alterar todos os parâmetros de um
dado controle, utilizando-se para isto tanto a interface gráĄca de design, quanto o código
do programa.
Com a ferramenta também é possível desenvolver aplicações capazes de controlar
a comunicação serial do computador, seguindo o padrão RS232, cujo protocolo será discu-
tido posteriormente neste capítulo. Assim, para se utilizar este protocolo de comunicação,
basta inserir na interface gráĄca o objeto correspondente a porta serial e conĄgurar os
seus parâmetros, como baud rate (taxa de transmissão), bits de paridade, bits de parada,
dentre outros. Uma vez inserido e conĄgurado, o projetista pode utilizar comandos orien-
tados ao objeto da porta serial, a Ąm de abrir ou fechar a conexão, enviar ou ler dados,
dentre outros.
Fonte: o autor
Fonte: o autor
para transmitir e/ou receber um dado. Além disto, é possível se estruturar uma rede
de comunicação SPI, com um mestre e vários escravos, sendo que o dispositivo mestre
sempre é Ąxo10 . Para o caso de vários escravos, o mestre deverá utilizar sinais adicionais
(designados por slave select) para selecionar o escravo com que deseja se comunicar em
um dado instante de tempo.
O protocolo SPI é bastante simples e, por este motivo, consegue alcançar taxas
elevadas de transmissão, fato essencial para o projeto em questão. No caso do S12X, o SPI
pode alcançar até 12,5 Mbits/s, e pode-se transmitir e receber, simultaneamente, dados
de 16 bits.
Abaixo segue uma breve descrição dos sinais do protocolo, com base na Ągura
anterior:
• SCK: Sinal de clock, com dois formatos diferentes (de acordo com o bit CPOL);
10
A designação do mestre é dependente da conexão utilizada no hardware.
Capítulo 2. Referencial Teórico 41
• MISO: Entrada de dados para mestre ou saída de dados para escravo (nota-se que
a transmissão/recepção ocorre na borda de número impar do clock, enquanto que a
mudança de dados ocorre na borda de número par);
• MOSI: Entrada de dados para escravo ou saída de dados para mestre (a observação
do item anterior também é valida para este sinal);
∫︁
u(t) = Kp × e(t) + Ki × e(t)dt
3 Metodologia
Fonte: o autor
Capítulo 3. Metodologia 46
3.1.1 Sensores
Em grande parte dos sistemas eletrônicos se faz necessária a medição de grandezas
físicas tais como pressão e temperatura. Os sensores correspondem aos elementos encar-
regados de medirem tais grandezas. Assim, quando a grandeza física sofre uma alteração,
ocorre uma alteração no comportamento elétrico do material com que o sensor é cons-
truído1 . Consequentemente, tem-se um sinal elétrico que varia de acordo com a grandeza
medida.
A seguir serão abordados os sensores essenciais para o controle do motor deste
projeto.
A sonda lambda tem como Ąnalidade fornecer uma realimentação ao controle este-
quiométrico da mistura a/c, principalmente quando o motor se encontra próximo de sua
rotação de referência4 , a Ąm de reduzir as emissões de poluentes (vide Ągura a seguir). Já
quando o motor se encontra em aceleração, a massa de combustível injetada é maior do
que a quantidade estequiométrica, tornando a mistura rica (neste caso o sensor apresenta
4
O que indica que não existe aceleração nem desaceleração.
Capítulo 3. Metodologia 48
sinal constante em nível lógico alto), e a ECU deixa de realizar o controle estequiométrico
em malha fechada até que a rotação do motor alcance o seu valor de referência. O mesmo
procedimento ocorre na desaceleração, porém neste caso a mistura Ąca pobre devido a
uma diminuição ou corte do combustível injetado. Vale mencionar que quando a tempe-
ratura do motor está abaixo de seu ponto de operação (em torno de 90o C), a ECU adota
a estratégia de enriquecer a mistura (λ < 1), a Ąm de acelerar o aquecimento do motor e
mantê-lo funcionando de forma estável.
Como dito anteriormente, o controle da estequiometria é essencial para se mini-
mizar emissões de poluentes e proporcionar economia de combustível. Segundo Kiencke e
Nielsen (2005), pode-se estabelecer as seguintes considerações em relação à faixa de valor
em que se encontra o fator lambda (λ):
• λ > 1: Apresenta boa eĄciência devido à maior massa de ar admitida pelo motor.
Todavia ocorre aumento considerável da emissão de óxidos nitrosos (NOx), o que
pode comprometer a vida útil do catalisador do veículo.
EspeciĄcamente neste trabalho, a sonda lambda não foi utilizada, uma vez que, por
simpliĄcação, foi adotado o controle estequiométrico em malha aberta. Maiores detalhes
serão apresentados na seção de firmware.
sita do valor do sensor em unidade de pressão (como kPa, por exemplo), que por sua vez
deve ser estimado com base no valor de tensão lido.
Fonte: o autor
Fonte: o autor
Fonte: o autor
Como explicado anteriormente, neste projeto o sensor de rotação que está acoplado
à roda fônica corresponde a um sensor de relutância variável7 . O sensor é formado por
um imã permanente e um núcleo ferromagnético, que possui uma bobina enrolada ao seu
eixo. Assim, o sensor, em conjunto com o material ferro-magnético da roda fônica, forma
um circuito magnético, de modo que quando o dente da roda fônica está alinhado com
o sensor ocorre diminuição do entreferro8 , o que provoca uma diminuição da relutância
(daí o nome sensor de relutância variável) e, consequentemente, um aumento do Ćuxo do
circuito magnético (BOSCH, 2013d). Já quando não há presença do dente, o entreferro
é maior, o que provoca uma diminuição do Ćuxo magnético. Com o movimento da roda
fônica, a variação do Ćuxo magnético faz induzir, segundo a Lei de Faraday (SERWAY;
JEWETT, 2004), uma tensão alternada na bobina. Assim, quando a roda fônica está em
repouso, a tensão de saída do sensor é igual a zero, pois neste caso não há indução de
tensão no condutor dado que o Ćuxo magnético é constante.
Portanto, o sensor fornece uma tensão de saída que varia de acordo com o movi-
mento da roda fônica, seguindo a ocorrência dos dentes na posição do sensor. Vale lembrar
que, uma vez que o sinal de saída deste tipo de sensor é analógico (semelhante a uma
senoide), é necessário o uso de circuitos para digitalizar o sinal de saída, a Ąm de fornecer
um sinal adequado ao processamento digital. O condicionamento do sinal de rotação será
discutido posteriormente neste capítulo.
7
Também conhecido como sensor indutivo.
8
O entreferro corresponde ao espaço entre o dente e o núcleo ferromagnético do sensor.
Capítulo 3. Metodologia 59
Figura 36 Ű Acionamento da injeção do cilindro 1 de acordo com o sinal de fase e sinal de rotação
Nota-se que, apesar de não ser simétrico, este sinal é complementar em alguns
pontos da volta, como, por exemplo, na falha da roda dentada. Assim, com esta infor-
mação, o firmware é capaz de identiĄcar a fase da injeção. É importante ressaltar que a
identiĄcação de fase não é trivial, pois o firmware deve levar em conta o fato do tempo
de injeção ser largamente variável e não regular no tempo, além de considerar estratégias
de tratamento para transições críticas10 .
No âmbito deste projeto, o motor a ser controlado é equipado com sensor de fase,
como mencionado anteriormente. Assim, o bloco de Gerenciamento não precisa adotar
9
Injeta-se primeiramente no cilindro 1, depois no 3, 4 e Ąnalmente no 2, completando 2 voltas.
10
Um exemplo de transição crítica corresponde ao ponto em que o instante de acionamento da injeção
"Ścruza"Š o instante da volta em que o Ąrmware detecta a fase, em caso de aceleração ou desaceleração.
Capítulo 3. Metodologia 60
estratégias complicadas para identiĄcar a fase de injeção, como, por exemplo, a estratégia
implementada no projeto de 2012 (SCARPINETTI; SOARES, 2012) que utiliza um al-
goritmo complexo de identiĄcação da fase com base na rotação do motor. Todavia, neste
projeto ainda se faz necessário o uso de uma estratégia de identiĄcação da fase, estratégia
esta que será mais simples do que a estratégia do projeto anterior de 2012, devido à pre-
sença do sensor de fase. A referida lógica de detecção é implementada no microcontrolador
de Sincronismo e será abordada posteriormente.
3.1.2 Atuadores
Os atuadores são dispositivos utilizados quando se deseja provocar alguma ação
no motor (MANAVELLA, 1996), ação esta resultante do processamento, pela unidade de
gerenciamento eletrônico, das informações oriundas dos sensores.
Nesta seção serão abordados os principais atuadores utilizados para o controle do
motor deste projeto.
Fonte: o autor
3.1.2.2 Relés
Fonte: o autor
Fonte: o autor
Fonte: o autor
• Sincronismo: Geração dos comandos de atuação para injeção e ignição (com parâ-
metros recebidos do Gerenciamento via protocolo SPI);
• Layout de circuito impresso mais compacto, com uso de uma camada para aterra-
mento;
• Emprego de um circuito integrado (CI) mais robusto para tratar o sinal de rotação
proveniente do sensor de relutância variável, dado que o circuito anterior (LM1815)
apresentava problemas com ruídos.
Fonte: o autor
Capítulo 3. Metodologia 71
3.2.1.1 Microcontroladores
LEDs têm como Ąnalidade notiĄcar, através de uma simples e rápida inspeção visual,
estados e erros aos operadores do sistema. Também se destaca a programação in-circuit
realizada pelo dispositivo programador USB Multilink Universal da PE Microcomputer
Systems, empresa aliada da Freescale.
Fonte: o autor
vez, é limita por um diodo retiĄcador. A placa também conta com LEDs para indicar a
presença das tensões de 5V e 12V.
Fonte: o autor
A placa desenvolvida possui Ąltros analógicos Salent Key de segunda ordem, com
frequência de corte projetada para aproximadamente 160 Hz. Além disto, nas entradas
dos Ąltros foram colocados resistores de "Śpullup"Š, com intuito de detectar, via firmware,
sinais desconectados do sistema. Foram empregados também resistores limitadores de
corrente e pinos para medição dos sinais de saída dos Ąltros. A implementação do Ąltro
foi realizada com o circuito integrado LM358.
Fonte: o autor
Capítulo 3. Metodologia 75
Fonte: o autor
A placa foi projetada com o CI 33186 da Freescale, que corresponde a uma ponte
H automotiva utilizada, neste projeto, para acionar o servo motor da válvula borboleta.
Consequentemente, o projetista não precisa se preocupar em utilizar transistores de po-
tência para acionar o servo motor, o que representa também um ganho de espaço na placa,
dado que o CI ocupa menos espaço do que os transistores discretos.
O CI possui capacidade de operar em diversos modos, segundo uma tabela verdade
(Ągura adiante) que é deĄnida com base no controle de pinos digitais de entrada, estes
que, no âmbito deste projeto, são controlados pelo uC de Gerenciamento. O CI também
é capaz de detectar e se proteger de curto-circuitos e altas temperaturas (FREESCALE,
2011).
Capítulo 3. Metodologia 79
O hardware possui o circuito integrado FT232 da FTDI Chip, cuja função é realizar
a conversão entre os protocolos serial assíncrono (UART) e USB (FUTURE TECHNO-
LOGY DEVICES INTERNATIONAL LIMITED, 2010). Com isto, o usuário programador
não precisa se preocupar com os detalhes de programação envolvidos no protocolo USB,
tanto do ponto de vista do firmware (uC de Comunicação) como do ponto de vista do
software (aplicação de monitoramento). Consequentemente, a única preocupação é a pro-
gramação do protocolo serial, que, por sua vez, é menos complexo do que o protocolo USB.
Vale lembrar também que o CI pode ser empregado em aplicações em que a alimentação
da placa se dá pelo barramento USB18 , como exempliĄcado na Ągura anterior.
O hardware deste projeto conta com LEDs de transmissão e recepção, pinos de
testes, além de uma chave manual que permite direcionar o barramento serial tanto para
o uC de Gerenciamento, como para o uC de Comunicação19 .
18
Neste caso, o barramento USB é capaz de fornecer até 500 mA de corrente ao circuito.
19
No presente projeto, esta chave está sempre na posição do uC de Comunicação.
Capítulo 3. Metodologia 81
Fonte: o autor
Capítulo 3. Metodologia 82
A placa foi projetada para facilitar as conexões elétricas com os sinais provenientes
do motor. Para isto, escritas de identiĄcação foram colocadas próximas de cada pino.
Abaixo segue uma descrição de cada conector da placa.
Pela tabela fornecida acima é possível notar que nem todos os recursos do hard-
ware estão sendo utilizados no presente projeto, pois, como mencionado anteriormente, o
hardware foi projetado visando também a sua aplicação em projetos futuros.
Para mais detalhes do hardware, recomenda-se a consulta ao esquema elétrico, que
pode ser encontrado nos apêndices deste trabalho.
3.2.2 Firmware
Como explicado anteriormente, o desenvolvimento do firmware envolve a progra-
mação dos três microcontroladores presentes na placa, responsáveis por executar as tarefas
de cada bloco do sistema (Gerenciamento, Sincronismo e Comunicação). Assim, toda a
estratégia para o controle do motor deverá ser levada em conta no desenvolvimento do
código de cada microcontrolador.
É importante ressaltar que, diferentemente do projeto Otto (SCARPINETTI; SO-
ARES, 2012), que desenvolveu um firmware com base maior em tabelas e calibrações, a
ECU 2.0 deste projeto foi desenvolvida com um firmware que utiliza mais cálculos, de
modo a aproveitar também a maior capacidade de processamento dos microcontroladores
utilizados neste projeto20 . Sendo assim, os códigos dos microcontroladores de cada bloco
do sistema de ambos projetos são bastante diferentes. Por ser uma unidade eletrônica com
base maior em cálculos, o controle deste projeto se mostrou bastante eĄciente e estável,
porém vale lembrar que o fato não retira o mérito do grupo de 2012 (SCARPINETTI;
20
É importante mencionar que o projeto anterior contava com a limitada capacidade de processamento
do PIC18F da Microchip.
Capítulo 3. Metodologia 85
SOARES, 2012), que provaram que é possível se controlar um motor automotivo mesmo
utilizando microcontroladores mais simples, o que não é uma tarefa nada fácil.
A seguir será dada uma explicação mais profunda das funções de cada bloco do
sistema, bem como da estratégia de controle implementada. Fluxogramas do firmware
de cada uC do sistema podem ser consultados nos apêndices deste trabalho. Por serem
muito extensos, os códigos dos microcontroladores não foram inseridos no trabalho, porém
trechos foram disponibilizados ao longo das subseções seguintes.
3.2.2.1 Gerenciamento
Fonte: o autor
Pelo diagrama acima é possível notar que para se controlar a rotação do motor é
necessário atuar simultaneamente no tempo de injeção de combustível e na abertura da
válvula borboleta, responsável pelo controle do Ćuxo de ar admitido pelo motor. Além
disto, uma parte do controle do tempo de injeção consiste de um controlador puramente
proporcional (P), cuja Ąnalidade é enriquecer a mistura a/c quando a referência de rotação
for maior que a rotação medida. É importante notar também que a carga imposta ao motor
Capítulo 3. Metodologia 86
atua como distúrbio no controle, de maneira a reduzir a rotação. Assim, cabe ao controle
de rotação atuar de maneira a impedir esta redução, o que, consequentemente, fornece
torque ao eixo do motor. Já o controle de posição da borboleta é realizado através de um
controlador PI (proporcional e integral).
Abaixo foi destacado um trecho do código do uC de Gerenciamento que implementa
o controle de rotação:
void controle_rpm () {
float control = 0;
float ref_vb_temp , ref_vb_base ;
// Algoritmo de controle PI
erro_rpm = ref_rpm - ( float ) rotacao ;
// Atualiza a somatoria
if (( erro_rpm < 500.0) && ( erro_rpm > -500.0) ) // Integracao
condicional - Anti wind - up
soma_erro_rpm += erro_rpm ;
else
soma_erro_rpm = 0; // Descarrega a somatoria
if ((( erro_rpm > 1000.0) || ( erro_rpm < -1000.0) ) && ( rotacao <
1000) )
while (( injecao_ok < 1) && ( reset == 0) ) ; // Espera injetar
antes de abrir a vb ...
Pelo código acima, é possível notar que diversos tratamentos devem ser levados
em conta no controle de rotação. Este deve, por exemplo, ser robusto o suĄciente para
impedir que o motor "afogue"(devido ao excesso de ar) em uma aceleração brusca, o que
exige limitações na abertura da borboleta. Ganhos variáveis também foram adotados,
a Ąm de fornecer um controle que seja suave quando o pedal for pouco pressionado, e
agressivo quando o pedal for bastante pressionado. Destaca-se ainda a importância do
termo integral do controle para ajuste da rotação de marcha lenta.
Como mencionando anteriormente, o controle de posição da válvula borboleta foi
implementado com um controlador PI (proporcional e integral), sendo que a referência
de posição para este controlador é determinada pelo controle de rotação, descrito ante-
riormente. Assim, cabe ao controle PI garantir que a posição da válvula borboleta seja
aquela determinada pelo controle de rotação (ou que seja o mais próximo possível).
Fonte: o autor
// Algoritmo de controle PI
erro_vb = ref_vb - ( float ) tps2 ;
// if (( erro_vb < 1.0) && ( erro_vb > -1.0) && ( tps2 < TPS_MIN ) ) {
// IOGER7 = 0;
// return ;
// }
soma_erro_vb += erro_vb ;
if (! inv ) {
PWMDTY5 = pwm ;
PWMDTY4 = 0;
}
else {
PWMDTY5 = 0;
PWMDTY4 = pwm ;
}
IOGER7 = 0;
}
23
Ou seja, adotou-se que o ar se comporta como um gás ideal.
Capítulo 3. Metodologia 91
...
// Calculo da rotacao
periodo_temp = ( float ) periodo_3 / 3.0; // Timer1 mediu a duracao de 3
dentes
rotacao_temp = 1000000.0/ periodo_temp ;
...
Os acionamentos dos bicos injetores e das bobinas de ignição são realizados pelo uC
de Sincronismo, porém cabe ao Gerenciamento determinar os parâmetros adequados para
que estes acionamentos ocorram corretamente. A estratégia de acionamento consiste em
se tabelar o término do acionamento, ou seja, o instante em que o sinal é desativado. Deste
modo, é possível se controlar com maior precisão o instante em que ocorre a centelha de
ignição, ao mesmo tempo em que se controla o término da injeção de combustível. Com
Capítulo 3. Metodologia 92
isto, evita-se que o combustível seja injetado com grandes atrasos em acelerações com
carga24 , e ainda há um controle maior do ponto em que ocorre a centelha de ignição.
Como parâmetros, o Gerenciamento necessita determinar o instante em que os
sinais de injeção ou ignição devem ser acionados, levando em conta o tempo de aciona-
mento25 e o instante em que o sinal deve ser desativado. De modo prático, o Gerenciamento
envia ao Sincronismo uma posição de dente (que corresponde a uma borda de subida do
sinal de rotação) e um tempo de disparo para o acionamento do sinal, uma vez que não
necessariamente o sinal de injeção ou ignição será acionado exatamente em uma borda de
subida do sinal de rotação. Abaixo segue um trecho comentado do firmware com o cálculo
dos parâmetros de acionamento da ignição26 :
n = tempo_bob_temp / periodo_temp ;
ig_14_temp = ig_ref [ address ][ address_2 ] - n ;
if ( ig_14_temp < 1.0) ig_14_temp += 60.0;
ig_dente_14_temp = ( unsigned char ) ig_14_temp ;
if (( ig_dente_14_temp == 59) || ( ig_dente_14_temp == 60) )
ig_dente_14_temp = 58; // Para o caso em que o sinal
sobe na falha
else if (( ig_dente_14_temp == 29) || ( ig_dente_14_temp == 30) )
ig_dente_14_temp = 28; // Para o caso em que o sinal de
ign 23 sobe na falha
ig_tmr_disparo_temp = ( ig_14_temp - ( float ) ig_dente_14_temp ) *
periodo_temp ;
rot = [700 1300 2000 3000 4000 5000]; % vetor de rotacoes da matriz
original
pa = 30:10:120; % vetor de pressoes da matriz original
rot_i = 700:100:5000; % vetor de rotacoes da matriz interpolada
pa_i = pa ; % vetor de pressoes da matriz interpolada
[X , Y ] = meshgrid ( pa , rot ) ;
Z = data ;
[ Xi , Yi ] = meshgrid ( pa_i , rot_i ) ;
Zi = interp2 (X ,Y ,Z , Xi , Yi , ’ cubic ’) ;
Capítulo 3. Metodologia 97
figure (1)
mesh (X ,Y , Z )
title ( ’ Mapa de çãignio original ’)
xlabel ( ’ãPresso ( kPa ) ’)
ylabel ( ’çãRotao ( RPM ) ’)
zlabel ( ’ Dente de êreferncia ’)
figure (2)
mesh ( Xi , Yi , Zi )
title ( ’ Mapa de çãignio interpolado ’)
xlabel ( ’ãPresso ( kPa ) ’)
ylabel ( ’çãRotao ( RPM ) ’)
zlabel ( ’ Dente de êreferncia ’)
Fonte: o autor
Com o ajuste do mapa de ignição, não se constatou mais nenhum problema rela-
cionado à detonação, e o motor foi capaz de atingir 6000 RPM mesmo em condições de
carga.
Além da injeção, ignição e válvula borboleta, o Gerenciamento é responsável tam-
bém pelo controle do relé da bomba de combustível. A estratégia de acionamento deste
Capítulo 3. Metodologia 100
relé é bastante simples. Após o ligamento da linha 15, o Gerenciamento pressuriza a linha
de combustível, ativando o relé por aproximadamente 0,5s. Após isto, o relé é desligado
e é religado apenas na primeira detecção da falha da roda fônica31 , e então permanece
ligado durante o funcionamento do motor. Caso o motor pare de funcionar por algum
motivo, o relé é desligado.
Por Ąm, menciona-se ainda a implementação de um Ąltro para suavizar acelerações
e desacelerações bruscas, característica inerente do pedal eletrônico (drive-by-wire). Este
Ąltro foi implementado com base em limitações da referência de rotação calculada a partir
da leitura do pedal de aceleração, levando em conta também valores anteriores desta
referência. Nota-se que este Ąltro é ativado somente quando o veículo se encontra em
movimento, caracterizado por uma velocidade maior do que 5 km/h32 .
// Filtro para impedir aceleracoes bruscas ...
if ( movimento != 0) {
if ((( ref_rpm_temp - ref_rpm ) > 25.0) && ( ref_rpm_temp >
rotacao ) )
ref_rpm_temp = ref_rpm + 25.0; //
Suaviza aceleracao
else if ((( ref_rpm - ref_rpm_temp ) > 50.0) && (
ref_rpm_temp < rotacao ) )
ref_rpm_temp = ref_rpm - 50.0; //
Suaviza desaceleracao
}
3.2.2.2 Sincronismo
Para isto, o Sincronismo deve detectar a falha33 da roda fônica, a Ąm de reiniciar contagens
e atualizar parâmetros para a próxima volta.
Fonte: o autor
O sinal de rotação está associado à posição do dente da roda fônica. Dado este
fato, o programa detecta e processa cada transição de subida do sinal de rotação. Diferen-
temente do Gerenciamento, que necessita apenas dos 3 primeiros dentes para calcular a
rotação, o Sincronismo necessita contar todas as transições de subida do sinal de rotação,
ou seja, necessita identiĄcar todos os dentes para disparar os sinais de injeção e ignição no
momento correto. Deste modo é importante que o Sincronismo não execute muito cálculos
(ao contrário do Gerenciamento), uma vez que contas complexas (como multiplicação e
divisão com ponto Ćutuante) levariam muito tempo para serem executadas e, consequen-
temente, alguns dentes poderiam não ser contabilizados (ou poderiam ser contabilizados
com atraso). Este fato ainda se agravaria com o aumento da rotação, dado que o período
de um dente diminuiria signiĄcativamente.
33
Correspondente à ausência de dois dentes.
Capítulo 3. Metodologia 102
Fonte: o autor
...
}
}
// Se nao ident . a fase uma vez nao deixa dar os sinais de inj
if ( rotacao > 6500 || fase_ok == 0) // O GER corta a inj , mas esta
condicao reforca o corte ( seguranca )
return ;
} // void conta_dente ()
Com relação aos modos de acionamento, adotou-se para ignição a centelha perdida,
ou seja, os sinais de ignição são acionados simultaneamente em cada banco34 , o que facilita
a estratégia de ignição. Já a injeção é acionada apenas uma vez em cada cilindro, a cada
duas voltas, o que caracteriza a injeção multiponto sequencial. Para isto, deve-se detectar
a fase de injeção, ou seja, em um dada volta o Sincronismo necessita identiĄcar em qual
dos cilindros do banco deve ocorrer a injeção. Assim, a estratégia adotada consiste em se
identiĄcar a fase do motor quando a rotação está abaixo de 600 RPM (partida), e então
continuar acionando a injeção de modo a manter sempre a sequência 1-3-4-2. Caso ocorra
perda da fase, o Sincronismo é capaz de corrigi-la, tomando como base a descida do sinal
de injeção (que é mapeada) e o sinal de fase. Em outras palavras, quando o sinal de
injeção é desativado, o Sincronismo veriĄca se o sinal de fase é aquele esperado e, em caso
negativo, inverte a variável que controla a sequencia de injeção, a Ąm de corrigir a sua fase.
Como exemplo de implementação, foi destacado a seguir um trecho do Sincronismo com
a interrupção do timer que controla a injeção do banco 1-4. É possível veriĄcar também
a implementação da estratégia para correção da fase de injeção.
__interrupt void TIMER_INJ14_PIT1 ( void )
{
PITINTE_PINTE1 = 0; // Desabilita int timer 1
case 0:
break ;
case 10:
SINAL_IJ1 = 0; /* Baixa o Sinal da Injecao 1 */
volta14 = ~ volta14 ;
ij14_pos = 0;
break ;
case 40:
SINAL_IJ4 = 0; /* Baixa o Sinal da Injecao 4 */
ij14_pos = 0;
break ;
case 1:
if ( tempo_inj > 50) {
break ;
case 4:
if ( tempo_inj > 50) {
3.2.2.3 Comunicação
um dado (como, por exemplo, o valor do pedal "Śsimulado"Š), ele envia um carácter e
envia, ao mesmo tempo, o dado, de modo a aproveitar o fato de que a comunicação
SPI no microcontrolador S12XE opera com registradores de 16 bits, ou seja, em uma
transmissão é possível se enviar 2 bytes de informação de uma só vez (1 byte é o caracter e o
outro é a informação a ser enviada). Além disto, os microcontroladores de Gerenciamento
e Sincronismo respondem às requisições do microcontrolador de Comunicação através
de interrupção, atendida no caso pelo coprocessador XGate, de modo que não ocorra
interferência no processamento do core principal S12X.
Para requisitar um dado ao software, o uC de Comunicação utiliza o protocolo
abaixo:
3.2.3 Software
Fonte: o autor
36
Pode-se, por exemplo, ler o valor de temperatura em graus Celsius.
112
4 Resultados e Discussão
• Hardware com alta velocidade de aquisição de dados (capaz de ler todos os sensores
em uma volta, mesmo em elevadas rotações) e capaz de gerar saídas compatíveis
com os atuadores de um motor real;
• Hardware com baixo consumo de energia quando o motor estiver desligado, o su-
Ąciente para que a placa possa ser alimentada por uma bateria de um veículo de
passeio comercial (12V);
• Hardware Ćexível, de forma que a mesma placa possa ser utilizada para controle
de outros motores, no âmbito de projetos futuros. Esta Ćexibilidade possui certos
limites;
Fonte: o autor
Fonte: o autor
permitem avaliar a capacidade da placa em drenar estas correntes elevadas oriundas das
bobinas de ignição e das válvulas injetoras.
Figura 70 Ű GráĄco do controle de posição da válvula borboleta com variações suaves na referência
Fonte: o autor
Capítulo 4. Resultados e Discussão 117
Figura 71 Ű GráĄco do controle de posição da válvula borboleta com variações bruscas na referência
Fonte: o autor
• Atuação nos bicos injetores: Esta etapa valida o correto acionamento dos sinais
de injeção, que devem ser acionados em instantes especíĄcos. Inicialmente é realizado
uma comparação, com auxílio de um osciloscópio, entre os sinais gerados pela ECU
original do veículo e a ECU deste projeto, e em sequência o motor é acionado com
os sinais gerados pela unidade deste projeto;
• Leitura dos sensores: Nesta etapa, valida-se a correta leitura dos sensores que
serão utilizados neste projeto, exceto o sensor de rotação, que já foi validado na
primeira etapa. Nesta etapa é validado também o correto funcionamento do software
de monitoramento, no que diz respeito à aquisição em tempo real dos dados;
• Ajuste do tempo de injeção para acelerações bruscas: Nesta etapa, são re-
alizados diversos testes de acelerações bruscas, de forma que o motor responda de
forma satisfatória com o controle de rotação. Também é validado o corte de com-
bustível em caso de desacelerações;
• Ajuste para partida a frio: Testes são realizados para veriĄcar o correto funcio-
namento do motor em baixas temperaturas;
motor consiga alcançar 6000 RPM em terceira marcha com a carga Ąxa fornecida
pelo dinamômetro, desenvolvendo uma potência máxima de no mínimo 50% do valor
nominal (116 cv) do motor, o que corresponde ao valor de 58 cv.
Para obter acesso aos sinais de sensores e atuadores presentes no motor foi utilizado
uma intersecção, construída na FATEC Santo André. Além de possibilitar o monitora-
mento destes sinais, esta intersecção permite também, através de jumpers, aplicar sinais
de atuação ao motor, desligando, neste caso, sinais de atuação provenientes da ECU ori-
ginal do veículo. Deste modo, pode-se controlar parcialmente o motor, deixando somente
alguns atuadores para serem controlados pela ECU original. Ao Ąnal, espera-se que todos
os atuadores da ECU original possam ser desligados, sendo, neste momento, a ECU v2.0
responsável por todo o controle do motor.
Capítulo 4. Resultados e Discussão 120
Fonte: o autor
Capítulo 4. Resultados e Discussão 121
Fonte: o autor
Fonte: o autor
Capítulo 4. Resultados e Discussão 123
Fonte: o autor
Com relação aos sinais da Ągura anterior, obtidos com auxílio da ferramenta Lab-
View, uma legenda foi disponibilizada a seguir. É importante mencionar que a mesma
legenda é válida para todas as futuras Ąguras que contêm sinais de acionamento.
Fonte: o autor
Fonte: o autor
Fonte: o autor
Capítulo 4. Resultados e Discussão 127
Fonte: o autor
Fonte: o autor
Capítulo 4. Resultados e Discussão 129
Fonte: o autor
Capítulo 4. Resultados e Discussão 130
Fonte: o autor
Fonte: o autor
Além disto, nota-se que o tempo de injeção permanece elevado na maior parte do
tempo (por volta de 16 ms), de modo a acompanhar a elevada massa de ar admitida pelo
motor durante este teste, fato evidenciado pelo elevado valor de pressão fornecido pelo
sensor MAP.
Por volta de 4500 RPM, a válvula borboleta começa a fechar, o que dá início a uma
diminuição da pressão de ar, e, consequentemente, faz diminuir o tempo de injeção. Este
procedimento é realizado através de ajustes do ganho proporcional do controle de rotação
e tem como objetivo diminuir a potência do motor quando a rotação já está elevada, por
motivos de segurança.
Capítulo 4. Resultados e Discussão 132
Fonte: o autor
Fonte: o autor
Capítulo 4. Resultados e Discussão 133
Fonte: o autor
Testes foram realizados para manter o motor em 2000, 3000 e 4000 RPM, de modo
a analisar a estabilidade do controle de rotação quando o motor se encontra submetido
a carga. Pelas Ąguras acima, desconsiderando a aceleração inicial, é possível notar que
de modo geral se conseguiu manter a rotação desejada, mesmo com um pequeno erro de
regime decorrente da carga imposta, fato que, por sua vez, não prejudica a aplicação.
Analogamente ao teste de aceleração suave, o tempo de injeção se manteve pequeno
e constante, da mesma forma que a válvula borboleta se manteve com uma abertura
pequena.
Capítulo 4. Resultados e Discussão 134
Fonte: o autor
Para comparar os dois modos de operação da ECU v2.0, testes de potência1 foram
realizados. Nota-se, pela Ągura anterior, que o modo econômico fornece potência e torque
menores do que o modo normal. Este fato já era esperado, dado que no modo econômico a
VB trabalha com aberturas menores, o que diminui a quantidade de combustível injetado
e, consequentemente, reduz a potência e o torque do motor. Os pontos máximos de cada
curva foram destacados na tabela a seguir.
1
No teste de potência, realizado com auxílio do dinamômetro, o pedal de aceleração é totalmente
pressionado até que a rotação do motor alcance aproximadamente 5500 RPM, com o veículo engatado
em terceira marcha.
Capítulo 4. Resultados e Discussão 135
Fonte: o autor
Testes de potência foram realizados com a ECU original do veículo e com a ECU
v2.0 deste projeto, a Ąm de comparar o desempenho de ambos os sistemas. Nota-se que,
de modo geral, a ECU deste projeto apresenta desempenho similar à ECU original do
veículo, dado que as curvas de ambos são bastante similares. Os pontos máximos de cada
curva foram apresentados na tabela a seguir.
5 Conclusões
projeto Otto II cumpriu com a sua meta inicial de desenvolver uma unidade
O de gerenciamento eletrônico para um motor Volkswagen 2.0L, operado inclusive em
condições de carga. O projeto demonstrou que é possível se controlar um motor à combus-
tão interna por meio de um controle de rotação, responsável também pelo fornecimento de
torque ao eixo do motor em condições de carga. Pelos resultados obtidos é possível notar
que, com a implementação do controle de rotação, a ECU v2.0 deste projeto responde
semelhantemente a ECU original do veículo, incluindo a característica de Ąltragem do
pedal de aceleração, de modo a suavizar acelerações bruscas quando o veículo se encontra
em movimento. Além disto, é importante ressaltar que a unidade eletrônica desenvolvida
neste projeto atua no motor de forma totalmente independente e sem qualquer auxílio da
ECU original1 .
Consequentemente, o projeto também atingiu a meta de se desenvolver um hard-
ware robusto e eĄciente para processar de forma rápida e segura todas as informações
envolvidas no controle. Além disto, por ser um hardware bastante Ćexível, espera-se que
o mesmo possibilite desenvolvimentos futuros na área de eletrônica automotiva da Escola
Politécnica da USP, com intuito de implementar inovações e melhorias no setor automo-
tivo.
Apesar de não ser original2 , o trabalho se mostrou bastante desaĄador, pois se
trata de uma aplicação real de grande porte, que envolve diversos conceitos como ele-
trônica analógica, eletrônica de potência, processamento de sinais, teoria de controle,
programação, projeto de hardware, protocolos de comunicação e conceitos de engenharia
automotiva. Assim, o projeto se constituiu em uma grande oportunidade de aplicação de
parte dos conceitos adquiridos no curso de graduação de sistemas eletrônicos da Escola
Politécnica da USP, além de estimular a busca por novos conhecimentos.
Espera-se com o resultados obtidos neste projeto que se desperte um interesse
maior de alunos e professores da Escola Politécnica da USP em participar e trabalhar,
conjuntamente ao departamento PSI da Escola Politécnica da USP e à Fatec Santo An-
dré, em novos projetos no setor automotivo, envolvendo a área de eletrônica automotiva.
Alunos que buscam desaĄos em projetos práticos, com o objetivo de aprimorar seus co-
nhecimentos em eletrônica, tais como o desenvolvimento de hardware, firmware e software,
certamente terão oportunidade de adquirí-los em um projeto deste tipo, envolvendo ele-
trônica automotiva.
1
Relembrando que a ECU original foi completamente desligada do motor.
2
Dado que atualmente ECUs já existem no mercado.
Capítulo 5. Conclusões 137
• Desenvolvimento de uma ECU para motores bicombustíveis (Ćex), com uso de al-
goritmos e sensores adequados, a Ąm de aprimorar a identiĄcação da mistura do
combustível, além de ajustar de modo adaptativo os mapas de injeção e ignição;
3
Apesar de estar presente no motor Volkswagen 2.0L estudado, este sensor, conhecido também por
sensor knock, não foi utilizado no presente projeto.
4
Analogamente ao knock, este sensor também não foi utilizado neste projeto.
138
Referências
ANG, K. H.; CHONG, G.; LI, Y. Pid control system analysis, design, and technology.
Control Systems Technology, IEEE Transactions on, v. 13, n. 4, p. 559Ű576, 2005.
BBC NEWS. Car hackers use laptop to control standard car. 2013. Notícia
publicada em 25 de julho de 2013. Disponível em: http://www.bbc.co.uk/news/
technology-23443215. Acesso em: setembro/2013.
BOSCH. MAP Sensor Tecnical Specifications. [S.l.], 2013. Disponível em: http://www.
bosch.com.au/car_parts/en/downloads/Map_Sensor_Technical_Specification.
pdf. Acesso em: abril/2013.
CRUZ, J. J. da. PTC2413 Controle I - Notas de Aula. 2009. Apostila do curso PTC2413
oferecido na graduação da Escola Politécnica da USP.
DELPHI. ETC air Control Valve (ETC-ACV) application manual. [S.l.], 2003.
WONG, P.-K.; VONG, C.-M.; IP, W.-F. Modelling of petrol engine power using
incremental least-square support vector machines for ecu calibration. In: Optoelectronics
and Image Processing (ICOIP), 2010 International Conference on. [S.l.: s.n.], 2010. v. 2,
p. 12Ű15.
APÊNDICE A Ű Hardware
APÊNDICE A. Hardware 143
Fonte: o autor
Fonte: o autor
2 1
48
VDDPLL
45 65
VSSPLL VDD
13
VDDF
14
VSS1
66
VSS2
44
VSS3
43
VDDR
86 83
VSSA1 VDDA1
106 107
VSSX1 VDDX1
40 41
VSSX2 VDDX2
LEDGER1
LEDGER2
LEDGER3
2 1
36
VDDPLL
33 49
VSSPLL VDD
9
VDDF
10
VSS1
50
VSS2
32 31
VSS3 VDDR
62 59
VSSA1 VDDA1
76 77
VSSX1 VDDX1
28 29
VSSX2 VDDX2
2 1
36
VDDPLL
33 49
VSSPLL VDD
9
VDDF
10
VSS1
50
VSS2
32 31
VSS3 VDDR
62 59
VSSA1 VDDA1
76 77
VSSX1 VDDX1
28 29
VSSX2 VDDX2
Fonte: o autor
APÊNDICE A. Hardware 148
3 12
3 12 3 12 3 12
L15_F
3 12 3 12 3 12 3 12
Fonte: o autor
APÊNDICE A. Hardware 149
8 4 8 4
8 4 8 4
8 4 8 4 8 4
8 4 8 4 8 4
Fonte: o autor
APÊNDICE A. Hardware 150
8 4 8 4 8 4
8 4 8 4 8 4
8 4 8 4 8 4
8 4 8 4 8 4
Fonte: o autor
APÊNDICE A. Hardware 151
7 4 7 4
8 4
Fonte: o autor
APÊNDICE A. Hardware 152
Fonte: o autor
APÊNDICE A. Hardware 153
Figura 99 Ű Driver para Injeção e Ignição
EMISSOR_BOBINA
IGN4
IGN3
IGN2
IGN1
INJ4
INJ3
INJ2
INJ1
Fonte: o autor
APÊNDICE A. Hardware 154
Fonte: o autor
APÊNDICE A. Hardware 155
Fonte: o autor
APÊNDICE A. Hardware 156
Figura 102 Ű Conversor UART-USB
GND
21
VCCIO GND
4 18
GND
7
VCC
20
AGND
25
Fonte: o autor
APÊNDICE A. Hardware 157
VDD VSS
3 2
Fonte: o autor
158
APÊNDICE B Ű Firmware
APÊNDICE B. Firmware 159
B.1 Gerenciamento
Figura 104 Ű Fluxograma do Ąrmware implementado no uC de Gerenciamento
Fonte: o autor
APÊNDICE B. Firmware 160
Fonte: o autor
APÊNDICE B. Firmware 161
Fonte: o autor
APÊNDICE B. Firmware 162
Fonte: o autor
APÊNDICE B. Firmware 163
Fonte: o autor
APÊNDICE B. Firmware 164
Fonte: o autor
APÊNDICE B. Firmware 165
Fonte: o autor
APÊNDICE B. Firmware 166
B.2 Sincronismo
Figura 111 Ű Fluxograma do Ąrmware implementado no uC de Sincronismo
Fonte: o autor
APÊNDICE B. Firmware 167
Fonte: o autor
APÊNDICE B. Firmware 168
Fonte: o autor
APÊNDICE B. Firmware 169
Fonte: o autor
APÊNDICE B. Firmware 170
Fonte: o autor
APÊNDICE B. Firmware 171
Fonte: o autor
APÊNDICE B. Firmware 172
B.3 Comunicação
Fonte: o autor
APÊNDICE B. Firmware 173
Fonte: o autor
174
using System ;
using System . Collections . Generic ;
using System . ComponentModel ;
using System . Data ;
using System . Drawing ;
using System . Linq ;
using System . Text ;
using System . Windows . Forms ;
using System . IO . Ports ;
// using ZedGraph ;
using System . Diagnostics ;
using System . Threading ;
namespace W i n d ow s F o rm s A p pl i c a t io n 1
{
public partial class Form1 : Form
{
bool medindo ;
uint erro ;
int dado ;
double rs , dadof , t ;
byte [] rxbuffer = new byte [1];
string data_to_file ;
// Calibracoes - Polo
const int PEDAL_MAX_POLO = 180; // Pedal pressionado
const int PEDAL_MIN_POLO = 40; // Pedal solto
// Calibracoes - GM
const int PEDAL_MAX_GM = 236; // Pedal pressionado
const int PEDAL_MIN_GM = 40; // Pedal solto
public Form1 ()
{
InitializeComponent () ;
// Serial Configuration
portacom_comboBox . Items . AddRange ( SerialPort . GetPortNames () ) ;
APÊNDICE C. Software de Monitoramento 175
medindo = false ;
progressBar1 . Value = progressBar1 . Minimum ;
erro = 0;
}
else
{
abrirserial_button . Text = " Fechar Serial " ;
serialPort1 . PortName = ( string ) portacom_comboBox .
SelectedItem ; // Set the serial Port
serialPort1 . BaudRate = Convert . ToInt32 (
baudrate_comboBox . SelectedItem . ToString () ) ;
serialPort1 . Open () ;
}
}
else
{
abrirserial_button . Text = " Abrir Serial " ;
medindo = false ;
serialPort1 . Close () ;
}
}
Warning ) ;
}
medindo = true ;
lervalores_button . Text = " PARAR " ; // Aproveita o
mesmo botao para parar a aquisicao
{
Application . DoEvents () ;
try
{
// Requisita çõinformaes ao Comunicacao
segundo o protocolo
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
else
bateria_textBox . Text = dado . ToString ( " F0
");
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
Application . DoEvents () ;
}
catch ( Exception )
APÊNDICE C. Software de Monitoramento 184
{
erro ++;
if ( erro > 5)
{
MessageBox . Show ( "ãNo áh dados na Serial !
" , " Erro de Comunicacao ! " ,
MessageBoxButtons . OK , MessageBoxIcon .
Warning ) ;
medindo = false ;
lervalores_button . Text = " LER VALORES " ;
progressBar1 . Value = progressBar1 .
Minimum ;
erro = 0;
return ;
}
}
}
}
else // medindo = true , parar aquisicao
{
medindo = false ;
lervalores_button . Text = " LER VALORES " ;
progressBar1 . Value = progressBar1 . Minimum ;
erro = 0;
}
}
else
MessageBox . Show ( " A porta esta fechada ! " , " Erro de
Comunicacao ! " , MessageBoxButtons . OK , MessageBoxIcon .
Warning ) ;
}
);
bateria_label . Text = bateria_label . Text . Replace ( " ( V ) " ,
"");
refvb_label . Text = refvb_label . Text . Replace ( " ( V ) " , " " ) ;
}
}