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値を出力します。
それをAIN6で読んで「基準値」とします。
そして、神様抵抗とサーミスタの間の電圧を
読んで抵抗比を得、サーミスタの抵抗を計算。
こんな手順でサーミスタの抵抗値から温度を計算を
します。
実際の回路はこれだけ。
ノイズ低減用のコンデンサ、スタンバイからの復帰時間
であまり大きくはできません。
でも、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に基準電圧を入れても、誤差が発生。
そこでと考えたのがこんな回路。
内蔵Vrefの1.024Vよりちょいとだけ低い
LDOレギュレータを付けて、神様抵抗とサーミスタを駆動。
神様抵抗の電圧ドロップを計って、サーミスタに流れる
電流を計算。
サーミスタ・GND間電圧からサーミスタの抵抗値を計算。
サーミスタの抵抗値から温度計算。
こんな具合でしょうか。
LDOレギュレータ、1.0V出力とか0.95V、0.9V出力のが
手に入ります。
Vref=1.024Vなんですかが、誤差を考えると1.0Vより
低いのが必要。
| 固定リンク
「温度測定」カテゴリの記事
- ATtiny1614で屋根裏収納スペースの温度を記録する #4(2026.08.08)
- ATtiny1614で屋根裏収納スペースの温度を記録する #3(2026.07.29)
- サーミスタの抵抗を模倣したい 定抵抗回路(2026.07.10)
- tinyAVRマイコン 内蔵ペリフェラルもう一歩やなぁ(2026.07.01)
- ATtiny1614で屋根裏収納スペースの温度を記録する #2(2026.06.12)
「ATtiny」カテゴリの記事
- ATtiny1614で屋根裏収納スペースの温度を記録する #4(2026.08.08)
- ATtiny1614で屋根裏収納スペースの温度を記録する #3(2026.07.29)
- tinyAVRマイコン 内蔵ペリフェラルもう一歩やなぁ(2026.07.01)
- 電源周波数の変動はひょっとしてレコード再生に影響が出る(2026.06.28)
- ATtiny1614で屋根裏収納スペースの温度を記録する #2(2026.06.12)


コメント