蓝桥杯单片机----学习七之超声波模块(STC15F2K60S2)

一、原理图

 

 

        跳线帽在1-3、2-4为超声波模式。

二、原理分析

  1. 发射与接收

    • Trig引脚(触发信号):单片机发送一个 10μs以上的高电平脉冲,通过触发模块发射 8个40kHz的超声波脉冲

    • Echo引脚(回波信号):模块接收到反射波后,Echo引脚输出高电平,持续时间与超声波往返时间成正比。

  2. 距离计算公式

    距离=高电平时间×声速 / 2;
    • 声速按 340m/s(或更精确的 343m/s,25℃时)计算。

    • 时间单位为秒,最终距离单位为米,需转换为厘米(如:结果×100)。

void Send_40KHz()
{
	unsigned char i=8;
	while(i--)	//发送8个40KHZ超声波脉冲
	{
		TX = 1;
		Delay12us();
		TX = 0;
		Delay12us();
	}
}

测量所用的计时器采用PCA模块,以节省定时器的使用。

unsigned int GetDis()
{
	unsigned int t;
	CMOD = 0x00;	//12分频计数
	CL = CH = 0;	//初始值为0
	Send_40KHz();	//发送脉冲
	CR = 1;	//开始计数
	while((RX == 1) && (CF == 0)); 	//当接收到返回脉冲或计数溢出时跳出
	CR = 0;		//停止计数
	if(CF == 1)	//若计数溢出
	{
		CF = 0;
		return 0;
	}
	else	//否则为接收到返回脉冲
	{
		t = (CH << 8) | CL;
		return (unsigned int)(t * 0.0172);	//343 / 1000 / 2
	}
}

三、注意事项和常见问题

  1. 时序要求

    • Trig触发脉冲必须≥10μs,否则模块可能不响应。

    • 两次测量间隔建议≥60ms,避免信号干扰。

  2. 误差处理

    • 温度补偿:声速受温度影响(公式:声速=331.4 + 0.6×温度℃)。

    • 超距处理:模块最大量程约4m,超出后Echo可能无响应,需设置超时检测。

  3. 资源冲突

    • 使用定时器时,避免与其他功能(如数码管动态扫描)冲突。

    • 若需高精度,可采用输入捕获功能(如STC15的PCA模块),也节省定时器。

  4. 无回波信号:检查Trig触发信号是否正常,模块供电是否稳定。

  5. 距离跳变:添加软件滤波(如多次测量取中值)。

  6. 响应超时:在代码中添加超时退出机制,防止死循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值