quinta-feira, 6 de setembro de 2018

Engenharia reversa ECU Bosch 7.5.30 - Parte 1 de várias

Um dia desses resolvi investigar uma ECU, unidade de controle de motor. Os motivos para isso são:

  1. Como é fabricado o hardware para ser robusto e aguentar a pancada em um carro e um monte de mecânico nó cego? Esse módulos são super robustos, e aguentam muito abuso. É difícil projetar e fabricar algo equivalente sem muito teste e dinheiro.
  2. Como é feito o programa desse módulo? O programa deve ser algum muito bem feito, pois precisa lidar com diversos fatores e condições de falhas e garantir que o motor funcione nas condições mais extremas.
  3. Será possível reprogramar esse módulo com um programa feito por mim? Existem algumas ECU open source - por exemplo: speeduino, megasquirt e rusefi - mas o hardware delas não é lá grande coisa. Utilizar um módulo antigo com um código open source é interessante pois junta um hardware muito bom, testado e barato com um software que qualquer um pode alterar e ajustar. Isso permite utilizar esse módulos super robustos para diferentes aplicações.

Pesquisei na internet um módulo que tinha um preço bom e que permitia ser reprogramado, e acabei escolhendo o modelo ME7.5.30 da Bosch, utilizada em carros da volks, como o gol G5.Paguei algo como R$250 num ferro velho.

Módulo Bosch ME7.5.30. A parte HW: H03 deve ser variação de hardware.
Primeiro comecei pelos componentes eletrônicos. Encontrei o datasheet do processador e alguns componentes periféricos como transistores, eeprom e controlador de borboleta. Mas existem vários chips proprietários da Bosch, e não consegui encontrar nenhuma informação sobre eles na internet. Isso dificulta bastante o processo de engenharia reversa.

Com muita paciência puxei o esquema elétrico parcial dessa placa. Como isso foi possivel entender a função da maioria dos componentes. As principais funções estão na figura abaixo.

Placa do módulo. Aqui o conector já foi removido para facilitar o equema elétrico. A figura mostra os princípais blocos funcionais no circuito.
O principais blocos são:

  1. Chave de entrada com proteção de polaridade e proteção contra load dump: isso é feito com dois transistores N-MOSFET  FDD5810 em série. Eles protegem contra um eventual inversão na polaridade de alimenteção e também contra picos de tensão que podem ocorrer no sistema elétrico do veículo em algumas condições. Estes transistores também são utilizados para ligar/desligar a alimentação de parte do circuito.
  2. Circuito de fonte, k-line, rpm (BOSCH 30639): esse circuito faz um monte de coisa. Ele liga/desliga alimentação de parte da placa, tem uma fonte permanente e outra controlada e 5 V, tem um circuito duplicador de tensão utilizado para controlar os gates dos N-MOSFET FDD5810 da chave de entrada. Além de ser fonte, ele fornece tensão para diferentes sensores (deve ter algum tipo de proteção contra excesso de corrente), tem um drivers conversor de RS232 TTL para K-LINE, e um circuito de tratamento de sinal para o sensor de RPM. 
  3. Aquecedor sonda lambda: existem 2 entradas para aquecimento de sonda lambda. Isso é feito com o componente BUK138-50DL, uma chave em estado sólido com proteção contra sobre corrente e sobre temperatura.
  4. CI BOSCH 3061239 : isso aqui provavelmente é da Bosch também, e parece ser um transceiver de CAN, utilizado para comunicação com o painel.
  5. Processador ST10F275: aqui é feito todo o processamento e comunicação do módulo. É o cérebro do negocio.
  6. Whatchdog: é um circuito de whatchdog externo formado pelo oque parece ser um CI que monitora os niveis de tensões na placa e um microcontrolador que coloca uma inteligência no whatchdog. Essa parte do circuito é a mais obscura e dificil de entender.
  7. Sensor detonação: é um circuito de tratamento de sinal para o sensor de detonação. Tem um amplificador operacional e um circuito maluco. O sinal tratado vai para um AD do processador.
  8. Driver Ignição: Bosch 30490: manda sinais para as bobinas. Esse driver deve mandar pulsos positivos para o controle de bobinas. Não pode ser utilizado com bobinas comuns, somente com aquelas que já tem o driver de corrente embutido (acho).
  9. Injetores e atuadores: Bosch 30621: driver de corrente low side, ou seja, conecta a carga no terra. Utilizado para controle dos injetores e reles de diferentes sistemas do carro.
  10. EEPROM: ST 95040. Memoria EEPROM SPI. Tem o codigo imobilizador do carro e mais alguns parametros. Também deve salvar os log de erro do sistema.
  11. Driver Borboleta: ST 9929. Um driver de corrente para controle da posição da borboleta de admissão.
É interessante notar que quase todos os pinos de entrada desse módulo são filtrados com capacitores para o terra. Somente pinos como do sensor e detonação, e talvez a CAN ou sensor de rotação que não tem capacitores de filtragem.

Outra característica importante é que a comunicação CAN é utilizada com o painel do carro. A linha K-LINE é utilizada para comunicação com o scanner. K-LINE nada mais é que uma RS232 utilizando somente um fio, ou seja, tanto o TX como o RX utilizam o mesmo meio físico. Um circuito simples converte RS232 para K-LINE. 

Num próximo post apresento como pode ser feita a leitura e gravação desse módulo.



8 comentários:

  1. boa tarde, voce teria o datasheet do st10f275 para me passar?

    ResponderExcluir
  2. Não tenho. Eu uso do st10f276. Não encontrei do 275 em nenhum lugar.

    ResponderExcluir
  3. oi amigo interenssante eu estudo engenharia eletrica tambem fico fazendo engenharia reversa nesses modulos kk pra grava ele so faze un conversor serial kline usa o programa st10 flasher se vc quiser tenho varios arquivos desses modulos alguns me7.5.30 usam st10f276(por exemplo o 030906032Et) e alguns usam st10f275 tb mesmo sendo 7.5.30. isso é um ramo que da dinheiro engenharia reversa vc vendo o que chamamos de mapeamento do modulo que é quando tem uma imagem identificada do que cada componente faz...

    ResponderExcluir
  4. Oi Herinque...esse projeto esta meio parado, espero retomar em 1 ou 2 meses...eu ja consegui baixar o programa e estou analisando o código dele agora. Ja consegui programar com meu programa, mas estou com um problema com o watchdog da placa que ficava resetando o sistema. Eu acredito que em breve consigo desligar o watchdog e programar o modulo para fazer oque eu quiser, daí eu posto no site as informações.

    Eu não tenho muita experiencia com módulos de injeção, esse é o primeiro que eu estou mexendo.

    ResponderExcluir
  5. Sou técnico.eletrônico e estou começando a estudar céus
    Mas tenho dificuldade de achar datasheets, alguma dica ?
    Esses módulos eles têm esquemático, ? Onde acha -los ?
    Gostei do estudo muito fera.

    ResponderExcluir