Fu-Nちょっと分かった。何か面白くなってきた。。

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基板が必要なのでご注意、リンクはもう少し下にあります)


KS26536 イーケイジャパン モーター・リレー・ブザー制御入門 Arduinoビギナー活用入門シリーズ
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ビギナーのためのモーター,リレー,ブザー制御入門より抜粋


尚、キット一式はこちらで揃います。

【☆送料無料★10倍ポイント】Arduino ではじめる電子工作対応 プログラミング スターターキット 知育玩具 STEM教育 STEAM教育 マイコン ロボット アルディーノ アルデュイーノ 大量注文可

Arduino本体だけならこちら。

Arduino Uno Rev3 アルドゥイーノ ウノ ATmega328P 電子工作 プログラミング ロボット

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 秒待つ
}


5.まとめ

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

今回は、モーターを回してみましたがいかがでした?ちょっと、長かったですね。配線作業される時はショート(短絡)する回路構成になってしまわないように、さらに火傷や破損に注意して下さい。(大きな電流が流れると発熱するので)
怖い話に聞こえますが、通常の電気製品はこのようなことが起こらないように、安全対策が取られている(絶縁されている)ので、大丈夫です。ただし、電子工作などで自分でやる場合には注意が必要ということです。(それも電圧が低かったり、モーターの容量も小さく、基本的には、ショート(短絡)など大きな電流を流し続けなければ、安全です)

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

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

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

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

最新版

口コミが多いのは、

つづく

-電子工作
-, , ,

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