Installare iniezione elettronica indiretta con l'aiuto di Arduino

hiperformance71:
Salve, mi permetto di intromettermi in questo post vista la mia esperienza in campo motoristico e specialmente in gestione motore.
Chiarisco alcune cose:

1-gli inniettori non si aprono in modo fisso, ma pulsato, solo qli inniettori di impianti meccanici tipo Bosch K-jetronic erano a spruzzo fisso e richiedevano un complesso sistema per regolare la quantità inniettata che è dipendente dai giri e dal carico motore, a 1000 giri richiede meno benzina che a 9000 rpm a folle, ma a 4000 rpm a pieno carico richiederà anche il doppio di benzina che a 9000 rpm a folle.

2-la miscelazione aria-benzina o AFR (Air Fuel Ratio) è dipendente dal carico motore, avere un' AFR di 14,7:1 significa bruciare tutta la benzina disponibile, ma questa condizione viene raggiunta solo a carichi parziali leggeri, a pieno carico è consigliabile attestarsi entro i 12,8 @ 13,5:1 (da analizzare caso per caso). Un AFR basso significa carburazione GRASSA, uno alto MAGRA.

3-Per far funzionare una ipotetica centralina ARDUINO ECU, serviranno:

-segnale giri (onda sinusoidale o quadra, ricavata da sensore magnetico, effetto Hall o ottici). per un motore monocilindrico 2T non richiederà di ruote foniche complesse, credo possa essere fatto anche con un unico dente in corrispondenza del PMS, ma la precisione ne risentirebbe molto, meglio dotarlo di almeno 4 denti o più.
-segnale CARICO MOTORE, principalmente un segnale analogico potenziometro farfalla.
-segnale pressione barometrica o cassonetto aspirazione (servirà ad adeguare la carburazione al variare della pressione atm. e quindi di variazioni di quota).
-segnale temp. motore, servirà per implementare le strategie di partenza a freddo (a freddo si richiede più benzina)
-segnale temp. Aria, servirà a rivedere la carburazione per effetto del cambio di densità dell'aria al variare la temp.

-segnale sonda lambda, questo segnale è utile ma non indispensabile, ho mappato tante auto da corsa senza che esse usino la retroazione sonda (ma per mapparle si viene usata una sonda lineare wideband), per gestire queste sonde vi è necessità di usare un controller, se prendi quansiasi sistema wideband commerciale tipo AEM o Innovate LC1 c'è l'hanno incluso, essi forniscono un segnale 0-5v proporzionale al valore lambda-AFR dove un valore di 500mV equivale ad un AFR di 9:1 e 4500mV ad uno di 22:1 (scusate le inesattezze, vado a memoria ma questa è l'idea di linearizzazione, poi si fa tutto con i datasheet alla mano).

-tutto l'hardware necessario: Pompetta benzina da almeno 3 bar, inniettore, regolatore pressione benzina, centralina e relativo cablaggio con relativo relè (non indispensabile ma raccomandato) e fusibile (molto raccomandato).

-ed ovviamente, un firmware per la centalina! Per l'hardware della centralina ARDUINO ECU non ci sarebbero grossi problemi, potrei fornirti schemi di come fare, questa è la parte facile, è nel firmware dentro l'MCU dove risiede l'Inteligenza del progetto (parole dette da un ingegnere che ha creato la sua propia centralina per la sua moto).

Come potete vedere, in realtà la parte difficile è creare il sw da scaricare nell'ARDUINO, per fortuna è un monocilindrico, quindi risolve di molto il lavoro da fare, ma la complessità dell'operazione non è alla portata di tutti (nemmeno mie per la verita! ma ci sto studiando!),

come potenza di calcolo credo che ARDUINO sia all'altezza della situazione, nonché perché ho visto in rete progetti simili funzionanti e poi, il micro usato, ATMEGA328P l'ho visto dentro la centralina creata da in ingegnere per la sua moto 4T bicilindrica (guzzi).

l'unico segnale che devi avere gestione in real time è quello giri motore, gli altri possono essere "letti" in base ai tempi di latenza dell'arduino di 10ms come ho letto nelle risposte precedenti. Per acquisire il segnale giri, la miglior forma che conosco è usare gli interrupt in modo da liberare il micro quando non vi sono eventi "teeth" (lettura denti ruota fonica). in un motore monocilindrico 2T vi è un' accensione ad ogni giro ogni qual volta il pistone è al PMS, quindi in breve, la nostra ARDUINO ECU ad ogni "teeth" (se usiamo un solo dente) deve inniettare una certa quantità di benzina regolandone il tempo di apertura dell' iniettore, al minimo magari sarà sufficiente 2ms ma a pieno carico e 9000 rpm sarà necessario 5,2-5,3ms (come detto da qualcun'altro, un giro si compie in 6,6ms e noi possiamo usare solo l'80% del tempo per aprire e chiudere gli iniettori questo si chiama DUTYCICLE dell'iniettore). quindi se dal momento che si verifica l'interrupt del dente ruota fonica, la nostra ECU dovrà aprire l'iniettore per quel tempo. Come concetto è semplice, ma come realizzazione un bel pò meno, ma non impossibile.

Hiperformance, una bella risposta, precisa. Io di quello che hai citato a livello di elettronica (e anche iniezione), so poco, per la parte meccanica ho capito tutto (o almeno spero!).

Per i giri basta e avanza il dentello del pick up del motore a mio avviso: ho visto molti contagiri che invece che leggere il regime di rotazione al pick up (quindi al volano), lo leggevano rispetto alla frequenza del cavo candela, avvolgendoci attorno un filo: io non conosco tale principio di funzionamento, ma questa potrebbe essere una valida alternativa alla lettura al pick up, un po più complessa da fare. Inoltre la lettura al cavo candela viene usata anche da taluni banchi prova per il grafico potenza-coppia su numero di giri. Insomma, non sarà precisissimo, ma nemmeno così errato a mio avviso.

Per il resto ora sono in fase di stand by causa esami. Spero di potermi tenere in contatto con te, le tue conoscenze a riguardo sono notevoli. :slight_smile: