Luftfeuchtigkeit mit einem Widerstand messen?
Hallo ich habe vor mit einem Arduino die Luftfeuchtigkeit zu messen. Dazu habe ich mir einen Widerstand bestellt, der abhänig von der Feuchtigkeit seinen Widerstandswert verändert. Und zwar der SYH-2R. Mitthilfe eines Spannungsteilers möchte ich dann die abfallende Spannung mit dem Arduino messen und damit den Widerstandswert vom SYH-2R berechnen. Diese Berechnung soll dann mithilfe eines Diagramms vom Datenblatt des Widerstands in eine Luftfeuchtigkeit umgerechnet werden. Leider habe ich keine Ahnung wie ich das in einem Code für den Arduino umsetzen könnte. Kann mir jemand helfen das zu programmieren?
PS ich möchte absichtlich nicht einen Feuchtigkeitssensor kaufen, der direkt die Feuchtigkeit misst.
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
}