sample_grove_TemperatureSensorV1.2 - gfd-dennou-club/mrubyc-esp32 GitHub Wiki

https://wiki.seeedstudio.com/ja/Grove-Temperature_Sensor_V1.2/

特徴

  • ADC(アナログ-デジタル変換)機能を使用して温度を読み取る
  • 内部的には NTCサーミスタ (温度によって抵抗値が変化する素子) が使われている.
  • サーミスタの抵抗値から温度を計算する
  • 精度はそこそこ.± 1.5 度程度.

サンプルプログラム

VCC = 3.3  # 電源電圧
B = 3975.0 # サーミスタのB定数

sensor = ADC.new(36)

loop do
  v_out = sensor.read.to_f # 電圧を直接取得

  if v_out > 0 && v_out < VCC
    # 1. 電圧からサーミスタの抵抗値を計算
    # 10kΩの分圧回路: R = 10000 * (Vcc / Vout - 1)
    resistance = 10000.0 * (VCC / v_out - 1.0)

    # 2. 抵抗値から温度(摂氏)を計算
    temperature = 1.0 / (Math.log(resistance / 10000.0) / B + 1.0 / 298.15) - 273.15

    # 出力
    puts "Voltage: #{v_out} V, Temperature: #{temperature} C"
  else
    puts "Invalid voltage: #{v_out}V. Check connection or VCC setting."
  end

  sleep 1
end