超声波传感器收发电路设计:从变压器升压到消隐调试
2026/9/19 8:48:20 网站建设 项目流程

简介:这份PDF文档是一篇完整的超声波传感器发送与接收电路设计学年论文,适合电子信息工程专业学生、硬件开发入门者及需要完成传感器课程设计的人群。文档以555集成定时器构成40kHz多谐振荡器,配合74LS04驱动电路和CX20106A接收处理芯片,系统讲解脉冲信号产生、超声波发射、检测放大、电压比较与信号处理等完整收发链路,并配有系统模块图和电路原理图,便于读者按图复现。内容从超声波换能器结构与探头类型入手,逐步深入到555定时器内部工作原理、充放电回路及收发链路调试要点,层次清晰,便于自学或作为答辩参考。压缩包共1个文件,文件类型为PDF,整体大小仅973KB,内容紧凑但覆盖了理论分析、电路设计到结论验证的主要环节。目前已有370人浏览学习,可作为课程设计、毕业设计或超声波测距项目初期的实用参考资料。

1. 超声波传感器发送与接收电路:难点在收发共用一颗探头

超声波传感器的发送与接收电路,拆开看功能很简单:发送端把40kHz电脉冲变成声波打出去,接收端把反射回来的微弱声波变成电信号并放大到MCU能识别的电平。但真正把这个电路搭起来你会发现,大头不在单片机,而在模拟链路。发送要解决电压不够高、余振不衰减的问题;接收要解决信号只有几毫伏、还跟发送信号挨得极近的问题。玩过多款HC-SR04超声波传感器的人,把它接到STM32上测距离时会觉得模块很省心,可一旦自己画板子,就得把收发电路的设计决策重新做一遍。

这篇文章按“发送电路 → 接收电路 → 完整链路 → 调试技巧”的顺序展开,适合要自研探头驱动、做低成本替代模块,或者单纯想把HC-SR04的电路原理吃透的工程师。每一段都会给出可复现的元件参数和测量判断方法,而不是只给一个原理框图。

2. 发送电路设计:升压、调谐与余振

发送电路的目标是把MCU输出的3.3V或5V方波,变成能驱动压电陶瓷片振动的几十伏高压脉冲。常见的做法是升压变压器配合推挽驱动,这和HC-SR04模块内部的升压电感是同一类思路,只是分立设计时参数需要自己定。

2.1 发送换能器的阻抗特性与变压器升压选型

压电陶瓷换能器在工作频率附近可以用一个并联电容C0加一条串联谐振支路来等效。C0通常在2nF到3nF之间,串联支路由L1、R1、C1组成,对应的串联谐振频率fs就是标称的40kHz。在fs附近,换能器表现为低阻抗、高效率;在fs之上,阻抗快速变成容性,偏离了谐振点后驱动效率断崖式下降。

所以发送电路第一个设计决策是:不要在低频直接驱动压电片,而是让变压器次级电感和换能器静态电容C0在40kHz附近谐振,形成电压倍增。变压器在这里承担两件事:升压,以及把阻抗匹配到驱动端。

变压器匝数比按需要的驱动电压来选。例如MCU侧经过缓冲后得到5V方波,推挽驱动时初级电压约5V,需要换能器两端获得80Vpp左右的电压,次级匝数取初级的8到10倍即可。需要注意这里的比例不是简单电压比,还要考虑反射阻抗。

常见设计参数如下表,适用于直径10mm、中心频率40kHz的通用压电陶瓷片:

参数推荐值说明
变压器初级电感220µH 到 1mH决定初级电流上升速度,越小电流越大
次级电感20mH 到 100mH与C0谐振在40kHz左右
匝数比1:105V输入时可输出约50到100Vpp
并联谐振电容按公式计算一般不需要额外并联,压电片C0已足够

电感和电容的谐振频率按f = 1 / (2π√(LC))计算。如果C0是2.5nF,要谐振在40kHz,次级电感需要约6.3mH。这个电感值偏小,所以很多设计会在次级并联一个几十mH的电感来配合,计算时把C0和附加电容合并。

2.1.1 用Python快速算谐振参数

选电感电容时,手算容易把数量级搞错,用脚本算一遍更快。下面的代码计算给定频率和电容时的谐振电感:

import math f = 40e3 # 中心频率,单位Hz c0 = 2.5e-9 # 换能器静态电容,单位F,典型值2.2nF~3.3nF extra_c = 0.0e-9 # 额外并联电容,单位F total_c = c0 + extra_c L = 1 / ((2 * math.pi * f) ** 2 * total_c) print(f"总电容: {total_c * 1e9:.2f} nF") print(f"谐振电感: {L * 1e3:.2f} mH")

谐振电感算出来是理论值,实际变压器绕制后会有漏感和分布电容,最终要在板子上微调。如果次级电感比理论值大,中心频率会偏低;反过来偏高。测量方法很简单:用信号发生器直接驱动变压器初级,次级接换能器,用示波器看次级电压峰值最大的频率,那就是实际谐振点。

2.2 用STM32的PWM做40kHz脉冲源

发送脉冲由MCU产生。STM32用高级定时器TIM1或TIM8最方便,因为可以配置为单次脉冲模式,精确产生N个40kHz方波后自动停止。不要用GPIO翻转延时的方式,抖动会直接影响回波信号的幅度一致性。

下面是一段在STM32F103上产生12个40kHz脉冲的初始化代码:

// 使用TIM1的PWM模式,在PA8输出40kHz方波 // 时钟72MHz,预分频0,计数周期=72MHz/40kHz-1=1799 void ultrasonic_pwm_init(void) { GPIO_InitTypeDef gpio; TIM_TimeBaseInitTypeDef tim; TIM_OCInitTypeDef oc; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE); gpio.GPIO_Mode = GPIO_Mode_AF_PP; gpio.GPIO_Pin = GPIO_Pin_8; gpio.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &gpio); tim.TIM_Period = 1799; // 40kHz tim.TIM_Prescaler = 0; tim.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &tim); oc.TIM_OCMode = TIM_OCMode_PWM1; oc.TIM_Pulse = 900; // 50%占空比 oc.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM1, &oc); TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); }

脉冲数量不要直接写在定时器溢出中断里数,而是用TIM1的重复计数寄存器RCR。RCR加1代表每2个周期更新一次中断,代码更干净:

void ultrasonic_start(uint16_t cycles) { TIM1->RCR = (cycles / 2) - 1; // 每两个PWM周期触发一次更新事件 TIM1->CR1 |= TIM_CR1_CEN; }

参数说明:TIM_Period决定频率,72MHz计数频率除以1800正好是40kHz;TIM_Pulse占空比设为50%时,变压器次级输出对称;RCR控制脉冲个数,10到12个是通用选择。发送脉冲越多,声波能量越大测量越远,但余振越长盲区越大。

STM32的GPIO驱动能力只有约20mA,不能直接推变压器。中间要加一级缓冲,比如74HC04或TC4427。74HC04的6个反相器并联可以提升输出电流,TC4427则是专门的MOSFET驱动器,峰值电流能力更强,更适合推挽变压器。

2.3 发送端调谐与余振抑制:并联电感与消隐

发送换能器在激励停止后,机械惯性会让振子继续振动一段时间,这个现象叫余振。余振在接收端表现为一个幅度逐渐衰减的40kHz信号,会掩盖近距离的回波,直接造成盲区。

余振有两个来源:一是换能器本身的机械Q值高,停振慢;二是变压器和换能器谐振回路上的储能需要时间泄放。抑制手段分几个层次。

第一层是控制激励脉冲数量。发送脉冲从8个加到16个,接收信号幅度可能只增加一点,但余振时间几乎翻倍。所以近距离应用用8到10个脉冲,远距离才加到12到14个。

第二层是让发送结束后变压器次级快速短路。常见做法是在变压器次级并联一个模拟开关或三极管,发送结束后把次级对地短掉几百微秒,把残余能量泄放掉。这个电路只在发送阶段打开,接收阶段要保证完全关断,否则回波也会被短路。

第三层是接收端的消隐,这个放到下一章的接收电路里讲。发送和接收共用换能器时,消隐在收发切换瞬间尤为重要。

3. 接收电路设计:增益分配、带通与整形

接收电路要处理的是微弱回波,和发送高压信号处于同一个换能器上。设计难点不是放大倍数不够,而是怎么在噪声和近距离强信号之间找到折中。

3.1 接收回波的幅度范围与增益预算

接收换能器收到回波时输出的电压大约是多少?以直径10mm、发送电压80Vpp、测距1米为例,反射回来的声压经过空气衰减后,换能器输出通常只有几毫伏到十几毫伏。距离10厘米时这个值可能到几百毫伏,距离5米以上则跌到1毫伏附近。

这就引出了接收链路的增益预算问题。MCU的ADC输入范围是0到3.3V,比较器翻转电平通常设在0.5V或1V。如果要把1毫伏的信号放大到1V,需要60dB增益。但60dB放大倍数意味着近距离的200mV信号会被放大到200V,直接削顶饱和。

所以增益不能一把放完。接收电路一般拆成两级:第一级固定增益20到40dB,第二级做成可调增益或依赖AGC控制。固定增益放在第一级的好处是信噪比更好,因为第一级放大的同时也会放大噪声,但噪声的进入不可避免。

增益预算如下表:

回波强度换能器输出第一级增益第二级增益输出
近距离 0.1m300mVpp20dB0dB3Vpp,注意削顶
中距离 1m10mVpp20dB26dB2Vpp
远距离 5m1mVpp20dB40dB1Vpp

这里给的是一个粗分配,实际AGC会把第二级增益动态调节到输出恒定。如果只做固定增益测短距离,20到40dB也够用。

3.2 两级带通放大与比较器整形电路

运放选型上,单电源5V供电可用LMV358或OPA2350,轨到轨输出,带宽也够40kHz工作。OPA2350噪声密度低,用在第一级合适;LMV358性价比高,放在第二级或比较器前级可以。

第一级采用同相放大,输入端先经过一个高通滤波器,把换能器的低频噪声和直流偏置隔掉。高通转折频率设为10kHz左右不会衰减40kHz信号,但对100Hz到1kHz的环境噪声衰减明显。典型参数:串接电容10nF,对地电阻1.5kΩ,转折频率约10.6kHz。

第二级做低通,转折频率设在100kHz以上即可,但为了抑制高频噪声,压到60kHz到80kHz更好。因为中心频率只有40kHz,带通范围做得太宽不会提升信号,反而让高频噪声进入比较器造成误触发。

一个能直接用的电路参数组合如下:

  • 第一级LMV358同相放大,增益约30倍,反馈电阻30kΩ,下拉电阻1kΩ
  • 输入高通:C=10nF,R=1.5kΩ
  • 第二级同相放大,增益约20倍
  • 输出端加一个100Ω串联电阻接比较器正输入端
  • 比较器用LM393,参考电压由两个10kΩ电阻分压得到2.5V

比较器参考电压不能直接接电源中点。回波信号是双极性的,经过运放单电源放大后,静态直流电平在VCC/2附近。把比较器参考电压设在VCC/2,回波到来时输出翻转。但问题在于发送期间串扰和余振会直接把比较器拉翻,所以还要加消隐。

比较器输出接STM32的输入捕获引脚,用上升沿或下降沿触发定时器记录时间戳,两次边沿之间就是回波脉宽。大多数测距程序用第一个回波的上升沿作为停止信号。

3.3 收发共用换能器时的消隐电路

收发共用一颗探头的方案,发送和接收之间靠模拟开关切换。发送阶段接收端完全断开,发送结束后延迟一小段时间再打开接收通道,这个延迟就是消隐时间。

最简单的消隐电路是在接收信号路径上加一个JFET或P沟道MOSFET做开关。发送期间控制引脚输出高电平,让开关断开;发送结束后电平拉低,开关导通。开关导通电阻要小于100Ω,否则会衰减微弱回波,影响增益。

消隐时间不能只按发送脉冲宽度算。理想的消隐时间是发送结束后加上余振衰减到放大器输入噪声以下的时间,通常取0.2到0.5毫秒。按声速340m/s计算,0.5毫秒对应盲区约17厘米。如果你需要测量10厘米以内的物体,消隐时间必须压到0.2毫秒以下,同时发送脉冲数降到8个。

盲区与测量距离的具体对应关系,用下面的公式估算:

d = (t_blank * v_sound) / 2

v_sound取340m/s,t_blank是消隐时间。消隐0.3ms对应盲区5.1cm,消隐1ms对应17cm。调参时要同时关注消隐电路硬件和软件中的屏蔽窗口,软件里同样时间段内的中断信号要忽略。

4. 搭建一套可复现的发送接收验证链路

前面讲了理论,这一步给出完整的最小电路建议。元件都用容易买到的直插或贴片,不用特殊器件。

4.1 最小元器件清单与连接关系

发送部分需要:STM32最小系统板一块,74HC04一片或TC4427一片,升压变压器一个,10mm压电陶瓷换能器一个。变压器如果买不到现成的,用EE13磁芯自己绕也来得及:初级用0.2mm漆包线绕12圈,中心抽头,次级用0.1mm线绕120圈。

接收部分需要:LMV358一片,LM393一片,若干电阻电容,第二颗同型号换能器或与发送共用换能器。如果分开放置收发两颗探头,省去消隐开关;如果共用探头,再加一个JFET开关。

连接关系如下:

  1. STM32的PA8输出PWM,接到74HC04输入端
  2. 74HC04并联输出接变压器初级中心抽头的两端,注意推挽接法
  3. 变压器次级一端接换能器正极,另一端接地
  4. 换能器信号经过C/R高通后进LMV358第一级同相放大
  5. 第一级输出进第二级放大,再进LM393比较器
  6. 比较器输出接STM32的PA0,配置为输入捕获

元件参数汇总表:

位置元件参数
发送驱动74HC04或TC4427并联输出
变压器初级/次级12T / 120T
输入高通C1 / R110nF / 1.5kΩ
第一级增益R2 / R330kΩ / 1kΩ
第二级增益R4 / R520kΩ / 1kΩ
比较器参考R6 / R710kΩ / 10kΩ

4.2 用示波器做发送接收联调

焊完电路先不急着写测距程序,用示波器验证各节点波形。

第一步,测MCU输出引脚PA8,应看到40kHz、5Vpp方波,脉冲个数与配置一致。没有波形先查定时器时钟配置,STM32F103的TIM1挂在APB2上,且APB1和APB2的时钟使能要分别打开。

第二步,测变压器次级输出电压。正常情况应在探头两端看到脉冲包络,幅度不小于60Vpp。如果幅度很低,重点检查变压器初级的驱动电压和匝数比。驱动端用74HC04时,输出高电平接近5V,推挽驱动下初级两端电压为10Vpp左右,匝数比1:10可得到约100Vpp。实际带换能器后电压会掉到60到80Vpp。

第三步,模拟回波。手拿一张硬纸板在探头前方0.5米处晃动,用示波器观察LMV358第一级输出,应能看到一串随距离变化幅度衰减的40kHz正弦波。看不到波形时,先确认消隐电路是否完全关断,再把示波器探头直接点到换能器正极确认原始信号存在。

第四步,观察比较器输出。把比较器参考电压调到2.5V左右,输入有回波时应输出宽度与回波持续时间有关的方波。比较器输出误触发频繁的话,检查发送期间是否有关联信号耦合进入接收端,必要时缩短示波器探头地线夹长度。

4.2.1 与HC-SR04模块方案的区别在哪里

HC-SR04模块内部使用专用芯片和变压器完成收发,外围省事但灵活性差:发送电压、脉冲个数、接收增益都固定了,盲区约2到3厘米,最远4米左右。自己搭电路能改的点就体现在这几个参数上,发送脉冲个数从8到14可调,接收增益可以通过电位器微调,适合对最远距离和最近盲区有特殊要求的场景。

STM32工程里接收端处理通常这样写:

void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) { uint32_t capture = TIM_GetCapture1(TIM2); TIM_ClearITPendingBit(TIM2, TIM_IT_CC1); // 忽略发送结束后的前0.3ms内的捕获 if (capture > blank_cycles) { echo_ticks = capture; } } }

blank_cycles根据消隐时间换算成定时器计数值。比如定时器时钟72MHz,0.3ms对应21600个计数。这段代码的作用不是滤波,而是从软件层面再做一个与硬件消隐同步的屏蔽窗口。

4.3 常见误用与差别

接收放大器带宽太窄是最常见的误用。有人为了滤波把低通转折频率设在40kHz,结果换能器的实际谐振频率只要漂移1到2kHz,回波增益就掉好几个dB。正确做法是低通转折频率放到60kHz到80kHz,保留足够的频率余量,噪声问题交给比较器阈值去处理。

第二个常见问题是发送驱动能力不足。直接用STM32GPIO驱动变压器,输出电流限制在20mA左右,变压器初级电感小、电流上升慢,发送声压偏低。改成74HC04并联或TC4427后效果立竿见影。

第三个问题是接收放大器的静态工作点没有落在电源中点。LMV358单电源供电时,同相输入端需要接一个偏置电阻到VCC/2,否则输出波形会截底。通常在同相输入端加两个10kΩ电阻分压,再接10kΩ到输出端形成直流反馈。

5. 盲区、阈值与频漂:把参数调到能用的调试技巧

电路能工作之后,调参才是决定测距效果的关键。这里的参数不只是代码里的常量,还包括硬件上可以调整的电感、电容和比较器参考电压。

先调盲区。发送结束后用示波器看接收放大器的输出,余振信号幅度会从几百毫伏逐渐衰减。调节发射脉冲个数,让余振幅度降到比较器翻转阈值之下,同时记录此时对应的软件消隐时间。8个脉冲配合0.3ms消隐,盲区大约5厘米;如果不需要近距离测量,放宽到1ms消隐,对远距离稳定性反而有好处。

再调比较器参考电压。参考电压设置得低,接收灵敏度高,但噪声和余振容易被误判为回波;设置得高,误触发少但测距变近。比较实用的原则是参考电压取VCC/2加0.1到0.3V的偏置。如果近距离测量、回波强,阈值可以提高;远距离测量、回波弱,阈值就需要适当下调。

温度对频率的影响也不能忽略。压电陶瓷的谐振频率随温度变化大约每摄氏度漂移几十Hz,空气声速则随温度升高而增加。程序里如果只有一个固定载频,最远距离处信号可能落在接收带宽边缘。很多方案在接收端用软件扫频,每次发送前用不同频率试一遍,看哪个频率下回波幅度最大再正式测距。这种自适应激励频率的做法在STM32上实现成本不高,但能把一致性提升一个档次。

最后一招是筛选回波。比较器输出会包含多个回波峰,直接取第一个上升沿容易把噪声当成近距离目标。标准做法是连续发送多次,对每次测得的回波时间做一致性判断,偏差超过一定范围就丢弃重新测。这个逻辑不算复杂,但比单纯取第一个边沿可靠得多。如果你已在示波器上看到了干净的40k回波包络,只差最后这层软件判断,那这套收发电路设计就可以收工了。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询