精华内容
下载资源
问答
  • 无源蜂鸣器

    2018-01-18 10:01:00
    从外观上看,无源蜂鸣器略矮(约1mm)。有源蜂鸣器触发就会发声,发声频率固定。无源蜂鸣器要用方波驱动,方波频率即为其发声频率: 没有像样的规格书,频率范围未知。网店商品描述中提到一句2k-5k,that's all。...

    蜂鸣器。左边的是有源蜂鸣器,右边的无源。从外观上看,无源蜂鸣器略矮(约1mm)。有源蜂鸣器触发就会发声,发声频率固定。无源蜂鸣器要用方波驱动,方波频率即为其发声频率:

    没有像样的规格书,频率范围未知。网店商品描述中提到一句2k-5k,that's all。一些关于声音频率的数据:

    • 人耳的敏感范围约为 20Hz - 20 kHz
    • 钢琴的频率范围约 16Hz - 5.6 kHz(参考
    • 标准音 A4 频率为 440Hz
    • 人耳/大脑对频率呈倍数关系的两个音感知为同一个音,但是音高不同。西方音乐使用的Chromatic Scale音阶,将一个Scale平均分为12个pitch,每个pitch称为一个semitone。因此,相邻semitone之间的频率相差12√2倍(2的12次方根,约1.0595) 。例如,标准音A4为440Hz,A#4 则为 440 x 12√2 = 466.164Hz

    STM32 的 General Purpose Timer 可以工作在 Output Compare (OC)模式下,从pin脚输出方波。控制输出方波的频率,即可驱动蜂鸣器发出不同的声音。OC模式工作原理简述如下。

    先将OC置之不理,单看Timer的计数部分,主要是3个寄存器:CNT, ARR, PSC。Timer时钟源频率除以 PSC后才是Timer 的计数频率。CNT从0开始往上依次计数,当达到 ARR时,将回到0重新开始。而OC部分则有寄存器CCR,每当CNT与CCR相等时,可以设置输出pin的值,例如将其置高、置低或者toggle。输出方波要使用toggle方式。

    将CCR设固定值,例如0。OC频率 = Timer时钟源频率 / PSC / (1+ARR)。对于toggle方式,2个OC周期才是1个方波周期,因此,输出方波的频率 = OC频率 / 2 = Timer时钟源频率 / PSC / (1+ARR) / 2。

    可见,输出方波频率取决于 PSC及 ARR。对16位 Timer,PSC及 ARR取值范围为 0 - 65535。

    若时钟源频率为72MHz,取PSC=36,则方波频率 = 1MHz / (1+ARR)。当ARR取值范围为 49-65535 时,可获得的方波频率范围为 15Hz - 20kHz,覆盖了人耳的敏感范围和钢琴的频率范围。

    相关设置如下,其中时钟源选择内部72MHz:

     

     计时器设置中的 Counter Period即为 PSC,设为36;而OC Channel设置中的 Pulse 则为 CCR,设为0:

     

    演奏一首好听的歌--可惜不是你-- 中的两句:

     

    简谱音符对照到钢琴琴键,再查询得到其频率:

     

     演奏的实现如下。_App_music[] 数组包含曲子的所有音符,每个音符2个元素,一个是音符的频率,另一个是时长:

    static float _App_music[] = { //
            440.000, 1, // (1)
                    783.991, 2, //
                    659.255, 2, //
                    523.251, 1, //
                    587.330, 3, //
                    ...
    
    #define _App_GET_ARR(f) ( (uint32_t)(1000000/(float)(f) - 1) )
    #define _App_TIME_UNIT  250
    #define _App_IDLE_DELAY 10
    
    void App_Init() {
    
        const size_t cnt = sizeof(_App_music) / sizeof(float);
        for (int i = 0; i < cnt; i += 2) {
            float f = _App_music[i];
            uint32_t t = (uint32_t) (_App_TIME_UNIT * _App_music[i + 1]);
            __HAL_TIM_SET_AUTORELOAD(&htim3,_App_GET_ARR(f))
            ;
            HAL_TIM_OC_Start(&htim3, TIM_CHANNEL_1);
            HAL_Delay(t);
            HAL_TIM_OC_Stop(&htim3, TIM_CHANNEL_1);
            HAL_Delay(_App_IDLE_DELAY);
        } // for
    
    }
    

     

    实测表明,蜂鸣器的有效频率范围约为 200Hz - 10 kHz。

     

    转载于:https://www.cnblogs.com/vinccc/p/8305793.html

    展开全文
  • 无源蜂鸣器.docx

    2020-07-19 18:38:57
    本文详细讲解了无源蜂鸣器内部的工作原理,以及无源蜂鸣器如何与mixly结合做成按键电子琴,里面包括了它的程序和分析。
  •  图:有源和无源蜂鸣器的外观 a)有源 b)无源 从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚郡朝上放置时,...
  • 利用无源蜂鸣器发声 利用有源蜂鸣器发声 组件: Arduion主板 无源蜂鸣器 有源蜂鸣器 面包板 杜邦线 USB数据线 下图是无源蜂鸣器 下图是有源蜂鸣器 实验步骤: 1.建立电路 Arduion 无源蜂鸣器 GND GND ...

    学习任务:

    利用无源蜂鸣器发声
    利用有源蜂鸣器发声


    组件:

    • Arduion主板
    • 无源蜂鸣器
    • 有源蜂鸣器
    • 面包板
    • 杜邦线
    • USB数据线

    下图是无源蜂鸣器*下图是无源蜂鸣器*
    下图是有源蜂鸣器
    在这里插入图片描述

    实验步骤:

    1.建立电路

    Arduion无源蜂鸣器
    GNDGND
    5vvcc
    7I/O
    Arduion有源蜂鸣器
    GNDGND
    5vvcc
    7I/O

    2.烧录代码

    无源蜂鸣器实验

    const int buzzerPin = 7;
    int fre;
    void setup()
    {
      pinMode(buzzerPin, OUTPUT);
    }
    void loop()
    {
      //频率从200到800
      for (int i = 200; i <= 800; i++)
      {
        tone(7, i);
        delay(5);
      }
      delay(4000);
      for (int i = 800; i >= 200; i--)
      {
        tone(7, i);
        delay(10);
      }
    }
    
    

    有源蜂鸣器实验

    
    int buzzerPin = 7;
    void setup()
    {
      pinMode(buzzerPin, OUTPUT);
      digitalWrite(buzzerPin, LOW);
    }
    void loop()
    {
      digitalWrite(buzzerPin, LOW);
      delay(1000);
      digitalWrite(buzzerPin, HIGH);
      delay(1000);
    }
    
    

    3.实验现象

    无源蜂鸣器发出悠长的声音,
    有源蜂鸣器发出滴滴的声音,

    展开全文
  • 无源蜂鸣器与有源蜂鸣器的区别

    万次阅读 2019-10-12 17:15:02
    一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。...从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两...

    一、有无震荡源

    无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。

    二、价格不同

    有源蜂鸣器往往比无源蜂鸣器贵,就是因为里面多个震荡电路。

    三、高度不同

    从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚郡朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。

    四、万用表测电阻区别用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 "+"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。

    同时有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。

    五、优点不同

    (1)无源蜂鸣器的优点是:

    1、便宜;

    2、声音频率可控,可以做出“多来米发索拉西”的效果;

    3、在一些特例中,可以和LED复用一个控制口。

    (2)有源蜂鸣器的优点是:程序控制方便。

    参考资料:百度百科—有源蜂鸣器

    百度百科—无源蜂鸣器

    展开全文
  • 文章主要介绍了AVR单片机驱动无源蜂鸣器的过程
  • 1.初学者的坑上一讲的代码单片机一上电无源蜂鸣器就不停鸣叫比较吵,那么我们有没有办法让它规定响多久就可以停止不叫了呢。首先我们知道要想让无源蜂鸣器持续响,那么P1.6就要以一定的时间间隔(也可叫一定频率)不停...

    1.初学者的坑

    上一讲的代码单片机一上电无源蜂鸣器就不停鸣叫比较吵,那么我们有没有办法让它规定响多久就可以停止不叫了呢。首先我们知道要想让无源蜂鸣器持续响,那么P1.6就要以一定的时间间隔(也可叫一定频率)不停的高低电平切换。

    复习了前两讲的内容之后,我们动手自己写一个让无源蜂鸣器响一小段时间然后又不响一段时间,接着又响一小段时间的循环。这就类似于点亮一盏灯一段时间,熄灭一盏灯一段时间的循环。

    这时初学者开始得意自己学过LED闪烁,于是就自己给自己出了道题目,让蜂鸣器响一下之后,保持不响的状态1秒钟,之后又响一下,又保持1秒不响这样循环下去,于是他们在while(1)里面这样写

    0a55a3605430cf53948dc85527e027e2.png

    代码下进去发现蜂鸣器没响,只是听到隔1秒就“咔”的声音。初学者犯这样的错误是因为还没认真思考过代码控制IO端口输出的状态。

    2.图解

    我们上一讲代码的while(1)里波形的实现是这样的

    f176086f1e7b33df5fca8c23aa80a285.png

    而本讲上图的代码中的while(1)里却是这样的波形

    5f7a9c4baca82c60484c10ad62073a35.png

    这样就达不到人家无源蜂鸣器驱动的条件了,初学者犯这样的错误是因为还没能很细致的去一条条代码分析,我们要做到看一条代码记住此时的IO端口输出的状态,然后再分析下一条代码,这样才能系统的去了解程序和硬件执行的关系。

    3.题目分析

    上一讲无源蜂鸣器能发声是因为在死循环里这些方波持续的时间无限长,所以无源蜂鸣器就会一直响。那我们要让它响一段时间,就让这个方波持续着这段时间;然后把IO端口电平固定住不发生改变,无源蜂鸣器没有脉冲信号所以就不响了。这时我们再延时1秒,在这一秒里无源蜂鸣器不会响,过了这一秒之后再让IO端口持续输出一段方波时间,这时就可以再次弄响无源蜂鸣器,就这样死循环下去也就达到自己想的那个题目的要求了。

    5e3c720714c68bb5d8a008bf0a341edc.png

    4.代码#include 

    sbit BEEP = P1^6;

    void delay_ms(unsigned int x)

    {

    unsigned int i,j;

    if(x==1000)

    {

    for(i=0;i<19601;i++)//延时1s

    {

    for(j=5;j>0;j--);

    }

    }

    else while(x--)for(j=115;j>0;j--);

    }

    void main()

    {

    unsigned int i,time;

    while(1)

    {

    for(time=0;time<800;time++)//800决定鸣叫的时长

    {

    BEEP=!BEEP;

    for(i=0;i<30;i++);//这里改为30延时长一点把鸣叫音调调低一些

    }

    delay_ms(1000);//延时1s

    }

    }

    展开全文
  • 本文主要讲了无源蜂鸣器驱动电路图,希望对你的学习有所帮助。
  • 这里的有源和无源的“源”是指的是“震荡源”,即有源蜂鸣器内部带震荡源,只要通电就可以发出声音,而无源蜂鸣器需要用方波驱动才可以发出声音。 区分 看外观 : 如果将两种蜂鸣器的引脚均朝上放置时,可以看出有...
  • 并不是拿来一个蜂鸣器就可以使用的,还有有源和无源的分别,该文档就是高速你有源和无源蜂鸣器的区别。
  • 15无源蜂鸣器

    2021-01-19 21:53:48
    蜂鸣器按其是否带有信号源又分为有源蜂鸣器和无源蜂鸣器。 有源蜂鸣器的内部装有集成电路,不需要音频驱动电路,只需要接通直流电源就能直接发出声响;而无源蜂鸣器只有外加音频驱动信号才能发出声响。 2、无源蜂鸣...
  • 有源蜂鸣器和无源蜂鸣器的“源”指的不是电源,而是震荡源。 有源蜂鸣器内部带震荡源,通电就会叫。 无源蜂鸣器不带震荡源,必须用一定频率的方波(常见2K到5K)驱动。 有源蜂鸣器通常比无源的贵。 用万用表电阻...
  • 无源蜂鸣器程序调试

    2015-07-15 14:11:32
    基于51单片机的无源蜂鸣器调试,模拟PWM。
  • arduino_无源蜂鸣器.rar

    2021-09-13 11:23:56
    arduino_无源蜂鸣器.rar
  • 使用无源蜂鸣器播放欢乐颂,程序使用乐谱编辑软件制作
  • 无源蜂鸣器实验

    2020-10-04 09:25:05
    无源蜂鸣器实验
  • 无源蜂鸣器: 有源蜂鸣器: 注:可以看到底部有绿色电路板的是无源蜂鸣器,底本是黑胶的为有缘蜂鸣器 万用表电阻档检测 无源蜂鸣器:发出咔、咔声的且电阻只有8Ω(或16Ω)。 有源蜂鸣器:发出持续声音的...
  • 使用AT89C51单片机,无源蜂鸣器,以及LED灯。AT89C51单片机提供定时器用于产生特定的具有一定有规律的频率的方波,从而驱动蜂鸣器,使得蜂鸣器发出声响,频率与音乐的音调相对应。同时带有proteus仿真,以备代码调试...
  • ”作为延时0.125ms,本节的单片机IO端口为开发板中的P1.6,无源蜂鸣器的硬件连接因为不像LED那样都接了很多其他器件来初始化,所以本节的代码就显得相当简短,下载进开发板蜂鸣器就一直鸣叫了#include sbit BEEP ...
  • 1.联系生活我们已经学会控制无源蜂鸣器鸣叫的时间,那么作为本章最后一讲,联合我们学过的LED章节知识,写一个用开发板实现一个生活常见现象的代码,比如常见机器报警时,灯亮的时候蜂鸣器就响,灯灭的时候就不响,...
  • 无源蜂鸣器弥补了有源蜂鸣器缺点,但问题是无源蜂鸣器需要PWM驱动。在系统的设计中,微控制器的PWM资源往往是比较紧张的,同时使用PWM驱动也加大了软件开发的难度。接下来笔者将引领大家学习如何设计一个无需PWM也能...
  • 无源蜂鸣器唱生日歌

    2015-08-07 16:40:04
    keil开发环境,使用c语言,开发51单片机使无源蜂鸣器唱生日歌
  • 有源蜂鸣器和无源蜂鸣器,这里的有“源”不是电源,而是震荡源, 有源蜂鸣器内部带有震荡源,所以有源蜂鸣器只要通电就会叫。 无源蜂鸣器内部不带震荡源,直接用直流电是驱动不起来的,需要 2K-5K 的方波去驱动 ...
  • 今天来讲解如何让一个无源蜂鸣器响起来。 首先我们要了解蜂鸣器的种类,蜂鸣器分为无源和有源两种。 那么何为有源,何为无源? 有源在这里指的是: 蜂鸣器内部包含振荡电路。 无源指的是:蜂鸣器内部不包含振荡...
  • 无源蜂鸣器发声

    2015-05-11 23:48:11
    无源蜂鸣器发声程序,初学作品,代码简单,仅以此入门DSP,不喜勿喷。
  • 有源蜂鸣器与无源蜂鸣器的驱动方式详解(精华版) http://1573439134.spaces.eepw.com.cn/articles/article/item/175604 有源蜂鸣器与无源蜂鸣器的驱动方式:  注意:这里的“源”不是指电源,而是指震荡源。 ...
  • Arduino 无源蜂鸣器警报声 PWM的IO口 Tone函数输出频率

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,390
精华内容 556
关键字:

无源蜂鸣器