Raspberry Pi でブラウザから操作できるラジコン戦車を作る! – DC モーターを動かす –


■Raspberry Pi で DC モーターを動かす

Raspberry Pi で

・ブラウザから操作できるラジコン戦車

を作るシリーズ第四回目。

今回は、

・Raspberry Pi で DC モーターを制御できるようにする

ということにチャレンジする。

手順は以下のとおり。

今回はまず、ラズパイから直接 DC モーターを制御する所まで。

ブラウザから DC モーターを制御する方法については、

次回記載していきたいと思う。



■ハンダ付けをする

ラズパイで DC モーターを動かすために、

まずやるべきはハンダ付け。

正直に言えば、別に必須の作業ではなく、

やらなくても動かせるのは動かせる。

が、これまで揃えてきた DC モーターと

ジャンパワイヤの組み合わせでは、

これら二つを固定的に接続する仕組みがないため、

これらが接触していれば動く、外れると止まる

という挙動になり、常時接触させておくのが結構大変。

よって、素直にハンダ付けした方がよい。

今回使ったのはこれ。

電源が USB からとれる上、30 秒も熱すれば

ハンダ付け可能となる。

また、使うはんだの量は、このセットに付随しているはんだ
*写真のバネのようなもの

の量で十分。

よってこれを使ってハンダ付けしていく。

ハンダ付けするのは、

の二ヶ所。

以下各々について記載していく。

・DC モーターとジャンパワイヤ

ハンダ付けがほぼ必須なのが、

この DC モーターとジャンパワイヤ間。

DC モーター自体は、この後にも使う、

ギアボックスに付属しているので、これを使う。

実際のギアボックスの中身はこんな感じ。

ギアボックス自体はまだ組み立てない方がよいが、

モーターの回転をギアに伝えるための紫のギアだけは、

DC モーターの軸につけておくとよいだろう。

で、後は単に DC モータの金属部分と、

オス – オスのジャンパワイヤ 4 本を、

各々ハンダ付けすればよい。

作業時間としては 5 分もかからないだろう。

実際にハンダ付けした結果はこんな感じ。

この際、はんだはあまりケチらずしっかりつけておく方がよい。

実際に配線する際、結構色々動かすので、

ハンダ付けしてても外れてしまう可能性があるから。

多少多めにつけた所で、はんだが足りなくなることもないので、

きっちりくっつけておくことをお勧めする。

・micro USB DIP 化キット

続いては、micro USB DIP 化キットのハンダ付け。

こちらはモバイルバッテリーからの電源を

DC モーターに供給できるようにするもの。

購入したものを開封した実物はこちら。

で、まずは基板部分の長いラインをパキッと折る。

その後、一つだけまたパキッと折る。

ピンの方は、二本分を折る。

私の場合、そこから一本一本に分離できなかったので、

ハサミの根元を使って切った。

その上で、ピンを基板に差し込む。

この際、差し込む位置は基板上の

・VCC
・GND

とかかれた部分。

ピンが基板からちょっとでるか出ないか、位差し込んで、

その頭の部分をハンダ付けしておけばよい。

実際はこんな感じ。



■モータードライバを配線する

ハンダ付けを終え、準備が整ったら、

次はいよいよモータードライバを配線していく。

ラズベリーパイから DC モーターを動かすためには、

・モータードライバ

が必要となる。

というのも、

・ラズパイの GPIO に直接 DC モーターを接続する

ということをすると、ラズパイ側の GPIO に許容された

出力電流値を越えてしまい、壊れてしまう恐れがあるからだ。

ということで、

・Raspberry Pi 3 Model B
・モータードライバ
・DC モーター
・ジャンパワイヤ
・抵抗
・micro USB 電源 DIP 化キット
・モバイルバッテリー

を準備する。

・micro USB DIP 化キットの接続

最初に、ブレッドボードに DIP 化キットを差し込み、

DIP 化キットにモバイルバッテリーを繋ぐ。

絵としてはこんな感じ。

ここで、ブレッドボードの中身の配線は、

こんな感じになっていることに注意しよう。

 

今回利用しているブレッドボードの場合、

長方形の長辺側を横とした場合、

短辺方向である縦が同一ラインとなっている。

なので、先ほどの VCC と GND が

同じラインに接続される、

すなわち、写真の差し込みを 90 度回転させたような形で

差し込んでしまうと、電源と GND がショートしてしまって

壊れてしまうので、この向きにはちゃんと注意した方がよい。

・モータードライバと抵抗の配線(一個目)

続いて、モータードライバと抵抗を接続する。

利用するモータードライバはこれ。

左から 1 番ピン、2 番ピン、…、10 番ピンとなっている。

それぞれのピンの意味は以下のとおり。

ピン番号 用途 説明
1 GND GND
2 OUT1 DC モーターへの信号出力用
3 N/A 不使用のピン
4 Vref 参照用電圧入力
5 IN1 DC モーター制御用信号の入力
6 IN2 DC モーター制御用信号の入力
7 Vcc モータドライバ自体の駆動用電源
8 Vs DC モータを駆動するための電源
9 N/A 不使用のピン
10 OUT2 DC モータへの信号出力

以下、これを踏まえて配線時に各々開設していくが、

ここではとりあえず差し込むぐらいなので、

別に何も難しいことはない。

ひとまずやることとして、

1. 電源と GND ラインを作る
2. モータードライバを差し込む
3. モータードライバの 4 番ピンと電源ラインを抵抗で結ぶ

を実施すればいい。

以下、各々図解していく。

まずは電源と GND ラインを作る。

先ほど差し込んだ micro USB 電源 DIP 化キットの

VCC が差し込まれている所を電源ライン、

GND が差し込まれている所を GND ラインに各々する。

やること自体は簡単で、ブレッドボードの配線を考え、

下半分の配線ラインと上半分の配線ラインを繋ぐだけ。

実際にはこんな感じ。

次はモータードライバ。

後々の配線を考え、この辺に差し込む。

次は抵抗。

モータードライバの 4 番ピンは、Vref となっており、

いわゆる参照用電圧を入力する所となっている。

ここに raspberry pi から PWM 信号を入力すると、

参照電圧が変更となるため、DC モーターの速度調整が出来る模様。

が、今回はひとまず動かすことを最優先とするため、

抵抗を挟んでショートしないようにしつつ、

電源ラインと接続させる。

とりあえず物を差し込むのはこれぐらいで OK。

・DC モーターを動かすための配線

さて、いよいよ DC モーターを動かすために、

Raspberry Pi を含めて配線していく。

まずは GND 系の配線から。

先ほど作った micro USB 電源からの GND ラインを

モータードライバの 1 番ピンに接続する。

次に、同じく micro USB 電源からの GND ラインを

Raspberry Pi の GPIO における GND ピンに接続する。

Raspberry Pi 3 Model B のピン配置は、

公式サイトの

GPIO: Models A+, B+, Raspberry Pi 2 B and Raspberry Pi 3 B
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md

に記載がある。

このうちどこの GND に接続してもよいが、

今回はとりあえず上述のページ下部に存在する

Physical numbering

で言う所の、物理番号 39 番ピン、に接続した。

続いては電源ラインの構築。

まずは micro USB 電源 DIP 化キットの VCC ラインと、

モータードライバの 8 番ピンを繋ぐ。

これにより、モバイルバッテリーからの電力を

モータードライバ経由で DC モーターに送ることになる。

こんな感じ。

次は、モータードライバ自体を動かすための電源の取得。

これは、Raspberry Pi の 5V 電源ピンから取る。

ということで、Raspberry Pi の 5V 電源ピンと、

モータードライバの 7 番ピンを接続する。

今回は Raspberry Pi 側のピンとして、

物理番号で 4 番ピンを利用した。

これで、電源ラインと GND ラインが構築できたので、

続いて DC モーターと接続していく。

DC モーターには、モータードライバの

OUT ピン(2 番と 10 番)を各々接続する。

まぁどっちがどっちでもよい。

そしていよいよ、Raspberry Pi からの制御用信号を配線する。

ここでは、以下のとおり接続する。

モータードライバ側 ラズパイ(論理ピン番号) ラズパイ(物理ピン番号)
5 9 21
6 11 23

ここまで接続できれば、あとは実際に動かしてみるのみである。

ドキドキの瞬間だ。

■Raspberry Pi から DC モーターを制御する

一個目の配線が終了すれば、動作確認を行おう。

まずはラズベリーパイのコマンドプロンプトから、

      pi@raspberry:~$ echo 9 > /sys/class/gpio/export
      pi@raspberry:~$ echo 11 > /sys/class/gpio/export

を実行する。

もしここで、

      bash: echo: 書き込みエラー: デバイスもしくはリソースがビジー状態です

のようなエラーが出た場合、このエラーが出なくなるまで、

ラズパイ側の GIPO ピンを変更すればよい。

続いて、

      pi@raspberry:~$ echo out > /sys/class/gpio/gpio9/direction
      pi@raspberry:~$ echo out > /sys/class/gpio/gpio11/direction

を実施して、ラズパイの GPIO ピン(論理ピン番号 9 番と 11 番)を、

出力用のピンとして設定する。

その後、

・モバイルバッテリーの電源を入れる

という作業をやった後に、

      pi@raspberry:~$ echo 1 > /sys/class/gpio/gpio9/value

を実行すると、GPIO の論理ピン番号 9 番に High 信号が送られるため、

DC モーターが動いてくれるはずである。

ちなみに stop は

      pi@raspberry:~$ echo 0 > /sys/class/gpio/gpio9/value

で止まる。

これにて、raspberry pi から DC モーターを制御できたことになる。

もしここで動かない場合は、以下の点を確認してみて欲しい。

1. モバイルバッテリーはちゃんと充電されているか?
2. モバイルバッテリーの電源は上述のタイミングで入れたか?
3. モバイルバッテリーの電源投入後すぐに動かしているか?
4. 配線は間違えてないか?
5. 配線の外れ、ブレッドボードへの不十分な刺さりなどがないか?
6. 動作させるコマンドを間違えていないか?
7. ラズパイの GPIO ピン番号と接続先はあっているか?

結構ありうる話なので、しっかり確認していただきたい。

基本これで動くはずなので、何度確認しても誤りがない場合、

A. DC モーターの故障
B. モータードライバーの故障
C. モバイルバッテリーの故障
D. ラズパイ自体の故障

などが考えられる。

A は電池に直結して動くかどうかで確認できる。

B は二つあるはずなので、もう一つのモータードライバーと

入れ替えてみて動くかどうかをみればよい。

二つとも壊れているという可能性は著しく低いので、

入れ替えても動かないなら、多分これが問題ではない。

C はスマホなどに充電してみれば分かる。

これも多分ないと思う。

D の確認方法は難しいが、

サーボモーターを動かす!

など、別の方法を試してみてもダメならこれだろう。

ただ、大体動かない要因は、

・配線が間違っているか、外れている
・モバイルバッテリーからの電源が切れている

になるので、何度も確認して頂きたい。

・モータードライバと抵抗の配線(二個目)

一個目が動いてしまえば、後は簡単。

まずはモータードライバと抵抗を

一個目と同じように配置する。

続いて GND ラインの接続。

micro USB 電源 DIP 化キットの

GND ラインからとってもよいが、

今回は一個目のモータードライバに入力した GND ラインを

下側に配置した二個目のモータードライバにも入力する。

で、同様に、一個目のモータードライバに入力した

モータードライバの駆動電源である 7 番ピンと、

DC モーター駆動用電源の 8 番ピンを、

二個目のモータードライバに橋渡ししてやる。

続いては、ラズパイとの接続。

今度は GPIP の論理 22 番ピンをモータドライバの 5 番ピンに、

23 番ピンをモータドライバの 6 番ピンに接続。

モータードライバ側 ラズパイ(論理ピン番号) ラズパイ(物理ピン番号)
5 22 15
6 23 16

 

最後に DC モーターからの配線を

モータドライバの 2 番ピンと 10 番ピンに入れる。

後は一個目と同様に、以下のとおり動作確認をすればよい。

      pi@raspberry:~$ echo 22 > /sys/class/gpio/export
      pi@raspberry:~$ echo 23 > /sys/class/gpio/export
      pi@raspberry:~$ echo out > /sys/class/gpio/gpio22/direction
      pi@raspberry:~$ echo out > /sys/class/gpio/gpio23/direction
      pi@raspberry:~$ echo 1 > /sys/class/gpio/gpio22/value
      pi@raspberry:~$ echo 0 > /sys/class/gpio/gpio22/value
      pi@raspberry:~$ echo 1 > /sys/class/gpio/gpio23/value
      pi@raspberry:~$ echo 0 > /sys/class/gpio/gpio23/value

こちらも、一個目が動いているのに二個目が動かない場合、

まず疑われるのは配線間違えか配線が外れているなので、

この辺を十分再確認した方がよいと思われる。

ひとまず、これにて二個の DC モーターを

Raspberry Pi から操作出来たことになる。

なお、当サイトで紹介した配線に関しては、

RaspberryPi3で作るラジコン
https://qiita.com/imcuddles/items/c05cbea95db1f7469fed

を参考にさせていただいている。

もし分かりにくい等があれば、こちらには

配線図等も記載されているので、

参考にされればよいかと思う。



■まとめ

ひとまずこれで、

・Raspberry Pi から DC モーターを制御する

ということが出きるはずである。

これが出来れば、ラジコン戦車に限らず、

DC モーターを使ったいろんなことが出きると思う。

また、実際にものを動かせる、という喜びも感じられる。

是非ともこれで楽しんでいただきたい。

ということで、ひとまずここまでの作業をまとめておく。

ここまでの Point!・DC モーターとジャンパワイヤはハンダ付けしておこう!
・micro USB 電源 DIP 化キットもハンダ付けしておく方がよい!
・配線はまずは一個ずつやった方がよい!
・ラズパイからの動作確認は、まず /sys/class/gpio/ の操作で!
・動かない時は何より配線を再確認!後はモバイルバッテリーの電源を確認しよう!

今回は DC モーターを接続した raspberry pi 本体を

直接操作することで、DC モーターを制御している。

が、これだとラジコンとは言えない。

ということで、次回は WebIOPi を使い、

ブラウザから DC モーターを制御する

ということに挑戦していく。




Copyright (c) 2017 Webmaster of this site All Rights Reserved.
カテゴリー: ラズパイで電子工作 タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。