チーム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);

  }
 }
}

回路図

1829Kairo.png

考察

ラボlac3_adcを参考にした。
モータの回転に必要な電源を確保するのが大変だった。
赤外線距離センサからの入力電圧を増幅することによって、1.0倍時よりも遠い場所で障害物を感知し、モーターを止められるようにしている。
モータードライバの直進、逆進、停止を判断する部分(2bit)への入力は電源電圧を減衰することによって与えているので、この部分をPWMで制御するようにすればモーターの駆動を制御することができるはずなので、次があればそうしたい。

参考:
建築発明工作ゼミ2008

  • 最終更新:2018-06-12 18:36:36

このWIKIを編集するにはパスワード入力が必要です

認証パスワード