スキップしてメイン コンテンツに移動

投稿

2月, 2021の投稿を表示しています

新AVRの内蔵温度センサを試す

 AVRにはADCの内部入力として温度センサが搭載されているものがある。シリコンダイオード方式ゆえに製造工程で特性がばらつくため、個体毎に面倒な校正作業が必要となっていた。 http://ww1.microchip.com/downloads/en/AppNotes/Atmel-8108-Calibration-of-the-AVRs-Internal-Temperature-Reference_ApplicationNote_AVR122.pdf  新しいmegaAVR-0やTinyAVR-1、AVR-DAはXMEGAの系譜なので、内蔵温度センサの校正係数があらかじめSignature ROW領域に記述されている。これを読みだしてキャリブレーションを行う手順がデータシートに記述されていたので試してみた。  Arduino Nano Everyで試せるサンプルスケッチ。    https://github.com/kentN/samplecodes/tree/main/Arduino/NANOEVERY-TEMPSENSE IDE付属のシリアルプロッタでモニタしてみると温度グラフが現れる。ホットエアでダイ温度が100℃になるほど炙ってしまったが、そのまま動作しつづけていた。 手元にあった二つのArduino Nano Everyはそれぞれ校正値を読み出すと次のようになっていた。 DEBUG: 305k, offset :-31 gain :142 DEBUG: 305k, offset :-6 gain :144  実機で比較テスト tinyPDUテスト基板  実際に温度を調節して試験してみよう。比較対象として、tinyPDUに接続してあるパルス温度センサLMT01の一つ(CH2)をQFNパッケージに張り付けた。  LMT01は高精度ADC内蔵、2端子カレントループ、温度データを約100ms毎にパルス数で出力するという面白いセンサ。-20度~90℃範囲で±0.5℃の測定精度とあるので、用途的には十分すぎる。(ただし割り込み管理が甘いとパルスカウントの取りこぼしで正確な温度を示さないことがある) テストプログラム。CH1、CH2はLMT01。CH2はMCUに張り付けている。  緑色はLMT01で、青緑が内蔵センサ出力。内蔵センサ出力は1℃刻みなので階段状に遷移していく