Acquisizione e elaborazione dati da sensore analogico

Buongiorno a tutti,
non possiedo ancora un arduino, sto ragionando da diverso tempo alla risoluzione di un problema al quale non riesco a trovare risposta.

In sostanza ho un sensore che rileva una pressione trasformandola in una tensione, quindi in uscita dal sensore mi trovo una tensione variabile da 0 a 5 volt in base ad una pressione che può andare da 0 a 2 Bar che devo "ingannare". Il mio obiettivo è fare in modo che questa tensione sia costante al rilevamento del sensore fino ad un punto specifico dal quale in poi dovrà continuare a salire ma fino ad un valore di 4 volt circa; mi spiego meglio:
0 - 3,5 volt tensione di uscita da arduino identica a ingresso, da 3.51 a 4 volt non deve più essere costante ma se per esempio entrano 3.6 in uscita ci devono essere 3.52, 3.7 >> 3.55 ecc... in pratica la curva deve essere appiattita ma ci deve comunque essere una leggera variazione in "salita" e mai una interruzione, analogamente se scende tutto deve tornare alla rilevazione reale del sensore
Il problema è che rilevazione e elaborazione devono essere JIT, arduino è la strada giusta?

integrazione__
Realmente credo possa funzionare anche in modo più semplice, semplicemente vin = vout fino ad raggiungimento di un determinato valore al quale finchè vin è superiore deve continuamente variare di pochissimo

Allego un grafico per rendere tutto più semplice

Grazie a chiunque saprà darmi una risposta

Sebastiano

Buonasera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink:

Avevo già letto il regolamento ad essere onesto ma non avevo capito che si dovesse semplicemente "rispondere" al thread di presentazioni :confused: :confused: mea culpa, tutto fatto :slight_smile:

Adesso mi sa che devi aspettare qualcuni di più ferrato in parte HW, io tenderei a dirti che con Arduino da solo non puoi per il semplice fatto che ha un ADC per leggere il sensore che rientrerebbe anche nel suo range, ma non è dotato di uscite analogiche per inviare la curva appiattiva all'utilizzatore e anche abbinando HW esterno un leggro ritardo tra lettura e "conversione" comunque la introduci. Ma ripeto non è il mio campo quindi aspetta chi ne sa più di me :wink:

Avevo letto che avesse solo delle uscite digitali, infatti pensavo che pilotandole in PWM avrei comunque avuto un risultato, bisognerebbe vedere se effettivamente è così; realmente dovrei prima fare una prova a sto punto con un "semplice" programma che emuli l' ingresso in uscita digitale PWM e vedere se mi crea problemi e poi eventualmente adattarlo alle mie esigenze?

NO, il risultato del PWM è molto apporssimativo dato che ottieni un "specie" di segnale analogico semplicemente prendendo il PWM ed inviandolo ad un circuito RC integratore ...

Devi prendere un modello di Arduino che abbia sia ADC che DAC ...ma ho il sospetto che siano tutti limitati a 3.3V, altrimenti una Arduino UNO a cui colleghi un modulo DAC esterno (es. pilotato in I2C).

Guglielmo

Ho dato una rapida occhiata alla specifiche ma non mi sembra che ci sia un modello che abbia un DAC già integrato; alla luce di ciò interfacciarne uno esterno ad un arduino magari nano dato il lavoro che non credo abbia bisogno di tutta questa potenza è una cosa " semplice" ? considerate che sostanzialmente sto iniziando da 0 per la seconda volta quindi siate pazienti :frowning: :frowning:

sebz:
Ho dato una rapida occhiata alla specifiche ma non mi sembra che ci sia un modello che abbia un DAC già integrato

... ce ne sono, ce ne sono, ma, ripeto, sono tutti limitati a 3.3V ... ::slight_smile:

sebz:
alla luce di ciò interfacciarne uno esterno ad un arduino magari nano dato ...

Guarda, QUESTO modulo di Adafruit monta un ottimo DAC a 12bit che lavora anche a 5V e si collega ad Arduino via I2c. QUI per imparare ad usarlo :slight_smile:

Guglielmo

Ci sarà da imparare :slight_smile:

Grazie mille per tutti i consigli, mi metto all' opera

Buongiorno, ho appena ordinato un arduino nano every
questo potrebbe andare bene come DAC per fare le prove?
https://create.arduino.cc/projecthub/Arduino_Scuola/build-a-simple-dac-for-your-arduino-4c00bd

NO, t'ho già detto di lasciar stare tutto ciò che integra un segnale PWM ... tu hai bisogno di valori esatti e calcolati non di valori approssimati. Ti serve un vero DAC altrimenti avrai solo vari approssimati.

Guglielmo

Se ti può essere utile ti allego uno schema di un circuito da me realizzato che svolge una funzione simile a quella che ti serve.
Ho usato un AtTiny84 ed un DAC MCP4922 per leggere 4 ingressi analogici (variabili tra 1 e 5V circa) e produrne in uscita 2 (con range 0.5/4.5 Volt, con lo 0 rappresentato da 2.5V).

Ciao, Ale.

guarda, non serve ne un DAC ne un Arduino

semplicemente si fa una piccola "rete" che ha in uscita uno zener da 3.5V

fino a 3.5volt la tensione di uscita corrisponde a quella di ingresso, oltre 3.5volt la "pendenza" della tensione di uscita dipende dal rapporto delle resistenze che si mettono tra ingresso, uscita e zener

si tratta di "elettrotecnica" elementare

negli anni 80 si linearizzavano così le caratteristiche "alzata-portata" delle valvole di regolazione delle grosse macchine idrauliche

si facevano anche 10 "ginocchia" differenti alla curva "ingresso-uscita", bastava mettere 10 differenti zener (e qualche operazionale per tenere basse le impedenze)

disegno.jpg

disegno.jpg

se invece la curva fosse "complicata" e quindi non facile da "linearizzare" con una serie di tratti selezionati da differenti zener si dovrebbe effettivamente passare per un DAC, ma non è detto che debba per forza essere un DAC esplicito esterno

alcune considerazioni:

  1. si tratta di misure di pressione, che sono piuttosto lente, di loro
  2. si tratta di una misurazione a 10 bit (questo è la risoluzione del ADC interno di arduino)

dalla 2 ne discende che semplicemnte usando 10 uscite di arduino (dalla 2 alla 11 ad esempio) si può costruire un DAC a scala R-2R, che è particolarmente indicato per essere connesso a uscite Cmos (o TTL)

invece dalla 1 discende che volendo comunque una buona risoluzione in uscita (che sarebbe comunque inutile, visto che oltre i 10 bit della risoluzione in ingresso il resto è inventato)
volendo comunque una buona risoluzione in uscita, ad esempio 16 bit, basta realizzare un DAC a scala R-2R sulle uscite di due shift register,

sono pronto a scommettere che i tempi sarebbero comunque soddisfacenti

mi piacerebbe però sapere che sensore ha una uscita 0-5V

Avevo ideato uno schema simile al tuo, con un transistor che realmente credo possa essere bypassato a questo punto; il problema che è appena arrivo alla tensione limite la stessa non deve rimanere costante ma deve continuamente variare ; se per esempio ho 4 volt questi devono diventare 4,1 3,9 ecc mai rimanere costanti, avete qualche suggerimento di qualcosa da aggiungere?

hai letto bene il mio messaggio #12?

io credo di no.........

>Standardoil: ... tutte soluzioni interessanti, ma ...

... veramente pensate che valga la pena accrocchiare tutte quelle cianfrusaglie (diodi, resistenze, ...) quando con 5, dicasi 5 miseri US$ si ha una breakout board I2C con un DAC a 12 bit?

Mah ... ::slight_smile:

Guglielmo

dicasi 5 miseri US$ si ha una breakout board I2C

Se non si sente l'esigenza della breakout board con 4 euro si possono acquistare due ADC singoli a 12bit (in PDIP).
Onestamente anche a me l'idea del DAC fatto con resistenze ed uscite, aldilà del fascino tecnico, mi lascia perplesso, solo per le resistenze di precisione mi sa che costa anche di più.

Ciao, Ale.

Sì, lo penso!

È sempre la vecchia storia delle risorse in campo

Perché usare un ADC, una formula e un DAC per un lavoro che fai con due resistenze e uno zener?

Delle due l'una :

O sai quello che stai facendo e hai scelto con oculatezza, in previsione di espansioni future

Oppure non hai le conoscenze per capire e semplificare il tuo problema

E in questo caso sei avviato su una china che ti porterà ad un punto dove non ti basterà più nulla, nessun problema sarà risolvibile, ma "non" a causa del problema

Qui, dal messaggio 14 è evidente che lo OP non ha 'capito' un circuito con 3 componenti di numero, solo tre componenti

Tu credi veramente che potrebbe capire lo schema di un DAC esterno?
Anche solo uno da 5 dollari?

Standardoil:
... Tu credi veramente che potrebbe capire lo schema di un DAC esterno?

... è una breakout board, la colleghi al bus I2C gli dici che tensione generare e lo fa ... che c'è da capire? :smiley:

Secondo me, per un inesperto, è molto più complicato da "capire" il tuo discorso che non un "... attacca due fili, invia un comando ed è fatto" ... :wink:

Guglielmo

P.S.: Che poi io trovo elegante la tua soluzione di cui al post #12 è un altro conto :grin: