Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

有源與無源蜂鳴器區別詳解:原理、識別、驅動電路與代碼示例

編輯:Linux 教學

核心區別

特性有源蜂鳴器無源蜂鳴器
內部結構內建震蕩電路無震蕩源,需外部方波驅動
驅動方式直流電壓直接觸發2k–5kHz 方波(PWM)
價格較貴(含震蕩電路)較便宜
聲音控制單一頻率頻率可控,可播放音樂
IO 復用難以與 LED 共用可與 LED 共用一個控制腳

外觀識別

  • 高度:有源 ~9 mm,無源 ~8 mm。
  • 引腳朝上時:有綠色 PCB 板露出為無源;黑膠封裝為有源。
  • 萬用表 Rx1 檔測試:黑筆接 +,紅筆觸碰另一腳——
    • 發出「咔咔」聲且電阻 8/16 Ω → 無源
    • 持續鳴叫且電阻數百 Ω → 有源

內部原理

壓電式

多諧振蕩器 → 阻抗匹配器 → 壓電陶瓷片(鈦酸鉛/鈮酸鉛)+ 共鳴箱。工作電壓 1.5–15 V,輸出 1.5–2.5 kHz。

電磁式

振蕩器 → 電磁線圈 + 磁鐵 → 振動膜片。電流經線圈產生磁場,膜片週期性振動發聲。

驅動電路與代碼

有源蜂鳴器(低電平觸發典型電路)

MCU IO ----|>|---- 蜂鳴器 + 極
蜂鳴器 - 極 ---- VCC
// IO 輸出低電平導通,高電平截止

無源蜂鳴器(PWM 驅動)

MCU PWM 輸出 ---- 電阻 (1k) ---- 三極管基極
三極管集電極 ---- 蜂鳴器一端
蜂鳴器另一端 ---- VCC
三極管發射極 ---- GND

通用蜂鳴器驅動代碼片段 (C)

volatile uint8_t beep_times, beep_long, beep_count;
volatile uint8_t buzzer_state;

void beep_start(uint8_t times, uint8_t length) {
    beep_times = 2 * times - 1;   // 包含靜默間隔
    beep_long  = length;
    beep_count = 0;
    buzzer_state = 1;
}

void beep_timer_isr(void) {       // 放入 1ms 定時器中斷
    if (beep_count >= beep_long && beep_times > 0) {
        beep_count = 0;
        beep_times--;
        buzzer_state ^= 1;        // 翻轉輸出
    } else {
        beep_count++;
    }
    if (beep_times == 0) buzzer_state = 0;
    BUZZER_PIN = buzzer_state;
}

選型建議

  • 簡單報警、按鍵提示音 → 有源(程序極簡單)。
  • 需播放旋律、頻率可調、IO 緊張 → 無源(配合 PWM/定時器)。

總結

「源」指震蕩源而非電源。有源即插即用,無源靈活可控。根據成本、功能、IO 資源綜合選型。

Copyright © Windows教程網 All Rights Reserved