豆腐とコンソメ

豆腐とコンソメ

もろもろのプログラム勉強記録

RaspBerryPiでステッピングモーターを動かす

tohutokonsome.hatenablog.com

ラジコンカーをつくるためにモーターを漁っていたら、「ステッピングモーター」に触れる機会があったので書いておきます!

動かすのに、かなり苦戦しました。

誤っている箇所があればご指摘いただけると嬉しいです!

ステッピングモーターとは

通常のモータは電流を流すと、ぷしゃあああと何回転もするの対して
ステッピングモータは、とりあえず30度回転しよっかみたいみたいな感じで
回転する角度を制御できるみたいです。

使用した製品

以下の製品を使用しました。

ステッピングモーター
バイポーラ ステッピングモーター MDP−35A 48ステップ: パーツ一般 秋月電子通商 電子部品 ネット通販

モータードライバ
DRV8835使用ステッピング&DCモータドライバモジュール: 組立キット 秋月電子通商 電子部品 ネット通販

これらは、ラズパイマガジン2017年2月&4月号の電子工作入門部品セットに含まれています。

ラズパイマガジン 2017年2月号 (日経BPパソコンベストムック)

ラズパイマガジン 2017年2月号 (日経BPパソコンベストムック)


ラズパイマガジン 2017年4月号(日経BPパソコンベストムック)

ラズパイマガジン 2017年4月号(日経BPパソコンベストムック)

モータードライバのはんだごて

ブレッドボードに接続する際には、端子とモータードライバをはんだごてする必要があります。

モータードライバはものすごく小さい!
f:id:konoemario:20170416014034j:plain

とりあえず部品を固定しないとどうにもならないので、ブレッドボードに挿して固定することにしました。
おそらく推奨されないやり方だと思われますが、突き進みます。

f:id:konoemario:20170416131614j:plain

はんだごてをするための「はんだ」も写っているのですが 部品に比べかなり大きいです。
電子工作用のもうすこし細いやつを購入すればよかったかも。

また、端子は14本あったのですが、モータードライバは6本が2つ必要だったので手で折っちゃいました。
この辺のことは常識なのか、どこにも説明が書いてないので不安になります。



はんだごて途中経過

f:id:konoemario:20170416014650j:plain

びっくりするぐらい下手くそですね。
念のため買っておいた、はんだ吸い取り線が大活躍しました。



汚いながらも、なんとか最後まで完了しました。

f:id:konoemario:20170416014907j:plain

配線をしてみる

伝える気があるのかないのかわからない絵ですが、こんな感じです。

f:id:konoemario:20170416021142j:plain

ラズパイから、モーター用の電源5V、モータドライバー用の電源3.3Vを供給しています。

モーターのデータシートをみると、駆動電圧12Vとなっており、モータドライバの方もMAX12Vと記載があるので、今回は少なめです。

絵の中のラズパイから伸びている、青、白、黄、赤の線ですが、こちらがプログラムで制御する部分になります。

ステッピングモーターは、DCモーターとは異なり、線が4本あります。

細かい仕組みはさっぱりですが、この線に決まった順序で電圧をかけていくことで、モーターが回転します。

f:id:konoemario:20170416134103j:plain

ここまでを簡単に整理すると、 以下の通りとなります。

  • AIN1→AOUT1(青の線へ出力)
  • AIN2→AOUT2(白の線へ出力)
  • BIN1→BOUT1(黄の線へ出力)
  • BIN2→BOUT2(赤の線へ出力)

ですので、今度はラズパイ側から、AIN1〜BIN2へ信号をおくるために配線を行っていきます。

まず前提のとなるラズパイ側ピンの役割は以下の通りとなります。

f:id:konoemario:20170416140214j:plain

※下段部分の絵は、公式の絵になります。 www.raspberrypi.org

黄色のGPIOの部分がプログラムから制御できる部分になります。

今回は、AIN1〜BIN2の制御は以下のピンを使うことにしました。

  •  7番のピン-AIN1
  • 11番のピン-AIN2
  • 13番のピン-BIN1
  • 15番のピン-BIN2

ちなみに、1番のピンはモータードライバの電源、2番のピンはモーダー電源として利用しました。
6番もGND(マイナス側)として利用しています。

※GNDってなんだってなるのですが、ラズパイをただの乾電池として捉えると、理解しやすいかもです。
電流はプラスからマイナスに向かって電流が流れます。
なので、乾電池もプラス極とマイナス極をつないで初めて電流が流れます。

GPIOや電源の部分は全てプラスになります。
GND(マイナス)まで回路をつなぐことで、電流が流れ始めます。

全部つなげてみるとこんな感じになりました。

f:id:konoemario:20170416143227j:plain

Pythonで実行してみる

コードは、以下の通りとなります。
冗長なコードかもしれませんが許してください。 

一点混乱するところとして、PINの番号とGPIOの番号が一致していません。

  • GPIO4 -7番のピン
  • GPIO17-11番のピン
  • GPIO27-13番のピン
  • GPIO22-15番のピン

物理的なピンの番号と、内部の役割に応じた番号で違っているみたいです。
公式サイトにそれらしき関係が載っていました。
Raspberry Pi GPIO Pinout

ステッピングモーターを動かす

反省点

備忘録がてら反省点を。

はんだごてが適当すぎた

最初、モーターが全然動きませんでした。
テスターを使ってステッピングモータのそれぞれの線に電流が流れているのかを確認した結果
白の線に電流が流れていないことが判明。
対応するモータドライバ部分のはんだをやり直した結果、電流が流れるようになった。

データシート、秋月電子通商のマニュアルをちゃんと読むべき

http://akizukidenshi.com/download/ds/sanyos/MDP-35A_a.pdf http://akizukidenshi.com/download/ds/akizuki/AE-DRV8835-Ss.pdf

作業の進め方は、ラズパイマガジン2月号のステッピングモーターの内容で進めていました。
ラズパイマガジンには、読者限定サイトが用意され、配線図や、Pythonコード収録されています。

しかし、配線図、コードを、そっくりそのまま実行したところ、モーターがまったく動きませんでした。

前述のはんだごてがダメだった部分もあり、調査にいろいろと時間がかかったのですが
最終的にデータシート、秋月電子通商のマニュアルをよく見ることで解決しました。