その1はこちらです。
ライブラリがどうにか形になりました。ライブラリのテスト用に注文した28BYJ-48と、DVDのレーザー移動用ステッピングモーターを使います。ということで、ライブラリの説明より前にステッピングモーターをコントロールする回路の説明から入ります。今回は複雑にしないためにも制作中のライブラリは使わないで行います。
ここでは細かい説明はしないので「114.ステッピングモータを動かす」こちらのページが参考になると思うので、ぜひ読んでみてください。
28BYJ-48を回す
28BYJ-48のモジュールのIN1
IN2
IN3
IN4
をそれぞれ9
10
11
12
に割り当てました。このモーターは5端子のユニポーラ型なので、モジュールと言ってもただのトランジスタの集合です。ユニポーラは回路が単純なので扱いやすいですね!
ソース
gist.github.com
このソースですが、私はArduinoIDEではなくplatformIOにてC言語で開発しているため、先頭にincludeがありますが不要な場合は除いてください。
今回は1-2相励磁で回しているので、1-2相励磁で刻むように上に配列を定義しています。回転はstep関数で行っています。stepの引数には方向を示すint dを与えます。1か-1です。
stepごとに挟んでいるdelayMicrosecondsですが、ここでは900にしています。このモーターは900位が限界っぽいです。
動画
DVD用ステッピングモーターを回す
DVD用ステッピングモーターはバイポーラ型なので、28BYJ-48に比べて回路が面倒です。今回ステッピングモーター用のICを持っていなかったので困りました。ただ、Hブリッジが二つあれば良いので探していたら家にありました。TA7291Pです。正転反転できるタイプのモータードライバでPWMで速度も変えられます。が、今回はこれをただのHブリッジとして使います。
こんな感じの回路になりました。多分TA7291Pを二つも使ってステッピングモーターを回すという、もったいないことをしたのは僕くらいだと思います!
回路を裏から見た図です。少し灰色の線は表側を通しているという意味です。また、TA7291Pの向きですが、左上が少し欠けているのでそれが目印です。
そこそこ適当な回路ですが動作確認は取れました。図の左側が入力、右側が出力です。左側の+1
+2
-
ですが、モーターを外部電力で回す場合は+1
には外部を入れ、+2
にはArduinoを入れます。GNDはどちらも-
へつなぎます。入力のA1
A2
B1
B2
ですが、ArduinoへはA1
B1
A2
B2
の順番で9
10
11
12
へ繋ぎました。
今回のような小さなモーター(大きさで判断するのは良くない)は大したことなさそうだったので、+1
+2
を一緒にして両方ともArduinoに繋ぎましたが問題なく動作しました。
ソース
28BYJ-48と同様ですがこっちのモーターは低速回転なので、delayMicromecondsが900だと完全に脱調しました。最低でも2000が安定するようです。
動画
次回
次回は制作中のライブラリを実際に使ってみます。
その5はこちらです。