チーム1829
課題名
うるさい自動停止ラジコン
研究者名
2-15-36 Makoto Sato
2-15-49 Miku Tatara
2-15-56 Youichi Tomita
概要
距離センサーを用いて、障害物がないところでは直進し、障害物があるところではモータを止めるとともに音を発する。
使用した機器
- PSoC基盤 ×1
- MiNiProg ×1
- ジャンパ線 ×12
- 距離センサー×1
- スピーカ ×1
- 単三電池 ×6
- モータードライバ×1
- ギアボックス×1
- ラジコン車体×1
ソースコード
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
void main(void)
{
// M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. unsigned int adc_data; PGA_Start(PGA_HIGHPOWER); PGA_1_Start(PGA_1_HIGHPOWER); //モーターの直進、逆進、停止を操作する部分に入力するために、5V電源を減衰(high) PGA_2_Start(PGA_2_HIGHPOWER); //モーターの直進、逆進、停止を操作する部分に入力するために、5V電源を減衰(low) LCD_Start(); LCD_InitBG(LCD_SOLID_BG); M8C_EnableGInt; ADCINC_Start(ADCINC_HIGHPOWER); ADCINC_GetSamples(0); PWM16_1_Start(); PWM8_1_Start(); //スピーカー入力のための信号 PWM8_1_WritePeriod(250); PWM8_1_WritePulseWidth(0); //最初は音を出力しない
while(1){ while(ADCINC_fIsDataAvailable()==0); adc_data=ADCINC_wClearFlagGetData(); LCD_Position(0,0); LCD_PrHexInt(adc_data); LCD_DrawBG(1,0,16,(adc_data/50)); //もしも距離が遠ければモーター回転、スピーカー無音 if(adc_data<0x800){ PWM16_1_WritePeriod(250); PWM16_1_WritePulseWidth(200); PWM8_1_WritePulseWidth(0); } //もしも距離が近ければモーター停止、スピーカー出力 else { PWM16_1_WritePeriod(250); PWM16_1_WritePulseWidth(0); PWM8_1_WritePulseWidth(20);
} }
}
回路図
考察
ラボlac3_adcを参考にした。
モータの回転に必要な電源を確保するのが大変だった。
赤外線距離センサからの入力電圧を増幅することによって、1.0倍時よりも遠い場所で障害物を感知し、モーターを止められるようにしている。
モータードライバの直進、逆進、停止を判断する部分(2bit)への入力は電源電圧を減衰することによって与えているので、この部分をPWMで制御するようにすればモーターの駆動を制御することができるはずなので、次があればそうしたい。
参考:
建築発明工作ゼミ2008
- 最終更新:2018-06-12 18:36:36