トップ «前の日記(2024/10/26(Sat)) 最新 次の日記(2024/11/03(Sun))» RSS

titletitle


2024/10/27(Sun) [長年日記]

uk-icon [hard] Autogauge水温センサーの温度係数

本物のAutogauge製かどうか不明だが、Amazonで売られているオートゲージ パーツ 水温計 油温計 交換センサー 348 430 458 548 512 用 【208OWTS】を購入して抵抗係数を求めてみた。参考にしたのは、サーミスタの温度-抵抗変換式。もとは、秋月電子のページにあったものを掲載しているらしいが。

T0℃での抵抗値がR0Ωのサーミスタにおける、温度T℃の抵抗値は、以下で算出できる。

R = R 0 × e ( B ( 1 T + 273 - 1 T 0 - 273 ) )

T025℃のときの電圧Vrefが実測3.29486だったので、あと数点の実測値をもとに、連立方程式として係数BRを求めた。そして、出てきた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);
}