Partiamo subito dicendo, che questo progetto (Eprom Switcher) andrà usato solo per auto da corsa e/o pista, in quanto l’ utilizzo su strada non è consentito.
I l circuito in questione è stato sviluppato principalmente per il mondo delle corse (auto) ma si può usare per svariati scopi. Il circuito è usato, principalmente per cambiare mappa e/o eprom in corsa (per le Ecu che le supportano) oppure per cambiare da fermi (a motore spento). Il tutto è gestito da un piccolo microcontrollore chiamato PIC.
La logica che sta dietro al microcontrollore o PIC è molto semplice. In poche parole questo microcontrollore ha due “modalità”. La prima modalità è quella che viene usata per cambiare mappa direttamente in corsa, l’ altra è quella per cambiare solo a motore spento. Ho deciso di creare queste due piccole modalità perchè non tutte le Centraline delle auto supportano questa “funzione”.
Anche il circuito è diviso in due blocchi: il primo blocco è il circuito che gestisce la lettura dello stato di un pin da parte della ECU (centralina), il secondo blocco serve a “visualizzare” tramite due led la mappa selezionata. Per selezionare la mappa si va ad agire su un piccolo interruttore.
Il cuore che gestisce il tutto…
Il cuore di questo progetto è il microcontrollore, esso, in base alla modalità scelta (grazie ad un piccolo jumper) decide quale strategia usare. Ad esempio se si seleziona la modalità per cambiare mappa in corsa, il PIC legge il pin CE della eprom selezionata e ne rileva lo stato. Lo stato può essere HIGH o LOW. Se la eprom ha uno stato HIGH significa che è in Standby mentre se lo stato è LOW significa che è in lettura.
Lettura & standby..
Il Pic legge questo stato e se la eprom è in standby lascia cambiare la mappa tramite l’ interruttore. Ovviamente il passaggio da Lettura a standby è molto veloce (nell’ ordine dei microsecondi). Nel circuito è presente un led che “mostra” lo stato dell’ ecu. Però visto che la Ecu ha un tempo di lettura/standby molto veloce il led rimane sempre acceso (Per noi esseri umani sembra acceso ma in realtà se si testa con oscilloscopio si vede cosa succede). Questo led di “avviso lettura” più avanti lo modificherò in modo tale che se la Ecu sta leggendo la eprom, il led lampeggi. Ovviamente il led si può sempre escludere.
L’ altra modalità è quella per le ecu che non supportano questa funzione, ovvero il cambio di mappa/eprom in corsa. Per vedere se la tua ecu non ha la funzionalità di mettere in standby la eprom basta applicare il circuito e provare a cambiare mappa (Ad esempio si può semplicemente mettere la eprom con mappa originale e una magari con limitatore a 3000 giri. Facendo questo si riuscirà a vedere se la ecu mette in standby la eprom) se questo non avviene significa che la ecu è sempre in lettura e non è possibile cambiare mappa a motore acceso. Ovviamente per cambiare le modalità si può agire sul jumper presente sulla scheda.
Funzionalità del pcb ecc..
Ovviamente prima di poter fare il pcb ho dovuto pensare come gestire a livello elettronico le due eprom e il passaggio di esse. Dopo un po’ di studio sulle eprom ho scoperto che esiste un pin chiamato: “CE“, la cosa bella di questo pin è che serve a mettere in standby o meno l’ eprom stessa. Quando si da alimentazione (nel mio caso 5v) al pin CE l’ eprom va temporaneamente in sospensione. Prima di tutto ho fatto un semplice sketch con arduino dove mi leggeva lo stato del pin CE su una centralina. Ho creato una semplice simulazione al pc di questo circuito simulando la lettura da parte della centralina per verificare se il circuito e il codice di programmazione rispondevano bene.
Le varie prove…
Prima di fare il pcb ho provato il circuito su breadboard mediante l’ uso di arduino. Ho creato un piccolo sketch di arduino dove ho fatto una serie di controlli, ovvero:
- Controllo se il jumper è in posizione on oppure off
- Controllo lo stato del pin CE della ECU
- Se il jumper è in posizione on eseguo una modalità altrimenti eseguo l’ altra modalità
- Controllo lo stato dell’ interruttore per cambiare mappa.
Una volta testato al banco con Arduino ho creato il programma per un piccolo Pic . Ho utilizzato un pic a 8 pin chiamato 12f629. Questo pic ha 6 Gpio di cui 1 sola si può usare solo per l’ Input. Il programma per il pic è scritto in codice Assembly ovvero un linguaggio di programmazione molto simile al linguaggio macchina. Ho deciso di usare un pic per questioni di spazio, difatti il pcb è abbastanza piccolo: 35 x 40 mm.