« SOT-23-3パッケージの対向ダイオードをピンヘッダに | トップページ | マイコン型導通チェッカーあとちょっとで終息 »

2026年5月14日 (木)

トラ技2026年6月号 サーミスタの温度測定で

トランジスタ技術2026年6月号 の特集記事第1章
 MATLAB解析IoTクラウド!暑さ指数測定器の製作
 ラズパイPico 2 Wで屋外ワイヤレス百葉箱!
 おすすめクラウドThingSpeak!

この記事を見ていて・・・なぜそう書くのか?
という疑問。
大もとはラズパイPico2Wを使った温度測定回路。

電源側にサーミスタを入れて抵抗値を計り、
温度計算しています。

T10_20260514091201

MycroPythoでプログラムされているんですが、
 ・ゼロ除算はダメ
 ・ゼロの対数もダメ
なのはいっしょ。

温度を求めているところ、
 「スタインハート・ハート(Steinhart-Hart)方程式」
を使っているとのこと。

こんなプログラムになってます。

T11a_20260514091201

(a) まず、1/1023が出てきます。
       …なんども言ってるんですがねぇ
  ここで得られるvoltage値、サーミスタが
  オープンだと0.0V。 短絡だと電源電圧の3.3V。

(b) サーミスタの抵抗値を算出してる式。
  短絡=3.3VだとゼロΩ。
  オープンだと「ゼロ除算!」 …あかんがな

(c) 対数変換
  短絡=ゼロΩでは未定義。 …あかんがな

簡単にはA/D値としてゼロとフルスケールをチェック
するだけ。
短絡とオープンを検出したら異常表示しても良いし、
オープン:最低温度  短絡:最高温度
と処理してもかまわないでしょ。
ゼロ除算と関数の未定義処理だけは避けるべきです。
こんなプログラムを見せられるのはイヤです。


サーミスタでの温度測定、過去にもウダウダ言ってます。
2024年5月13日:サーミスタでの温度測定、「inf」の出現に耐えられるか?
2024年3月30日:ラズピコだと1/65535が出現
2023年3月21日:A/Dコンバータでサーミスタの抵抗値を読む サーミスタをつなぐ場所は?
2023年3月23日:Arduino サーミスタを使った温度測定で 【ゼロ除算問題】

サーミスタじゃないけど、こんなバグにも遭遇。
2021年12月7日:湿度センサー「DHT11」がやってきた・・・けど!?

他人が作ったもの、うかつに信じゃちゃダメよという教訓。
教科書的書籍でもスカタンがあるんで。

|

« SOT-23-3パッケージの対向ダイオードをピンヘッダに | トップページ | マイコン型導通チェッカーあとちょっとで終息 »

温度測定」カテゴリの記事

1023 vs 1024」カテゴリの記事

コメント

サーミスタがつながっている限り、異常事態にはなりません。
でもねぇ。記事として発表するなら、そこらへんも考えておいてほしいわけで。
AD値の範囲をチェックして、最高温度か最低温度に
張り付けてしまうというのが簡単でしょう。
サーミスタ異常のアラームも欲しい。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2026年5月15日 (金) 08時30分

コメントを書く



(ウェブ上には掲載しません)




« SOT-23-3パッケージの対向ダイオードをピンヘッダに | トップページ | マイコン型導通チェッカーあとちょっとで終息 »