La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linearizzazione di un sensore

Presentazioni simili


Presentazione sul tema: "Linearizzazione di un sensore"— Transcript della presentazione:

1 Linearizzazione di un sensore

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
T ( °C) 35 T3 27 T2 15 T1 0 T0 V ( mV) V0 V1 20 V2 55 V3 100

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

5 Individuo un passo importante (2)
Isolando il triangolo, e generalizzando: Ti T Ti-1 Vi-1 V Vi 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 dell’algoritmo risolutivo
Leggo la tensione Verifico se la tensione ricade tra gli estremi V0 e V3, altrimenti non posso operare Controllo in quale segmento ricado, e carico sulle opportune variabili i valori di ginocchio Eseguo l’elaborazione secondo la formula Stampo il risultato

8 Tensione ≥ V0 AND Tensione ≤ V3 Calcola “Temperatura”
Temperatura = y1 + ( Tensione – x1 ) * ( y2 – y1 ) / ( x2 – x1 ) ; V0 = 0; T0 = 0; V1 = 20; T1 = 15; V2 = 55; T2 = 27; V3 = 100; T3 = 35; Start Leggo ”Tensione” V Tensione ≥ V0 AND Tensione ≤ V3 F Tensione ≤ V1 V F Tensione ≤ V2 F V x1= V0 x2 = V1 y1 = T0 y2 = T1 x1 = V1 x2 = V2 y1 = T1 y2 = T2 x1 = V2 x2 = V3 y1 = T2 y2 = T3 Calcola “Temperatura” Stampa “Temperatura” Stampa “Errore” Stop

9 Programma in linguaggio C:
#include <stdio.h> #include <stdlib.h> #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; 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); printf("Errore. Inserire un'uscita in tensione compresa tra i 0 mV e i 100mV\n"); return 0;


Scaricare ppt "Linearizzazione di un sensore"

Presentazioni simili


Annunci Google