Feuchtigkeitssensor HTU21D mit dem Netduino (Teil 2)
Damit die gemessenen Werte auch brauchbare Messeinheiten haben, müssen die Rohdaten zunächst umgerechnet werden. Daher kommen zwei weitere Methoden hinzu, die dies erledigen. Der Inhalt zum Lesen des einzelnen Wertes erhält eine eigene Methode, weil dieser Inhalt zweimal verwendet wird und sich nur im einzelnen zusendenden Byte unterscheidet.
// Luftfeuchtigkeit Messen und Rohwert zurückgeben // Liest mit der Übergabe des Befehls den Sensor Teil aus. // Warten bis der Sensor mit dem Lesevorgang fertig ist. byte[] data = new byte[3]; // Messergebnis abrufen Debug.Print("Sensor konnte nicht gelesen werden!"); |
Damit wir die Daten zusammengefasst aus der Methode “Read” erhalten, wird das Ergebnis in einem Daten Objekt zusammengefasst. Daszu wird eine neue Klasse angelegt.
// Das Sensor Daten Objekt stellt die gemessenen Werte zur Verfügung. // Ruft die gemessene Temperatur ab. // Initialsiert das Daten Objekt mit den Rohwert Messungen // Überschriebene Methode für die Ausgabe der Berechneten Inhalte. |
Im Datenblatt sind die Formel zu entnehmen für die Feuchtigkeit und Temperatur, die mit relativ wenig aufwand in einem Programmcode abgebildet werden können.
Feuchtigkeitswert = –6 + (125 * (Rohwert / 65536)) |
Formel für die Temperatur aus dem Rohwert berechnen.
Temperaturwert = –46,85 + (175,72 * (Rohwert / 65536)) |
Grundsätzlich benötigt die Umrechnung drei Werte. Das Summieren und Multiplizieren ist bei beiden Umrechnung die selbe. Diese Aufstellung lässt sich in eine Methode zusammenfassen und in die Klasse SensorData hinzufügen.
// Rechnet aus dem Rohwert das Zielergebnis um. // Messumfang multiplizieren und an den Startwert verschieben. |
Nun kann die eigentliche Umrechnung im Konstruktor erfolgen.
... // Berechnen der Temperatur. |
Damit wäre das Daten Objekt mit der Umrechnung fertig. Jetzt muss in der Hauptklasse HTU21D der Lesevorgang vervollständigt werden.
... // Rohwert abholen für Temperatur // Neues Datenobjekt erzeugen und die Rohdaten übergeben. |
In der Program.cs beleibt noch eine kleine Anpassung und dann ist der Teil fertig.
public class Program while (true) // Ergebnis ausgeben. |
Vielleicht ist dem einen oder anderen aufgefallen, dass drei Bytes gelesen werden, aber nur zwei Bytes verwendet werden. Das Dritte beinhaltet den CRC Wert, mit dem sich prüfen lässt, ob das Ergebnis Valide ist. Darauf gehe ich dann im nächsten Post ein.
Kommentare