2021/02/01

新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℃刻みなので階段状に遷移していく。
 庫内が冷え切る前に冷却を停止し、庫内に置いた5Wのヒーターと、小さな空冷ファンを作動させながら様子を見た。 空気による対流を作っているし、恒温動作はしていないので熱容量の差がオフセットや追従速度の変化として出ている。
 この温度範囲では温度変化の傾向はよく一致した。 基板温度を知りたい分には何の問題もないだろう。

その他

 新しいAVRのSIGROWは、XMEGAでいうProduction Signature ROW領域。XMEGAのものと比較するとシンプルに整理されているが、10バイトのシリアル番号(ユニークID)が取得できるので、いろいろと使い道が考えられる。

2021/01/24

新しいAVRのメモ(2020~)

新AVRのラインナップが増えたので整理した。(2021年更新)

 現時点でラインナップに上がっている新しいAVRのシリーズの周辺機能を、旧来のものと比較してみると次のようになる。(TinyAVR-2はこれを書いていた2月時点ではまだ評価ボードの出荷のみだった) 


AVR-DA/DB TinyAVR-2 共通項

・12ビットADCを内蔵した
・Vref電圧が使いやすくなった(ADCのビット数に合わせた値に)
・バス数の増加


TinyAVR2

・USARTが2chとなった
・プログラマブルゲインアンプ(PGA)を内蔵。
・DACは外部出力が削られた(内部ではADCやアンプに使える)

AVR-DA
・全電圧範囲で24MHz駆動できる
・10bitDAC搭載

AVR-DB

・DAの特徴に加えアナログ機能へ特化。OPAを3つ内蔵 ただし外部DAC出力とタッチ検出機能は削除
・主クロックに外付け水晶が使える(XOSCHF)
・ポートCのI/O電源電圧は独立して設定できる(双方向レベルシフトできる)

 新シリーズはどれも、アナログ機能の高精度化が施された。もともとXMEGAは12bit SAR ADCだったけども、レジスタ構成は結構違うし、Vrefなどの構成を見るとPICへ寄ってきているように見える。パッケージはDIPまであるので入門もしやすい。

 TinyAVR-2は3㎜角のパッケージでもUARTが2ch使えて、12bitADCが載っている。Tinyと名がつくがCPU仕様は乗算器含めて共通なので、メモリとROM容量以外の処理能力はmegaAVRと一緒だ。

 AVR-DA/DBはmegaAVR-0の上位互換となる。ピン互換もあり、ペリフェラル/ROM/RAMは増加し、64ピンパッケージが用意されている。 一番は内蔵オシレータへ手が加わり、電圧を気にせず最大周波数で動かせるようになったこと。(XMEGAでも最大クロック時には2.7Vが下限だった) ※ただし、DAはDBと違ってXOSCHFは無い。

 トラ技2021年4月号によると、コア部はレギュレータで別電圧とのこと。今までのシリーズとはコア設計が変わっているようだ。

 5V単電源でも動作し、集積度が低く頑丈なMCUが必要な領域というのは存在する。
ここまでくるとDMAを駆使して多チャンネルのバス通信処理をオフロードさせたくなってくるけど、今ならXMEGAの立ち位置をカバーしたSAMシリーズが第一候補になるだろう。 

AVR-DD(2021年追加)
TinyAVRサイズのAVR-DAのようだ。最大RAM/ROMサイズは8kB/64kBとなっている。

2021/01/20

電源管理モジュールの製作

2021年が始まった。去年も仕事はあったけれど、納品先に実際に出向いたのは一度だけだった。 日常がじわじわ侵食されていく中、今年はどうなることだろう。

  そういう状況下では、実験装置の構成を、どこでも誰でもできるようにしておくという作業がたくさん出てくる。 最小限の装置でPC単体での遠隔開発が行えるような手段。似たようなものはお仕事でもワンオフで何度か作ってきて、今までも役立ってくれている。ということで昨年は仕事の合間に組み込み部品としての試作をいろいろ行っていた。

 実際のところ、単体ではマイコン付きFETとシャントモニタでしかない。最近遊んでいるTinyAVR-0をMCUとして載せている。

機能としては以下のとおり。

・電源ONOFF制御

・INA226による0.5mA単位 ~4A程度までの電流測定、アラート通知

・電圧(スイッチ前後)の測定  セルフチェック機能

・コマンドサーボのようなデイジーチェーン接続

・拡張性

端面スルーホール加工にしてみた。他の基板への実装も簡単。

USB端子がついた基板は、TinyAVR-0つきFT234Xが載ったUSBシリアル変換器。UPDIプログラマ化できる

試作例1  試験コントローラ

試験用冷蔵庫に入れて、庫内で電源制御や温度監視をさせてみた。

温度センサにはLMT01を複数繋ぎ、庫内や測定対象に取り付ける。

制御例。MegunoLink上でプロットと電源制御を行った例。



試作例2 試作OBC基板の電源制御、モード管理、状態監視

開発中にOBCの電流値を参照したり、電源制御段階ごとの異常検知や、ブートモード切替などをソフトウェア上から行える。実装と冗長性の検討が長引いて回路図段階で何回もやり直したおかげか、試作一号機はとりあえず元気に稼働し始めた。 

 たいていのシステムには複数の機能別ボードや異機種コントローラが内包されているものだけど、それらの動作を最適化しながら、HILS的なシステムを作りあげるのは結構大変。
 個人的に、まずはベースバンド部、アプリケーションプロセッサ、ストレージみたいなまとまりを作りこむために、共通化配線とI/F基板1つでPCにつないで開発できることを目標としている。(電力規模100mW~1W以下)