MSP430F2013のADコンバータを試す

Lチカデバッグ環境ができたところで、次に内蔵ペリフェラルを試します。

MSP430LaunchPadには、MSP430G2231が搭載されています。しかし、今回試すのはMSP430G2311ではなく、秋月で300円で売っているMSP430F2013です。なぜこのチップを選ぶかというと、他のワンチップマイコンでは10bitとか12bitがせいぜいなのですが、このチップは他のワンチップマイコンでは類を見ない16bitのシグマデルタ方式のA/Dコンバータを内蔵しています。さらに、入力は差動入力になっていて、1~32倍のプログラマブルゲインアンプ(PGA)を持っています。ですので、センサをつないだときの分解能が大幅にアップするはずです。

しかし、普通のワンチップマイコンでは10~12bitの分解能のA/Dコンバータしか搭載していないのは、CPUというデジタル回路がノイズ源になるため、高分解能のA/Dコンバータを搭載しても実力としてそれだけの分解能が得られないというところにあります。したがって、MSP430F2013のA/Dコンバータを使いこなすためには、CPUを初めとしたデジタル回路の影響を抑えることを考えなければなりません。

そういう視点で、MSP430F20xxのコードサンプル(msp430x20x3_sd16A_02.c)を眺めてみると、WDTとLPMを使ってデジタル系の動作をなるべく抑えた状態でA/D変換を行っています。

まず、WDTは32msのインターバルタイマとして使っていて、A/D変換の設定後にWDTを起動したら、LPM0に状態遷移してCPUの動作を停止させてしまいます。そして、停止中にその割り込み処理ルーチンの中でA/D変換のスタートをかけています。そうすることにより、チップ内のざわざわとした動作がA/D変換に与える影響や、A/D入力インタフェースのレベルが落ち着く前にA/D変換してしまうのを抑制しているようです。その結果として、(LaunchPad基板では)チップ内蔵温度センサやオフセット電圧の測定ではPGAのゲイン=1の状態で測定値のばらつきが1~2LSB程度に抑えることができています。(実験では、他の動作を行いながらA/D変換をさせると最大で8LSB程度暴れていました)

外部回路をつけるとその作りなどに影響されるので結果がまた変わってきますが、今度はセンサをつないでみたいと思いますが、面倒なのは外部入力インタフェースのインピーダンスがかなり低い(1kΩ程度)ようなので、バッファをつけてやらなければならないのが面倒くさいです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)