秋月ファンクラブ掲示板 過去ログ

簡単なモータードライバー - chy_farm

2014/01/31 (Fri) 15:16

inara1さん

すみません、先日パルスの改良2でアップしたマイクロコンプレッサで、DCモータ
の回転を制御するモータードライバーが必要になりました。

それでPICとロジックで出来ないか考えました。

前に教えていただいたロジック↓を使えたら今ある部品だけで出来るのですが。
http://bbs3.fc2.com//bbs/img/_454800/454703/full/454703_1382858349.jpg

要点を書きます。

1:
まずPICでduty cycle1%くらい、周期(どれくらいが良いかわからないので未定で
すが)10ms~50msくらいのパルスを作っておく。

2:
このパルスをHC221に入れて、HC221のパルス幅は14~15pinのCとRで決める。

3:
14~15pinのCとRは、それぞれ1uFと、可変で100kくらい???またはもう少し大き
いのが良いでしょうか??


接続はこの図のような具合でどうでしょうか?

Re: 簡単なモータードライバー - chy_farm

2014/01/31 (Fri) 18:17

パルスのオフ時間を調整するのは、PICの周期で決めることになりますね、きっ
と。

Re: 簡単なモータードライバー - inara1

2014/02/01 (Sat) 11:05

CとRがそれぞれ1uFと可変で100kだと、パルス幅の可変範囲は0~100msになりま
す。したがって、入力パルスの周期は100ms以上にする必要があります(入力パル
スの周期が100ms未満だと、可変抵抗を回しきらないうちに最大dutyになってしま
うため)。

入力パルスの周期が100msというのは、10Hzの周波数になりますが、10Hzは低すぎ
ます(モータが安定して回らない)。また、この周波数が可聴周波数範囲にある
と、モータから「ピー」という音が聞こえてしまうので、入力パルスの20kHz以上
(周期50μs以下)にしたほうがいいです。

入力パルスの周波数を20kHzとしたときのCとRの組み合わせは4700pFと10kΩの可変
抵抗にしてください(そうすれば可変抵抗を回しきったときにちょうどduty100%に
なる)。CとRの決め方は
C(F)×R(Ω)=入力パルスの周期(s)
です。

470pFと100kΩの可変抵抗の組み合わせでも計算上は同じになりますが、470pFとい
うのは、時定数を決める容量としては小さすぎる(配線の浮遊容量の影響で時定数
が変動しやすい)ので、4700pFと10kΩの可変抵抗の組み合わせのほうがいいで
す。

手元に2SK2232とモータ(FA-130R-2270)があったので、のその回路
(http://bbs3.fc2.com//bbs/img/_454800/454703/full/454703_1391148989.gif)
で実験してみました。モータの定格電圧が1.5V~3Vなので、電源電圧を3Vとしまし
た。モータの回転軸には何もつけない状態(無負荷)で実験した結果、dutyサイク
ルを40%以上にしないとモータが回転し始めませんでした。モータに負荷(ギアー
ボックスなど)をつけると、回転し始めるdutyサイクルをはもっと大きくなります
し、duty100%での回転数も変わってしまいます。

モータのPWM駆動は、モータドライバ(2Sk2232)の熱損失がほとんどないので、電
源の利用効率が良い(省エネ)のですが、DCモータを直流電圧で駆動する場合で
も、PWMで駆動する場合でも、回転数の制御は難しいです(回転数を変えることは
できますが、回転数を所望の値にするというのは困難)。

FA-130RAのデータシート
(http://www.mabuchi-motor.co.jp/en_US/cat_files/fa_130ra.pdf)の左下に、
実験で使用したFA-130RA-2270の特性が出ています。横軸が回転軸にかかるトルク
で、縦軸は、Nが回転数、Iがモータに流れる電流です。トルクが大きくなると回転
数が下がり、モータ電流が増えているのが分かります。

図の特性は、モータに直流の1.5Vを加えたときのものですが、PWM駆動ではモータ
にかかる平均電圧を変えていることになるので、dutyを小さくするというのは、DC
駆動での電圧を小さくしているのと同じことになります。1.5V以外の電圧での特性
は出ていないのですが、モータの(平均)電圧を下げると回転数-トルク特性も変
わります。

グラフではそこまで描かれていませんが、回転数(N)が0になるところでのモータ
電流(I)というのが、グラフにあるIS(ストール電流)です。これは、モータの
起動電流になります。このモータを1.5Vで動かしたときの平均電流は、無負荷で0.
2Aですが、起動時には2.2Aもの電流が流れるので、電源(ACアダプタなど)の最大
出力電流は、このIsより大きなものが必要です(モータドライバにもIsの電流が流
れるので素子の選定には注意が必要ですが、2SK2232に2.2Aの電流を流すのは問題
ありません)。

>パルスのオフ時間を調整するのは、PICの周期で決めることになる
そうです。この回路は、入力パルスの立上がりのタイミングで、ある時間幅のパル
スを出すだけで、それ以降、入力パルスが来なければ、1発のパルスが出ておしま
いです。入力パルスが連続パルスなら、OFFの時間は
出力パルスのOFF時間=入力パルスの周期-パルス発生回路のパルス幅(ON時間)
になります。


Re: 簡単なモータードライバー - chy_farm

2014/02/01 (Sat) 22:05

inara1さん

こんなに丁寧にご教示、すみません。ありがとうございます。

inara1さんはこのモーターの分野でも専門なんですね!
動く物だから、光とは違うのでは、、、と踏み違いしてました。
周期の値、ありがとうございます。早速明日実験してみます。

PID制御まで行けたらなぁ、と考えたりしてましたが、なかなか難儀なんですね。

Re: 簡単なモータードライバー - chy_farm

2014/02/04 (Tue) 21:25

inara1さん

お世話になっています。
何とか出来ました。

可聴音の範囲はうるさいかなぁ、と思ったのですが、コンプレッサなので低速トル
クが欲しいと考えて、目標値を50Hzにしてみました。

音は何しろコンプレッサですから、小さいと言っても音はします。それでそっちの
音でかき消されて全く気になりません。
結局、必要とする低速まで落とすと、圧縮音も小さくてマイルドになりました。

Re: 簡単なモータードライバー - chy_farm

2014/02/04 (Tue) 21:34

PICのプログラムはパルスオンタイムを102usで調整しました。
パルスオフタイムは20msで調整しました。
。。。のつもりだったのですが、オシロで測ると周期が28ms~30msになっていま
す。

回転するとすぐに負荷がかかり、圧縮するのですぐに回転が落ちます。
かなり負荷を掛けてみたら、圧縮機の回転数が数えられるくらいに低くなるのに、
しっかり低速で回ってくれます。
これはご機嫌でした。

用途がマイクロトーチの火力調整です。
ある程度流量が小さい方がありがたいし、圧を必要とするときはそれなりに回って
欲しい、という条件です。

それで条件を考えながら時定数を調整したら、CとRがそれぞれ、2uF、7.58kΩにな
りました。

圧を掛けない時と、圧を掛けて圧縮するときの出力をオシロで見ました。

ストール電流のことを教えていただいていたので、ありがたかったです。

Re: 簡単なモータードライバー - chy_farm

2014/02/05 (Wed) 00:50

inara1さんのタイプも作りました。
こちらは回転数重視型として使えそうです。

入力パルスのONタイムを1usにして、OFFタイムを49usにしました。約20kHzです。

すこしカン高い音が聞こえますね。
圧縮を掛けたときにはやや弱い感じがします。

このタイプはコンプレッサ用でなくて、ファンのような回転数が足りないと用を成
さない物に向いているような感じです。

Re: 簡単なモータードライバー - chy_farm

2014/02/05 (Wed) 00:55

オシロの記録を見ていて考えました。

50Hzの方がトルクを感じるのは、パルスOFFタイムの電圧が0Vまで下がっていない
からではないでしょうか?

20kHzのほうは、オシロ図を見るとパルスOFFタイムに電圧がほとんど0Vまで降下し
ています。

Re: 簡単なモータードライバー - chy_farm

2014/02/05 (Wed) 12:48

inara1さん

昨日、カン高い音がする、と書きましたがプログラムに誤りがあって、可聴音域の
周波数になっていました。

秋に外付けハードディスクにうっかり規定以上の電圧を印可してしまい、それ以
来、PICプログラムでタイマー時間を計算するために作ったエクセルの計算表が使
えなくなっていました。

その表があればこんなミスはしないのに、、、手計算でミスして時間を間違えてま
した。

修正してサイクルが45usに収まるように書き直しました。
修正したPICで動かしたら音も聞こえないし、良い感じです。

50Hzの方がトルクがあるように感じる、と書きましたが、あらためて20kHzのと比
較してみると、トルクに余り変化は無さそうでした。

むしろ20kHzのほうが少しなめらかに動くような感じもします。

実際の作業で使い比べてみます。

オシロ図を見ると、リンギングが大きいです。一般的にモーターではあまり問題に
ならないのですか?

Re: 簡単なモータードライバー - chy_farm

2014/02/08 (Sat) 15:23

実際に使ってみると、スイッチオンするときにコンプレッサからの空気量が強く
て、ガスの火炎が吹き消されてしまうこと問題になりました。

ガスの流量が多ければ空気圧に負けないのですが、マイクロトーチの火力調整が必
要なので難儀です。
用途が細い火炎を安定させることなので、ガスの流量はわずかです。
わずかですが、火炎に横方向から風を受けたときに火炎がそれに負けて流れてし
まっては安全でありません。
横風に負けない最低量の空気流量は必要です。

で、その最低必要量の空気流量を確保しようとこのスピード・コントローラをセッ
トすると、上記のようにガスの火炎が吹き消されてしまう問題が出ました。

それで、スイッチオンして空気が流れ出す初期には回転するぎりぎりのパルスを
送って空気流量を抑え、その後に次第に空気流量を上げていったんマイクロトーチ
火口のゴミを吹き飛ばしてしまい、その後で目的の空気流量になるようにプログラ
ムしてみました。

PICの習い始めで、C言語は知らないので、アッセンブラー言語だけで何とか試して
みました。

空気流量は12段階にステップアップします。
写真上は上から2番目くらいのパルスです。

写真中央はいったん空気流量を上げていった後、使用する流量に下げていく時の切
り替わり点です。

写真下は使用する流量のパルスです。

これでうまい具合にいきました。

Re: 簡単なモータードライバー - chy_farm

2014/02/09 (Sun) 00:03

何しろ初心者ですから、20kHzのドライバーは周波数が高いので苦労しました。

PIC16F84Aは、255までしか数の勘定が出来ないので、それ以上は255の繰り
返しです。
パルスを繰り返すのも同様ですが、ステップアップしながら次第にOFFタイムを短
く変化させるのは、わたくしにとっては未知で、パズルのようでした。頭の体操に
なりました。

出来てテストしてみると、やっぱりinara1さんが教えてくださったようにこれの方
が何となくスムーズに動きます。

それに、オシロで観察すると波形もきれいでした。
写真は1がスタートから2番目、順番に早くなって、5が使用時の様子です。

お世話になり、ありがとうございました。