2016年3月31日木曜日

ロボカップ技術公開

技術公開といっても大したことじゃありません。
ボールセンサが少し特殊なだけで、それ以外は普通です。
まずは、回路図から↓




左上 メインマイコン Atmega328P 20MHz

メインのマイコンです()
攻め・守りの違いやボールを追いかけるプログラムはこいつに書き込みます。
逆に言うと、攻撃の仕方を変える時はこのマイコン以外はいじる必要がありません。

左下 センサ用マイコン Atmega328P 20MHz

超音波センサ・ボールセンサ・方位センサを担当しています。
コンパスとの接続はI2C
超音波もボールも値を読み取るのに時間がかかってメインのマイコンにやらせるとプログラムが厄介なことになりそうなので、 マイコンを独立しました。

メインマイコンとの通信はSPIです。
SPIの通信経路に抵抗を挟むことにより、 ISPで書き込むときの干渉を防ぐことができます。


右上 モーター制御用マイコン  ATtiny2313 8MHz(内蔵)

モーター制御用というか信号変換用です。ロジックICみたいな使われ方です。
というのも、今回使用しているモータードライバ(東芝 TA8429HQ)で3つのモータを駆動するには6つのPWM信号が必要なのですが、ピン配置の都合上4つしかPWM信号を取り出すことができませんでした。
そこで、 ブレーキモードを無効にし、PWM・方向の信号の組み合わせによりPWMが3つでも3つのモーターを駆動できるようにしました。
PWMと正転・逆転の方向の信号を2つのPWMに分けるために以下のようなことをこのマイコンにやらせています。
 

入力(PWM) 入力(方向) 出力1 出力2
H H(正転) H L
H L(逆転) L H
L X L L


センサーについて

超音波センサーはHC-SR04を使いました。

ラインセンサは赤色LEDを使っています。受光素子はNJL7502Lです。
各方向1つしか載せていないのでラインを検知できずに外に出てしまうと完全にアウトです。(←作り終わってから気付いた)
そのあといろいろ何とかして、プログラムで何とかして押し出されない限りラインから出ないようにすることができました。

ボールセンサは過去の記事をご覧ください。


ソースコード

プログラムはこちら⇒https://github.com/yosihisa/RCJ2016



そのほかに知りたいことがあったらコメントやTwitterなどで質問してください。
隠すことはたぶんないので、可能な限り公開したいと思います。

0 件のコメント:

コメントを投稿