• Non ci sono risultati.

2 DESCRIZIONE DI SISTEMA E SPECIFICHE

2.8 Engine Control Unit

La Engine Control Unit (ECU) è la centralina elettronica che si occupa di gestire il motore. Il modello di centralina che è stato utilizzato è Walbro HPUH-1 (ECU A-SAE), si tratta di una centralina standard con funzione ausiliari spesso utilizzate nei veicoli di Formula-SAE, come la funzione di Gearshift-Cut e Launch-Control. I compiti principali di una centralina motore sono quelli di iniettare carburante, tramite gli iniettori, in quantità e al momento opportuno, nei condotti di aspirazione del motore, e di far scoccare la scintilla al momento opportuno in modo da incendiare la miscela aria carburante compressa dai cilindri.

Figura 2-30: la centralina motore utilizzata

Le centraline motore assolvono anche molte altre funzione come ad esempio limitare il numero di giri del motore, controllare la pompa della benzina l’impianto di illuminazione, ecc… La maggior parte di queste funzionalità non vengono descritte in seguito, in quanto, ha interessato gli ingegneri elettrici che hanno realizzato l’impianto elettrico della macchina. Viceversa, si descrivono le funzionalità della ECU con le quali interagisce la GCU. Sono di interesse tre funzioni che la ECU mette a disposizione.

La funzione di Gearshift-Cut: abilitando questa funzione la centralina disattiva il motore, tagliando l’iniezione o l’accensione, per un certo tempo impostabile. Il motore non trasmette più coppia ed è quindi possibile effettua manovre sul cambio anche senza l’uso della frizione. Si tratta di una procedura da effettuare solo salendo di marcia e che sollecita intensamente il cambio, ma è comune in ambito agonistico. Permette inoltre al pilota di inserire le marce senza alzare il piede del gas. Tale funzione viene abilitata ponendo a terra il pin B6 del connettore P2 (grigio) della centralina. La funzione viene abilitata sul fronte di discesa del segnale e il motore rimane disattivato per il tempo, in millisecondi, specificato nella variabile CIRCUMFERENCE. Da notare che perché la funzione sia attivata la variabile WHEEL_SIGNALS deve essere pari a zero, altrimenti la funzione di Gearshift-Cut viene disabilitata e la variabile CIRCUMFERENCE assume un altro significato; ed inoltre il motore deve trovarsi a un regime di rotazione sopra i 3000 giri.

La funzione Launch-Control è sostanzialmente un limitatore ausiliare del numero di giri del motore. Attivando questa funzione il motore viene limitato al numero di giri impostato in una certa variabile. Impostando tale limite al valore di coppia massima e tenendo il gas premuto fino in fondo, in folle, (operazione che normalmente porterebbe il motore fuori giri) si ha garanzia di mantenere il motore al regime di coppia massima. In questo modo è possibile, in partenza, modulare la frizione per trasmettere la coppia opportuna alle ruote, secondo la funzione di trasferimento studiata dai meccanici in [1], avendo sempre a disposizione la coppia massima del motore. Tale funzione viene abilitata ponendo a zero il B4 del connettore P2 (grigio) ed il numero di giri a cui viene limitato il motore è impostato nella variabile LAUNCH_LIMITER.

Il valore delle variabili può essere settato con il software WinCons fornito da Walbro.

La centralina di controllo dispone di una porta di comunicazione seriale attraverso la quale trasmette su richiesta un pacchetto dati contenente varie informazioni. Sono di interesse le informazioni relative al numero di giri e alla temperatura del motore che devono essere visualizzate sul display. Purtroppo il pacchetto dati della centralina non è documentato quindi per conoscerlo è stato necessario analizzarlo con dei software di monitoring della porta seriale. La centralina è stata connessa alla porta seriale del PC sul quale gira il software di port monitoring, in particolare è stato utilizzato Eltima Serial Port Monitor, e il software GenTab, fornito da Walbro, che interroga la centralina. Analizzando i pacchetti inviati e ricevuti dal software GenTab e i pacchetti inviati e ricevuti dalla centralina è stato possibile interpretare il risultato ricavando cosi le informazione necessarie. Si riportano di seguito i risultato dell’analisi della comunicazione seriale della centralina. La centralina viene interrogata inviando la sequenza di caratteri

:T0000000008v

la centralina risponde inviando i seguenti 5 caratteri :OK!õ

che indicano che il comando inviato alla centralina è stato ricevuto e successivamente invia un pacchetto dati formato da 86 caratteri contenente tutte le informazioni di cui c’è bisogno, ovvero numero di giri e temperatura. Un esempio degli 86 caratteri che costituiscono il pacchetto è riportato di seguito:

:00000000000003F60290863886388638863800DE00DE00DE00DE0E10EB0000AA6 500FF7F000000000000ß

Successivamente la centralina continua a inviare tale pacchetto ogni 20 ms. La trasmissione da parte delle ECU può essere interrotta in qualsiasi momento (la trasmissione è completamente full duplex) inviando i caratteri:

:?y

Alla ricezione di tale stringa, la ECU termina di inviare il pacchetto corrente, invia i caratteri :OK!õ indicando che ha ricevuto il comando di fine trasmissione e resta in silenzio.

Si riporta un esempio di comunicazione, in cui si assume che la GCU interroghi la ECU. La GCU invia:

:T0000000008v La ECU risponde:

:OK!õ:00000000000003F60290863886388638863800DE00DE00DE00DE0E10EB00 00AA6500FF7F000000000000ß:00000000000003F60290863886388

La GCU invia, in un istante indeterminato durante l’invio del secondo pacchetto da parte della ECU:

:?y

La ECU termina l’invio con:

638863800DE00DE00DE00DE0E10EB0000AA6500FF7F000000000000ß:OK!õ La comunicazione termina.

L’informazione sul numero di giri è contenuta all’interno dei Byte numero 10, 11, 12, 13 (si indica come primo byte il byte numero 0). Dall’analisi di tali byte si deduce che il numero di giri è memorizzato nella centralina come una variabile a 16bit senza segno. Ad esempio un valore di 5500 giri al minuto sarà rappresentato in esadecimale semplicemente come 0x157C. La centralina trasmette questi byte tramite la porta seriale inviando il codice ASCII del carattere a partire dalla cifra più significativa (che sara quindi contenuta nel byte 10). Il valore di 0x157C verrà quindi trasmessa tramite i seguenti quattro byte: 0x31, 0x35, 0x37, 0x43 che corrispondo ai codici ASCII scritti in esadecimale per i caratteri 1, 5, 7, C rispettivamente.

L’informazione relativa alla temperatura del motore non è stata decodificata non è quindi possibile gestire il Led del warning sulla temperatura.

La GCU ha il compito di gestire gli ingressi Gearshift-Cut e LaunchControl della ECU; deve inoltre comunicare con la ECU in standard RS232 per ricavare le informazioni relative al numero di giri. Non è stato possibile decodificare l’informazione sulla temperatura; il Led relativo al warning sulla temperatura non verrà gestito.