标题: 材料表上写的是有源蜂鸣器,但高电平或低电平都不叫 [打印本页]

作者: tiandiyijian    时间: 2020-12-3 10:34
标题: 材料表上写的是有源蜂鸣器,但高电平或低电平都不叫
只有给个方波它才叫而且声音特小,请问这是怎么回事啊?我就想让它声音放大点,求大神指点

IMG_20201203_103048.jpg (2.05 MB, 下载次数: 91)

IMG_20201203_103048.jpg

作者: hhdsdy    时间: 2020-12-3 13:30
材料表写的不一定就对,需要自己检查,可以拿个5V电源按极性触碰一下蜂鸣器看是否会鸣叫(无源的只有触碰瞬间会有一声响);另外,有源的一般都是5V供电,你这个电压不足肯定不够响(甚至可能都会不响),蜂鸣器有问题也会造成响声不够大
作者: 器车人    时间: 2020-12-3 13:36
你这个蜂鸣器应该是无源蜂鸣器
作者: 去设置用户名    时间: 2020-12-3 13:58
量下3.3V电是否正常
作者: wxxl    时间: 2020-12-3 14:03
3.3V去掉9013的压降,可能电压不够了吧
作者: zhangxiangliang    时间: 2020-12-3 14:05
明显的供电电压太低,做过试验的,低压太低声音小甚至完全不响
作者: mengsiu    时间: 2020-12-4 15:27
先确认一下,蜂鸣器的电压是不是3.3V供电的,一般看贴纸,红色的是3.3V,蓝色的是5V,黑色的是12V。
作者: mengsiu    时间: 2020-12-4 15:31
我个人喜欢用pnp来驱动


作者: sunny北城    时间: 2020-12-4 16:10
可能需要加三极管放大信号吧。再给引脚方波
作者: chenyinhu    时间: 2020-12-4 16:40
要换有源蜂鸣器,这样给高电平就能响了,而且用5V的话会非常响(把贴纸撕掉的情况下)
作者: chenyinhu    时间: 2020-12-4 16:41
有源蜂鸣器底部是黑色封装而不是电路板,你看看是不是

作者: 老愚童63    时间: 2020-12-5 10:30
mengsiu 发表于 2020-12-4 15:31
我个人喜欢用pnp来驱动

PNP驱动存在缺陷,当蜂鸣器供电大于驱动(单片机)供电时,可能不受控或者损坏单片机I/O 口。
作者: suncat0504    时间: 2020-12-5 10:59
这种无源的蜂鸣器,必须施加合适的方波,模拟正弦波,才能发声。声音大小,和声波的频率、强度有关。也就是说,你需要调整方波的输出频率和占空比才行。看你的电路图, 估计电压是不能改了,但是还可以试试换放大倍数大一些的三极管。另外可以参考网上用方波模拟音乐发声的程序,应该有很多。以下是一个模拟发声的程序,使用STC89C52,+5V电源,声音还是比较明显的:
#include <reg52.h>   
#include <intrins.h>   
//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;   
sbit Beep =  P0^4 ;

unsigned char n=0;  //n为节拍常数变量   
unsigned char code music_tab[] ={   
0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,   
0x20, 0x40, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x10,   
0x1C, 0x10, 0x18 , 0x40,   
0x1C, 0x20, 0x20 , 0x20,   
0x1C, 0x20, 0x18 , 0x20,   
0x20, 0x80, 0xFF , 0x20,   
0x30, 0x1C, 0x10 , 0x18,   
0x20, 0x15, 0x20 , 0x1C,   
0x20, 0x20, 0x20 , 0x26,   
0x40, 0x20, 0x20 , 0x2B,   
0x20, 0x26, 0x20 , 0x20,   
0x20, 0x30, 0x80 , 0xFF,   
0x20, 0x20, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x20, 0x1C , 0x10,   
0x18, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x20, 0x15 , 0x20,   
0x1C, 0x20, 0x20 , 0x20,   
0x26, 0x40, 0x20 , 0x20,   
0x2B, 0x20, 0x26 , 0x20,   
0x20, 0x20, 0x30 , 0x80,   
0x20, 0x30, 0x1C , 0x10,   
0x20, 0x10, 0x1C , 0x10,   
0x20, 0x20, 0x26 , 0x20,   
0x2B, 0x20, 0x30 , 0x20,   
0x2B, 0x40, 0x20 , 0x15,   
0x1F, 0x05, 0x20 , 0x10,   
0x1C, 0x10, 0x20 , 0x20,   
0x26, 0x20, 0x2B , 0x20,   
0x30, 0x20, 0x2B , 0x40,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x20, 0x15 , 0x20,   
0x1C, 0x20, 0x20 , 0x20,   
0x26, 0x40, 0x20 , 0x20,   
0x2B, 0x20, 0x26 , 0x20,   
0x20, 0x20, 0x30 , 0x30,   
0x20, 0x30, 0x1C , 0x10,   
0x18, 0x40, 0x1C , 0x20,   
0x20, 0x20, 0x26 , 0x40,   
0x13, 0x60, 0x18 , 0x20,   
0x15, 0x40, 0x13 , 0x40,   
0x18, 0x80, 0x00   
};   

void delay (unsigned char m)   //控制频率延时   
{   
unsigned i=3*m;   
while(--i);   
}   
void delayms(unsigned char a)  //豪秒延时子程序   
{   
  while(--a);     
}   
void main()   
{
        unsigned char p,m;   //m为频率常数变量   
        unsigned char i=0;   
        TMOD&=0x0f;   
        TMOD|=0x01;   
        TH0=0xd8;TL0=0xef;   
        IE=0x82;   
play:
        while(1)   
    {   
        a:  p=music_tab[i];   
                if(p==0x00)      
                {
                        i=0, delayms(1000); goto play; //如果碰到结束符,延时1秒,回到开始再来一遍  
                }      
                else
                        if(p==0xff)  
                        {
                                i=i+1;delayms(100),TR0=0; goto a;  //若碰到休止符,延时100ms,继续取下一音符
                        }      
                        else
                        {
                                m=music_tab[i++], n=music_tab[i++];         //取频率常数 和 节拍常数
                        }      
                        TR0=1;                                             //开定时器0   
                while(n!=0)                    //等待节拍完成,输出音频  
                {
                        Beep=~Beep;
                        delay(m);   
                }
                TR0=0;                                             //关定时器0   
    }   
}
void int0() interrupt 1   //采用中断定时器0 控制节拍   
{  
        TH0=0xd8;   
        TL0=0xef;   
        n--;   
}

无源发声.jpg (36.25 KB, 下载次数: 78)

无源发声.jpg

作者: Chellson    时间: 2020-12-5 21:01
你这个要换有源蜂鸣器,这样给高电平就能响了哦!
作者: TTQ001    时间: 2020-12-6 01:57
这个应该是无源蜂鸣器
作者: 老愚童63    时间: 2020-12-6 08:42
注意!有源蜂鸣器有极性的!接错了也不会叫!
作者: 凌某    时间: 2020-12-6 21:58
蜂鸣器换了
作者: xhaity    时间: 2020-12-7 11:20
1.有源蜂鸣器有正负极,正负极接错会不响;
2.如果没有正负极标注,可能就是无源分鸣器;
作者: changhz    时间: 2020-12-7 11:28
先看下蜂鸣器电压是多少V?三极管先3904比较好,3904 CE极小电流电压能达到0V




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1