教程 
蓝桥杯单片机超声波到底要发几个周期脉冲?

文章目录

网上的蓝桥杯教程(模块)中,超声波模块大多发送八个周期的40khz方波. 然而在实际操作中,会显得非常不稳定.

在一次ai debug会话中,ai给出了以下发送超声波代码:

1
2
3
4
5
6
7
void Transmit() {
    EA=0;
    TX=1;
    Delay12us();
    Delay12us();  
    TX=0;
 }

这段脉冲的周期远低于八个周期,但出乎意料的,这段代码运行的很稳定.

于是,为了求证,我在4T平台找到蓝桥杯官方给出的超声波代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unsigned char Dist_Meas(void)
{
unsigned char ucNum = 10;

TX = 0;
CL = 0xf4; CH = 0xff; // PCA 重载值,每 12μs 溢出一次
CR = 1; // 启动 PCA
while (ucNum--) // 翻转 10 次 = 5 个完整 40kHz 周期
{
while (!CF); // 等 PCA 溢出
TX ^= 1; // 翻转 TX
CL = 0xf4; CH = 0xff;
CF = 0;
}
CR = 0; // 关闭 PCA

CL = 0; CH = 0; // PCA 清零
CR = 1; // 启动
while(RX && !CF); // ← 等 RX 下降沿(和原始代码一样!)
CR = 0;
return ((CH<<8)+CL)*0.017; // 同 t*17/1000
}

它一共翻转了ucNum次电平,翻转了10次,也就是5个周期的40khz方波.

主包懒得做控制变量的实验,但以上似乎也能说明8个周期的方波对于蓝桥杯板子的超声波模块来说,过于多了,以至于可能出现:RX 的放大/比较电路在发射期间被串扰饱和的情况。导致等脉冲发完,换能器还在机械余震,RX 继续振荡,造成干扰.

8周期的 8051 超声波例程最早来自某个开发板,那个板的接收电路增益低,需要 8 个脉冲才能让回波高于比较器阈值. 蓝桥杯竞赛板的模拟前端比那些开发板好,1个脉冲就够了.

本文作者: Genkaim

本文链接: https://www.genkaim.top/posts/abb27f10

打赏博主😘

bilibili发电⚡
Alipay (移动端)