Oppure

Loading
17/07/20 10:18
Thejuster
Buongiorno ragazzi, apro questo thread perché non ho la più pallida idea di come calocare
il valore di un sensore in un risultato che sia leggibile come pressione :(

il sensore in questione è questo

ebay.it/itm/…

è possibile ottenere la lettura sia di pressione che di suzione.
a me in particolare serve quella di suzione ( vacuum )

facendo dei test, ovviamente mi rileva la pressione ambientale che è pari a 387 (int)
aspirando con bocca il valore scende fino a 220 / 260 dipende dalla forza.
viceversa, soffiando forte il valore sale.

ora non conosco perfettamente i nomi tecnici di come vengono chiamati i valori.

ipotizzo Bar per pressione Pounds o inches qualcosa del genere.
come posso fare ad ottenere un valore preciso per la misurazione di questi valori?

esempio:
Come faccio a sapere che int 400 equivale a 2 bar? tanto per dirne una.
Ultima modifica effettuata da Thejuster 17/07/20 10:20
mire.forumfree.it/ - Mire Engine
C# UI Designer
17/07/20 12:47
Carlo
La misura che restituisce il tuo sensore sembra inH2O (pollici d'acqua)
Se fosse vero per avere i bar, devi dividere il valore restituito dal sensore per 402
Hai detto che a pressione atmosferica hai 387; 387/402=0.961, quasi un bar.

per le conversioni vedi google.com/…

Per avere una certezza devi fare dei test con delle misure campione, anche un compressore con un manometro ti può aiutare, se sul cellulare hai il sensore della pressione, puoi verificare la pressione atmosferica con la app Z-DeviceTest.
Per pressioni più basse di 1bar, avrai bisogno dell'aiuto di un frigorista o installatore di aria condizionata, che ti può far verificare il tuo sensore con un vacuometro.

Solitamente tali sensori entro il range di funzionamento hanno una scala lineare, e trovato il coefficiente di conversione che non sarà molto diverso da 402, sei a posto.
Ultima modifica effettuata da Carlo 17/07/20 13:13
in programmazione tutto è permesso
17/07/20 16:07
Thejuster
uhm ottimo grazie carlo.
per la pressione ho un bel compressore potente quindi non dovrei avere problemi per la misurazione.
anzi più che altro devo stare attento a non dare troppa pressione per danneggiare il dispositivo.

il problema sta nell'aspirazione.
Il progetto è basato sulla misurazione di carburatori per moto.
piu che altro serve a valutare se il carburatore aspira correttamente o gli altri carburatori rispettano una certa scala o soglia di aspriazione.
mire.forumfree.it/ - Mire Engine
C# UI Designer
17/07/20 17:17
Carlo
Ottimo e attenzione.
Aggiungo che il manometro di un compressore restituisce la pressione relativa, cioè non considera la pressione atmosferica.

Come primo approcio leggerei in contemporanea il valore del sensore es: 387, e il valore della pressione atmosferica con il cellulare es: 991,3mB.

387/991,3=0,390 (coefficiente per trovare i millibar) oppure 390 (coefficiente per trovare i bar)
Ultima modifica effettuata da Carlo 17/07/20 17:21
in programmazione tutto è permesso
20/07/20 19:47
Thejuster
uhm non credo che vada bene come esempio.
ti spiego cosa deve fare

Il mio manometro è questo

media.discordapp.net/attachments/278928749246939136/733022875166179365/…

vorrei trasformalo in digitale per la pressione va bene grazie carlo per il tuo aiuto.
Ma per l'aspirazione?
come ottengo il calcolo in psi?

in alto c'è scritto KG per centimetro quadrato.
ma suppongo che il tuo esempio dei coefficienti vada benissimo.

per l'aspirazione invece? cosa mi consigli?
come posso fare per calcolare tale valore?


ho trovato questo esempio in rete.
Ma non capisco bene perché il tizio fa quei calcoli sul voltaggio


int mapsen = 0; // Set MAP sensor input on Analog port 0
int NUM_SAMPLES=300;  // number of samples
float sum = 0;                    // sum of samples taken
int sample_count = 0; // current sample number
float input_voltage = 4.90; //measured with multimeter

void setup() {
 Serial.begin(9600);
}
void loop() {
  sum = 0;
  sample_count = 0;
  while (sample_count LESS_THAN NUM_SAMPLES) {
        sum += float(analogRead(mapsen));
        sample_count++;
        delay(0.5);
    }
 float out_voltage = (sum / NUM_SAMPLES * input_voltage) / 1024;
 float Pabs = out_voltage2705.8824/input_voltage-16.4706; //absolute pressure in mbar
 //Bosch 20-250 kPa MAP sensor min pressure measured: 200mbar with 0.4V (typical)
 //Bosch 20-250 kPa MAP sensor max pressure measured: 2500mbar with 4.65V (typical)
 //Bosch 20-250 kPa MAP sensor linear model formula is: 
 //Ua=Uv(Pabs0.85/230 + 0.0061); Uv=supply voltage; Ua=output voltage; Pabs is absolute pressure
 //Ua is proportional to the supplied voltage, so Ua is always divided by Uv
 //from this formula the linear model for absolute pressure in mbar:
 //slope = dy/dx = (2500mbar-200mbar) / (Ua_max-Ua_min)/Uv_input = 2300mbar / (4.65V-0.4V)/5V = 2300/0.85 ~2705.882353
 //generalised linear model y=ax+b; then the y-intercept (b) is calculated as follows with Uv=5V:
 //200=(0.4/5)(2300/0.85)+b; b=200-(0.4/5)(2300/0.85)=200-0.082705.8824=200-216.4706=16.4706
 //slope = dy/dx ~ 2705.8824; y-intercept ~ -16.4706, so y=ax+b or y(abs pressure in mbar)=2705.8824*(Ua/Uv)-16.4706
 
 Serial.println(Pabs);
 //Serial.print("\t");
 //Serial.println(out_voltage,4);
}


mire.forumfree.it/ - Mire Engine
C# UI Designer
21/07/20 7:49
Carlo
Il programma che hai trovato imposta il sensore in modalità analogica, o usa la porta analogica, in tale modalità invece di un dato numerico hai una tensione.

Vorrei renderti partecipe di un ragionamento.
In assoluto non esiste differenza tra aspirazione e compressione, viviamo in un pianeta dove abbiamo sempre una pressione di un Bar circa, se in un ambiente confinato per compressione ne aumentiamo la pressione di un Bar, all'interno dell'ambiente confinato avremo 2 Bar, oppure come segna un manometro +1 Bar (rispetto alla pressione atmosferica). Chiarito questo concetto sappiamo che possimo aumentare la pressione a dismisura.
L'aspirazione si ottiene togliendo aria da un ambiente confinato, e se come riferimento zero abbiamo la pressione atmosferica avremo dei Bar negativi. Chiaro questo concetto sappiamo che non possiamo diminuire a dismisura la pressione, perché al massimo possiamo creare il vuoto -1 Bar circa.

Nel tuo caso il tuo sensore nel vuoto dovrebbe restituire un intero = 0 (in pratica forse no, a pressioni così basse perderà la sua linearità;)

Per il calcolo in psi: 14,5038 psi (Libbre per pollice quadrato) = 1 Bar
Il calcolo con il coefficiente ipotetico di 390 diventa: 387/390*14,5038=14,39 psi (assoluti)
Se hai bisogno della misura relativa: 14,28-14,5038 = -0,114 psi (relativi alla pressione atmosferica 1 bar = 14,5038 psi)

Il tuo manometro nella scala esterna segna i vacuum inches of mercury, che sono 0 pollici a pressione atmosferica e 29,96 pollici nel vuoto (nel manometro approssimato a 30)

Il calcolo diventa: 29,96-387/390*29,96=0,23 vacuum inches of mercury (un po' meno della pressione atmosferica)

quando con la bocca hai aspirato nel sensore portando il valore dell'intero a 220:
29,96-220/390*29,96=13,06 vacuum inches of mercury

Per il coefficiente ho messo 390, ma lo devi trovare tu.
Il valore 390 è per trovare i bar, poi dai bar trovi tutte le altre scale, nessuno ti vieta di trovare il coefficiente per una conversione diretta al valore della scala che vuoi senza passare per i bar.

Ho messo i ragionamenti così nel tuo software sei in grado di mettere tutte le scale che vuoi, relative e assolute.
Ultima modifica effettuata da Carlo 23/07/20 21:36
in programmazione tutto è permesso
21/07/20 15:51
Thejuster
Grazie infinite Carlo. Sei stato la mia salvezza era proprio quello che cercavo. Ancora grazie
mire.forumfree.it/ - Mire Engine
C# UI Designer
22/07/20 0:27
Carlo
Prego, questa mattina ho postato dal cellulare e al lavoro tutto il giorno ho ripensato a quello che avevo scritto, con il dubbio di aver detto qualche sciocchezza.
Anche se sono rincasato tardi, per verificare l'esattezza delle mie affermazioni ho scritto un programma in C#, progetto VisualStudio. Per scrivere il programma, veramente minimale, ho impiegato 10 minuti, per disegnare il manometro ho impiegato 1 ora... :rotfl::k:

Il programma dimostra che i calcoli sono esatti, e il manometro nel lato Vacuometro è preciso, nel lato pressione un po' meno andrebbe aggiustato il disegno. ;)

Allegato progetto.

EDIT: modificato manometro per scala esatta e non ambigua
Ultima modifica effettuata da Carlo 22/07/20 12:45
in programmazione tutto è permesso