2025.5.24 Coskx Lab
1 はじめに
Xiao ESP32S3で小型ステッパモータ(ステッピングモータ)を制御します。
モータドライバIC TC78H653FTGを使用して,小型ステッパモータの「3DプリンターTitan Stepper Motor」を駆動します。モータ駆動電圧は4.1Vです。
TC78H653FTGはステッパモータを対象と考えた場合,2つのHブリッジ回路を持っていて,1つのステッパモータを駆動するモードがあります。
なお電流監視抵抗付加による電流制限機能はありません。
ただし,過電流検出機能で出力部がOFFになることがあります。その場合は電源の再投入か,STBY信号をLにして再度Hにすると回復するとデータシートに記載されています。
参考 モータドライバIC TC78H653FTG(東芝デバイス&ストレージ)
データシート https://toshiba.semicon-storage.com/info/docget.jsp?did=63588&prodName=TC78H653FTG
アプリケーションノート https://toshiba.semicon-storage.com/info/docget.jsp?did=70283&prodName=TC78H653FTG
参考 モータドライバIC TC78H653FTG ステッパモータ制御 入出力ファンクション
LARGE = L, MODE = H, STBY = H(論理レベル) で使用する
IN1,IN2とIN3,IN4は別々に指示することができ,それにしたがって,OUT1,OUT2とOUT3,OUT4が別々に動作する。
IN1 | IN2 | OUT1 | OUT2 | 動作 |
H | H | H | L | OUT1→OUT2 |
H | L | L | H | OUT1←OUT2 |
L | X | OFF(Hi-Z) | OFF(Hi-Z) | ストップ |
IN3 | IN4 | OUT3 | OUT4 | 動作 |
H | H | H | L | OUT3→OUT4 |
H | L | L | H | OUT3←OUT4 |
L | X | OFF(Hi-Z) | OFF(Hi-Z) | ストップ |
項目 | 最小 | 標準 | 最大 |
モータ電源電圧 | 1.8V | 3.0V | 7.5V |
モータ出力電流 small mode | ― | 2A | ― |
モータ出力電流 small mode Peak 10ms | ― | ― | 2.5A |
モータ出力電流 large mode | ― | 4A | ― |
モータ出力電流 large mode Peak 10ms | ― | ― | 5A |
ロジックHレベル | 2.0V(Vm=5.0のとき) | ― | 5.5V |
ロジックLレベル | -0.3V | ― | 0.5V |
ロジック最大周波数 | ― | ― | 500kHz |
2 使用環境
3 実験用配線
次のように配線しました。
ESP32のGNDとTC78H653FTGのGNDを接続
TC78H653FTGのLargeはESP32のGNDへ
TC78H653FTGのModeはESP32の3.3Vへ
TC78H653FTGのStbyはESP32の3.3Vへ
実際の配線の様子です。モータ用電源電圧は7.0Vにしました。(考察を参照してください)
4 モータ駆動デモプログラム
モータ停止時には,IN1,IN3 は,ともに L します。
モータ駆動時には,IN1,IN3 は,ともに H します。
正回転時には,IN2,IN4 を (H,H)→(H,L)→(L,L)→(L,H)の順に,指定の間隔で変化させます。
逆回転時には,正回転時と逆の順に指定の間隔で変化させます。
なお,これらの動作はクラスとして定義しています。
1ステップは1msecで1000Hz駆動になっています。
ステッパモータは1ステップが1.8度に対応するので200ステップで1回転になります。
なお,停止時にも静止トルクを必要とするため,通電しておくのですが,
電流条件を考慮して,駆動時と同じステップ幅で通電と通電なしを繰り返すようにしています。(考察を参照してください)
ステッパモータの動作テスト用プログラム本体
5 実行の様子
動画は1ステップ1msec設定です。
0.2秒(1msecx200)で1回転します。0.4秒停止した後,0.2秒で逆向きに1回転し,0.4秒停止します。この動作を繰り返します。
6 考察
ステッパモータの一相に着目すると,抵抗とインダクタ(コイル)の直列回路を,正方向と逆方向に切り替えながら,直流電源で駆動していることになります。
これはLR回路の過渡応答が繰り返されていることになります。
正方向に通電している一区間を考えてみます。ただし,直前の逆方向通電の名残は無視できると仮定します。
電流I[A],抵抗R[Ω],インダクタンスL[H],電源電圧E[V]とすると,時定数τ[sec]はR/Lとなっています。電流Iの時間変化は,I(t) = E/R・(1 - exp(-t/τ))で表されます。
過渡応答開始から十分時間が経過したときの電流(単純抵抗と考えた場合の電流)は,Imax = E/R になります。
過渡応答開始からτ経過したときの電流は
I(τ) = E/R・(1 - exp(-1))≒ 0.6 E/R = 0.6 Imaxになります。
このときの電流曲線は次のようになります。
正方向に通電している時間は,駆動周期Pになります。
具体的には
R = 4.1 [Ω]
L = 0.004 [H]
E = 4.1 [V]
Imax = 1.0 [A]
τ = 0.0010 [sec]
になっています。
駆動周波数が1000Hzでしたので,P = 0.001 secになります。
たまたま駆動周期と時定数τが一致しているため,電流最大値は,単純抵抗を駆動しているときの電流(Imax)に比べ最大でも0.6 Imax にしかならず,平均するとかなり小さくなっています。
ということは電源電圧を4.1Vではなく,8V程度にしてもよいことになると思います。
上記駆動テストでは,1000Hz駆動時の電流曲線とTC78H653FTGの絶対定格も考慮して,モータ用電源の電源電圧を7.0Vにしています。
電流値の計算は,1回の通電時間(1ステップの長さ)は1msecを想定していますので,モータ停止期間の停止トルク発生のための通電時間も1msecにします。そのため,プログラムで停止時には,1msecで通電と休止を繰り返しています。
7 まとめ
Xiao ESP32S3およびモータドライバTC78H653FTGでステッパモータを駆動しました。
二相励磁の単純な動作を行いました。
この駆動方式では,無負荷状態で,1000Hzを超える駆動では脱調を時々起こすようになりました。