2015年05月15日

初めてのモーター制御

今回は、ずっと前からやろうとして後回しにしていたモーター制御にやっと挑戦(^^;。



入門書を読んで、モータードライバというICを使えば難しいことはないとはわかっていた。だが、剥き出しのモーターを買ってきて、それをただ回したところを見てもつまらないので、とりあえずUSB扇風機あたりを考えてパーツを準備していたのだが、それでもやっぱり、扇風機が回るのを見てもたいして面白くもないので(笑)、ほかの実験を優先していた(^^:。

もうひとつ、躊躇していた理由がある。それは、

モーター用の動力は、外部電源が必要

モーターは電力が大きいのでラズベリーパイのGPIOの5Vや3.3V端子では間違いなく電力不足になる。モーターによっては6Vや9Vが必要だったりするとそもそも電圧も足りていない。
電圧の高い外部電源を回路に組み込むとすると、もし配線を間違えたらラズベリーパイを壊してしまうかもしれない(- -;。それが怖くて「もうすこし電子回路に慣れてから」と慎重になっていた。

そんな時に、タミヤのロボクラフトシリーズという、子供向けの工作キットがあると人から聞いて、ネットで調べてみると、安価のわりに動きがそこそこ面白くて、しかも構造がシンプルで改造例も多いことを知り、急にやる気が出る(^o^)。



また、このキットはアルカリ単3乾電池2本で動くので、1.5V x2 = 3Vの外部電源なら、ラズベリーパイの内部電圧(3.3V)より低いくらいで安心できるというのも背中を押した理由のひとつ(^^;。


【キットの組み立て】
まずはキットをそのまま作って、“正常に動く”ことを確認しないと始まらない。
このキットは、ビス止めか、はめ込み式で、組み立てに必要なプラスドライバーやグリスも付いていて、その上、モーターとリモコンは配線済みなので、必要なのはニッパーを使ってパーツを切り離して組み立てるだけ。もちろん、カッターやヤスリで切り離した部分をキレイに仕上げるくらいはした方がいい。

簡単なプラモデル感覚なのだが、子供向けと思って甘く見ていたら、6本脚を動かす仕組みが意外に複雑で、説明書とよーく照らし合わせながら組み立てないと、シャフトの方向を間違えて脚の向きが反対になったりして、やり直す羽目になる。ただ、接着部分は無いので、間違えてもやり直し易い。

電池を入れて正常に動くことを確認。動かしてみると動きがちゃんと昆虫っぽくて結構おもしろい。しばらく遊んだ後(笑)、(せっかく作ったのになんとも勿体ないのだが)、リモコンをバラして、ハンダ付けされている電線(4色)をハンダごてで温めながら抜き取る。そして、その電線をブレッドボードに挿せるように、ピンヘッダをハンダ付けしておく。

IMG_1349.jpg


【用意したパーツ】
タミヤ ロボクラフトシリーズNo.7 INSECT(6足歩行タイプ)
DCモーター用フルブリッジドライバ: TA7291P x2
電池ボックス 単3×2本用(フタ付プラスチック・スイッチ付)
1列ピンヘッダ: 適宜
炭素皮膜抵抗(1/4W): 10kΩ x2

MTR_1.PNG
(回路図はクリックで拡大)

今回は「とりあえず動かす」ことが目的なので、回路はモータードライバ(TA7291P)2つに電池ボックスをつけた程度でシンプル。TA7291Pの動作電源(Vcc)が4.5V以上だったので、ラズベリーパイの5V端子を回路用に使った。

このロボクラフトのモーターギヤボックスはモーターの向きが左右で逆になっている。
IMG_1348.jpg

左右対称に動かすのだからそれで良いのか?と納得できるような気もしつつ、4色の電線(フラットケーブル)の順番どおりの配線では思った通りにならなかったため、TA7291PのOUT1とOUT2の繋ぎ方は左右で逆にしている。現物を見てもよくわからないので(笑)、とりあえず配線して実際に動かしてみて、思ったのと動きが逆なら、OUT1とOUT2を反対にすれば良い。
このキットのケーブルの色の配線が今後変更されたりしなければ、この回路図の色のとおりに繋げれば正しく動くはず。


Pythonプログラムもシンプル。
mtr_test1_1.png
mtr_test1_2.png
mtr_test1.py

内容は、左右の脚のスピードと方向性(後方はマイナス表記)の値を組み合わせたものを、配列movingPatternに順番に定義しておき、メインのfor〜inループで、その値を順にPWMのDuty比として2秒ずつ与えるというもの。

TA7291は、IN1=1, IN2=0 でモーターを正転(OUT1=HIGH, OUT2=LOW)、IN1=0, IN2=1 では逆転(OUT1=LOW, OUT2=HIGH)させるが、INにPWMで与えることで速度調整ができる。いろいろ試したところ、Duty比=25ではモーターが動かなかったので、低速=40、中速=70、全開=100が妥当と判断した。

なお、TA7291のデータシートには、正転⇔逆転の場合にはストップモード(IN1=0, IN2=0)を一瞬挟むように書かれているので、変数lastLdr, lastRdrで前回と今回で符号が逆転しているかチェックし、逆転していた場合は、IN1=0, IN2=0となる時間を sleep(0.01) で作っている。


【今後】
これは、バッテリー駆動にしたラズベリーパイをロボキットの背中に載せて、センサーもつけて、ロボットらしく単独で動かしてみたい。バッテリーをどう積むかとか、Raspberry PiはB+より小さいA+の方がいいかもとか、そもそもどんなセンサーつけるかとか、いろいろ課題は多いが、面白そうだ。


【参考文献】
『Raspberry Piで学ぶ電子工作〜超小型コンピュータで電子回路を制御する』(金丸隆志 著/ブルーバックス・講談社)
posted by pattayan at 18:28| Comment(1) | 電子工作
この記事へのコメント
突然のご連絡にて失礼致します。

名古屋で電子部品のオンラインマーケティングを行なっております、ANCHOR代表の森下と申します。

この度、貴サイトを拝見しまして、ぜひ弊社顧客(電子部品関連のグローバル企業)とのタイアップをお願いできないかと考えております。

つきましては、詳細についてお伺いさせていただくことは可能でしょうか。

何卒、よろしくお願い申し上げます。

森下彰大
メールアドレス:info@anchor2018.com
事業紹介HP:https://www.anchor2018.com/
Posted by 森下彰大 at 2019年11月19日 00:16
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: