赞
踩
有源蜂鸣器:
内部还有震荡电路(震荡源),可将恒定的直流电转化成一定频率的脉冲信号
无源蜂鸣器:
内部不带震荡源,直流信号无法令其鸣叫
1. 有源蜂鸣器
是直流电压驱动,不需要利用交流信号进行驱动,只需要对驱动口输出驱动电平并通过三极管放大驱动电流
2. 无源蜂鸣器
必须使用2K ~ 5K的方波进行驱动
1)PWM输出口输出一定的方波直驱蜂鸣器
2)IO口定时翻转电平来产生方波驱动蜂鸣器
对于无源蜂鸣器来说,一般是工作电压决定声声强,脉冲频率决定声调,各个厂家 的产品也有性能差异
单片机控制无源蜂鸣器参考文档:
https://tech.hqew.com/circuit_1171795
3.关于二者其他区别请查看文档:
有源蜂鸣器和无源蜂鸣器的区别_编程世界093的博客-CSDN博客
频率高 = 音调高 = 周期小
音调固定 = 周期固定
2.响度和占空比
占空比大 = 响度大
一般影响蜂鸣器声音大小的物理属性都包括电压、线圈、支架,膜片等,有的时候甚至质量也会影响其音量。
1.安装beep步骤
1)安装
sudo apt-get install beep
2)加载 pcspkr 模块
sudo modprobe pcspkr
3)检测是否以模块化加载成功
lsmod | grep pcspkr
4)指令测试是否响声(进入到beep所在目录)
cd /usr/bin/beep
beep -f 2300.7 -r 100 -d 710 -l 500
说明:pcspkr这个驱动应该被加入黑名单,可在一下路径查看
vi /etc/modprobe.d/blacklist.conf
2. beep源码
内部扬声器是控制台的一部分,所以它对应的设备文件为/dev/console。
变量KIOCSOUND在头文件 /usr /include /linux /kd.h中声明,
ioctl函数使用它可以来控制扬声器的发声,使用规则为:
ioctl ( fd, KIOCSOUND, (int) tone);
fd为文件设备号,tone 是音频值。当tone为0时,终止发声。必须一提的是它所 理解的音频和我们平常以为的音频是不同的,由于计算机主板定时器的时钟频率为 1.19MHZ,所以要进行正确的发声,必须进行如下的转换:扬声器音频值=1190000/我 们期望的音频值。扬声器发声时间的长短我们通过函数usleep(unsigned long usec)来 控制。它是在头文件/usr /include /unistd.h中定义的,让程序睡眠usec微秒。
3. 命令控制
cd /usr/sbin (cd到beep执行文件所在目录)
./beep -f 2300.7 -r 100 -d 710 -l 500
参数说明:
-f beep的频率
-r beep的重复次数
-d 两次重复间隔延时为多少毫秒
-l beep多久时间
-s和-c表示beep时需从stdin读取,s表示每读一行,c表示每读一字符
-verbose或-debug选项开启调试信息输出功能;
-e device或-device device选项设定event设备,未指定则尝试/dev/tty0和/dev/vc/0两设备
参考文档: Shell命令控制蜂鸣器发声_shell 声音_小猪快点跑的博客-CSDN博客
4.抓取不同频率下的蜂鸣器波形图
beep -f 300.7
beep -f 1300.7
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。