La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linearizzazione di un sensore Tiziano Serra matr. 182604.

Presentazioni simili


Presentazione sul tema: "Linearizzazione di un sensore Tiziano Serra matr. 182604."— Transcript della presentazione:

1 Linearizzazione di un sensore Tiziano Serra matr

2 Il problema: Si vuole linearizzare un sensore di temperatura, che fornisce un'uscita tra 0 e 100 mV, mediante una spezzata. Sperimentalmente sono stati trovati i seguenti punti di ginocchio della spezzata: (20 mV, 15 gradi), (55 mV, 27 gradi). Inoltre a 0 mV si fa corrispondere 0 gradi e a 100 mv 35 gradi. Realizzare un programma che permetta di introdurre da tastiera un valore di tensione fornito dal sensore, calcoli e stampi il valore di temperatura espresso in gradi. L'elaborazione deve avvenire operando con gli interi con la massima precisione possibile.

3 Studio del problema nel suo dominio specifico V1 20 V2 55 V3 100 V ( mV) T ( °C) 15 T1 27 T2 35 T3 V0 0 0 T0

4 Individuo un passo importante V1 20 V2 55 V3 100 V T 15 T1 27 T2 35 T3 V0 0 0T0 Mi pongo in una situazione intermedia. Se si introduce una tensione V, ricado in uno dei triangoli: V T

5 Individuo un passo importante (2) Isolando il triangolo, e generalizzando: V i-1 ViVi V T i-1 TiTi T Per le proprietà dei triangoli rettangoli, vale la seguente proporzionalità:

6 Individuo un passo importante (3) da cui : Considerazione di programmazione: la formula richiama lo schema A / B * C. Poiché opero con gli interi, devo eseguire prima il prodotto e poi la divisione.

7 Schema di massima dellalgoritmo risolutivo Leggo la tensione Verifico se la tensione ricade tra gli estremi V 0 e V 3, altrimenti non posso operare Controllo in quale segmento ricado, e carico sulle opportune variabili i valori di ginocchio Eseguo lelaborazione secondo la formula Stampo il risultato

8 Temperatura = y1 + ( Tensione – x1 ) * ( y2 – y1 ) / ( x2 – x1 ) ; V0 = 0; T0 = 0; V1 = 20; T1 = 15; V2 = 55; T2 = 27; V3 = 100; T3 = 35; LeggoTensione Tensione V0 AND Tensione V3 x1= V0 x2 = V1 y1 = T0 y2 = T1 Tensione V1 Tensione V2 x1 = V2 x2 = V3 y1 = T2 y2 = T3 x1 = V1 x2 = V2 y1 = T1 y2 = T2 StampaTemperatura Start Stop Calcola Temperatura StampaErrore VF V V F F

9 Programma in linguaggio C: #include #define V0 0 #define T0 0 #define V1 20 #define T1 15 #define V2 55 #define T2 27 #define V3 100 #define T3 35 int main() { int tensione; int temperatura; int x1; int x2; int y1; int y2; printf("Fornire un'uscita in tensione tra i 0 mV e i 100 mV: "); scanf("%d", &tensione);

10 if ( (tensione >= V0) && (tensione <= V3) ) { if (tensione <= V1) { x1=V0; x2=V1; y1=T0; y2=T1; } else { if (tensione <= V2) { x1=V1; x2=V2; y1=T1; y2=T2; } else { x1=V2; x2=V3; y1=T2; y2=T3; } temperatura = y1 + (tensione-x1)*(y2-y1)/(x2-x1); printf("Il valore della temperatura corrispondente a questa tensione %d mV e' %d C\n", tensione, temperatura); } else { printf("Errore. Inserire un'uscita in tensione compresa tra i 0 mV e i 100mV\n"); } return 0; }


Scaricare ppt "Linearizzazione di un sensore Tiziano Serra matr. 182604."

Presentazioni simili


Annunci Google