蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(1)

1、 目录2、 蜂鸣器介绍

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(2)

蜂鸣器(Buzzer)

蜂鸣器(Buzzer)是一种集成结构的电子发声元件,广泛应用于计算机、报警器、电子玩具、等电子产品中,也是电路中重要的发声元件。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(3)

蜂鸣器(Buzzer)尺寸图

3、 蜂鸣器原理

我们实验中使用的蜂鸣器都是压电陶瓷蜂鸣器,因此我们介绍压电陶瓷蜂鸣器。

压电陶瓷蜂鸣器是利用压电陶瓷片的压电原理工作的,当对压电陶瓷片施加交变电压时压电陶瓷片就会产生机械振动,从而发出声音。

压电效应:压电材料受到外力导致压电材料发生形变时,压电材料上会产生电荷;相反,当给压电材料通电时,压电材料也会发生形变。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(4)

压电效应

压电陶瓷片是一种电子发音元件,是在两片铜制圆形电极中间放入锆钛酸铅或铌镁酸铅材质的压电陶瓷材料制成,当在两片电极上面交变电流时,压电片根据电流的大小、频率发生震动而产生相应的声音来。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(5)

压电陶瓷片

4、 蜂鸣器驱动

压电陶瓷蜂鸣器按驱动方式不同又可以分为:无源蜂鸣器有源蜂鸣器

注意:这里的"源"不是指电源,而是指震荡源。有源蜂鸣器内部带震荡源,所以只要通直流电就会叫。而无源内部不带震荡源,所以如果通直流信号无法令其鸣叫。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(6)

无源蜂鸣器与有源蜂鸣器

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

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

· 一般无源蜂鸣器背面为绿色电路板,有源蜂鸣器背面为黑色封胶。

· 使用1.5V电池正极接蜂鸣器 " "引脚,负极触碰另一引脚发出咔、咔声的为无源蜂鸣器;如果能发出持续声音的,是有源蜂鸣器。

无源蜂鸣器驱动方法

要驱动无源蜂鸣器需要使用必须用200~5000HZ频率的矩形波去驱动它。

1. 一种是PWM 输出口直接驱动

利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器

2. 一种定时翻转电平驱动

通过定时翻转电平产生符合蜂鸣器要求的频率的波形,用这个矩形波(方波)驱动蜂鸣器。

5、 蜂鸣器电路连接

蜂鸣器电原理图如下,因为蜂鸣器在发声时需要较大的电流,arduino板管脚没有足够的电流,会造成声音小甚至无声,因此实际电路中会增加一个三极管用来放大电流。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(7)

蜂鸣器电原理图

模块连接图

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(8)

模块连接图

实物连接图

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(9)

实物连接图

注意:如果要使用PWM控制,需要接在支持PWM的端口。

6、 蜂鸣器实验

通过程序让蜂鸣器按要求发出声音,全国青少年等级考试使用的是反转电平的方式,我们主要用这种方式,PWM方式做为进阶介绍。

定时翻转电平驱动

最简单代码(考试要求使用米思齐软件编写):

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(10)

米思齐最简单代码

我们通过调节延时,可以改变方波的占空比,从而让蜂鸣器发出不同频率的声音。

占空比:在脉冲循环内,蜂鸣器高电平时间相对于总时间所占的比例。

常用的发声方式:

(1)长鸣: 鸣叫2000ms,停500ms

(2)滴滴短声: 鸣叫500ms,停500ms

(3)急促短声: 鸣叫300ms,停300ms

(4)长短声: 鸣叫2000ms,停500ms,鸣叫500ms,停500ms

初学者常见错误

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(11)

初学者常见错误

在这个代码中,高电平只占波形的很小一部分,绝大多数时间是低电平,无法达到无源蜂鸣器驱动的条件,蜂鸣器是不会响的,大家可以想想如果高电平占比太大,会不会响呢?

7、 蜂鸣器函数使用

通常蜂鸣器都是用于辅助提醒的,比方说红绿灯,到绿灯快要变红灯时,绿灯闪烁的同时,伴随着蜂鸣器的鸣叫,这时候用子函数的方式就比较方便,随时可以调用。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(12)

本例中创建子函数"Pbm",这个子函数可以使用"执行Pbm"方式,多次调用,不需要每次写蜂鸣器代码,大大简化了程序。

8、 让蜂鸣器唱歌(进阶)

TONE函数

Tone函数可以产生固定频率的PWM信号来驱动蜂鸣器发声,发声时间长度和声调都可以通过参数控制。

函数语法:

tone(pin, frequency)

tone(pin, frequency, duration)

函数参数

pin: 蜂鸣器所用端口

frequency: 发音的音调

duration: 持续时间

发音音调可以从下表中查询。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(13)

音名和频率对应关系表

比如我们要让蜂鸣器播放一首祝你生日快乐的曲子,我们就需要先按照下图的简谱,找到每个音的音名。

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(14)

《祝你生日快乐》简谱

不同节拍发音的时长不一样,需要按照简谱上的节拍,设定蜂鸣器的发音时间。

特殊节拍:

第一:普通音符。如第三个音符6,占1拍。

第二:带下划线音符,如第一个音符,占0.5拍。

第三:有的音符后带一个点,表示多加0.5拍,即1 0.5

第四:有的音符后带一个—,表示多加1拍,即1 1

第五:有的两个连续的音符上面带弧线,表示连音,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),

最终我们的代码如下(只有第一段):

蜂鸣器不需要单片机发声(如何让你的机器人开口说话)(15)

《祝你生日快乐》米思齐代码

试一试,蜂鸣器是不是已经开始唱歌了?这里我抛个砖,只写了一段,后面几段欢迎喜欢的朋友们自己写一下代码,再试听下最后的成果。

,