Étape 9: créer la classe de capteur
Cette classe peut être utilisée pour toute valeur de la plage de Vishay de thermistances ayant les quatre constantes à utiliser avec l’équation étendue de Steinhart-Hart.
Notez le code dans ce instructable. J’ai mis une balise < code Commencez > et < code >. Vous devriez copier/coller uniquement les parties entre ces balises et pas les balises elles-mêmes.
< code Commencez >
classe ThermistorCelcius
{
analogPort = null ; est affectée à la broche matériel
ROhms = null ; Résistance de la résistance en ohms
Rref = null ; Résistance de thermistances à 25 ° C
variables pour détenir l’une des constantes spécifiques à la thermistance
pour l’équation de Steinhart-Hart
A = null ;
B = null ;
C = null ;
D = null ;
Valeur à dire si le côté de la thermistance de la
thermistance/résistance diviseur de tension est connectée à la broche GND
ThermToGND = null ;
constructeur)
port, / / pin numéro thermistance connectée à
ResistorOhms, / / valeur de la résistance en ohms
ThermistorOhms, / / résistance de la thermistance à 25C en ohms
constA, / / constante provenant de la feuille de données
constB, / / constante provenant de la feuille de données
constC, / / constante provenant de la feuille de données
constD, / / constante provenant de la feuille de données
thermistorToGND) / / 1 si côté thermistance = GND
{
Le constructeur d’une classe est appelé lorsque la classe est
initiée. Ses variables sont passés à la classe à ce
temps.
ROhms = ResistorOhms ;
Rref = ThermistorOhms ;
A = constA ;
B = constB ;
C = constC ;
D = constD ;
ThermToGND = thermistorToGND ;
Fournir une méthode pour pouvoir utiliser la même classe
quel que soit le port.
commutateur (port)
{
cas 1 :
Hardware.PIN1.configure(ANALOG_IN) ;
analogPort = hardware.pin1 ;
rupture ;
cas 2 :
Hardware.PIN2.configure(ANALOG_IN) ;
analogPort = hardware.pin2 ;
rupture ;
cas no 5 :
Hardware.pin5.configure(ANALOG_IN) ;
analogPort = hardware.pin5 ;
rupture ;
cas 7 :
Hardware.PIN7.configure(ANALOG_IN) ;
analogPort = hardware.pin7 ;
rupture ;
cas 8 :
Hardware.PIN8.configure(ANALOG_IN) ;
analogPort = hardware.pin8 ;
rupture ;
cas 9 :
Hardware.PIN9.configure(ANALOG_IN) ;
analogPort = hardware.pin9 ;
rupture ;
par défaut :
Server.log ("port non valide.") ;
rupture ;
}
}
fonction readTemp()
{
obtenir la tension actuelle à l’imp utilise comme Vref pour la
conversion numérique analogique
local hwvolts = hardware.voltage() ;
Effectuer une conversion numérique analogique et stocker le 16
valeur de bit
données locales = analogPort.read() ;
Si (données == null) / / si nous n’avons pas n’importe quoi,
{
Server.log ("Read failure") ; signaler un manquement
retourne la valeur false ; et retourner false
}
convertit le nombre de l’ADC en une tension
tension locale = données * (hwvolts / 65535) ;
selon comment vous câblé le 3.3V et GND sur le
Diviseur de tension résistance/thermistance, sélectionnez le
formule appropriée pour calculer la résistance des
la thermistance.
locales ohms = null ;
Si (ThermToGND == 1)
utilisé avec la résistance sur 3.3V et thermistance sur GND
ohms = ROhms/((hwvolts/voltage)-1) ;
d’autre
utilisé avec résistance sur GND et thermistance sur 3.3V
ohms = ((ROhms * hwvolts)/tension)-ROhms ;
Nous allons utiliser une équation de Steinhart-Hart étendue à
calculer la température basée sur le calcul
résistance de la thermistance. Nous allons inclure la
facteur de conversion de Kelvin en Celsius
local NC = 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 ;
retour NC ; et la température de retour
}
}
fin de < code >