アプリケーションノート 3537

MAXQ3210による環境モニタリング

筆者: Kris Ardis

要約: MAXQ3210は、その機能によって、MAXQファミリおよび組込みマイクロコントローラ市場のどちらにおいても独自の存在を確立しています。MAXQ3210は、EEPROMのコードとデータ記憶領域、圧電ホーンドライバ、および9Vレギュレータを端子数の少ないパッケージに集積しています。高性能な16ビットRISCコアによって、デバイスは高速化および省電力化されています。MAXQ10コアをベースにしているので、MAXQ3210は16ビットアキュムレータではなく8ビットアキュムレータであるという点で、他のMAXQマイクロコントローラとは異なります。MAXQ3210は、I/O端子が少なく、何らかのスマートコントロールが必要とされる多くのアプリケーションで使用することができます。この記事では、理想的ないくつかの環境モニタリングアプリケーションについて説明します。

MAXQ3210の特長とモニタリング機能

MAXQ3210は、2kBのEEPROMコードスペース、128バイトのEEPROMデータスペース、および64バイトのRAMを備えています。9Vレギュレータが内蔵されているため、バッテリ駆動アプリケーションの回路が簡素化されます。また、MAXQ3210は、安定化された5V出力を他の回路部品に供給します。JTAGデバッグエンジンによって、高価なエミュレータを使わなくてもアプリケーション内でデバッグすることが可能です。

MAXQ3210は、環境モニタリングアプリケーションで使用することのできる独自の周辺回路を内蔵しています。圧電ホーンドライバと高電流LEDドライバは、環境条件が安全でない場合、または変化している場合、即座にステータスをフィードバックします。これらの周辺回路の機能は、多くのモニタリングアプリケーションで役立ちます。たとえば、簡易セキュリティシステム、煙探知器、温度モニタ、モーションディテクタなども電子ホーンを駆動するマイクロコントローラに適したアプリケーションです。

更にこのデバイスは、環境モニタリング回路へのインタフェース接続のためのオプションも多数備えています。MAXQ3210の内部アナログコンパレータは、環境変化の結果として生じる外部回路の電圧変化を監視します。この外部回路には、温度を測定するサーミスタのように単純なものもあれば、電流がコンデンサを充電するのに必要な時間を測定する傾斜型のアナログ-ディジタルコンバータ(ADC)のように複雑なものもあります。

外部回路を監視するためのもう1つのオプションとしては、MAXQ3210のディジタルI/Oを使用するという方法があります。たとえば、範囲外条件が発生すると、環境モニタリング回路は、MAXQ3210を立ち上げる外部割込みを生成します。シリアル通信プロトコルを使用して、距離や明るさを測定する外部ICと MAXQ3210のI/O端子でデータをやりとりすることもできます。

モニタリングアプリケーション用ソフトウェアアーキテクチャ

MAXQ3210用に記述されたアプリケーションは、一般にMAXQのアセンブリ言語でコード化できるほど小さくて簡単なものです。この記事で後述するアプリケーション例では、MAX-IDEツールセットを使用しています。MAX-IDEは、ダラスセミコンダクタ提供の無償開発環境で、MAXQデバイス用のアセンブラとデバッグ環境が用意されています。図1に環境モニタリングアプリケーションの基本アーキテクチャを示します。

図1. MAX3210の環境検知アプリケーションのメインプログラムループ。ほとんどの時間はスリープモードになっていますが、定期的にウェイクアップして、センサを読み取り、結果を分析します。
図1. MAX3210の環境検知アプリケーションのメインプログラムループ。ほとんどの時間はスリープモードになっていますが、定期的にウェイクアップして、センサを読み取り、結果を分析します。

デバイスの起動時に初期化が実行され、この段階の間、レジスタと構成ビットが一般的なアプリケーション用に設定されます。電源投入時には、製造試験や構成などの特別な操作を必要とする場合があります。初期化およびパワーオンチェックが終了すると、アプリケーションはメインループに移行し、環境の測定と対応が実行されます。最初に、コンパレータまたはディジタルI/O端子で環境の測定値を読み取り、範囲外条件かどうか分析します。次にアプリケーションは、定期診断を実行します。これには、外部回路のテスト、バッテリの測定、またはデータEEPROMに恒久的障害が記録されていないかどうかのチェックなどがあります。アプリケーションは、診断が終了すると警告(ローバッテリ)から警戒(過昇温)など、ステータスを検査します。測定した環境値の結果で措置が必要となった場合、アプリケーションは、次のいくつかのオプションを選択することができます。すなわち、ホーン(警笛)を鳴らす、LEDを点滅させる、I/O端子を使用して別のデバイスと通信する、あるいは後で分析できるように単にデータEEPROMに状態を記録する、などがあります。

シンプルなモニタリングアプリケーションのソフトウェア

環境モニタをモデルとしたシンプルなアプリケーションが、ダウンロードで入手することができます。このアプリケーションは、MAXQ3210の評価キットで構築し、テストしています。アラーム状態と通常状態は押しボタンで切り替えます。ホーンを鳴らしてアラーム状態を通知します。

次に環境モニタリングアプリケーションのメインループを示します。環境モニタ用のステートマシンは、非常にシンプルであることがわかります。ステートマシンはセンサから値を読み取り、この値を分析し、システムがスレッショルドを超えているかどうか(温度が高すぎる、空気中に煙が多すぎるなど)を判断します。条件が範囲外であれば、アラームが発せられます。

MainLoop:
    move  DP[0], #CONDITION_FLAG  ; see if we are alarming
    move  ACC, @DP[0]             ; read the alarm flag
    jump  z, MainLoop_NoSignal    ; skip next code if not alarming

    ;
    ; If our condition is above threshold, see if it is 
    ; time to sound the horn
    ;
    call  CheckSignalTime         ; see if it is time to sound the horn
    jump  nz, ReadAndSleep        ; back to sleep if no signal
    call  SignalCondition         ; sound horn, light LEDs, etc.
    jump  ReadAndSleep            ; let's go to sleep now
    ;
    ; In a real sensor, we still want to take readings even if we are
    ; signaling.  We need to check to see if environmental conditions
    ; have returned to normal.  
    ;
MainLoop_NoSignal:
    call  CheckForSelfTest        ; time to run periodic diagnostics? 
    jump  z, ReadAndSleep         ; skip if not time yet
    call  SelfTest                ; perform self diagnostics

ReadAndSleep:
    call  ReadSensor              ; get a 'sensor reading'
    call  AnalyzeSensor           ; see if condition out of threshold
    jump  Sleep                   ; put the device into low power mode
SelfTest関数は、定期的なシステム診断を行うためのもので、アプリケーションは、バッテリの状態を監視したり、異常な動作をする回路がないか確認したりすることができます。内部タイマをインクリメントして、MAXQ3210がアクティブであった時間を追跡するのにも、SelfTest関数は適しています。こうすることで、経時劣化するセンサが搭載された外部システムは、その寿命にあわせて交換することができます。

このアプリケーションコードは、MAXQの周辺回路がいかに使い易く、またコードスペースと実行サイクルをいかに節約することができるかを実際に示しています。たとえば、ホーンドライバで、ホーン出力を起動または停止するために必要なビットは1ビットだけです。

SoundTheHorn:
    move  HORN_DRIVER, #1
    move  LC[0], #10
    call  DelayMilliseconds
    move  HORN_DRIVER, #0
    ret

電源管理

環境モニタリングアプリケーションは、バッテリ駆動であることが多く、消費電力が最も重要な要素の1つになります。MAXQ3210は、低電力ストップモードと低電圧バッテリモニタを備えています。

アプリケーションが定期的に環境条件を測定する場合、MAXQ3210を低電力ストップモードからウェイクアップするには、次の2つのオプションがあります。すなわち、「外部割込み」または「ウェイクアップタイマ」であり、デバイスをスリープモードから復帰させて、コードの実行を開始させることができます。外部割込みは、外部回路がある条件を引き起こすのをアプリケーションが待っているときに有効なオプションです。代表的な例としては、ドアが開くのを待っている場合や、サーミスタ両端の電圧が外部割込みのスレッショルドを超えるのを待っている場合があります。

ウェイクアップタイマは、MAXQ3210をストップモードから復帰させるためのもう1つのオプションです。ウェイクアップは、以前にデモアプリケーションで説明した機能です。すなわち、外部のモニタリング回路がMAX3210をウェイクアップすると、MAX3210は環境を測定し、必要であればこれに対応してスリープ状態に戻ります。図2は、このようなアプリケーションの一般的な電流消費のモデルを示しています。MAXQ3210マイクロコントローラは、ほとんどの時間が低電力のスリープモードです。デバイスがウェイクアップされると、消費電流は非常に大きくなります。MAXQの高性能コアが役立つのは、このときです。MAXQ3210は、すばやく計算を実行することで、消費電力の大きい状態でいる時間を短縮し、低電力スリープモードでいる時間を長くします。

図2. モニタリングアプリケーションは、定期的に非常に短い時間だけウェイクアップするので、ほとんどの時間はスリープモードであり、電力を節約することができます。
図2. モニタリングアプリケーションは、定期的に非常に短い時間だけウェイクアップするので、ほとんどの時間はスリープモードであり、電力を節約することができます。

バッテリ寿命は、ほとんどのモニタリングアプリケーションにとって、極めて重要な要素であるため、バッテリ寿命が終わりに近づいたことを検出することができれば便利です。MAXQ3210は、レジスタのステータスビットをチェックするだけで、バッテリ電圧がスレッショルド未満に低下したかどうかを確認することができます。この電圧スレッショルドは、7.7Vに固定されています。これは、9Vバッテリの電圧が低下し始める電圧です。この電圧レベルでは、MAXQ3210が動作を続行するのに十分な電力がバッテリ内に残っています。低消費電力のアプリケーションは、数日間または数週間の間、ローバッテリで動作することが可能で、煙探知器でよく行われているように、定期的に警告信号を発することができます。

データEEPROM

MAXQ3210の128バイトのデータEEPROMによって、スマートなアプリケーションを実現することができます。EEPROMによって、アプリケーションは、停電やバッテリを取り外した状態であっても、恒久的に構成とステータスのデータを保持することができます。恒久的にデータを保存することができるということは、以下に示すように、さまざまな目的に有用です。
  1. 歩留まりの向上。わずかに仕様外の動作を行うデバイス(たとえば、距離を少し短く測定する距離検出器)は、恒久的に構成情報を保存することができるため、ソフトウェアによって外部回路の変動を補償することができます。このため、以前であれば廃棄したと思われる端末デバイスを稼働または売却することができます。
  2. 動作の構成とカスタマイズ。MAXQ3210アプリケーションは、対象とする特定の環境またはエンドユーザ用にカスタマイズすることができます。たとえば、環境モニタリングアプリケーションを大きなネットワークの一部として構成することができます。特定のスレッショルドでデバイスの測定が開始されると、マイクロコントローラはホーンを鳴らすだけでなく、ポート端子を切り替えて、その状態について他のデバイスに警告します。工場出荷時の設定で、このネットワーク通知を有効または無効に設定することができます。
  3. 寿命。環境センサにおいて、環境を測定する回路は、使用するうちに劣化する可能性があります。時間の経過とともにMAXQ3210のEEPROMをアップデートすることによって、アプリケーションは、交換が必要になるまでの動作時間を管理することができます。たとえば、5年間動作したセンサは自動的に無効になり、ホーンやLEDの点滅によって機能しないことを知らせることができます。

環境モニタリングアプリケーション

MAXQ3210のよりわかりやすい環境モニタリングアプリケーションとして、火災警報器やガス警報器などのホームセキュリティのアプリケーションがあります。MAXQ3210は、これらのアプリケーションをオンチップで実現するために必要なすべてのツールを備えています。ただし、MAXQ3210は、専用の煙探知器マイクロコントローラよりもはるかに汎用性があります。前述のシンプルな環境モニタリングソフトウェアのアーキテクチャを使用することで、さまざまなアプリケーションを作成することができます。以下の例の中には安全性を対象としたアプリケーションもあり、企業や家庭に対する損害を防止または最小限に抑えています。消費者の便宜を図るアプリケーションもあります。

家庭やオフィスへの損害を防止するアプリケーションの1つとして、地下室の水位モニタがあります。地下室では、水がたまってもしばらくの間気づかないことがあります。水が溜まると、湿度センサ、またはトイレで使用するようなタンク装置で検出されます。水が溜まりフロートが一定位置以上に持ち上がると、外部割込みが起動され、MAXQ3210は電子ホーンを鳴らして居住者に知らせます。さらにMAXQ3210は、家庭や企業のより大きなネットワークに状況を伝達し、そこから企業や家主にも通知できます。

温度モニタリングというアプリケーションも考えられます。スーパーマーケットの冷凍庫や配達トラックの冷凍車は、庫内温度が高くなりすぎないよう監視されています。シンプルなサーミスタをアナログコンパレータとともに使用しています。冷蔵庫の温度が安全限界値を超えると、MAXQ3210は、食料品店の従業員に状態を通知します。この局所的な温度モニタリングは、ネットワーク機器や飲料、フィルム、実験機器、美術用品、および傷みやすいほとんどすべての製品など、さまざまに応用することができます

便利なアプリケーションもあります。MAXQ3210を高性能のモーションディテクタとして使用すると、家の立ち入り禁止部分にペット、子供、または侵入者が入ると、家主に警報を発します。センサの構成は押しボタンで行います。

MAXQ3210は、駐車支援機器としても適しています。簡単な距離検出回路を使用して、MAXQ3210は、測定した距離に応じてホーンを鳴らす時間を変えることができます。このアプリケーションでは、マイクロコントローラの構成とインテリジェンスが必要となります。この回路をガレージ内に設置すると、所有者は壁にぶつけることなく駐車することができるようになります。しかし、回路の前を歩くたびに電子ホーンが鳴るような駐車支援機器では困るでしょう。このため、デバイスには初期遅延機能がプログラムされています。つまり、何か動きが検出されると、システムは2秒間だけ待って、さらに動きが検出されるかどうかを確認します。検出されなければ、誰かがセンサの前を歩いたものと推測されます。押しボタンを使用してデバイスをまったく無効にすることもできます。ガレージで作業中に電子音が鳴り続けるのでは不都合です。

評価キット

MAXQ3210の評価キット(EVキット)は、MAXQ3210アプリケーションのプロトタイプ作成を始めるのに最適なプラットフォームです。EVキットは9V電源または9Vバッテリで動作します。2つの押しボタンは、リセット信号と外部割込み信号を制御します。10端子のJTAGヘッダによって、ハードウェアデバッグルーチンにアクセスすることができるようになり、これによって、レジスタ、メモリ、およびスタックの表示と修正が可能になります。I/O端子は、使いやすい2 x 20ヘッダに接続され、外部回路テスト用のプロトタイプエリア近くに置かれています。

オンボードの圧電ホーンとLEDを使用すると、アプリケーションの視覚と音声をテストすることができます。ホーンはデフォルトで、苦痛を与えない程度の大きな音を出力します。減衰回路を短絡するためのジャンパをボードに追加することによって、ホーンを最大限の85dBの音量とすることができます。

MAXQ3210のEVキットはMAX-IDEとともに使用することができます。MAX-IDEは、MAXQ3210のハードウェアデバッグエンジンをサポートしているため、ソースコードレベルのデバッグとメモリのモニタリングが可能です。

図3. MAXQ3210の評価キットには、圧電ホーン、LED、および9Vのバッテリホルダなどアプリケーション開発に必要なすべてが用意されています。
図3. MAXQ3210の評価キットには、圧電ホーン、LED、および9Vのバッテリホルダなどアプリケーション開発に必要なすべてが用意されています。

MAXQ3210のメリットのまとめ

以上のように、MAXQ3210には、環境モニタリングアプリケーションのための利点がいくつかあります。第1の利点は集積化です。モニタリングアプリケーションに必要な部品(コンパレータ、ホーン、およびLEDドライバ)はチップに集積されているため、これらの機能を駆動するための外付けチップは不要となります。集積化によって、テストしなければならないコンポーネントが少なくなるため、システム全体のコストが低減され、信頼性が向上します。さらに、シングルチップでは接続箇所が少なくてすむため、最終的な回路基板のテスト時間が短縮されます。シングルチップソリューションによって、プリント基板は小さく、安価になります。

マイクロコントローラには、他に高性能と低消費電力というメリットもあります。シングルサイクルのMAXQコアと大きなレジスタ空間によって、アプリケーションはデータを効率的に格納し、すばやく計算を行うことができます。MAXQ3210では、低電力のスリープモードの時間が長くなり、コードの実行時間は短縮されます。

最後に、MAXQ3210のバッテリモニタとデータEEPROMによって、スマートなセルフモニタリングアプリケーションを実現することができます。デバイスは、バッテリ切れが近づくとユーザに警告することができます。さらに、アプリケーションはコンポーネントの寿命を確認し、寿命にあわせて交換することができます。

結論

MAXQ3210は、端子数の少ないパッケージにMAXQマイクロコントローラを実装したもので、高価なマイクロコントローラが提供する周辺回路のサポートを必要としないアプリケーション向けに設計されたものです。MAXQ3210は環境センサ用として非常に適していると同時に、極めて汎用的で高性能な省電力マイクロコントローラでもあり、さまざまなアプリケーションにおいてインテリジェンスや他の機器とのやり取りを実現することができます。

この記事では、環境モニタリングについて述べていますが、MAXQ3210のアプリケーションは、より広範囲に及んでいます。データEEPROM、キャプチャ/比較/PWM動作をサポートする16ビットタイマ、および高性能MAXQマイクロコントローラのコアを備えたMAXQ3210は、さまざまなマイクロコントローラのアプリケーションに利用可能です。