Paso 9: crear la clase de sensor
Esta clase puede utilizarse para cualquiera de los termistores que tienen las cuatro constantes para su uso con la ecuación de Steinhart-Hart extendida de Vishay.
Nota sobre el código en este instructable. Le puse una etiqueta < código comience > y < código >. Debe copiar/pegar sólo las partes entre estas etiquetas y no las etiquetas ellos mismos.
< el comenzar del código >
clase ThermistorCelcius
{
analogPort = null; tiene asignado el pin de hardware
ROhms = null; Resistencia resistencias en ohmios
Rref = null; Resistencia de los termistores en 25 ° C
variables para mantener las constantes específicas para el termistor
para la ecuación de Steinhart-Hart
A = null;
B = null;
C = null;
D = null;
Valor para decir si el lado del termistor de la
divisor del voltaje/resistor termistor está conectado a GND
ThermToGND = null;
() constructor
puerto, / / pin número termistor conectado a
ResistorOhms, / / valor de la resistencia en ohmios
ThermistorOhms, / / resistencia del termistor a 25 º C en ohms
constA, / o la constante de la hoja de datos
constB, / o la constante de la hoja de datos
constC, / o la constante de la hoja de datos
constD, / o la constante de la hoja de datos
thermistorToGND) / / 1 si lado termistor = GND
{
El constructor de una clase se llama cuando la clase es
inició. Sus variables se pasan a la clase en este
tiempo.
ROhms = ResistorOhms;
Rref = ThermistorOhms;
A = constA;
B = constB;
C = constC;
D = constD;
ThermToGND = thermistorToGND;
Proporcionan un método para poder utilizar la misma clase
independientemente del puerto.
interruptor (puerto)
{
caso 1:
hardware.PIN1.Configure(ANALOG_IN);
analogPort = hardware.pin1;
rotura;
caso 2:
hardware.PIN2.Configure(ANALOG_IN);
analogPort = hardware.pin2;
rotura;
caso 5:
hardware.pin5.Configure(ANALOG_IN);
analogPort = hardware.pin5;
rotura;
caso 7:
hardware.pin7.Configure(ANALOG_IN);
analogPort = hardware.pin7;
rotura;
caso 8:
hardware.pin8.Configure(ANALOG_IN);
analogPort = hardware.pin8;
rotura;
caso 9:
hardware.Pin9.Configure(ANALOG_IN);
analogPort = hardware.pin9;
rotura;
por defecto:
Server.log ("válido port especificado.");
rotura;
}
}
función readTemp()
{
obtener el voltaje actual de la imp usa como Vref para el
análogo a la conversión digital
local hwvolts = hardware.voltage();
Realizar un análogo a la conversión digital y almacenar el 16
poco valor
datos = analogPort.read();
Si (datos == null) / / si no conseguimos nada,
{
Server.log ("falta leer"); Informe de un fracaso
devuelven el valor false; y devolver false
}
convertir al número de la ADC a un voltaje
voltaje local = datos * (hwvolts / 65535);
dependiendo de cómo usted atado con alambre los 3.3V y GND en el
Divisor de voltaje resistor/termistor, seleccione la
fórmula apropiada para calcular la resistencia de
el termistor.
locales ohmios = null;
Si (ThermToGND == 1)
utilizado con resistencia de 3, 3V y termistor en tierra
ohms = ROhms/((hwvolts/voltage)-1);
otra cosa
utilizado con resistencia en tierra y termistor en 3.3V
ohms = tensión de ((ROhms * hwvolts))-ROhms;
Vamos a utilizar una ecuación de Steinhart-Hart extendida a
calcular la temperatura basado en la calculado
resistencia del termistor. Te incluimos la
factor de conversión de Kelvin a Celsius
local 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;
volver tempC; y la temperatura
}
}
< final código >