
简介这是一份关于超声波传感器发送与接收电路设计的PDF技术文档面向电子信息工程、嵌入式系统开发及自动化领域学习者系统讲解从理论分析到电路实现的全流程。文件包仅含1个PDF文档大小973KB内容结构完整涵盖超声波传感器概述、555定时器构成的多谐振荡器产生40kHz方波信号、74LS04驱动电路以及CX20106A接收处理电路等关键模块并配有系统模块框图和芯片引脚与原理说明对各芯片的工作机制进行了详细讲解。该资料在CSDN已有370人学习浏览适合准备超声波测距类课程设计、毕业设计或需要搭建实际收发电路的工程师参考。文档将系统划分为发射电路和接收电路分别设计发射部分包括脉冲信号产生、占空比控制和驱动放大接收部分包括检测电路、电压比较与信号处理内容具体可操作能够帮助读者完整理解超声波传感器收发电路的设计思路和工作流程并可直接用于电路仿真、实物搭建及后续扩展。1. 超声波传感器发送与接收电路设计为什么收发要分开调先说一个反直觉的现象多数基于超声波传感器的测距项目最后出问题不是坏在算法上而是坏在发送与接收电路上。HC-SR04 这种集成模块把发送和接收电路都封装好了看似省事可一旦想把探测距离从 4m 拉到 8m或者在强噪声车间测液位模块的固定增益就变成瓶颈。超声波传感器发送与接收电路设计这个标题讲的是底层能力发送电路负责把电脉冲变成足够强的声波接收电路负责把衰减几十 dB 的回波从噪声里捞出来。它适合解决距离达不到、盲区太长、回波抖动这三类问题。这份设计的核心在于把发射和接收当成两条独立链路分开调试先打通高压发射再处理微弱回波。2. 发送与接收的电路原理从换能器等效模型到指标计算2.1 压电换能器的等效模型与 C0 的影响超声波传感器发送与接收电路设计的起点是压电陶瓷换能器。发射时在陶瓷片两端施加高压脉冲陶瓷片产生机械形变并向空气辐射声波接收时外界声波压到陶瓷片上电极上感应出毫伏级电压。同一只换能器既能发射也能接收但发送驱动信号有几十伏接收信号只有几毫伏两者不能直接并联否则接收前端会被发射强脉冲打坏。从电路角度看压电换能器等效为一个串联 RLC 谐振网络再并联一个静态电容 C0。C0 通常在 800pF 到 2.5nF 之间谐振频率由陶瓷片厚度决定。最常见的 40kHz 换能器其串联谐振阻抗在 150Ω 到 1kΩ 之间并联电容约 2nF。在 40kHz 频率下2nF 电容的容抗约为 1/(2π×40000×2e-9)≈1990Ω。这个数值直接决定接收电路的输入阻抗门槛如果前级放大器的输入阻抗只有 10kΩ回波信号会被 C0 和输入阻抗分压损耗约 17%。远距离回波本来就在毫伏级这点损耗可能是检测失败与成功之间的分水岭。实际画图时我习惯在接收输入端并联两个反向二极管到地把发射串扰钳位在正负 0.7V 以内。这样做在 HC-SR04 模块内部也存在只是限幅位置更靠近比较器。分立方案中限幅二极管要放在接收放大器之前而不是放在比较器之前否则放大器本身会被打饱和恢复时间长达数百微秒正好覆盖近距离回波到达的时段。2.2 发射链路与接收链路的分工发送电路的核心指标是发射电压、激励频率和脉冲个数。STM32 定时器可以输出 40kHz 方波但 IO 口只有 3.3V直接驱动换能器声压不够。常见做法是先用 MOSFET 把 3.3V/5V 信号转换成 12V 方波再通过变压器升压得到 60V 到 120V 的峰峰电压加到换能器两端。脉冲个数一般取 8 到 12 个8 个脉冲可以缩短盲区12 个脉冲能提高远距离回波能量但盲区会拉长到 10cm 以上。接收电路则围绕增益、带宽和动态范围来设计。典型的三级链路是前置放大、带通滤波、比较整形。总增益按 60dB 到 80dB 设计具体数值依据目标距离反推。近距离回波大增益低了测不到远处增益高了近处饱和。如果接收动态范围超过 60dB就要考虑加入自动增益控制或分档衰减。这里的动态范围指最小可检测回波到最大饱和回波之间的幅度差可以由距离衰减公式推算出来。2.3 根据量程与噪声环境选集成模块还是分立方案选型没有绝对标准只有边界条件。HC-SR04 适合量程 2cm 到 4m、环境噪声不高、开发周期短的场景MCU 只发触发信号、等回波脉冲即可。它的问题在于接收增益固定近距离强回波容易饱和且无法在软件里调整。分立方案的改动空间大得多可以改发射电压、改接收增益切换逻辑、换用大尺寸换能器提升灵敏度。液位测量、交通流量检测这类需要 5m 以上量程的场合几乎都要回到“超声波传感器发送与接收电路设计”这张图纸上自行设计。无论选哪种方案下面几项换能器参数在动手画图前都要先定下来换能器参数典型值对电路设计的影响谐振频率40kHz ± 1kHz发送 PWM 中心频率与接收滤波中心必须对齐静态电容 C00.8nF - 2.5nF决定接收放大器输入阻抗下限串联谐振阻抗150Ω - 1kΩ影响发送端功率匹配与变压器匝比核算最大驱动电压60V - 120V 峰峰决定升压比、MOSFET 耐压和次级绕组绝缘确定换能器型号后再反推电路指标比先搭电路再选换能器省事得多。3. 超声波传感器发送电路设计激励、升压与匹配参数3.1 用 STM32 定时器生成 40kHz 激励波形发送电路的第一步是生成 40kHz 的方波序列。STM32 定时器可以输出 PWM但发送电路需要的是短促脉冲串不是连续波。下面这段代码基于 STM32F103 的 TIM1 产生 40kHz、占空比 50% 的 PWM并用简单延时控制发送时间// STM32F103 TIM1 输出 40kHz PWM占空比 50% void ultrasonic_tx_init(void) { RCC-APB2ENR | RCC_APB2ENR_TIM1EN | RCC_APB2ENR_GPIOAEN; GPIOA-CRH ~0x0000000F; // 清 PA8 模式位 GPIOA-CRH | 0x0000000B; // PA8 复用推挽输出50MHz TIM1-PSC 0; // 预分频为 0计数频率 72MHz TIM1-ARR 1799; // 1800 个时钟周期为 40kHz TIM1-CCR1 900; // 高电平 900 拍占空比 50% TIM1-CCMR1 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // PWM 模式 1 TIM1-CCER | TIM_CCER_CC1E; // 使能通道 1 输出 TIM1-BDTR | TIM_BDTR_MOE; // 高级定时器主输出使能必须加 } // 发送约 10 个脉冲后停止 void ultrasonic_send_pulse(void) { TIM1-CR1 | TIM_CR1_CEN; // 启动定时器 for (volatile int i 0; i 250; i); // 粗略延时约 250us TIM1-CR1 ~TIM_CR1_CEN; // 停止定时器 }这里的关键是 ARR 与 CCR1 的配合系统时钟 72MHz预分频为 0计数器从 0 计数到 1799 正好是 1800 个时钟周期输出频率 72MHz/180040kHzCCR1 设为 900高电平持续 900 拍输出占空比恰好 50%。BDTR 寄存器的 MOE 位是高级定时器的主输出使能忘记配置它 PWM 不会出现在引脚上这是 STM32 高级定时器最常见的坑。延时循环 250 次只是临时的粗略实现因为循环耗时受编译优化和中断影响不稳定。量产代码里应该用定时器更新事件或 DMA 来精确控制脉冲个数让发送时间抖动小于 1µs。3.2 升压驱动与变压器匹配的拓扑与计算定时器输出的 PWM 幅度只有 3.3V换能器需要更高的驱动电压。常见做法是用场效应管驱动芯片把逻辑电平转成 12V 方波再接升压变压器。变压器匝比是发送电路设计中最容易拍脑袋定的参数。匝比越高次级电压越高但次级阻抗按匝比的平方上升超出换能器谐振阻抗太多时能量无法有效注入声压反而下滑。以 12V 供电、目标峰峰电压 80V 为例选匝比 1:6。次级信号幅值约 72V。换能器等效负载按 500Ω 估算次级峰值电流约 144mA折算到初级约 864mA。因此 MOSFET 的额定电流至少留 2A 余量变压器初级线径按 1A 以上设计次级绝缘耐压按 150V 选择。变压器磁芯建议用 EE13 或 EE16 铁氧体40kHz 下损耗较小。初级绕 12 匝次级绕 72 匝初次级之间加一层聚酯薄膜绝缘。绕线尽量均匀、单层排布次级分布电容过大会与换能器静态电容形成谐振峰把发射中心频率拉偏导致回波幅度下降。3.3 发射脉冲数与盲区之间的定量权衡40kHz 声波在空气中波长约 8.5mm单脉冲时长 25µs。16 个脉冲的持续时间为 400µs对应空间长度约 13.6cm这是理论盲区下限。换能器余振时间往往比发射时间更长实际盲区通常达到 15cm 到 20cm。要缩短盲区除了减少脉冲数还可以在换能器两端并联泄放电阻让脉冲结束后残余电荷快速泄放。泄放电阻从 1kΩ 开始试验示波器观察换能器电压波形当第二个周期的余振幅度小于第一周期的 20% 时增大电阻如果余振仍然明显减小阻值。阻值太小会让发射效率变差所以要在盲区长度与发射效率之间取一个平衡点。注意观察发送波形时示波器探头的地线要直接夹在换能器地端不要夹在变压器次级远端否则地线寄生电感会叠加振铃误导你对匹配的判断。4. 超声波传感器接收电路设计放大、滤波与比较整形4.1 前置放大器的输入阻抗与噪声控制接收换能器的输出信号幅度相差很大0.5m 处强反射回波可能超过 100mV8m 处弱回波只有 1mV 上下。前置放大器是整个接收电路信噪比的瓶颈。运放自身的电压噪声要低偏置电流要小。常见选择是 AD8065、OPA2376 这类低噪声运放增益带宽积 5MHz 以上即可满足 40kHz 放大 50 倍的需求。前级使用同相放大时输入端直接连接换能器输入阻抗由偏置电阻决定。为了让信号不被 C0 分压运放输入阻抗应大于 100kΩ。这里有个容易被忽视的点偏置电阻本身会产生热噪声阻值越大噪声幅值越高。设计时通常在 10kΩ 到 100kΩ 之间折中并用噪声峰值估算误触发概率。把输入端短路示波器看运放输出噪声幅度如果输出噪声已经达到几十毫伏说明前级增益过高或者运放选型不合适。4.2 带通滤波与自动增益控制的取舍放大后的信号中含有大量环境噪声带通滤波让 40kHz 附近的信号通过。Q 值直接影响通带宽度Q5 时通带约 8kHz对频率偏移的容忍度较好Q10 时通带约 4kHz选择性更强但相位延迟增加。测距场景关注的是相位延迟转化为时间误差40kHz 信号一个周期 25µs相位延迟 10 度约对应 0.7µs折算距离误差约 0.12mm。多个级联滤波器会叠加延迟设计时要把这部分误差计入系统校准。固定增益接收电路在强反射环境中会进入饱和状态。回波脉冲经过比较器后饱和时脉冲宽度被拉宽软件按宽度判断距离就会出错。常见的自动增益控制方案有两种一是用 AD603 这类压控增益放大器用 DAC 输出电压控制增益二是用模拟开关切换反馈电阻实现三档增益切换。从工程角度看模拟开关方案更好调试因为每一档增益都可以独立标定。4.3 比较器阈值与回波脉冲输出比较器把模拟回波转成数字脉冲MCU 只需要捕获上升沿。阈值设置关乎整个系统的误触发率。阈值太高丢远距离回波阈值太低把噪声和发射串扰当成回波。常规做法是用示波器测量无目标时接收输出端的噪声峰值把阈值设为噪声峰值的两倍到三倍。// 回波信号上升沿捕获初始化STM32 TIM2 void ultrasonic_rx_init(void) { RCC-APB1ENR | RCC_APB1ENR_TIM2EN; TIM2-PSC 72 - 1; // 72MHz 分频到 1MHz计数值即微秒 TIM2-ARR 0xFFFF; // 16 位最大计数值 TIM2-CCMR1 | TIM_CCMR1_IC1F_1; // 输入滤波 8 个时钟周期 TIM2-CCER | TIM_CCER_CC1E; // 使能通道 1 捕获CC1P 默认 0 为上升沿 TIM2-CR1 | TIM_CR1_CEN; // 启动定时器 }TIM2 的预分频设为 71使计数频率降为 1MHz每个计数代表 1µs回波时间直接读取即可。输入滤波 8 个时钟周期可以滤除比较器输出的高频毛刺防止同一个回波触发多次捕获。输入滤波值太小时噪声毛刺会引起误中断太大时窄的远距离回波可能被过滤掉。接收链路的关键参数和设计关注点如下接收级功能典型参数设计关注点前置放大同相放大增益 50 倍输入阻抗 100kΩ运放噪声、偏置电流带通滤波中心频率 40kHzQ 值 5 到 10选择性与相位延迟增益控制分档切换或 VGA增益范围 20dB 到 60dB近距离防饱和比较整形回波转脉冲阈值 20mV 到 50mV阈值随噪声调整总增益按 60dB 到 80dB 目标设计配合分档切换动态范围才能兼顾近距离和远距离。5. 发送接收电路与 STM32 的联调波形观察与参数调整5.1 发送与接收电路同时上电前的检查顺序两块电路第一次同时上电先不要接换能器。分别测量供电电压、MOSFET 栅极波形和比较器输出静态电平确认没有自激振荡后再接换能器。发送电路工作时接收放大器的输出端往往会出现一个很窄的干扰脉冲这是发送强脉冲通过空间或地平面串扰进来的如果不消除它会被当成近距离回波。排查串扰路径的第一步是把发送地线和接收地线之间的连接断开改用一根短粗导线单点连接。如果串扰明显下降说明地环路是主要路径如果串扰没变化就检查限幅二极管的位置和参数。接收输入端附近没有放 100pF 到 1nF 的旁路电容时发送脉冲会直接耦合进运放输入。5.2 用示波器判断发送电路是否对准谐振点示波器探头接在换能器两端以 STM32 的 PWM 输出作为触发源。正常时应该看到一串幅度相近的衰减正弦波频率接近 40kHz。如果只见方波而看不到完整正弦包络说明变压器与换能器匹配偏离谐振点如果幅度忽大忽小优先检查电源在发射瞬间是否被拉低。谐振点可以软件扫描把 ARR 从 1700 改到 1900对应频率 37.9kHz 到 42.4kHz每次改变后记录换能器两端的峰峰值峰峰值最大的频率就是实际谐振点。因为换能器个体差异和 PCB 寄生电容实测谐振频率往往不是标准 40kHz软件做一次校准并记录偏移量即可。5.3 接收链路与 STM32 计时精度的联调接收比较器的输出脉冲上升沿代表回波到达。声波往返时间从发送脉冲的第一个上升沿开始计时到比较器输出上升沿结束。标准大气压下 20 摄氏度时声速约 343m/s时间误差 1µs 对应的单程距离差约 0.17mm。普通 16 位定时器在 1MHz 计数时记录 1m 距离回波的计数值约 5800 拍分辨率足够。联调时把反射物固定在 1m 处连续发送 20 次记录时间数组。正常的波动范围应小于 ±50µs。如果超过 ±200µs优先检查电源纹波和比较器阈值。接收放大器的电源引脚要就近加 100nF 陶瓷电容运放参考电压引脚不能直接从分压电阻取否则阈值会随电源纹波一起抖动。5.4 从 HC-SR04 迁移到分立电路的触发差异从 HC-SR04 迁移到分立收发电路触发方式的变化是刚上手时最容易出错的地方。HC-SR04 模块只需要 MCU 给一个 10µs 的触发脉冲然后等待回波分立电路里发送脉冲和接收使能由同一个 MCU 控制但发送完成后需要立即开始接收计时而接收比较器可能因为发射串扰误触发。解决方案是在 40kHz 脉冲发出后的 1ms 内屏蔽接收中断也就是软件盲区这段时间对应约 34cm 空间距离。盲区屏蔽时间要根据实测换能器余振来调整不能直接照搬 1ms。把反射板放到 5cm、10cm、15cm观察盲区在哪一段回波消失再设置屏蔽时长。这样既避免误触发也不会丢掉近距离有效回波。6. 超声波传感器收发电路的标定技巧与边界验证6.1 用范围切换保持接收增益的稳定性没有自动增益时接收链路可用一根可调电阻实现两挡增益。具体做法是把反馈电阻分成两个电阻串联中间接一个 P 沟道 MOSFET 或模拟开关。近距离0.1m 到 1m切到低增益远距离1m 以上切到高增益。每次测量前先发送一个脉冲以回波幅度判断是否切换增益半导体开关切换用时极短不影响连续测距。需要注意的是切换增益时比较器阈值也要同步改变否则高增益下噪声会被误判为回波。6.2 用温度补偿修正声速变化超声波传感器的发送与接收电路本身不随温度变化但声速随温度正比变化。实际设计中加入一个温度传感器测量环境温度后用声速公式修正可以让距离测量的线性度明显改善。软件补偿的公式如下// 根据温度补偿后的声速计算距离单位 mm float sound_speed 331.4f 0.6f * temperature_c; float distance_mm time_us * sound_speed / 2.0f / 1000.0f;公式里的 331.4 是 0 摄氏度时声速0.6 是每秒每摄氏度声速变化量除以 2 是因为时间计的是往返程。6.3 最终验证方法把一张硬纸板从 10cm 移到 8m每移动 0.5m 记录 10 次测量结果计算平均值和最大偏差。如果全程最大偏差小于 2cm且 8m 处仍能稳定触发发送与接收电路设计就可以算合格了。若在 8m 处回波偶尔丢失优先检查比较器阈值而不是提高前置放大增益。本文还有配套的精品资源点击获取