【STM32 基础实验蜂鸣器发声】
文章目錄
- 一、認識蜂鳴器
- (1)蜂鳴器
- (2)蜂鳴器分類
- 二、基于stm32f10c8t6 基礎實驗蜂鳴器發聲
- (1)本實驗蜂鳴器型號說明
- (2)蜂鳴器發聲原理
- (3)代碼部分
- (4)效果展示
- 三、總結與擴展
- 附上參考文獻鏈接與視頻鏈接出處
一、認識蜂鳴器
(1)蜂鳴器
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。
(2)蜂鳴器分類
BUZZER蜂鳴器的分類:
1、按其驅動方式的原理分,可分為:有源蜂鳴器(內含驅動線路,也叫自激式蜂鳴器)和無源蜂鳴器(外部驅動,也叫他激式蜂鳴器);
2、按構造方式的不同,可分為:電磁式蜂鳴器和壓電式蜂鳴器;
3、按封裝的不同,可分為:DIP BUZZER(插針蜂鳴器)和SMD BUZZER(貼片式蜂鳴器);
4、按電流的不同,可分為:直流蜂鳴器和交流蜂鳴器,其中,以直流最為常見壓電式蜂鳴器,用的是壓電材料,即當受到外力導致壓電材料發生形變時壓電材料會產生電荷。同樣,當通電時壓電材料會發生形變。
電磁式蜂鳴器,主要是利用通電導體會產生磁場的特性,用一個固定的永久磁鐵與通電導體產生磁力推動固定在線圈上的鼓膜。
由于兩種蜂鳴器發音原理不同,壓電式結構簡單耐用但音調單一,適用于報警器等設備。而電磁式由于音質好,所以多用于語音、音樂等設備。
二、基于stm32f10c8t6 基礎實驗蜂鳴器發聲
(1)本實驗蜂鳴器型號說明
筆者本次實驗用到的是有源蜂鳴器與無源蜂鳴器,見下圖所示:
有源蜂鳴器模塊:
無源蜂鳴器模塊:
(2)蜂鳴器發聲原理
有源蜂鳴器模塊低電平觸發,通過配置I/O口,給它低電平即可發聲。可見電路圖如下:
有源蜂鳴器電路圖:
無源蜂鳴器模塊,通過配置方波,方波的話可以聯想到PWM,使配置PWM占空比、頻率即可驅動發聲。可見電路圖如下:
無源蜂鳴器電路圖:
然后了解一下PWM
我們就以以STM32單片機為例,其IO口只能輸出高電平和低電平。
假設高電平為5V、低電平則為0V,那么要輸出不同的模擬電壓就要用到PWM。通過改變IO口輸出的方波的占空比,從而獲得使用數字信號模擬成的模擬電壓信號。
電壓是以一種脈沖序列被加到模擬負載上去的,接通時是高電平1,斷開時是低電平0。接通時直流供電輸出,斷開時直流供電斷開。通過對接通和斷開時間的控制,理論上來講,可以輸出任意不大于最大電壓值5V的模擬電壓。
比方說,占空比為50%那就是高電平時間一半,低電平時間一半。在一定的頻率下,就可以得到模擬的2.5V輸出電壓。那么75%的占空比,得到的電壓就是3.75V,如下圖所示。
也就是說,在一定的頻率下,通過不同的占空比即可得到不同大小的輸出模擬電壓,PWM就是通過這種原理實現數字模擬信號轉換的。
PWM應用
以經常使用的呼吸燈舉例。
LED呼吸燈本次實驗也使用了一顆LED來實現呼吸燈,襯托無源蜂鳴器的實驗現象,
一般人眼睛對于80Hz以上刷新頻率則完全沒有閃爍感,那么我們平時見到的LED燈,當它的頻率大于50Hz的時候,人眼就會產生視覺暫留效果,基本就看不到閃爍了,而是誤以為是一個常亮的LED燈。
由于頻率很高時看不到閃爍,占空比越大LED越亮,占空比越小LED越暗。所以,在頻率一定時,可以用不同占空比改變LED燈的亮度,使其達到一個呼吸燈的效果。
(3)代碼部分
有源蜂鳴器部分代碼:(用了一顆LED循環閃爍,表示正在跑程序)
beep.c
main.c
#include "stm32f10x.h" #include "beep.h" #include "delay.h" #include "led.h"int main() {BEEP_Init();delay_init(); LED_Init();while(1){shansuo();GPIO_SetBits(GPIOB,GPIO_Pin_8); delay_ms(500);GPIO_ResetBits(GPIOB,GPIO_Pin_8); delay_ms(500);} } // An highlighted block var foo = 'bar';無源蜂鳴器部分代碼:(用了一顆LED循環呼吸燈,表示正在跑程序)
pwm.c
main.c
#include "stm32f10x.h" #include "sys.h" #include "delay.h" #include "pwm.h"uint8_t i;int main(void) { delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);PWM_Init();while(1){for(i=0;i<=100;i++){PWM_SetCompare1(i);PWM_SetCompare2(i);delay_ms(20);}for(i=0;i<=100;i++){PWM_SetCompare1(100-i);PWM_SetCompare2(100-i);delay_ms(20);}} }(4)效果展示
(聲音可能刺耳,注意調節音量;聲音已做過處理)
實驗現象:有源蜂鳴器發聲鳴叫
有源蜂鳴器
實驗現象:無源蜂鳴器發聲鳴叫
無源蜂鳴器
三、總結與擴展
總結:
根據以上內容,學習有源蜂鳴器,跟LED類似還是容易理解的,給電信號驅動發聲。
無源蜂鳴器主要是應用PWM使能方波,驅動發聲。
針對可能出現的問題,說明一下:
(1)蜂鳴器模塊的觸發的電平與代碼對應
(2)蜂鳴器聲音小,可能是額定電壓或功率不夠,可適當提高電壓;還可能是硬件壞了的問題,或者銅暴露出來導致的短路。
所以要有信心一步步積累理論和實踐經驗,一起學習加油!
擴展:可通過有源蜂鳴器可以做警報、提醒,如聲光報警、人體紅外等實驗。無源蜂鳴器可以做鬧鈴、音樂等實驗。那么就分享到這,大膽嘗試實踐探索吧,歡迎討論。
附上參考文獻鏈接與視頻鏈接出處
鏈接: 參考PWM知乎
鏈接: 參考PWM視頻
鏈接: 有源蜂鳴器視頻
鏈接: 無源蜂鳴器視頻
鏈接: 源碼例程
提取碼:3232
總結
以上是生活随笔為你收集整理的【STM32 基础实验蜂鸣器发声】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器 怎样修改地域,云服务器 怎样修
- 下一篇: Flash Builder 4.6 序列