"/>

気になる、をやってみたら・・見える景色が変わる!ナーンテナ

Fun-Desire-Blog 

pexels-mike-190537

電子工作

これならできる!CNCプロッタ製作。(その3)-モータを動かす-

更新日:

ArduinoでCNCプロッタを作って行きますが、その前に少しArduinoとその基本的な使用方法を紹介します。今日はもう少し進んで、CNCのキモとも言えるモーターを動かしてみます。ただし、今回はもっと基本的な直流モーターとステッピングモーターを回してみます。しかし、このブログをみればなんか回せた気になってしまうかも知れませんが、実際やろうとするとなかなか回らないです。これが自分で動かせるとめちゃ楽しいし、嬉しいです。あなた自身でモーターを回してみませんか? 


1. Arduinoでモーターを回してみたい。

Arduinoで直流モーターを回転、反転、何秒間回転、回転スピードはこれで!なんて自由自在に回すことができます。さあ、どうやって回すのでしょう?

簡単です。Arduinoはマイコンなので、プログラムに従って、信号を出してくれます。それと、普通の直流(DC)モーターを回すための(+)(-)を考えてつなげば、あとはソフトでできちゃいます。(ふーん)

直流モーター をArduinoで回す
直流モーター接続回路

・直流モーターの(-)とArduinoの9番ピン
・直流モーターの(+)とArduinoの11番ピン

を繋ぎます。モーターに(+)(-)なければ、どちらでも構いません。
※直流モーターは模型用のモーターで構いません。動画のモーターは、電子部品の商店街で買った、いわいるジャンク品です。

初心者の方が実際に試してみられるときには、下の基板パッケージを購入して実施される方が分かりやすいかも知れません。株式会社 イーケイジャパン Arduinoビギナーのためのモーター,リレー,ブザー制御入門を使って、Arduinoにこの購入品付属のドライバシールド(基板)とモーターをピンやコネクタで接続するだけでハードウエア構成は簡単です。(※但し、Arduino基板が必要なのでご注意、リンクはもう少し下にあります)

モーター・リレー・ブザー制御入門 [ SU-1204 ]|製品情報 | エレキット (elekit.co.jp)

Arduinoビギナーのためのモーター,リレー,ブザー制御入門 の構成品を使った場合

さて、回転させる動作は、正転を0.3秒間、反転を0.5秒間、その後1秒停止。それを繰り返します。

コードはこんな感じで書けば大丈夫です。


 
 
void setup() {
   pinMode(9, OUTPUT); //モーター(モーターの制御ピン)に出力にする
   pinMode(11, OUTPUT); 

}

void loop() {
  digitalWrite(9, HIGH); digitalWrite(11, LOW); //モーターを正転
  delay(300); //0.3 秒間
  digitalWrite(9, LOW); digitalWrite(11, HIGH); //モーターを反転
  delay(500); //0.5秒間
  
  digitalWrite(9, LOW); digitalWrite(11, LOW); //停止
  delay(1000); //1 秒待つ

}
 
 
 

<コードの説明>
まず、setupでpinModeという命令を使って9番、11番ピンを出力ポートにしますということを宣言します。これは、Arduinoの基板の電源を入れた時にすべてのポートが入力ポートになっているためです。

loopの中で、
・9番ピンをHighにして11番ピンをLowにしてdelay命令で0.3秒間保持。
・今度は逆回転で9番ピンをLにして11番ピンをHにして、0.5秒保持です。
・そのあと、9番ピン、11番ピンともをLowにして停止します。(1秒保持)

2. 回転速度も変えたい。

次に、モーターの回転速度も変えちゃいます。(ドンドン行きます)

直流モーター をArduinoで回す(回転速度も制御)



void setup() {
   pinMode(9, OUTPUT); //モーター制御ピンを出力にする
   pinMode(11, OUTPUT); 

}

void loop() {
  digitalWrite(9, HIGH); digitalWrite(11, LOW); //モーターを正転
  delay(300); //0.3 秒間
  digitalWrite(9, LOW); digitalWrite(11, HIGH); //モーターを反転
  delay(500); //0.5秒間

  digitalWrite(9, LOW); digitalWrite(11, LOW); //停止
  delay(300); //0.3 秒待つ

  analogWrite(9,180); //9番ピンからデューティー180のPWM信号出力開始
  delay(500); //0.5 秒間
  analogWrite(9,80); //9番ピンからデューティー80のPWM信号出力開始
  delay(1000); //1 秒間 (速度変える)

  digitalWrite(9, LOW); digitalWrite(11, HIGH); //モーターを正転
  analogWrite(11,70); //11番ピンからデューティー70のPWM信号出力開始
  delay(1800); //1.8 秒間
  
  digitalWrite(9, LOW); digitalWrite(11, LOW); //停止
  delay(1000); //1 秒待つ

}


<コードの説明>
モーターのスピードを変えるには、analogWriteという命令を使って9番ピンからデューティー180のPWM信号出力します。
あとは、同様に出力するピン番号とスピードを決めてデューティーに置き換えて行きます。

直流モーターの回転速度を変えるには、電圧を変化させる方法もありますが、マイコンが電圧を上げ下げするのは不得意です。しかしながら、短い時間でON-OFFを繰り返すことは得意なので、一定の期間の内、ONとOFF、マイコン的に言うと、HとLの時間の比率で速度を変えることをPWM制御と言います。(Pulse Width Modulationの略)Arduinoの命令ではでは、analogWriteを使います。常にHを出力したい場合(100%)は、「255」とし、analogWrite(9,255)と記載すれば、9番ピンからデューティー255(100%)のPWM信号出力されると言うことです。この、一定期間にHを出力する割合のことをデューティー比と言っています。

株式会社 イーケイジャパン Arduinoビギナーのためのモーター,リレー,ブザー制御入門より抜粋


尚、キット一式はこちらで揃います。Arduino R3 でLED、モーターや種類も多くの購入数があり評価の点数もいいので、お試し購入にはよさそうです。

Amazon | ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品] | 基板 | 産業・研究開発用品 通販

スイッチサイエンス社が翻訳を手掛けたArduinoのキットで、殆どのプロジェクトは、はんだ付けなく出来るのがありがたい。(解説本がアップデートされていないのが難点)

Amazon.co.jp: The Arduino Starter Kit(日本語版) : パソコン・周辺機器

Arduino本体だけならこちら。

【楽天市場】Arduino UNO R3 互換基板 マイコン ATmega328P ATmega16U2 USBケーブル付属 アルディーノ アルデュイーノ 電子工作 ポケモンゲームの自動化にも:美来工房楽天市場店 (rakuten.co.jp)

3. ステッピングモーターも回してみます。

ステッピングモーターは、ローターと呼ばれるシャフト部が、まるで一秒ごとに止まる時計の秒針のように、指令に従って正確に回転するモーターなので、自由に位置決めができます。(回転速度も指令できます)
下記のサイトはステッピングモーターについて、分かりやすくまとめられています。一度読まれて、今の段階では何となくで覚えておくだけで大丈夫です。(なんだっけ?と思ったらまた、見ればいいんです)
https://www.marutsu.co.jp/contents/shop/marutsu/mame/126.html
https://www.orientalmotor.co.jp/products/stepping/overview_1/

4. ステッピングモーターを手動で回してみよう!(え?回せる?)

今回は、手持ちの2相ユニポーラ駆動 23KM-K112 というステッピングモーターを手動で回してみます。(古いモーターを使ってすみません)このステッピングモーターはもう販売してませんが、ユニポーラ駆動のステッピングモーターなら同じ回路で大丈夫です。
代替推奨品 :Ren He 5V ステッピングモータ+ 28BYJ-48 ULN2003ドライバーボード セット Arduino用 3個セット

昔、秋月通商で購入


そんなことできたっけ?

ステッピングモーター接続回路 (手動回転)

上記の回路を繋いで、タクトスイッチをS1、S2、S3、S4と順に押して行けば少しずつ正転します。S4→S1へと逆順に押せば反回転します。
今回手動なので、Arduinoは使わずに回路構成されています。コイルに電流を流すのは直流モーターと同じですが、電気を流す(電圧を掛ける)コイルが分けられていて、直流モーターのように電流を流しっ放しというより、短時間、電流を流し少しづつ回していくイメージです。

複数のタクトスイッチ、若しくは1個のタクトスイッチでも押し続けると、コイルや電池に電流が流れ続けて、思わぬ高温になる場合がありますので、火傷しないよう、ご注意下さい。

下の動画で手袋しているのは、スイッチが熱いからではありませんよ。(私の手の映像が、見栄え悪かったので手袋しました(汗))

実際の接続
タクトスイッチをS1→S4と順に押して行けば少しずつ正転。S4→S1へと逆順に押せば反回転
回転部(シャフト部)拡大

代替品の28BYJ-48(ステッピングモーター)とULN2003(シールド)をArduinoに繋いで電池で正転・反転させてみました。
ステッピングモーターは、制御信号からコイルに大きな電流を流して回すためのドライブ回路と呼ばれる回路が必要になりますが、このステッピングモータにはモーターの他にシールドと呼ばれるドライブ基板が付属されています。(コネクタ接続です)実際、23KM-K112は回すのに3A必要で、うまく回せませんでした。

28BYJ-48_ULN2003 接続図(電池の±入替(修正)しました)
正転と反転
代替品の ULN2003(シールド)とArduino 接続


#include <Stepper.h>

const int stepsPerRev = 2048;

 // ステップ数(減速比含、1回転)

Stepper StepM = Stepper(stepsPerRev, 8, 10, 9, 11);

void setup() {
    StepM.setSpeed(12); // 回転スピードは 12 rpmに設定
}  
  
void loop() {
  Serial.println("clockwise");
 // 回転方向 1(正回転)

  StepM.step(stepsPerRev);
 // stepsPerRevのステップ数回す

  delay(300); 
//0.3 秒待つ
  
   Serial.println("counterclockwise");
 // 回転方向 2(反回転)

  StepM.step(-stepsPerRev);
 // stepsPerRevのステップ数回す

  delay(300); 
//0.3 秒待つ
}


ULN2003を焼損

スケッチの Stepper StepM = Stepper(stepsPerRev, 8, 10, 9, 11); を Stepper StepM = Stepper(stepsPerRev, 8, 9, 10, 11); と9と10を書く順番を違えて焼損。

なぜか、なかなか回らなかったので、電圧を5V ⇒ 6V ⇒ 9Vと上げて行くと回り出したので、電圧が足りなかったのか・・と思い、12Vのスイッチング電源を繋ぐと、モーターは、唸るものの回転せず、数秒でパーンという破裂音と共に白い煙が出て、ICが焼損しました。すぐに、電源を切りました。ホントに怖かったです。(この時は、モーター出力軸に負荷をつないでいました)

Amazonの口コミを見ると、もともと、12Vは持たないようでした。

コスパ良好 (amazon.co.jp)

こういう記載もあります。確かに、ある程度知識が必要かも知れません。

最安で性能も十分でした。 (amazon.co.jp)

もし、購入されるならこちらをポチってみて下さい。

Amazon.co.jp: Ren He 5V ステッピングモータ+ 28BYJ-48 ULN2003ドライバーボード セット Arduino用 3個セット : 産業・研究開発用品

回転がおかしいのは、スケッチのpin番号を誤って記載したことによります。
前兆とすると、9Vの乾電池で動作し始めたのですが、正転させる命令を書いたのに、逆転したり、回ったり、回らなかったりなど、ぎこちない回転になっていました。また、ICは触ると熱くなっていました。pin番号が逆になったことで、2極のモーター回転電流が別の極に流れてしまい、逆回転したようです。(ぎこちない動きのメカニズムは正確には分からないです)

接続を確認。スケッチ(プログラム)はよく確認してから、電源を投入して下さい。また、何かあったらすぐに切れるようにしたり、できれば、過電流を保護できるとベストです。(難しいですが)

中央丸く膨れ上がった、焼損部

5.まとめ

①Arduinoで制御ピンから指令を出せば、直流モーターを正転・反転できる。
②PWM信号で制御すれば、回転速度も自由自在。
③ステッピングモーターは直流モーターとは仕組みが違って少しずつ回す。
④タクトスイッチで少しづつ回すことも出来るし、ドライブ基板でプログラムを使って回すこともできる。 ・・いとをかし。

今回は、モーターを回してみましたがいかがでした?ちょっと、長かったですね。配線作業される時はショート(短絡)する回路構成になってしまわないように、さらに火傷や破損に注意して下さい。(大きな電流が流れると発熱するので)
怖い話に聞こえますが、通常の電気製品はこのようなことが起こらないように、安全対策が取られている(絶縁されている)ので、大丈夫です。ただし、電子工作などで自分でやる場合には注意が必要ということです。(今回のように、焼損しても一瞬で火を噴いたりしないよう、燃えにくい材料を使ったりという工夫はされているので、事故が起きても時間を稼いでいる間に、安全な処置ができたりします)

最後に自分の話で恐縮ですが、少し。私も以前は、土日はダラダラ。なんとなくTV観て情報収集してるつもり。好きなスポーツチームの応援に行って、大声で応援すればストレス発散!と思っていました。でも、電子工作で、自分の作りたいものを思い描いて、行き詰っては調べて・・、それでもなんとか形に、思ったようにしていく中で、いろんなことを掴んでいくと、自分が変わって来ることに気付きました。

・・ずっと前からモヤモヤして、なんかやりたんねんけど何していいか分らん、なんかするにしても大袈裟やし、メンドクサイし。てありますよね。
ある盆休み、マーブルマシーンをYouTubeで観て作ろうと思い、見様見真似で作ってみたところ、らしいのが出来上がりました。その時は感動でした。「やればできる!」ですよ。
それ以来、今の私の中では、「自分のやりたいことを形にする」が一番すっきりする、やりがいのあること、です。この感動を皆さんにも味わって頂きたくて、このブログを書こうと思いました。(Eraso-・・(笑))

次回は、一気に飛びますが、CNCへ実際使用したDVDドライブから取り出したステッピングモーターを利用して単体動作させてみたいと思いますので、お楽しみに。

Arduinoを使った電子工作の入門書です。口コミでも初心者が分かりやすいというコメントが多いようです。

最新版

これ1冊でできる! Arduinoではじめる電子工作 超入門 改訂第4版 | 福田和宏 |本 | 通販 | Amazon

口コミが多いのは、

これ1冊でできる!Arduinoではじめる電子工作 超入門 改訂第3版 | 福田 和宏 |本 | 通販 | Amazon

つづく

-電子工作
-, , ,

Copyright© Fun-Desire-Blog  , 2024 All Rights Reserved Powered by STINGER.