A. 蜂鳴器驅動電路的原理是什麼
蜂鳴器發聲原理是電流通過電磁線圈,使電磁線圈產生磁場來驅動振動膜發聲的,因此版需要一定的電權流才能驅動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路。S51增強型單片機實驗板通過一個三極體C8550來放大驅動蜂鳴器。
蜂鳴器的正極接到VCC(+5V)電源上面,蜂鳴器的負極接到三極體的發射極E,三極體的基級B經過限流電阻R1後由單片機的P3.7引腳控制,當P3.7輸出高電平時,三極體T1截止,沒有電流流過線圈,蜂鳴器不發聲;當P3.7輸出低電平時,三極體導通,這樣蜂鳴器的電流形成迴路,發出聲音。因此可以通過程序控制P3.7腳的電平來使蜂鳴器發出聲音和關閉。程序中改變單片機P3.7引腳輸出波形的頻率,就可以調整控制蜂鳴器音調,產生各種不同音色、音調的聲音。另外,改變P3.7輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小,這些都可以通過編程實驗來驗證。
B. 四種蜂鳴器驅動電路分析及疑問,求解答
圖1和圖3採用的是NPN型三極體驅動,圖2和圖4採用的是PNP型三極體驅動。
如圖所示,四種驅動蜂鳴器的電路。
採用圖1和圖3方,法驅動,蜂鳴器工作電壓可以隨便取,只要不超過管子的極限參數即可。
如圖1,採用這種方法驅動蜂鳴器,在用STC89C52的任何IO口控制,蜂鳴器都能響。採用這種方式接,蜂鳴器沒有圖3響。
如圖3,採用這種方法驅動蜂鳴器,只有使用P0口(P0由於內部沒有上拉電阻,在電路板上外接了1K的上拉電阻,其他IO口內部都有上拉電
阻)控制,蜂鳴器才會響,若採用其他IO口,雖然蜂鳴器兩側電壓能達到4.3V左右,但是電流卻只有1~2mA,根本無法驅動蜂鳴器。這是什麼
原因?當採用其他IO(內部有上拉電阻)控制時,通過測該口的電平發現是低電平。由電路可以分析,蜂鳴器驅動是應該是高電平驅動的。出
現這種原因,可能是B極拉低了電平值,導致電路根本無法工作。也許是跟單片機內部、外部的上拉電阻有關。有待查閱。
圖2和圖4兩種方式驅動都是可以的,任何IO口都能通過低電平驅動。但採用圖4的方式,流過蜂鳴器的電流比圖2的大。
C. 蜂鳴器電路工作原理設計是怎樣的
蜂鳴器電路的工作原理
蜂鳴器 電路原理圖使用SH69P43 為控制晶元,使用4MHz 晶振作為主振盪器。
PORTC.3/T0 作為I/O 口通過三極體Q2 來驅動蜂鳴器LS1,而PORTC.2/PWM0 則作為PWM 輸出口通過三極體Q1 來驅動蜂鳴器LS2。另外在PORTA.3 和PORTA.2 分別接了兩個按鍵,一個是PWM 按鍵,是用來控制PWM 輸出口驅動蜂鳴器使用的;另一個是PORT 按鍵,是用來控制I/O 口驅動蜂鳴器使用的。連接按鍵的I/O 口開內部上拉電阻。
先分析一下蜂鳴器。所使用的蜂鳴器的工作頻率是2000Hz,也就是說蜂鳴器的驅動信號波形周期是500μs,由於是1/2ty 的信號,所以一個周期內的高電平和低電平的時間寬度都為250μs。軟體設計上,將根據兩種驅動方式來進行說明。
a) 蜂鳴器工作原理:PWM 輸出口直接驅動蜂鳴器方式
由於PWM 只控制固定頻率的蜂鳴器,所以可以在程序的系統初始化時就對PWM 的輸出波形進行設置。
首先根據SH69P43 的PWM 輸出的周期寬度是10 位數據來選擇PWM 時鍾。系統使用4MHz 的晶振作為主振盪器,一個tosc 的時間就是0.25μs,若是將PWM 的時鍾設置為tosc 的話, 則蜂鳴器要求的波形周期500μs 的計數值為500μs/0.25μs=(2000)10=(7D0)16,7D0H 為11 位的數據,而SH69P43 的PWM
輸出周期寬度只是10 位數據,所以選擇PWM 的時鍾為tosc 是不能實現蜂鳴器所要的驅動波形的。
這里將PWM 的時鍾設置為4tosc,這樣一個PWM 的時鍾周期就是1μs 了,由此可以算出500μs 對應的計數值為500μs/1μs=(500)10=(1F4)16,即分別在周期寄存器的高2 位、中4 位和低4 位三個寄存器中填入1、F 和4,就完成了對輸出周期的設置。再來設置占空比寄存器,在PWM 輸出中占空比的實現是
通過設定一個周期內電平的寬度來實現的。當輸出模式選擇為普通模式時,占空比寄存器是用來設置高電平的寬度。250μs 的寬度計數值為250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2 位、中4 位和低4 位中分別填入0、F 和A 就可以完成對占空比的設置了,設置占空比為1/2ty。
以後只需要打開PWM 輸出,PWM 輸出口自然就能輸出頻率為2000Hz、占空比為1/2ty 的方波。
b) 蜂鳴器工作原理:I/O 口定時翻轉電平驅動蜂鳴器方式
使用I/O 口定時翻轉電平驅動蜂鳴器方式的設置比較簡單,只需要對波形分析一下。由於驅動的信號剛好為周期500μs,占空比為1/2ty 的方波,只需要每250μs 進行一次電平翻轉,就可以得到驅動蜂鳴器的方波信號。在程序上,可以使用TIMER0 來定時,將TIMER0 的預分頻設置為/1,選擇TIMER0 的始終為系統時鍾(主振盪器時鍾/4),在TIMER0 的載入/計數寄存器的高4 位和低4 位分別寫入00H 和06H,就能將TIMER0 的中斷設置為250μs。當需要I/O 口驅動的蜂鳴器鳴叫時,只需要在進入TIMER0 中斷的時候對該I/O 口的電平進行翻轉一次,直到蜂鳴器不需要鳴叫的時候,將I/O 口的電平設置為低電平即可。不鳴叫時將I/O 口的輸出電平設置為低電平是為了防止漏電。