用L293D H桥驱动超声波定向音箱:原理、接线与实测波形详解

发布时间:2026/10/7 17:05:03
用L293D H桥驱动超声波定向音箱:原理、接线与实测波形详解 被问超声波定向音箱怎么做我向来给的答案都是先别急着研究算法也别上来就买超声专用驱动芯片老老实实先搭一个能把40kHz方波放大成高压差分信号的H桥回路这一块搞定后面的事情就顺了。而这个H桥我强烈建议新手用L293芯片起步因为它内部集成了两组三极管H桥芯片本身又是妥妥的电机驱动老将市面上一抓一大把价格几块钱想烧坏都难。我用L293D这个版本做了一版超声波定向音箱的驱动板把两个H桥组合成了BTL式的双极性输出实测在12V电源下能得到大约20Vpp的差分方波驱动Φ20mm的40kHz压电陶瓷换能器非常从容。这篇文章就把整个项目的设计思路、L293内部H桥的工作原理、接线细节和示波器实测波形一次性说清楚适合正在做超声波定向发声、参量阵列实验或者单纯想搞懂H桥驱动电路原理的朋友参考。1. 驱动方案为什么是H桥为什么是L2931.1 压电换能器到底是什么负载超声波定向音箱的最终负载是压电陶瓷换能器。这东西很多人以为它就是一个喇叭接两根线给个正弦波就会响实际上它的电气特性和动圈喇叭差很远。从等效电路角度看一片常用的40kHz压电陶瓷片可以简化成一个电容并联一个电阻电容值通常在10nF到40nF之间具体看直径和厚度Φ20mm的常见规格大概在20nF上下。既然是容性负载为主驱动它的关键就不是恒流也不是功率而是要有足够高的电压摆幅。压电片的形变量和两端电压基本成正比电压越高发射的声压越强。所以驱动超声换能器的本质是把载波信号放大成一个高电压、双极性、能快速充放电的方波或正弦波。普通单片机的IO口只能输出3.3V或5V驱动能力也才十几毫安直接接上去声音小得像蚊子叫这就是为什么必须加一级驱动电路的根源。这也是很多新手卡住的地方明明换能器也换了代码也写了为什么声音还是小因为你给的是一个单端的低压信号而不是一个真正的高压差分激励。超声换能器要出效果必须把驱动电压抬到接近20Vpp甚至更高这时候H桥方案就是最简单有效的路子。1.2 单端驱动和差分驱动的差距假设我们用一颗三极管或者一个MOSFET做单端驱动电源12V那换能器两端最高电压就是0V到12V之间的单极性方波峰峰值最多12V。但如果用H桥来驱动换能器一端接H桥的A输出另一端接B输出A输出12V时B输出0VA输出0V时B输出12V那换能器两端的电压就是在正12V和负12V之间切换峰峰值接近24V。这就是差分驱动的优势同样的电源电压输出摆幅翻了一倍等效于把驱动电压硬生生抬高了6dB。对压电换能器这种“电压敏感型”负载来说这一倍摆幅带来的声压提升非常可观。而且H桥的双极性输出还能让换能器在正负两个方向都得到激励波形更对称谐波分量也更干净。单端驱动也不是不能响但如果你真想做出“声音只在正前方传输、旁边几乎听不见”的定向效果扎实的差分驱动几乎是必备条件。因为定向效果依赖声压级和超声调制质量而这两者都需要足够的驱动电压做基础。1.3 L293这类电机驱动芯片为什么也适合干这活L293在很多人印象里就是驱动直流电机、步进电机的老芯片拿它来驱动压电陶瓷听起来有点跨界。但细看它的内部结构就明白了L293内部就是两个标准的H桥每个H桥由四个BJT开关管组成输入逻辑低电平控制低侧管导通输入逻辑高电平控制高侧管导通。这和我们用分立三极管搭H桥驱动电路原理一模一样只不过厂家已经把管子选好、把逻辑电路集成好了我们只需要关心输入信号和输出负载。L293D的连续输出电流是600mA峰值1.2A耐压到36V。40kHz超声驱动场景下一片20nF的压电换能器需要的电流通常在几十毫安量级L293的电流余量非常充足。而且它的输入门槛不高TTL电平就能驱动单片机3.3V逻辑勉强能用5V逻辑最稳妥。另外一个原因就是调试方便。L293是DIP和SOP封装都有面包板插着就能跑翻车成本极低。相比之下用专用超声驱动芯片或者分立MOSFET半桥方案要么贵要么调试难度大新手很容易在做完驱动之前就已经把信心磨光了。所以我个人非常推荐用L293作为第一个超声驱动方案跑通了再去追求更高效的电路。我个人非常推荐用L293作为第一个超声驱动方案跑通了再去追求更高效的电路。2. L293内部H桥电路原理与接线设计2.1 一块芯片里两个H桥怎么变出一个大H桥L293D内部有两个独立的H桥通道前一组由输入1A、2A和输出1Y、2Y构成使能端是1,2EN后一组由输入3A、4A和输出3Y、4Y构成使能端是3,4EN。每一组H桥的四个开关管就是典型的H桥驱动电路原理图布局两个高侧管接到负载电源VS两个低侧管接到GND负载接在两个半桥输出端之间。驱动超声换能器时我不用它的普通单H桥模式而是把两组半桥组合成一个更大的BTL双极性输出级。具体做法是把1Y接到换能器正端2Y接到换能器负端然后把1A和2A分别接到一对互补的PWM信号上。当1A为高时1Y被拉到接近VS此时2A为低2Y被拉到接近GND换能器两端得到正向电压。当1A变低、2A变高时输出状态完全反转换能器两端得到反向电压。这样一正一反交替换能器就工作在双极性差分驱动模式了。这种接法本质上就是“把芯片当成两组半桥用”和很多H桥电机驱动电路的接法相通但负载从电机换成了电容性换能器。H桥电机驱动电路需要处理反电动势还需要考虑续流二极管而L293D内部已经内置了这些钳位二极管这也是我选D版本而不是普通L293的原因。虽然压电陶瓷是容性负载不存在电机那种明显的反电动势问题但内置二极管在处理极端负载切换时仍然多一层保护属于有比没有好的设计。2.2 使能端与电源怎么接才稳L293D有独立的逻辑电源VCC1和负载电源VCC2/VS这个设计很关键。VCC1负责给内部逻辑和输入级供电一般接5VVS负责给输出级供电直接决定换能器驱动电压的上限。在超声波定向音箱项目里VS我用12V开关电源实测效果和发热平衡得不错。1,2EN是前一组H桥的使能端这个引脚必须拉高输出才会跟输入变化。我直接把1,2EN接到VCC1的高电平上也就是常使能状态。如果要实现音频调制可以把使能端换成PWM信号通过调节使能脉冲宽度来控制输出强度。但这里有个坑用使能端直接做40kHz载波通断控制时开关损耗会明显变大而且调制线性度一般更适合做开关键控式的简单调制不适合高质量音频定向传输。真要做AM或DSB调制还是建议在输入信号源部分做处理让L293只承担纯载波放大。电源滤波方面VS引脚对GND一定要加100μF电解电容和0.1μF瓷片电容并联。H桥高速切换时负载充放电会在电源线上形成很大的电流尖峰如果电源滤波不到位示波器上看到的波形会带满毛刺甚至干扰到同板的其他模拟电路。我自己第一版就是省了滤波电容结果载波波形上全是尖峰后面排查了很久才发现是电源问题。2.3 控制输入逻辑两路反相信号是关键H桥能不能正常出双极性波形全看1A和2A两路输入是否严格互补。我实测最稳的方案是在信号源侧直接把一路40kHz方波分成两路一路经过74HC04反相器得到反向信号分别接到1A和2A。需要注意电平匹配。L293D的输入高电平门槛在VCC1为5V时大约2.3V左右所以3.3V单片机逻辑勉强能驱动但余量不大信号线上有一点噪声就可能触发错误。我个人的建议是要么VCC1和逻辑侧都用5V要么在单片机输出后加一级电平转换再进L293D。别省这一步省了后面排查起来很费时间。还有人问要不要在输入信号做RC死区延时。我实测下来在40kHz载波、L293这种BJT管子的场景里直接用74HC04的反相延迟形成的几纳秒天然死区已经够用芯片没有出现明显直通发热。反而是有人自作聪明加了过大的RC延迟把输入方波边沿拖得很缓让输出管长时间工作在放大区芯片温度飙升这个问题我们在排查实录里还会详细说。3. 实操搭建元器件选型与波形参数计算3.1 最小系统需要准备什么搭建这个驱动系统不需要多少元件我把清单列出来基本都是面包板或者洞洞板手边常备的东西。元件规格数量用途L293DDIP-16或SOP-161H桥电机驱动芯片双通道40kHz压电换能器Φ20mm或阵列板1-N超声波发射负载NE555SOIC/DIP1产生40kHz方波载波74HC04六反相器1产生互补反相PWM100μF电解电容25V耐压以上1-2负载电源滤波0.1μF瓷片电容50V耐压若干高频去耦电解电容10μF/25V1逻辑电源去耦电阻1kΩ、10kΩ等若干555定时电路配置LM2596模块可调降压模块1从12V取5V逻辑电源NE555产生40kHz经典电路需要的电阻电容参数我用标准公式算过取RA1kΩRB8.2kΩC1nF频率约为1.44/((1k2×8.2k)×1nF)≈35.7kHz实际再微调电阻让示波器看到准确40kHz。如果你手头没有555任何能输出40kHz方波的信号源都行重点还是后面L293这级。3.2 40kHz驱动下电流和功耗算给你看我在前面说L293D的电流余量很大这里把计算过程补上方便大家自己估算其他换能器负载。压电换能器在40kHz附近可以看成20nF电容。L293D输出12V方波差分之后换能器两端是双极性方波基波有效值大约0.9×12V10.8V。40kHz下容抗约为XC 1 / (2π × 40kHz × 20nF) ≈ 199Ω对应的基波电流有效值大约是I 10.8V / 199Ω ≈ 54mA这个电流远低于L293D的600mA连续输出能力单颗换能器驱动毫无压力。即使你并联4片换能器等效电容变成80nF电流也就200mA出头。并联8片时达到400mA左右仍然是L293D的承受范围内只是这时候要注意芯片散热了。功耗方面L293D是BJT输出结构导通饱和压降比MOSFET大高侧管和低侧管加起来大约1.8V到2.5V。以200mA负载、占空比50%计算芯片内部功耗大概在0.2W到0.25W属于温温热。但如果占空比不对或者占空比接近100%损耗会明显增加这时候就需要加散热片了。这里顺带说一个很多人忽略的点超声波发射不是把直流电一直加在换能器上而是靠交变方波不断充放电。所以平均电流不大但切换瞬间的充放电电流峰值会远大于计算值尤其是边沿很陡的时候。这也是为什么电源滤波电容不能省否则瞬间电流尖峰全部体现在电源纹波上。L293D是BJT输出结构导通饱和压降比MOSFET大高侧管和低侧管加起来大约1.8V到2.5V。以200mA负载、占空比50%计算芯片内部功耗大概在0.2W到0.25W属于温温热。但如果占空比不对或者占空比接近100%损耗会明显增加这时候就需要加散热片了。3.3 PWM信号生成方式555反相还是单片机互补输出用NE555加74HC04是最省事、最无代码的方案。NE555的输出引脚OUT接74HC04的输入端74HC04的输出同时给出反相信号原信号从555的OUT直接引反相信号从反相器输出引。这两个信号就是我们需要的互补PWM对。用这个方案时注意负载匹配。74HC04输出驱动L293D输入没问题但反相器输出和555输出之间的传播延迟约为10ns量级对于25μs周期的40kHz信号来说这个延迟完全可以忽略互补度也很好。缺点是555的占空比输出不完全等于50%因为555的输出高电平和低电平时间不对称实测通常在48%到52%之间波动。这个误差对超声定向音箱影响不大但如果要做严格的BTL平衡输出后面用单片机互补PWM才更放心。单片机方案更灵活。用STM32的定时器或者Arduino的Timer1都可以输出频率和占空比精确可控的互补PWM而且还能配置死区时间。我自己在第二版里就是用STM32的TIM1输出两路互补PWM频率设成40kHz死区设成500ns直接进L293D整个信号链比555方案干净不少。新手如果手头没有信号发生器又不想焊555用Arduino也是好选择前提是搞清楚定时器配置别一上来就digitalWrite模拟PWM那种方波的相位抖动太大会影响超声解调质量。3.4 焊接顺序和电源滤波细节如果你用洞洞板焊接我建议按这个顺序先焊电源接线端子和滤波电容再焊L293D芯片座接着焊555和反相器最后再接换能器。先焊电源部分是为了方便一边焊一边测电压避免后面接错又反复拆。电源走线尽量粗尤其是VS和GND。H桥瞬间电流虽然不大但边沿陡峭地线阻抗稍高就会在GND上产生弹跳反映到波形上就是输出低电平不干净。我测试时地线过长低电平实测有0.8V的毛刺缩短地线之后降到0.3V左右。另外换能器的引线能短就短长引线会带来寄生电感和辐射既影响波形质量也容易让驱动板干扰其他设备。如果必须用长线建议把换能器端的引线绞合起来或者串一个10Ω到22Ω的小电阻抑制振铃。4. 实测波形分析从示波器上看到的真相4.1 单端输出测出来长什么样我用示波器CH1接L293D的1Y对GNDCH2接2Y对GNDVS设12V测到的是两路相位相反的单端方波。CH1高电平大约10.4V低电平大约0.5VCH2同样高电平10.2V低电平0.6V。这里的低电平不是真正的0V而是BJT输出管的饱和压降留下的残压属于正常现象。单端波形的上升沿和下降沿大概在100ns到150ns之间对40kHz来说足够快了。方波边沿没有明显过冲说明电源滤波和线路寄生参数控制得还不错。如果看到边沿有过冲和振铃第一怀疑对象就是探头地线太长第二才是线路寄生电感。其实单端波形本身不直接决定换能器性能它只是让我们确认两侧半桥工作状态是否对称。CH1和CH2的高电平差0.2V左右这是芯片内部上下管饱和压降不完全一致导致的可以忍受。如果两侧高电平差超过1V那就要检查是不是某一个输出管快坏了。4.2 差分输出才是真正的换能器激励把示波器切换到数学运算模式用CH1减去CH2就能看到差分波形。这个差分波形才是真正加到压电换能器两端的激励信号。理想情况下如果两路单端都是0到12V方波且完美反相差分输出应该是从-12V到12V的24Vpp方波。实测得到的差分波形大约是20Vpp从-10V左右跳到10V左右正负半周基本对称。之所以比理论值低就是两路单端的高电平受饱和压降拖累以及低电平不是严格0V带来的综合损失。这个结果完全在预料之中驱动单颗或者并联两片40kHz换能器都够用。值得关注的是差分波形在切换瞬间的细节。如果在切换点看到一个短暂的平台期说明两路输出之间出现了死区等待。这个平台越长输出能量损失越多。实测我的电路切换点几乎看不到明显平台这是74HC04反相延迟形成的天然死区很小的缘故。如果你用单片机互补PWM且死区设得很大比如5μs就会在波形上看到明显的阶梯这时候要权衡直通风险和输出功率不要把死区设得太夸张。4.3 尖峰、振铃和边沿钝化怎么解读接上真实换能器之后差分波形就不再是干净的方波了。因为压电片等效电容在方波边沿瞬间会形成快速充放电示波器上能看到在边沿处有一个小幅过冲幅度大约1V到2V然后迅速衰减。这个现象在RC负载驱动中非常典型只要过冲幅度没有超过电源电压的20%就可以不用管。如果过冲幅度超过3V或者出现持续好几个周期的振铃就要检查几个方向了。首先是换能器引线是否过长长引线带来的电感会和压电片的电容形成LC谐振产生振铃。其次是VS端滤波电容是否老化或失效。还有一个常见原因是示波器探头本身如果你用10×探头但补偿没调好也会看到虚假的过冲。边沿钝化则是另一个信号。如果你发现方波边沿变得非常缓慢比如上升时间超过500ns说明输入信号或者驱动级已经带不动负载了。这通常发生在换能器并联数量太多、负载电容过大的时候。此时L293D输出管在开关过程中停留在放大区的时间变长芯片功耗会显著上升波形也会失真。解决办法要么减少并联数量要么把VS电压降低一点要么换成MOSFET H桥方案。5. 常见问题与排障顺序5.1 芯片发烫严重先看电源和占空比L293D在40kHz超声驱动下发热是很多人遇到的第一个问题。如果只是温热那是正常的毕竟BJT管有饱和压降只要功耗在0.5W以内都可以接受。但如果是烫到手指不能碰就要赶紧排查。最先看的是占空比。有些人为了增强输出直接把PWM占空比调到接近100%结果输出管长时间导通内部功耗持续拉高。H桥驱动超声换能器跟驱动直流电机不一样电机是可以持续通电的压电换能器如果长时间固定在一端加压除了耗尽电能对发射也没有帮助。建议载波占空比控制在50%左右。第二个看电源电压。VS越高输出摆幅越大但L293D的内部功耗也越大。实测从12V升到18V芯片温度上升非常明显而换能器声压的提升却没有想象中明显。所以不是电压越高越好12V是这个方案里最甜的点。第三看有没有“疑似直通”。如果输入PWM两路没有严格互补或者存在一个很长的中间电平时间就会导致输出级上下管同时导通电流直接从VS灌到GND芯片很快就会烫手。这时候用示波器同时看两路输入确认它们在电平转换时没有出现同时处于高电平或低电平的长重叠区。5.2 输出幅度只有理论一半多半是占空比和使能接错如果你测差分波形发现峰峰值只有10V左右而不是预期的20V那问题基本出在“没有形成差分”上。常见原因是1A和2A接的是同相信号两条半桥输出同步翻转换能器两端永远没有压差。这时候单端看两路输出都是正常的方波但差分结果是0V。另一个常见原因是使能端没接好。1,2EN如果悬空输出可能不跟随输入变化如果接到了低电平整个H桥直接被关断输出固定在某个状态换能器得不到交变激励。我的建议是使能端直接接VCC1高电平至少在验证驱动电路时先这么干别一上来就把使能端当调制端用容易把问题搞混。还有一种情况是占空比严重偏离50%。比如占空比变成90%大部分时间输出都在正电压侧负半周非常短差分波形的峰峰值虽然不小但波形不对称正负半周面积严重不等。这种不对称激励会让压电换能器产生直流偏置长期工作还可能影响寿命。5.3 定向效果差、声音发闷问题不在驱动电路很多人以为驱动电路做好了定向音箱就应该有神奇效果但实际一听发现声音发闷、定位感不强于是开始怀疑H桥。根据我的经验问题往往出现在换能器阵列和载波调制上而不是驱动电路本身。超声波定向音箱能实现定向依赖的是超声载波在空气中传播时的非线性自解调效应。这个效应需要足够高的载波频率、足够大的声压级以及合适的调制方式。如果你只是用40kHz方波直接驱动换能器听到的只是一种刺耳的边带噪声根本谈不上音频。要做真正的定向发声必须把音频信号调制到40kHz载波上再经过超声换能器阵列发射出去。载波频率也要和换能器匹配。40kHz的换能器只有在40kHz附近才有较高效率如果你用555把频率调到了45kHz或者换能器实际谐振点在38kHz驱动波形再漂亮也白搭。最好用信号发生器扫一下换能器谐振点或者用示波器观察电流最小、输出声压最大的频率再锁定载波频率。还有一点单个小压电片的声压级非常有限定向效果几乎出不来。我做过对比单个Φ20mm换能器在1米外听不到明显的定向声束用8片以上的阵列后效果才真正出来。所以驱动电路之后换能器阵列的布局和数量对定向效果的影响比想象中更大。5.4 个别换能器不响或声音偏小阵列里出现个别换能器不响先别怪L293D。压电陶瓷片的引线焊接非常讲究尤其是一片阵列多个并联时只要有一个焊点虚焊这一个换能器就可能完全不工作。用万用表二极管档或者电容档测一下单片的电容值正常的20nF左右明显偏小或者开路就说明片子坏了。另外要注意并联换能器的极性。如果换能器本身有极性标识尽量保证阵列中所有压电片的极性方向一致这样在差分驱动时所有片子的形变方向一致声波才能同相叠加。如果混接极性一部分片子朝内振动、一部分朝外振动声压会互相抵消整体效果大打折扣。我第一次搭8片阵列时就吃过这个亏看起来波形正常但声压级一直上不去最后拆开检查才发现有两片极性焊反了。如果你的整个阵列都不响先回到单颗换能器上验证驱动电路。把阵列断开只接一颗确认波形正常再逐步加数量。一次加太多并联负载电容变大到一定程度后L293D的输出可能无法维持充足的电压摆幅就需要考虑降低并联数量或者改用更大驱动的MOSFET H桥方案了。最后这个项目做到现在我最深的体会是H桥驱动电路原理并不复杂但真正决定成败的往往是电源滤波、波形对称、换能器匹配这些细节。L293D做超声波定向音箱的驱动级算不上最高效的解决方案但绝对是让新手建立信心的最佳起点。我后面打算再把音频调制的部分单独整理出来配合这套L293D驱动板做一个完整的参量阵列发射端有兴趣的朋友可以先把这套驱动电路跑起来波形测通之后后面每一步都会顺很多。