Lettura valori sensore di pressione

Ciao ragazzi....inizio a imbattermi in un nuovo progetto...questa volta con un sensore di pressione!!!!!!!!!! Non mi tornano i conti tra volt e bar...ho fatto diverse conversioni etc...varie ricerche....ad oggi ho scoperto una funzione fighissima "map" che stabilisci dei parametri...e ti converte in automatico l'ingresso analogico.....Ora il problema è un altro...stabilire come misurare questa pressione.....
Faccio presente che utilizzerò un sensore che misura 0 - 600 bar...con un output 0,5v a 4,5v. Ora, per calcolare la corrispondenza ho diviso i 4,5v su 600bar....al risultare bisogna sommare i 0,5v visto e considerato che la base 0bar è 0,5v.....Ora come faccio a dire ad arduino...che ogni 0,05075v corrisponde 1 bar? Sarà una cavolata il calcolo...ma mi sn bloccato!!!! Ho provato a fare delle proporzioni....ma senza ottenere dei risultati....confido in un vostro aiuto!!!!!!!! grazie

5 / 1023= 0.04887585
4.5 / 0.004887585 = 920 Limite massimo
0.5 / 0.004887585 = 102 Limite minimo
map (valore, 102, 920, 0, 600)

il tutto soggetto agli errori classic
tensione di riferimento di non 5V esatti, non linearita' del sensore etc etc etc

ok, grazie.....ma io uso un alimentatore stabilizzato...potrei comunque avere problemi?....ho provato, ma non è preciso...ho collegato un alimentatore...e nonostante io regolo la tensione a 4,5v misura 623bar!!xkè?

A mio parere il ragionamento lo devi estendere sui 10 bit dell'ADC, ossia da 0 a 1023. Con una proporzione ti calcoli l'estremo superiore "virtuale" della scala, cioè:
4,5V : 600bar = 5V : X --> = 666 quindi hai 0,5V = 66 bar; da ciò ricavi l'estremo inferiore -66bar
quindi possiamo immaginare che il sensore operi nel range di pressione da -66bar a 666bar in corrispondenza dei 1024 passi (da 0 a 1023); ogni passo corrisponde in volt a: 5V:1024 = 0,0048 e in bar a 0,714; quest'ultimo è il valore che ti interessa.
P.es. immagina che l'analogRead ti restituisca una lettura di 357 non dovrai fare altro che moltiplicarlo per 0,714 ed otterrai l'equivalente in bar cioè 3570,714=254,898.
A me pare un ragionamento esatto, fai un po' di prove e fammi sapere. Ovviamente non dovresti mai avere letture inferiori a 66
0,714=47 circa e maggiori di 600*0,714=428 circa perché saresti off range.

io con questa formuletta ho tradotto il segnale in volt...e sembra attendibile float)valore / 1024) * 5)-(0.17) 0,17 lo sottraggo xchè a 0 volt mi misura 0,17v chiamiamolo fattore di correzione
Con questo codice non riesco a rilevare una pressione precisa.....ogni volt mi corrispondono 150 bar!!!!!

#define IN_ANALOG 0
int valore;
int pressione;

void setup(){
   Serial.begin(57600);
  
   }

void loop(){

  valore = analogRead(0);
  float temp; // 1 bar 0,07 volt 66,67 millivolt
  float min;
  float max;
  min = 0,5;
  max = 4,5;
  temp= ((((float)valore / 1024) * 5)-(0.17));
  
   if (temp < 0){
     temp = 0.00;
     Serial.println("COLLEGARE IL SENSORE");
     }
  pressione = map(temp,min,max,0,600);
      
  Serial.println(pressione);
  
}

scusa ma del tuo ultimo intervento non ho capito niente, né a che formula ti riferisci e nemmeno questa cosa che a 0V ti misura 0,17V

si....posizionando a 0 volt il mio alimentatore.....il valore temp assume 0,17v......x cui....io li sottraggo e porto tutto a 0...Ho provato a muovere il trimmer"fine" che ho sull'alimentatore e addirittura se ho il trimmer a 4,5 sull'arduino visualizzo 4,51, 4,52, 4,53....etc....è molto preciso...

ho provato...a 847 corrispondono 600 bar....non è preciso

Il mio calcolo si basa su una alimentazione di Arduino che sia perfettamente a 5V altrimenti ovvio che i conti non tornano; se ho ben capito tu stai usando un alimentatore per simulare il sensore di pressione, il test ci può anche stare ma la tensione di alimentazione di Arduino l'hai misurata? è quella che fa testo!

ho provato, ma non è preciso...ho collegato un alimentatore...e nonostante io regolo la tensione a 4,5v misura 623bar!!xkè?

perche' probabilmente alimenti Arduino da USB e invece di 5V avrai una tensione minore

è tutto alimentato dallo stesso alimentatore....con il trimmer vario solo l'ingresso su a0...cmq ho fatto una taratura....leggendo il valore su analog 0 e la tensione calcolata con la "formuletta" che mi son fatto...e poi con map ho messo che a 0,5v corrisponde il valore x e a 4,5 corrisponde il valore y...rapportando tutto a 0bar e a 600 bar.....ora servirebbe un manometro per essere sicuri che la taratura sia corretta....Anche se questa soluzione è un pò...."casareccia"....mi sarebbe piaciuto di trarre un valore basandomi sulle proporzioni reali....e non impostando tutto manualmente...

Brunello:
5 / 1023= 0.04887585

Esatto.

Brunello:
5 / 1023= 0.04887585
4.5 / 0.004887585 = 920 Limite massimo
0.5 / 0.004887585 = 102 Limite minimo
map (valore, 102, 920, 0, 600)

il tutto soggetto agli errori classic
tensione di riferimento di non 5V esatti, non linearita' del sensore etc etc etc

nonostante utilizzi un alimentazione stabilizzata...non mi ritrovo con i valori...a o volt mi trovo -74bar a 4,5volt mi ritrovo 622 bar......
non capisco se faccio il map pressione = map(temp,min, max,0,600)....mi restituisce un valore che incrementa di 150bar....xkè? min=0,5 max=4,5

nussun'idea?

Tutti in ferie?! 8)

Scusa Pakino, l'UP non è molto gradito sul forum, se nessuno interviene non è perché sei ignorato, ma perché evidentemente la discussione ha dato tutto il possibile che si poteva dare. Visto che non stai usando il sensore ma una sorgente in volt, che peraltro affermi essere stabilissima, non è possibile che tu ottenga valori sballati e diversi tra loro; quindi non c'è modo di andare avanti almeno finché non hai tu novità da fornire. :slight_smile:

si hai ragione....se avessi il sensore, avrei un riscontro reale.....ma considerando bene la teoria...io ho riscontrato che rapportando i volt letti con il risultato...non è congruo....xkè la misurazione della pressione incrementa di 150bar x volta....leggo bene la minima pressione...quindi a 0,5v 0bar e a 4,5volt 600bar....ma non leggo l'incremento graduale.....vale a dire 1bar,2bar,3,bar,10bar etc...

Allora vuol dire che non hai tenuto conto dei calcoli che ti ho fatto ed hai commesso errori nello sketch, il convertitore AD è perfettamente lineare, se a 0,5V leggi 0 e a 4,5V leggi 600, applicando p.es. 2,5V devi per forza leggere 300, altrimenti stai facendo casino nella conversione.

Si,leggo 300...ma non capisco xkè fin tanto non raggiungo i 450
Non vedo i restanti valori incrementare fino a 450...
La conversione avviene direttamente map(temp,min,max,0,600) considerando che min é 0,5 e max 600

lascia un momento da parte il map e prova semplicemente a moltiplicare il valore letto per quello che ti ho calcolato io e vedi cosa succede.