Schritt 9: Erstellen Sie die Sensorklasse
Diese Klasse kann für jeden Bereich von Vishay Thermistoren verwendet werden, die die vier Konstanten für die Verwendung mit der erweiterten Steinhart-Hart-Gleichung.
Beachten Sie im Code in diesem instructable. Ich habe einen Tag < Code beginnen > und < Code End >. Sie sollten nur die Teile zwischen diesen Tags und nicht die Tags selbst kopieren/einfügen.
< Code beginnen >
Klasse ThermistorCelcius
{
AnalogPort = Null; die Hardware-Pin zugewiesen bekommt
ROhms = Null; Widerstände Widerstand in Ohm
RREF = Null; Thermistoren Widerstand bei 25C
Variablen, konstanten spezifisch für den Thermistor zu halten
für die Steinhart-Hart-Gleichung
A = Null;
B = Null;
C = Null;
D = Null;
Wert zu sagen, wenn der Thermistor-Seite von der
Thermistor/Widerstands-Spannungsteiler ist mit GND verbunden.
ThermToGND = Null;
Konstruktor)
Hafen / / pin Nummer Thermistor verbunden
ResistorOhms, / / Widerstand Wert in Ohm
ThermistorOhms, / / Thermistor Widerstand @ 25C in Ohm
ConstA, / / konstante zur Verfügung gestellt von Datenblatt
ConstB, / / konstante zur Verfügung gestellt von Datenblatt
ConstC, / / konstante zur Verfügung gestellt von Datenblatt
ConstD, / / konstante zur Verfügung gestellt von Datenblatt
ThermistorToGND) / / 1, wenn Thermistor Seite = GND
{
Der Konstruktor einer Klasse wird aufgerufen, wenn die Klasse ist
initiiert. Seine Variablen werden in die Klasse an diesem übergeben.
Zeit.
ROhms = ResistorOhms;
RREF = ThermistorOhms;
A = ConstA;
B = ConstB;
C = ConstC;
D = ConstD;
ThermToGND = ThermistorToGND;
Eine Methode um dieselbe Klasse verwenden zu können
unabhängig von Port.
Schalter (Hafen)
{
Fall 1:
Hardware.PIN1.configure(ANALOG_IN);
AnalogPort = hardware.pin1;
zu brechen;
Fall 2:
Hardware.PIN2.configure(ANALOG_IN);
AnalogPort = hardware.pin2;
zu brechen;
Fall 5:
Hardware.Pin5.configure(ANALOG_IN);
AnalogPort = hardware.pin5;
zu brechen;
Fall 7:
Hardware.pin7.configure(ANALOG_IN);
AnalogPort = hardware.pin7;
zu brechen;
Fall 8:
Hardware.Pin8.configure(ANALOG_IN);
AnalogPort = hardware.pin8;
zu brechen;
Fall 9:
Hardware.pin9.configure(ANALOG_IN);
AnalogPort = hardware.pin9;
zu brechen;
Standard:
Server.log ("ungültige Port angegeben.");
zu brechen;
}
}
Funktion readTemp()
{
erhalten Sie die aktuelle Spannung die Imp als Vref für verwendet die
Analog/digital-Wandlung
lokale Hwvolts = hardware.voltage();
Durchführen Sie ein Analog-digital-Wandlung und speichern Sie die 16
Bit-Wert
lokale Daten = analogPort.read();
Wenn (Daten == Null) / / wenn wir nicht alles bekommen
{
Server.log ("Read Failure"); Melden eines Fehlers
return false; und false zurückgeben
}
konvertieren Sie die Anzahl von ADC in eine Spannung
örtliche Netzspannung = Daten * (Hwvolts / 65535);
Je nachdem, wie Sie die 3.3V und GND verdrahtet auf der
Widerstand/Thermistor Spannungsteiler, wählen Sie die
entsprechende Formel zur Berechnung des Widerstands der
der Thermistor.
lokalen Ohm = Null;
Wenn (ThermToGND == 1)
mit Widerstand auf 3,3V und Thermistor auf GND verwendet
Ohm = ROhms/((hwvolts/voltage)-1);
anderes
mit Widerstand auf GND und Thermistor auf 3,3V verwendet
Ohm = ((ROhms * hwvolts)/Spannung)-ROhms;
Wir werden eine erweiterte Steinhart-Hart-Gleichung zu verwenden
berechnen Sie die Temperatur anhand der berechneten
Widerstand des Thermistors. Wir werden auch die
Umrechnungsfaktor von Kelvin in Celsius
lokale TempC = 1.0 / (A + B * math.log(ohms/Rref) +
C * math.pow(math.log(ohms/Rref), 2) +
D * math.pow(math.log(ohms/Rref), 3)) - 272.15;
TempC zurück; und die Rücklauftemperatur
}
}
< Code Ende >