Labマイクロマウスを中心にいろいろ楽しいと思ったことを好きにやるBlogです。Labっぽいこと書きたい。マイクロマウスはじめまして、前のブログが使いづらかったので引っ越しました。ブログの名前もなんとなくかっこよくなりました。「PWM周期っていくつにすればいいの?」と思ったことがあると思います。一般的には電気的時定数よりも早く、とか言われますね。5倍、とか、10倍、とか言われると思います。電気的時定数はインダクタンス成分と抵抗成分で決まるわけですが、マイクロマウスで使うような小型コアレスモータでは電気的時定数が大変小さくモータドライバやマイコンの問題から、PWM周波数を上げることができないという問題に直面します。みかけの電気的時定数をあげるため、コイルを直列に挟む、というのが常套手段として知られています。低いPWM周波数でモータを駆動すると何が問題なのでしょう?まず、本当に周波数が低い場合。具体的には機械的時定数より大きな周期で駆動すると、コアレスモータが全力で回転、停止を繰り返しますのでまともに制御できないことは自明です。いくつかのケースでシミュレーションかけてみます。シミュレーションはLTSpiceを使います。お手軽な回路シミュレータです。想定するモータはQueさんで使っている千石のモータ(CL-0614-10250-7)とします。各種定数は神様に頼ります。3.6Ω、23.5uHだそうです。抵抗値ですので、電気的時定数は約6.53usです。(参照記事ではなぜか微妙に値が違いますが大した差ではないので気にしないこととします。)ということで、シミュレーション条件は以下のようにしたいと思います。シミュレーションは以下の等価回路で行いました。R3はモータドライバのON抵抗です。R1,L1はパターンの等価回路...と言いたいところですが、後でコイルを挟むときのためのものです。0にするとシミュレーションできないので無視できそうな値を入れています。それではまわしてみます。ケース1ケース2ケース3軸はそろってないので気を付けてください。青がモータへの印加電圧、緑が流れている電流です。ケース1ではPWM周期内で1.8Aから0Aまで電流値が変動しています。ケース2では0.6A~1.2A、ケース3では0.7A~1.1Aくらいです。PWM周期が短いとモータドライバに要求される最大の電流値が大きくなってしまうということがわかります。モータドライバには大抵、過電流を防止するための保護回路がありますので、ここに引っかかってしまうと動作が怪しくなることが考えられます。ここで、注意しておきたいのは、モータが発生する平均トルクは電流値の積分で決まるということです。積分値は表示していませんが、どのケースも約895mAです。周波数によらず発生トルクは同一ということです。モータドライバさえ余裕があれば低いPWM周波数で問題がないのか?というと、そんなことはありません。思いつくデメリットは以下の通り。基板のパターン幅が太くなる電流変動が大きくノイズになりやすくなる電池の内部抵抗(放電可能容量)が問題になりやすくなる電力効率が落ちる一方、メリットはというと低スペック(低動作周波数)マイコンでも駆動できるPWM分解能を高くできるでしょうか。結論、デメリットが大きすぎます。次は、デメリットの最後に上げた電力効率が落ちる、という点に着目してみようと思います。結論から言うと、電力消費はケース1>ケース3になります。先ほども述べたように、今回検証したケースでは電流の積分値が一緒なので発生トルクは同一です。発生トルクが同一で電力消費が違う、つまり電力効率が異なるということです。このあたりからあまり自信がなくなってきますので間違いがあったら教えてください。I^2であることがわかります。電流の二乗に比例します。従って、ピーク電流が大きい方が不利である可能性があります。実際にどのくらい不利か見てみます。ケース1でのモータでの消費電力ケース2ケース3結果からは明らかです。電力平均値がケース1は4.4W、ケース2は3.0W、ケース3は2.9Wです。発生トルクが一定なのに、PWM周波数が20kHzか200kHzかで1.5Wも違います。電池の減りがそれだけ早いということです。100kHzか200kHzかではあまり大きな差はありません。最後に、直列にインダクタを挟むことを考えます。回路は下記のようになります。インダクタも小型のものだと0.5Ωくらいの抵抗成分がありますので直列に抵抗を書いています。これで見かけ上のインダクタンスが倍近くになりました。これで200kHzでのシミュレーションをかけてみます。はい、随分平滑されるようになりました。インダクタは偉大か、と思いますが、先ほどの電力効率という面で考えてみます。今回は先ほどのシミュレーションと簡単に比べるわけにはいきません。インダクタが挟まっていることによって、モータで消費される電力のほかにインダクタで消費される電力が加算されるためです。直列に抵抗が加算されたために流れる電流が変わっています。発生トルクが異なります。いうことで、無理やりトルクを同じくらいにするため、電源電圧を7V→7.9Vとしました。このときの平均電流は896mAです。1mA違いますが誤差としましょう。モータでの消費電力は2.9W。ケース3とほとんど変わりませんね。コイルでの消費電力は0.4W。合計すると3.3Wですので、電力効率という観点では改善分よりもコイルによる増加分のほうが大きいという結論になります。個人的な結論PWM周波数は100kHzもあれば十分で、モータドライバの上限で使えばよいコイルを挟むのはあまりメリットはないという感じでした。PWMのDutyによって結論は随分変わります。今回の検証は最短走行寄りの検討で、探索走行になるとDutyが下がるために電流の脈動が大きくなりがちです。従って、消費電力は差が付きやすくなります。探索時はそもそもの消費電力が低いため、全体で見るとあまり効かないという結論でした。「PWM周波数を高くすると低速域でトルクが出ない」とかいう記述を結構見かけます。理論的にはそんなことはないと思っています。経験的にそのように感じている人が多いのでしょう。予想ですが、そう感じている方はモータドライバの応答が間に合っていないのではないでしょうか?FETゲートの入力容量であったり色々要因はあると思いますが、立ち上がりが遅いモータドライバで高い周波数のPWMを入れるとモータへの電圧が立ち上がり切る前に低下するので低速(低Duty)でトルクが出ないように感じるのではないかと思いました。Dutyが上がるとON時間が伸びて立ち上がり切るため、高速域では問題ないように思えるのでは。このPWM周波数の問題、DCモータいじり始めて数年たちますが未だに疑問が絶えません。コメントや議論のネタがあればいただけたら大変嬉しいです。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事リチウムポリマー電池の放電特性を学ぶ1コネクタの圧着は、はんだ付けをしてはダメなんですって。Discovery2を活用する月別アーカイブはてなブログをはじめよう!Neophileさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。