记录学习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$的值带入到程序中即可得到不同音符。
参考链接:
- FPGA之蜂鸣器播放音乐《花海》_蜂鸣器可以放出来好听的歌_南邮点灯工程师的博客-CSDN博客
- RoboMaster开发板C型嵌入式软件教程文档
- Markdown语法--Obsidian笔记_markdown obsidian-CSDN博客
- 日常使用obsidian的markdown语法_obsidian语法_苏阿苏阿的博客-CSDN博客
- 【精选】STM32CubeMx使用教程(五)—— 使用PWM控制蜂鸣器演唱孤勇者_stm32控制蜂鸣器唱歌_宝玺的博客-CSDN博客
- 【精选】stm32蜂鸣器播放音乐_quote6的博客-CSDN博客
问题记录:
1.调整重装载值和比较值时,未修改对应的定时器频率,导致蜂鸣器不发声或者声音很奇怪。已解决(菜狗问题)
2.从本地直接将obsidian生成的md文件发布到博客园会出现图片丢失的问题。(未解决)