打印

请教如何调节蜂鸣器音量

[复制链接]
29097|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
milktang|  楼主 | 2010-12-13 09:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
HWM| | 2010-12-13 09:12 | 只看该作者
“普通的5V电磁蜂”应该工作在其额定的电压下,当然适当改变电压其音量会有变化。

使用特权

评论回复
板凳
acute1110| | 2010-12-13 09:38 | 只看该作者
还可以调整5V为PWM信号驱动,还可以堵那个发音孔也可以调整。

使用特权

评论回复
地板
tyw| | 2010-12-13 09:50 | 只看该作者
1. 发音短促一点
2. 频率偏离谐振点(通常2400Hz),如3kHz,1kHz
3. 串只几+Ω电阻
3L方法亦行,堵孔更妙,哈哈

使用特权

评论回复
5
milktang|  楼主 | 2010-12-13 10:18 | 只看该作者

找了一个电路,请问这个电路可以调节音量吗,还有不知道这个是针对压电还是电磁的

使用特权

评论回复
6
milktang|  楼主 | 2010-12-13 14:16 | 只看该作者
请问下如果用PWM应该怎么实现

使用特权

评论回复
7
yewuyi| | 2010-12-13 14:24 | 只看该作者
如果是无源的那种内置了震荡电路的蜂鸣器,则调节效果很差,呵呵,它的振荡频率由内部的RC振荡电路提供,电压太低了就不工作,堵孔只能玩玩,当产品搞会被老板拿砖头砸的。

最好的办法就是用蜂鸣片,也就是蜂鸣器中间的那个像金属片的东西,把它一段接GND,另一段接一个电容到PWM输出,通过PWM频率或者占空比的变化来调节音量和音调。

PWM的频率变化决定音调变化,PWM的占空比决定音量强弱。


呵呵,俺没实际做过哦,以上只是自己的理解和分析,俺还是个音乐盲,所以错了的话,就对不起喽。。。

使用特权

评论回复
8
yewuyi| | 2010-12-13 14:26 | 只看该作者
PWM到蜂鸣片可能需要加一级阻抗变化,蜂鸣片的等效阻抗应该都比较大,估计都得M欧以上,所以加一个功放或者什么的做一次变换再驱动蜂鸣片。


嘿嘿,以上只是猜测、估计、想象、请自我斟酌采纳。

使用特权

评论回复
9
木头东瓜| | 2010-12-13 14:44 | 只看该作者
小叶说的没错,那种无源蜂鸣片,加一级三极管放大,就可以用PWM驱动了
选定最佳谐振点,这类蜂鸣片发出的声音不会比有源的差

使用特权

评论回复
10
chunyang| | 2010-12-13 15:14 | 只看该作者
想有效的控制蜂鸣器音量,最好采用动圈式蜂鸣器,控制方法和普通音频功放完全相同,效果和音质会比电磁式蜂鸣器好很多。

使用特权

评论回复
11
milktang|  楼主 | 2010-12-14 09:37 | 只看该作者
那如果是电磁式的是不是就不好调节音量,我对蜂鸣器不太了解,还请大家多指导。
我想让蜂鸣器响一下,停一下。。。。类似“滴。滴。。。”报警,响和停的间隔越来越短,最后变成常响。
蜂鸣器音量调节是想按个人喜好,选择不同的声音大小。这是用在电池供电便携仪器上,不知道该选什么样的蜂鸣器

使用特权

评论回复
12
tyw| | 2010-12-14 10:43 | 只看该作者
本帖最后由 tyw 于 2010-12-14 10:54 编辑

闹了半天,早点说清醋鸭,哈哈,别说滴滴响了,唱歌也没问题的拉.
I/O有多的话,可用电阻衰减的方法调音量.(tmd,泥们老板以为在做扩音机啊,蜂鸣器巴不得它响一点呢,还调死马音量,撑,哈哈)

;*****************************************
;* 音乐子程序 MUSIC                                               *
;* --------------------------------------------------*
;* 中央c组里的A=440Hz                                           *
;* 12个半音阶相邻关系是12√2 (2开12次方≈1.0594631)  *
;* 例如 A=440Hz                                                   *
;*     bB=440.00Hz x 1.0594631 = 466.16Hz             *
;*      B=466.16Hz x 1.0594631 = 493.88Hz             *
;*      C=493.88Hz x 1.0594631 = 523.25Hz             *
;* 用定时器来模拟这个频率,精度取决于时钟快慢                *
;* 一般小数点后保留一位,音准已可忍受了                        *
;* 这是本人一个产品中的音乐单元,很完整,供爱好者参考.      *
;*****************************************
;
        ORG     0000H
        AJMP    CSH             ;主程序进入点
        ORG     000BH
        LJMP    TIM0            ;定时中断T0入口
;
;**********
;* 初始化 *
;**********
;
        ORG     0020H
CSH:    MOV     R0,#7FH         ;内部RAM(00H~7FH)清零
CSH1:   MOV     @R0,#00H
        DJNZ    R0,CSH1
        MOV     SP,#60H            ;堆栈60H~7FH,【使用89C51】
        MOV     TMOD,#01H       ;TMOD=11H,T0作16位计数器(4M晶振)
        CLR     TCON.4              ;T0禁止动作
        SETB    IE.1                  ;T0允许中断
        SETB    PT0                  ;T0中断优先
        SETB    IE.7                  ;系统允许中断
;
;**********
;* 主程序 *
;**********
;
MAIN:   MOV     5CH,#00       ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#49          ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#66          ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#100        ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#108        ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#136        ;取简码谱指针
        LCALL   MUSIC
        MOV     5CH,#174        ;取简码谱指针
        LCALL   MUSIC
        AJMP    MAIN
;
;*************************
;* 音乐子程序 MUSIC      *
;* 入口: 5CH←简码谱指针 *
;*************************
;
MUSIC:  MOV     A,5CH           ;简码谱指针装入A
        MOV     DPTR,#TABLE    ;至TABLE取简码
        MOVC    A,@A+DPTR
        MOV     R2,A                 ;取到的简码暂存于R2
        JZ      END1                  ;是否取到00(结束码)?
        ANL     A,#0FH              ;不是,则取低四位(节拍码)
        MOV     R6,A                 ;将节拍码存入R6
        MOV     A,R2                 ;将取到的简码再装入R2
        SWAP    A                    ;高低四位交换
        ANL     A,#0FH             ;取低四位(音符码)
        JNZ     SING                 ;取到的音符码是否为0?
        CLR     TR0                  ;是,则不发音
        AJMP    D1                   ;跳到D1
;
SING:   DEC     A                  ;取到的音符码减1
        MOV     4BH,A              ;存入(4BH)
        RL      A                       ;乘2
        MOV     DPTR,#TABLE1  ;至TABLE1取相对的高字节计数值
        MOVC    A,@A+DPTR
        MOV     TH0,A               ;取到的高字节存入TH0
        MOV     4AH,A              ;取到的高字节存入(4AH)
        MOV     A,4BH              ;再装入取到的音符码
        RL      A                       ;乘2
        INC     A                      ;加1
        MOVC    A,@A+DPTR      ;至TABLE1取相对的低位
        MOV     TL0,A              ;取到的低字节存入TL0
        MOV     49H,A              ;取到的低字节存入(49H)
        SETB    TR0                 ;启动TIMER0
D1:     CALL    DELAY            ;基本单位时间1/4拍187毫秒
        INC     5CH                 ;取简码谱指针加1
        AJMP    MUSIC            ;取下一个码
DD1:    RET
;
STOP:   NOP
;       JB      P3.7,STOP1      ;在软件延时中掺插做其他动作
;       SETB    P2.7              ;P2.7←"1"
        NOP
        NOP
STOP0:  NOP
        RET
STOP1:  NOP
;       JB      P3.6,STOP0      ;在软件延时中掺插做其他动作
;       SETB    P2.6             ;P2.6←"1"
        RET
;
END1:   CLR     TR0             ;停止TIMER0
        RET
;
TIM0:   PUSH    A               ;将A的值暂存于堆栈区
        PUSH    PSW             ;将PSW的值暂存于堆栈区
        MOV     TL0,49H         ;重设计数值
        MOV     TH0,4AH
        CPL     P1.7              ;将输出端P1.1取反(P1.7接至无源蜂鸣器)
        POP     PSW             ;至堆栈区取回PSW的值
        POP     A                 ;至堆栈区取回A的值
        RETI                      ;返回主程序
;
DELAY:  MOV     R7,#02          ;187毫秒
D2:     MOV     R4,#24
D3:     MOV     R3,#48
        DJNZ    R3,$
        ACALL   STOP            ;在软件延时中掺插做其他动作
        DJNZ    R4,D3
        DJNZ    R7,D2
        DJNZ    R6,DELAY        ;决定节拍
        RET
;                 .5   .6     .7    1
TABLE1: DW      65111,65150,65199,65217   ;4M晶振时的定时中断时间常数
;                  2    3     4     5                    ;若采用其它频率,则要根据乐音的
        DW      65252,65283,65297,65323      ;频率计算,例中央C的A音为440Hz,
;                  6    7     1`    2`                  ;440Hz=2.273ms,把T0设置为2.273ms
        DW      65347,65367,65377,65394      ;中断即可发出A音.
;                 3`    4`    #6
        DW      65410,65417,65357
;
;***************************************************************
;* 音符代码  1  2  3  4  5  6  7  8  9  A  B  C   D  E   F   0             *
;* 音高      .5 .6 .7  1  2  3  4  5  6  7  1` 2` 3` 4` 5` 休止          *
;*-------------------------------------------------------------*
;* 节拍代码  1   2   3   4    5        6     8    A     C    F                *
;* 节拍     1/4 2/4 3/4 1 1(1/4) 1(1/2) 2 2(1/2) 3 3(3/4)             *
;*-------------------------------------------------------------*
;* 结束代码 00H                                                                   *
;*-------------------------------------------------------------*
;* 乐谱格式  每字节的高字节为音符代码,低字节为节拍代码                   *  
;*-------------------------------------------------------------*
;* 例子:         ⑴    ⑵  ⑶    ⑷   ⑸   ⑹    ⑺   ⑻   ⑼   ⑽   ⑾      *
;*      DB      A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H,00H    *
;*      ⑴ A→唱"7" , 4→ 1 拍                                                   *
;*      ⑵ 0→休止  , 2→2/4拍                                                   *
;*      ⑶ 8→唱"5" , 4→ 1 拍                                                   *
;*      ⑷ 0→休止  , 2→2/4拍                                                  *
;*      ⑸ A→唱"7" , 4→ 1 拍                                                   *
;*      ⑹ 0→休止  , 2→2/4拍                                                  *
;*      ⑺ 8→唱"5" , 4→ 1 拍                                                   *
;*      ⑻ 0→休止  , 2→2/4拍                                                  *
;*      ⑼ D→唱"3`", 8→ 2 拍                                                  *
;*      ⑽ 0→休止  , 4→ 1 拍                                                   *
;*      ⑾ 00H→乐曲结束                                                         *
;*************************************************  
;
TABLE:
;【00】
        DB      98H,02H,B4H,01H,94H,01H,68H,02H,94H,01H
        DB      64H,01H,48H,02H,64H,01H,44H,01H,28H,02H
        DB      64H,01H,94H,01H,B4H,01H,94H,01H,B4H,01H
        DB      94H,01H,B4H,01H,D4H,01H,94H,01H,64H,01H
        DB      44H,01H,64H,01H,98H,02H,01H,01H,00H
;【49】
        DB      A4H,02H,84H,02H,A4H,02H,84H,02H,D8H,04H
        DB      C8H,01H,01H,01H,01H,01H,00H
;【66】
        DB      42H,52H,62H,72H,82H,92H,A2H,B2H,42H,52H
        DB      62H,72H,82H,92H,A2H,B2H,00H
;【100】
        DB      61H,81H,B1H,D1H,B1H,81H,61H,00H
;【108】
        DB      11H,41H,61H,81H,61H,41H,11H,00H
;【136】
        DB      24H,04H,34H,04H,44H,04H,54H,04H,64H,04H,44H,04H,64H,04H,94H,04H
        DB      83H,01H,93H,01H,83H,01H,63H,01H,46H,02H,66H,02H
        DB      91H,21H,91H,21H,91H,21H,91H,21H,94H,00H
;【174】
        DB      94H,04H,A4H,04H,B4H,04H,C4H,04H,D4H,04H
        DB      B4H,04H,D8H,08H,C4H,04H,F4H,04H,CCH,00H
;
                  END

使用特权

评论回复
13
yewuyi| | 2010-12-14 11:02 | 只看该作者
如果想要使用电池供电,那还是选择蜂鸣片比较合适,比蜂鸣器省电。

使用特权

评论回复
14
milktang|  楼主 | 2010-12-14 11:15 | 只看该作者
谢谢yewuyi老师和T叔热情回复,不过预留的I/O口不多,预留了2个I/O口给蜂鸣器,原来想通过一个I/O口的高低电平变化改变蜂鸣器“滴。。滴。。”声的频率,另一个I/O调节蜂鸣器电压来调节音量。这样可以吗

使用特权

评论回复
15
332832940| | 2010-12-14 11:27 | 只看该作者

使用特权

评论回复
16
tyw| | 2010-12-14 11:40 | 只看该作者
一般振荡频率与蜂鸣器谐振频率一致时,声音最响.
通过控制发音长短与发音间隔来玩花样.
想用不同频率来蜂鸣时应避开谐振点.
16Ω蜂鸣器在蜂鸣时平均电流有百多mA,电池供电设备宜串中30Ω电阻来减小耗电(基本听不出区别)

使用特权

评论回复
17
t.jm| | 2010-12-14 11:42 | 只看该作者
用DA代替PWM驱动, 你想怎么调节音量都可以,IO口要求少,只要求你的MCU有DA输出。

使用特权

评论回复
18
yanwuxu| | 2010-12-14 12:06 | 只看该作者
如果想要使用电池供电,那还是选择蜂鸣片比较合适,比蜂鸣器省电。
yewuyi 发表于 2010-12-14 11:02


蜂鸣片和蜂鸣器驱动不一样的

使用特权

评论回复
19
yewuyi| | 2010-12-14 13:08 | 只看该作者
蜂鸣片和蜂鸣器驱动不一样的
yanwuxu 发表于 2010-12-14 12:06



你说的是哦,本来就不一样哦。。。

使用特权

评论回复
20
milktang|  楼主 | 2010-12-14 14:40 | 只看该作者
我所用的蜂鸣器是接上直流就响的,不知道频率应该是多少呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

267

帖子

4

粉丝