找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2871|回復(fù): 34
收起左側(cè)

單片機(jī)怎么使得無(wú)源蜂鳴器在鳴響的同時(shí),還能處理另外的程序?

  [復(fù)制鏈接]
ID:298743 發(fā)表于 2024-5-17 17:32 | 顯示全部樓層 |閱讀模式
用單片機(jī)定時(shí)器中斷來(lái)模擬產(chǎn)生PWM信號(hào),給到蜂鳴器工作,理論上來(lái)說(shuō)要個(gè)尖一點(diǎn)的聲音,我需要把一個(gè)周期定在兩微秒,單片機(jī)根本就執(zhí)行不了其他程序,如果開(kāi)高一級(jí)優(yōu)先級(jí)的中斷來(lái)處理重要的程序,蜂鳴器的聲音又會(huì)變
回復(fù)

使用道具 舉報(bào)

ID:879809 發(fā)表于 2024-5-17 20:09 | 顯示全部樓層
2微秒給無(wú)源蜂鳴器你是開(kāi)玩笑嘛?
回復(fù)

使用道具 舉報(bào)

ID:373388 發(fā)表于 2024-5-17 20:30 | 顯示全部樓層
聲波20-20KHz,超過(guò)這個(gè)范圍就聽(tīng)不到了,蜂鳴器頻率你定在1-2KHz就可以了
回復(fù)

使用道具 舉報(bào)

ID:891089 發(fā)表于 2024-5-17 22:58 來(lái)自觸屏版 | 顯示全部樓層
看大家都顧左右而言他,我直接給結(jié)論吧。這樣是不行的,蜂鳴器是需要連續(xù)pwm波的,無(wú)論是中斷還是上操作系統(tǒng),只要是單核的單片機(jī)都是會(huì)占用時(shí)間片的。建議看下esp32s2這款是雙核的,大概可以滿足你的要求。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2024-5-17 23:35 | 顯示全部樓層
傻乎乎的,用一個(gè)常鳴的蜂鳴器。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-5-17 23:36 | 顯示全部樓層
可以輸出時(shí)鐘信號(hào)
回復(fù)

使用道具 舉報(bào)

ID:192020 發(fā)表于 2024-5-18 09:11 | 顯示全部樓層
不用定時(shí)器,直接用PWM模塊輸出就好了
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2024-5-18 11:38 | 顯示全部樓層
常見(jiàn)的無(wú)源蜂鳴器其諧振頻率2000Hz左右,定時(shí)器中斷周期在200-250us較為合適。中斷程序占用的時(shí)間很少,實(shí)踐證明用在1T單片機(jī)上根本感覺(jué)不到影響其它程序運(yùn)行。
回復(fù)

使用道具 舉報(bào)

ID:628113 發(fā)表于 2024-5-18 11:39 | 顯示全部樓層
樓主本身想法并沒(méi)有問(wèn)題, 用 定時(shí) 中斷控制無(wú)源蜂鳴器的PWM .
只要注意兩點(diǎn)就OK:
1. CPU 必須足夠快, 如果像 8Mhz 的低速CPU, 那基本上就干不了其他事情了。
2. 中斷沒(méi)必要如此頻繁, 估計(jì) 100us 中斷一次就足夠了。
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2024-5-18 17:38 | 顯示全部樓層
2微秒,500K,你確定能聽(tīng)到?
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 21:46 | 顯示全部樓層
xiaobendan001 發(fā)表于 2024-5-18 17:38
2微秒,500K,你確定能聽(tīng)到?

說(shuō)錯(cuò)了,是10微妙蜂鳴器反轉(zhuǎn)一次,確實(shí)能聽(tīng)到
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:11 | 顯示全部樓層
rundstedt 發(fā)表于 2024-5-17 20:09
2微秒給無(wú)源蜂鳴器你是開(kāi)玩笑嘛?

發(fā)錯(cuò)了,我定時(shí)的是10微妙,確實(shí)能聽(tīng)到聲音
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:12 | 顯示全部樓層
美琴的備胎 發(fā)表于 2024-5-17 22:58
看大家都顧左右而言他,我直接給結(jié)論吧。這樣是不行的,蜂鳴器是需要連續(xù)pwm波的,無(wú)論是中斷還是上操作系 ...

但是我看到別人的產(chǎn)品用的STC8八腳的芯片就做到了,六個(gè)定時(shí)器,其中一個(gè)定時(shí)器達(dá)到時(shí)間,蜂鳴器就會(huì)響,但是其他定時(shí)器還在定時(shí)
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:19 | 顯示全部樓層
yzwzfyz 發(fā)表于 2024-5-17 23:35
傻乎乎的,用一個(gè)常鳴的蜂鳴器。

沒(méi)看懂,我想控制能控制蜂鳴器的音量大小,用有源的不知道怎么控制,所以就用了無(wú)源的
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:20 | 顯示全部樓層
lkc8210 發(fā)表于 2024-5-17 23:36
可以輸出時(shí)鐘信號(hào)

輸出時(shí)鐘信號(hào)會(huì)不會(huì)比中斷IO口取反更消耗資源,因?yàn)橐徊粓?zhí)行時(shí)鐘信號(hào)的程序,蜂鳴器就不會(huì)響了,定時(shí)器還有一點(diǎn)點(diǎn)執(zhí)行其他程序的時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:21 | 顯示全部樓層
qq475878026 發(fā)表于 2024-5-18 09:11
不用定時(shí)器,直接用PWM模塊輸出就好了

PWM模塊不占用CPU資源嗎?我還要同時(shí)做另外的一些事情
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:26 | 顯示全部樓層
ppcbug 發(fā)表于 2024-5-18 11:39
樓主本身想法并沒(méi)有問(wèn)題, 用 定時(shí) 中斷控制無(wú)源蜂鳴器的PWM .
只要注意兩點(diǎn)就OK:
1. CPU 必須足夠快,  ...

100us聲音有點(diǎn)沉,沒(méi)有滴滴的聲音,我用的芯片是STC8H
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-19 22:27 | 顯示全部樓層
之所以用無(wú)源蜂鳴器主要是我想控制蜂鳴器音量的大小,但是現(xiàn)在看來(lái)好像也沒(méi)什么頭緒
回復(fù)

使用道具 舉報(bào)

ID:1121392 發(fā)表于 2024-5-20 01:17 | 顯示全部樓層
多任務(wù)系統(tǒng)
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2024-5-20 07:29 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 21:46
說(shuō)錯(cuò)了,是10微妙蜂鳴器反轉(zhuǎn)一次,確實(shí)能聽(tīng)到

那就是20us周期那樣也是50K了,如果結(jié)果是正確的,你能聽(tīng)到也牛逼了,不用搞這個(gè)了,有這天賦。
回復(fù)

使用道具 舉報(bào)

ID:458247 發(fā)表于 2024-5-20 08:52 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 22:27
之所以用無(wú)源蜂鳴器主要是我想控制蜂鳴器音量的大小,但是現(xiàn)在看來(lái)好像也沒(méi)什么頭緒

用快一點(diǎn)的stc單片機(jī),或者stc單片機(jī)主頻拉高點(diǎn)
回復(fù)

使用道具 舉報(bào)

ID:23640 發(fā)表于 2024-5-20 09:07 | 顯示全部樓層
1MS就可以達(dá)到1K的頻率,一般蜂鳴器最大聲音頻率是2~4K之間,假設(shè)是4K,那么時(shí)間就是250US
回復(fù)

使用道具 舉報(bào)

ID:192020 發(fā)表于 2024-5-20 09:07 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 22:21
PWM模塊不占用CPU資源嗎?我還要同時(shí)做另外的一些事情

PWM配好寄存器就運(yùn)行了,運(yùn)行期間CPU不參與的。
回復(fù)

使用道具 舉報(bào)

ID:23640 發(fā)表于 2024-5-20 09:12 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 22:26
100us聲音有點(diǎn)沉,沒(méi)有滴滴的聲音,我用的芯片是STC8H

你是用什么設(shè)備確定的100US?如果真是100US那就是10KHZ的頻率,那是非常尖銳的聲音了,最好用示波器/邏輯分析儀確認(rèn)下你的時(shí)間實(shí)際是多少?
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-5-20 09:16 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 22:20
輸出時(shí)鐘信號(hào)會(huì)不會(huì)比中斷IO口取反更消耗資源,因?yàn)橐徊粓?zhí)行時(shí)鐘信號(hào)的程序,蜂鳴器就不會(huì)響了,定時(shí)器還 ...

輸出時(shí)鐘信號(hào)零消耗主CPU
但是調(diào)不了聲音大小
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2024-5-20 09:31 | 顯示全部樓層
樓主實(shí)際測(cè)試一下波形吧,你現(xiàn)在的要求已經(jīng)打破了人耳能聽(tīng)到的聲音頻率范圍,打破了基本理論了
回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2024-5-20 09:55 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-19 22:21
PWM模塊不占用CPU資源嗎?我還要同時(shí)做另外的一些事情

硬件的pwm不太占用CPU,不過(guò)你10微秒產(chǎn)生的頻率太高,應(yīng)該是它的低次諧波發(fā)的聲音,跟40微秒是一樣的。
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2024-5-20 12:13 | 顯示全部樓層
qq475878026 發(fā)表于 2024-5-18 09:11
不用定時(shí)器,直接用PWM模塊輸出就好了

PWM模塊不是所有單片機(jī)都有此功能,具體見(jiàn)數(shù)據(jù)手冊(cè)
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-21 11:22 | 顯示全部樓層
yaosongjin 發(fā)表于 2024-5-20 09:12
你是用什么設(shè)備確定的100US?如果真是100US那就是10KHZ的頻率,那是非常尖銳的聲音了,最好用示波器/邏輯 ...

沒(méi)有這些設(shè)備,我是用定時(shí)器取反io口來(lái)模擬pwm的,應(yīng)該是比他高一級(jí)的定時(shí)器觸發(fā)中斷執(zhí)行程序,把頻率拉大了
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-21 11:24 | 顯示全部樓層
lkc8210 發(fā)表于 2024-5-20 09:16
輸出時(shí)鐘信號(hào)零消耗主CPU
但是調(diào)不了聲音大小

那好像有個(gè)想法,STC有多個(gè)PWM通道,是不是可以定義多個(gè)PWM輸出,然后根據(jù)變量不同,選擇不同的通道,那就可以輸出不同的PWM信號(hào),從而調(diào)節(jié)音量了吧
回復(fù)

使用道具 舉報(bào)

ID:192020 發(fā)表于 2024-5-22 15:16 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-5-21 11:24
那好像有個(gè)想法,STC有多個(gè)PWM通道,是不是可以定義多個(gè)PWM輸出,然后根據(jù)變量不同,選擇不同的通道,那 ...

別人說(shuō)的是時(shí)鐘信號(hào),你說(shuō)的PWM,雖說(shuō)一樣是方波但不是同一個(gè)東西啊。然后PWM本來(lái)就是可調(diào)的,沒(méi)必要說(shuō)弄多個(gè)PWM來(lái)實(shí)現(xiàn)可調(diào)
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-5-22 17:24 | 顯示全部樓層
qq475878026 發(fā)表于 2024-5-22 15:16
別人說(shuō)的是時(shí)鐘信號(hào),你說(shuō)的PWM,雖說(shuō)一樣是方波但不是同一個(gè)東西啊。然后PWM本來(lái)就是可調(diào)的,沒(méi)必要說(shuō)弄 ...

那搞錯(cuò)了,我還以為PWM和時(shí)鐘信號(hào)是一樣的東西
回復(fù)

使用道具 舉報(bào)

ID:79094 發(fā)表于 2024-5-23 00:32 | 顯示全部樓層
蜂鳴器 用 有源的 音量 可以加開(kāi)關(guān) 并聯(lián)電阻  或用三極管并聯(lián)電阻  主要看你用在什么地方
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2024-5-23 05:43 | 顯示全部樓層
lkc8210 發(fā)表于 2024-5-20 09:16
輸出時(shí)鐘信號(hào)零消耗主CPU
但是調(diào)不了聲音大小

A通道PWM輸出超聲波載波(占空比越高音量越高) B通道輸出頻率信號(hào),加個(gè)74HC08將超聲波PWM調(diào)制后就能控制音量。
回復(fù)

使用道具 舉報(bào)

ID:517951 發(fā)表于 2024-5-27 13:22 | 顯示全部樓層
蜂鳴器有2種, 一種是給電就叫. 一種是需要驅(qū)動(dòng)波形的, 音調(diào)可調(diào).  
按樓主說(shuō)的周期是2u秒, 那就是500khz, 人耳朵可聽(tīng)到的音頻是20khz~20hz. 即便電路正常工作, 人也聽(tīng)不到.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表