「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。子供と一緒に楽しみながら気長にアップしてく予定です。【ステッピングモーター編】です。ステッピングモーターはモーターです。26で解説したモーターとは異なります。09【サーボモーター編】です。サーボモータは信号に応じて0度~N度の範囲で回転するモーターです。今回はサーボモーターの制御方法を理解します。サーボモーターをラジコンのステアリングのように動かしてみます。【DCモーター編】です。DCモーターはミニ4駆やラジコンなど、おもちゃに使われています。モーターそのものですので制御回路などは組み込まれていません。本Lessonでは、DCモーターを制御することでミニ扇風機を作成...omoroya.comパルス電力に同期して動作するモーターです。そのため、パルスモーターとも呼ばれます。このパルスと呼ばれる電力信号がステッピングモーターの肝となります。「パルスの電力信号って何?」と思うかもしれません。これは、モーターをパルスで制御するというだけです。これは以前に学習した「PWM」で制御するということとほぼ同義になります。【RGBダイオード制御編】にて学習しました。本Lessonに入る前に、一度復習しておくと理解の助けとなると考えます。LEDの色が3色以外の色になっていることを確認します。輝度の変更はパルス幅変調(PWM)にて制御します。これは「LEDがONしている時間を制御する」ということです。...omoroya.com本Lesson解説で使用しているのはArduino互換品です。互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。そのため互換品の品質も悪くなく、それでいて値段は安いです。正規品本体の値段程度で豊富な部品が多数ついています。Yahoo!正規品の本体単品がほしい方はこちらとなります。接続コードの書き込みコマンド説明サンプルコード動作確認まとめ最後にAmazonでお得に買う方法はじめにまず、ステッピングモーターの意味、原理をWikipediaで確認してみましょう。motor)は、パルス電力に同期して動作する同期電動機である。motor)とも言われる。簡単な回路構成で、正確な位置決め制御を実現できるので、装置の位置決めを行う場合などによく使われる。「パルス電力に同期して動作する」とあります。ステッピングモーターの動作は以下の2つで制御されます。回転速度:パルスの速度(周波数)で制御PWM制御でと考えると複雑に思うかもしれません。Arduinoの良いところはライブラリを使用するため制御を意識することはありません。ライブラリを使ってしまうと、実際の制御を理解できないという欠点があります。動かして遊んでみたいのでライブラリを使います。次回Lessonにて、ライブラリを使わない制御にも取り組んでいきます。これまで学習したモーターとの違いを簡単に記載しておきます。:電力をかけるとひたすら回転する。:信号によって0度~N度の角度を制御できる。ステッピングモーター:信号によって回転範囲に制限なく回転角を制御できる。いったところでしょうか。DCモーター同様に駆動させるためには一定の大きさの電流が必要になります。そのため、Arduinoの出力信号では能力不足となります。駆動能力を補うため、ステッピングモーター用のドライバICを使用するのが一般的です。本Lessonの目標は以下です。1.ステッピングモーターの使い方を理解する。2.ライブラリを使った制御方法を理解する。3.ドライバモジュール(ULN2003A)の使い方を理解する。今回も遊ぶことを最大の目標に楽しみましょう!準備ではLessonの準備に取り掛かりましょう。部品点数は多くないため、接続は簡単です。頑張って組み上げていきましょう。9V/1AAmazonでは、ステッピングモーターとドライバモジュールがセットで売られています。ほしいかたは、5個セットなどもあります。※こちらAmazon発送です。wireは今後も頻繁に利用します。–メス」の3種類を揃えておくことをお勧めします。新たに登場した部品について説明していきます。本Lessonで新しく登場する部品は以下となります。26にて解説していますのでご確認ください。下の写真が、ステッピングモーターです。型名:28BYJ-48制御用のドライバモジュールに接続できるようにコネクト端子がついています。キットには合わせて梱包されています。ステッピングモーター原理ステッピングモーターの原理を解説すると膨大になります。膨大すぎて、管理人には説明しきれません・・・。そこで、学習できるサイトをさがしました。下記サイトはe-ラーニングでステッピングモーターについて学習できます。興味のある方はご確認ください。「ステッピングモータ」ここでは簡単に分類だけ解説しておきます。Type、複合形)●コイルへの電流の流し方での分類ユニポーラ型(単極性)バイポーラ型(双極性)本Lessonで使用する「28BYJ-48」は、PM型/ユニポーラ型となります。本Lessonで使用してるステッピングモーター型番は「28BYJ-48」。キットに梱包されているモーターとなります。データシートはDigi-keyなどで確認ができます。https://www.digikey.jp/ja/datasheets/mikroelektronika/mikroelektronika-step-motor-5v-28byj48-datasheetここでは代表的な仕様のみ記載します。詳細はデータシートをご確認ください。28BYJ-48」は下図に示すようにフェーズ数が4相となっています。4.橙この相への電流のかけ方は3種類あります。制御が簡単だが、安定性が良くない。ON以上、簡単に励磁方式の特徴を羅列してみました。それぞれ、必要に応じて選択ということでしょうか。制御方式は2相励磁方式となります。●回転角度についてステッピングモーターの仕様から以下のことが言えます。stepで中心軸が1回転。そのため、実際の車軸(外に出ている軸)を1回転させるのに必要なstep数は下記となります。stepで1回転することになります。stepで中心軸が1回転。そのため、実際の車軸(外に出ている軸)を1回転させるのに必要なstep数は下記となります。stepで1回転することになります。本Lessonでは2相励磁方式での制御となります。stepで1回転を頭の片隅に置いておいてください。実物写真こちらが、ドライバモジュール実物写真。ULN2003AのドライバICが搭載されています。本Lessonで使用してるドライバーモジュールは「ULN2003AのICを使用」。キットに梱包されているドライバモジュールとなります。ここでは代表的な仕様のみ記載します。詳細はデータシートをご確認ください。500mA出力クランプ・ダイオード※保護ダイオードのことです。Instrumentsで確認ができます。下記にULN2003Aとステッピングモーターの接続例を示します。下記にドライバーモジュールの概要を示します。基本構成は、下記4つをまとめたモジュールです。最初に回路図を確認してください。次に、回路図に合わせて部品を接続します。最後にコードを書いて、ステッピングモーターを動かしていきましょう。Arduinoのピン配置を確認したい方は番外編02を参照してください。arduinoの入門編を書いていて、arduino自体の説明をしたいと考えていました。arduino自身のことを理解しておいた方が良いですよね。いうことで番外編...omoroya.com回路図ドライバモジュールのコネクトピンにステッピングモーターを接続。Arduinoはデジタル入出力ピンの8,9,10,11番ピンを使用しドライバーモジュールに接続。IN1(ドライバモジュール)Arduinoを損傷させないためにドライバモジュールの電源は電源モジュールから供給。こちらがブレッドボード図。電源モジュールにはDCプラグから9Vの電池(ACアダプタでも可)でつなぎます。ブレッドボードへの電源供給は、電源モジュールの左上、左下にある+、-端子をブレッドボードの上下のVCCとGNDに挿入することで供給されます。電源モジュールの出力は5Vとする。回路図は「fritzing」を利用しています。「fritzing」の使い方は下記を参照してください。fritzingUNOの実際の回路を写真で掲載しても、接続がわかりずらいかなと考えていました。前々から「fritzing」を利用して回路を描くことで、わかりやすくしたいと考えていました。下図に示すように、用意した部品を使用して接続しましょう。部品はステッピングモーター、ドライバモジュール(ULN2003A)、電源モジュールとなります。部品点数が少ないため、接続は簡単です。使用するポートは、デジタルピンは「8,9,10,11」です。穴に挿入しづらいときは、ラジオペンチなどを使用してください。コードの書き込み接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。本Lessonではライブラリ「Stepper.h」を使用します。このライブラリは標準ライブラリです。IDEに標準で搭載されていますので、そのまま使用できるはずです。使用できない場合は、下記を参照して使えるようにしておきましょう。【ライブラリインストールおよびPCとの接続編】ライブラリはセンサなどの部品を簡単にArduinoに接続して使用するためのコードの集まりです。接続はArduinoにコードをアップデートするために、COMポートを設定し、PCとArduinoを接続する作業です。本Lessonでは、「Stepper.h」のライブラリを使用します。このライブラリのコマンドについて解説します。Arduinoボードに接続されているステッパモータを表すStepperクラスのインスタンスを新たに生成。setup()とloop()より前で定義。戻り値:作成したインスタンス例myStepperというインスタンスを生成。100ステップ、Arduinoのピンは8,9,10,11を定義。モータの速さを毎分の回転数(RPM)で設定。setSpeed()で設定した速さで、指定したステップ数だけモータを回す。steps:モーターが回転するステップ数。1000ステップモーターを回す。myStepperで定義済みの場合myStepper.step(1000);ライブラリを使用することで、励磁方式等々を意識することなく使用できます。これがArduinoの良いところですね。実際の動作シーケンスを理解できないという欠点があります・・・。サンプルコードGitHubにステッピングモーターを動かすサンプルコードがあります。参考にしてみてください。GitHub....github.com本Lessonでは、上記のサンプルコードを参考にわかりやすくするために簡潔にしました。一定のスピードで90度づつ回転するスケッチとなります。スケッチ内で電流を遮断するコードを記載しています。これは、静止状態が「その状態を維持する」という状態であり、維持するために電流が流れ続けてしまうからです。それなりに電流が流れ発熱しますので、90度回転後はその状態を維持するのではなく電流を遮断するようにしています。11);4相のため、ピンは2ピンずつのセットで考えます。本Lessonの接続の場合は、8と10、9と11の組み合わせとなります。静止時には電流を遮断する。//90度回転したら500ms待つ}動作確認では、さっそく動作を確認していきます。・・・の繰り返しとなるはずです。※gifで作成しているため、容量圧縮のため画像サイズは小さくしてあります。まとめ今回は以下の内容について理解してもらいました。1.ステッピングモーターの使い方を理解する。2.ライブラリを使った制御方法を理解する。3.ドライバモジュール(ULN2003A)の使い方を理解する。いかがだったでしょうか。ステッピングモーターは3Dプリンタなどでも使われています。使い方をマスターできれば、色々なもの作りに応用ができそうです。応用するにはもっと理解する必要がありそうです。疑問点、質問などありましたら気軽にコメントください。本Lessonではライブラリを使用しましたが、動作理解のためにライブラリを使用しないスケッチにも挑戦ます。28では、ライブラリを使いステッピングモーターを制御しました。29では励磁方式の制御を1つ1つスケッチに描くことで、ステッピングモーターの動作をより...omoroya.com最後に疑問点、質問などありましたら気軽にコメントください。この電子部品の解説をしてほしい!などなどなんでもOKです。リンク切れなどあればコメントいただけると助かります。Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。Arduino入門編で使用しているUNOはAmazonにて購入可能です。互換品とは言え、Arduinoはオープンソース。複製して販売するのもライセンス的に問題なし。そのため互換品の品質も悪くなく、それでいて値段は安いです。正規品本体の値段程度で豊富な部品が多数ついています。学習用、遊び用、お試し用には安価な互換品がおすすめです。Yahoo!上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。Yahoo!Amazonでお得に買う方法Amazonでお得に購入するなら、Amazonギフト券がおすすめです。現金でチャージするたびに、チャージ額に応じたポイントが付与されます。「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。モジュール」の使い方を学習します。フォトレジスタは別名で色々な言い方がありますが、要は「光センサー」です。【フォトレジスタ編】についてはLessonを2回に分けます。「其の1」では、基本的なコードを理解します。「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。赤外線受信センサモジュール編です。家電製品のリモコンの信号を受信するための電子部品です。【ジョイスティック編】(2)「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。ジョイスティック編(2)です。Lesson13で学習したことを利用して、ジョイスティックで4色のLEDを制御します。「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。10超音波距離センサ編です。超音波を飛ばして、帰ってくるまでの時間から距離を測定します。【プッシュボタンスイッチ編】このLessonでは、機械的にスイッチを使ってLEDをオン、オフさせるわけではありません。スイッチを「押した」「押してない」という行為をデジタル信号としてUNOに認識させるということです。コメントをキャンセルメールアドレスが公開されることはありません。