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
Buonasera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentartiQUI (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.
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.
Avevo già letto il regolamento ad essere onesto ma non avevo capito che si dovesse semplicemente "rispondere" al thread di presentazioni mea culpa, tutto fatto
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
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).
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
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.
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).
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)
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:
si tratta di misure di pressione, che sono piuttosto lente, di loro
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?
>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?
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ù.
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?