Luftfeuchtigkeit mit einem Widerstand messen?

2 Antworten

Rx sei der variable Widerstand, R1 der andere Widerstand des Spannungsteilers.

Ux sei die Messspannung, Uc die Spannung kommend vom Arduino bzw. die Gesamtspannung. Damit hast du:

bzw.



Zur Berechnung der relativen Feuchtigkeit benötigst du eigentlich die Funktion bzw. die Kennlinie des variablen Widerstandes. Vereinfacht kannst du die fürs erste aber auch als linear annehmen. Daraus kannst du eine lineare Gleichung basteln:

y = mx + b

y: Widerstandswert
m: Steigung der Kennlinie -> ( (y2-y1) / (x2-x1) ) -> Ablesen
x: relative Feuchtigkeit
b: Achsabstand bzw. Offset (als Widerstandswert)

Dann:

x = (y - b) / m

Für einen Codebeispiel dann:


// Rudimentärcode

int uc = 5;          // Versorgungsspannung
int r1 = ...;        // Widerstandswert von R1
float offset = ...;  // Achsenabstand, siehe oben
float rx = 0.0;      // gesuchter Widerstand, init auf 0
float ux = 0.0;      // gesuchte Spannung
float rh = 0.0;      // relative humidity (Feuchtigkeit)
float m  = ?.?;      // Steigung der Kennlinie, siehe oben



// Funktion zur Berechnung der relativen Feuchtigkeit
// Der Funktion den Analogpin übergeben
float getHumidity(int vPin) {

  // Eingangssignal lesen und auf Volt umrechnen
  ux = analogRead(vPin) * ( 5.0 / 1024.0 );
         
  // Widerstand des Sensors berechnen
  rx = r1 * (ux / (uc - ux) )
      
  // relative Feuchtigkeit berechnen
  rh = (rx - offset) / m;
      
  return rh;
}
int analogPin = A3; // SYH-2R verbunden mit analog pin 3
int val = 0;  // Variable um den gelesenen Wert zu speichern
int hum = 0;  // Variable Luftfeuchtigkeit

void setup() {
  Serial.begin(9600);           //  setup serial
}

void loop() {
  val = analogRead(analogPin);  // Input Pin einlesen
  hum = val // hier kommt deine berechnung rein
  Serial.println(val);          // Wert ausgeben
}