找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机控制无源蜂鸣器驱动电路

查看数: 10004 | 评论数: 51 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-7 17:02

正文摘要:

这是一款购买的机器驱动的无源蜂鸣器测试到的波形,声音还比较大,用的是两个IO口直接连接到蜂鸣器两端。 自己设计的如果只用一个IO口用三极管驱动,蜂鸣器一端接电源3V另一端经过三极管到地反而声音更小!为了达 ...

回复

ID:668004 发表于 2020-9-22 18:25
juncedz 发表于 2020-9-17 23:09
是轰鸣片,         基本上报警声音响的都是用这样的,并且拆开看了好多。

如果没有空间,也没办法,  ...

无源的就是这样驱动的  推挽  最大的功率
ID:595237 发表于 2020-9-17 23:09
QWE4562012 发表于 2020-9-16 18:14
你好   用了三端电感?产品空间很小  不可能放这么大插件电感的。。。还有你这种是有源蜂鸣器吧

是轰鸣片,         基本上报警声音响的都是用这样的,并且拆开看了好多。

如果没有空间,也没办法,  单片机直接二口能够驱动轰鸣片发声音没有看过,

不过那些音乐片  是直接有 io口 驱动 小喇叭的。声音也可以的,
ID:582903 发表于 2020-9-17 11:37
交流、频率
ID:668004 发表于 2020-9-16 18:15
wulin 发表于 2020-9-15 19:29
由于你发的代码不全,控制蜂鸣器端口翻转的核心部分看不到,只能猜想是用的Px的Px.0和Px.1。所以很难用简 ...

谢谢大神  不甚感激  
ID:668004 发表于 2020-9-16 18:14
juncedz 发表于 2020-9-14 19:41
一个IO驱动.jpg    这个电路是驱动轰鸣器的,不是轰鸣片
这样的:

你好   用了三端电感?产品空间很小  不可能放这么大插件电感的。。。还有你这种是有源蜂鸣器吧
ID:668004 发表于 2020-9-16 18:12
juncedz 发表于 2020-9-14 19:24
以前的硬件方式:
用1个直径10*高度15mm三脚的绕线电感,103电容,几个三极管与电阻电容,
就用单片机开 ...

空间和成本      所以用的是压电的无源  因为体积比较小      你那种应该是大才产品   直接用的喇叭吧?或者是电磁式的   
ID:668004 发表于 2020-9-16 18:09
wulin 发表于 2020-9-14 18:59
这段代码DrvGPIO_PT9_EnableOUTPUT(0x01);DrvGPIO_PT9_EnableOUTPUT(0x02);两条指令之间会有时间差,做不 ...

要用总线操作方法使2个端口同时翻转。--------------------具体如何做?方法说下
ID:213173 发表于 2020-9-15 19:29
QWE4562012 发表于 2020-9-15 18:32
总线操作方法?我怎么跟他说呢?他这里是直接操作的库函数是吗

由于你发的代码不全,控制蜂鸣器端口翻转的核心部分看不到,只能猜想是用的Px的Px.0和Px.1。所以很难用简单几句话表述清楚,直接给你写个示例程序,稍有点C言语基础就能看明白,既可以用仿真软件仿真运行,也可以搭建实际电路测试。至于使用的端口不同,略改一下即可。有详细注释,别说还是看不懂。
  1. //以51系列单片机,晶振12MHz为基础编写的测试程序
  2. //蜂鸣器驱动端口P2.0、P2.1,可以根据实际管脚修改
  3. //按键程序作为测试蜂鸣器使用,每按一次响铃1/4秒
  4. #include <reg52.h>
  5. #include <intrins.h>
  6. #define uint unsigned int
  7. #define uchar unsigned char

  8. sbit key=P2^2;

  9. bit flag=0;

  10. void Delay115us()                //@12.000MHz
  11. {
  12.         uchar i;
  13.         i=55;
  14.         while(--i);
  15. }

  16. void key_scan()
  17. {
  18.         static uchar temp=0; //消抖计数
  19.         static bit sign=0;        //按键状态记忆
  20.         if(!key)
  21.         {
  22.                 if(++temp==100 && sign==0)
  23.                 {
  24.                         sign=1;
  25.                         flag=1;//开启蜂鸣器
  26.                 }
  27.         }
  28.         else
  29.         {
  30.                 temp=0;
  31.                 sign=0;
  32.         }
  33. }

  34. void Beep()//频率4KHz/周期250us
  35. {
  36.         uint i;
  37.         if(flag)
  38.         {
  39.                 P2|=0x01;//蜂鸣器端口置位,P2.0=1、P2.1=0,不影响P2其它端口状态
  40.                 for(i=0;i<2000;i++)//响铃1/4秒
  41.                 {
  42.                         if(i%2==0)
  43.                                 P2+=0x01;//P2.0、P2.1同步翻转,不影响P2其它端口状态
  44.                         else
  45.                         {
  46.                                 P2-=0x01;//P2.0、P2.1同步翻转,不影响P2其它端口状态
  47.                                 _nop_(); //补偿2us,正负半周脉冲等宽
  48.                                 _nop_();
  49.                         }
  50.                         Delay115us();
  51.                 }
  52.                 P2&=0xfc;//蜂鸣器端口复位清0,不影响P2其它端口状态
  53.                 flag=0;        //关闭蜂鸣器
  54.         }
  55. }

  56. void main()
  57. {
  58.         P2&=0xfc;//初始化蜂鸣器端口P2.0、P2.1清0。
  59.         while(1)
  60.         {
  61.                 key_scan();
  62.                 Beep();
  63.         }        
  64. }
复制代码
ID:668004 发表于 2020-9-15 18:33
ice615 发表于 2020-9-12 14:07
一个软件问题讨论了五六天也不见把程序贴上来

兄弟  程序它来了  有空看下   
ID:668004 发表于 2020-9-15 18:32
wulin 发表于 2020-9-14 18:59
这段代码DrvGPIO_PT9_EnableOUTPUT(0x01);DrvGPIO_PT9_EnableOUTPUT(0x02);两条指令之间会有时间差,做不 ...

总线操作方法?我怎么跟他说呢?他这里是直接操作的库函数是吗
ID:595237 发表于 2020-9-14 19:41
一个IO驱动.jpg    这个电路是驱动轰鸣器的,不是轰鸣片
这样的:

蜂鸣片8.jpg (21.13 KB, 下载次数: 124)

蜂鸣片8.jpg

蜂鸣片4.jpg (1.96 KB, 下载次数: 104)

蜂鸣片4.jpg
ID:595237 发表于 2020-9-14 19:24
以前的硬件方式:
用1个直径10*高度15mm三脚的绕线电感,103电容,几个三极管与电阻电容,
就用单片机开关一下三极管也声音响的车喇叭一样,可能达到80--90db。
有电容,开关一下,有延时,就不停的响。
软件不懂,以前就这样硬件用过。里面需要一定空间,
现在的报警器可能还是用这样的硬件的才声音好响。
ID:213173 发表于 2020-9-14 18:59
QWE4562012 发表于 2020-9-14 15:45
void Beep(int iNum)
{
int i, j;

这段代码DrvGPIO_PT9_EnableOUTPUT(0x01);DrvGPIO_PT9_EnableOUTPUT(0x02);两条指令之间会有时间差,做不到2个端口同时翻转。要用总线操作方法使2个端口同时翻转。
ID:668004 发表于 2020-9-14 15:45
ice615 发表于 2020-9-12 14:07
一个软件问题讨论了五六天也不见把程序贴上来

void Beep(int iNum)
{
int i, j;

DrvGPIO_PT9_EnableOUTPUT(0x01);
DrvGPIO_PT9_EnableOUTPUT(0x02);
for(i = 0; i < iNum; i++)
{
  for(j = 0; j < 90; j++)
  {
   DrvGPIO_PT9_SetPortBits(0x01);
   DrvGPIO_PT9_ClrPortBits(0x02);
   Delay(43);//Delay(125);130
   DrvGPIO_PT9_ClrPortBits(0x01);
   DrvGPIO_PT9_SetPortBits(0x02);
   Delay(43);//Delay(125);130
  }
}
// if(iNum > 1)
//  Delay(10000);

DrvGPIO_PT9_DisableOUTPUT(0x01);
DrvGPIO_PT9_DisableOUTPUT(0x02);
}


请赐教
ID:668004 发表于 2020-9-12 14:59
wulin 发表于 2020-9-11 10:59
你没有理解 “互为反相的3.3V矩形波” 的含义。如果你用双踪示波器或逻辑分析仪就能看明白。示意图如下: ...

就这一个帖就能看出是高手。吴工你是高手!我喜欢你的回帖!受益匪浅!
ID:668004 发表于 2020-9-12 14:43
学习单片机lq 发表于 2020-9-7 22:09
如果有更高的供电,比如5V,直接单独供电就行了,这里不值得下功夫。

本来你这个回复我不想理睬的  既然来了就回复下你   提高电压这种方法说都不要说出来  谁不知道?这是电池产品,容量很小,而且这是IO口反相驱动  单片机电压是3V 明白?如果空间够  直接用电磁式的就行了,或者有5V系统 直接用5V供电就行了
ID:668004 发表于 2020-9-12 14:40
ice615 发表于 2020-9-12 14:07
一个软件问题讨论了五六天也不见把程序贴上来

兄弟啊  我是搞硬件的  软件不是我写的  我周一让他发给我
ID:401564 发表于 2020-9-12 14:19
QWE4562012 发表于 2020-9-12 10:48
4K的蜂鸣器  如果用两个IO口的话 是否需要电感?这个电感的计算方法说下

你没有示波器吗?直接用示波器两个线接到两个IO看波形就知道了,A=0的时候B=1,然后A=1,B=0,频率使用蜂鸣器的频率,这真不难呀!你上传的波形已经可以了,至于波形的延时有毛刺什么的,难道不能先试一下效果吗?烧录到单片机上先试下效果,如果是声音电流都符合了,再去找一下问题不行吗?
如果是用两个IO驱动的话是不用电感的,这要的是交流电的
一个IO驱动就要电感,我说得很明白了,既然是没有空间,那就不管了,如果你要测试,可以试一下,从1mH电感慢慢的调试
ID:790738 发表于 2020-9-12 14:07
一个软件问题讨论了五六天也不见把程序贴上来
ID:213173 发表于 2020-9-12 13:08
QWE4562012 发表于 2020-9-12 11:42
您好   按照您的指示  用逻辑分析仪也抓了下波形(因为是方波,不知道选取哪个协议,选的IIC的协议,)波 ...

图1的的波形非常清楚的表示两个端口电压互为反相且时序准确,难道你看不出来???只是为了看波形和时序不必纠结选取哪个协议。与任何通讯协议也没有丝毫关联。
图2波形两个端口翻转有明显时间差,还叠加了异常短脉冲。明显是软件编写有缺陷才会出现的现象。你把时间轴展开看会非常明显。
ID:668004 发表于 2020-9-12 10:52
univers 发表于 2020-9-12 09:26
这有啥难的,驱动电路看是没问题的,三极管要用高放大倍数的为好,比如TO92封装的,放大倍数200以上。想声 ...

怎么就那么多人叫我提高电压。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。真是无语
ID:668004 发表于 2020-9-12 10:50
yzwzfyz 发表于 2020-9-8 16:19
对于蜂鸣器来说,它不管是谁驱动它,只要给足电压,它就给足振动(对应音量)。
你想想看,音量大的时候它 ...

电源是3.0  这个没得选  不可能升压
ID:668004 发表于 2020-9-12 10:49
Y_G_G 发表于 2020-9-11 11:52
你这个是压电陶瓷片,是要用交流电的,简单的开关是不行的
图1可以驱动,单片机端口设定成强推挽输出,输出 ...

是的  必须用交流电  图刚更新了 贴出来了
ID:668004 发表于 2020-9-12 10:48
Y_G_G 发表于 2020-9-11 11:52
你这个是压电陶瓷片,是要用交流电的,简单的开关是不行的
图1可以驱动,单片机端口设定成强推挽输出,输出 ...

4K的蜂鸣器  如果用两个IO口的话 是否需要电感?这个电感的计算方法说下
ID:382454 发表于 2020-9-12 09:26
这有啥难的,驱动电路看是没问题的,三极管要用高放大倍数的为好,比如TO92封装的,放大倍数200以上。想声压大,就上+5V 或+10V
ID:10947 发表于 2020-9-11 18:17
压电蜂鸣器,可以直接把两个引脚接到IO口,让软件工程师写程序,发出蜂鸣器谐振频率的脉冲
ID:213173 发表于 2020-9-11 17:49
QWE4562012 发表于 2020-9-11 10:22
还没达到样品的频率  是不是这样?声音还没达到样品的音量

要想蜂鸣器声音大不但要有足够的驱动电压还要求驱动频率与蜂鸣器的谐振频率相同或相近。楼主这个驱动波形不太好,有点交越失真,是程序没有写好。
ID:401564 发表于 2020-9-11 11:52
QWE4562012 发表于 2020-9-11 10:21
你好玉工 这是蜂鸣器规格书

你这个是压电陶瓷片,是要用交流电的,简单的开关是不行的
图1可以驱动,单片机端口设定成强推挽输出,输出波形不是0101,而是:当A端口=0时,B端口=1,然后,B=0,A=1,使两个端口输出的是交流信号
图3是要把二极管换成电感的,大概是几mH左右,如果没有空间就不管了
使用图1的接法,先用示波器看效果:示波器的地线接一个端口,探头接另外一个端口,看波形就知道频率了
ID:213173 发表于 2020-9-11 10:59
QWE4562012 发表于 2020-9-11 10:05
为什么有人说对地测量是测不到反相的?我等下试试看

你没有理解 “互为反相的3.3V矩形波” 的含义。如果你用双踪示波器或逻辑分析仪就能看明白。示意图如下:

ID:668004 发表于 2020-9-11 10:05
wulin 发表于 2020-9-8 20:46
你把压电式蜂鸣器看成电容就能比较容易理解为什么在蜂鸣器两端测得峰峰值电压2倍于VCC。如果示波器表笔一 ...

为什么有人说对地测量是测不到反相的?我等下试试看
ID:668004 发表于 2020-9-11 10:01
Y_G_G 发表于 2020-9-9 19:12
不讨论个人能力问题
你图3用三极管驱动的叫线圈式(专业名词:电磁式无源蜂鸣器),驱动方法就和图3用三极管 ...

你这么说。说明你是懂的!你知道并联电感的选取吗?只能用磁珠,空间不够。-----------如果是压电片的话,不需要的两个IO的-----------------你这句话啥意思?念起来不顺
ID:817485 发表于 2020-9-9 19:22
续流二极管与滤波电容是必须有吗
ID:401564 发表于 2020-9-9 19:12
QWE4562012 发表于 2020-9-9 18:30
看来你不懂无源和有源蜂鸣器

不讨论个人能力问题
你图3用三极管驱动的叫线圈式(专业名词:电磁式无源蜂鸣器),驱动方法就和图3用三极管驱动那样的,方波驱动
还有另外一个是用压电片的,专业名词叫作压电无源蜂鸣器,驱动的方法是并联一个电感,电感取值要根据压电片频率来计算的,也是方波驱动
我用过的无源蜂鸣器都是这样用的,请问,哪里有不对的,你可以指正一下.
ID:668004 发表于 2020-9-9 18:30
Y_G_G 发表于 2020-9-8 22:26
这到底是有多难呢?
市面上的无源蜂鸣器它实际上是有两种的的:一种是常用的线圈式的,用的驱动方法就是图3的 ...

看来你不懂无源和有源蜂鸣器
ID:668004 发表于 2020-9-9 18:29
wulin 发表于 2020-9-8 20:46
你把压电式蜂鸣器看成电容就能比较容易理解为什么在蜂鸣器两端测得峰峰值电压2倍于VCC。如果示波器表笔一 ...

直接0 1   0  1这样吗
ID:668004 发表于 2020-9-9 18:29
wulin 发表于 2020-9-8 20:46
你把压电式蜂鸣器看成电容就能比较容易理解为什么在蜂鸣器两端测得峰峰值电压2倍于VCC。如果示波器表笔一 ...

APP转岗做嵌入式的。。。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表