モータシリーズ第 2 弾 (^_^;)
マブチモータでお馴染みの DC ブラシモータを、Arduino で回してみました。
DC ブラシモータの仕様
子供の頃、マブチモータでよく遊んだものです。
でも、まともな工作なんてしたことなかった。乾電池つないで回してみて、最後は分解して中の磁石を取り出して遊んでた。だから中の仕組みは良く知ってたりします (;´Д`)
秋月電子通商から「DCモータ FA-130RA-2270」を購入。
マブチモータ? ん? マーキュリモータ? Made in China ですね。
データシートによると、
- Rated Voltage : 1.5V DC
- Range Voltage : 1.5 ~ 3.0V DC
- No load current : 0.26A (0.36A Max)
- Load current : 0.66A (0.85A Max)
- Stall current : 2.2A
3.0V 駆動の場合は、
- Rated Voltage : 3.0V DC
- Range Voltage : 1.5 ~ 3.0V DC
- No load current : 0.26A (0.36A Max)
- Load current : 0.96A (1.24A Max)
- Stall current : 3.6A
かなり喰いますね。2SC2120 (35V 0.8A) で制御しようと考えていたんだけど、ちょっと無理っぽいです。
乾電池で回してみる
まずは、乾電池で DC ブラシモータを回してみましょう。
乾電池は単 2 形。新品ではないので、モータをつなぐと 1V ぐらいまで電圧が落ちます。その時の電流値が 0.19A でした。モータ軸をつまんでロックさせると、0.6A ほど流れました。
乾電池を 2 本にしてみたりといろいろやってみた感覚ですが、データシートに書かれているほど流れないような気がします。
ちなみに、モータにつけたリード線は、赤をプラス、黒をマイナスとしています。この極性で回転方向は、モータ軸を後側からみて時計方向になります。
データシートの回転方向は反時計方向になっていて逆なのですが、ここは JIS 規格に準じることにしました。
ブラシモータの駆動電源を作る
DC ブラシモータを駆動するための 1.5V 電源を作りましょう。
使った電圧レギュレータは NJM317 です。
これは基準出力電圧が 1.25V の可変レギュレータですので、抵抗器の組み合わせで自由な電圧を出力することができます。
まぁ、普通のレギュレータでも同じことができますが、基準電圧が 1.25V なところがミソ。1.5V を作るには、それより低い電圧のレギュレータでなければいけません。
出力電圧は、
VO = VREF x ( 1 + R2 / R1 ) = 1.25 x ( 1 + 150 / 470 ) = 1.65 V
ちょっと高めですが、モータをつなぐとちょうど良い感じになります。
注意が必要なのは損失です。一次電圧に 12V を利用しているので、降下させる電圧が 10.5V もあります。1A 流すと損失は 10W 以上。しっかり放熱してやる必要があります。 もっと低い一次電圧を用意したほうがよさそうです。
ブラシモータの駆動回路を作る
Arduino を含めた全体の回路図です。
Arduino の左側は入力です。
スイッチは、押している間モータが回転します。ボリュームは、モータの回転数を変化させます。
右側がモータの駆動回路です。
駆動用トランジスタは、Nch MOSFET 2SK4017 (60V 5A) を使用しました。
当初 2SC2120 (35V 0.8A) を考えていたのですが、コレクタ電流が不足する可能性があります。また、バイポーラトランジスタだとベース電流が大きくなるので、ベース駆動回路が必要になりそうです。
2SK4017 のゲート入力電荷量は 15nC 。立上り時間 1μs とすると必要なゲート電流は、
IG = 15 / 1 = 15 mA
なので、Arduino の出力で直接駆動できます。
以前「FET を使ってみる」でやったように、Arduino の出力を 20mA 程度に制限すると考えて、出力 5V 、ゲート電圧 0V 時のゲート抵抗は、
R6 = 5 / 20 = 0.25 KΩ
ですので、220Ω とします。
ゲート・ソース間抵抗は 22KΩ としておきます。
モータに並列に取り付けてあるダイオードは、モータから出るスパイク電圧の保護用です。いつも使っている簡易なオシロスコープでも数 10V の電圧が観測されますので、必ずつけましょう。
コンデンサはノイズ除去用です。
回転数の制御
DC ブラシモータの回転数は、印加する電圧で変化します。
なので、ブラシモータの回転数の制御は PWM でできます。
PWM は LED の明るさを調整するあの方法ですね。ブラシモータでも LED と同じです。試しにスケッチ例の Fade を書き込んでみると、モータはギューンギューンと動いたり止まったりを繰り返します。
スケッチ
スケッチです。
スイッチを押している間、モータが回転します。回転数はボリュームで設定できます。
- byte motorPin = 9;
- byte swPin = 14;
- byte potPin = 1;
- void setup() {
- pinMode(motorPin, OUTPUT);
- pinMode(swPin, INPUT);
- }
- void loop() {
- static int value = 0;
- value = analogRead(potPin);
- value = map(value, 0, 1023, 105, 255);
-
- if(LOW == digitalRead(swPin)) {
- analogWrite(motorPin, value);
- } else {
- analogWrite(motorPin, 0);
- }
- }
ブラシモータの制御といっても、これまでの L チカなどでやったことと変わりありませんから、説明は省きます。
ブレッドボード
ブレッドボードのようすです。
上のブレッドボードが電源です。
レギュレータがふたつ並んでいますが、左がロジック回路の 5V 用 (NJM7805) です。
右がブラシモータ駆動の 1.5V 用 (NJM317) で、モータを連続で稼働させるとヒートシンクはかなり熱くなりました。もっと大きいサイズのものが必要でしょう。
中央は Arduino UNO 。
スイッチ入力は、アナログ A0 ピンをデジタル D14 ピンとして使っています。理由はありません。入力を「Analog In」側、出力を「Digital」側に統一しただけです。
下のブレッドボードの右側に、回転数設定のボリュームとオンオフのスイッチがあります。左側は 2SK4017 のモータ駆動回路です。
モータにかかる電圧波形
最後に、DC ブラシモータにかかっている電圧波形です。
デューティー比 70% 時の波形ですが、インダクタンス負荷なのできれいなパルスにはなりませんね。
マイナス側にスパイク電圧がでていますが、ダイオードを入れてあるので 1V 程度に切られています。プラス側にも見えていません。
次は逆転もできるようにしましょう
今回は、DC ブラシモータを回してみましたが、回転方向は正転のみです。機構を反転させるにはモータを逆転させる必要もあるでしょう。
次は、モータを逆転させる方法を試してみることにします。