学生ものづくりブログ

ものづくり好きな学生の書くブログ

ライントレーサー

目次

 

ライントレーサーとは?

ラインの上を進むロボットです。基本的にスタートからゴールまでのタイムを競います。

 

http://kazeusagi2005.cocolog-nifty.com/diary/images/2014/08/16/img_20140812_095240.jpg

出典:

http://kazeusagi2005.cocolog-nifty.com/diary/2014/08/post-c9dd.html

 

ハードウェア

表面実装のステッピングモーター

LED スピーカー スイッチ

マイコン

stm32f103を使います。

 

yhiro.hatenablog.jp

 

回路 

 

yhiro.hatenablog.jp

 

電源回路 レギュレータとFETを使用した大容量スイッチ

センサー回路 分圧とコンデンサーを使用したノイズ除去

モーター ステッピングモータ

モータードライバー回路 モータードライバーのデータシートどうりに

スピーカー回路

LED回路 抵抗で降圧するだけ

スイッチ 3.3Vのレギュレータからマイコンにちょく付け

 

ソフトウェア

フローチャート

初期設定

ピンAIN  電源

ピンDOUT LED1

ピンDOUT LED2

ピンDOUT スピーカー1

ピンセンサー1

ピンセンサー2

ピンモーター

 

モード選択

モード1(初期モード)何もしない

モード2(センサー動作テストモード)センサーとLEDのみ有効

モード3(バッテリー管理モード)

モード4(走行モード)

 

 

プログラミング言語

C言語を使います。

 

yhiro.hatenablog.jp

 

ピン設定

 

f:id:yHiro:20180125061922p:plain

void Pin_Config(void){
/*
* ピンの設定関数
*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);//PA13/14/15/PB3/4→GPIO pp.79-80

//OUTPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 |GPIO_Pin_7; //LED
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; //MOTOR
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED
GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; //LED
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; //MOTOR
GPIO_Init(GPIOC,&GPIO_InitStructure);

//Degital INPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //SWHICH
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; //SWHICH
GPIO_Init(GPIOC,&GPIO_InitStructure);

//Analog INPUT
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //ADコンバータ p.220

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //SENSOR
GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; //SENSOR
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //電源電圧
GPIO_Init(GPIOB, &GPIO_InitStructure);
}