閲覧総計:36583  (本日:2  昨日:2)


ライントレースカー(基本機能のみ搭載)

光センサを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

P1010200.JPGP1010195.JPGP1010196.JPG
P1010197.JPG
/** 
* ライントレースカー(基本機能のみ搭載)
* 
* 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の間を繰り返す 
} //メインプログラム終わり

★この情報は役に立ちましたか?

選択肢 投票
はい 54  
普通 84  
いいえ 137