了解有源和无源蜂鸣器的区别以及如何在Arduino中使用它

简介: 在本文中,我们将探索蜂鸣器的内部结构,检查其内部结构,并对其工作系统有更深入的了解。在这里,我们讨论一下有源蜂鸣器和无源蜂鸣器的区别。该设备的主要功能是将电信号转换为音频声音。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种不同类型,它们都是极化的。

产品和用户之间的通信方式有很多种,但音频通信最常见和流行的选择是蜂鸣器。蜂鸣器在电气、电子设备中起着非常重要的作用。我们经常在闹钟、门铃或其他家用电器等常见设备中遇到蜂鸣器。


然而,许多人不知道可用的各种类型的蜂鸣器及其工作原理。在本文中,我们将探索蜂鸣器的内部结构,检查其内部结构,并对其工作系统有更深入的了解。在这里,我们讨论一下有源蜂鸣器和无源蜂鸣器的区别。该设备的主要功能是将电信号转换为音频声音。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种不同类型,它们都是极化的。


蜂鸣器引脚排列


Imag.png


蜂鸣器有两个引脚,即正极负极。正极端子由“+”符号表示,负极端子由“-”符号表示,就像 LED 和电容器一样。  

有源蜂鸣器和无源蜂鸣器的区别


有源蜂鸣器: 有源蜂鸣器之所以被称为“有源”,是因为它们在连接到电池时可以直接发出声音。如果我们将电池的正负极正确连接起来,它就可以自行发出声音,因为它有一个内置的振荡器。有源蜂鸣器使用起来最简单。它们的电压范围通常为 1.5V 至 24V。它们可以产生约2kHz±300Hz的声音频率。有源蜂鸣器的电流消耗≤25mA。


无源蜂鸣器: 无源蜂鸣器在连接电池时不能直接发出声音,因为它没有内部振荡源。无源蜂鸣器需要交流电压信号源才能发出声音。它的工作原理类似于电磁发声器,改变输入信号和频率会产生声音。因此,这些无源蜂鸣器可以根据信号的输入频率产生多种不同的音调。无源蜂鸣器的内部线圈电阻非常低,为16欧姆,因此它可以吸取36mA左右的较高电流。为了安全起见,我们还可以串接100欧姆的电阻。


有源和无源蜂鸣器的工作原理

Imag.png

产生声音的基本思想是通过振动,正如在人类声带中看到的那样,声音结果是由振动决定的。有源和无源蜂鸣器属于磁性蜂鸣器的类型。蜂鸣器内部有一个线圈连接到蜂鸣器的引脚。此外,还有一个围绕线圈的圆形磁铁。顶部附有小金属重物的薄柔性铁磁金属盘位于圆形磁铁和线圈上方。当电流脉冲施加到线圈上时,磁感应会导致金属重物和金属盘上下振动。金属盘的振动产生声波。


Imag.png

如何区分有源蜂鸣器和无源蜂鸣器?

如下图所示,与有源蜂鸣器不同,无源蜂鸣器没有后盖。这可以让您更轻松地识别有源蜂鸣器和无源蜂鸣器。然而,并不能保证它总是这样,这就是为什么我们需要另一个测试来确保我们认为的有源蜂鸣器实际上是正确的。


Imag.png


如果仅通过观察无法识别蜂鸣器,请将它们连接到 +9V DC 电池,同时注意极性。这是因为两种类型的蜂鸣器对恒定的+9V DC 电压有不同的响应。

Imag.png


有源蜂鸣器会发出持续响亮的蜂鸣声,直到我们断开直流电源为止,而无源蜂鸣器在施加直流电压时会产生类似于继电器的爆裂声和咔嗒声。

还可以用万用表测量电阻,辨别是有源蜂鸣器还是无源蜂鸣器。首先,将万用表设置为电阻模式并将探头连接到蜂鸣器端子。有源蜂鸣器会显示较低的电阻值,通常为 16 欧姆。如果阻值较大,则为无源蜂鸣器。

如何在 Arduino 上使用有源蜂鸣器?

现在我们知道了什么是有源蜂鸣器,让我们来看看如何将蜂鸣器连接到Arduino。

所需组件

  • 有源蜂鸣器
  • Arduino板
  • 面包板
  • 跳线

首先,将有源蜂鸣器插入面包板。将蜂鸣器的正极(+)引脚连接到Arduino的+5V VCC引脚,将蜂鸣器的负极引脚(-)连接到Arduino的GND引脚。

当正极引脚直接连接Arduino的5V引脚时,蜂鸣器会发出恒定频率的蜂鸣声。

但是这种嘟嘟声是不受控制的连续声音,如果我们想控制嘟嘟声的开和关持续时间,我们需要编写Arduino代码。

现在将蜂鸣器的正极引脚(+)连接到Arduino的数字引脚4(您可以选择任何数字引脚),将蜂鸣器的负极引脚(-)连接到Arduino的GND引脚。


Imag.png

现在我们知道如何设置硬件,让我们继续编程部分。

Arduino代码

这个项目的代码非常简单。将 Arduino 连接到计算机并打开 Arduino IDE。

打开 Arduino IDE 后,将以下代码复制并粘贴到编辑器中。

Void setup() {

  pinMode(4,OUTPUT);

}

Void loop() {

 digitalWrite(4,HIGH);

 delay(2000);

 digitalWrite(4,LOW);

 delay(1000);

}

通过这个简单的代码,您可以打开和关闭有源蜂鸣器。我们使用延迟来控制蜂鸣器打开和关闭的时间。延迟函数里面的数字以毫秒为单位,这意味着我们的蜂鸣器打开2秒,关闭1秒。您也可以根据您的需要进行更改。

如何在 Arduino 上使用无源蜂鸣器?

无源蜂鸣器与 Arduino 的连接与我们对有源蜂鸣器所做的完全相同。我们可以使用 PWM 输出引脚来控制无源蜂鸣器音调输出。或者,我们可以使用任何数字引脚以及tone()和noTone()函数来控制无源蜂鸣器。

所需组件

  • 无源蜂鸣器
  • Arduino板
  • 面包板
  • 跳线
  • 100欧姆电阻

无源蜂鸣器的音调可以通过调整施加到其上的频率来控制。使用 Arduino,您可以通过其数字引脚产生方波。通过修改方波高电平和低电平状态的持续时间,您可以改变频率,从而改变无源蜂鸣器的音调。

Imag.png

确保将蜂鸣器的正极(+)连接到 Arduino 数字引脚 7,负极(-)连接到 Arduino GND。

在相同的情况下,您可能需要在蜂鸣器正极(+)引脚和Arduino数字引脚之间连接100欧姆串联电阻。

Arduino代码:

Arduino 有一个 tone() 函数,它有助于在数字引脚上生成所需的频率波。

以类似的方式让蜂鸣器随着时间的推移保持静音,我们可以使用 notone() 选项。

tone()函数有以下 3 个参数。

音调(引脚、频率、持续时间);

  • 引脚:用于生成音调的 Arduino 引脚。
  • 频率:音调的频率(以赫兹为单位)。
  • 持续时间:提示音的持续时间(以毫秒为单位)。

让我们构建一个循环播放从 sa、re、ga 到 ni 的一组音符的代码。

int buzzerpin = 7;

void setup() {

pinMode(buzzerpin,OUTPUT);

tone(buzzerpin,500,2000);

}

void loop() {

tone(buzzerpin,277);

delay(1000);

tone(buzzerpin,311);

delay(1000)

tone(buzzerpin,350);

delay(1000);

tone(buzzerpin,370);

delay(1000);

tone(buzzerpin,415);

delay(1000);

tone(buzzerpin,466);

delay(1000);

tone(buzzerpin,523);

delay(1000);

tone(buzzerpin,554);

delay(1000);

noTone(buzzerpin);

delay(500);

 tone(buzzerpin,554);

delay(1000);

tone(buzzerpin,523);

delay(1000);

tone(buzzerpin,466);

delay(1000);

tone(buzzerpin,415);

delay(1000);

tone(buzzerpin,370);

delay(1000);

tone(buzzerpin,350);

delay(1000);

tone(buzzerpin,311);

delay(1000);

tone(buzzerpin,277);

delay(1000);

noTone(buzzerpin);

delay(1000);}

当在loop()部分使用tone()函数时,duration参数不能很好地工作。因此,要在循环中设置音调持续时间,请在每个tone() 函数之后使用delay() 函数。在此代码中,有一个delay() 函数,它在每个tone() 函数之后指定1,000 毫秒(一秒)的延迟。

在循环结束时,使用 noTone() 函数和 1,000 毫秒的延迟在循环重复之前添加一秒的静默期。

连接蜂鸣器并上传代码后,您应该会听到蜂鸣器循环播放 7 个音符。

应用领域

  • 通讯设备
  • 音效
  • 汽车电子产品
  • 音调生成
  • 报警电路
  • 安全系统
  • 定时器
  • 家用设备
  • 体育赛事


本文由IC先生网www.mrchip.cn编辑整理发布,请勿转载。

相关文章
|
8天前
|
数据格式
51单片机--红外遥控
51单片机--红外遥控
|
8天前
串口通信如何控制步进电机转动?
串口通信如何控制步进电机转动?
28 3
|
8天前
|
IDE 开发工具
基于单片机的简易步进电机控制系统
基于单片机的简易步进电机控制系统
25 0
|
10月前
有源晶振与无源晶振
有源晶振与无源晶振
89 0
LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)
利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果。
|
12月前
|
测试技术 C语言 芯片
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
基于51单片机的自动打铃打鸣作息报时系统AT89C51数码管三极管时钟电路
196 0
|
12月前
|
传感器 前端开发 机器人
基于单片机的智能循迹避障小车STC89C52红外对管L298N驱动PWM波控制速度
利用红外对管检测黑线与障碍物,并以STC89C52单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机输出的PWM波控制。
230 0
|
传感器
【arduino】超声波垃圾桶
【arduino】超声波垃圾桶
126 0