Letture segnali analogici su motori

Ciao Ragazzi, ho scoperto da poco le molteplici possibilità di Arduino, perciò vi chiedo:
è possibile leggere 8 canali analogici relativi alle principali informazioni (Temperatura Acqua e Olio, Pressione Olio, Tensione Batteria, amperometro, temperatura olio trasmissione, temperatura gas di scarico, etc).
Conversione dei segnali da Analogico a Digitale.
Visualizzazione delle informazioni su un display
Trasmissione dati tramite modulo Bluetooth. (plug-in)

Grzie di Cuore

Si, certo, scegliendo opportunamente il modello di scheda Arduino in funzione delle esigenze attuali e future e tenendo conto che l'ingresso massimo, sugli ADC di Arduino è di 5v (escluso Arduino DUE che lavora a 3.3v .... ma che ti sconsiglio).

Prendiamo ad esempio un Arduino Leonardo ...
... hai a disposizione 20 pin che puoi usare tutti come digitali, o parte come PWM (max 7) o ancora parte come ingressi analogici (max 12) ... quindi potrebbero esserti sufficienti ...

Oppure un Arduino Mega ...
... con i sui 54 pin digitali, parte utilizzabiliin PWM (max 15), 16 input analogici e ben 4 porte seriali ...

Come vedi puoi spaziare ...
... resta il fatto che devi comunque rapportare tutti i tuoi segnali a un range massimo di 0 .. 5v

Guglielmo

Un impianto elettrico di un automobile é pieno di disturbi. Serve un alimentatore che sia costruito per sopportare quei disturbi.
Ciao UWe

gpb01:
Si, certo, scegliendo opportunamente il modello di scheda Arduino in funzione delle esigenze attuali e future e tenendo conto che l'ingresso massimo, sugli ADC di Arduino è di 5v (escluso Arduino DUE che lavora a 3.3v .... ma che ti sconsiglio).

Prendiamo ad esempio un Arduino Leonardo ...
... hai a disposizione 20 pin che puoi usare tutti come digitali, o parte come PWM (max 7) o ancora parte come ingressi analogici (max 12) ... quindi potrebbero esserti sufficienti ...

Oppure un Arduino Mega ...
... con i sui 54 pin digitali, parte utilizzabiliin PWM (max 15), 16 input analogici e ben 4 porte seriali ...

Come vedi puoi spaziare ...
... resta il fatto che devi comunque rapportare tutti i tuoi segnali a un range massimo di 0 .. 5v

Guglielmo

e come posso risolvere il problema, visto che le sonde sono alimentate a 12v?
dove posso trovare un alimentatore idoneo per eliminare i disturbi causati dal motore?

Edgardo:
e come posso risolvere il problema, visto che le sonde sono alimentate a 12v?

Ah beh … c’è poco da fare, devi adattare i livelli e … molto dipende dal tipo di sonde e dall’impedenza.
Nel caso più semplice, puo bastare un banale partitore resistivo (magari con uno zener di protezione … visto mai qualche oscillazione del valore oltre il limite previsto), nei casi più complessi, può anche servire un circuitino attivo … :roll_eyes:

Per l’alimentatore … non so se Uwe aveva già in mente qualche cosa …
… comunque sicuramente ti serve un oggetto adatto ad essere utilizzato in ambiente “automotive” e che quindi è disegnato per operare con un voltaggio piuttosto instabile e parecchio disturbato !

Guglielmo

Potrebbe sfruttare, con opportuni condensatori di filtro (e magari un'induttanza) uno di quei convertitorini DC-DC da pochi Euro, che accettano in ingresso anche tensioni piuttosto alte ... ad esempio, questo http://www.ebay.it/itm/Convertitore-Regolabile-DC-DC-Step-Down-LM2596S-Alimentatore-5V-12V-Buck-/141168390417?pt=Led_e_Neon&hash=item20de4ab111 o simili, che reggono fino a max 35V in ingresso ... con un bel filtro CLC in ingresso che si prenda cura dei picchi, e regolato in modo da dare in uscita sugli 8V per alimentarci Arduino attraverso il suo jack ... :wink:

Poi per gli ingressi analogici, metti una resistenza in serie da 12K, e fra i pin e la massa un'altra resistenza da 8.2K con in parallelo uno zener da 5V (catodo verso il pin, anodo a massa, ovviamente un set per ogni ingresso)

EDIT: ed anche dei condensatori da 100n o simili, in parallelo alle coppie resistenza-zener che vanno a massa, cosi togli pure i disturbi impulsivi e stabilizzi un minimo la lettura :wink:

1 Like

Etemenanki:
Potrebbe sfruttare, con opportuni condensatori di filtro (e magari un'induttanza) uno di quei convertitorini DC-DC da pochi Euro, che accettano in ingresso anche tensioni piuttosto alte ... ad esempio, questo http://www.ebay.it/itm/Convertitore-Regolabile-DC-DC-Step-Down-LM2596S-Alimentatore-5V-12V-Buck-/141168390417?pt=Led_e_Neon&hash=item20de4ab111 o simili, che reggono fino a max 35V in ingresso ... con un bel filtro CLC in ingresso che si prenda cura dei picchi, e regolato in modo da dare in uscita sugli 8V per alimentarci Arduino attraverso il suo jack ... :wink:

Poi per gli ingressi analogici, metti una resistenza in serie da 12K, e fra i pin e la massa un'altra resistenza da 8.2K con in parallelo uno zener da 5V (catodo verso il pin, anodo a massa, ovviamente un set per ogni ingresso)

EDIT: ed anche dei condensatori da 100n o simili, in parallelo alle coppie resistenza-zener che vanno a massa, cosi togli pure i disturbi impulsivi e stabilizzi un minimo la lettura :wink:

Grazie a tutti, siete fenomenali!
So cosa devo fare ma non so come fare, di elettronica purtroppo capisco poco, vi chiedo troppo se vi chiedo di aiutarmi passo passo? innanzitutto da quale Arduino devo cominciare? ...poi passo passo mi dite cos'altro prendere e come assemblare!
Dai, sono entusiasta e sento che ce la posso fare!
Mi aiutate? sarà una bella soddisfazione anche per voi!
GRAZIE

Per le temperature sotto i 100 °C puoi usare dei sensori NTC 10Kohm e trovi molto sul sito di ladyada, ma in inglese:
http://www.ladyada.net/learn/arduino/

Per temperature superiori servono dei sensori PT1000 e relativo circuito di amplificazione.

Penso che in ladyada troverai anche informazioni su vari sensori di temperatura.

Per il problema disturbi in auto, invece c'è la possibilità che a fortuna il progetto funzionante in laboratori funzioni anche in auto, specie se a motore spento, i problemi potrebbero arrivare o meno quando il motore è in moto, o durante l'accensione o azionando le utenze (alzacristalli, tergicristalli, ecc) e se accade allora sono rogne a cui non c'è una cura ma molteplici tante da scriverci dei libri, quindi incrocia le dita e non curarti al momento dei possibili futuri problemi dei disturbi, al limite provi con un sensore solo + display e fai dei test, tipo accendi spegni, alza abbassa, luci, frecce ecc.

Ciao.

Alcune informazioni le puoi ottenere collegandoti con la centralina dell'auto tramite l'interfaccia ODB o ODB II. Ne vendono sia seriali, che USB, che bluetooth. Ci sono applicazioni anche per Arduino.

quando hai problemi di disturbi per fare un po' di ricerca delle sorgenti, puoi alimentare il circuito con una batteria. Sara' anche una rogna passare tutti i cavi per le cose che vuoi monitorare, che a loro volta saranno ricettacolo di disturbi, quindi cavi schermati e connessi a modo senza crere loop di massa.
Di certo se non stai parlando di un auto vecchia e' meglio che segui la strada indicata da PaoloP

Se la cosa era già problematica con i vecchi motori, con il sistema CAN-BUS utilizzato sui nuovi autoveicoli e vivamente sconsigliabile.
Vecchio di precedenti esperienze, e nell’intento di precederti nella tua idea, ho iniziato con l’aquisto di un shield per arduino da connettere alla presa ODBII disponibile su ogni autovettura.
Tutto sembrava semplice e standarizzato, ma al lato pratico ho scoperto che non è proprio così e che molte autovetture hanno delle varianti.
Morale, avviato il software mi sono ritrovato con tanti bei “0000” e nulla più.
Per il momento ho rivolto le mie attenzioni ad altre applicazioni, ma potrebbe essere il momento di riavviare la ricerca.

Testato:
quando hai problemi di disturbi per fare un po' di ricerca delle sorgenti, puoi alimentare il circuito con una batteria. Sara' anche una rogna passare tutti i cavi per le cose che vuoi monitorare, che a loro volta saranno ricettacolo di disturbi, quindi cavi schermati e connessi a modo senza crere loop di massa.
Di certo se non stai parlando di un auto vecchia e' meglio che segui la strada indicata da PaoloP

Questo accessorio voglio costruirlo per vecchi motori land rover
motori sprovvisti di centralina

Fatto salva la misurazione della tensione della batteria, tutti gli altri rilevamenti devi progettarli ad hoc.
Le maggiori difficoltà non sono derivate dai disturbi, quanto con l'interfacciarsi con i sensori presenti.
Un esempio: La temperatura del motore utilizza una resistenza variabile.
In modo banale ci si potrebbe collegare al morsetto e analizzare le variazioni di tensione. Purtroppo la curva che si ottiene non è lineare e pertanto devi studiarci sopra e istruire Arduino ad effettuare i necessari aggiustamenti con le imprecisioni del caso. Inoltre visto che lo strumento/termistore sono collegati alla batteria, la tua misurazione risentirà di di possibili variaqzioni.
Almeno in questo caso, molto più semplice installare un nuovo sensore di temperatura tipo DS18B20 con comunicazione seriale (niente disturbi, tarature, ecc.)

E via di questo passo ...

Quindi vorresti progettare e produrre una ECU senza basi di elettronica, dovresti saperlo che questo campo specifico è piuttosto protetto e che informazioni accessibili sono piuttosto controllate. Conosco ditte in friuli e veneto che hanno fatto colossali FLOP per aver cercato di costruire ECU con tecnologie base e aver rovinosamente constatato che NON funzionavano, l'automotive si avvicina più alle tecnologie Industriali che altro, vanno usati componenti robusti, drivers protetti contro i cortocircuiti e con un range di temperature elevato, i circuiti devono resistere ad escursioni di temperatura da 60 a 100 gradi senza cambiare funzionalità cioè compensando i cambiamenti delle caratteristiche dei componenti. I connettori devono avere caratteritiche superiori ed essere a prova di "imbecille" . I sensori incapsulati in contenitori che resistono a vibrazioni , colpi ghiaccio e alte temperature , quindi vanno comperati dalle autoforniture non dal negozietto di elettronica. Gran parte dei componenti di eletronica che trovi quì in giro e di cui tuti ne parlano non sono adatti per l'automotive e non funzionerebbero bene in inverno o in estate se lasci la macchina al gelo o sotto il sole cocente.

Quello che dice ICIO è vero, ma non credo tu stia pensando ad un'applicazione Commerciale giusto? magari è per la tua auto o qualche amico? se si, allora quello che chiedi di fare è un Datalogger (Acquisizione dati), la complessità del progetto dipende dal tipo di sonde di temperatura che userai, per facilità ti consiglierei di usare quelle che ti hanno già indicato precedentemente, ma purtroppo, non credo siano adeguate all'applicazione automotive per lunghi periodi, per fare ciò ti serve usare la sensoristica automotive, sensori temp. motore e temp. aria, ecc... Purtroppo per usare questi sensori, devi avere anche un circuito di condizionamento dei segnali prima di interfacciarli ad arduino, per esempio, i sensori temp. motore/aria, vanno alimentati a 5V sullo stesso filo del segnale, l'altro filo va a massa, mediante un circuito di resistenze in serie e parallelo più qualche condensatore, il sensore cambia la sua resistenza in base alla temperatura, solitamente vengono usati quelli NTC che a freddo hanno una resistenza elevata e man mano si riscandano scende, questo passaggio da resistenza elevata a bassa crea una caduta di tensione sul segnale da 5V (circa) di alimentazione del sensore, se esso è freddo, avrà una resistenza maggiore quindi provocherà una minor caduta di tensione sul pin del segnale che vede il micro, man mano che la temperatura sale, la resistenza decresce e quindi va a scaricare la tensione letta sul pin dal Micro, senza la circuiteria adeguata, non potresti avere letture adeguate e potresti fare danni al tuo Arduino. Purtroppo questi sensori hanno un'andamento non lineare e quindi per poterli usare, dovresti creare delle tabelle array di configurazione del tipo:

int Linearizazione_Sens_Temp_Mot[16]={1020, 980,800,740,650,600,550,452,400,340,280,200,175,150, 110, 70 };

ad ogni index dell'array, dovrai sapere che temp. corrisponde! per far meglio, dovresti fare o due array, uno per la scala temperature ed uno per la scala valori ADC corrispondenti o meglio (credo) un array multidimensionale del tipo:

int Linearizazione_Sens_Temp_Mot[2][16]={{ -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90,100,120} ,
{1020, 980,800,740,650,600,550,452,400,340,280,200,175,150, 110, 70 } };

(occhio: valori adc presi a caso ma con la giusta logica)

Credo sia il metodo più facile, ogni valore corrisponde alla lettura del canale ADC per una determinata temperatura che dovrai pazientemente ricavare in laboratorio (meglio) o su vettura. il valore più alto corrisponderà a temp. fredda, e quello più basso a temperatura calda. Tieni presente però che questi sensori usualmente, hanno un range -40@120-125 gradi Celsius quindi per creare una buona mappa, va linearizzato tutto il range ti temperature del sensore. Se non hai un sensore obbligato, potresti anche prenderne qualcuno che se ne conosce la scala, per questi, ti posso aiutare io, ho la scala di alcuni sensori più comuni (bosch e IAW per esempio). Per rilevare la temperatura dei gas di scarico, purtroppo qui dovrai usare delle termocoppie come quelle indicate nei post precedenti, ma devi crearci un circuito amplificatore apposito con un integrato specifico per questo tipo di sonde, per fortuna la loro curva è lineare, quindi ti basterà sapere che voltaggio/temperatura minima e massima. Per rilevare i giri motore anche qui, dovrai crearci un circuito adeguato, che dipenderà da "dove" prenderà il segnale, il più facile da implementare sono quelli generati dalle ECU originali per il contagiri, ma vanno adeguate le tensioni, spesso usano 12V fisso e vanno a massa durante l'impulso, quindi va "mozzato" quel 12v per portarlo ai max 5V consentiti come ingresso ai pin del micro. Per fare ciò esistono diversi metodi, più o meno semplici, dovremmo vedere quello che fa più al caso tuo. Se invece fosse un mezzo troppo antico, nemmeno ad iniezione elettronica o il segnale per il contagiri venisse preso sul negativo bobina, andrebbe fatto un'altro tipo di circuito perchè questi segnali, hanno picchi di tensione brevissimi ma letali per il micro e quindi vanno protetti adeguatamente. Se poi volessi usare un sensore giri, dipenderà dal tipo usato, se usi uno ad induzione magnetica (VR) ti servirà lo stesso circuito necessario per leggere dal negativo bobina, se invece intendessi usare uno ad effetto HALL, potresti collegarlo quasi direttamente, ma la presenza di disturbi indotto consiglia di metterci anche in questo caso un minimo di circuiteria di protezione. Per acquisire il segnale della sonda lambda idem (più per la protezione che altro) per fortuna sono segnali che rientrano nel range 0-5V, anzi, se usassi una sonda wideband, spesso i controller hanno un'uscita 0-5V lineare che fatto entrare in un datalogger o in una ECU e tarate in mappa, danno un'idea molto precisa della carburazione rispetto a quelle ON/OFF tradizionali (le narrowband 0-1V quelle a 1,2,3 e 4 fili). Per altri scopi, solitamente si ripete la circuiteria. Diciamo che i canali dedicati sono quelli per tutte le temperature non lineari, mentre per sensori tipo TPS, MAP, BAROMETRICO, e LAMBDA, sarebbero dei canali abbastanza intercambiabili, ma a patto di poterli linearizzare correttamente in una specie di mappa dentro lo sketch. Se hai pazienza, sto pensando di creare una shield apposta per queste applicazioni automotive con anche tutta la circuiteria necessaria alla protezione dell'alimentazione del Arduino, certamente per un'utilizzo non professionale, per quello, ti rimando ai commenti precedenti di ICIO.

Ciao

Ciao hiperformance71 grazie per la tua risposta, anzi ringrazio tutti!
il prototipo lo creo sul mio mezzo, ma se vien fuori un bell' oggetto funzionante, lo vorrei creare anche per i miei amici. è possibile creare qualcosa con arduino e poi venderla?

Arduino sono 2 cose : la scheda e il compilatore+librerie
Se usi la scheda e fai il programma con un altro compilatore puoi venderla proteggendo il firmware
Se usi la scheda e fai il programma con il compilatore Arduino puoi venderla ma devi fornire anche il sorgente

se cerchi sul forum, troverai una discussione al riguardo, se non ricordo male, si chiamava "arduino per uso commerciale" li viene affrontato il tema, non saprei dirti di più oltre a quello che ha già detto ICIO. Personalmente, sto usando arduino per imparare, e man mano prendo confidenza con esso estendere le conoscenze di programmazione al C vero e proprio, poi, quando avrò le capacità tecniche necessarie e dovrò sviluppare prodotti commerciali allora penserò ad usare piattaforme più adeguate allo sviluppo prodotti commerciali. Per la shield che sto pensando di fare e che ti potrebbe essere d'aiuto per il tuo progetto "datalogger per auto" di sicuro il software sarà open, per la scheda dovrò approfondire il tema legale (visto che di arduino avrebbe solo il pin out dei pin header e basta), Spero di poter fare qualcosa entro i prossimi 2 mesi.

ciao.

hiperformance71:
se cerchi sul forum, troverai una discussione al riguardo, se non ricordo male, si chiamava “arduino per uso commerciale” li viene affrontato il tema, non saprei dirti di più oltre a quello che ha già detto ICIO. Personalmente, sto usando arduino per imparare, e man mano prendo confidenza con esso estendere le conoscenze di programmazione al C vero e proprio, poi, quando avrò le capacità tecniche necessarie e dovrò sviluppare prodotti commerciali allora penserò ad usare piattaforme più adeguate allo sviluppo prodotti commerciali. Per la shield che sto pensando di fare e che ti potrebbe essere d’aiuto per il tuo progetto “datalogger per auto” di sicuro il software sarà open, per la scheda dovrò approfondire il tema legale (visto che di arduino avrebbe solo il pin out dei pin header e basta), Spero di poter fare qualcosa entro i prossimi 2 mesi.

ciao.

Grazie Hiper, buon Lavoro!
buon tutto! vi terrò aggiornati!