モーターを毎回同じくらい回転させることはできんのかな。
回転量を正確に制御することは難しいぞ。
モーターの回転をステップとして制御できる。
今回はこのあたりを動かしてみるか。
この記事では、「Raspberry Pi Pico W」を使って、「ステッピングモーターを動かす」方法をご紹介します。
「Raspberry Pi Pico W」は、Raspberry Pi の中でも、省電力なCPUを搭載したマイコン開発ボードです。
他のRaspberry Pi 製品とは異なり、Linux OSを搭載することは難しいですが、
省スペース、省電力の専用CPU「RP2040」を搭載しており、Arduino IDEや、MicroPythonなどで開発することができます。
しかも、Wi-FiとBluetoothが使用できるモジュールも搭載されているので、スタンドアロンでの稼働のみならず、他のマイコンと無線通信することが可能です。
さまざまなものに組み込むことができるので、モーターと組み合わせたりすることも多いのではないでしょうか。
その際に、指定の角度だけモーターを回転させたいということも出てきますよね。
DCモーター(ブラシ/ブラシレス)では、どれだけ回転したかを制御しようとすると、センサー値をフィードバックさせるなど、複雑な仕組みが必要になります。
また、サーボモーターは、回転角度は指定できますが、360度を超えて連続した回転を細かく制御するとなると難しいです。
そこで、登場するのが、「ステッピングモーター」です。
「ステッピングモーター」を使えば、360度回転をステップという単位に分けて制御することができます。
そこで、今回は、「Raspberry Pi Pico W」で、「ステッピングモーター」を、一定角度ずつ動作させるということを行ってみます。
「Raspberry Pi Pico W」に接続する際の環境構成や、プログラムを紹介します。
ぜひ、皆さんも挑戦してみてくださいね!
この記事の前提となる「Raspberry Pi Pico W」のはじめかたは、次の記事で紹介しています。
すけろく ついに、国内でもRaspberry Pi Pico Wを手に入れたぞ! げんろく Wi-Fiモジュールがついているので、 国内の技適取得が必要だったからな。 すけろ[…]
あわせて読みたい!「Raspberry Pi Pico W」関連の便利記事
すけろく ん~。 このエラーの時の変数の値が知りたいな~ げんろく どうした? プログラムがうまく動かないのか? すけろく そうなのだ。 Raspberry Pi Pico[…]
今回使用したマイコンとステッピングモーター、ドライバはこちら!
ステッピングモーター
ステッピングモーターを準備する
今回、使用するステッピングモーターは、「28BYJ-48」です。
まずは、ステッピングモーターについて、紹介します。
ステッピングモーターとは?
ステッピングモーターは、電気信号(パルス)を入力することで一定の角度だけ回転するモーターです。
回転数だけではなく角度を制御できるため、高精度な位置決めや制御に利用されます。
ステッピングモーターの種類
ステッピングモータは構造によって,2相,3相,5相に分類されます。
時計のように回転するステッピングモータは,1パルスで動かせる角度を「基準ステップ角」と呼びます。
基準ステップ角が細かければ細かいほど,滑らかでより精度の高い動きができます。
ステッピングモーターの駆動方式
ステッピングモータを駆動するにはドライバが必要です。
2相の場合,バイポーラ駆動かユニポーラ駆動かによって,ドライバの駆動回路が異なります。
3相と5相は,電流を双方向に流すことが可能なドライバが必要になります。
また,2相や3相ステッピングモータは,巻線構造が簡単なため,メーカーが違っても,同じ駆動回路でモータを回すことができます。
しかし,5相ステッピングモータの場合,巻線構造が複雑で,モータを回すために流す相の組み合わせや順番も1通りではありません。
したがって,5相ステッピングモータの場合,組み合わせるドライバには注意が必要です。
バイポーラ結線
1つの巻線に対して双方向に電流を流す駆動方式(バイポーラ駆動)を取る形式です。以下の特徴があります。
・構造は簡単だが駆動回路は複雑になる。
・巻線の利用効率がよく細やかな制御ができるので高い出力トルクが得られる。
・コイルに発生する逆起電力を低減できるので、耐圧が低めのモータードライバを利用できる。ユニポーラ結線
センタータップを持ち、1つの巻線に対し常に一定方向に電流を流す駆動方式(ユニポーラ駆動)を取る形式です。
次の特徴があります。
・構造は複雑になるが駆動回路は簡単になる。
・巻線の利用効率が悪く、バイポーラ結線に比べ約半分程度の出力トルクしか得られない。
・コイルに高い逆起電力が発生するので、高耐圧のモータードライバが必要になる。


ステッピングモータードライバ


- ステッピングモーター接続部
ステッピングモーターのケーブルについているコネクタを接続します。 - 信号入力
IN1~IN4まで、「Raspberry Pi Pico W」のGPIOと接続して信号を入力します。マイコン(Raspberry Pi Pico W)側 ステッピングモータードライバ基板側 GPIO2 IN1 GPIO3 IN2 GPIO4 IN3 GPIO5 IN4 - 電力供給(5V~12V)
電池や、電源から電力を供給します。電源側 ステッピングモーター
ドライバIC基板側Raspberry Pi Pico W側 5V 5V(+) VSYS GND GND(-) GND
当方で使用した際には、ショートピンも付属していましたが、もしない場合は、別途準備してください。

ステッピングモーター駆動時の動き



ステッピングモーターとRaspberry Pi Pico Wを接続する
マイコンと接続する際に、ブレッドボードを使って、回路を作ります。
今回は、次のように回路を作りました。

実際にブレッドボード上で回路を組んだ際のイメージは次のようになりました。
ステッピングモーターを動かすプログラム
ステッピングモーターを動かすプログラムを作っていきます。
プログラム内容
今回のプログラムは、次のような動きをするように記述してみます。
- 電源投入後、シリアルの入力待ちにする
- シリアル入力された値の回数だけ以下を繰り返す
①シリアル入力された回転角度を元に、どのくらいのステップを実行するか計算する
②ステッピングモーターを計算したステップ数だけ回転させる
③ステッピングモーターを停止する
ライブラリのインストール
次のライブラリをインストールします。
ライブラリ名 | 説明 |
Stepper
|
ステッピングモーター制御用ライブラリ |
ライブラリのインストールは、次の記事で紹介しています。
「Arduino IDE」では、使用する機能やセンサー、ボードを使用するプログラムで使用できる有効なライブラリが公開されています。 ライブラリを使用すると、効率的かつ品質を確保したプログラミングが可能です。 この記事では、Ar[…]
Arduino IDE スケッチ例
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
<プログラム本体>
ステッピングモーターを制御するプログラムの説明
ステッピングモーターを制御するために、プログラム内で次のように記載しています。
1
ステッピングモーター制御用ライブラリをインクルードします。
#include <Stepper.h> // ステッピングモーター制御用ライブラリ
2
ステッピングモーターを制御するための「Raspberry Pi Pico W」のGPIOと、使用するステッピングモーターのステップ数を定義します。
//Raspberry Pi Pico W GPIO →Stepping Motor Driver
#define SMTR_IN1 3 // ステッピングモータドライバへの入力用
#define SMTR_IN2 4 // ステッピングモータドライバへの入力用
#define SMTR_IN3 5 // ステッピングモータドライバへの入力用
#define SMTR_IN4 6 // ステッピングモータドライバへの入力用
// Stepper Value
#define STEPS 2048 // ステッピングモータのステップ数
次にステッピングモーター制御のインスタンスを生成します。
ここで、「SMTR_IN3」と「SMTR_IN2」の順番を変えていることに注意してください。
// ステッピングモータ制御用インスタンスの生成(SMTR_IN2 とSMTR_IN3を入れ替え)
Stepper stepper(STEPS, SMTR_IN1, SMTR_IN3, SMTR_IN2, SMTR_IN4);
3
ステッピングモーターのスピードを指定します。
stepper.setSpeed(10); // ステッピングモーターの速度を指定
stepper.step(256); // ステッピングモーターで動作させるステップ数を指定して実行(256 →45度)
void stopMotor() { digitalWrite(SMTR_IN1, LOW); digitalWrite(SMTR_IN3, LOW); digitalWrite(SMTR_IN2, LOW); digitalWrite(SMTR_IN4, LOW); }
Raspberry Pi Pico W への書き込み
- Raspberry Pi Pico WをパソコンにUSB接続します。
- Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」 - 「ツール」メニューからボートの設定部分にある「IP/Bluetooth Stack」の設定を次のものにします。
「IPv4 + Bluetooth」 - 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
この時指定するCOMポートは、USBで優先接続したプログラム書き込み用のCOMポートです。
注意しましょう。 - 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
動作確認
実際に、Bluetoothシリアルで接続した、Arduino IDEシリアルコンソールから次のように入力してみました。
入力値 | 命令の意味 |
45 | 45度回転させる |
90 | 90度回転させる |
180 | 180度回転させる |
360 | 360度回転させる |
【回転させている様子】
【シリアルモニタでの出力】
Input angle: 45.00 Stepper steps: 256 Input angle: 90.00 Stepper steps: 512 Input angle: 180.00 Stepper steps: 1024 Input angle: 360.00 Stepper steps: 2048
編集後記
いかがだったでしょうか。
ステッピングモーターを使うと、決まった角度だけ動作させることができるので、活用の幅は広そうです。
今回の記事は以上になります。
最後まで、ご覧いただきありがとうございました。
今回使用したマイコンと部品はこちら!
Raspberry Pi Pico W の他の記事はこちらからどうぞ!
すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく では、何か解決策はあるのかぇ? げんろく ステッピングモーターというものがある。 モーターの回転をステップとして制御できる。 今回はこのあたりを動かしてみるか。 この記事では、「Raspberry Pi Pico W」を使っ […]
すけろく 以前の記事で、Raspberry Pi Pico Wを Picoprobe経由でデバッグすることができた。 しかし、シリアルの入出力がArduino IDEで 読み込めないのだ。 げんろく そうだな。 Raspberry Pi PicoやRaspberry Pi Pico Wでは、 シリアル出力用の「Serial.println」では、 Picoprobe経由で取得できない。 すけろく […]
すけろく ん~。 このエラーの時の変数の値が知りたいな~ げんろく どうした? プログラムがうまく動かないのか? すけろく そうなのだ。 Raspberry Pi Pico Wでもデバック機能が使えると いいのだが。。。 げんろく ちなみに、Arduino IDE 2.1.0 のデバッグ機能で Raspberry Pi Pico / Wのデバッグができるぞ! やっとできたプログラムを動かしてみると […]
すけろく Raspberry Pi Pico WのBluetoothを 使ってみたいの~ げんろく うむ。そうだな。 そろそろ試してみてもよかろう。 すけろく しかしどんなことができるかの? げんろく Serial通信をBluetooth経由でやってみるのはどうだ? せっかくなのでLEDを遠隔で操作してみよう。 今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミ […]
すけろく うぬぬ。 げんろく どうした? 何かあったのか? すけろく Raspberry Pi Pico W にArduinoから プログラムが書き込めないのだ・・・ げんろく そうか。 前回書き込み時にバグを仕込んだな。 再初期化の方法を教えよう。 今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミングする際に発生する問題について、解決方法を紹介します。 発生 […]
すけろく Raspberry Pi Pico Wは、Wi-Fi接続できる。 ということは、ブラウザで接続できるな! げんろく そうだな。 ブラウザからRaspberry Pi Pico Wを 制御することもできる。 すけろく じゃあ、ブラウザから指示を出すことが できるな。 げんろく よし、スマホやパソコンからブラウザ経由で Raspberry Pi Pico Wを制御してみよう。 今回は記事では […]
すけろく Raspberry Pi Pico Wが、Arduinoでプログラミング できることは分かった。 げんろく そうだな。 意外とArduinoのライブラリで動く。 すけろく ああ。 ここらへんで、たくさんのLEDでも光らせてみないか? げんろく よし、LEDストラップを光らせてみるか! 今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミングします。 M5 […]
すけろく 最近、透明なディスプレイが出てきたな。 げんろく ああ。透過型ディスプレイというやつだな。 すけろく Raspberry Pi Pico Wでも使えるのか? げんろく 手元にあるものはSPI通信を使うタイプだから Raspberry Pi Pico Wでも使えるぞ。 Arduino でプログラムしてみるか! 今回は記事では、「Raspberry Pi Pico W」をArduinoでプロ […]
すけろく Raspberry Pi Pico Wでお天気情報を インターネットから取得できたな。 げんろく うむ。 お天気情報を取り込むことができたな。 すけろく 次は、お天気情報をディスプレイに 表示させたいな。 げんろく よし。 ならば、e-Paper(電子ペーパー)に表示してみるか! 今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミングします。 インター […]
すけろく Raspberry Pi Pico Wをインターネットに 接続できたということは、 インターネット上のサービスを使えるということだな。 げんろく うむ。 インターネット上の情報を取得することや、 データのアップロードなどができる。 すけろく では、天気情報を取得することもできるのか? げんろく できるぞ! 今回は、インターネット上の天気情報サービスから 天気情報を取得して表示してみるか! […]