Strumentazione digitale
Descrizione Da grande appassionato di elettronica, ho deciso di autocostruirmi una strumentazione elettronica per tenere sotto controllo tutti i parametri di funzionamento dell'auto. Nel rispetto della massima flessibilita', la scelta e' caduta su un circuito "master" che effettua le conversioni A/D, l'acquisizione della velocita', dei giri motore, che elabora i dati e li spedisce su un bus seriale ( RS-232 ). Dall'altra parte, un altro circuito riceve i pacchetti trasmessi, ne controlla l'integrita', li visualizza, memorizza i picchi delle temperature, gestisce l'accensione dei led che "anticipano" il limitatore di giri per agevolare il cambio marcia, e gli allarmi visivi ed acustici se qualche parametro "vitale" per l'integrita' del motore va fuori range (eccessive temperature di acqua ed olio, pressione scarsa olio). In questo modo riesco a limitare al massimo i cavi di collegamento sparsi per l'abitacolo : acquisizione e visualizzatore sono collegati da 3 soli fili ( + alimentazione, massa e bus seriale ). Inoltre, posso collegare allo stesso bus seriale un PC via RS232 (portatile o embedded) per effettuare il logging di sessioni in pista, test vari, ecc. Qui il link alla pagina descrittiva del CARPC Tutti i parametri monitorati
I trasduttori
Per le temperature ho deciso di utilizzare delle sonde LM335, che forniscono una tensione proporzionale alla temperatura assoluta (in gradi Kelvin, 10 mV/°K. Per cui, zero gradi °C corrispondono a 2.73 V ( 0°C > 273.25 °K). In futuro prevedo comunque di sostituire le LM335 con delle piu' "comuni" NTC linearizzate via software. Per la posizione farfalla sfrutto il sensore gia' presente (potenziometro) sul corpo farfallato, idem per la sonda lambda. Pressione olio e pressione benzina le converto in un segnale elettrico mediante dei trasduttori resistivi 0-10 bar della VDO. La resistenza varia in funzione della pressione secondo una legge non lineare (ho implementato una tabella di correzione nel micro). Velocita' veicolo e regime motore li prendo dall'impianto elettrico dell'auto (mi collego al sensore sul differenziale per la velocita',ed all'impulso accensione per i giri motore). In entrambi i casi l'informazione velocita' e' data dalla frequenza di un onda quadra con livelli 0 / +12 V. Circa 67 Hz ogni 100 km/h la velocita', 2 impulsi ogni giro di albero motore il regime di rotazione (33.3 Hz a 1000 giri/min, 66.6 Hz a 2000 giri/min. e via cosi').
Schema a blocchi
L'acquisizione Il cuore del circuito di acquisizione e' un PIC 16F877 @ 20 MHz. Per espandere il numero di ingressi analogici uso un multiplexer analogico seguito da un condizionatore ad op-amp che adatta i livelli all'entrata analogica del PIC. Alla sezione analogico/digitale fanno capo tutte le sonde di temperatura, le 2 sonde di pressione, il potenziometro acceleratore, galleggiante livello benzina, e la tensione batteria (con opportuno partitore). Come gia' detto, velocita' veicolo e giri motore sono letti direttamente in digitale (senza conversioni frequenza/tensione che introducono errori sensibili), sfruttando le periferiche interne del PIC (TIMER1 e 2 CAPTURE). Il principio e' abbastanza semplice : il TIMER1 (16 bit) e' incrementato internamente dallo stesso clock di sistema, e ad ogni fronte di salita (o ogni 4 o 16, dipende dall'impostazione della periferica) del segnale da misurare la periferica cattura il valore del TIMER1 e lo "congela" in appositi registri ( uno per la velocita', uno per i giri ). L'offset tra il valore attuale e quello precedente rappresenta la lunghezza del periodo. Conoscendo la durata del periodo e' abbastanza facile risalire alla frequenza (e quindi alle velocita'). Questo metodo sembra funzionare molto bene. L'unico limite e' dato dall'imprecisione del segnale fornito dal sensore velocita' installato a bordo, che non mi permette di andare oltre 3 letture/secondo per la velocita' (pena eccessivi sfarfallamenti del valore letto). Il processore legge tutti i parametri ogni 50 mS, ed invia ciclicamente in seriale RS-232 a 19200 bps, 8 bit, nessuna parita' dei pacchetti rispettando un formato da me definito :
Ciascun pacchetto e' costituito quindi da 4 + 2 + 26 + 2+ 1 = 35 byte.
La scheda di acquisizione, collegata ai sensori mediante un connettore DB25.
Il visualizzatore Qui abbiamo un piu' piccolo PIC 16F876A, sempre a 20 MHz, che riceve i dati trasmessi serialmente dall'acquisizione e li processa.
E' possibile interagire mediante 3 pulsanti ( UP / DOWN / PGM ). Per la massima praticita' ho previsto 4 "pagine", ciascuna delle quali visualizza 4 parametri in contemporanea. Ognuna della 4 pagine e' personalizzabile andando in programmazione : e' possibile configurare uno qualsiasi tra i parametri disponibili in ognuna delle 4 locazioni. E' possibile inoltre definire le soglie di accensione dei led di cambio marcia (e la modalita' di accensione, barra, punto, ecc), gli allarmi per eccessiva temperatura acqua, olio, insufficiente pressione olio, il fattore di correzione della velocita' (da 50 a 200 %, per compensare differenze di rotolamento, usura gomme, ecc), i riferimenti della farfalla (cioe' la posizione 'zero' e la posizione 'full'), i riferimenti del galleggiante benzina (idem come prima). Ricordo l'elenco parametri visualizzati : Velocita', giri, temp. aria, temp. olio, temp. 'libero', lambda, posiz. farfalla, EGT (non usato per il momento), press. benzina, press. olio, temp. acqua, temp. esterna, tensione batteria.
Con un po' di pazienza, ho inserito i comandi UP / DOWN nel "devio" che in origine comandava il tergilunotto. Un pulsantino a basso profilo incollato dietro alla leva fa la funzione PGM :). Dettagli modifica comando tergi.
La scheda del ricevitore :).
In fase di programmazione : premendo il tasto PGM si sposta il cursore ( > ) alternativamente sulle 4 posizioni "SPEED, RPM, BATT, OIL T e p1" e, con pressioni di UP e DOWN, e' possibile scegliere cosa visualizzare in ciascuna locazione. Andando in p1 si incrementa invece la pagina corrente ... p1>p2>p3, ecc...
In fase di programmazione : settaggio della soglia di accensione dei led di "cambio marcia". LED5 indica il regime di accensione dell'ultimo led (il quinto), LED STP l'intervallo tra quest'ultimo ed i precedenti (in questo caso 7900 il quinto, 7700 il quarto, 7500, 7300, 7100).
Modalita' normale : il primo display, un 20x2 "BIG" controller HD44780 montato tra volante e quadro originale.
Un simpatico 16x2 'vacuum' della Itron inserito nell'alloggiamento dell'orologio. Si e' dimostrato poco visibile.
Display attuale, un 16x2 carattere "BIG" posizionato al centro, al posto dell'orologio. Decisamente ben visibile. Nella schermata raffigurata si intravedono WAT (temp. acqua °C), THR (posiz. acceleratore), OIL (temp. olio °C), ed OILP (pressione olio in bar). Posizione attuale "led cambio marcia"
Ultimo aggiornamento : Febbraio 2005 |