PICマイコンカーを用いたオープンキャンパスプロジェクト2007 #4
橋本のページ
目次
はじめに
コンセプト
∟ロータリーエンコーダ
/モータドライバIC
アルゴリズム
∟準備
/回転方向の判別
/最終段階
結果
参考
はじめに
2007年7月21日に行われたオープンキャンパスでの発表に向けて製作したPICマイコンカーの紹介を行う.
コンセプト
車体としてミニ四駆,センサとしてロータリーエンコーダを用いる.
また,PICはPIC16F84Aを用いる.
タイヤの軸に取り付けたロータリーエンコーダによりタイヤの回転回数(角度)を検出,カウントし,それと目標値の偏差が0となるように前進・後退を繰り返し停止させる.
また,モータの回転方向を変える為にモータドライバICを用いる.
ロータリーエンコーダ
ロータリーエンコーダは回転角度センサの一種であり,オーディオ機器のボリューム調整ツマミやボール式マウスなどに用いられている.
軸が回転するとA,B端子から2つのパルスが出力される仕組みとなっており,これにより回転回数(角度)をカウントすることが出来る.
また,2つのパルスはそれぞれ位相が90度ずれており,これにより回転方向の判別を行うことが出来る.
今回使用したロータリーエンコーダ(EC16B)はインクリメンタル型のもので,分解能は24パルス/360度である.すなわち,15度回転すると1パルス出力される.
ロータリーエンコーダの仕組みの図はこちらで公開されているものを転載した.
モータドライバIC
モータドライバICは上図のようにスイッチを切り替えることでモータに流れる電流の向きを変化させ,モータの回転方向を変えられるICである.
今回用いたのはTA7291Pである.
アルゴリズム
準備
準備として,2mでパルスが何回出力されるかカウントすることを考える.
LEDによりカウントを2進数で表す.
回路図はこちら.
プログラム及びフローチャートはこちら.
回転方向の判別
上図より,(a)の状態では信号Aが立ち上がった時(0→1),信号Bは0であり,(b)の状態では信号Aが立ち上がった時,信号Bは1である.
PICの外部割り込み機能を用いると,信号の立ち上がり(立ち下り)を検出出来る.
よって,信号Aを外部割り込み専用ポートに入力し,立ち上がりが起こったら,すなわち,外部割り込みが起こったら,その時の信号Bの状態をチェックし,それが0なら左回転,1なら右回転となる.
センサは後輪の左側に軸が外向きとなるように取り付けている為,進行方向に進んだ時に回転する方向を正,すなわち,左回転を正,右回転を負の方向とする.
回転方向が正ならばカウントを増加,負ならば減少させる.
最終段階
以上のことを踏まえて,実際に車体を動作させるプログラミングを行った.
スイッチを押すと1秒後に発進し,カウントアップしながら前進させる.
カウントが目標値である586となったらモータを停止,惰性により行き過ぎてしまった場合はモータを逆回転させ,カウントダウンしながら後退させる,
その後,前進・後退を繰り返し,最終的にカウントが目標値と一致した時点で停止させる.
また,進行方向がLEDで分かるようにした.
回路図はこちら.
プログラム及びフローチャートはこちら.
結果
電源としてオキシライド乾電池×3本(5.1V)を用い,回路をブレッドボード上に構成し車体に実装した結果,ロータリーエンコーダの負荷が大きすぎて車体が走らないという問題が生じてしまった.
この問題を解決する為に,モータ電源を8.2Vとしたが走らなかった.
ロータリーエンコーダを負荷が皆無である光学式のものに変えることで解決出来ると考えられるが,これは今回用いたものに比べて非常に高価な為,断念した.
参考
[1]http://www.onosokki.co.jp/HP-WK/products/category/encoder.htm
[2]http://www37.tok2.com/home/aoijf2/electronic_works/rotary_encoder.html
[3]http://www.interq.or.jp/japan/se-inoue/ckt10_3.htm
リンク
・PICマイコンカープロジェクトTOP
・各個人のページ
∟大沼
/坂田
/武田
/橋本
/江田