STM32实现无源蜂鸣器唱歌

发布时间 2023-11-09 23:07:47作者: 食堂的猫2

记录学习stm32中实现小demo所涉及到的知识点

一、蜂鸣器发声原理

蜂鸣器分为有源和无源两种。

所谓的源,指的是其中内部的振荡源,有源蜂鸣器中的振荡器一般是[[多谐振荡器]],其原理就是模拟电路中RC振荡器的一般原理(放大电路、正反馈、相位差90°、稳压电路),有源蜂鸣器内部的振荡源频率是固定的,所以使用时不可调频,且输入的电信号必须是直流。

无源蜂鸣器没有内部振荡源,发声的基本原理是电磁感应,其内部的基本结构是一匝匝线圈以及一个微型扬声器。由于没有振荡源,且内部的主要结构是线圈,所以其工作时输入的电信号必须是交流,而不能是频率很低的直流(直流不能通过无负载的线圈,负责线圈会因为短路而被烧坏)。与有源蜂鸣器一样,无源蜂鸣器也必须使用放大电路来增大输入信号的功率。

图示为C板的蜂鸣器原理图(无源蜂鸣器)

![[Pasted image 20231108230345.png]]

二、PWM原理知识

PWM 即脉冲宽度调制是英文“Pulse Width Modulation”的缩写,简称脉宽调试。是利用微 处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信 到功率控制与变换的许多领域中。

![[Pasted image 20231108231736.png]]

一个周期内高电平的持续时间占总周期的比例成为占空比,通过修改占空比,可以改变输出 的等效模拟电压。例如输出占空比为 50%,频率为 10Hz 的脉冲,高电平为 3.3V.则其输出 的模拟效果相当于输出一个 1.65V 的高电平。此外 PWM 输出的频率也会影响最终的 PWM 输出效果,PWM 输出的频率越高,最终输出的“连续性”越好,越接近模拟信号的效果, 频率低则会增强离散性,最终的输出效果会有比较强的“突变”感。

PWM频率:是指一秒钟内从高电平时间在到低电平时间,再从低电平跳到高电平的瞬间次数,也就是**一秒钟内有多少个PWM的周期**。f = T / 1(HZ)。

PWM周期:是指一秒钟内从高电平时间在到低电平时间,T = f / 1(s)。

PWM占空比:是指一个周期内高电平时间和总时间的比值。

例如:PWM的周期为1ms,高电平时间为0.5ms,低电平时间为0.5ms,则频率就为1kHz,占空比就为百分之五十。
pwm的调节作用来源于对“占周期”的宽度控制,“占周期”变宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占周期”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降
也就是,在一定的频率下,通过不同的占空比即可得到不同的输出模拟电压,由此,我们可以通过控制PWM输出频率控制蜂鸣器发出不同音调。

三、乐谱知识以及原理转化

1.音调

 音阶分为中音、高音、低音,点在上面为高音,没有点为中音,点在下面为低音。

2.音长

简谱对应音阶下无横线为一拍,有单横线为半拍,双横线为1/4拍。音阶数字后有点加半拍音长,有横线加一拍。
详细可见:

【精选】stm32蜂鸣器播放音乐_quote6的博客-CSDN博客

可在网上查到音阶对应频率如下表

![[Pasted image 20231109200212.png]]

3.原理转化

通过调整定时器的频率和占空比,即可使蜂鸣器发出不同音阶和不同节拍的声音,实现上表中的音符,将这些音符组合起来就可以实现蜂鸣器播放音乐。
通过调整定时器频率来得到不同音符对应的不同频率。

$$
Tout = \frac{(arr+1)(psc+1)}{Tclk}

$$
$Tout$为执行周期,$arr$为自动重装载值,$psc$为预分频系数
若要得到音符的对应定时器频率 $f = \frac{1}{Tout}$ = 262(以低音1为例),$arr = 999$带入前述公式可得到$psc$,将$psc$的值带入到程序中即可得到不同音符。

参考链接:

  1. FPGA之蜂鸣器播放音乐《花海》_蜂鸣器可以放出来好听的歌_南邮点灯工程师的博客-CSDN博客
  2. RoboMaster开发板C型嵌入式软件教程文档
  3. Markdown语法--Obsidian笔记_markdown obsidian-CSDN博客
  4. 日常使用obsidian的markdown语法_obsidian语法_苏阿苏阿的博客-CSDN博客
  5. 【精选】STM32CubeMx使用教程(五)—— 使用PWM控制蜂鸣器演唱孤勇者_stm32控制蜂鸣器唱歌_宝玺的博客-CSDN博客
  6. 【精选】stm32蜂鸣器播放音乐_quote6的博客-CSDN博客

问题记录:

1.调整重装载值和比较值时,未修改对应的定时器频率,导致蜂鸣器不发声或者声音很奇怪。已解决(菜狗问题)
2.从本地直接将obsidian生成的md文件发布到博客园会出现图片丢失的问题。(未解决)