超音波測距モジュール

1765 ワード

超音波測距モジュール


概要


超音波測距モジュールは距離を測定するための製品であり,超音波の送信と受信により,時間差と音伝搬速度を用いてモジュールから前方障害物までの距離を算出する.超音波測距モジュール:超音波測距モジュールには多くの種類があり、現在比較的よく使われているURM 37超音波センサのデフォルトは232インターフェースで、TTLインターフェースに調整することができ、URM 05大電力超音波センサの試験距離は10メートルまでで、現在のところ試験距離が比較的遠いものと言える.また、比較的よく使われている国外のいくつかのSRFシリーズの超音波モジュールもあり、現在の超音波モジュールの精度は1 cmまでである.

モジュールを51チップマシンで簡単に使用


以下のコードを51チップマシンに記録する(Trigアクセスp 1.0,Echoアクセスp 1.1)
sbit Trig= P1^0;
sbit Echo= P1^1;```
unsigned int time=0;
void delay()// 
{
	int i;
	int j;
	for(i=0;i<200;i++)
		for(j=0;j<1000;j++);
}

void send(char byte)// 
	{
		SBUF=byte;
		while(TI!=1);
		TI=0;
	}
void hstring(char *j)// 
{
	while(*j!= '\0')
	{
		send(*j);
		j++;	
	}
}

void inituaer()// 
{
	SCON=0x50;
	//SCON |=0x1<<6;
	//SCON |=0x1<<4;
	T2CON |=0x1<<4;
	T2CON |=0x1<<5;
	TH2=0xFF;
	TL2=0xFD;
	RCAP2H=0xFF;
	RCAP2L=0xFD;
	TR2=1;														  
	IE  |=0x1<<4;
	IE  |=0x1<<7;
}


void CSB_Rstart()// 
{
	TH0=0;
	TL0=0;        
	TR0=1;
}
void delay10us()//10 
{
	TMOD |=0x1;
	TH0 =0xff;
	TL0 =0xf6;
	TR0 =1;
	while(!TF0);
	TF0=0;
}
void CSB_End()// 
{
	TR0=0;
}

void CSB_Init()
{
	Trig=0;
	Trig=1;
	delay10us();
	Trig=0;

}

int getBoTime()// 
{
	unsigned int time;
	time = TH0<<8 | TL0;
	return time;
}

float getDis(unsigned int time)// 
{

	float dist;
	dist=(float)time*0.017;
	return dist;
}		 
int main()
{	
	float dis;
	int i=0;
	int j=0;
	char buf[24]={'\0'};
	inituaer();
	while(1)
	{
		CSB_Init();
		while(Echo!=1);		
		CSB_Rstart();	
		while(Echo!=0);
		CSB_End();
		time = getBoTime();
		dis=getDis(time);
		sprintf(buf,"dis=%fcm",dis);
		hstring(buf);
		delay();
	}
		return 0;
}


録画後stc-ispでシリアルポートを開いて表示できます