2024/10/27(Sun) [長年日記]
[hard] Autogauge水温センサーの温度係数
本物のAutogauge製かどうか不明だが、Amazonで売られているオートゲージ パーツ 水温計 油温計 交換センサー 348 430 458 548 512 用 【208OWTS】を購入して抵抗係数を求めてみた。参考にしたのは、サーミスタの温度-抵抗変換式。もとは、秋月電子のページにあったものを掲載しているらしいが。
℃での抵抗値がのサーミスタにおける、温度℃の抵抗値は、以下で算出できる。
℃のときの電圧が実測だったので、あと数点の実測値をもとに、連立方程式として係数、を求めた。そして、出てきたarduino版の計算プログラムが以下になる。ADCとして、MCP3004を使って、ch0に入力している。
#include "MCP_ADC.h" float Vref = 3.29476 ; int THERM_B = 3395; int THERM_R1 = 2000; int THERM_R0 = 10800; float THERM_T0 = 273.15 + 25; float MATH_PI = 3.141; MCP3004 mcp1; SPISettings settings( 1000000 , MSBFIRST , SPI_MODE0 ); void setup() { Serial.begin(115200); SPI.begin(); mcp1.begin(10); } void loop(){ uint16_t val = mcp1.read(0); float volts0 = val * Vref / 1024; float rr1 = (5.0 / volts0 - 1.0) * (float)THERM_R0; float t = 1.0 / (log( rr1/(float)THERM_R0 ) / (float)THERM_B + 1.0/(float)THERM_T0 ); float temp = t - 273.15; Serial.println("volts0 = " + String(volts0, 3) + " V"); Serial.println("rr1 " + String(rr1, 3) + " C"); Serial.println("t " + String(t, 3) + " C"); Serial.println("CH0 " + String(temp, 3) + " C"); Serial.println(); delay(1000); }