PIC18 MCU の使用による PID コントローラの実装 Author: はじめに Chris Valenti Microchip Technology Inc. 1700 年代の後期から 連続プロセスはフィードバックループによって制御されてきました 1788 年にジェームスワットはスチームエンジンの速度制御にフライボールガバナーを使用しました Taylor Instrument 社は 1940 年に最初のフル機能型 PID(Proportional: 比例 Integral: 積分 Derivative: 微分 ) コントローラを実装しました ジェームスワット以来 フィードバック制御は大きく発展しましたが 基本方式とシステム要素は変わっていません フィードバックシステムにはいくつかの要素がありますが 議論のために 以下に示す説明用のモデルとして家庭の温暖用温度制御システムを取り上げます プラント システムの物理的な加熱および冷却を行う部分 センサー プラント内の変数を測定するデバイス ( 温度を測定するサーミスタ ) セットポイント 電圧に変換してプロセスの駆動に使用する特定の値 ( 例 : 70 ) 誤差信号 プラントの応答と希望の応答 ( セットポイント ) との差分 家庭ではサーモスタットは 70 に設定されますが 温度は実際には 65 であり したがってエラーは 5 ( エラー = セットポイント - 測定値 ) となります 妨害 これらは普通に起こり得るプラントへの望ましくない入力で 温度が直ぐに低下しその結果 ヒータが ON します コントローラ 意図的に最後にしましたが これは制御システムで最も重要な要素です コントローラはいくつかの役割を担い 物理的および非物理的要素のすべてを接続するリンクとなります コントローラはプラントのセンサーの出力信号を測定し その信号を処理した後 信号測定とセットポイントからエラーを求めます センサーデータが収集されて処理された後 その結果は PID 値を見出すために使われなければならず その後 PID 値はエラー補正のためにプラントに送出されなければなりません これらのすべてが起こる速度はコントローラの処理能力に依存します この処理能力が問題となるかどうかはプラントの応答特性に応じて異なります コントローラの処理能力に関し 温度制御システムはモーター制御システムに比べてさほど厳しくありません 図 1 にフィードバック制御システムの基本ブロック図を示します 図 1: フィードバック制御ループ セットポイント エラー コントローラ出力 プロセス変数 コントローラ プラント + フィードバック 2004 Microchip Technology Inc. DS00937A- ページ 1
目的 このアプリケーションノートの目的は次の通りです PID コントローラの 3 つの要素 比例 積分 微分について詳細に論じる PIC18 デバイスのファームウェアによる PID ルーチンを論じる 各種のシステムに適合させる柔軟性を備え しかも後に個別にチューニングできるファームウェアベースの PID の実装を論じる 実装を終えた後 PID のチューニングの詳細を論じる ソースコードの概要 先に進む前に PID ソースコードの構成法を論じます PID をファームウェアで実装する特別な方法はありません このアプリケーションノートで論じる方法は多くの可能性の中の一部について触れるだけです PID ルーチンはモジュール形式で構成されており 既存のファームウェアに組み込むようになっており PID ルーチンでは 8 ビットまたは 16 ビットのエラー値 ( 希望のプラント応答 - 測定されたプラントの応答 ) が渡されます したがって 実際のエラー値は PID ルーチンの外で計算されます 必要に応じて この計算を PID ルーチン内で行えるように プログラムを容易に変更できます PID は 2 つの方法 0 ~ 100%(8 ビット ) 範囲の割合 または 0 ~ 4000(16 ビット ) 範囲のいずれかでエラーを受け取るように構成できます このオプションは PID 変数宣言とともに PID ソースコードの先頭で #define ステートメントによって 構成されます 比例 積分 および微分ゲインはすべて 0 ~ 15 範囲の値を備えています 分解能を増やすために ゲインを 8 ビット ( 最大 255) で 16 倍にスケールされます 図 2 に メインアプリケーションコードで PID ルーチンがどのように実装されるかを一般的な流れで示します 符号付き数値を扱うために 2 通りの方法を考えました 最初の方法は PID 計算のすべての処理に 符号付き算術ルーチンを使用することでした 2 番目の方法は符号なし算術ルーチンを使用して 符号ビットをステータスレジスタに置く方法でした この場合 後者の方法が実装されました 符号ビットを保持する必要があるのは次の 5 個の変数です error a_error p_error d_error pid_error これらの符号ビットはすべて pid_stat1 レジスタ ( レジスタ 1 を参照 ) に保存されます PID のステータスビットはすべてレジスタ 1 およびレジスタ 2 に示されていますが ユーザーはエラーの符号ビット (err_sign) および PID の最終結果の符合ビット (pid_sign) にのみ注意を払う必要があります err_sign ビットは error とともに PID ルーチンに挿入されます ユーザーは pid_sign ビットをチェックしてプラントをどちらの方向に駆動しなければならないかを決定します 図 2: PID ファームウェアの実装 スタートアプリケーションの初期化 PIDINITIALIZE の呼び出し ISR(PID コード付き ) メインアプリケーションコード... コード...( エラーを計算 ) ERROR0:ERROR1 PIDMAIN の呼び出し PID_OUT0:PID_OUT2 コード...(PID の結果をプラントに適用 ) コード... エンド DS00937A- ページ 2 2004 Microchip Technology Inc.
ファームウェアの変数と定数 表 1 に このアプリケーションノートで論じられるファームウェアの変数と定数 およびその定義のリストを示します 表 1: ファームウェアの変数と定数 変数 / 定数 タイプ 定義 error0:error1 エラー変数 16 ビット変数 セットポイントと測定されたプラント出力との差分 a_error0:a_error1 エラー変数 16 ビット変数 過去のエラーのすべての和をとった累積エラー d_error0:d_error1 エラー変数 16 ビット変数 error0:error1 と p_error0:p_error1 との差分 p_error0:p_error1 エラー変数 16 ビット変数 最後のエラー値 a_err_1_lim エラー変数 累積エラーリミットを定義する 8 ビットの定数 a_err_2_lim エラー変数 累積エラーリミットを定義する 8 ビットの定数 kd ゲイン 8 ビット変数 微分ゲイン 最大 = 15(16 レベル ) ki ゲイン 8 ビット変数 積分ゲイン 最大 = 15(16 レベル ) kp ゲイン 8 ビット変数 比例ゲイン 最大 = 15(16 レベル ) pid_stat1 ステータスレジス 8 ビット変数 ステータスビットレジスタ ( レジスタ 1 参照 ) タ pid_stat2 ステータスレジス 8 ビット変数 ステータスビットレジスタ ( レジスタ 2 参照 ) タ deriv0:deriv2 項 24 ビット変数 微分項の値 integ0:integ2 項 24 ビット変数 積分項の値 pid_out0:pid_out2 項 24 ビット変数 PID 結果の最終値 prop0:prop2 項 24 ビット変数 比例項の値 timer1_hi タイムベース TMR1H レジスタにロードされる 8 ビット定数 timer1_lo タイムベース TMR1L レジスタにロードされる 8 ビット定数 注 : 16 ビット変数では 最初の変数が最上位バイト (MSB) 2 番目の変数が最下位バイト (LSB) です 例えば 変数 error0:error1 では error0 は MSB の 8 ビットであり error1 は LSB の 8 ビットです 24 ビット変数では 最初の変数が MSB 最後の変数が LSB です 例えば 変数 pid_out0:pid_out2 では pid_out0 は MSB の 8 ビットであり pid_out2 は LSB の 8 ビットです 2004 Microchip Technology Inc. DS00937A- ページ 3
データレジスタ pid_stat1 と pid_stat2 のデータレジスタには個別の PID ステータスビットが格納されます 以下に 2 つのレジスタについて簡単なビットの説明とその関連値を示します REGISTER 1: pid_stat1 データレジスタ pid_sign d_err_sign mag p_err_sign a_err_sign err_sign a_err_zero err_zero ビット 7 ビット 0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 pid_sign: 最終の PID 結果の符合を示す 1 = 結果は正であった 0 = 結果は負であった d_err_sign: 微分項の符号を示す 1 = 結果は正であった 0 = 結果は負であった mag: どちらの変数 (AARGB または BARGB)+ が大きいかを示す 1 = 結果は AARGB であった 0 = 結果は BARGB であった p_err_sign: 前のエラーの符号を示す 1 = 結果は正であった 0 = 結果は負であった a_err_sign: 累積エラーの符号を示す 1 = 結果は正であった 0 = 結果は負であった err_sign: エラー (PID への入力 ) の符号を示す 1 = 結果は正であった 0 = 結果は負であった a_err_zero: 累積エラーがゼロに等しいかどうかを示す 1 = 結果はゼロであった 0 = 結果はゼロでなかった err_zero: エラーがゼロに等しいかどうかを示す 1 = 結果はゼロであった 0 = 結果はゼロでなかった REGISTER 2: pid_stat2 データレジスタ d_err_z ビット 7 ビット 0 ビット 7-3, 1-0 ビット 2 未実装 d_err_z: データエラーがゼロに等しいかどうかを示す 1 = 結果はゼロであった 0 = 結果はゼロでなかった DS00937A- ページ 4 2004 Microchip Technology Inc.
PID ルーチンのフローチャート 図 3 と図 4( 次ページを参照 ) に PID メインルーチン機能と PID 割り込みサービスルーチン (ISR) 機能のフローチャートを示します PID メインルーチンは error0:error1 変数 および pid_stat1 のエラー符号ビットを更新するメインアプリケーションコードから呼び出すようになっています PID メインルーチンに入ると PID 値が計算され て pid_out0:pid_out2 変数に格納され 符号ビットは pid_stat1 に格納されます pid_out0:pid_out2 の値は プラントに適用できるように アプリケーションコードによって正しい値に変換されます PID ISR はロケーション 0x0008 にある PIC18 デバイスの高優先順位の割り込み用に構成されます この ISR 内の命令は既存の ISR に置くか またはそのままとすることができ アプリケーションに組み込まれます 図 3: error0:error1 メイン PID ルーチン (PIDMain) エラーは pid_stat1 にあるエラー符号ビットとともにメインアプリケーションコードから PID ルーチンへ渡されます error = 0? NO YES PID 操作は必要ありません メインアプリケーションコードに戻ってください 比例項を計算 比例ゲイン * error0:error1 a_error0:a_error1 積分項を計算 積分ゲイン * a_error0:a_error1 微分項を計算 微分ゲイン * d_error0:d_error1 GetPidResult に進む Prop + Integ 最終の PID 結果は pid_stat1 にある符号とともにメインアプリケーションコードに送られます (Prop + Integ) + Deriv スケールダウン (Prop + Integ + Deriv) 最終 PID 値を pid_out0:pid_out2 に置く pid_out0:pid_out2 2004 Microchip Technology Inc. DS00937A- ページ 5
図 4: PID 割り込みルーチン (PidInterrupt) 高優先順位の割り込みが発生 タイマー 1 の割り込みが発生したか? YES NO RETFIE エラー = 0? YES RETURN NO コンテキストのセーブ算術変数 (1) GetA_Error を呼び出す error + a_error a_error = 0? NO a_error のリミットを超えたか? YES YES NO RETURN a_error リミットをリストア deriv_count = 0? YES GetDeltaError を呼び出す YES d_error = 0? Set d_err_z bit NO NO RETURN 再ロード T1 フラグ TMR1H:TMR1L ををクリア 算術変数をリストア (1) RETURN 注意 1: これらの命令はオプションであり ISR の構成方法に依存します このアプリケーションノートで参照され る ISR コードはコンテキストのセーブ / リストアを用いて設定され メインアプリケーションコードの ISR 内にあります DS00937A- ページ 6 2004 Microchip Technology Inc.
比例 比例項は 3 つの内で最も単純であり 同時にフィードバックシステムで最も一般的に採用されている制御技術です 比例ゲイン (kp) はエラーに乗算されます このアプリケーションノートでは このエラーは 16 ビット値の error0:error1 を表します システムに加えられる補正量は このエラーに直接比例します ゲインが増加するにつれて プラントに適用される補正もアグレッシブになります このタイプのコントローラはエラーを小さくするために一般的に使用されていますが エラーをゼロにできず 定常エラーが残ります このため システムによっては比例制御だけでは十分でないことから 積分制御と微分制御が単独に または一緒に加わります (PI PD PID コントローラなど ) 実装 これまで述べたように 比例は最も単純な項です エラーは比例ゲインで乗算されます (error0:error1 * kp) これは 16 * 16 の乗算ルーチンによって行われます その結果は 24 ビット変数の prop0:prop2 に格納されます. この値は プラントに適用するの必要な全体の値を計算するために 後でコード内で使用されます EQUATION 1: 積分 比例項 prop0:prop2 = kp * error0:error1 現在のエラーに注目する比例制御と異なり 積分制御は過去のエラーについて考慮します このため 累積エラー ( 過去のエラーすべての和 ) を用いて積分項を計算しますが これは一定の時間間隔で行われます 基本的には 一定の時間が経過するごとに その時点におけるエラーが a_error 変数に加算されます 温度システムはモーターシステムよりも長いサンプル 期間を必要としますが これは温度制御環境では応答が遅いためです 温度システムで積分サンプル期間が速すぎる場合 累積エラーが早く加算されすぎて システムで応答時間が得られず 安定化できません 積分制御において さらに考慮すべき要素に ワインドアップ があります ワインドアップはプラント出力が飽和して累積エラーが増え続ける場合に起こります この現象は累積エラーに制限を設けて回避できます また プラント出力が飽和している場合 積分項を実行しないことで回避することもできます システム内に不安定状態を作り出して発振を起こす他の特性に過剰ゲインがあります 最良の全体値を見出すためには あらゆる起こり得る事態に対して積分ゲインを完全に試験しなければなりません すなわち 累積エラーが増加すると プラントに積分項がより大きな影響を与えるということです 応答の遅いシステムでは これがプラントに送られる値を支配することになります 実装積分項を得るためには 累積エラーを検索しなければなりません 累積エラー (a_error0:a_error2) は過去のエラーの和です このため 積分は補正のためにシステム履歴をチェックします a_error を累積する方法の詳細は表 2 を参照して下さい PID ルーチンがエラーを受信するごとに そのエラーは累積エラー変数に加算されたり しなかったりします これは Timer1 のオーバーフローレートに依存します Timer1 がオーバーフローすると その時点のエラーが累積エラー変数に加算されます Timer1 のオーバーフローレートは割り込みによって駆動され 高優先順位の割り込みとして構成されています TMR1H:TMR1L レジスタには 定数の timer1_hi と timer1_loによって決定される値がロードされます これらの定数値はプラントの応答によって決めなければなりません 累積エラーは積分ゲインによって乗算 (a_error0:a_error2 * ki) され その結果は integ0:integ2 に格納されます 表 2: a_error 累積の例 時間 エラー Timer1 のオーバーフロー 累積エラー t = n 10% No x% t = n + 1 8% No x% t = n + 2 12% Yes x + 12% t = n + 3 9% No (x% + 12%) t = n + 4 6% No (x% + 12%) t = n + 5 4% Yes (x% + 12%) + 4% t = n +... 2004 Microchip Technology Inc. DS00937A- ページ 7
積分ワインドアップを避けるために 累積エラーリミットがインストールされています (a_err_1_lim:a_err_2_lim) 累積エラーが計算されると その結果はリミット変数と比較されます 計算された値がリミット値を超えると 累積エラーはコードの先頭でユーザーが変数定義によって決定した値に等しくされます EQUATION 2: 積分項 integ0:integ2 = ki * a_error0:a_error1 (a_error0:a_error1 = error0:error1 + error0:error1 + error0:error1) 微分 これまで述べたように 比例項は現在のエラーに作用し 積分項は過去のエラーに作用し そして微分項はシステムの将来応答を予測するために現在と過去のエラーに作用します 微分項はプラント出力がそのセットポイントから変化している速度に基づいて調整されます このタイプの制御で注目すべき特性は エラーが一定であるか最大リミットになっていると その効果が最小になることです システムによっては 比例と積分 ( または いずれか ) で十分な制御が得られない場合があります これらのシステムでは 比例項と積分項を微分項に加えると 制御要件を完全に満たすことができます 実装微分項は積分項と同じ方法で計算されます 微分ルーチンは 微分項がシステムの変化速度に基づくことを考慮して d_error を計算します これは現在のエラーと前のエラーとの差分になります この計算が行われる速度は Timer1 のオーバーフローに依存します 微分項はシステムのエラーに作用しているときは極端にアグレッシブになります この代わりに エラーからではなく システムの出力から微分項を計算する方法があります このアプリケーションノートではエラーを使用します 微分項がアグレッシブになりすぎるのを防ぐために 微分カウンタ変数がインストールされています この変数により Timer1 のオーバーフローが x 回起こるごとに 1 回 d_error を計算することができます (Timer1 のオーバーフローごとに計算する累積エラーとは異なります ) 微分項を得るには 前の誤差が現在の誤差から減算されます (d_errro0:d_error1 = error0:error - p_error0:p_error1) その差分は微分ゲイン(kd) で乗算され この結果は deriv0:deriv2 に置かれ 比例項および積分項とともに加算されます チューニング システムの最適化のために PID コントローラをチューニングするさまざまな方法があります このアプリケーションノートのコードは緩く定義されており 個々のアプリケーション ( モーター制御 温度 アクチュエータなど ) に合わせてチューニングできる柔軟性を備えています PID コントローラのチューニングは幾分困難で時間がかかるため 系統的な方法で行わなければなりません 1. システムをオープンループで稼動させて その経時的な応答を測定します 測定された応答に基づくと いずれの PID 項が一番必要であるか見当をつけることができます 2. プラントの応答時間 最も大きな影響を及ぼす PID 項 累積エラーリミットなどのアプリケーション要件を決定します 3. a_error と d_error 項を計算する頻度を決定します これで Timer1 および微分カウンタレジスタにロードする値が決まります 現在の構成では d_error が a_error の計算ごとに 1 回計算されます この計算回数が少ないか多いか検討する必要があります 最後に これらの変数が決定された後 次の手順で PID ゲインを検証できます 最小のゲインから始めて (kp =1*16 ki =1*16 kd =1*16) 所望の出力に達するまで これらの値を徐々に大きくしていきます コードを少し変更するだけで コントローラを比例のみのコントローラにして最適値にチューニングできます その後 他の項を一度に 1 個ずつ追加して その都度 最適化できます EQUATION 3: 微分項 deriv0:deriv2 = kd * d_error0:d_error1 (d_error0:d_error1 = error0:error p_error:p_error1) DS00937A- ページ 8 2004 Microchip Technology Inc.
図 5 ~ 7 に温度制御環境のシステム応答を示します 図 5 は比例のみのフィードバックループに対する応答図を示しています 図では いずれのゲインも入力 信号に到達せず 入力信号のレベルを維持できないでいます 4 つのゲイン値すべてがゼロでない値に整定しており これは前述の通りです 図 5: 比例のみの応答図 1.4 1.2 1 Temp 0.8 0.6 0.4 0.2 0 Pgain = 1 Pgain = 2 Pgain = 5 Pgain = 10 Input 0 0.5 1 1.5 2 2.5 3 3.5 4 Time 2004 Microchip Technology Inc. DS00937A- ページ 9
図 6 は比例 / 積分 (PI) コントローラの応答図を示しています 大きな積分ゲインが良い応答を示しています ( 菱形マークが付いているラインを参照 ) チューニングされた PI ゲインを用いると システムはそのセットポイントに整定します これが多くのシステムで PI 制御が十分であるとされる理由です しか し PI 制御では整定に時間がかかる (t =3) という欠点があるため 比例 / 積分 / 微分 (PID) 制御が推奨されます 図 6: 比例 / 積分 (PI) コントローラの応答図 1.4 1.2 1 Temperature 0.8 0.6 0.4 0.2 0 P = 2, I = 0.1 P = 2, I = 0.05 P = 2, I = 0.02 P = 1, I = 0.02 Input 0 1 2 3 4 5 6 Time DS00937A- ページ 10 2004 Microchip Technology Inc.
図 7 は PID コントローラの応答図を示しています この図は PI の図 ( 図 6) に非常に似ていますが PID 制御はセットポイントに整定するのに PI 制御の半分の時間 (t =1.5) しかかかっておりません 図 7: PID コントローラの応答図 1.4 1.2 1 Temperature 0.8 0.6 0.4 0.2 P = 20, I = 0.5, D = 100 P = 20, I = 0.1, D = 100 P = 10, I = 0.1, D = 50 P = 5, I = 0.1, D = 50 Input 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Time PID 出力 PID 出力は比例 積分および微分項が決定された後で計算されます この計算に追加されるのは pid_sign ビットであり このビットをチェックしてプラントをどちらの方向に駆動するかを決定する必要があります このビットは pid_stat1 に置かれています これらの項の和は pid_out0:pid_out2 に格納されます EQUATION 4: PID ルーチン PID 出力 = prop0:prop2 + integ0:integ2 + deriv0:deriv2 2004 Microchip Technology Inc. DS00937A- ページ 11
最後に 最初に述べたように コントローラの処理能力により 誤差に応答するシステムの能力が決まります 表 3 に PID 機能の一覧 および各 PID 機能の命令サイクル数と所要時間を示します プラントの応答が遅い場合は プロセッサの速度を落として省電しても 許容時間内で PID ルーチンを実行することができます 表 3: PID 機能 機能 命令サイクル数 経過時間 ( s)(40 MHz 時の TCY) PID Main 437 43.7 Proportional 50 5.0 Integral 52 5.2 Derivative 52 5.2 GetPidResult 270 27 GetA_Error 70 7.0 PID Interrupt 184 18.4 表 3 の測定値は 誤差の大きさおよび算術ルーチンがどのくらい使用されるかによって変わります 測定値は PID ルーチンに送られた 6% の誤差も影響しています このアプリケーションノート用にコード開発を終了した後 PID ルーチンが PIC18F4431 モータ制御ボード (PICDEM MC) に実装されています モータ制御の最初のスタートでは PID ゲインは次の値でした : モータ制御の最初のスタートでは PID ゲインが kp = 96 ki = 80 kd = 16 のスケール値でした モータを始動してその設定速度に近づくようにした結果 積分ゲインは 144 に変わりました 累積誤差はミリ秒ごとに計算され Timer1 のオーバーフローで開始しました デルタ誤差 (d_error) は 4ms ごとに計算されました ( 微分カウンタ = 4) DS00937A- ページ 12 2004 Microchip Technology Inc.
APPENDIX A: ソースコード 完全なソースコードは PID アプリケーションの Maestro いくつかのデモアプリケーションおよび必要なサポートファイルとともに 当社の Web サイトから 1 個のアーカイブファイルとしてダウンロードできます www.microchip.com 2004 Microchip Technology Inc. DS00937A- ページ 13
NOTE: DS00937A- ページ 14 2004 Microchip Technology Inc.
Microchip デバイスのコード保護機能に関する注記 : Microchip 製品は各製品独自の Microchip( 以下 弊社 ) のデータシートに記載されている仕様を満たしています 各製品ファミリは 所定の方法 通常の条件下で使用される限り 現在市販されている類似製品の中で最も安全なファミリのひとつであるといえます コード保護機能に不正または不法にアクセスする行為は 弊社が知る限り すべて弊社のデータシートに記載されている動作仕様範囲外の方法で弊社製品を使用して行われます 通常 これらの行為は知的財産の侵害となります 弊社はコードの完全性について懸念されるお客様をサポートしていく所存です 弊社または他の半導体メーカーを問わず コードのセキュリティを保証しておりません コード保護機能は製品への 不正アクセス防止 を保証するものではありません コード保護機能は常に高度化し続けています 弊社では 弊社製品のコード保護機能を向上すべく不断の努力を重ねております 弊社のコード保護機能を侵害する行為は デジタルミレニアム著作権法 (DMCA) に違反します こうした行為によるソフトウェアや著作権に関わる製品への不正使用があった場合 同法に基づき賠償請求を行う権利があります 本書に記載されているデバイスアプリケーション等に関する内容は 参考情報に過ぎず 常に最新版であるとは限りません ご利用のアプリケーションが仕様を満たしているかどうかについては お客様の責任にてご確認願います そのような情報の正確性や使用方法 あるいはそれらから生じる特許や他の知的財産権の侵害に関し Microchip Technology Incorporated は説明または保証を含め いかなる責任も負いません 弊社の製品を生命維持装置の重要な構成要素として使用する場合は 弊社の書面による明示的な承諾がない限り許可されません いかなる知的財産権の下でも 暗黙的か明示的かを問わず ライセンスの譲渡は認められません 商標 Microchip の名称と M のロゴ Microchip ロゴ Accuron dspic KEELOQ microid MPLAB PIC PICmicro PICSTART PRO MATE PowerSmart rfpic 及び SmartShunt は米国及びその他の国における Microchip Technology Incorporated の登録商標です AmpLab FilterLab MXDEV MXLAB PICMASTER SEEVAL SmartSensor The Embedded Control Solutions Company は 米国における Microchip Technology Incorporated の登録商標です Analog-for-the-Digital Age Application Maestro CodeGuard dspicdem dspicdem.net dspicworks ECAN ECONOMONITOR FanSense FlexROM fuzzylab In-Circuit Serial Programming ICSP ICEPIC Linear Active Thermistor Mindi MiWi MPASM MPLIB MPLINK PICkit PICDEM PICDEM.net PICLAB PICtail PowerCal Powerlnfo PowerMate PowerTool REAL ICE rflab rfpicdem Select Mode Smart Serial SmartTel Total Endurance UNI/O WiperLock ZENA は 米国及びその他の国における Microchip Technology Incorporated の登録商標です SQTP は米国における Microchip Technology Incorporated のサービスマークです ここに記載されているその他の商標は 各企業が所有しています 2004, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. Microchip は 2003 年 10 月に同社の世界的な拠点である設計およびウエハ製造施設 ( アリゾナ州チャンドラーおよびテンペ カリフォルニア州マウンテンビュー ) に対して ISO/TS-16949:2002 品質システム認証を取得しました Microchip の品質システムプロセスと手順は PICmicro 8 ビット MCU KEELOQ コードホッピングデバイス シリアル EEPROM マイクロペリフェラル 不揮発性メモリおよびアナログ製品を対象にしています さらに 開発システムの設計 製造に関する Microchip の品質システムは ISO 9001:2000 の認証も取得しています 2004 Microchip Technology Inc. DS00937A- ページ 15
世界各国の営業所およびサポート アメリカ合衆国 本社 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 テクニカルサポート : http://support.microchip.com ウェブサイトアドレス : www.microchip.com アトランタ Atlanta Alpharetta, GA Tel: 770-640-0034 Fax: 770-640-0307 ボストン Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 シカゴ Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 ダラス Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 デトロイト Detroit Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260 コーコモ Kokomo Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387 ロサンゼルス Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 サンタクララ Santa Clara Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445 トロント Toronto Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509 アジア / パシフィックアジアパシフィック営業所 Suites 3707-14, 37th Floor Tower 6, The Gateway Habour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 オーストラリア - シドニー Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 中国 - 北京 Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8676-6200 Fax: 86-28-8676-6599 中国 - 福州 Tel: 86-591-8750-3506 Fax: 86-591-8750-3521 中国 - 香港特別行政区 Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 青島 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 中国 - 瀋陽 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深川 Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 中国 - 順徳 Tel: 86-757-2839-5507 Fax: 86-757-2839-5571 中国 - 武漢 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7250 Fax: 86-29-8833-7256 アジア / パシフィック インド - バンガロール Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 インド - ニューデリー Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 インド - プーナ Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 日本 - 横浜 Tel: 81-45-471-6166 Fax: 81-45-471-6122 韓国 - クミ Tel: 82-54-473-4301 Fax: 82-54-473-4302 韓国 - ソウル Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 マレーシア - ペナン Tel: 60-4-646-8870 Fax: 60-4-646-5086 フィリピン - マニラ Tel: 63-2-634-9065 Fax: 63-2-634-9069 シンガポール Tel: 65-6334-8870 Fax: 65-6334-8850 台湾 - 新竹 Tel: 886-3-572-9526 Fax: 886-3-572-6459 台湾 - 高雄 Tel: 886-7-536-4818 Fax: 886-7-536-4803 台湾 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 タイ - バンコク Tel: 66-2-694-1351 Fax: 66-2-694-1350 ヨーロッパオーストリア - ベルス Tel: 43-7242-2244-3910 Fax: 43-7242-2244-393 デンマーク - コペンハーゲン Tel: 45-4450-2828 Fax: 45-4485-2829 フランス - パリ Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 ドイツ- ミュンヘン Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 イタリア - ミラノ Tel: 39-0331-742611 Fax: 39-0331-466781 オランダ - ドリューネン Tel: 31-416-690399 Fax: 31-416-690340 スペイン - マドリード Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 英国 - ウォーキンガム Tel: 44-118-921-5869 Fax: 44-118-921-5820 05/28/04 DS00937A- ページ 16 2004 Microchip Technology Inc.