drive-stepper-motor-with-trianglar-wave

ステッピングモータを三角波で回してみた

ユニポーラステッピングモータ SPG27-1101 を矩形波と三角波(を模した簡易 PWM 信号)で駆動し、コイルに流れる電流を計測してみました。三角波で制御した方が駆動音が小さくなりました。

駆動音を録音してみましたので興味のある方は聞いてみてください。 SPG27-1101を矩形波と三角波で回したときの駆動音 - YouTube

ステッピングモータの駆動方式

ユニポーラステッピングモータの駆動で最も簡単なのは矩形波でパルスを送ることでしょう。SPG27 の仕様書によると 2 相励磁で駆動するのが標準的な使い方だそうです。2 相励磁は次のような電圧波形をステッピングモータの各コイルに流します。

ステッピングモータの2相励磁は2つのコイルを同時に励磁する
2相励磁シーケンス

SPG27-1101 を最高速度に近い約 500Hz のスピード(A1~B2 の各相単体でみると 125Hz の矩形波)で回してみると静かにスムーズに回転しました。徐々にスピードを落としていくと、200Hz 程度ではかなりうるさくなりました。また、周波数が下がるほどコイルにたくさん電流が流れるようになり、定格を超える消費電力になってしまいました。これでは長時間の動作はできません。静かに、そして電流を押さえつつ回転させるべく、三角波による制御に挑戦したというのが本記事の内容です。

2相ユニポーラステッピングモーターの駆動 | ステッピングモーターについて | TechWeb で紹介されている 2 相励磁の図を見てください。入力信号は単なる矩形波ですが、出力信号が PWM になっていることが分かります。各相のコイルに流れる電流を一定に保つ「定電流駆動」では PWM 制御が必須ですので、このような図になっているのだと思われます。

定電流駆動では電流検出回路を設け、電流が一定になるように PWM 制御します。しかし、今回は回路を単純化するため、電流の検出は行わず事前に定めたデューティ比で PWM パルスを発生させました。

実験回路

モータのコイルに流れる電流を計測するために、コイルとモータドライバの間に直列に抵抗を挿入しました(下図)。

SPG27電流計測回路
コイル電流計測回路

R1、R2 が挿入した電流検出用抵抗です。抵抗値 5 Ωは電流検出抵抗としてはいささか大きいのですが、手元に小さい(そして精度の高い)抵抗がなかったため、10 Ωの金属被膜抵抗 2 本を並列に接続するので我慢することにしました。電流値は多少小さく測定されてしまいますが、大まかな傾向としては十分把握できるでしょう。

モータドライバ TB67S158NG のデータシートをもとに、内部等価回路を書き込んだ回路図を次に示します。回路図にある Ch1、Ch2、Ch3 はオシロスコープのチャンネルです。

SPG27電流計測回路 TB67S158NG内部等価回路
TB67S158NG等価回路

MCU_A1、MCU_A2 にマイコンからパルスを入力することでステッピングモータを回転させます。TB67S158NG は定電流回路などを持っておらず、IN+ と IN- 端子に入力された電圧がそのまま MOSFET のゲート入力になる単純な構造となっています。そのため、コイルに入力する電流を PWM で制御するには、PWM 信号をマイコンで生成して入力します。

電流測定(500Hz)

三角波を模した PWM 波形を入力したときの、モータ各相のコイルに流れる電流を測りました。正確には、電流検出抵抗の両端の電圧(Ch2 - Ch3)を測り、計算で電流値を導き出しました。まず、500Hz の矩形波で制御したときの電流を示します。

500Hz矩形波でモータを制御したときの電流変化
コイル電流 @ 500Hz 矩形波

黄色のグラフは入力電圧(Ch1)です。単純な矩形波になっていることが分かります。矩形波の周波数は 500Hz の 1/4 である 125Hz です。4 つの相に 125Hz の矩形波を与えることで、モータが 500Hz で回るということです。

オレンジのグラフがコイル電流です。画面右端を見ると Math 1 の欄に (C2-C3)/5 という計算式が見えるかと思います。Ch2 - Ch3 の差電圧を 5Ω で割る、という意味の式です。この式の計算結果がオレンジ色のグラフになっています。

コイル電流は入力信号が ON の間、徐々に増えていき、最終的に 300mA 程度まで増加することが分かります。まだ安定しているとは言えないため、入力信号がもっと長時間 ON になればさらに電流が増加するでしょう。SPG27-1101 のコイルのインピーダンスは約 30 Ωですから、直流電圧を入力すれば最終的に 12V/30Ω = 400mA で落ち着くだろうと思います。

次に 500Hz の三角波を入力したときのグラフを示します。

500Hz三角波PWMでモータを制御したときの電流変化
コイル電流 @ 500Hz 三角波

入力電圧(Ch1)のグラフを見ると分かる通り、三角波を PWM で表現しています。随分と解像度が粗い PWM ですが、何となく三角波を出してるのが分かるでしょうか。コイル電流はのこぎり波のような形で増えたり減ったりを繰り返しています。

グラフでは分かりませんが、500Hz 三角波ではモータは脱調してしまい、回転しませんでした。 SPG27-1101を矩形波と三角波で回したときの駆動音 - YouTube の最初の方に脱調の様子が記録されています。

電流測定(250Hz)

500Hz のときと同様に矩形波と三角波でそれぞれ測定しました。まずは矩形波のグラフを示します。時間軸(横)の縮尺が変わっていることに注意してください。1 つの山の幅は先ほどの 2 倍の 8ms です。

250Hz矩形波でモータを制御したときの電流変化
コイル電流 @ 250Hz 矩形波

グラフを見て気付くのは、山の幅が 2 倍になっても電流がそこまで増えないということです。先ほどは 4ms の時点でほとんど 300mA になっていたのに、今回は 4ms の時点で 250mA くらいにしかなっていません。理屈はよく分かりません……

次に三角波のグラフです。

250Hz三角波PWMでモータを制御したときの電流変化
コイル電流 @ 250Hz 三角波

時間軸の縮尺が変わっただけで、電流の変化の傾向としては 500Hz のときと同じですね。しかし 500Hz のときと明らかに大きな違いがあるのです。グラフを見ただけでは分かりませんが、500Hz 三角波では回らなかったモータが、250Hz ではよく回るのです(333Hz 三角波でも回っているので、333~500Hz のどこかに分水嶺があるのでしょう)。

250Hz 矩形波ではちょっと動作音が大きくなりますが、167Hz 以降の動作音に比べると圧倒的に静かです。

電流測定(125Hz)

最後に 125Hz に落として電流を計測してみます。まずは矩形波を入力したときのグラフです。

125Hz矩形波でモータを制御したときの電流変化
コイル電流 @ 125Hz 矩形波

電流が最大で 350mA に達していますが、単純に増え続けるということでもないようです。モータの動きって複雑なんですね。

次は三角波を入力したときのグラフです。

125Hz三角波PWMでモータを制御したときの電流変化
コイル電流 @ 125Hz 三角波

やはり、電流の大まかな変化は 500Hz、250Hz と大差ありません。しいて言えば細切れの ON の中でも 300mA に達することがあることが特徴的でしょうか。動作音を確認すると、矩形波よりも三角波の方がかなり静かです。

ロボットへの応用

こんな簡易な(雑な)三角波 PWM であっても、それなりにモータ動作音を抑えられることが分かりました。現在筆者は SPG27-1101 で動く車ロボットを作っているのですが、高速域(250Hz 以上)では矩形波で、低速域(250Hz 未満)では三角波 PWM で、と使い分けてみようと思います。

そもそも 500Hz の高速回転か停止だけのどちらかで使うのが一番静かではあるのですが、停車状態からいきなり 500Hz で発進するとタイヤが空回りしたり車体が傾いたり(ウィリー走行)と、あまり好ましくありませんでした。ゆっくり発進させ、徐々に加速させたいです。停車時も同様に減速を行いたいです。また、ステッピングモータの脱調を防ぐ意味でも加減速は重要です。脱調してしまうと、現在の車体の位置を正しく把握できなくなってしまいます。

当初は矩形波のままゆっくり発進&加速をやってみたのですが、うるさすぎたので今回の実験をやってみた、という流れなのでした。記事を読んでいただきありがとうございました。


作成:2022-09-30 04:37:45

最終更新:2022-09-30 04:37:45