首页 > 其他分享 >STM32实现无源蜂鸣器唱歌

STM32实现无源蜂鸣器唱歌

时间:2023-11-09 23:11:05浏览次数:38  
标签:输出 蜂鸣器 高电平 STM32 无源 频率 占空比 PWM

记录学习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文件发布到博客园会出现图片丢失的问题。(未解决)

标签:输出,蜂鸣器,高电平,STM32,无源,频率,占空比,PWM
From: https://www.cnblogs.com/zouyinghui/p/17823100.html

相关文章

  • 最详细STM32,cubeMX 超声波测距
    这篇文章将详细介绍STM32使用cubeMX驱动超声波测距。@TOC前言实验材料:STM32F103C8T6开发板,HC-SR04超声波模块。所需软件:keil5,cubeMX,AiThinkerSerialTool串口助手。实验目的:了解STM32使用cubeMX驱动超声波。实验:超声波测距。一、超声波模块HC-SR04超声波测距模块可提......
  • STM32F407 LUA 串口代码传输进行功能热更新
    STM32F407LUA串口代码传输进行功能热更新1.首先放上LUA资源LUA2.整体思路创建keil工程--->移植lua--->补充相应功能3.移植LuaStep1正常解压即可只有这个文件有用Step2在这个文件夹里搜索,删掉这两个文件(这两个文件在stm32中不使用)剩余的文件按照添加BSP的流......
  • 1. 手动移植FreeRTOS V9.00到 Stm32F103C8T6
    记录移植过程,以便以后查看:1.使用cubeMAX配置一个工程a.选择单片机型号: b。设置SWD调试,选TIM4作为系统时钟,systick要用来跑freeRTOS c.NVIC默认使用Group4 配置GPIO,我这里配置了两个引脚,作为LED输出 d,RCC都选外部晶振 e。配置时钟树,HCLK72Mhz  f。project......
  • 给STM32装点中国风——华为LiteOS移植
    我都二手程序员好几个礼拜了!想给我的STM32来点“中国风”,装个华为LiteOS操作系统。在此之前,我也试过STM32CubeMX自带的FreeRTOS操作系统,不知是何缘故,用F103c8t6芯片时,FreeRTOS里的一个断言过不去。出师不利,决定换LiteOS试试,尽管移植LiteOS有些麻烦,不如STM32CubeMX生成......
  • (STM32)TIM
    TIM:定时器,定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断根据复杂度和应用场景分为:高级定时器、通用定时器、基本定时器三种类型 基本定时器:支持向上计数(0到1),只能选择内部的72MZ的时钟通用定时器、高级定时器:支持向上计数、向下面计数(1到0)、中央计数(0......
  • STM32 PWM控制LED流水灯 学习记录随笔
    代码部分#include"stm32f10x.h"                 //Deviceheader#include"Delay.h"intmain(void){   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//启用系统寄存器时钟,使能GPIOC组,并启动   GPIO_InitTypeDefGPIO_InitStructure;  ......
  • STM32驱动SIM900A保姆级调试日记
    外观在优信电子买的,比其它商铺价格略高,不过质量应该有保障引脚连接VCC_IN接5VGND接地RXD接MCU TXDTXD接MCURXD(mcu指的是单片机如STM32)因为我只是用来发短信,所以其它引脚不用接!如果需要打电话可能需要咪头和喇叭!但如果是仅仅需要电话做一个提醒的作用,也可以只接上述几个引脚!串......
  • stm32学习记录随笔23.11.3
    RCC外设时钟使能常用函数//标准库文件->stm32f10x_rcc.hvoidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewState);//RCC_AHB外设时钟控制voidRCC_APB2PeriphClockCmd(uint32_tRCC_APB2Periph,FunctionalStateNewState);//RCC_APB2外设时钟控制void......
  • 舵机驱动——STM32F407ZGT6探索者——HAL库
    舵机驱动——STM32F407ZGT6探索者——HAL库1、材料准备开发板:正点原子STM32F407ZGT6探索者舵机:SG90舵机线材分辨:褐色/红色/橘黄色——GND/VCC/PWM_signal与开发板接线:褐色/红色/橘黄色——GND/+5V/PF6(任选的PF6)2、知识准备2.1、舵......
  • (STM32)中断系统和外部中断
    中断系统:是执行和管理中断的逻辑结构外部中断:是众多能产生中断的外设之一中断:指的是中断源(中断通道),中断产生CPU暂停正在执行程序,去执行中断程序,然后返回。提高效率F1系列的STM32有68个中断源,不同系列需要看手册EXTI(外部中断)、TIM、ADC、USART、SPI、I2C、RTC等多个外设都会......