#freeze
閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)~
~
*ライントレースカー(基本機能のみ搭載) [#f2b6e40e]

光センサを2ケ取り付けた自動車が黒いラインに沿って走る
ライントレースカーを製作しました。

フォトリフレクタ GP2S05 秋月 @30円
http://akizukidenshi.com/catalog/items2.php?q="P-00613"
モータドラバIC 東芝TA7291P 千石 @170円
http://www.semicon.toshiba.co.jp/docs/datasheet/ja/LinearIC/TA7291F_TA7291SG_ja_datasheet_060123.pdf

最初は、基本機能だけのプログラムで走らせてみました。
【結果】カーブの際、ラインセンサ2ケ共が黒ラインからはずれ、
車がラインから外れてしまいました。改良が必要です。
06/11/03

|&attachref(P1010200.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1010195.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1010196.JPG,zoom,150x150,button){新しい写真添付};|
|&attachref(P1010197.JPG,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|

 /** 
 * ライントレースカー(基本機能のみ搭載)
 * 
 * PIC 16F628A 
 * 発信器:内臓4MHz 
 * 電源:PIC 乾電池4本(6.0V) モータ 乾電池3本(4.5V) 
 * ライトセンサー:RA0, RA1 
 * モーター:左 RB6,RB7 右 RB0,RB1 
 * 
 * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON 
 *    _WDT_OFF _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT 
 * 
 * プログラム言語:MikroC v6.0 
 */ 
 void main() { //メインプログラム 
 
  //マイコンの初期化 
  PORTA = 0b00000000; //PORTAの中身をきれいにする 
  PORTB = 0b00000000; //PORTBの中身をきれいにする 
 
  CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定 
 
  TRISA = 0b00000011; //PORTAをRA0,1を1:入力に、他は0:出力に設定 
  TRISB = 0b00000000; //PORTBを8つ全て0:出力に設定 
  //マイコンの初期化終わり 
 
  do{ //doとwhileの間を繰り返す 
   if(PORTA.F1 == 1) { //左センサー黒 
    if(PORTA.F2 == 1) { //右センサー黒 
     //車がラインの上にある 
     //左右モーター前進 
     PORTB.F2 = 1; //左モーター前進 
     PORTB.F3 = 0; 
     PORTB.F5 = 1; //右モーター前進 
     PORTB.F4 = 0; 
    } else { //右センサ白 
     //右にコースアウト 
     //左モーター停止、右モーター前進で 
     //コースにもどる 
     PORTB.F2 = 0; //左モーター停止 
     PORTB.F3 = 0; 
     PORTB.F5 = 1; //右モーター前進 
     PORTB.F4 = 0; 
    } 
   } else { //左センサー白 
    if(PORTA.F2 == 1) { //右センサー黒 
     //左にコースアウト 
     //左モーター前進、右モーター停止で 
     //コースにもどる 
     PORTB.F2 = 1; //左モーター前進 
     PORTB.F3 = 0; 
     PORTB.F5 = 0; //右モーター停止 
     PORTB.F4 = 0; 
    } else { //右センサー白 
     //左右センサー共に白、完全コースアウト 
     //左モーター前進、右モーター前進で 
     //コースから真っ直ぐ外れて行くようにした。 
     PORTB.F2 = 1; //左モーター前進 
     PORTB.F3 = 0; 
     PORTB.F5 = 1; //右モーター前進 
     PORTB.F4 = 0; 
    } 
   } 
  } while(1); //doとwhileの間を繰り返す 
 } //メインプログラム終わり

★この情報は役に立ちましたか?
#vote(はい[0],いいえ[0])

#comment