《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 電源技術(shù) > 設(shè)計(jì)應(yīng)用 > 利用MAXQ3210產(chǎn)生壓電信號
利用MAXQ3210產(chǎn)生壓電信號
摘要: MAXQ3210微控制器集成了一個壓電揚(yáng)聲器驅(qū)動器,以固定頻率驅(qū)動高音揚(yáng)聲器,。本應(yīng)用筆記演示了怎樣改動揚(yáng)聲器驅(qū)動器反饋單元,利用軟件來產(chǎn)生各種頻率信號,。
Abstract:
Key words :

引言

壓電蜂鳴器或揚(yáng)聲器使用壓電晶體單元,壓電晶體在加電時會出現(xiàn)輕微變形,,將電信號轉(zhuǎn)換為聲音,。晶體單元連在揚(yáng)聲器錐體或面板,當(dāng)施加快速變化的電壓時,,它會快速振動。這種振動激發(fā)出空氣中的聲波,,從而產(chǎn)生頻率基于電波頻率的音調(diào),。

早期的計(jì)算機(jī)和電子游戲使用壓電揚(yáng)聲器產(chǎn)生的各類聲音,,從單音、汽笛音到白噪聲等,。和早期相比,,個人計(jì)算機(jī)的聲音產(chǎn)生技術(shù)有了很大的進(jìn)步。今天,,系統(tǒng)即使增加了多通道,、數(shù)字聲音和音樂,以及基于MIDI的音樂合成器系統(tǒng),,仍然使用簡單的壓電揚(yáng)聲器,。汽車報警、煙霧探測器,、銷售點(diǎn)(PoS)終端,、小型電子玩具和游戲以及很多應(yīng)用都依靠壓電聲發(fā)生器來產(chǎn)生單音、大分貝報警音效,。

改動硬件驅(qū)動揚(yáng)聲器

對系統(tǒng)中的壓電揚(yáng)聲器增加硬件非常簡單,。

對于只需要一路頻率輸出的應(yīng)用,可以對壓電揚(yáng)聲器進(jìn)行優(yōu)化,,以一定的音頻振蕩,。通過加入反饋網(wǎng)絡(luò)和逆變器,揚(yáng)聲器在接通后以共振頻率開始自激振蕩,。這類網(wǎng)絡(luò)通常用于在煙霧探測器,、二氧化碳傳感器和安防系統(tǒng)中產(chǎn)生大分貝報警音。

Maxim的MAXQ3210微控制器集成了這類壓電揚(yáng)聲器驅(qū)動電路(圖1),。軟件界面非常簡單,,包括一個控制位,用于打開或者關(guān)斷揚(yáng)聲器,。輸出音的頻率和音量完全由壓電揚(yáng)聲器和反饋網(wǎng)絡(luò)元件決定,。

圖1. MAXQ3210微控制器的壓電音驅(qū)動電路
圖1. MAXQ3210微控制器的壓電音驅(qū)動電路

在軟件控制下迅速接通和關(guān)斷揚(yáng)聲器可以產(chǎn)生各種嘀噠、啁啾等聲音效果,,但是輸出頻率不變,。怎樣才能產(chǎn)生各種不同的輸出頻率呢?

為改變輸出頻率,必須去掉自動反饋環(huán)路,,直接通過端口引腳來控制揚(yáng)聲器輸出,。數(shù)字揚(yáng)聲器的輸入可以在固定電壓和地之間切換,微控制器的數(shù)字I/O引腳可直接驅(qū)動它,。根據(jù)壓電揚(yáng)聲器輸出大小和所需的分貝數(shù),,可能需要專門的驅(qū)動電路或者IC來處理壓電揚(yáng)聲器引腳的高壓,或者將大電流驅(qū)動到揚(yáng)聲器中,,以產(chǎn)生高音,。在這些情況下,,微控制器I/O引腳被用于打開或者關(guān)斷揚(yáng)聲器,設(shè)置輸出頻率,。I/O引腳不直接驅(qū)動壓電單元,。

MAXQ3210還可用于產(chǎn)生多個揚(yáng)聲器輸出頻率。反饋輸入引腳直接連接到器件的一個其他端口引腳上,。只要內(nèi)置揚(yáng)聲器逆變器能夠跟上端口引腳驅(qū)動的頻率,,按照合適的速率觸發(fā)端口引腳都可以產(chǎn)生所需的音調(diào)。

注意:本應(yīng)用筆記的源代碼可以下載(ZIP, 4.5kB),。

音樂合成器

為能夠產(chǎn)生簡單的音樂信號,,揚(yáng)聲器必須接通一段時間,然后關(guān)斷相同的時間,。產(chǎn)生的聲音頻率由下面的公式給出:

輸出頻率 = 1/(長周期 + 短周期)

為能夠產(chǎn)生一定時間長度的聲音,,需要計(jì)算進(jìn)行驅(qū)動的完整周期數(shù):

周期數(shù) = (聲音持續(xù)時間 × 輸出頻率)

以中C基本鋼琴音標(biāo)音頻為例。對這些頻率進(jìn)行調(diào)諧,,音符“中C的A”等于440Hz,。表1中列出的值是近似值。

表1. 音符和接近的聲音頻率

Note Frequency (Hz)
Middle C 261
C sharp/D flat 277
D 294
D sharp/E flat 311
E 330
F 349
F sharp/G flat 370
G 392
G sharp/A flat 415
A 440
A sharp/B flat 466
B 494
C (next octave up) 523


以一定頻率來接通和關(guān)斷MAXQ3210端口引腳最簡單的方法是使用軟件循環(huán),。使用微控制器的單周期指令執(zhí)行頻率來計(jì)算內(nèi)循環(huán)延時,,該頻率典型值為3.57MHz。

move HRNC, #1 ; Turn the piezoelectric horn driver on.

;; Play Middle C for one second.

   move    LC[1], #261       ; Outer loop counter = 261 cycles (1s * 261Hz)
middleC:
   move    PO0.0, #1         ; Switch output high.
   move    LC[0], #6839      ; Half period : (1/261Hz) / (1/3.57MHz) / 2
   djnz    LC[0], $          ; Decrement and jump, if not zero, to current 
                             ;    instruction.
   move    PO0.0, #0         ; Switch output low.
   move    LC[0], #6839      ; Half period : (1/261Hz) / (1/3.57MHz) / 2
   djnz    LC[0], $          ; Decrement and jump if not zero to current 
                             ;    instruction.
   djnz    LC[1], middleC    ; Decrement and jump, if not zero, to top of loop.

通過改變循環(huán)計(jì)數(shù)器LC[0]裝載的數(shù)值來改變輸出頻率(對應(yīng)于產(chǎn)生的音符),。通過改變循環(huán)計(jì)數(shù)器LC[1]裝載的數(shù)值來改變音符持續(xù)時間,。把這些代碼打包到一個簡單宏中,定義幾個常數(shù),,就很容易產(chǎn)生播放一小段音樂的代碼,。

#define NOTE_C     261
#define NOTE_C_SH  277
#define NOTE_D_FL  277
#define NOTE_D     294
#define NOTE_D_SH  311
#define NOTE_E_FL  311
#define NOTE_E     330
#define NOTE_F     349
#define NOTE_F_SH  370
#define NOTE_G_FL  370
#define NOTE_G     392

#define EIGHTH     1       ; 120 beats per minute, 4/4 time
#define QUARTER    2       ; 120 beats per minute, 4/4 time
#define QUARTERDOT 3       ; 120 beats per minute, 4/4 time
#define HALF       4       ; 120 beats per minute, 4/4 time
#define WHOLE      8       ; 120 beats per minute, 4/4 time

 

play macro note, duration
local L1, L2
   move    HRNC,  #1
   move    LC[1], #(note * duration / 8)
L1:
   move    PO0.0, #1         ; Switch output high.
   move    LC[0], #(1785000 / note)
   djnz    LC[0], $          ; Decrement and jump, if not zero, to current 
                             ;    instruction.
   move    PO0.0, #0         ; Switch output low.
   move    LC[0], #(1785000 / note)
   djnz    LC[0], $          ; Decrement and jump, if not zero, to current 
                             ;    instruction.
   djnz    LC[1], L1         ; Decrement and jump, if not zero, to top of loop.
   move    HRNC,  #1
   move    LC[1], #50        ; 50ms of silence
L2:
   move    LC[0], #3570      ; 1ms (inner loop)  
   djnz    LC[0], $
   djnz    LC[1], L2
endm

;; First 8 bars of Beethoven's "Ode to Joy"

   play    NOTE_E,     QUARTER
   play    NOTE_E,     QUARTER
   play    NOTE_F,     QUARTER
   play    NOTE_G,     QUARTER

   play    NOTE_G,     QUARTER
   play    NOTE_F,     QUARTER
   play    NOTE_E,     QUARTER
   play    NOTE_D,     QUARTER

   play    NOTE_C,     QUARTER
   play    NOTE_C,     QUARTER
   play    NOTE_D,     QUARTER
   play    NOTE_E,     QUARTER

   play    NOTE_E,     QUARTERDOT
   play    NOTE_D,     EIGHTH
   play    NOTE_D,     HALF

   play    NOTE_E,     QUARTER
   play    NOTE_E,     QUARTER
   play    NOTE_F,     QUARTER
   play    NOTE_G,     QUARTER

   play    NOTE_G,     QUARTER
   play    NOTE_F,     QUARTER
   play    NOTE_E,     QUARTER
   play    NOTE_D,     QUARTER



   play    NOTE_C,     QUARTER
   play    NOTE_C,     QUARTER
   play    NOTE_D,     QUARTER
   play    NOTE_E,     QUARTER

   play    NOTE_D,     QUARTERDOT
   play    NOTE_C,     EIGHTH
   play    NOTE_C,     HALF

可以縮小這一例子需要的代碼空間。只使用子程序(而不是解開的代碼宏)和查找表就可以產(chǎn)生音符值,。其基本原理相同,。

定時器驅(qū)動的音樂合成器

上面的代碼雖然非常簡單,但是要求微控制器犧牲其所有時間來產(chǎn)生音調(diào),。對于音樂賀卡等簡單應(yīng)用,,這樣簡單地使用微控制器是可以的。然而,,對于更復(fù)雜的應(yīng)用,,需要在后臺播放音樂,而微控制器去完成其他工作,。為完成這種雙重角色,,微控制器必須從周期性地開關(guān)端口引腳以產(chǎn)生某一音符這類工作中解放出來。

MAXQ3210集成了計(jì)數(shù)器/定時器功能。在一種模式下,,定時器可以在端口引腳上產(chǎn)生某一頻率的輸出波形,。利用這種模式,,將定時器輸出引腳連接至反饋輸入,,微控制器在音符開始時啟動定時器,在音符結(jié)束時關(guān)掉它,。

定時器還可以用于控制音符本身的持續(xù)時間,。MAXQ3210含有另一個長周期定時器,非常適合完成這一任務(wù),。通過在每一音符間隔開始產(chǎn)生一個中斷,,定時器查找預(yù)編碼的音符查找表,以更少的空間來編碼時間更長的音樂,。

結(jié)論

壓電音發(fā)生功能被用于大量的應(yīng)用中,,以產(chǎn)生音樂、報警等其他聲音效果,。采用集成了MAXQ3210等壓電揚(yáng)聲器驅(qū)動器的微控制器,,只需要很少的硬件和軟件開銷就能夠產(chǎn)生壓電音。集成的可編程定時器使得大部分音調(diào)發(fā)生功能都可以在后臺完成,,而微控制器能夠集中處理主要任務(wù),。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。

相關(guān)內(nèi)容