Ich arbeite mit einem kapazitiven Feuchtesensor P14. Um die Feuchtigkeit zu messen benutze ich ein einfaches RC-Glied, mit dem P14 als Kondensator. Ein PWM- Signal wird an das RC-Glied gelegt und die Spannung über dem P14 über einen Komperator mit Ref.-Spannung von 63%*Vdd (damit die Zeit gleich dem Tau des RC-Gliedes ist). Ich messe die Zeit zwischen dem high vom PWM bis zum high des Komperators und bekomme somit Tau. Über C=R/Tau bekomme ich die Kapazität des Sensors. Nun zu eigendlichen Problem: Die relative Feuchtigkeit messen. ich habe diese Formel bekommen: C= k * ( A0 + A1*rH + A2*rH^2 + A3*rH^3 + A4*rH^4 ) k,A0-A4 sind gegeben und C habe ich gemessen. Nun, wie bekomme ich jetzt rH? Kann man den überhaubt ein Polynom 4.Grades lösen? Vielleich irgendwie Nummerisch... Ich weiß, dass es mehr Physik und Mathe ist als analoge Elektronik, aber ich bitte euch mir trozdem zu helfen. Vielen Dank! Datenblatt des Sensors: http://www.ist-ag.com/eh/ist-ag/resource.nsf/imgref/Download_DHP14-W_D2.2.compressed.pdf/$FILE/DHP14-W_D2.2.compressed.pdf
SamY schrieb: > Nun, wie bekomme ich jetzt rH? Durch Vergleich. C hast du, nun setzt du in die Gleichung einfach einen sinnvollen rH-Startwert ein, berechnest C und vergleichst mit dem gemessenen C, dann rH in der Gleichung sinnvoll ändern usw., bei Übereinstimmung mit gewünschter Genauigkeit abbrechen, voila.
@ArnoR Ich messe alle 100us die Kapazität, jetzt noch eine Schleife einzubauen die bis zu 1000 - 10000 (Genauigkeit von 0,1-0,01 rH ) Werte durchkemmt wäre mit den ganzen anderen Funktionen die der uC machen muss, zu viel. Aber ich behalte dies als Plan B. Danke!
SamY schrieb: > die bis zu 1000 - 10000 (Genauigkeit von 0,1-0,01 rH ) Werte durchkemmt Die Feuchtigkeit wird sich von Messung zu Messung nicht stark ändern, so dass nicht viele Rechnungen nötig sind, wenn man als Startwert den Abbruchwert der vorigen Rechnung nimmt.
http://www.wolframalpha.com/input/?i=solve+C%3D+k+*+%28+A_0+%2B+A_1+*+r+%2B+A_2+*+r^2+%2B+A_3+*+r^3+%2B+A_4++*+r^4+%29+for+r Liefert ein Ergebnisse... Einfachste Variante wäre aber C für 100 (1% rH) oder 1000 (1/10 % rH) rHs auszurechnen und den gemessenen Wert nachschlagen. Andere Möglichkeit in Abhängigkeit der Konstanten A_n und der gewünschten Genauigkeit einfach (der Graph C / rH sieht ziemlich linear aus) einige Terme wegzulassen.
@ArnoR Du hast schon Recht. Doch der Sensor soll in einem Klimaschrank zum Testen benutzt werden und man erwartet von mir eine weniger riskante und "schönere" Lösung. Und ich benutze ach noch den Mittelwert von mehreren Zeiten bevor ich es in Kapazität und relative Luftfeuchtigkeit umrechne.
@Arc Net Ein Ergebnis ist es XD. Eine Tagesarbeit es nur in den Code zu schreiben. Ich überleg mir aber wirklich es dann vielleicht ungf. so zu machen. Das mit den weglassen muss ich nachprüfen. Wäre natürlich sehr hilfreich. Das mit der Tabelle ist eine Möglichkeit, die ich aber aus den selben Gründen wie bei ArnoR nach hinten schieben muss. Danke
SamY schrieb: > Das mit der Tabelle ist eine Möglichkeit, die ich aber aus den selben > Gründen wie bei ArnoR nach hinten schieben muss. Warum? Excel oder etwas vergleichbares berechnet die Werte für C, im Programm steht dann im einfachsten Fall nur ein rh = cTable[c_meas - c_base];
Hallo, wesentlich effizienter als einfaches Ausprobieren ist die Newton-Raphson-Methode. Du beginnst mit einem Startwert und näherst dich iterativ der gesuchten Lösung entlang des Gradienten der Funktion. Geht bei Polynomen in der Regel sehr gut und dürfte bereits nach wenigen Schritten konvergieren. Ob sich die Methode allerdings hinreichend effizient auf einem uC implementieren lässt kann ich leider nicht beantworten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.