Artigos

O SOFTWARE de funcionamento dos Módulos de Injeção Eletrônica

Jornal Oficina Brasil - Out/2000
Por Marcos Zillner (Napro Eletrônica Industrial Ltda)

O funcionamento do programa (Software) dos módulos de controle da Injeção eletrônica é um assunto pouco conhecido. Poucas pessoas no Brasil detém o conhecimento do código fonte dos módulos (programa antes de ser compilado e gravado na Eprom ou memória flash). A falta de conhecimento nesta área acarreta na criação de conceitos de funcionamento nem sempre corretos. Por outro lado conhecer essa matéria poderia auxiliar no diagnóstico dos defeitos e inclusive tirar alguns mitos que foram criados com o tempo. Também os técnicos reparadores que trabalham com a repotenciação de chips tem dificuldades pois trabalham de uma certa forma no escuro, quase sempre na tentativa e erro. A caixa do módulo passa então a ser uma "caixa preta" onde não se sabe ao certo o que se encontra lá dentro e como a lógica de controle do motor funciona. O que vemos é um procedimento de troca de módulos sem uma análise mais criteriosa, causando um desperdício desnecessário.

Um módulo com valores auto-adaptativos (aprendizado) em alguns casos funciona de maneira a enganar o técnico reparador. Este pensa que o módulo está defeituoso e chega a trocar o mesmo. Explico: Se um defeito de sensores anteriormente apresentado é consertado e o módulo leva um certo tempo para reaprender, ao se trocar por um modulo novo, onde este defeito não havia se manifestado, vai funcionar na primeira. Acontece que o módulo antigo também aprenderia com o tempo a se adaptar as novas condições porem a urgência e o desconhecimento fizeram com que fosse sucateado. Ruim para o cliente dono do veiculo, ruim para o técnico reparador, ruim para todos.

O módulo é controlado por um micro controlador que passaremos a chamar de processador, nome mais popular para o pequeno computador interno capaz de realizar cálculos com valores (previamente gravados em tabelas) que chamamos de dados e seguir uma seqüência de comandos que chamamos de programa ou algoritmo. O programa não funciona sozinho necessita dos dados (tabelas) normalmente levantados em dinamômetro de motores e depois refinados em dinamômetros de chassi e campo de prova.

O dinamometrista depois de amaciar o motor no próprio dinamômetro, começa então a levantar a curva de torque do motor, Potência e Consumo Específico, montando tabelas de carga X rotação X angulo de avanço, carga X Rotação X Tempo de Injeção etc. Os engenheiros montam então as tabelas que serão gravadas na Eprom. O dinamômetro de chassi ajuda a refinar na hora da verificação de emissões. Na realidade hoje em dia os ajustes são feitos com prioridade em emissões. Onde são feitos testes de emissões com ciclo urbano e ciclo estrada conforme norma brasileira. O veículo é colocado sobre um dinamômetro de chassi, as curva de freio e inércias são ajustadas no dinamômetro e o motorista acelera e freia de acordo com um gráfico gerado por computador. Ajustes nas tabelas do módulo são feitos para diminuir as emissões. A dirigibilidade é refinada e a eprom com os dados fica pronta para avaliação de campo. Quilômetros e quilômetros são rodados. Tudo isto é destruído depois pelo pessoal que faz a repotenciação fora da montadora onde o resultado final são alguns cavalos a mais para o cliente desejoso de potencia no motor. Lógico em detrimento das emissões e muitas vezes do consumo e durabilidade do motor.

Nesta matéria vamos abordar o funcionamento do programa ainda de uma maneira superficial. Se fossemos abordar o assunto com profundidade, certamente daria para escrever um livro. O ideal seria escrevermos sobre o Hardware e o Software. Estas duas coisas estão intrinsecamente ligadas. Porem como o Hardware é muito mais previsível ficamos somente no assunto do Software que é menos conhecido.

Várias tabelas são previamente levantadas em laboratório. Os valores que vamos exemplificar aqui podem variar de fabricante para fabricante pois cada um tem um tipo conversor Analógico/Digital (A/D) diferente internamente, os sensores diferem, então vamos dar exemplos genéricos para o tema.

 

 

2- Tabela de Enriquecimento de aceleração

Esta tabela simula a função que a velha bomba injetora no carburador ao darmos uma acelerada. Injetando uma quantidade à mais de combustível, enriquecendo abruptamente a mistura. Seus valores são refinados pelos engenheiros com o veiculo em rodagem, acertando-se a dirigibilidade. Para uma maior precisão ela é dividida em função da temperatura do motor. Assim com um motor frio pode-se enriquecer mais para um atendimento rápido do acelerador. Uma tabela mal dimensionada provoca afogamentos. Esta tabela num dos eixos entra como índice o delta de carga que foi solicitado dependendo do sistema pode ser medido o delta de depressão no coletor ou a velocidade com que variou a tensão no caso de um sensor de posição de borboleta. No final fazem a mesma função, estimar a carga solicitada no motor.

O delta é calculado fazendo a subtração do valor de carga anterior menos o atual ou no caso de posição de borboleta, tensão anterior menos tensão atual. A unidade de injeção esta representada em milisegundos.

Se o delta é positivo, houve uma aceleração se o delta é negativo o usuário tirou o pé do acelerador veremos mais tarde que a tabela não é consultada. Observe que resumimos a tabela ilustrando somente até 50% de variação de carga, na realidade existem mais linhas.

 

3- Tabela de enriquecimento de partida a frio

Ao se dar a partida, o motor deve pegar. Nesta fase nenhum engenheiro esta preocupado com emissões. O motor tem de levantar o giro rapidamente pois a rotação do motor de partida é baixa e o consumo de corrente é alto. Os valores são críticos pois um enriquecimento exagerado gera um afogamento do motor. Uma mistura pobre demais também atrasa o arranque do motor e descarrega a bateria. Esta tabela normalmente é levantada em uma enorme câmara climática, onde o motor, ar, combustível é submetido a diferentes temperaturas iniciando em –36 graus Celsius. Ao dar a partida se o motor pegar o valor colocado na tabela esta ok, se não se deve esperar mais 24 horas para que a temperatura se estabilize novamente. Ao acertar o valor de partida para aquela determinada temperatura, ajusta-se a temperatura da câmara climática para a próxima temperatura que pode ser –26 graus e assim por diante. Para cada linha o tempo de repouso do motor e estabilização da temperatura é obedecido. A temperatura da câmara vai subir até os 70 graus. Vários motores são ensaiados e com diferentes tipos de Óleo do motor etc... É um trabalho exaustivo que exige além de paciência o uso até de roupas especiais para adentrar na câmara.

Note-se que os motores são calibrados para condições que são encontradas no frio do Alaska e no calor dos desertos na África. Não importa se você vai levar seu veículo lá. A montadora quer assegurar que o motor funcionará bem em qualquer uma dessas condições. Obs: A temperatura do motor é lida pela temperatura da água de arrefecimento.

Propositalmente colocamos nesta tabela um exemplo completo. Somente as duas colunas da esquerda são usadas e na realidade somente os valores hexadecimais são gravados na EPROM do módulo. Colocamos ao lado os numeros em decimais somente para exemplificar. Vamos a um exemplo usando a linha de 10o C

Observe que o valor final de injeção no caso de 10o Celcius é de 1,88 milisegundos, porem seria muito tempo perdido para o processador, ler 1,88 e calcular quantas unidades de injeção ou Interrupts deveriam ser gastos para se passar um tempo de 1,88 milisegundos. Devido a falta de tempo de processamento, a trasformação de números em Ponto Flutuante é evitada gravando-se um numero equivalente ao quantidade de UI’s (unidade de Injeção). A unidade de Injeção neste exemplo é de 28,6 microsegundos, ou seja, 66 (decimal) vezes UI (28,6) igual 1887 microsegundos igual à 1,88 milisegundos.

Para economizar tempo de processamento, a quantidade de unidades de tempo é gravado diretamente, ou seja 42H. O valor hexadecimal nunca excede FF ou seja 255 em decimal para uma Eprom com um Byte de 8 bits.

Observe no gráfico que quanto maior é a temperatura do motor, menor quantidade de combustível é necessária para o motor funcionar.

 

4- TABELA de ENRIQUECIMENTO PÓS - PARTIDA

Esta tabela entra em funcionamento em alguns milissegundos depois do motor "pegar".

Note que também é dependente da temp. do motor.

Para uma melhor precisão no processo de levantamento da rotação depois do arranque esta tabela entra em cena após algumas voltas do motor. O processo de levantamento de dados é muito parecido com o anterior, uma vez que estão intimamente ligadas e em seqüência.

 

5- TABELA de FATOR DE CORREÇÃO DA TEMPERATURA DO AR

Porque se mede a temperatura do ar?

É uma questão que poucos sabem responder.

A necessidade de se conhecer a temperatura do ar se dá por uma questão de massa.

A combustão é uma reação química onde comburente (ar com oxigênio) + combustível (gasolina, álcool, gás ricos em cadeias de hidrocarbonetos) resulta com liberação de calor, em gases que são HC (cadeias de Hidrocarbonetos) + CO (monóxido de Carbono) + CO2 (Dióxido de Carbono) + O2 (oxigênio, resultante de uma queima pobre) + Vapor de água (H2O) (no álcool tem bastante) + outros gases em quantidade insignificante. Como podemos observar são moléculas de ar que são queimadas junto com o combustível.

 

Seguinte>>

Os medidores de volume do sistema de injeção não medem massa, mas volume como o próprio nome já diz. Porem a combustão é feita com a massa do ar + combustível. É necessário então corrigir isto pois a densidade do ar varia de acordo com a temperatura e pressão. Quando se tem um sensor MAP pode-se compensar a pressão, porem a temperatura ainda precisa ser compensada. Note que os valores de compensação são baixos e não refletem numa alteração muito grande do valor final de injeção, porem para uma combustão aprimorada e baixos valores de consumo esta tabela é útil.

 

 

6 - MAPA DE INJEÇÃO – TABELA DE TEMPO DE INJEÇÃO

Finalmente chegamos a tabela principal do sistema onde se tem o tempo de injeção em função da rotação e da carga do motor. Esta tabela é Bidimencional, gerando não uma curva mas uma superfície muito bonita.

Como ela é extensa, vamos exemplificar somente um pedacinho da tabela que gera este mapa.

Neste exemplo a rotação varia de 460 até 1280 RPM a carga varia de 0 até 30 % da abertura da borboleta, note que para cada motor é uma tabela e valores de limites diferentes.

Veja o gráfico gerado com todos os pontos de uma tabela normal. Porem aqui vamos apenas representar alguns pontos.

Abaixo de 460 RPM o motor esta em regime de arranque. Note que estes dados são levantados em dinamômetro de motor sempre procurando uma relação de melhor torque menor consumo e melhor Lambda.

Com base nas curvas levantadas em dinamômetro os engenheiros acertam os mapas de acordo com a estratégia adotada para o motor. O tempo de injeção e o avanço vão obedecer ao que os engenheiros entenderem ser melhor para aquele motor. No caso do avanço, se trabalha com um angulo onde se obtém um máximo torque sem que haja pré-detonação. Uma margem de segurança é colocada para evitar isso.

Exemplo o Lambda deve se aproximar de 1 para que o catalisador seja eficaz. No caso Lambda 1 equivale a uma relação ar combustível de 14,6 partes de ar para uma parte de combustível se for gasolina pura, se for gasolina com 22% de adição de álcool a proporção muda para 12,8

A curva de torque não é gravada na eprom, somente o mapa. Exemplificamos aqui somente para uma idéia do trabalho que dá fazer o mapeamento de um motor.

Como estes dados são gravados numa Eprom? Um mapa de injeção é tridimensional formando uma superfície. Não existe forma de gravar estes dados a não ser um após o outro numa maneira linear como é à disposição da Eprom. Como exemplo, coloquei aqui a seqüência da tabela do mapa.

0, 1, 3, 5, 7, 8, 9, 0, 3, 7, 8, 9, 10, 11, 0, 10, 15, 17, 20, 25, 27, 0, 10, 16, 22, 25, 27, 34, 0, 11, 20, 25, 30, 37, 44, 0, 15, 29, 35, 38, 43, 55 e assim por diante. Esta disposição dos dados faz com que pareçam "ondas" quando vistos por um programa de remapeamento.

 

7- ROTINAS


Existem inúmeras rotinas básicas no programa que dependem muito do tipo de hardware (circuito eletrônico) que esta sendo usado no módulo. Vamos citar algumas principais.
ROTINA DE LEITURA DOS SENSORES (conversão A/D)
A conversão analógica que é o sinal de saída de muitos sensores ex: Temp. da água é transformada para digital por um circuito integrado especializado ou em alguns casos internamente ao micro controlador. Não vamos entrar aqui em detalhes do circuito eletrônico. Esta rotina é responsável por endereçar o sinal que vai ser lido (sensor) e a cada passagem fazer a leitura de um sensor diferente. Por quê? O tempo é muito escasso no processamento de tantas informações, alguns sensores não precisam ser lidos a cada 180 graus do volante do motor. Se fizermos uma simulação, numa primeira passada a rotina se preocupa em ler o sensor de Carga e Temp. da Água e termina. Na Segunda passagem, lê novamente os sensores de importância estratégica para o sistema como a Carga e a Temp. do Ar. Na terceira passagem lê Carga e tensão da Bateria. Nota-se então que a temperatura da água só é lida a cada 4 voltas do volante. Isto é válido pois a temperatura da Água, Ar e voltagem da bateria não se alteram em período de tempo tão pequeno. Em alguns casos, quando existe um numero maior de sensores, este ciclo demora proporcionalmente mais para ser completado. Todos os valores lidos são guardados em área de RAM (Randon acess memory), ou seja, variáveis do sistema, que podem ser acessadas por outras rotinas como a de pesquisa do mapa de injeção etc... Os valores guardados são em binário.

ROTINA DE MEDIÇÃO DO RPM
O RPM não é medido pelo circuito A/D seria desnecessário já que RPM pode ser lido em período. O RPM apesar de ser estratégico é lido por um circuito de interrupção/temporizador (timer / interrupt) normalmente já projetado para ser usado na porta de interrupção do processador. A rotina de leitura do RPM é a transformação do contador do timer. Como a leitura é de um período não de freqüência, o valor é sempre 1/RPM, o contador verifica quantas interrupções o sistema sofreu para que o sensor de RPM (da roda fônica, por exemplo) recebesse um sinal. Este período de interrupção dá a precisão de leitura da RPM. Quanto maior a freqüência do Cristal oscilador do processador, mais precisa é a leitura do RPM. Este procedimento é usado para se alterar a leitura de RPM. Exemplo: se com um cristal de 4.198 megahertz a freqüência máxima é de 5600 RPMs com 5.038 megahertz esta rpm pode subir para 6500 RPMs. Aqui vem a explicação do porque em tabelas que se referenciam ao RPM Ter valores quebrados. Como na tabela do mapa de injeção, valores como 480, 610, 718 etc...

ROTINA DE LEITURA DE ESTADOS
Alguns sensores fornecem não sinais analógicos mais um estado. On/Off (ligado/Desligado). Por exemplo, a chave de plena carga em alguns sistemas, chave de Marcha Lenta no corpo da borboleta. Situação da chave de Ar condicionado, sinal do sensor Knock (que apesar da saída ser um sinal analógico é transformado por um circuito de filtro e um detetor de janela em sinal digital). Dependendo do sistema de injeção o sinal da sonda Lambda entra nesta rotina. Da mesma forma que o Knock o sinal analógico da sonda Lambda é amplificado, filtrado e convertido em on/off, ou seja, está rico ou pobre ou em alguns sistemas que são mais precisos podem fornecer ao processador 3 ou 4 estados. Neste exemplo: com circuitos comparadores de nível, 3 estados podem ser detectados na Sonda Lambda, acima de 0,6 V = mistura rica, entre 0,5V e 0,6V lambda= 1 e abaixo de 0,5 mistura pobre.

ROTINA BÁSICA DE LEITURA DAS TABELAS
Cada tabela é relacionada por um índice. Em alguns casos a Temp. da água outra do Ar e Tensão da bateria.
A rotina de leitura é a mesma, porem o endereço base de pesquisa da tabela na Eprom é dada por um ponteiro, soma-se ao ponteiro o valor do índice, verifica se a soma não excedeu o tamanho limite em bytes da tabela, pelo ponteiro lê-se o valor correspondente e grava-se numa variável da memória. Ao se chamar esta rotina, alguns parâmetros são passados como Endereço base da tabela, índice, endereço de destino do valor lido. Um fato que merece ser observado aqui e o leitor pode perguntar. O que acontece se na tabela de temp. da água, houver um valor que esta entre 60o e 40o que só existem dois valores, ou seja, 50o? Simples, esta rotina faz a interpolação linear dos valores existentes para o intermediário. Para isso usa-se um algoritmo matemático.

ROTINA DO BLM de O2 e BLM do motor de passos
Existe muita confusão em torno destes parâmetros. Os reparadores que desconhecem estes parâmetros podem chegar a condenar módulos bons ao lixo e trocá-los sem necessidade.
Os programas mais modernos têm uma capacidade de aprendizado (não confundir com inteligência) que faz com que pequenas variações na qualidade do combustível sejam compensadas, melhorando o desempenho e a dirigibilidade. Lembro-me quando há muitos anos atrás trabalhava na programação de módulos e depois de todo o trabalho para levantarmos os parâmetros e tabelas, o governo brasileiro com a grande crise do petróleo resolveu adicionar álcool na gasolina. Perdemos muito trabalho terminado. Os módulos daquela época não aprendiam nada ainda. De qualquer forma esta era uma variação considerável do combustível. Voltando ao I e BLM que do inglês significa BLOCK LEARN MEMORY, ou seja, Bloco de Memória de Aprendizado (parâmetros adaptativos). Tanto para o I como para o BLM o valor normal é por volta de 128, ou seja, 80 em Hexa ou 1000 0000 em binário. Esclarecimento: o valor 128 é o centro da escala, ou seja, o zero. Veja no binário, este é um truque em programação para se testar o bit mais significativo. Em alguns processadores existe um comando “Pula se o Bit7 estiver ligado” e mostra se deve subtrair ou somar. Abaixo de 128 (7FH) temos em binário 0111 1111, ou seja, o bit 7 mais significativo esta desligado. Obs.: a contagem dos bits começa do zero assim sendo temos de 0 a 7. Se o valor esta acima de 128 isto significa que a ECU esta enriquecendo a mistura pois a base de calculo do tempo de injeção não é o suficiente e a mistura esta pobre demais. Um valor abaixo de 128 indica que a ECU esta empobrecendo a mistura pois a base do tempo de injeção esta alta e a mistura rica demais. No Scanner da NAPRO, você pode facilmente ver este parâmetro nas injeções que dispõem deste sistema.
Tanto o integrador I como o BLM são parâmetros cujo valor é resultado de uma integração. No caso do I é uma integração de curto prazo, ou seja, varia e faz a correção rapidamente a um estímulo. No caso do BLM é de longo prazo, variando muito lentamente a um estímulo qualquer. Um estímulo pode ser a colocação de um combustível de baixa qualidade. O usuário vai demorar a perceber falhas e uma marcha lenta diferente. O mesmo acontece quando se coloca um combustível bom novamente. Infelizmente estes módulos foram programados para países onde o combustível mantém um certo padrão de qualidade e os donos de postos vão pra cadeia se adulterarem o combustível. Outro estímulo pode ser o Ar Condicionado ligado/desligado. E assim vai. A integração pode ser exemplificada da seguinte maneira, usando uma formula onde os pesos fazem a média.
Exemplo para Integrador de curto prazo
Valor atual I = ( Lambda + 5 X valor I anterior) / 6
O valor resultante vai ser o valor atual na próxima rodada.
Ou seja, o valor atual tem 5 vezes mais peso na média que o estímulo recebido pela sonda Lambda.
No integrador de longo prazo
Valor atual BLM = ( Lambda + 49 X valor I anterior) / 50
Ou seja, o valor atual tem 49 vezes mais peso na média que o estímulo recebido pela sonda Lambda.
Em resumo, estes valores devem ser reaprendidos numa correção de um defeito. Se não houver um tempo de aprendizagem, o defeito foi corrigido, porem ele havia se tornado num agente de aprendizagem, o modulo tentava corrigir. Quando o defeito foi sanado, o modulo precisa ainda ter um tempo para se auto-corrigir novamente. Em alguns sistemas, os parâmetros podem ser zerados pelo scanner ou por outros processos (desligando a bateria por 24 horas, por exemplo). Na maioria dos casos, um defeito gerado por parâmetros auto-adaptativos devem ser tratados com muita paciência. Estes parâmetros fazem parte dos parâmetros de integração. Alguns reparadores chamam este processo de desmagnetizar o módulo que não tem nada a ver com forças magnéticas.

ROTINA de ENRIQUECIMENTO da MISTURA
Esta rotina quando solicitada, verifica qual foi o delta de aceleração solicitado e grava numa variável o valor lido da tabela em função da temperatura do motor. A cada “passada”, volta do volante, o valor inicialmente gravado é decrementado até chegar a zero. Isto gera um pico de injeção como a da bomba de aceleração do antigo carburador, que depois vai diminuindo com o passar do tempo. Verifique que esta rotina chama a rotina de leitura da tabela de enriquecimento.

ROTINA DE INJEÇÃO NA PARTIDA
Esta rotina é chamada quando a rotação esta abaixo de 460 RPMs ou perto disto. Ela acessa o valor da Tabela de Partida à Frio e Enriquecimento Pós Partida. Guarda estes dois valores. O primeiro é direcionado para o timer que controla o tempo de injeção. O segundo é guardado para quando a rotação assumir um valor maior que 460 RPM.

ROTINA DE CONTROLE DA BOMBA ELÉTRICA
Esta rotina se preocupa em monitorar se o motor esta em funcionamento. Se em 1 segundo, deixar de receber interrupções do sensor de RPM, desliga a saída do relê auxiliar de controle da bomba. Este sistema é feito para evitar que em caso de acidente a bomba continue a recalcar o combustível, podendo provocar um incêndio. Ao se ligar a ignição, este timer é ajustado num valor de interrupções equivalentes a 1 segundo, a cada volta do motor, este timer é ajustado novamente (reset). Quando impulsos param de chegar o timer rapidamente decrementa seu valor e no prazo de um segundo zera totalmente, retirando do transistor de potência o sinal de acionamento do relê da bomba.

LOOP BÁSICO
Loop é uma palavra usada em programação para designar uma rotina que volta sempre no mesmo lugar. Quando o motor esta em funcionamento, depois que as rotinas de partida fizeram suas tarefas, o módulo entra então numa rotina básica onde sempre faz as mesmas tarefas. A seqüência é uma chamada de rotinas básicas que se repetem voltando sempre ao início. Exemplo, a cada passada se lê o RPM, um canal de sinal analógico prioritário e outro não prioritário, corrige-se o tempo de injeção pelas tabelas de temp. da água e ar etc... Voltando ao início novamente. Caso o sistema tenha algum estímulo como o AR condicionado ser solicitado então a rotina responsável é chamada.

Temos escrito do tempo escasso de trabalho. Por quê? A cada volta do volante o sistema tem de calcular o tempo de injeção da próxima volta, abrir o bico e depois fechar. Para um motor de 4 tempos com 4 cilindros em rotação máxima, que é o pior caso, quando o processador tem menos tempo, vamos encontrar situações onde existe um tempo entre 4 a 20 ms para se fazer tudo. TUDO, inclusive se comunicar com um scanner.
Como você deve ter observado, a programação dos módulos é uma pequena obra de arte. Programar todas as rotinas num espaço limitado de Eprom, com tempos de processamento limitados e na velocidade que o mercado requer não é uma tarefa nada fácil. Os programas estão cada vez mais sofisticados. Em 1985 a Eprom usada numa ECU tinha uma capacidade de 32K Bytes, entre 1986-89 subiu para 128K, entre 1990 –92 subiu para 256K, hoje já temos de 512K, onde é que vamos parar ?