一、概念和原理
首先读者们要用跳线帽将J2的2-4和1-3接线柱都短接,超声波模块才能正常使用
这个模块也是小蜜蜂和江科大都没有讲到。我们今天看的是 《蓝桥杯单片机保姆级教学》(账户名:柳离风)。
压电效应
蓝桥杯单片机开发板上的超声波模块
说明:1.接收头有一块专用芯片,叫做CX20106A,这个芯片可以跟红外一起连用;
2.看第一条红线,第七引脚就在N-B1,接收频率 接近 40KHz时就会在这个引脚产生一个低电平,到时我们去检测这个引脚的电压,如果是低电平就是表示接收到了超声波信号;
3.中心频率的意思就是说比40KHz低得不多得频率也能被检测到,第五脚就在R5那里。
板子上的超声波模块位置
原理图部分
注意事项中第二点说的电路就是下面这种电路 ,只需要注意左边的N-A1引脚输出一个频率时20KHz的方波,就能在最右边产生超声波。
N-A1引脚就在蓝色圈圈这里
说明:1,3短接,就可以通过P10引脚产生20KHz方波。
工作过程(与代码有关)
1.发射f=40KHz,占空比为%50的方波,那周期就是1/40k=25us,那就高电平和低电平各持续12.5us的时间,因为单片机对与小数不太好处理,那就各占12us的时间就好了,是误差允许的,发射之后就开始计时;
2.到P11产生低电平时作为停止计时的标志,空气中音速大概是340m/s,距离是两倍的,所以测到的实际距离格式S=170m/s * t,我们这显示使用的是cm,就可以进行下图的运算,将其转成S=0.017cm/us * t(我们产生的t就是us为单位的)
3.不需要一直发射,不然没法检测到发射与接收相对应的方波;也不能只发一个,因为可能会因为能量不够不会进行物体表面的反射,一般是发射5-8个周期的方波;
程序设计过程
1.使用定时器1,作为信号源,产生40KHz、占空比为%50的的方波,持续五个周期;
不用Delay函数产生25us周期的信号是因为这个函数误差太大了;
2.发送完之后,开始计时,如果检测到P11引脚是低电平时就停止计时;
3.开始计算距离;
4.若在测量范围内无障碍物时,仍然较长时间未收到回波,则停止计时,默认距离为最大距离255cm(因为本身最远的距离就是0-3m)(这个也是到时候的判断难点条件之一,因为容易漏掉)
二、题目
三、手写代码
此次难点就在于步骤有很多,分了很多个小点,一处处小细节都要注意。
先添加路径
框架
注意此次的uart文件里面的波特率跟上一章一样要用定时器0来产生。
今天的主角ultra文件(出现第二种上位机没有实验现象的原因)
咱们此次一步步来,因为步骤实在太多了。
第一步:引脚定义
下面是最新的原理图(引脚定义依据)
第二步:概括起来就是驱动发射头发射方波
细节包括,定时器1初始化、创一个返回值为计算好的距离的函数、定义变量、先不开始发射、调好初值、开始定时器计时、用while来制造五个周期,即num的作用、停止定时器(表示发送完毕)
此处第二处错误就是因为条件写错导致,卡死在此处,单进程的单片机无法进行下一步
第三步:概括起来就是开始计算时间,判断条件要全面
细节包括:设定初值为0,开始使用定时器1计时、(什么时候停呢,这就是咱们的判断条件)识别到判断条件时在进行判断,看是是不是超出最远距离。
解释一下这个0.017的计算,将速度的单位换算一下340m/s=34000cm/1000000us=0x034cm/us(笔者使用等号就说明这速度大小是没变的)
再除2就计算出0.017了,除2是因为路程是双倍,而距离只是其中的一般
结尾
实验现象:
1.上方没用手遮挡时,显示31.25左右的距离
因为俩个头离得比较近,所以会被接收到;
2.用手遮挡,测的距离与实际近似;
3.盖住发射头或者接收头,表示没有接收到信号,显示255cm默认最远距离
4.遮挡两头之间,上方手往上平移,可超过31cm测得实际值
至此,咱们对于 超声波测距模块 的学习过程分享就到此结束了,大家切记要去默写一遍实现实验现象的代码,相信我,每次都会有新的收获!