マイクロコントローラの機能を使用してコンパクトな設計でアナログ信号チェーンを迅速に実装

著者 Stephen Evanczuk

Digi-Keyの北米担当編集者 の提供

モノのインターネット(IoT)向けの設計の多くは、センサおよびアクチュエータの信号の調整、電流の制御、その他の機能についてのアプリケーション固有の要件を満たすために、アナログ回路に依存しています。専用の信号チェーンICでこのニーズを満たすことはできますが、コストがタイトでスペースの制約がある設計では、この機能をより少ない部品点数で実現し、しかも性能要件を満たす方法が必要です。

こうしたニーズに対応するため、これらのセンサやアクチュエータのインターフェースを、アナログ〜デジタルコンバータ(ADC)やコンパレータなどのアナログの周辺機器を統合することにより単純化したマイクロコントローラが登場してきました。それでも最近まで、エンジニアは、ほとんどの設計で必要となる信号調整や出力のバッファリングを行うアナログ部品を追加する必要がありました。

これらのアナログ信号調整回路をマイクロコントローラに追加することにより、開発者は、ウェアラブルやその他のIoTデバイスのための幅広いアナログインターフェース要件を満たすこれらの部品を、わずか数行のコードを操作するだけで効果的に構成する方法を手に入れました。

この記事では、接続されたIoTデバイスに対するフロントエンドのアナログ信号調整要件の必要性について説明します。その後、高度に統合されたアナログ機能を備えたマイクロコントローラのクラスを紹介し、それらを適用する方法を示します。

センサのマイクロコントローラへのインターフェース

通常、センサの設計では、マイクロコントローラのADC入力に到達する前に、トランスデューサの出力信号を調整する1つか2つのアンプが必要です。心拍数モニタリング用のパルスオキシメータのようなより複雑なデバイスでは、LED励起波形を生成し、フォトダイオードの出力を変換し、最後にパルスデータを抽出するために複数の信号チェーンが必要です(図1)。センサをプログラム可能なロジックコントローラに接続するために産業用アプリケーションで毎度のように使用される単純な電流ループ回路でさえ、電流出力を駆動し制御するために追加のデバイスを必要とします。しかしながら、Texas InstrumentsMSP430FR2355 MCUの内部アナログコンポーネントを使用することにより、開発者はこれらの設計のよりコンパクトなバージョンを、通常数点のパッシブ部品を追加するだけで実装できます。

Texas InstrumentsのMSP430FR2355 MCUの図

図1:さらにコンパクトな製品で洗練された追加の機能をユーザーが期待しているということは、開発者が、パルスオキシメータ用のこの例のような複雑な信号パスを実装するのに部品点数を劇的に減らす必要があるということを意味しています。(画像提供:Texas Instruments)

統合されたアナログ部品

16ビットのRISCプロセッサコアに基づくTexas InstrumentsのMSP430FR2355 MCUは、多くのIoTデバイスの設計で通常必要となる機能の完全なセットを提供します。TIのMSP430 FRAMファミリの一員であるMSP430FR2355には、32KBの低電力強誘電体RAM(FRAM)が統合されています。FRAMは、フラッシュメモリの不揮発性ストレージの利点と、RAMの書き込み速度と耐久性を備えており、IoT設計に適しています。結果として、開発者は、RAMに似たアクティブな動作状態でデータとプログラムコードを保存する性能品質の利点を活用しつつ、FRAMの不揮発性という特長によって、電力の節約に必要なスリープモードやその他の動作状態中に値を保持することができます。MSP430FR2355は、これらの設計で必要な低電力要件を満たすよう設計された複数の低電力モードをサポートしています。

こうした低電力機能とともに、MSP430FR2355は、12チャンネル12ビットADC、組み込みのデジタル〜アナログコンバータ(DAC)を備えたアナログコンパレータ、および複数のオンチップ基準電圧を含む、さまざまな組み込みのアナログ周辺機器とのIoTインターフェース要件をサポートしています。MSP430FR2355 MCUの最もユニークなアナログ機能は、4つのスマートアナログコンボ(SAC)モジュールにあります。開発者はこれをプログラムで構成して、特定の要件を満たすことができます。

各SACモジュールには12ビットDAC、レールツーレールオペアンプ(OA)、およびそのOAをプログラム可能ゲインアンプ(PGA)に変えるフィードバック抵抗器ラダーが含まれています。各部品の専用の抵抗器が、その構成と動作モードを制御します。たとえば、開発者は、単にSAC(SACx)モジュールのOAレジスタ(SACxOA)のビット0:1をロードするだけでOAの正の入力を何らかの外部ソース、DAC出力、またはペアのSACのソースに設定できます(下記参照)。

TIのドライバライブラリはこれらのビット操作を、直感的なアプリケーションプログラミングインターフェース(API)コールのセットに抽象化します。結果として開発者はSACモジュールを、センサ信号調整アンプを完全に置き換えることができる汎用アンプとしてプログラムするのに、数行のコード(リスト1)しか必要としません。これにより、対応する部分の部品点数と設計のサイズを節約することができます(図2)。

コピーする //Select external source for both positive and negative inputs SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL);   //Select low speed and low power mode SAC_OA_selectPowerMode(SAC0_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER)   // Enable OA SAC_OA_enable(SAC0_BASE);   // Enable SAC SAC_enable(SAC0_BASE); 

リスト1:汎用アンプを実装するには、開発者はTexas Instrumentsのドライバライブラリへのいくつかの呼び出しを行い、SAC OAを初期化(SAC_OA_init)、電力モード(SAC_OA_selectPowerMode)をこの場合は低電力に設定、そして最後にOAとSAC自体を有効にするだけです。(コード提供元:Texas Instruments)

Texas InstrumentsのMSP430FR2355 MCUの図

図2:開発者は外部のオペアンプを、MCUの4つのスマートアナログコンボ(SAC)モジュールの1つを使用して、Texas InstrumentsのMSP430FR2355 MCUに内部的に実装されたもので置き換えることができます。(画像提供:Texas Instruments)

出力波形ジェネレータとして使用するには、SACモジュール上のより多くの部品を使う必要があります(図3)。この場合、開発者は、内部のDAC出力を設定する専用のデータレジスタ(SACxDAT)にプログラムでデータを読み込むことにより波形を制御します。そうすることで、DACの出力がOAに基準電圧を提供します。この構成では、開発者はPGAレジスタ(SACxPGA)のビット0:1(MSEL)をバッファモード(01b)(浮動小数点入力に対応)に設定することによりOAの駆動力を強化します。この動作モードを構成するには、開発者は、上記の汎用構成で必要なものよりも少し多いAPI呼び出し(リスト2)が必要なだけです。

Texas InstrumentsのSACモジュールのデジタル〜アナログコンバータの図

図3:開発者は、SACモジュールのデジタル〜アナログコンバータとオペアンプ部品を使用して、プログラム可能な波形ジェネレータを実装できます。(画像提供:Texas Instruments)

コピーする //Select internal shared reference as DAC reference voltageSAC_DAC_selectRefVoltage(SAC0_BASE, SAC_DAC_SECONDARY_REFERENCE); //Select the load trigger for DAC data latch //DAC always loads data from DACDAT at the positive edge of Timer output TB2.1SAC_DAC_selectload(SAC0_BASE, SAC_DAC_LOAD_DEVICE_SPECIFIC_0);//Enable DAC Interrupt SAC_DAC_interruptEnable(SAC0_BASE);//Write data to DAC Data Register SACxDAT //DAC_data is an unsigned int type variable defined by user SAC_DAC_setData(SAC0_BASE, DAC_data); //Enable DAC SAC_DAC_enable(SAC0_BASE);//Select internal DAC for positive input and PGA source for negative input SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC,     SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);//Select Buffer ModeSAC_PGA_setMode(SAC0_BASE, SAC_PGA_MODE_BUFFER);//Enable OA SAC_OA_enable(SAC0_BASE);//Enable SACSAC_enable(SAC0_BASE);

リスト2:SACモジュールを波形ジェネレータとして構成する場合、開発者は、汎用アンプとして使用する場合に必要な分よりも少しだけ多いAPI呼び出しを必要とします。(コード提供元:Texas Instruments)

多段

多くの場合、開発者は、信号調整や出力チェーンに複数のアンプを必要とします。たとえば、センサシステムの設計者は、通常アンプをカスケードしてトランスデューサ出力をバッファし、そのバッファした信号を増幅して、信号チェーンの終端で待っているADCのフルスケールの応答に対応させます。同様に、出力インターフェースの設計者は、アンプをカスケードして波形を生成したりゲートドライバを制御したりする必要がある場合があります。たとえば、電流ループインターフェースを構築する場合、開発者は1つのSACモジュールをDACモードに構成して信号電圧を変調させることができます。OAモードに構成された2つ目のSACモジュールは、外部トランジスタを使用して信号電圧を電流に変換します(図4)。

Texas Instrumentsの、1つのSACモジュールをDACモード、2つ目のSACをOAモードにした図

図4:電流ループインターフェースを構築するには、エンジニアは1つのSACモジュールをDACモードで使用して変調信号電圧を生成し、2つ目のSACをOAモードにしてトランジスタを駆動し、電流ループILOOP (I1 + I2)を生成します。(画像提供:Texas Instruments)

MSP430FR2355 MCUは、アンプをカスケードするさらに効率的な方法を提供します。追加の外部部品を必要としない設計のため、開発者はSACモジュールを内部的に2つのペアにして相互接続する組み込みのルーティングを利用できます。SAC0は内部的にSAC2に、SAC1はSAC3に接続されています。

この相互接続は、煙感知機のような、フォトダイオードからの電流出力を変換のための電圧レベルに変換する必要があるセンサシステムの用途に使用できます。開発者は、SACモジュールのペアと数行のコードを使用して、この信号チェーンを実装できます(リスト3)。ここで、SAC2はトランスインピーダンスアンプとして構成され、フォトダイオードの電流出力を電圧に変換し、ペアになったSAC0がそれをダウンストリームのADC向けに増幅します(図5)。リスト3で示すように、SAC2とSAC0との間の内部接続はAPI呼び出し(SAC_OA_init)で作成され、PGAをOAの負の入力ソース(SAC_OA_NEGATIVE_INPUT_SOURCE_PGA)、ペアとなったOAを正の入力ソース(SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA)として使用して、SAC0を初期化(SAC0_BASE)します。

コピーする    //Configure Op-Amp functionality    GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3,                                                GPIO_PIN1 | GPIO_PIN3 | GPIO_PIN2,                                               GPIO_TERNARY_MODULE_FUNCTION);     //Select external source for both positive and negative inputs    SAC_OA_init(SAC2_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL,                 SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL);    //Select low speed and low power mode    SAC_OA_selectPowerMode(SAC2_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER);    SAC_OA_enable(SAC2_BASE);                  // Enable SAC2 OA    SAC_enable(SAC2_BASE);                     // Enable SAC2    //Select external source for both positive and negative inputs    SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA,                SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);     SAC_OA_enable(SAC0_BASE);                  // Enable SAC0 OA    SAC_enable(SAC0_BASE);                     // Enable SAC0

リスト3:開発者は、SP430FR2355 MCUのSACモジュールのペアを初期化し、ダウンストリームの段の入力がペアとなったOAをソースとして使用する(SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA)よう指定することにより、2段の信号チェーンを作成できます。(コード提供元:Texas Instruments)

Texas Instrumentsの、1つのSACモジュールをDACモード、2つ目のSACをOAモードにした図

図5:開発者は、煙感知器の設計において、MSP430FR2355 MCUのペアになったSACモジュールを、通常の煙感知器の入力信号チェーンで必要となるトランスインピーダンスアンプ(TIA)およびプログラム可能ゲインアンプ(PGA)を実装するよう構成することにより、外部のアナログICの必要性を実質的に排除できます。(画像提供:Texas Instruments)

このアプローチを使用すると、開発者は、IoT設計とウェアラブルで必要なアナログの入力回路と出力回路のほぼ完全なセットを実装できます。たとえば、開発者はMSP430FR2355 SACモジュールを使用して、図1で示したパルスオキシメータのような複雑なアナログ設計を、はるかにコンパクトなバージョン(図6)に圧縮できます。LED、フォトダイオード、関連する抵抗器の他には、開発者は同じ機能を提供するのにMCUしか必要としません。

Texas InstrumentsのMSP430FR2355 MCUとそのSACモジュールの図

図6:開発者はMSP430FR2355 MCUとそのSACモジュールを使用して、複数の出力励起ソースと多段入力信号チェーンを必要とするパルスオキシメータのような設計で部品点数を劇的に削減できます。(画像提供:Texas Instruments)

MSP430FR2355 MCUとそのSACモジュールの使用を評価するため、開発者はTexas InstrumentsのMSP-EXP430FR2355 LaunchPad開発キットを利用できます。プロトタイピングを迅速化するよう設計されたこのボードには、単純なサンプルアプリケーションで操作するための光センサ、LED、押ボタンと、ソフトウェア開発のためのオンボードデバッグプローブを備えた完全なMSP430FR2355ベースのシステムが含まれています。

Groveコネクタにより、使用可能な幅広いGroveベースのアドオンへのアクセスが提供され、TIのBoosterPackコネクタにより、開発者はRF BoosterPackを使用してベースプラットフォームを簡単に無線接続対応に拡張できます。TIはLaunchPadキットですぐに実行できるよう設計されたサンプルソフトウェアアプリケーションのセットも提供しています。LaunchPadボードで試してみる以外にも、サンプルソフトウェアでは、リスト3のコードスニペットで示したSACモジュールを相互接続する方法などの基本的な設計パターンが示されています。

結論

現実世界と相互作用するあらゆるデバイスでは、一般的にアナログインターフェースが必要です。しかしながら、ウェアラブルやIoTデバイスの設計の多くで、こうしたインターフェースをを構築するために必要な追加のデバイスは、よりコンパクトな設計と部品点数の削減という要件に逆行します。

Texas InstrumentsのMSP430FR2355 MCUに組み込まれているアナログ部品を構成することで、開発者はこのような設計で必要となる信号チェーン機能を実装できます。多くの場合、数点の追加のパッシブ部品が必要なだけです。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

著者について

Stephen Evanczuk

Stephen Evanczuk氏は、IoTを含むハードウェア、ソフトウェア、システム、アプリケーションなど幅広いトピックについて、20年以上にわたってエレクトロニクス業界および電子業界に関する記事を書いたり経験を積んできました。彼はニューロンネットワークで神経科学のPh.Dを受け、大規模に分散された安全システムとアルゴリズム加速法に関して航空宇宙産業に従事しました。現在、彼は技術や工学に関する記事を書いていないときに、認知と推薦システムへの深い学びの応用に取り組んでいます。

出版者について

Digi-Keyの北米担当編集者