Temperaturauslesung hat abweichung.

Hallo zusammen.

Habe ein Schulprojekt in dem ich einen Pt100 mit einem Polin Messverstärker v.02 auslesen möchte.
Leider hab ich immer abweichungen wenn ich die Temperaturen am Messverstärker simuliere.
Ich glaube mein fehler liegt in dem analogRead-Befehl.

Vielleicht kann mir ja einer im skript helfen. Das ist mein erstes arduino Projekt.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Library für LCD aufgerufen
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE); // LCD Adresse auf 0x27 gesetzt, 16 Zeichen / 2 Zeilen LCD

int TMP36 = A0; // Messverstärker

int temperatur = 0; // Temperaturspeicher

int temp[10]; // Anzahl Vergleichswerte

int time= 50; // Zeitlicher Abstand zwischen den Messungen

const int inputPin = 2; // Eingangspin fu¨r Taster

//…

void setup()
{
lcd.begin(16,2); // Initialisierung des LCD
// Hier folgt die Ausgabe auf das LCD
lcd.setCursor(3, 0); // Cursor setzen an Stelle x, Zeile y
lcd.print(“Temperatur”); // Text für die erste Zeile
lcd.setCursor(4, 1); // Cursor setzen an Stelle x, Zeile y
lcd.print(“Arduino”); // Text für die zweite Zeile

delay(4000); // Zeit bis Befehl ausgeführt wird
lcd.clear(); // Display löschen

digitalWrite(3, HIGH); //Spannungsversorgung Messverstärke

pinMode(inputPin, INPUT);
digitalWrite(inputPin,HIGH); // Internen Pullup für inputPin einschalten

Serial.begin(9600);

}

//…

void loop()
{

temp[0] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[1] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[2] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[3] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[4] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[5] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[6] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[7] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[8] = map(analogRead(TMP36), 0, 1023, -50, 200);

delay(time);

temp[9] = map(analogRead(TMP36), 0, 1023, -50, 200);

temperatur=(temp[0]+temp[1]+temp[2]+temp[3]+temp[4]+temp[5]+temp[6]+temp[7]+temp[8]+temp[9])/10; // Zusammenführung der Messwerte

int val = digitalRead(inputPin); // Einganswert einlesen Taster

if (val == HIGH) // Eingang HIGH?
{

lcd.clear(); // Display löschen
lcd.setCursor(5, 0);
lcd.print(temperatur);

lcd.setCursor(2, 1);
lcd.println("Grad Celsius ");

}
else
{

lcd.clear(); // Display löschen
lcd.setCursor(5, 0);
lcd.print(“Taster”);

}

}

Temeraturmessung_erweitert.ino (2.63 KB)

for (index=0; index<10; index++)
{
temp[index] = map(analogRead(TMP36), 0, 1023, -50, 200);
delay(time);
}

besser:

temperatur = 0;
for (count=0; count<10; count++)
{
temperatur += map(analogRead(TMP36), 0, 1023, -50, 200);
delay(time);
}
temperatur = temperatur/10;