ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DIY超声波阵列定向声波发射器:从压电换能器到参量阵实战

DIY超声波阵列定向声波发射器:从压电换能器到参量阵实战 前一阵子动手做了一个超声波阵列定向声波发射器算是我玩电子DIY以来最烧脑也最有成就感的一件事。外形上它只是一块亚克力板上面密密码码焊了十几个银色的圆形探头可通电之后你和它正常说话的距离站在正前方两三米能听清声音往旁边挪两步声场立刻像被捏扁的小气球一样瘪下去。这种“声音手电筒”一样的效果第一次演示时把身边几个朋友全看愣了。其实这个项目里没有常规的扬声器纸盆发声靠的就是那排工作在40kHz的压电陶瓷换能器核心机制是让载波信息通过空气本身的非线性效应在声场里被“解调”成可听声也就是常说的小型参量阵扬声器。开门见山说结论如果你想找个项目把单片机、模拟调制、容性负载功率放大、阵列波束合成这些硬核知识点一次打通今天这个选题再合适不过。我会按实际搭建的顺序写为什么声音能被超声“搬运”到空气里、每一级硬件怎么选、阵列布阵怎么算、调试翻车记录、以及哪些坑值得后来人避开。整个流程两三个周末能跑完下面直接开始。1. 定向声波的核心原理空气不是线性的1.1 先理解“差频”很多人第一次听说定向声波时都问同一个问题超声波人耳根本听不见那声音到底从哪来答案藏在空气的“非线性”里。我们平时默认空气对声音是线性介质这在大众日常里没有任何问题但一旦声压够大空气的体积压缩和恢复就不再是完全线性的“胡克关系”了传播过程中会产生新的频率分量。最直观的例子是差频同时向空间发射40kHz和41kHz两个超声信号由于空气非线性声场里会出现两者之差1kHz的声波正好落在人耳听觉范围内。所以你在阵列前面听到的1kHz纯音不是任何一个换能器本身发出来的而是空气自己“混频”的结果有点像模拟电路里两个正弦过非线性器件产生交调分量。实际做音频传输时很少直接做双频正弦因为要表达的语音频率是不断变化的不能靠单纯两个固定频率来承载。工程上更常用另一种方式用可听声信号去做一个40kHz载波的幅度调制发射出去的超声包络就是音频本身空气非线性在自解调时把包络还原成可听声。这个思路还有个名字叫参量阵列50多年前提出后来用在定向音箱、声学研究甚至非接触式声场控制上。1.2 调制深度和失真的取舍明白幅度调制后下一个绕不开的问题是失真。如果你拿一个普通AM信号直接驱动换能器解调出来的可听声会带有明显的谐波失真说话声音发劈、发闷听着像收音机过载。原因是空气非线性解调出来的“包络平方项”本质上会把原信号做一次非线性变换不是简简单单把包络剪下来就完事。想改善音质公认有效的做法是预失真最常见的是平方根预处理在调制前对音频信号做一次开方变换让空气解调时把这个非线性抵消掉一部分。很多基于微控制器的DIY项目就把这一步放在数字域里做省掉大量模拟补偿电路。我自己入门时没有一上来就加因为链路还没调通加了反而分不清问题出在调制还是预失真建议你第一次做也先把预失真关掉确保“载波→AM→自解调→可听声”链路稳定再慢慢优化。调制深度方面也要克制。普通AM下调制深度太高会将载波包络压得过低导致音频削波失真太低又会让声音沉在超声载波底下听不清楚。我实测下来先用调制指数0.3到0.5起步比较稳链路稳定后再慢慢往上推直到听到有明显破音就回退几个百分点。1.3 为什么偏偏选40kHz载波选载波频率不是一个可以随便拍脑袋的决定。空气对超声波的吸收随频率上升得非常快20kHz时衰减还勉强能接受到60kHz以上同样距离的衰减会急剧增大等你走到几米外声场能量早就散没了。40kHz相对正好平衡了声压输出、元器件成本和指向性而且市面上有大量成熟的40kHz压电换能器随便搜都有型号可买做起来门槛低。同时40kHz的波长约为8.5mm这个数值直接决定了换能器阵列设计的物理尺寸我后面在阵列章节会反复用到它。只要记住一个结论DIY定向声波除非你有特殊场景需求否则第一选择就是40kHz没必要跟100kHz较劲。2. 硬件每一环怎么选换能器、调制器、功放、匹配2.1 换能器选型与阵列基础整个项目的核心元件是40kHz压电陶瓷换能器。我用的规格是直径约10mm的发射型压电片典型参数谐振频率40kHz静态电容大约2nF左右谐振阻抗几百欧姆价格也不贵。这里非常不建议用接收型代替发射型接收型灵敏度高但能承受的驱动功率和声压输出都要弱一大截我测试时拿接收型阵列勉强出音效果和耳语差不多换成发射型后整个局面立刻大变。压电换能器本质上是个容性负载低频下几乎开路谐振点附近阻抗才会降下来。多只并联后总电容累加等效电容可能到20到40nF。如果你的功放级设计不考虑这一点很容易出现电流全部变成无功电流、功率管热得烫手但辐射声压却上不去的情况。换能器的引线焊接要特别注意压电陶瓷片本身很脆烙铁温度过高、用力过猛轻则性能劣化重则直接裂片报废。我的习惯是把烙铁温度调到350℃左右快速点焊不长时间加热。还有一点所有探头焊接到线缆时极性要一致这个细节虽然简单但焊接过程中一旦有两个反了整个阵列的声场会互相抵消一部分指向性和增益立刻掉下来。2.2 信号产生与调制两条路线信号源和调制方案决定了整个系统的复杂度。先说我最早做的模拟路线用有源晶振或单片机IO产生40kHz载波再配合模拟乘法器比如MC1496把音频和载波相乘得到双边带信号。这个方案音质上限高被很多老工程师喜欢但MC1496的外围电路极其啰嗦偏置电阻、平衡调节、供电电压要求多对新手来说非常劝退。我试过这个方案小半个月最后因为调平衡太痛苦整套换掉了。第二条路线现代且高效把超声驱动本身当成一个D类放大器来做。单片机产生40kHz PWM作为载波每个PWM周期根据当前音频采样值动态调整占空比相当于把音频包络编码进脉冲宽度。输出经过压电换能器的谐振带通特性自然形成幅度调制的超声正弦。硬件上不需要模拟乘法器只需要一个能输出高稳定PWM的微控制器比如STM32再加一对半桥驱动即可。这条路线还顺带解决了效率问题。因为MOSFET工作在开关状态不是线性放大大部分能量都被换能器和空气非线性带走功放级发热明显低于线性功放。我做第二版时全程用这个方法调试难度和稳定性都让人满意。下面给一段核心思想的示意代码寄存器初始化省略主要看占空比更新逻辑// STM32 PWM频率40kHzPSC0, ARR1799 (72MHz / 1800 40000Hz) while (1) { uint16_t audio read_adc(0); // 读取音频采样值 uint16_t duty 900 (audio * depth / 4095); if (duty 1400) duty 1400; // 限制调制范围 if (duty 400) duty 400; TIM1-CCR1 duty; // 更新占空比 }无音频时占空比固定为50%CCR900相当于载波满幅输出有音频时在50%附近跟随包络摆动把调制深度控制在约35%到78%占空比之间等效于标准AM调制。预失真如果要做也可以在audio值送入前做开方计算后续扩展很灵活。2.3 功率级为什么单端驱动不行换能器阵列既然是容性负载那功率级的选择就不是“能响就行”。单端驱动是最容易踩的坑把阵列一端接在MOSFET漏极另一端接地理论上也能工作但实际声压输出很低因为整个阵列一端被固定在地电位驱动电压摆幅只有电源电压的一半。更合理的是H桥差分驱动。两路PWM互补驱动半桥换能器两端电压一正一反同一电源电压下压电片两端峰值电压翻倍相当于有效驱动电压翻倍。实测下来12V供电的H桥方案声压比单端驱动提高很明显而且对电源利用率也高。具体实现我用的是半桥栅极驱动芯片加一对N沟道MOSFET比如IR2104加IRF540N这类常见组合。H桥的关键是死区控制上下管切换时必须有一小段时间同时关断防止直通短路。带死区控制的专用驱动芯片会自动处理比自己在软件里扣边沿要可靠得多。2.4 匹配网络电感抵消容抗换能器阵列容性负载带来的问题是无功电流过大。假设阵列总电容大约30nF40kHz下容抗就是大概130Ω。如果不做任何匹配一大半驱动电流是在电容和MOSFET之间来回充电放电阻性损耗真正变成超声辐射的有效功率非常少。常规解法是在阵列两端并联一个谐振电感让电感和静态电容在40kHz附近谐振。谐振电感值可以这么估算先把总电容代入容抗公式算出容抗再让感抗和它相等公式是L 1/((2πf)²C)电容30nF对应电感大约0.5mH。实际绕制时可以买成品电感或磁环绕线然后用示波器观察电压波形微调圈数使谐振点落在40kHz附近。这一步是很多DIY项目容易忽略的。没加匹配之前我用手摸MOSFET散热片几乎烫得不敢碰加上匹配电感后发热量立刻降到正常水平声压还大了一圈这笔账非常划算。2.5 电源和散热的硬指标不要小看这个项目的耗电。16个换能器并联H桥驱动在40kHz下持续开关峰值电流可以达到几安培。我第一版用普通USB电源供电开机没多久就直接过流保护后来换成12V 3A的开关电源才稳住。功率管的散热也要提前规划。IRF540N这类TO-220封装的MOSFET不装散热片长时间跑会烫到没办法摸好一点的方案是两块小铝散热器加导热硅脂。即便有匹配电感开关损耗依然存在测试时多留一分余量总没坏处。3. 换能器阵列设计指向性其实是布阵布出来的3.1 阵元间距为什么不能随便排单只压电换能器本身已经有一定指向性但还远没那么强。真正把一个普通的小喇叭变成“声音手电筒”靠的是多只换能器组成阵列后各单元声波在远场相干叠加形成的波束。阵列设计的第一个关键参数就是阵元间距。波长λ在40kHz约为8.5mm。教科书会告诉你阵元间距最好不要大于半波长约4.3mm否则波束旁瓣和栅瓣会很强出现“旁边也能出声”的串扰。但压电片直径就有10mm半波长间距根本摆不下。实际怎么办我的经验是让所有探头按规则网格紧密排列中心距尽量一致即使间距超过了半波长单个探头的方向性也会把大角度栅瓣压掉不少只保留主瓣和前几个不明显的副瓣听感上已经非常“聚焦”了。3.2 阵列口径和波束角的关系另一个核心指标是波束角它几乎完全由阵列口径决定。口径D就是阵列的总尺寸比如4个10mm探头紧贴排成一行中心距10mm一行总长约40mm。那么垂直方向的波束宽度大约就是λ/D弧度换算成度数大概是8.5/40×57.3≈12度。这是半功率波束宽度的量级实际听感就是正面清晰、偏开十几度声音就掉下来一截。想让波束更窄最简单的办法是增大阵列口径。把阵列从4×4升级到8×8口径翻倍到80mm波束就差不多能压到6度左右。代价是换能器数量翻四倍、驱动板路数增加、调试难度成倍上升。我是建议第一次做先上4×4把方向性调出来再考虑扩阵。3.3 布阵工艺比想象中重要阵列的机械固定直接决定声场质量。我用3mm亚克力板开孔按10mm等间距钻16个圆孔探头从孔中穿过背面用热熔胶和AB胶双保险固定住。开孔一定要用激光切割或手工钻头精确对齐不能有肉眼可见的歪斜否则相位一致性就会被机械公差破坏。所有探头的引线尽量保持等长。虽然这个项目频带不是特别高但16路并联时如果有的线长有的线短分布电容和电感不对称各个探头的相位就会有细微差异最终表现在波束中心出现凹陷、指向性不对称。我第一次布线比较随意正面声场中心反而闷后来换成一圈线束整齐捆扎、每路长度差控制在1cm以内问题立刻好转。3.4 相位一致性的反向教训相位一致性听起来很理论实际排查起来很直观。你可以用示波器的两个差分探头同时测两只换能器两端的波形看它们的正弦相位是否对齐。如果两只反相波形整体会差半个周期。我曾经检修过一块“指向性差得离谱”的阵列最后根源就是16只里面竟然有3只极性接反并联后声场互相干扰得厉害。换能器焊完没做统一极向标记这个坑后来我用红色记号笔在负极全部标一遍才彻底避开。4. 搭建与调试过程实录4.1 整条信号链怎么连整个系统的信号走向大概是音频输入驻极体麦克风或3.5mm音源→ 单片机ADC采样 → 数字域可选预失真 → 40kHz PWM占空比调制 → 栅极驱动IC → H桥MOSFET → LC匹配网络 → 换能器阵列 → 空气自解调。单片机负责采样、调制和PWM输出最好用主频高一点的STM32F103就够用PWM两路互补输出到H桥。如果芯片只输出单路PWM也可以另一路取反用74HC04之类反相器做但要额外注意死区所以我还是推荐带互补输出的MCU。电源部分按前面说的12V主电源给功放5V或3.3V给单片机和驱动IC。布线时功率地和小信号地要单点汇接实在不行至少铺一块完整的地平面否则PWM开关噪声很容易串到音频回路里导致解调出来的声音有持续的“滋滋”底噪。4.2 用示波器确认每一级波形调试千万别跳级我的顺序是从前往后一级一级看波形哪一级不对立刻揪出来单片机PWM输出端应看到稳定的40kHz方波占空比不停随音频变化。半桥输出端波形应该是对称的方波或近似正弦取决于后面匹配网络死区时间正常。换能器两端用示波器探头看应看到一个被音频包络调制的高频信号包络线跟输入音频形状一致。用驻极体麦克风靠近阵列前方麦克风输出端出现低频可听声成分此时接个小耳机就能听到声音。一个容易被忽略的问题调试时如果把示波器探头直接跨在换能器两端探头本身的电容会影响谐振频率。最好使用10×探头并尽量让探头尖和接地弹簧保持短距离不然你看到的波形是失真假象还会影响优化判断。4.3 第一次出声失败的全过程第一次通电测试我站在阵列前方快两米麦克风里几乎只能听到微弱的底噪。当时以为是阵列数量太少后来逐级检查才发现问题出在调制深度为了防止削波我把深度调得很低载波能量几乎全在直流分量里发射出去的超声包络变化太小空气非线性解调出来的声音当然弱得可怜。把调制指数提到0.5左右后声音立刻清晰不少。这里给个经验值测试时先把音频输入固定成一个1kHz正弦波听声或看示波器的麦克风输出等链路调到波形干净后再换成人声不然人声频带很宽无法判断到底哪一级失真。4.4 指向性测试的操作细节搭好阵列后指向性测试值得认真做。我用一个手机固定播放扫频信号人站固定距离沿阵列前方的一条圆弧缓慢横向移动记录不同角度下的听感强弱。最开始测出来正前方有声音但偏25度声音还挺大检查下来是阵列两侧的探头接线松动等效于有效口径缩小。指向性不好还有一个容易被忽略的因素阵列前面不要放任何遮挡物包括透明亚克力板。换能器声波需要无障碍辐射一块薄板都能反射超声造成波束畸变。我的亚克力板是装在探头后面固定用的发射面保持裸露。5. 常见问题与排查技巧实录现象常见原因处理办法完全无声载波没输出/功放没供电示波器逐级查PWM信号和MOSFET输出只有微弱底噪换能器用成接收型/方向不对换成发射型检查所有探头极性声音小且含糊调制深度太低/匹配失谐提高调制指数检查匹配电感高频刺耳杂音PWM谐波过大/死区不当加低通滤波检查死区设置功放发热严重容性负载无功过大/散热不足加匹配电感、加大散热片有“吱吱”爆音调制深度过高/输入削波降低增益限制输入峰值波束偏斜个别探头损坏/接线错位逐路测试相位替换故障探头下面几个案例印象最深“声音只有贴着脸才听得见”这个不是功率问题而是驱动电压不够或阵列口径太小。我测试时发现12V下声音在1米内尚可放到2米明显衰减后来把功放级供电从12V提升到24VH桥差分后峰值电压48V同样距离声压直接翻了一倍多。注意升级供电后MOSFET耐压和散热也要同步升级。“指向性不强侧面也有声”排第一嫌疑的永远是相位一致性问题。我后来专门写了一段测试程序轮流单独点亮每只换能器用驻极体麦克风逐个测波形的相位逐一排除反接或接触不良。这个步骤看起来很笨但定位问题极其高效。“测试时手机录音全部削波”这是麦克风离阵列过近导致的过载。当时想录个演示视频把手机怼在阵列前面不到半米结果高频超声和低频解调声一起进来手机AGC直接爆掉。录这类视频手机离阵列两米以上用后置麦克风并降低增益反而效果好。6. 安全、改进方向与我的几点体会6.1 大功率超声要注意的事做定向声波玩到后期很容易被“声功率越大越刺激”带跑偏但安全问题必须放在前面。实验阶段阵列正前方会形成一个高能超声束虽然人耳对纯超声不敏感但长时间暴露、或功率大到一定程度仍然可能引起听力疲劳甚至不适。我在测试时始终戴着防噪耳罩虽然不能完全隔绝超声但至少能防止高强度声束直接轰击耳道。特别是把电源电压提到24V后正面声压已经不小这个保险一定不能省。另外压电片属于易碎元件尤其是在高压驱动时如果有探头出现裂纹让它继续长时间工作可能过热甚至碎裂发现某一只声音异常变小或波形明显变形及时断电更换。6.2 后续还能往哪些方向改基础版做完后后续升级有几个非常现实的方向预失真在代码里对音频采样值开方能显著降谐波失真人声更自然。多通道独立相位如果你愿意把驱动板做成16路独立PWM输出就能实现相位差扫描波束做出真正的电子波束偏转。阵列扩容从4×4升级到8×8波束更窄声压更大但成本和调试量也要有心理准备。频响校正40kHz换能器阵列在中高频段响应和普通音箱差异很大用均衡器补一补人声清晰度会更好。6.3 个人体会这个项目做完我最大的感受是收获不来自“定向声波”这个结果而是中间被逼着搞懂了容性负载匹配、阵列相位一致性、调制深度取舍这些原本只在书里见过的东西。它非常适合作为从纯单片机到真正了解声学系统的一座桥。如果你也准备动手送三个字别跳级。先单只换能器出声再四只并联再上阵列每步验证通过再往下推出了问题才不容易抓瞎。最后再分享一个小细节测试时最好准备一根带BNC到鳄鱼夹的连接线把驻极体麦克风输出接到功放或声卡上实时监听这比对着示波器看波形直观得多。声音这东西参数再漂亮最后还得耳朵验收。
返回列表