読者です 読者をやめる 読者になる 読者になる

Takeyuta Lab

マイクロマウスを中心にいろいろ楽しいと思ったことを好きにやるBlogです。Labっぽいこと書きたい。

2016年ありがとうございました

こんばんわ

 

年末年始でやろうと思っていたことが2割くらいしか終わっていません。もうだめだ。

 

 

ところで気づけばもう大晦日なので、今年を振り返りたいと思います。

 

 

Takeyutaさんの2016年のできごと

  1. 「マウス本」を冬コミに出すと宣言する
  2. APECに行く
  3. 子供が生まれる
  4. 職場がガラリと変わる
  5. 写真にどっぷりハマる
  6. コミケに行く
  7. 田代さんが亡くなる
  8. 全日本大会クラッシック競技で6位
  9. コミケでカメコする

 

はい。

こんな感じですね。あー写真楽しかった

これを見てくれている皆さま相手には特に改まって説明することもないような気もしますが、1番責められそうなマウス本についてだけ…

 

現在、機械設計、電気設計、マイコン使いこなしが9割方執筆終わり、

制御のあたりに差し掛かっています。

冬コミには出せませんでしたが進んでないわけではないです。

 

正直もうしまして、今年の余暇のスケジュールはかなり厳しく、土日はあまり休んだという気がしない日々が続いておりました。ので、ちょっとは同情票で許してもらえるとうれしいです。

 

当初は紙媒体で出すんだと意気込んでいたのですが、入稿ルールとか販売数量予想と在庫管理とかが色々とやりきれない気がして、もう電子出版にしようかと思っています。こだわりはどんどん捨てていかないと最後までたどり着ける気がしません。すみませんがご容赦下さい…。

 

あまりに時間を趣味に取っているので奥さんから白い目で見られることも日常茶飯事で、マウス本が皆さまに買って頂けた暁には売上でなんかプレゼントでもして、

「いやぁ、本書いてよかったね」

みたいなキャンペーンをしないといけない気がします。

今笑えてないあなたは既婚者なのでしょう。今度飲みましょう。

 

今のところ春~初夏くらいには間に合わせて出したいと思ってます。

ラストスパート頑張ります…。

 

 

2016年もいろいろな方々にお世話になりました。ありがとうございます。

田代さんが亡くなってしまって大変つらいですが、同時に自分も年取ったなぁと強く感じる次第です。

 

最近は社会人マウサーが増えていると思いますので、これからも大会に出続けて、身をもって皆さまの言い訳を潰せるよう頑張りたいと思います。

 

来年もどうぞよろしくお願いします。

 

 

適切なPWM周波数を考える

はじめまして、前のブログが使いづらかったので引っ越しました。

ブログの名前もなんとなくかっこよくなりました。

 

ということで、ラボっぽいこと書こうと思います。

 

ーーーーーーーーーー

 

DCモータを駆動するとき、PWMを知ると思いますが

たいていの人が、

「PWM周期っていくつにすればいいの?」

と思ったことがあると思います。

 

一般的には電気的時定数よりも早く、とか言われますね。

5倍、とか、10倍、とか言われると思います。

電気的時定数はインダクタンス成分と抵抗成分で決まるわけですが、

マイクロマウスで使うような小型コアレスモータでは電気的時定数が大変小さく

モータドライバやマイコンの問題から、PWM周波数を上げることができない

という問題に直面します。

 

みかけの電気的時定数をあげるため、コイルを直列に挟む、というのが

常套手段として知られています。

 

さて、では、低いPWM周波数でモータを駆動すると何が問題なのでしょう?

 

まず、本当に周波数が低い場合。

具体的には機械的時定数より大きな周期で

駆動すると、コアレスモータが全力で回転、停止を繰り返しますのでまともに制御できないことは自明です。これは除外します。

 

いくつかのケースでシミュレーションかけてみます。

シミュレーションはLTSpiceを使います。お手軽な回路シミュレータです。

想定するモータはQueさんで使っている千石のモータ(CL-0614-10250-7)とします。

各種定数は神様に頼ります。

3.6Ω、23.5uHだそうです。

電気的時定数 = インダクタンス / 抵抗値

ですので、電気的時定数は約6.53usです。(参照記事ではなぜか微妙に値が違いますが大した差ではないので気にしないこととします。)

 

ということで、シミュレーション条件は以下のようにしたいと思います。

f:id:Neophile:20161126103751p:plain

 

シミュレーションは以下の等価回路で行いました。

f:id:Neophile:20161126104411p:plain

 

R2,L2がモータの等価回路、 R3はモータドライバのON抵抗です。

 

R1,L1はパターンの等価回路…と言いたいところですが、後でコイルを挟むときのためのものです。

なぜか0にするとシミュレーションできないので無視できそうな値を入れています。

 

 それではまわしてみます。

 

ケース①

f:id:Neophile:20161126104536p:plain

 

ケース②

f:id:Neophile:20161126104637p:plain

 

ケース③

f:id:Neophile:20161126104730p:plain

 

軸はそろってないので気を付けてください。

青がモータへの印加電圧、緑が流れている電流です。

ケース①ではPWM周期内で1.8Aから0Aまで電流値が変動しています。

ケース②では0.6A~1.2A、ケース③では0.7A~1.1Aくらいです。

 

まず、PWM周期が短いとモータドライバに要求される最大の電流値が大きくなってしまうということがわかります。

モータドライバには大抵、過電流を防止するための保護回路がありますので、ここに引っかかってしまうと動作が怪しくなることが考えられます。

 

また、ここで、注意しておきたいのは、モータが発生する平均トルクは電流値の積分で決まるということです。積分値は表示していませんが、どのケースも約895mAです。

つまり、周波数によらず発生トルクは同一ということです。

 

では、モータドライバさえ余裕があれば低いPWM周波数で問題がないのか?というと、そんなことはありません。

思いつくデメリットは以下の通り。

  • 基板のパターン幅が太くなる
  • 電流変動が大きくノイズになりやすくなる
  • 電池の内部抵抗(放電可能容量)が問題になりやすくなる
  • 電力効率が落ちる

一方、メリットはというと

  • 低スペック(低動作周波数)マイコンでも駆動できる
  • PWM分解能を高くできる

でしょうか。結論、デメリットが大きすぎます。

 

次は、デメリットの最後に上げた電力効率が落ちる、という点に着目してみようと思います。

結論から言うと、電力消費は

ケース①>ケース③

になります。

先ほども述べたように、今回検証したケースでは電流の積分値が一緒なので発生トルクは同一です。発生トルクが同一で電力消費が違う、つまり電力効率が異なるということです。

 

このあたりからあまり自信がなくなってきますので間違いがあったら教えてください。

電力はご存知の通り電流×電圧で決まりますが、オームの法則から、

R × I^2であることがわかります。

つまり電流の二乗に比例します。

従って、ピーク電流が大きい方が不利である可能性があります。

 

実際にどのくらい不利か見てみます。

ケース①でのモータでの消費電力

f:id:Neophile:20161126111219p:plain

 

ケース②

f:id:Neophile:20161126111457p:plain

 

 ケース③

f:id:Neophile:20161126111348p:plain

 

結果からは明らかです。

電力平均値がケース①は4.4W、ケース②は3.0W、ケース③は2.9Wです。

発生トルクが一定なのに、PWM周波数が20kHzか200kHzかで1.5Wも違います。

つまり、電池の減りがそれだけ早いということです。

ただ、100kHzか200kHzかではあまり大きな差はありません。

 

最後に、直列にインダクタを挟むことを考えます。

回路は下記のようになります。インダクタも小型のものだと0.5Ωくらいの抵抗成分がありますので直列に抵抗を書いています。これで見かけ上のインダクタンスが倍近くになりました。

f:id:Neophile:20161126112113p:plain

これで200kHzでのシミュレーションをかけてみます。

f:id:Neophile:20161126112259p:plain

はい、随分平滑されるようになりました。

 

やはりインダクタは偉大か、と思いますが、先ほどの電力効率という面で考えてみます。

今回は先ほどのシミュレーションと簡単に比べるわけにはいきません。インダクタが挟まっていることによって、モータで消費される電力のほかにインダクタで消費される電力が加算されるためです。

また、直列に抵抗が加算されたために流れる電流が変わっています。つまり、発生トルクが異なります。

ということで、無理やりトルクを同じくらいにするため、電源電圧を7V→7.9Vとしました。このときの平均電流は896mAです。1mA違いますが誤差としましょう。

 

モータでの消費電力は

f:id:Neophile:20161126113010p:plain

2.9W。ケース③とほとんど変わりませんね。

 

コイルでの消費電力は

f:id:Neophile:20161126113050p:plain

0.4W。

 

つまり、合計すると3.3Wですので、電力効率という観点では改善分よりもコイルによる増加分のほうが大きいという結論になります。

 

 

個人的な結論

  • PWM周波数は100kHzもあれば十分で、モータドライバの上限で使えばよい
  • コイルを挟むのはあまりメリットはない

という感じでした。

 

もちろん、PWMのDutyによって結論は随分変わります。

今回の検証は最短走行寄りの検討で、探索走行になるとDutyが下がるために電流の脈動が大きくなりがちです。

従って、消費電力は差が付きやすくなります。

が、探索時はそもそもの消費電力が低いため、全体で見るとあまり効かないという結論でした。

 

 

おまけというか疑問

一方、調べていくと、

「PWM周波数を高くすると低速域でトルクが出ない」

とかいう記述を結構見かけます。

理論的にはそんなことはないと思っています。

が、 おそらく経験的にそのように感じている人が多いのでしょう。

 

予想ですが、そう感じている方はモータドライバの応答が間に合っていないのではないでしょうか?

FETゲートの入力容量であったり色々要因はあると思いますが、立ち上がりが遅いモータドライバで高い周波数のPWMを入れるとモータへの電圧が立ち上がり切る前に低下するので低速(低Duty)でトルクが出ないように感じるのではないかと思いました。

Dutyが上がるとON時間が伸びて立ち上がり切るため、高速域では問題ないように思えるのでは。

 

 このPWM周波数の問題、DCモータいじり始めて数年たちますが未だに疑問が絶えません。

コメントや議論のネタがあればいただけたら大変嬉しいです。