当前位置: 首页 > news >正文

STM32-PWM驱动无源蜂鸣器

硬件介绍

本期使用到的硬件是一个无源蜂鸣器模块。讲到无源蜂鸣器,对应的还有一种有源蜂鸣器,我们来看看它们的区别。

无源蜂鸣器的特点

  1. 内部不带震荡源,所以如果用直流信号无法令其鸣叫。
  2. 必须用2K~5K的方波去驱动
  3. 声音频率可控,可以做出“多来米发索拉西”的效果。
  4. 在一些特例中,可以和LED复用一个控制口。

有源蜂鸣器的特点

  1. 有源蜂鸣器内部带震荡源,所以只要一通电就会叫
  2. 程序控制方便,单片机一个高低电平就可以让其发出声音,而无源蜂鸣器却做不到。
  3. 无法发出“多来米发索拉西”的效果。

控制原理

模块原理图简介

接口说明

  • P1:是外部控制信号的输入接口(比如连接单片机的 GPIO 引脚)。
    • 引脚 1 接 VCC(电源正极,一般为 3.3V/5V ,给控制逻辑供电)。
    • 引脚 2 是控制信号输出端:通过输出高低电平,决定三极管 Q1 的状态。
    • 引脚 3 接 GND(电源地,提供回路)。

限流电阻(R1)

  • R1(1kΩ):作用是限制三极管基极电流,保护三极管 Q1 不被过大电流损坏。当 P1 引脚 2 输出高电平时,电流从 VCC → P1-1 → P1-2 → R1 → Q1 基极,R1 起到限流作用,让基极电流处于安全范围。

三极管(Q1,S8550)

  • Q1(S8550):是 PNP 型三极管,作为 “电子开关” 使用。
    • 导通条件:当 P1 引脚 2 输出低电平时,三极管基极电压低于发射极(Q1 发射极接 VCC ),满足 PNP 导通要求,Q1 导通。
    • 截止条件:当 P1 引脚 2 输出高电平时,基极电压接近 VCC ,三极管截止。

无源蜂鸣器(B1)

  • B1:是无源蜂鸣器(需要外部输入一定频率的方波驱动才能发声)。
    • 当 Q1 导通时,电流路径:VCC → Q1 发射极→ Q1 集电极 → B1 → GND ,此时如果控制信号(P1-2)输出一定频率的方波(高低电平交替变化),蜂鸣器会因电流交替通断、内部压电陶瓷片 / 电磁线圈振动而发声。
    • 若控制信号是固定电平(持续高或低),蜂鸣器只会有短暂 “滴答” 声(因只有一次通断),无法持续发声。
占空比在此处对音量有一定量的影响,在相同频率下,占空比的变化会轻微影响蜂鸣器的平均功率输入,从而对音量产生一定调节作用:
  1. 占空比越高(高电平时间越长),单位时间内输入的能量越多,音量可能略大;
  2. 占空比越低,输入能量越少,音量可能略小。但这种影响远不如频率是否匹配谐振频率,或驱动电压大小对音量的影响显著,因此占空比通常不是调节音量的主要手段。

代码实现

STM32Cubemx配置

无源蜂鸣器连接到STM32的PA1引脚,对应上定时器TIM2的通道2

PWM脉冲频率计算

  1. 系统时钟频率72Mhz / 72-1(PSC) = 1Mhz
  2. 1M / 500-1(ARR) = 2000Hz

beep.c

#include "beep.h"
extern TIM_HandleTypeDef htim2;void Beep_On()
{HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
}void Beep_Off()
{HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
}

beep.h

#ifndef __BEEP_H
#define __BEEP_H#include "main.h"void Beep_On();
void Beep_Off();#endif

http://www.lryc.cn/news/579652.html

相关文章:

  • 使用numpy的快速傅里叶变换的一些问题
  • AI+软件测试——03软件的缺陷及管理
  • 一、Docker:一场颠覆应用部署与运维的容器革命
  • 数学建模_时间序列
  • 月更!2025年7月鼠标入门及选购推荐(含无线鼠标、游戏鼠标)
  • 百度文心大模型 4.5 系列全面开源 英特尔同步支持端侧部署
  • 两个PHY芯片之间,是如何连接进行通信的?
  • Python Pytest-Benchmark详解:精准性能测试的利器
  • 两个手机都用同个wifi,IP地址会一样吗?如何更改ip地址
  • 禁止ifrmare标签上的文件,实现自动下载功能,并且隐藏工具栏
  • 搭建VirtualBox-6+vagrant_2+docker+mysql5.7的步骤
  • 代码随想录算法训练营第四十四天|动态规划part11
  • 人形机器人九大发展趋势预判
  • EXCEL动态表格
  • Python 爬虫实战 | 国家医保
  • 【字节跳动】数据挖掘面试题0007:Kmeans原理,何时停止迭代
  • 深度解析:Java内部类与外部类的交互机制
  • BitsAndBytesConfig量化及注意事项
  • Mysql锁机制与优化实践以及MVCC底层原理剖析
  • Unity单元测试框架在keil环境下的移植教程
  • Unity3D 文件夹注释工具
  • CTF Web的数组巧用
  • 互联网大厂Java面试实录:Spring Boot与微服务在电商场景中的应用
  • STM32-第二节-GPIO输入(按键,传感器)
  • Linux基本指令(下)
  • 建设工程停工损失从哪些方面取证,如何取证?
  • 经典灰狼算法+编码器+双向长短期记忆神经网络,GWO-Transformer-BiLSTM多变量回归预测,作者:机器学习之心!
  • 在鸿蒙(HarmonyOS)中安装 .app 格式的应用包(即 HAP 或 APP 文件),可以通过以下方法实现
  • 服务器如何配置SSH密钥登录提高安全性?
  • 基于Anything LLM的本地知识库系统远程访问实现路径