« ペコちゃんのお散歩用点滅ライト | トップページ | アイリスオーヤマ BIGCAPA単3 BCR-R3MH 2000サイクル目 »

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より
低いのが必要。


|

« ペコちゃんのお散歩用点滅ライト | トップページ | アイリスオーヤマ BIGCAPA単3 BCR-R3MH 2000サイクル目 »

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

ATtiny」カテゴリの記事

コメント

コメントを書く



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




« ペコちゃんのお散歩用点滅ライト | トップページ | アイリスオーヤマ BIGCAPA単3 BCR-R3MH 2000サイクル目 »