はじめに:C2000とは何か
C2000(TMS320F28xx)は、Texas Instrumentsのリアルタイム制御専用マイコンファミリです。Piccolo(F2802x/F2803x/F2806x)やDelfino(F2837x/F2838x)といったシリーズがあり、モーター駆動・インバータ・デジタル電源・EV充電器・太陽光パワコンなど、高速・高精度な制御が要求される分野で世界的に使われています。
汎用マイコンとの最大の違いは「制御ループをキャリア周期ごとに確実に回すための周辺と演算器」が一体設計されている点です。PWM生成・電流検出・位置検出・保護・制御演算が緊密に同期し、数十kHzのスイッチング周波数でも余裕を持って電流制御を実行できます。本記事では、C2000でモーターを回すための要素を入門者向けに整理します。
C28xコア・CLA・TMU
C2000の演算リソースは、制御に最適化された3つの要素で構成されます。
| 要素 | 役割 |
|---|---|
| C28x コア | 32bitのメインCPU。FPU搭載品は浮動小数点制御演算が高速 |
| CLA(Control Law Accelerator) | 制御演算専用のコプロセッサ。メインCPUと並列に制御ループを実行し、応答性を確保 |
| TMU(Trigonometric Math Unit) | sin/cos/atan等を高速化。FOCの座標変換を大幅に高速化 |
FOCではクラーク変換・パーク変換で三角関数を多用するため、TMUの有無が制御周期の余裕に直結します。重い電流制御ループをCLAにオフロードし、メインCPUは通信やシーケンス管理に専念させる、という分担も定石です。
モーター制御を支える周辺機能
| 周辺 | 役割 |
|---|---|
| ePWM | デッドタイム付き相補PWM。三相インバータのゲート駆動信号を生成 |
| eCAP | 入力キャプチャ。パルス周期・速度の測定 |
| eQEP | 直交エンコーダのカウント。回転位置・速度を取得 |
| ADC | 高速逐次比較ADC。PWMに同期して相電流をサンプリング |
| CMPSS | 内蔵コンパレータ。過電流を検出してPWMを即トリップ(保護) |
| SDFM | ΔΣ変調器インターフェース。絶縁電流センシングに対応 |
これらが相互に同期している点がC2000の真価です。ePWMがADCの変換開始をトリガし、変換完了でCLAの制御ループ割り込みを起動、CMPSSが異常時にePWMを即時遮断する——この一連の流れがハードウェアで連携します。
ePWMで三相PWMを生成
三相インバータでは、上下アームの短絡を防ぐデッドタイム付きの相補PWMが必須です。ePWMはこれをハードウェアで生成します。3つのePWMモジュール(U/V/W相)を同期させ、中央揃え(アップダウンカウント)でキャリアを作るのが一般的です。
// ePWM1 を 20kHz 中央揃え、デッドタイム付きで設定(概念コード)
EPwm1Regs.TBPRD = PWM_PERIOD; // キャリア周期(20kHz)
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 中央揃え
// コンペアでデューティを設定(FOCの出力電圧指令から計算)
EPwm1Regs.CMPA.bit.CMPA = duty_u;
// デッドバンド(上下アーム短絡防止)
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBRED = DEADTIME_COUNT; // 立上り遅延
EPwm1Regs.DBFED = DEADTIME_COUNT; // 立下り遅延
// ADC変換開始をePWMからトリガ(電流を谷で取得)
EPwm1Regs.ETSEL.bit.SOCAEN = 1;
EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD;
デッドタイムが不足すると上下アームが瞬間的に同時オンし、貫通電流でパワー素子が破壊されます。ゲートドライバとパワー素子の特性に合わせて十分なデッドタイムを設定し、必ず低電圧・電流制限下で検証してください。
eQEP・高速ADCで電流と位置を検出
FOCには「相電流」と「回転子位置」の正確な検出が不可欠です。
- 相電流:シャント抵抗やホール式電流センサーの出力を、ePWMに同期したタイミング(キャリアの谷など)でADCサンプリングします。スイッチングノイズを避けるタイミング設計が精度の鍵です。
- 回転子位置:エンコーダを使う場合はeQEPで直交パルスをカウントし、位置・速度を得ます。センサーレス制御では、相電流・電圧から位置を推定(オブザーバ)します。
ADCはePWMトリガで自動起動し、変換完了割り込みで制御ループを起動するのが定石です。これにより「PWM周期ごとに必ず最新電流で制御演算する」リアルタイム性が保証されます。
FOC(ベクトル制御)の制御ループ
FOC(Field Oriented Control)は、三相電流を回転座標系のd軸(磁束方向)・q軸(トルク方向)に変換して独立制御する方式です。トルクリプルが小さく高効率で、PMSM/BLDCの高性能駆動の標準手法です。1制御周期の流れは次のとおりです。
- 電流取得:ADCで相電流 Iu, Iv, Iw を取得
- クラーク変換:3相 → 静止2軸 (Iα, Iβ)
- パーク変換:静止2軸 → 回転2軸 (Id, Iq)(位置θを使用)
- 電流PI制御:Id, Iq を指令値に追従させる
- 逆パーク変換:回転2軸 → 静止2軸の電圧指令 (Vα, Vβ)
- SVPWM:空間ベクトルPWMで各相デューティを算出
- ePWM更新:CMPA/CMPBにデューティを反映
この一連の演算を、TMU(三角関数)とCLA(並列実行)で加速します。速度制御を行う場合は、電流ループの外側に速度PIループを重ねるカスケード構成にします。C2000Wareのモーター制御ライブラリやリファレンスデザインを土台にすると、ゼロから書くより安全かつ短期に立ち上げられます。
開発環境とライブラリ
| 要素 | 内容 |
|---|---|
| 統合開発環境 | Code Composer Studio(CCS) |
| ドライバ・サンプル | C2000Ware(周辺ドライバ・サンプル・ライブラリ集) |
| 周辺設定 | SysConfig(GUIで端子・周辺を設定しコード生成) |
| 数学ライブラリ | IQmath(固定小数点)/ FPU・CLA math ライブラリ |
| 評価ボード | LaunchPad(LAUNCHXL-F28xx)/ controlCARD + モータ用ブースタパック |
初めてC2000でモーターを回す場合は、TIのモーター制御リファレンスデザイン(評価キット+サンプルプロジェクト)から始めるのが安全です。動く状態を基準に、自分のモーター・インバータに合わせてパラメータを調整していくアプローチが、トラブルを最小化します。
よくあるトラブルと対策
| 症状 | 主な原因 | 対策 |
|---|---|---|
| モーターが回らない・脱調する | 位置θのずれ・電流位相のずれ | エンコーダ原点・極対数・電流センサーの符号/ゲインを確認。オープンループ起動から検証 |
| パワー素子が発熱・破損 | デッドタイム不足・貫通電流 | デッドタイムを十分に。必ず低電圧・電流制限で段階的に検証 |
| 電流値にノイズが乗る | ADCサンプリングタイミングがスイッチングと重なる | キャリアの谷でサンプリング。配線・グランド設計を見直す |
| 制御ループが間に合わない | 演算負荷過大・CLA未活用 | 重い演算をCLAへオフロード。TMUで三角関数を高速化。固定小数点化も検討 |
| 過電流で頻繁にトリップ | CMPSSしきい値・PIゲイン不適 | 保護しきい値とPIゲインを再調整。電流リミットを段階的に上げる |
モーター・インバータの開発は高電圧・大電流を扱い、感電・発火・部品破損のリスクがあります。必ず適切な保護(電流制限電源、ヒューズ、絶縁、保護メガネ等)のもとで、低電圧から段階的に検証してください。
まとめ
この記事のまとめ
- C2000(TMS320F28xx)はモーター制御・デジタル電源向けのリアルタイム制御専用マイコン
- ePWM(デッドタイム付き相補PWM)・eQEP(エンコーダ)・PWM同期高速ADC・CMPSS(保護)が緊密に連携する
- C28xコア+CLA(制御コプロセッサ)+TMU(三角関数)で制御ループを高速・並列に回す
- FOCはクラーク/パーク変換でdq軸に分離し、電流PI→逆変換→SVPWMでモーターを駆動する
- 開発はCCS+C2000Ware。リファレンスデザインを土台にすると安全に立ち上げられる
C2000を使ったモーター制御・インバータ・デジタル電源の開発でお困りのことがあれば、テクノスフィアにお気軽にご相談ください。FOCのPoC、既存制御の高性能化、汎用マイコンからの移行までご相談を承ります。
C2000・モーター制御の受託開発
BLDC/PMSMのFOC制御、インバータ、デジタル電源の設計・PoC・量産化をテクノスフィアが対応します。汎用マイコンからC2000への高性能化移行もご相談ください。
よくある質問(FAQ)
C2000はなぜモーター制御に向いていますか?
デッドタイム付き相補PWMのePWM、エンコーダをカウントするeQEP、PWM同期の高速ADC、過電流を即遮断するCMPSS、制御演算を並列実行するCLA、三角関数を高速化するTMUが揃い、キャリア周期ごとの電流制御ループを確実に回せるためです。
FOC(ベクトル制御)とは何ですか?
三相電流をd軸(磁束)・q軸(トルク)に座標変換して独立制御する方式です。クラーク/パーク変換でdq軸に変換し、電流PI制御後に逆変換とSVPWMで相電圧を生成します。トルクリプルが小さく高効率で、PMSM/BLDCの高性能駆動に使われます。
開発環境は何を使いますか?
Code Composer Studio(CCS)とC2000Ware(ドライバ・サンプル・ライブラリ)が標準です。周辺はSysConfigでGUI設定でき、FOCには数学ライブラリ(IQmath/CLAmath)やモーター制御ライブラリを利用できます。
STM32・RXのモーター制御とどう違いますか?
STM32(G4等)や RX(RX66T等)も制御可能ですが、C2000はCLA・TMU・同期ADCなどリアルタイム制御特化のアーキで高速・高精度・多軸/高キャリア制御やデジタル電源に優位です。UIや通信も兼ねるなら汎用MCU、制御性能最優先ならC2000という選び方です。