マキシム >
設計サポート
> アプリケーションノート
>
[マイクロコントローラ ]
キーワード: MAXQ3212, MAXQ3210, マイクロコントローラ, 少ない命令セット数, RISC, 低ピン点数パッケージ, LPC, サーモスタット, ディジタルサーモスタット, 1-Wire, DS18B20, DS28EA00, ICM7218
関連製品
APP 3965: Apr 19, 2007
ダウンロード、PDFフォーマット (57kB)
リファレンスデザイン3965
ディジタルサーモスタットとしてのマイクロコントローラMAXQ3212の使用方法
要約:このアプリケーションノートでは、RISCマイクロコントローラMAXQ3212に基づいたディジタルサーモスタットについて説明します。この簡易なシステムは周囲温度を検出し、それをユーザ入力の設定ポイントと照合して、この照合の結果として出力リレーを切り替えます。また、システム部品は1-Wireディジタルサーモメータと、8桁LEDディスプレイドライバで駆動される4桁、7セグメントLEDディスプレイも内蔵しています。このマイクロコントローラと高集積ディスプレイドライバを選択すると、部品点数が最少のシステムが実現します。
はじめに
温度レギュレーションと温度制御が望まれる状況があります。たとえば、周囲温度が寒すぎるときは、白熱電球を小さな筐体内で熱源として使用して、塗料や同様の材料を乾燥または硬化させることができます。このため、温度検出、パワースイッチング、および基本的な熱源は、多くの状況に応じた閉ループの温度制御システムを提供します。
このアプリケーションノートでは、MAXQマイクロコントローラを使って、ディジタルサーモスタットとも呼ばれるこのような制御システムを実装する方法について説明します。機能性、使いやすさ、低コスト、および安価な開発環境であるMAXQ3210の評価キット(MAXQ3210-KIT )を入手しやすいため、システムコントローラとして、MAXQ3212 を選択しました。このコード例の総合開発環境は、MAX-IDEのバージョン1.0とMAXQ3210キットボードのリビジョンAです。
システム実装の詳細
概要
このディジタルサーモスタットのシステム実装はごく簡単です。図1 は、この回路の回路図を示しています。1-Wire®ディジタルサーモメータのDS18B20 は周囲温度を測定します。システムコントローラは測定した周囲温度をユーザ入力の設定ポイントと照合し、周囲温度が設定ポイントを下回る場合はリレーが作動します。このシステムは4桁LEDディスプレイによって標準動作では周囲温度を、ユーザが設定ポイントを入力している場合は設定ポイントを表示します。
MAXQ3212は、システムのコントローラとして動作します。MAXQ3212は、入力として設定されたポート端子によって、プロセッサに接続された2個のプッシュボタンスイッチを通じてユーザインタフェース機能(設定ポイントの上昇および下降)を実行します。別のポート端子は、出力リレーの制御専用の単一出力として使用されます。
図1. サーモスタット回路図
システムのディスプレイ用に、バックライトなどのエレクトロニクスを追加せずにサーモスタットを様々な照明条件で使用できるように、4桁、7セグメントLEDが選択されました。
ディスプレイとのプロセッサのインタフェースを容易にし、必要な駆動電流と多重化を供給するために、8桁LEDドライバのマキシムICM7218AIPI が選択されました。このデバイスは、マイクロコントローラをコモンアノードLEDディスプレイに直接インタフェースするのに必要な回路をすべて内蔵しています。LEDドライバは、4桁のみがこのアプリケーションで使用されますが、最大8桁を駆動します。このデバイスは、外付け電流制限抵抗不要で7セグメントをそれぞれ駆動します。
システムの出力は、AC電源を任意の負荷に切り替える標準的な電気機械リレーから供給されるスイッチドAC電源であり、負荷の電力需要に応じて大きさを変更することができます。8個のアンプを切り替え可能で、コイル電圧がシステムの電源電圧の5Vであるため、このリレーが選択されました。ただし、このリレーは、最終駆動FET (BS170)の電圧または電流能力を超えない有効電源で動作することができます。
その実行は確実に可能ですが、システムの正確な動作をモデル化し、閉ループ性能を最適化する試みは実行されませんでした。実際の温度と希望する温度との簡単な照合が、ここでの唯一の出力スイッチング基準です。ソフトウェアのサブルーチンRelay_Switchを希望どおりに変更し、希望するシステム動作を実現することができます。
単一のDS18B20-PARは、周囲温度を測定します。このデバイスの精度は、-10℃~+85℃の範囲で±0.5℃です。このアプリケーションでは、温度は、+12℃~+38℃ (+55°F~+100°F)の範囲であると予想されます。このデバイスの分解能は9~12ビットからユーザが選択可能であり、このアプリケーションで選択した分解能は以下で説明されています。このアプリケーションでは使用されませんが、DS18B20は、1-Wireネットワークで複数デバイスをサポートする64ビットの固有の識別番号をそれぞれ備えています。
1-Wireインタフェース
マキシムの1-Wireバスは、通信を行うのに1本の信号ラインおよびグランドが必要な固有のシリアルインタフェースです。このインタフェースを通じて、マイクロコントローラは単一のポート端子を使って1-Wireデバイスと通信することができます。また、このインタフェースは1-Wire信号ラインを通じて寄生電源と呼ばれる電源も供給します。この電源によって1-Wireデバイスはローカル電源なしで動作することができます。このアプリケーションには重要ではありませんが、この独立した動作が一部の遠隔温度測定状況において必要です。
このアプリケーションには単一の1-Wireデバイスのみが必要ですが、1-Wireバスは単一マスタと複数スレーブで動作するように設計されています。すなわちマルチドロップです。このアプリケーションは温度測定用に単一のDS18B20デバイスを使用しますが、この機能を実行するマキシム製のデバイスが複数あります。たとえば、複数の場所で温度を検出するアプリケーションにおいて、DS28EA00 は特にマルチドロップアプリケーション用に設計され、1-Wireネットワーク環境における1-Wireデバイスの物理的シーケンスの検出を容易にします。
このサーモスタットアプリケーションで、単一のポート端子を使って1-Wireバス上で「ビットバン」および通信を行うことができます。この機能のソフトウェアは、アプリケーションノート3769「MAXQ3210を使用した1-Wire温度ロガーの構築 」を直接もとにしています。このコードは、特にマイクロコントローラMAXQ3210とエコノ1-WireディジタルサーモメータのDS1822 用に記述されました。元のソフトウェアの9ビットからこのアプリケーションの10ビットに分解能を変更するには、わずかな変更のみが必要でした。また、アプリケーションノート3769は、1-Wireバスおよびそのアプリケーションのリファレンスも提供します。
MAXQ3212のI/O端子
MAXQ3212は、ポート0用の8個の端子とポート1用の7個の端子の計15個のポート端子を備えています。ディスプレイドライバのICM7218とインタフェースするには、最低10個の信号(ポート端子)が必要です。温度上昇スイッチ、温度下降スイッチ、リレードライバ、およびDS18B20とインタフェースするには、その他4つの信号が必要です。このため、合計14個のポート端子が必要です。標準リセットデフォルト動作では、MAXQ3212の15個のポート端子のうち4個はJTAGインタフェース(P1.0、P1.2、P1.3、およびP1.4)用に使用され、1個のポート端子はリセット入力(P1.1)機能用に使用されます。これらの5個の信号はデバッグ機能を制御しますが、このアプリケーションに必要です。このため、全体的なデバッグ戦略を少し検討しました。
制御ビットTAPおよびRSTDを適正レベル(それぞれ0と1)に設定すると、これらの5個のポート端子のデフォルトのデバイス機能をディセーブルすることができます。ディセーブルされると、これらのデバッグ機能に割り当てられたポート端子は通常のポート端子として動作し、もはやデバッグ動作を利用することはできません。このため、デバッグされる最後のアプリケーションソフトウェアルーチンは、ディスプレイ動作でした。ディスプレイ動作には最多数のI/O端子が必要であり、その機能は比較的単純でデバッグがほとんど不要であるため、ディスプレイ動作が選択されました。
アセンブリ言語コードには、これらの5つのデバッグ制御信号をディセーブルする命令の前に挿入される長い遅延(約5秒)があります。この遅延によって、デバッガは、デバッグ制御がディセーブルされる前にプロセッサを制御することができます。この方法で、デバッガは必要に応じてデバイスの制御を取り戻すことができます。
ディスプレイの選択
ディスプレイオプションの第一要件は、サーモスタットを屋内外の明るい所や暗い所で使用することです。LEDディスプレイが、晴れた日の屋外などのまぶしい光を除き、こうした幅広い周囲照明条件で最高の性能を発揮することが決まりました。このデバイスがこうした明るい環境で使用されると、簡素な着色レンズは必要とされるディスプレイコントラストと可視性を提供します。最後に、このLEDディスプレイは、バックライト源などの追加回路は不要です。
このアプリケーションには4桁のディスプレイが必要で、多重化なしで桁当り7セグメントあります。このため、小数点を勘定に入れず、28の独立した信号が必要です(4桁 x 7セグメント/桁)。明らかに、MAXQ3212のポート端子の数は、回路を追加せずにこのインタフェースを管理するのに不十分です。この問題のソリューションはマキシムICM7218です。このデバイスは最大8桁の多重化回路を備え、外付け電流制限抵抗なしでLEDセグメントを直接駆動することができます。2つの制御信号(モードおよび書込み)を備える簡素な8ビットインタフェースを通じて、このデバイスはプロセッサにインタフェースされます。
設定ポイントのユーザ入力
MAXQ3212で利用可能なポート端子の数を考慮すると、ユーザが希望する設定ポイントを入力するパラレルインタフェースを提供することは不可能です。このため、簡素な増減プッシュボタンインタフェースを通じて、ユーザは値を増減することができます。システムが最初に電源投入されると、ファームウェアはデフォルト設定ポイントを+72.5°Fに設定し、この値をMAXQ3212のEEPROMデータメモリに保存します。ユーザが設定ポイントを増減する場合は、新規の値はEEPROMに保存されます。EEPROMは不揮発性であるため、停電によって消去されません。
増減プッシュボタンの終了が検出されると、LEDは電流設定ポイントを表示します。表示中の設定ポイントであることを識別しやすくするために、マイクロコントローラは通常オフである最終桁の小数点をアクティブにします。プッシュボタンを十分な時間、押し続けた場合は、設定ポイントは、約1秒ごとに0.5°Fずつ自動的に上昇または下降し始めます。希望する設定ポイントに達した場合は、ユーザがプッシュボタンを離すと、新しい設定ポイントが有効になります。その後、ディスプレイは測定された周囲温度の表示に戻り、最終桁の小数点はオフになります。
温度変換
このアプリケーションのソフトウェアのさらに魅力的な点の1つは、摂氏温度から華氏温度への温度の変換です。DS18B20の「Convert Temperature (温度変換)」コマンドが終了すると、16ビットの符号拡張された結果が下記のフォーマットでデバイスの温度レジスタに保存されます。
温度の最上位バイト
Bit 15
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Bit 9
Bit 8
Sign
Sign
Sign
Sign
Sign
26
25
24
温度の最下位バイト
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
23
22
21
20
2-1
2-2
2-3
2-4
温度センサの分解能を9、10、11、または12ビットにユーザが設定可能で、これらはそれぞれ0.5℃、0.25℃、0.125℃、および0.0625℃に対応します。DS18B20の電源投入時のデフォルト分解能は12ビットですが、このアプリケーションでは10ビットに初期化されます。10ビット分解能に設定されると、結果のビット1および0 (2-3 、2-4 )は未定義で、最低温度分解能は摂氏0.25度です。
このアプリケーションでは、温度は華氏温度で表示されます。次式は、この変換を実行します。
華氏温度 = (摂氏温度 × 1.8) + 32 (Eq. 1)
温度は小数として得られ、変換には1.8の乗算が必要であるため、2進小数での計算が必要です。実数のこうした乗算の実行時に、プロセッサの演算リソースに負担をかけずに、計算誤差を最小限に抑えることが当然望まれます。DS18B20は温度値を10ビット数として得るように初期化されるため、ビット1および0は機能しません。小数温度情報の残りの2ビット(ビット3および2)は、0.25℃ (0.45°F)の分解能を備えています。MAXQ3212のアキュムレータは8ビット幅であるため、1バイトを計算された温度データの小数部分として使用するのは便利です。このため、乗算器は6ビットの小数情報を備えることができます。以下の情報は、6ビットの小数情報は0.8~99.61パーセントの10進値に近似することを示しています。
2-1 = 0.500000 => 62.50% of 0.8
2-2 = 0.250000 + 0.50000 = 0.750000 => 93.7% of 0.8
2-5 = 0.031250 + 0.0750000 = 0.781250 => 97.65% of 0.8
2-6 = 0.015625 + 0.781250 = 0.796875 => 99.61% of 0.8
こうした精度での華氏への変換は、温度センサの分解能には十分すぎます。
この変換計算の具体例として、温度測定によって摂氏+24.2510 度 (018.116 )という値が得られると仮定してください。これは以下のように示されます。
温度の最上位バイト
Bit 15
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Bit 9
Bit 8
0 (sign)
0 (sign)
0 (sign)
0 (sign)
0 (sign)
0
0
1
温度の最下位バイト
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
0
0
0
0
1
x
x
別の方法で示すと、この値は、00000001 1000.01xx2 です。この値に1.810 をかける必要があります。1.810 を小数情報の6桁に切り捨てられた2進表現に変換すると、定数0001.1100112 になります。変換計算は以下の通りです。
0000s0 011000.012 = 006116
× 00000000 01.1100112 = 007316
-----------------------
00101011 .100100112 = 2B9316
+ 00100000 .000000002 = 32.010
-----------------------
01001011 .100100112 = 4B9316 = 75.57421910
これによって75.574219という値が計算の精度に応じて得られることを確認することができます。この結果が小数情報の2ビットに切り捨てられる場合は、結果は、計算器と完全浮動小数点演算によって得られた値の0.15°F以内である75.5°Fです。この精度は、このアプリケーションの精度としては十分であると見なされました。
デュアルFETコイル駆動
このアプリケーションでは、2個の電界効果トランジスタ(FET)がプロセッサの出力ポート端子を電気機械リレーにインタフェースします。MAXQ3212のポート端子のリセットデフォルト状態は弱プルアップで、ハイ状態です。このため、プロセッサが電源投入されると、アプリケーションソフトウェアがその状態を変更するまでポート端子はハイ状態です。単一のnチャネルFET (BS-170)を使って電源をリレーのコイルに切り替える場合は、ポート端子のリセットデフォルト極性によってプロセッサの電源投入時にリレーが作動します。アプリケーションソフトウェアが端子の方向を出力に変更し、その状態をゼロに設定するまで、ポート端子はその状態で維持されます。この状態遷移は望ましくありません。というのは、状態遷移によって、リレーがしばらく作動してから停止する過渡期間がもたらされるためです。この動作を是正するには、2個のFETを回路図で示されるように直列に使用します。2個のFETを使うことによって、ポート端子のリセットデフォルト極性はリレーを作動しません。
コード例
このアプリケーションノートに付随するソフトウェアは、ダウンロード (ZIP)可能です。このファイルは、以下のソースコードファイルを備えています。すなわち、Thermostat.asm、1-Wire.asm、BCD.asm、ThermDisp.asm、およびMAXQ3210/MAXQ3212のレジスタアドレス定義を含むヘッダファイルmaxq3210.incです。この.zipファイルには、MAX-IDEプロジェクトファイル、Thermostat.prj、および「ロード可能な」16進数ファイルのThermostat.hexも含まれています。これらのファイルを共通ディレクトリに解凍して、MAXQ3210のEVキットでソフトウェアをアセンブルし、実行することができます。2007年9月12日に、ソフトウェアを含むもう1つの.zipファイル(Temp3Gerber.zip)がan3965_sw.zipに追加されました。これには、このアプリケーションを実行するための両面PCBを作るために必要な、全てのガーバーファイル、ドリルデータ、および部品リストが含まれています。
結論
MAXQ3212は、幅広いアプリケーションに適した高性能RISCプロセッサです。小型サイズ、低コスト、および高機能であるため、特にコスト重視のハイボリュームアプリケーションに最適です。このアプリケーションノートでは、RISCマイクロコントローラのMAXQ3212に基づいたディジタルサーモスタットについて説明します。MAXQ3212を使って、この簡易なシステムは周囲温度を検出し、それをユーザ入力の設定ポイントと照合して、この照合の後に出力リレーを切り替えます。周囲温度は、1-WireディジタルサーモメータのDS18B20によって検出されます。温度は、マキシム・インテグレーテッド・プロダクツ製の8桁LEDディスプレイドライバのICM7218で駆動される4桁、7セグメントLEDディスプレイによって表示されます。このマイクロコントローラと高集積ディスプレイドライバを選択することによって、部品点数が最少で低コストのシステムが実現します。
1-WireはMaxim Integrated Products, Inc.の登録商標です。
関連製品
APP 3965: Apr 19, 2007
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。