《Arduino实战》——3.2 压电换能器

简介:

本节书摘来自异步社区《Arduino实战》一书中的第3章,第3.2节,作者 【美】Martin Evans , Joshua Noble , Jordan Hochenbaum ,译者 况琪,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.2 压电换能器

你是否收到过一种生日贺卡,在它打开时就会播放一段有点走调的Pointer Sisters的《I'm So Excited》旋律。压电换能器还应用于很多其他的设备,比如移动电话、门铃以及水下声呐。

图3-6展示了一个典型的可以用于发声的压电换能器,它与那些在音乐贺卡中使用的类似。


screenshot

它们是如何工作的?术语压电的意思就是“由压力产生电流”。当一个压电设备受到挤压时,它就会产生一个电荷,如图3-7所示。换能器在与Arduino一起使用时的一个典型应用就是将其作为敲击传感器。

当换能器受到击打或碰撞时,Arduino就可以检测到,并触发相应的动作,比如点亮一个LED或者用扬声器发出一个声响。

相反地,当一个电荷施加到压电换能器上时,它就会发生形变,如图3-8所示。如果你对其施加一个以一定频率变化的电压,换能器的振动就会使其发出声音或者旋律。用在音乐贺卡或者蜂鸣器中的压电换能器正是在这种模式下工作。


screenshot

正如你所看到的那样,一个压电换能器既可以作为输入设备,也可以作为输出设备。以压电换能器为核心的声呐设备,就以这样的方式发出一个声音信号并接收回声。这就是潜艇电影中最让人熟悉的经典探测音。通过测定探测音从发出到接收到回声的时间,就可以计算出距离目标有多远。我们将在第6章讲解另外一个示例,那时会将Devantech SRF05作为测距仪。

现在你已经对压电换能器有了一个大概的了解,并知道了它如何工作,下面就要将压电换能器作为一个敲击传感器了。当Arduino检测到敲击传感器受到击打或者碰撞时,它就会点亮一个LED。

3.2.1 电路图

对于这个项目,你需要下列元件:

  • 1片Arduino
  • 1块面包板和一些跳线
  • 1个稳压二极管,0.5 W 5.1 V(我们使用的是BZX55C5V)
  • 1个无外壳的压电换能器(我们使用了一个在eBay上购买的27 mm的型号)
  • 1个1 MΩ电阻

你要使用一个不带外壳的压电换能器,这会比带外壳的效果更好。

受到敲击时,压电换能器会产生非常高的电压,足以对Arduino造成损坏。稳压二极管可以保护Arduino免受高电压的损坏,而电阻的作用是泄放来自换能器的高电压。

图3-9展示了完整的电路图。注意稳压二极管的的方向,还有如何将其与电阻和压电换能器并联。


screenshot

现在你已经看过了电路图,可以在面包板上组装这个电路了。

3.2.2 连接硬件

电路除了Arduino以外还有3个主要元件:一个5.1 V的稳压二极管,一个1 MΩ的电阻和一个压电换能器。

如前文所述,稳压二极管和电阻都并联在压电换能器上。

下面就可以将器件安放到面包板上了,要特别注意压电换能器的极性,极性可以通过由低熔点焊料焊接在上面的一红一黑两条线来区分。黑线连接到电路中的GND部分,红色连接到Arduino的模拟输入引脚A0。

稳压二极管需要以正确的方式连接才能保护Arduino的模拟输入端电压不超过5 V。按照惯例,在二极管的阴极或者负极,一般会设计有一条黑色的条纹,这一极会被连接到GND,但在你的电路中,你要将二极管反向偏置,也就是将二极管的阴极连接到电路的正极。稳压二极管的工作原理是,只在超过反向击穿电压的时候导通,在本例中击穿电压是5.1 V。任何超过5.1 V的电压都会导致二极管反向导通并与GND短路,从而保护Arduino的输入端。

当这三个元件都连接到面包板上之后,你最终就可以连接Arduino的GND和模拟输入端A0了。图3-10展示了组装完成后的电路,包括到Arduino的连接。


screenshot

当所有器件组装完毕并连接到Arduino之后,你就可以开始写程序来让Arduino与压电换能器协作了。

二极管

二极管是一种双端器件,电流沿一个方向流过时电阻很小,而沿另一个方向流过时电阻很大(理想情况下是无穷大)。稳压二极管是一种特殊的二极管,它被设计成在超过击穿电压(膝点电压)时允许电流反向通过。

3.2.3 用于测定压电换能器输出的程序

首先,你要使用如代码清单3-1所示的程序。如果你没有保存之前的程序,请创建一个新的程序文件并输入这些代码。

接着,你将Arduino连接到USB接口,烧写你的程序并启动串口监视器。最初,串口监视器应该只输出0值。现在,尝试着轻轻敲打或挤压换能器,然后观察传感器的数值如何改变。一个典型的输出如图3-11所示。


screenshot

当换能器受到击打时,这个数值会快速攀升到最大值,然后跌落回0。不同的数值反映了换能器受到挤压或击打的强烈程度,值越大说明其受到的挤压越猛烈。如果什么都没观测到,请检查你的连接,尤其注意检查换能器和稳压二极管的方向。

下面你要修改程序,只把超过一个既定阈值的数据打印出来。可以在现有的电位器程序上修改,也可以创建一个新的程序。新版的程序见下列代码清单,将这个程序保存并命名为threshold。

代码清单3-2 压电换能器的阈值


screenshot

在代码清单3-2中,将阈值设定为200。在程序的循环中,只会输出高于阈值的传感器数值。

接下来让我们来测试这个程序。

3.2.4 烧写和测试

在输入程序清单3-2中的代码后,校验使其通过编译,然后将它写入到Arduino中。打开串口监视器,然后以不同的力度敲击换能器。你会发现敲击的力度越大,返回的传感器数值越高。图3-12给出了一些示例输出。


screenshot

现在你已经有一个程序检测模拟输入端A0的数值,并在其超过一个既定的阈值时输出这个数值。接下来,你要让它做一些更有意义的事情,而不仅仅是报告一个数值。如果你将一个扬声器添加到电路中,你就可以让Arduino在压电换能器受到敲击时播放一个音符或者音阶,这就是你接下来要做的事情。

3.2.5 添加一个扬声器的电路

在本节中,你需要添加以下两个器件:

  • 1个8Ω的小型扬声器
  • 1个1 kΩ的电阻

图3-13所示的电路在图3-9的基础上添加了扬声器和电阻。


screenshot

现在就把电路组装到一块面包板上吧。

3.2.6 连接硬件

将扬声器通过一个1 kΩ电阻连接到8号数字引脚,这就完成了硬件连接。组装完成后的电路如图3-14所示。


screenshot

我们需要在扬声器上焊接两根跳线,因为扬声器原来的线太软,以至于无法直接插入到面包板上。如果你没有焊接设备,可以用一些绝缘胶带将导线固定在跳线上,也可以使用鳄鱼夹。

当所有的元件都连接好后,就可以编写程序了。

3.2.7 产生一个音阶的程序

代码清单3-3给出了新程序的代码,其中定义了3个新变量。

toneDuration指定每个音阶持续的时间,单位是毫秒(ms)。

toneFrequency设定了所播放音阶的频率,单位是赫兹(Hz)(中央C的频率是262 Hz)。

speakerPin指定了扬声器所连接到的引脚。

代码清单3-3 用扬声器产生一个音阶


screenshot

在这个程序中,使用的是Arduino内置的库函数,tone,它接受3个参数。

tone (pin, frequency, duration)

pin是输出音阶的引脚;frequency是输出音阶的频率;duration是一个音阶播放的时间的毫秒数。如果没有给定duration参数,这个音阶就会一直播放,直到发出noTone指令:

noTone(pin)

在这个程序中,只有当sensorValue大于阈值时才会播放一个音阶。现在让我们来试一下吧。

3.2.8 烧写和测试

当程序顺利通过编译之后,将Arduino连接到计算机并为它写入程序。尝试着敲击压电换能器,然后听扬声器是否发出了声响。如果没有发出声音,请检查所有的连接。

提示:如果检查了所有的连接,而扬声器始终没有发出任何声音,请尝试将toneDuration从40增大到1000,或者改变toneFrequency的值。

当一切都正常工作后,你可以修改变量toneFrequency的值来让扬声器演奏不同的音符。频率越高,音调越高;频率越低,音调越低。你还可以尝试修改变量threshold的值。这个值越小,就可以用越轻柔的力量敲击换能器,来让扬声器播放一个音阶。

在下一节中,将会给电路添加更多的压电换能器,这样就可以制作一架电子琴,而换能器则作为琴键。

相关文章
|
6月前
|
数据采集 人工智能 缓存
Python 工程化开发与性能优化实践
本文系统介绍Python工程化开发与性能优化的落地实践:涵盖标准化项目结构、虚拟环境与依赖管理、PEP 8/类型注解/日志配置等规范;并从代码精简、NumPy/Pandas向量化、asyncio/multiprocessing并发、cProfile等工具定位瓶颈四方面展开性能优化,强调可维护性与效率的平衡。(239字)
374 3
|
运维 监控 搜索推荐
paas云底座-数字化转型,你真的了解么
paas云底座-数字化转型,你真的了解么
1490 0
|
7月前
|
人工智能 API 数据库
OpenClaw 告别失忆与费 Token 吞金教程:阿里云/本地部署+配置免费API+lossless-claw插件优化管理上下文指南
2026年,OpenClaw(曾用名Clawdbot)凭借“本地优先+长时记忆”的特性成为开源圈热门工具,但用户普遍面临两大痛点:一是“失忆”——长对话中关键信息被随机丢弃,任务执行到一半偏离目标;二是“吞金”——默认滑动窗口压缩机制导致上下文冗余,Token消耗剧增,长期使用成本高昂。这两个问题形成恶性循环:脏上下文让模型表现拉胯,用户被迫降低模型规格,而低规格模型在冗余信息中更难发挥作用,最终让OpenClaw陷入“不好用”的口碑困境。
2526 2
|
8月前
|
人工智能 监控 安全
2026年阿里云+本地部署OpenClaw终极进化指南:Agent-Reach skill一条命令实时读取B站、小红书等全平台内容
2026年,AI智能体的核心竞争力已从“模型大小”转向“视野广度”。OpenClaw(原Clawdbot、Moltbot)作为开源AI助手的标杆,虽能实现7×24小时自动化任务执行,但传统使用模式下仍受限于“信息孤岛”——需手动投喂内容、依赖付费API、实时信息获取能力薄弱。而刚爆火的开源工具Agent-Reach(900+ GitHub Star)彻底改变这一现状,它就像给OpenClaw装上“全网眼睛”,零API费、零配置,一条命令即可让AI实时读取Twitter、B站、小红书等全平台内容,真正实现“自主上网、主动感知”。
3154 2
|
9月前
|
人工智能 自然语言处理 算法
2026主流AI数字人全栈技术测评盘点:从技术落地到场景赋能
本文盘点2026年主流AI数字人全栈技术,涵盖感知、认知、生成、渲染与交互五大架构,剖析世优科技、阿里云、灵境时空等代表性品牌在政务、文旅、教育等场景的落地实践,揭示多模态大模型、情感化交互、轻量化部署等发展趋势,为行业选型提供权威参考。
|
供应链 监控 安全
1688商品详情API接口实战指南:合规获取数据,驱动B2B业务增长
1688商品详情API(alibaba.product.get)是合规获取B2B商品数据的核心工具,支持全维度信息调用,助力企业实现智能选品、供应链优化与市场洞察,推动数字化转型。
|
11月前
|
供应链 安全 物联网
2025年度工业互联网平台综合实力盘点:十大领先厂商深度解析与选型指南
2025年,工业物联网从“连接”迈向“价值”竞争。本文深度解析树根科技、华为云、阿里云等十大主流平台,聚焦连接能力、业务赋能与全球化部署,穿透技术参数,直击商业价值,助力企业精准选型,实现数字化转型战略突围。
1928 0
|
人工智能 自然语言处理 搜索推荐
《生成式引擎优化(GEO)服务商选择指南》:让AI大模型主动推荐你
GEO(生成式引擎优化)是针对AI生成式搜索引擎的优化策略,旨在让企业信息在AI回答中优先呈现,实现“无点击曝光”。与传统SEO不同,GEO强调语义理解、权威内容和结构化数据,提升品牌在AI推荐中的可见性与可信度。企业需关注GEO服务商的技术实力、行业匹配度、服务流程完整性等维度,确保优化效果。
2857 1
|
人工智能 缓存 API
8大AI记忆优化策略助你突破智能体上下文限制
本文深入解析AI系统中的记忆管理策略,涵盖8种主流方案及工程实现,助你突破上下文限制,构建高效智能体。
2950 0