Installare iniezione elettronica indiretta con l'aiuto di Arduino

osuf:
non ha senso pensare a progetti cosi importati senza avere le basi
La quantita di benzina si regola variando il tempo di apertura delliniettore e non agendo sulla pompa La sonda lambda non si puo utilizzare sul due tempi La termocoppia nemmeno si puo usare per questo progetto, é milioni di volte piu lenta di quanto serve, basandoti su di quella gripperesti dopo i primi 100m Lunico modo é fare una mappatura im base al numero di giri, apertura valvola, temperatura pressione, in poche parole ore e ore al banco prova e in pista
Poi un giorno ti viene voglia di provare un variatore o una marmitta o una testa diversa e devi rincominciare tutto da capo

http://www.milizianokart.it/lcu-one-can.html Come scusa? :stuck_out_tongue:

In merito alla lambda anche io credevo che non si potesse applicare su un due tempi, ma c è chi sostiene il contrario. Tentar non nuoce.

Devo ammettere che in materia "iniezione" ed "iniettori" non sono informatissimo, ma nemmeno così ignorante. Di sicuro me la cavo molto meglio coi carburatori, e non mi ritengo nemmeno un completo ignorante in materia di motori, avendo lavorato a mano (e imparato) smontando e rimontando da solo (e elaborando, ma non parlo di un plug and play di pezzi aftermarket........) tutti i mezzi che mi sono passati di mano. Però parto dal presupposto che non si smette mai di imparare, quindi se hai delle dritte da darmi in merito al principio di funzionamento dell iniezione sono lieto di accoglierle.

In merito alla sonda lambda, sto seguendo diverse vie d'informazione. Una volta raccolti tutti i dati vedrò come prendere la cosa (ed eventualmente verificarla).

In merito alla termocoppia, perchè sostieni che è lenta nell'inviare l'informazione? Se si riesce a carburare a mano usando il dato in input della temperatura di scarico, non vedo perchè non possa farlo con maggior precisione e tempi più brevi (intendo nella reazione, non nella lettura del dato) un pc programmato con arduino. E' chiaro che se sei più magro di 50 punti grippi molto presto, ma se il tempo di reazione della cpu è molto breve e riesce a ingrassare in tempo, il problema non si verifica. Potrei tranquillamente adottare come modus operandi la rilevazione di una temperatura "tipo" attorno a cui stare con una alimentazione a carburatori, per poi inserire il dato di temperatura nella ecu dell'iniezione e installare la stessa. Il controllo a livello di scrittura a livello logico sarebbe "se la temperatura si scosta da quella tipo, ingrassa - o smagrisci a seconda del caso - di tanto così, finchè non ritorni a quella temperatura", cosa che si tradurrebbe in un if e un ciclo while (parlando delle mie lontane rimembranze di C) nemmeno troppo complesso. Poi è chiaro che in fase di test si verificherà analogicamente tramite il colore della candela il risultato dell'operazione ( e con test non intendo solo installazione del sistema, ma anche nel caso il sistema funzionasse e io ci cambiassi una espansione o qualunque altro componente); inoltre trovo che sia molto più comodo ed empirico agire su un dato numerico per trovare la temperatura e quindi la carburazione perfetta (nel caso della termocoppia) tramite l'uso di arduino accoppiato a un pc piuttosto che dover ogni volta smontare carburatore e cambiare getto; inoltre in questo modo, appena cambia tempo il sistema si autoregola senza dover, come già detto, fare le preghiere davanti al carburatore.

Nessuno mi ha detto come avere il controllo dell'apertura del gas: idee? non conosco tutti i possibili sensori di arduino, perciò, per cortesia, indicatemene uno che eventualmente potrebbe fare al caso mio.

:slight_smile:

nel sito dice "è nata per durare oltre 100.000 km su auto di serie" peccato che dopo una giornata in pista su uno scooter 2t sono passati quintali di incombusti dalla marmitta che si vanno a depositare ovunque, un conto è se la sonda la usi per leggere un dato sul display come nel caso del link,leggi un dato e poi sta a tè decidere se possa essere veritiero o smontare la sonda per controllare e pulirla, un conto è che la sonda manda direttamente il segnale alla centralina che può di colpo cambiarti la carburazione

per la termocoppia evidentemente non l'hai mai utilizzata per carburare, per la carburazione si fà riferimento alla temperatura massima che si legge in fondo al rettilineo dopo un turno
ad esempio in un rettilineo di 400 metri tipo l'autodromo di varano per i primi 200 metri la temperatura sale velocemente fino a 420°, poi negli ultimi 200 metri continua a salire piano piano fino a 430°
se tè dici al tuo arduino che la temperatura che deve tenere è di 430 ti fai tutto il rettilineo con la carburazione magra, anzi dopo i primi 100 metri ti sei già fermato a bordo pista, per non parlare poi del fatto che per i primi giri quando tutto si deve ancora scaldare le temperature segnate dallo strumento sono molto minori, e saranno minori anche nel caso in cui vai in una pista con un rettilineo più corto

se vuoi fare una iniezione elettronica devi scordarti di farla con un ciclo ad anello chiuso come nelle macchine

nel caso volessi continuare per la tua strada puoi usare una qualsiasi termocoppia tipo k e un circuito per la compesazione del giunto freddo

osuf:
nel sito dice "è nata per durare oltre 100.000 km su auto di serie" peccato che dopo una giornata in pista su uno scooter 2t sono passati quintali di incombusti dalla marmitta che si vanno a depositare ovunque, un conto è se la sonda la usi per leggere un dato sul display come nel caso del link,leggi un dato e poi sta a tè decidere se possa essere veritiero o smontare la sonda per controllare e pulirla, un conto è che la sonda manda direttamente il segnale alla centralina che può di colpo cambiarti la carburazione

per la termocoppia evidentemente non l'hai mai utilizzata per carburare, per la carburazione si fà riferimento alla temperatura massima che si legge in fondo al rettilineo dopo un turno
ad esempio in un rettilineo di 400 metri tipo l'autodromo di varano per i primi 200 metri la temperatura sale velocemente fino a 420°, poi negli ultimi 200 metri continua a salire piano piano fino a 430°
se tè dici al tuo arduino che la temperatura che deve tenere è di 430 ti fai tutto il rettilineo con la carburazione magra, anzi dopo i primi 100 metri ti sei già fermato a bordo pista, per non parlare poi del fatto che per i primi giri quando tutto si deve ancora scaldare le temperature segnate dallo strumento sono molto minori, e saranno minori anche nel caso in cui vai in una pista con un rettilineo più corto

se vuoi fare una iniezione elettronica devi scordarti di farla con un ciclo ad anello chiuso come nelle macchine

nel caso volessi continuare per la tua strada puoi usare una qualsiasi termocoppia tipo k e un circuito per la compesazione del giunto freddo

Per la termocoppia evidentemente ti è sfuggito un passaggio: prima determino il valore migliore con l alimentazione a carburatore (tramite il controllo del colore della candela), poi faccio si che arduino mantenga lo stesso durante l'utilizzo del mezzo. Il tuo appunto relativo al riscaldamento del mezzo è corretto, non ci avevo pensato, tuttavia credo che anche questo sia superabile pensando a un comando che dica "dalla prima accensione attendi che la temperatura raggiunga quella ottimale (lasciando il minimo a un valore standard - qua mi sorge una domanda: nei corpi farfallati il minimo si determina manualmente con regolando l apertura della valvola in posizione chiusa con un registro un po come avviene nei carburatori a saracinesca o no?), per poi cominciare a intervenire dalla prima volta che il motore tocca la stessa (naturalmente ponendo come t zero il momento di accensione del mezzo).

Altra domanda: quindi te intendi dire che se io viaggio col gas parzializzato per diversi metri facendo lavorare in maggioranza il passaggio la temperatura di scarico è diversa da quella di quando faccio i medesimi metri col gas completamente aperto? di questo dato non mi sono mai reso conto: avendo alcuni mezzi da gestire con 1 sola termocoppia, questa la monto e la smonto solo per carburare.

"poi faccio si che arduino mantenga lo stesso durante l'utilizzo del mezzo"
è questo che ti ho detto che non puoi fare perchè anche se la carburazione è perfetta metro dopo metro la temperatura che ti dà la termocoppia cambia, all'inizio del rettilineo sono 400 gradi alla fine 430 ad esempio e la quantità di benzina che entra è sempre la stessa, se gli dici stai a 400 gradi ti fai tutto il rettilineo con la carburazione grassissima, se gli dici stai a 430 il rettilineo non lo finisci

per la seconda domanda si, la temperatura varia enormemente in base all'apertura della valvola

se vi volete "divertire" o approfondire l'iniezione ci si puo documentare sulle centraline per il gpl sulle auto,

consiglio http://www.ac.com.pl/en/

ha il software e manuale gratuito
http://www.ac.com.pl/public/pubonline/cms/files/Programy-i-instrukcje-obslugi/SetupAcGasSynchro-9.1.0.0.exe

ci va poco a ingannare la centrallina e adattarla a quello che si vuole la centralina è un po piu potente di un arduino uno

(40 MHz)

Magari semplifico troppo ma... come già detto la benzina va principalmente rapportata all'aria....

Serve un debimetro, che stima il volume di aria in ingresso
Serve sapere le specifiche dell'iniettore, cioè a quanta benzina corrisponde una certa apertura
In mezzo Arduino che leggendo il primo calcola l'apertura.
E così siamo già che il motore sta in moto ed è utilizzabile.

Tutto il resto viene dopo... si possono aggiungere mille altri sensori, lamba, temperature, giri ecc per ottimizzare l'iniezione... e forse questa parte qui è troppo complicata da gestire sotto casa senza conoscenze e strumenti di misura

chiodoxxx:
Magari semplifico troppo ma... come già detto la benzina va principalmente rapportata all'aria....

Serve un debimetro, che stima il volume di aria in ingresso
Serve sapere le specifiche dell'iniettore, cioè a quanta benzina corrisponde una certa apertura
In mezzo Arduino che leggendo il primo calcola l'apertura.
E così siamo già che il motore sta in moto ed è utilizzabile.

Tutto il resto viene dopo... si possono aggiungere mille altri sensori, lamba, temperature, giri ecc per ottimizzare l'iniezione... e forse questa parte qui è troppo complicata da gestire sotto casa senza conoscenze e strumenti di misura

Vorrei un parere da parte di osuf a riguardo, ci avevo pensato anche io. Magari uno strumento di rilevazione della "quantità" di ossigeno in entrata all'alimentazione può aiutare. Insomma, qualcosa che stimi ad esempio la densità della stessa in funzione del volume di un airbox chiuso.

secondo mé bisognerebbe fare cosi:
-prendo il motore a carburatore settato alla perfezzione e al banco misuro la quantità di benzina che consuma il motore ad esempio ogni 500 giri e per 5 posizioni della valvola -misuro la portata delliniettore in funzione di quanto rimane aperto -poi userò arduino con 4 sensori,numero di giri, posizione della valvola, temperatura e pressione e farò il programma che in base ai valori dica alliniettore quanta benzina immettere

Il problema però é che per come sò scrivere io i programmi con arduino salterebbe fuori un programma lungo 10km che poi arduino dovrebbe gestire in pochi millisecondi(in poco piu di 4 ms il motore ha gia fatto un giro) e non penso che ci riesca

Con circa 5-600 euro ti vendono già tutto il kit completo di centralina, programma,pompa,regolatore di pressione, 2 iniettori
Ok che con arduino uno può imparare e cavarsi delle soddisfazioni, ma come si dice il gioco non vale la candela

Ciao,

forse ho perso qualche pezzo del discorso, se l'idea è quella di gestire l'iniezione con Arduino, la strada è sicuramente in salita. Ci sono due aspetti sicuramente delicati: va acquisita la posizione angolare del motore ed effettuata l'iniezione a frequenze con sono legate alla velocità di rotazione del motore, anche negli impianti ad iniezione indiretta d'uso sulle automobili, il loop chiuso da solo non è in grado di mantenere il motore in funzione.

Sul primo aspetto pesa la velocità di computazione, un microcontrollore a 16 MHz può anche farcela, ma va programmato usato a "basso" livello per garantire dei tempi di risposta decenti. Non so lo scooter in questione a quali regimi massimi possa girare, immagino non tanto distante dai 1-10.000 giri/min (circa 60-6 ms per un giro, quindi un'iniezione).

Il secondo problema è che la sonda lambda e la termocoppia sono strumenti intrinsecamente lenti, hanno dei tempi di reazione distanti dai 60-6 ms di cui si parlava prima. Nelle auto viene sempre utilizzata la misura della massa d'aria entrante per determinare attraverso delle tabelle (la mappatura) quanta benzina iniettare.
La sonda lambda entra in gioco solo a regimi costanti, quelli buoni per le prove di rilevazione degli inquinanti, ma da sola non è in grado di gestire il motore.

Se invece il discorso è quello di utilizzare un carburatore e carburarlo in linea, utilizzando una scheda elettronica, il problema diventa fattibile, ma sicuramente non semplice.

Saluti,
Dario.

veseo:
Ciao,

forse ho perso qualche pezzo del discorso, se l'idea è quella di gestire l'iniezione con Arduino, la strada è sicuramente in salita. Ci sono due aspetti sicuramente delicati: va acquisita la posizione angolare del motore ed effettuata l'iniezione a frequenze con sono legate alla velocità di rotazione del motore, anche negli impianti ad iniezione indiretta d'uso sulle automobili, il loop chiuso da solo non è in grado di mantenere il motore in funzione.

Sul primo aspetto pesa la velocità di computazione, un microcontrollore a 16 MHz può anche farcela, ma va programmato usato a "basso" livello per garantire dei tempi di risposta decenti. Non so lo scooter in questione a quali regimi massimi possa girare, immagino non tanto distante dai 1-10.000 giri/min (circa 60-6 ms per un giro, quindi un'iniezione).

Il secondo problema è che la sonda lambda e la termocoppia sono strumenti intrinsecamente lenti, hanno dei tempi di reazione distanti dai 60-6 ms di cui si parlava prima. Nelle auto viene sempre utilizzata la misura della massa d'aria entrante per determinare attraverso delle tabelle (la mappatura) quanta benzina iniettare.
La sonda lambda entra in gioco solo a regimi costanti, quelli buoni per le prove di rilevazione degli inquinanti, ma da sola non è in grado di gestire il motore.

Se invece il discorso è quello di utilizzare un carburatore e carburarlo in linea, utilizzando una scheda elettronica, il problema diventa fattibile, ma sicuramente non semplice.

Saluti,
Dario.

Per quel che riguarda il numero di giri, alcuni (i più piccoli due tempi, che siano scooter o moto poco cambia) toccano punte comprese tra 14 mila e 15 mila giri. Mica pochini, pur non essendo 4 tempi.

Parlami di quello che ho sottolineato: cosa intendi di preciso? perchè non riesco ad afferrare il concetto di "carburazione in linea"

penso che intenda come ho detto io fare una carburazione in base al numero di giri/posizione valvola senza un loop chiuso

I due tempi girano abbastanza in alto, mi meravigliano i 15.000 giri/min per un motore di uno scooter omologato per girare in strada, però non cambiano il succo del discorso, qualcosa in grado di lavorare con tempi di 2-3 ms non può basarsi sulle librerie di Arduino. Il microcontrollore potenzialmente può farcela, limitatamente ad ingressi digitali, mentre per gli analogici il solo tempo di conversione risulterebbe troppo grande (se non sbaglio sono valori dell'ordine di 10 ms). Tutto questo dimenticandosi che la lettura allo scarico non permette di reagire in tempi tali da poter essere lasciata sola.

Un esercizio simpatico è quello di calcolare la velocità dei gas di scarico (approssimandola alla velocità lineare del pistone) e valutare il tempo necessario affinché i gas di scarico arrivino effettivamente al sensore.
Questo tempo è normalmente nell'ordine di 5-10 cicli, quindi dimenticandosi di tutto il resto, la sola lettura in retroazione è in ritardo di diverse combustioni.

Il risultato è che ci vuole un loop in ciclo aperto (pressione all'aspirazione, giri motore) con una mappatura, come avviene in tutti i motori a benzina ad iniezione (diretta ed indiretta).

La carburazione in linea, per dirla in modo grezzo, è il variare la carburazione (lo spillo) del carburatore in base alle condizioni operative del motore. Non sostituire il carburatore, ma semplicemente affiancarlo per avere delle condizioni di carburazione particolari, basate sulla posizione della valvola a farfalla.

In quel caso si può pensare di ingrassare leggermente la miscela quando la valvola a farfalla viene aperta repentinamente. Un giochetto inutile e non banale, ma sfizioso.

Saluti,
Dario.

veseo:
I due tempi girano abbastanza in alto, mi meravigliano i 15.000 giri/min per un motore di uno scooter omologato per girare in strada, però non cambiano il succo del discorso, qualcosa in grado di lavorare con tempi di 2-3 ms non può basarsi sulle librerie di Arduino. Il microcontrollore potenzialmente può farcela, limitatamente ad ingressi digitali, mentre per gli analogici il solo tempo di conversione risulterebbe troppo grande (se non sbaglio sono valori dell'ordine di 10 ms). Tutto questo dimenticandosi che la lettura allo scarico non permette di reagire in tempi tali da poter essere lasciata sola.

Un esercizio simpatico è quello di calcolare la velocità dei gas di scarico (approssimandola alla velocità lineare del pistone) e valutare il tempo necessario affinché i gas di scarico arrivino effettivamente al sensore.
Questo tempo è normalmente nell'ordine di 5-10 cicli, quindi dimenticandosi di tutto il resto, la sola lettura in retroazione è in ritardo di diverse combustioni.

Il risultato è che ci vuole un loop in ciclo aperto (pressione all'aspirazione, giri motore) con una mappatura, come avviene in tutti i motori a benzina ad iniezione (diretta ed indiretta).

La carburazione in linea, per dirla in modo grezzo, è il variare la carburazione (lo spillo) del carburatore in base alle condizioni operative del motore. Non sostituire il carburatore, ma semplicemente affiancarlo per avere delle condizioni di carburazione particolari, basate sulla posizione della valvola a farfalla.

In quel caso si può pensare di ingrassare leggermente la miscela quando la valvola a farfalla viene aperta repentinamente. Un giochetto inutile e non banale, ma sfizioso.

Saluti,
Dario.

I 15 mila li toccano motori evidentemente preparati, tra 50 e 70 cc (che siano per scooter o per piccole moto a marce poco importa).

Comunque non mi è ancora troppo chiaro come si possa variare lo spillo; per cortesia sii un po più chiaro oppure posta una immagine o uno schema! perchè io ho famigliarità solo coi carburatori a saracinesca (al massimo a membrana), ma coi corpi farfallati non mi ci sono mai approcciato.

ciao, stavo facendo una considerazione che spero corretta, a 15000 giri/min per un motore 2 tempi non diventano una correzione della carburazione ogni 8 ms?

stefano

wmatte:
I 15 mila li toccano motori evidentemente preparati, tra 50 e 70 cc (che siano per scooter o per piccole moto a marce poco importa).

Comunque non mi è ancora troppo chiaro come si possa variare lo spillo; per cortesia sii un po più chiaro oppure posta una immagine o uno schema! perchè io ho famigliarità solo coi carburatori a saracinesca (al massimo a membrana), ma coi corpi farfallati non mi ci sono mai approcciato.

Faccio riferimento alle viti di regolazione della carburazione, credo che quello sia il massimo che si possa ottenere.

Saluti,
Dario.

stefa24:
ciao, stavo facendo una considerazione che spero corretta, a 15000 giri/min per un motore 2 tempi non diventano una correzione della carburazione ogni 8 ms?

stefano

Si perché sono 250 giri/s ed è monocilindrico, io prima per errore facevo riferimento ai quattro ciclindri.

Saluti,
Dario.

Sun un motore 2T monocilindrico omologato per la strada generalmente non supera i 9000 rpm, qundi tra un giro e l'altro passano 6,66 ms.
Ora, se la lettura di un valore analogico ha una latenza di 10 ms, più tutto il resto del codice, il tempo non è dalla tua parte.
Hai considerato l'opzione di utilizare 2 Arduino? Uno per regolare fisicamente il rapporto Aria/Benzina del carburatore e in base ai giri del motore e uno per leggere i valori analogici o digitali dei sensori (termocoppia, lambda, ecc ecc), e collegarli tramite seriale o I2C.
Potresti includere una semplice mappatura standard nel Primo Arduino che, in base ai valori ricevuti dal secondo, viene modificataogni volta che riceve dati.
In questo modo potresti avere un Arduino abbastanza veloce per rientrare nei tempi previsti e uno relativamente lento che aggiorna la mappatura del primo di volta in volta.
Naturalmente, almeno nel primo Arduino, ti conviene utilizzare gli Interrupt per la lettura dei giri, in questo modo non dovresti perdere nessuna iniezione ne accensione.

icearrow:
Sun un motore 2T monocilindrico omologato per la strada generalmente non supera i 9000 rpm, qundi tra un giro e l'altro passano 6,66 ms.
Ora, se la lettura di un valore analogico ha una latenza di 10 ms, più tutto il resto del codice, il tempo non è dalla tua parte.
Hai considerato l'opzione di utilizare 2 Arduino? Uno per regolare fisicamente il rapporto Aria/Benzina del carburatore e in base ai giri del motore e uno per leggere i valori analogici o digitali dei sensori (termocoppia, lambda, ecc ecc), e collegarli tramite seriale o I2C.
Potresti includere una semplice mappatura standard nel Primo Arduino che, in base ai valori ricevuti dal secondo, viene modificataogni volta che riceve dati.
In questo modo potresti avere un Arduino abbastanza veloce per rientrare nei tempi previsti e uno relativamente lento che aggiorna la mappatura del primo di volta in volta.
Naturalmente, almeno nel primo Arduino, ti conviene utilizzare gli Interrupt per la lettura dei giri, in questo modo non dovresti perdere nessuna iniezione ne accensione.

Icearrow, la tua idea mi piace molto! Ma purtroppo, come scritto a inizio topic, non mastico ancora bene il linguaggio tecnico elettronico e di ciò che tu mi hai detto ho capito giusto l'essenziale.

A riguardo sto cercando uno starter kit ben rifornito al prezzo più basso possibile per cominciare a imparare Arduino e la programmazione; poi per verificare le mie conoscenze mi piacerebbe costruire un ArduDrone, in giro per il web ce ne sono a bizzeffe da cui trarre spunto, e c è anche qualche programmino di controllo condiviso (e già salvato nel mio pc naturalmente!).

Ora stavo solo raccogliendo un po' di dati e di idee, poi quando comincierò a masticare anche Arduino (università permettendo) sicuramente vi mostrerò più idee e problematiche :slight_smile:

Scusate.... ma il calcolo di Arduino non va fatto ad ogni scoppio del motore....
L'iniettore 'spruzza' benzina di continuo non fa uno 'schizzo' ad ogni ciclo.
E' ovvio che più velocemente si ricalcola e piu' accurata è la carburazione.... ad esempio nel classico colpetto di acceleratore l'aria aumenta improvvisamente e se la centralina non adegua la quantità di benzina la miscela si impoverisce... non stiamo parlando di millisecondi in questo caso.

Detto questo... come si comanda L'iniettore? Immaginiamo passandogli una certa tensione da 0 volt a 5 volt

Stabiliamo:
-5 step di regimi motore
-5 step di apertura dell'acceleratore

Dobbiamo mettere giù una matrice di 25 valori per ogni incrocio.

A questo punto Arduino semplicemente svolgera':

  1. leggi rpm su un pin
  2. leggi posizione acceleratore su un altro pin
  3. cerca valore nella matrice
  4. manda il voltaggio all'iniettore tramite un altro pin

Se l'idea di fondo è un progetto divertente già cosi' il motore sta in moto, e ci si può divertire a trovare i 25 valori migliori, magari creandosi un pannellino per la modifica al volo.

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.