Mittelwert erstellen

Ich bräuchte Hilfe bei der Programmierung von meinem Arduino. In meinem Projekt geht es darum einen Widerstandssensor zu messen und dann im Serial Monitor anzeigen zu lassen. Doch mir ist aufgefallen das ich teilweise viel zu hohe und zu niedrige Werte erhalte und manchmal dann wieder den richtigen Wert (Ich brauche nur den Widerstandswert und habe zuerst mit normalen Widerständen z.B. 1k Ohm probiert wo dann die Werte 1008 Ohm oder 994 Ohm herauskamen) Deswegen habe ich mir gedacht das ich einen Mittelwert von den Werten nehmen könnte um ungefähr die richtigen zu erhalten. Doch ich verstehe nicht wie man einen solchen macht. Im Internet hab ich zwar ein paar Beispiele gefunden aber ich verstehe nicht wie ich diese in meinen Code integrieren kann.
Den Code den ich gerade verwende habe ich im Internet gefunden:
[Arduino Widerstand messen – ein Arduino Ohmmeter - Hikro Technikblog]
(R1 wäre jetzt ein PT1000 Temperatursensor)

void setup() {
    Serial.begin(9600);   //Beginn einer Seriellen Übertragung
}
 
void loop() {
 
  double spannung0 = 4.79; //Spannung an der Messstrecke
  int widerstand2 = 4700; //Widerstand in Ohm des Messwiederstands
  int drahtwiderstand = 0; //Optional
 
  int messwert = analogRead(A0); //Auslesen des aktuellen Wertes am Analog In 
 
  double spannung1 = messwert/1024.0 * spannung0; // der Bruch messwert/1024 entspricht dem Anteil der am Messwiederstand anliegenden Spannung zur Gesamtspannung.
  double spannung2 = spannung0- spannung2;        // Berechnung der Spannung am Widerstand R2
 
  int widerstand1 = widerstand2 * (spannung1/spannung2) ;  //Berechnung des Widerstands R1
 
  //Ausgabe des gemessenen Wertes
  Serial.print("Der gemessene Widerstand betraegt: ");
  Serial.print(widerstand1);
  Serial.println(" Ohm");
  delay(1000);
 

Stelle den Code bitte direkt hier ins Forum. Benutze dazu Codetags. Wie das geht, steht hier.

Gruß Tommy

Wenn Du in den Voreinstellungen der IDE alle Warnungen einschaltest, erhälst Du:

warning: 'spannung2' is used uninitialized in this function [-Wuninitialized]
   double spannung2 = spannung0 - spannung2;       // Berechnung der Spannung am Widerstand R2
          ^~~~~~~~~

Einen Mittelwert bildet man durch Aufsummieren der Einzelwerte und Division durch die Anzahl der Einzelwerte.

Du verfolgst einen falschen Ansatz.

Der PT1000 ändert den Widerstand sehr grob um ca 4Ohm also 0,4% pro °C.

Bei einem Spannungsteiler mit einem PT1000 und einem 1kOhm-Widerstand (nehme mal an der währe mit 0% Tolleranz und temperaturstabil ).

Versorgungsspannung 5,000V
Bei 0°C hat der PT1000 1000,00 Ohm Ausgangspannung 2,500V
bei 1°C hat der PT1000 1003,91 Ohm Ausgangsspannung 2,5049V delta = 0,0049V
Das ist 1 ADC bei 10 Bit Auflösung. Dadurch kannst Du nur ca 1°C auflösen.

Nimm einen MAX31865. Wie zB Adafruit PT1000 RTD Temperature Sensor Amplifier - MAX31865 : ID 3648 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits
Die PT1000 - Version hat einen Referenzwiderstand mit der Aufschrift 4301 (4300 Ohm).
Dieser hat einen 15Bit AD-Converter und SPI Schnittstelle.
Genauigkeit 0,5°C

Preis bei Adafruit ca 15$.

Grüße Uwe

Die Frage ist ja eher, in welchem Bereich gemessen werden soll.
Wenn ich nur von 0-50°C eine Änderung erwarte, dann bin ich bei einem R von 1000 bis 1194 Ohm.
Messwandler ran und ich löse 50K in 1024 Werte auf :wink:
Wenn ich das Ausgangsposting lese, werd ich auch nicht schlau draus, warum ich einen PT-Sensor nochmal ausmesse....

Ups
Hab den Spannungsteiler nicht mit dem Widerstand berechent den der TO verwendet.
Also nochmal

nun bei 0°/1°C und 4,79V und 4700 Ohm

0°C: 3,9496491228V
1°C: 3,9469416593V differenz = 0,0027V also 1/2 ADC.
Meßbar nur in ca 2°C.

Das sind 1ADC eine normale Meßungenauigkeit für einen A/D Wandler.
Du kannst 10 mal messen und dann Durch 10 teilen.

Du kannst auch einen 1Kohm Widerstand für den Spannungsteiler nehmen. Da hast Du auch schon die doppelte Meßgenauigkeit.

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.