meideru blog

meideruが書いているブログです。主に電子工作・プログラミング・ガジェット類などを中心に記事を書いています。

【祝】PICマイコンで開発していた戦車型のロボットが完成!

      2017/03/14

うれしいお知らせです!やっと完成しました!

戦車型ロボットを開発しています(@_@)
ここのところ何かと話題にしていますが、今、戦車型のロボットを開発中です(*´ω`*)(開発と言えるほど高度なものなのかどうかは微妙なところですがw)今日は、今、開発している戦車型のロボットについて記事を書きたいと思います。概要まだ開発途中ですが、こんな...

 

戦車型のロボットが完成しました!

@作った戦車型のロボット
PICマイコンで作った戦車型のロボット

 

今日は、このロボットについて記事を書きます!

概要

メイン基板(マイコンボード)のスリープスイッチ(電源スイッチ)を押すと起動します。

@メイン基板(マイコンボード)
実装したモータコントローラ

起動後はプログラミングされた通りにロボットが動きます。

なお、現時点でセンサは付いていないので、状況に合わせた動的な動きはできません。(今後改善する予定です)

構成

このロボットは主に6つで構成されています。

  • マイコンボード
  • モータコントローラ
  • ギアボックス
  • キャタピラ
  • ユニーサルプレート
  • ネジ

の6つです。

マイコンボード

マイコンボードはこんな感じで作成しました。

@自作のマイコンボード(表面)
自作のマイコンボード(表面)

 

表面はこんな感じです。

マイコンはPICマイコン(16F1827)です。

左のタクトスイッチはスリープボタン(電源ボタン)で、右のタクトスイッチはリセットボタンです。

LEFTとRIGHTのコネクタ(メス)からは、左右のモータをコントロールするためのPWM信号を出力されます。

POWは、POWERのことで電源(9V)を入力するためのコネクタ(メス)です。

OUTは、POWER(9V)をモータコントローラに向けて出力するためのコネクタ(メス)です。

 

3端子レギュレータで9V→3.3Vに落としてマイコンに電源を供給しています。

パスコンは100μFを使っています。普通は0.01μFなどの容量を使うのが普通らしいのですが、モータドライバで大きな電流を使うので、それだとダメでした。

 

@マイコンボード(裏面)
自作のマイコンボードの裏面

 

裏面はこんな感じです。

配線が汚いですね。複雑なハンダ付けをしたのは初めてなので許してください(;´・ω・)

 

@実装したモータコントローラ
実装したモータコントローラ

 

こんな感じで本体に実装しました。

コネクタにケーブルをつないだら様になりますねw

それから、ユニバーサルプレートに結束バンドで直接、基板をくっつけています。ショートする恐れはないと思います(>_<)

モータコントローラ

モータコントローラはこんな感じです。

@モータコントローラ(表面)
自作のモータコントローラの表面

 

モータドライバは東芝のTA7291Pを使用しています。

パスコンは1つで2つのモータコントローラに接続しています。それぞれのモータドライバに別々に接続するために2つ用意したほうが良かったんでしょうか?電子工作初心者なので、その辺はよくわかりません(; ・д・´)

5つのコネクタはそれぞれ、電源入力(9V)、左右のモータの制御信号入力、左右のモータへの出力電圧です。

 

@実装したモータコントローラ
実装したモータコントローラ見辛いと思いますが、こんな感じで実装しています。

マイコンボードと同様に、結束バンドで直接、ユニバーサルプレートにくっつけています。

ギアボックス

ギアボックスはタミヤ製品を使用しています。アマゾンで購入しました。

この製品ではギア比を4段階で選べます。そして、このロボットでは一番高いギア比を使用しています。

キャタピラ

キャタピラもタミヤ製品でアマゾンで購入しました。(というか今回のロボットで使用している部品は全てタミヤ製品ですw)

色々な大きさを組み合わせて、キャタピラの長さを調節することができます。

ユニバーサルプレート

ユニバーサルプレートもタミヤ製品です。

2枚セットです。今回作ったロボットでは3枚使用しているので、2セット注文しました。

ネジ

ネジもタミヤ製品!全部タミヤ製品です!

(ただし、どの製品を買ったかは忘れてしまいました(;´・ω・))

ソースコード

ソースコードはこんな感じです。

PICマイコン(16F1827)向けで、コンパイラはXC8です。

 

起動すると、前進→後進→左旋回→右旋回、するようにプログラミングしました。

また、スリープスイッチ(電源スイッチ)は割り込み処理で実行するようにしています。

リセットスイッチはMCLR端子で行うようにしています。

動作

動作はこんな感じです。YouTubeにアップしました。

勉強になったこと

機械工学(?)を学べた

これを機械工学と呼べるほど高級なものなのかどうかはわかりませんが、機械工学の雰囲気だけは知ることができました(*'▽')

実は、ある程度完成してから、ある問題が浮上しました。それは、ギア比が適切でなかったことです。

トルク不足で右旋回・左旋回をすることができませんでした。しかも、前進・後進は高速で動いていました。これは、ギアボックスのギア比を調節すれば解決できました。

恥ずかしながらギアボックスを使用するまで、「トルク」や「ギア比」の意味すら知りませんでした(;´∀`)

大学での物理学は真面目に講義を受けていなかったので・・・w

とっても勉強になりました!

ハードウェアの設計を実践的に学べた

一番勉強になったのはこれですね。ハードウェアの設計を実践的に学べました。

(ここで言うハードウェアとは電子回路のことを指します。)

私は、今までプログラミングを中心に勉強してきたので、電子回路については知識で知っている程度で、ハンダゴテを使って実践したりすることは、ほとんどしてきませんでした。

いざやってみると、トラブルの連続でした。

例えば、スイッチが思うように動作しないという問題がありました。結論から言うと、これは「チャタリング」という問題でした。そして、プログラム側でチャタリングが終了するまで待機するようにしたところ、解決することができました。

他には、モータの出力を全開にするとマイコンがリセットされてしまうという問題も起こりました。これは、マイコンのパスコンを大容量にすることで解決することができました。

このように、講義では学べないようなことが実践で学べたのは、とても良かったと思います。

反省点

反省点がいくつかあります。

回路図を書くべきだった

回路図を書くべきでしたね。ブログにこの記事を書いているときに思いましたw

皆さんには完成したマイコンボードとモータコントローラをお見せしていますが、肝心なのは回路がどうなっているのかという点ですよねw

それがないので、解り難いと思います。

反省します(; ・д・´)

センサを組み込むべきだった

上述した通り、このロボットにはセンサが組み込まれていません。なので、状況に応じた動的な動きが全くできませんw

でも、これは今からでも解決できる問題でもあります。今からでも組み込めるからです。

後日、組み込めたら組み込みたいと思います。

とりあえず、前方と下側に距離センサを付けようと思います。

これで、前方の障害物を回避したり、落下しそうになったら旋回するようになるはずです。

ロボットのバランスが悪すぎる

このロボットは後方に質量が寄っているため、坂などを上ろうとすると、ひっくりかえってしまいますw

戦車なのに致命的な欠点ですねw

 

以上です!

ノシ

 

PS

自動車の免許証を取るために、今日から教習所に通います!

 - マイコン