GPIO の使い方がわかったのでステッピングモータを回してみる。
用意するもの。
ステッピングモータ | コパル SPG20-1362 | 秋月で購入。250円 |
モータドライバ | パワーMOS-FET MP4401 | 秋月で購入。200円 |
ACアダプタ | 5V 2.3A | 持っていたものを使用。600円 |
ブレッドボード用DCジャックDIP化キット | 持っていたものを使用 | |
ブレッドボード | ||
ジャンパーケーブル |
ハードウェア構成
RaspberryPi <--> MP4401 <--> SPG20 といった感じで接続。制御信号の接続は以下のとおり。
RasPiのC1コネクタ | BCM2835のピン | MP4401の入力ピン | MP4401の出力ピン | SPG20 |
P1-12 | GPIO-18 | P-12 | P-11 | P-6(X) |
P1-16 | GPIO-23 | P-8 | P-9 | P-2(/X) |
P1-18 | GPIO-24 | P-5 | P-4 | P-5(Y) |
P1-22 | GPIO-25 | P-1 | P-2 | P-1(/Y) |
P1-06 | GND | P-6,P-7 | --- |
RasPi のGPIOは 3.3V, モータ用電源は 5V.MP4401 と SPG20には5Vを接続する。
5V | MP4401 P-3,P-20 | SPG20 P-3(1C), P-4(2C) |
参考URL
RasPi のピンアサインについてはRPi Low-level peripheralsを参照。Rev.1 と Rev.2 で若干ピンアサインが変わったらしい。自分のボードは Rev.2。
ステッピングモータを取り敢えず回すにはGPIOだったらどのピンでもよかったのだが、兼用ピンの設定方法をどうするのか調べるのが面倒だったので(汗、なるべく兼用でないピンを選んだら上記のようになった。
MP4401とSPG20のピンアサインは秋月からダウンロードできるデータシートをみればわかる。
ソフトウェア
RasPi用のCのライブラリC library for Broadcom BCM 2835 as used in Raspberry Piが公開されていたので、ありがたく使わせていただく。
ライブラリに含まれていた GPIO のサンプルを参考に、ステッピングモータを回すように修正。
2相励磁と1-2相励磁の2パターンで回してみた。見た目は変わらなかった(笑
ソースコードがベタ書きでカッコ悪かったので修正。
- モータの励磁パターンを構造体の配列に変更。
- 回転方向を enum で定義
- モータの駆動処理をベタ書きから励磁パターン配列を使ったループ処理に変更。
かなりすっきりした。2相励磁関数と1-2相励磁関数は励磁パターン配列以外は共通なので、簡単に共通化できる。しかし、励磁パターン配列をパラメータ化すると、ポインタ演算が毎回余計に必要となるのでやめた。
コンパイラの最適化オプションで良きに計らってくれるかもシレナイガ。
モータが回る動画
動いている様子をYoutube にアップした。RaspPi でステッピングモータを回す