温度測定

2026年7月10日 (金)

サーミスタの抵抗を模倣したい 定抵抗回路

温度をサーミスタで測るとき、「神様抵抗」を使ってGND側に
サーミスタを入れるとこんな回路。
Tt1_20260710104901

そして、回路や制御ソフトの検証には単純な「抵抗」を
使います。
サーミスタのデータシートで示される温度と抵抗値、
例えば「103JT」だとこんな表。
Tt3_20260710105001

この代表的なポイントの抵抗を基板に並べたこんな
ジグを作っています。
Th31

抵抗値の微妙なところはポテンショで調整。

しかし・・・・ほんとなら「定抵抗回路」を
作って、マイコンで「何Ω」と設定したいところ。
  あるいは何度の抵抗値っと
しかし、可変できる定抵抗回路はなかなか難しい。

・電圧が上がればそれに比例して電流を増やす。
 これは定電流回路の応用。

抵抗値をデジタル的に変更しようとすると、こんな具合に
直流の可変ゲインアンプが必要に。
Tt2_20260710105201

サーミスタの抵抗を模倣しようとすると
 500Ω~100kΩ
あたりで200倍のゲインを制御しなくちゃな
りません。
帯域はいらんけど直流アンプになるんで、オフセットやら
が難しい。
なにか良いアイデアありませんかね?

※関連
2019年5月10日:ディケード(抵抗)ボックス
  生の抵抗値が反映される。
  しかし、リレーで切り替えようとするとたいそう。
2021年8月11日:サーミスタ温度計、何ビットのA/Dコンバータがいるか?
2026年7月1日:tinyAVRマイコン 内蔵ペリフェラルもう一歩やなぁ


※定抵抗回路
直流の可変ゲインアンプが使えないときは
こんな具合にVt電圧を見ながら定電流回路に
流す電流を制御するという方法になるでしょか。
Tt31_20260711222901
・あるいはこんな回路
Th33
デジタルPOTを1/10にしたらRf抵抗の10倍の抵抗値が
Vt端子に出現。
これだと目標値に対する制御は不要。
デジタルPOTを設定するだけ。
しかし、大抵抗を模倣しようとすると、Vf電圧が低く
なってしまいたいへんかと。
Rfを目標抵抗値の範囲を見て切り替えるのもあり。

デジタルPOTってどのくらいの分解能のがあるんでしょ。


※Rfを切り替えて抵抗のレンジを広げる方法
Th34
マルチプレクサ(SW)を二つ使うと、内部抵抗による
誤差が避けられます。

| | コメント (4)

2026年7月 1日 (水)

tinyAVRマイコン 内蔵ペリフェラルもう一歩やなぁ

2026年6月12日:ATtiny1614で屋根裏収納スペースの温度を記録する #2
では、外付けの温度センサは使わずチップに備えられた
温度読み取り機能を使いました。

出てくるのは1度単位のケルビン温度。
「-273」すればセ氏温度になるのですが、分解能は「1℃」。

もうちょいどうにかならないのか(0.1℃を読みたい)と
考えてみました。

0.1℃を読もうとすると10bitのA/Dではチカラ不足で
12bitのA/Dが欲しくなります。
 ・2022年9月29日:103JTサーミスタの自己発熱。 5Vで10kΩはちょっとなぁ

まず・・・3系統あるtinyAVR。
このピン配列から内蔵ペリフェラルを見てみます。
   ↓
2025年7月23日:ATtiny402 備忘録

それぞれの違いをピックアップすると。

・ADCの精度
  tinyAVR0 10bit
  tinyAVR1 10bit
  tinyAVR2 12bit (差動でアンプ付)
・DAC出力
  tinyAVR0 ×
  tinyAVR1 ○ 8bit
  tinyAVR2 ×
・外部基準電圧入力(VREFA)
  tinyAVR0 ×
  tinyAVR1 ○
  tinyAVR2 ○

サーミスタの抵抗値を計ろうとすると、Vref電圧を
外に出せる機能があるとありがたい。
でも、みんな出力できません。
  Arduino UNO R3のATmega328PではVREF端子に
  パスコンを外付けできるという機能のおか
  げでVREFが利用できました。

で、利用できそうなのがtinyAVR1のDA出力です。

こんな具合にDACでVref値を出力します。
Th52
それをAIN6で読んで「基準値」とします。
そして、神様抵抗とサーミスタの間の電圧を
読んで抵抗比を得、サーミスタの抵抗を計算。
こんな手順でサーミスタの抵抗値から温度を計算を
します。
実際の回路はこれだけ。
Th51
ノイズ低減用のコンデンサ、スタンバイからの復帰時間
であまり大きくはできません。

でも、ADの分解能が10bitだし、温度センサとして
サーミスタがいるしで、0.1℃を目標にするメリットを
感じません。
12bitなら「エエんとちゃう」なんですが。

tinyAVR2系(ADCが12bit)にDAC出力が欲しいゾ。
それに12bitタイマTCDも。
  TCDはいろんなパルスが出せる

※追記
12bitのADCが使えるtinyAVR2系の場合、サーミスタ抵抗の
測定でちょっと困ったことがおきます。
・Vref値を外に出せない。
・内蔵Vref値、1.1Vじゃなく1.024VとAVR0やAVR1より
 ちょっと低い。
・AD段の前に可変ゲイン・アンプが入っているので
 Vref値に対しオフセットが生じる。
・このため、VREFAに基準電圧を入れても、誤差が発生。

そこでと考えたのがこんな回路。
Th55
内蔵Vrefの1.024Vよりちょいとだけ低い
LDOレギュレータを付けて、神様抵抗とサーミスタを駆動。
神様抵抗の電圧ドロップを計って、サーミスタに流れる
電流を計算。
サーミスタ・GND間電圧からサーミスタの抵抗値を計算。
サーミスタの抵抗値から温度計算。
こんな具合でしょうか。

LDOレギュレータ、1.0V出力とか0.95V、0.9V出力のが
手に入ります。
Vref=1.024Vなんですかが、誤差を考えると1.0Vより
低いのが必要。


| | コメント (0)

2026年6月12日 (金)

ATtiny1614で屋根裏収納スペースの温度を記録する #2

2026年6月8日:ATtiny1614で屋根裏収納スペースの温度を記録する
この続き。 回路はこのように。
Ond12

スイッチ操作に対しての反応を示すため圧電サウンダを
追加しました。
  モールスを出せるようにしてあります。
でも、今は単純音のみ。

・電池装着起動「ピピ ピピ ピピ ピピ」。("IIII")
・スイッチ短押し「ピ」でデータ送出。("E")
・送出完了で「ピピ」。("I")
・スイッチ長押し記録開始で「ピピピ ピピピ」。("SS")
・10秒長押しで全データ送出「ピーピーピーピーピー」。("0")

そして、ちょっとでも消費電流を減らそうと、クロックは2MHzに。
スタンバイ時の電流は1.0μA前後。
これがず~っと続きます。
  この電流はクロック周波数を変えても変わりません。
  32.768kHzの水晶発振回路がタイマを刻んでます。

そして、サンプル周期で割り込みがかかりスタンバイから
復帰します。
  A/D値取得
  セ氏温度への変換計算
  シリアル出力
  EEPROMへのデータ保存
  再びsleepに
この処理におよそ25ms。

この間の電源電流がクロック周波数で変わります。
5MHzなら2mAほど。
それを2MHzまで落とすと1mA近くまで減ります。

データのサンプリング周期を1秒にして試しに記録
したのがこのグラフ。
Tt1_20260612094801

ヒートガンで加熱して最大70℃ほどに。
ちょっと冷えてからサンハヤトの「QREI」で急速冷却。
-30℃あたりまで。
霜が付きます。

実際の運用では5分間隔(1日288データ)あたりでしょう。
EEPROM容量による記録データ数65536÷288で227日。
これで半年以上ログできます。

 

| | コメント (0)

2026年6月 8日 (月)

ATtiny1614で屋根裏収納スペースの温度を記録する

3月に竣工した地域の会館。
 (50年使った旧会館から建て替え)

K23_20260608100201

屋根裏に収納スペースが設けられています。
しかし・・・モノを置いておくには温度が上がり
過ぎるんではないかという心配が。

そこで、長期間の温度を記録してくれる仕掛けを
考えてみました。
ネットを探しますとさまざまな記録機能付温度計
が出ています。
温度だけじゃなく湿度も測れるものもあります。
そして、WifiやBluetoothを使って通信できる
ものなどたくさん。
でも・・・せっかくだから、温度を測って
記録するだけというシンプルな回路を作って
みようと計画中。

使用マイコンは先日から遊んでいるATtiny1614。
それに128kバイトのEEPROMをくっつけて温度を
記録します。
外付けの温度センサは使わずチップの温度を読みます。
外部とのやりとりはデータ吸い出し時のシリアル通信だけ。

Ond11
屋根裏スペースに放り上げて、半年ほど放置。
  (屋根裏には電源が来てません)
適当な時期に引っ張り下ろして、ログデータを
吸い出し。
こんなのでどうだ!っと試作を始めてます。

1分ごとの記録なら45日ほど。
5分なら半年以上の温度変化を残せます。


で、TinyAVR1マイコンの「Tips & Tricks

◆PB2とPB3に32.768kHz水晶をつないだら
 TXDとRXが使えなくなる。どうしよう?

代替ポート(PA1とPA2)を使う。
レジスタを直接操作しなくても、
  Serial.swap(1);    // 代替ポート指定
  Serial.begin(9600);  // TXD:PA1、RXD:PA2
で、シリアル入出力できる。

◆チップの温度を読むにはどうすれば?

ADコンバータの入力チャンネルを
「TEMPSENSE」に。
そのあと、10bitのAD値をごそごそ。
てな操作になるのだが「readTemp();」関数で
1度単位のケルビン温度が出てくる。
この値を-273すればセ氏温度。
 (megaTinyCore.hのインクルードがいるかも)

| | コメント (0)

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」がやってきた・・・けど!?

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

| | コメント (1)

2024年5月24日 (金)

コテ先温度を読みたいゾ う~む。

コテ先温度を読めるかとアマゾンで買った「熱電対」。
Kk10
  ・Tenweet HAKKO 191-212はんだごてチップ温度計用
   温度センサーライン
   10個の鉛フリー温度センサーライン
10個で494円と格安。

コテ先を当てられるよう基板に固定して補償電線で
温度計と接続。
Kk13

しかし・・・
加熱したコテを当てたときの安定性が良くありません。
コテを当てる場所により大きく変化します。
MAXホールドの機能があり、ピーク温度は分かるので
すが、それもほんとなの?っともうひとつ。

コテ先をクリーニングしたり、ハンダを盛ったりして
も、もうひとつ「これがコテ先温度だ」という感触が
得られないないのです。

それなりに温度は出ます。
常温域では3本足熱電対と黄色線の熱電対との
温度差は0.4℃。
Kk14

この二つの熱電対を段ボール箱に入れ、ヒートガンで加熱。
160℃まで「アツアツ」にした時の温度差は5℃くらい。
  反応が良いのでヒートガン口先から出るホットエアーの
  当たり具合による変動が大。
大きな差はありませんでした。

3本足の熱電対、写真のようにプラス側とマイナス側の
熱電線をよじって、中央のリングで押さえつけている
構造です。
Kk11_20240524135601

溶接はされていないのでしょう。
Kk12

ここでの接触が不安定だと、後方のよじって接触させた
部分が感熱ポイントになってしまいます。

コテ先にハンダの球を作り、それを押さえのリング全体に
乗せると安定するような感じです。
黄色線の熱電対先端をハンダ球に入れた時と似たような
温度が出ます。

ちなみに・・・
熱電対の自作方法に関しては、この記事が秀逸です。

Kk21_20240524135001
  ・トランジスタ技術 2013年4月号
  ・トランジスタ技術 2013年5月号

記事のとっかかりがpdfであります。
https://toragi.cqpub.co.jp/Portals/0/backnumber/2013/04/p141.pdf
https://toragi.cqpub.co.jp/Portals/0/backnumber/2013/05/p160.pdf

この3本足の熱電対を買ってごそごそするより、普通に先端が
溶接された熱電対をコテ先のハンダ球に入れる方が安定して
計れるのではないかと思います。
どうでしょか。。。

トランス型ACアダプタ改造のオートトランスで
電圧アップしたときの温度上昇、こんな感じでした。

HAKKO DASH FX-650(15W)
    100V 113V
-----------
3本足 340℃ 382℃
 黄色 347℃ 385℃

40℃くらいアップしてるようです。

| | コメント (3)

2024年5月21日 (火)

ハンディ熱電温度計 AD-5602

手元にある熱電温度計が「A&D」の「AD-5602」。
N11_20240521094801
2007年に買ってました。
熱電対が必要な高い温度の測定って、ほとんどありません。
今回の「コテ先温度を知りたい」がひさしぶりかと。
あと使うのは、熱電対がらみの修理案件。
  ・2019年6月25日:修理:温調機の熱電対
  ・2023年11月5日:今日の修理:熱電温度計

引っ張り出してきたついでに、中を見てみました。
N12_20240521094801

シールド板が光っています。
ネジ止めで固定されているだけでしたので外して
基板を拝んでみました。
N13_20240521094901

4066や4053のアナログ・マルチプレクサが
並んでいます。
  4つある4013はDフリップフロップ。
  何をしているんだろ。
もっと純アナログICが入っているかと思っていた
のですが、
  オペアンプ:LM324、TLC27M2C
  基準電圧IC:LM385Z-1.2
だけ。
熱電対専用のアンプは使われていません。
  おっと。 裏を見てなかったゾ!
  裏(ボタン、表示器側)はパターンだけでした。

そして、調整用の小型半固定ボリュームが5つ。
パネルに出ているVR2とVR4はゼロ点オフセット調整用です。

 

| | コメント (0)

2024年5月13日 (月)

サーミスタでの温度測定、「inf」の出現に耐えられるか?

2023年3月21日:A/Dコンバータでサーミスタの抵抗値を読む サーミスタをつなぐ場所は?
で問題にしましたが、A/D入力するサーミスタをつなぐ位置が重要です。
A02_20230321164901
サーミスタを電源側につなぐと、
  温度の上昇でサーミスタの抵抗値が減少
  それに連れてA/D値が上昇
となり、温度が上がるとA/D値も上がり、感覚的に
合うのでしょう。

・A/D値からサーミスタの抵抗値の計算式
A3_20230321165401

このサンプルとして
  ・おもろ家さんのArduino 入門 Lesson 18 【サーミスタ編】
のスケッチ使わせてもらいます。
おもろ家さんの「つなぎ」でもサーミスタは電源側。
基準抵抗がGND側です。

この時の問題点をお復習い。
  (a)サーミスタの接続線が短絡したら
  (b)サーミスタが外れてオープンになったら

まず(a)。
A/D値はフルスケールの「1023」に。
その結果、サーミスタの抵抗値は
  (1024÷1023 - 1) ×10kΩ
となり、約9.8Ω
B定数による温度計算に進むと352℃という
値が出てきます。

次に(b)
A/D値は「ゼロ」になり、サーミスタの抵抗値計算で
ゼロ除算」が生じます。
その結果、抵抗値は「無限大」。
続く、温度計算では「ケルビン温度」の「-273.15℃」が
出てきます。
  ※Arduino UNOの環境ではゼロ除算では
   止まらず、とりあえず計算は進みます。

実際の液晶表示を見てみましょう。

(a)のサーミスタ短絡
T10_20240513111101

(b)のサーミスタ断線
T11_20240513111201

抵抗値の箇所に「inf」という見慣れない「値」が出現します。
  ※inf=無限大
   print()やdtostrf()に食わせると「inf」
   という「文字」が出てきます。
   lround()で整数変換すると0x80000000
   (long値のマイナス目一杯)になって
   しまいます。

サーミスタで温度制御していたら、
  (1)いつまでたってもオンしない (a)のとき
  (2)いつまでたってもオフしない (b)のとき
状態が出現します。

(1)は、放っておいてもとりあえず周囲温度に馴染む
でしょうが(2)の状態が加熱しっぱなしとなり危険です。

何らかの警報的処置(表示だけでも)が必要に
なるのがわかっていただけるかと。

トランジスタ技術2024年6月号トラ技Jr.コーナ
掲載してもらった4チャンネル温度計の製作 では、
温度・抵抗値テーブルから最高値(温度低)と最低値
(温度高)を拾ってきて、値として規制するように
しました。
  ※プログラムエリアがあんましないので
   手抜き。
オープンだと「-20.0℃」、短絡だと「120.0℃」を
出力します。

| | コメント (0)

2023年11月 5日 (日)

今日の修理:熱電温度計

ガレージ仲間のFJKW君からのHELP。
 『金型の表面温度を測るのに熱電温度計が2つ
  あるんやけど、片っぽの調子が悪い。
  安いモンやし、新しいの買おうかと思ってる
  んやけど・・・』
という相談。
  「原因が分かれば直せるやろけど・・・」
生半可な私の返事。

ということで、修理品がやってきました。
2台は同メーカー品ですが、型番が違いました。
表面温度を測るためのプローブ(熱電対)が
付属しています。
  ※こっちが高そうな

熱電対の先端部↓
Kk24

調子の悪い方のケースを開けてみると・・・
ぱっと見は特に異常は見られません。
でも、4つある半固定抵抗に触れると(絶縁物で)表示が
パラパラ変動。
どうやら接触不良を起こしているようです。
アナログ的な調整をしているのでしょうから、
再調整の手順が分からないので、グルグル回して元に
戻すということはできません。
幸い、接触子が見えてますので、ここをピンセットの先で
つまみ上げる感じで「大阪魂:パーツクリーナー」を
噴射。
Kk21
Kk23

抵抗体と接触子の間に紙でも入れてぬぐいたいところ
ですが、調整角度が動くとダメですんで、わずかに
持ち上げるだけに。

作業後、2つのセンサーを段ボール箱に入れて、ヒートガン
で加熱。
130℃~140℃くらいまで上げても、似たような温度値が出て
いたので、作業完了としました。

で、不調とは関係の無いところで面白いものを発見。
Kk22
リード線がブラブラしないよう、液晶のピン間に
通してありました。
これを見つけた時、
  「わざと通さないと勝手に通るわけはないはなぁ」
っと。


 

| | コメント (3)

2023年10月10日 (火)

120W電子負荷 予備実験#2 冷やすのはファンだ!

2023年10月8日:12V・10A:120W電子負荷 予備実験の続き。
およその動きが見えてきたので、テストしたい
スイッチング電源につないでみました。

ところが・・・件の電源から12Vで10Aが出てくれません。
8.2Aくらいで保護がかかってしまい電圧が落ちるのです。
ということはこの電源のスペックは「12V・100W」のようです。
   ※中華のスペック表記、さすがです。

気を取り直して、温度を測れるようにしました。
使ったのはフィルムではさみ込まれた「103JT」サーミスタ。
応答性が良いのです。

写真のように4点の温度を測りました。

Tt11_20231010121501
Tt12_20231010121501

・TR8の表面温度
  サーミスタのフイルムをTR表面にくっつくよう
  圧着端子でおさえました。
・TR7の表面温度
  圧着端子の円筒圧着部にサーミスタを挿入して
  シリコンゴムで固定。
  これをTRにネジ止めします。
・ヒートシンク表面温度。
  TR7とTR8の間のネジ穴に、同じように作った
  サーミスタを固定。
・基準抵抗 0.1Ω 50W
  抵抗のネジ止め固定足に。

左のはサーミスタをシリコンゴムで圧着端子の円筒部
に固定。
右は直に押さえ込み。
Tt13

通電後、ヒートシンク全体が温まってきます。
10分ほど経過でTR8の測定温度が70℃を突破。
まだまだ上昇しそうです。
  この結果からファン無しという目論見は
  あきらめました。
Cap010_20231010121701

そこでヒートシンクの上にファンを乗せて冷やして
みました。

ファンを回すとヒートシンクが徐々に冷えて、全体
の温度が30℃ほど低下。
数分で安定しました。

Tt14

上にファンを置いて通風。
Tt15

※記された定格10Aを出力できなかった中華製の
 12V出力スイッチング電源
Tt21
   とりあえず100Wはクリア

| | コメント (1)