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

QQ登錄

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

搜索
查看: 3930|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)PWM要做到快速關(guān)斷,如何做?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
最近做一個(gè)小項(xiàng)目,用到了STC的一個(gè)單片機(jī),功能如下:
用PWM輸出調(diào)節(jié)LED燈的亮度。在STC的燒錄軟件上下了個(gè)例程,改改后就能達(dá)到效果,調(diào)節(jié)起來(lái)沒(méi)有問(wèn)題,
現(xiàn)需要增加一個(gè)功能,:在保持亮度的前提下,要快速的開(kāi)或關(guān),類(lèi)似做閃燈的效果,但PWM的亮度要保持不變。
請(qǐng)問(wèn)各位,如何做?pwm有專(zhuān)用的位來(lái)控制開(kāi)關(guān)的嗎?最好用軟件來(lái)實(shí)現(xiàn)。求指點(diǎn)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2021-8-9 17:29 | 只看該作者
硬件PWM還是軟件PWM?
回復(fù)

使用道具 舉報(bào)

板凳
ID:959678 發(fā)表于 2021-8-9 17:53 | 只看該作者
關(guān)斷具體是指什么?是直接沒(méi)有PWM輸出了嘛?那就直接停止輸出就好了啊?具體看你PWM怎么實(shí)現(xiàn)的,用TIM就關(guān)TIM,用IO就拉IO

亮度不變,你可以提高PWM頻率來(lái)偽裝不變吧

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:401564 發(fā)表于 2021-8-9 18:46 | 只看該作者
有的STC有專(zhuān)門(mén)的CR位控制PWM的開(kāi)關(guān),功能就像定時(shí)器的TR位一樣,你自己開(kāi)關(guān)就可以
有的STC單片機(jī)在PWM設(shè)有翻轉(zhuǎn)寄存器,你可以通過(guò)對(duì)應(yīng)在寄存器控制高電平或者低電平
可以用定時(shí)器來(lái)產(chǎn)生閃燈需要的時(shí)間,時(shí)間到了就控制PWM,這可以達(dá)到某個(gè)亮度PWM閃燈的效果了
這STC的PWM功能在數(shù)據(jù)手冊(cè)上可以說(shuō)是洋洋灑灑的一大堆,乍一看什么都不會(huì),但畢竟你是做項(xiàng)目的,十幾個(gè)頁(yè)面的數(shù)據(jù)手冊(cè)是肯定要認(rèn)真看一下的,用不了你多長(zhǎng)時(shí)間的

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2021-8-9 18:47 | 只看該作者
按這波形編程就是你想要的效果


評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:959690 發(fā)表于 2021-8-9 18:57 | 只看該作者
軟件PWM的話(huà),個(gè)人認(rèn)為樓主可以通過(guò)使用一個(gè)開(kāi)關(guān)中斷來(lái)實(shí)現(xiàn)對(duì)pwm值的清除來(lái)實(shí)現(xiàn)對(duì)燈亮度的熄滅,然后將先前的pwm值保存在一個(gè)變量中,在再次按下按鍵時(shí)重新賦值
回復(fù)

使用道具 舉報(bào)

7#
ID:451718 發(fā)表于 2021-8-9 19:01 | 只看該作者
首先要搞清楚PMW的脈寬值,決定了燈光的亮度;
然后通過(guò)改變PMW的脈寬值,你就可以改變燈光亮度了;當(dāng)PMW脈寬減到0或者一個(gè)零界點(diǎn)的時(shí)候,燈就不會(huì)亮了。
最后,你只需要搞明白,如何在PMW輸出為某個(gè)值時(shí),直接關(guān)掉中斷然后把輸出端口置0,這時(shí)燈就滅了。重新開(kāi)中斷,PMW輸出仍然是關(guān)掉瞬間的那個(gè)值,也就是燈光亮度不會(huì)變。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:497468 發(fā)表于 2021-8-9 19:15 | 只看該作者
lkc8210 發(fā)表于 2021-8-9 17:29
硬件PWM還是軟件PWM?

硬件PWM   
回復(fù)

使用道具 舉報(bào)

9#
ID:497468 發(fā)表于 2021-8-9 19:17 | 只看該作者
elmagnifico51 發(fā)表于 2021-8-9 17:53
關(guān)斷具體是指什么?是直接沒(méi)有PWM輸出了嘛?那就直接停止輸出就好了�。烤唧w看你PWM怎么實(shí)現(xiàn)的,用TIM就關(guān)T ...

關(guān)斷就是把燈滅掉,相當(dāng)于在PWM上面裝個(gè)開(kāi)關(guān),外部觸發(fā)它開(kāi)和關(guān), 有信號(hào)就開(kāi),沒(méi)信號(hào)就關(guān),開(kāi)關(guān)的速度要能達(dá)到1KZ
回復(fù)

使用道具 舉報(bào)

10#
ID:123289 發(fā)表于 2021-8-9 20:13 | 只看該作者
直接下令判斷即可
回復(fù)

使用道具 舉報(bào)

11#
ID:959346 發(fā)表于 2021-8-9 23:13 | 只看該作者
問(wèn)題不是太明確是下面2種情況的哪種:
1 如果只是要關(guān)閉PWM,直接寫(xiě)對(duì)應(yīng)的寄存器即可。如果使用庫(kù)的,找對(duì)應(yīng)的開(kāi)關(guān)函數(shù)即可。
2 如果是按下開(kāi)關(guān)后的響應(yīng)時(shí)間,那就需要看你程序的響應(yīng)時(shí)間了,一般是減少延時(shí)函數(shù),將主循環(huán)的最大響應(yīng)周期控制在你能接受的時(shí)間內(nèi),如果做不到,就將觸發(fā)方式做成中斷觸發(fā),在中斷內(nèi)關(guān)閉了。

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

12#
ID:497468 發(fā)表于 2021-8-11 18:01 | 只看該作者
感謝各位,脈寬調(diào)整亮度,這個(gè)我已經(jīng)實(shí)現(xiàn)了,我現(xiàn)在用的是STC12C5608AD 它有4路硬件PCA/PWM,      現(xiàn)在關(guān)于關(guān)斷的問(wèn)題,Y_G_G ,robinsonlin 二位的方法我會(huì)去測(cè)試,因?yàn)橐_(dá)到1KHZ,程序的掃描期就不能大于1MS,  如果用中斷來(lái)控制,如何判斷觸發(fā)信號(hào)結(jié)束呢  我看了這個(gè)IC的資料,只有下降沿觸發(fā)和低電平觸發(fā),   我現(xiàn)在觸發(fā)中斷了,執(zhí)行我要的關(guān)燈命令,當(dāng)觸發(fā)結(jié)束了,我如何判斷,再執(zhí)行亮燈呢?我用INT0,和1做外部觸發(fā)。
回復(fù)

使用道具 舉報(bào)

13#
ID:892737 發(fā)表于 2021-8-11 18:07 | 只看該作者
親身體驗(yàn),最近在做學(xué)校校內(nèi)賽,硬件pwm關(guān)斷的比較快,使用軟件的話(huà)電機(jī)會(huì)繼續(xù)運(yùn)作一小會(huì)
回復(fù)

使用道具 舉報(bào)

14#
ID:959221 發(fā)表于 2021-8-11 19:08 | 只看該作者
用定時(shí)器,控制PWM啟動(dòng)和關(guān)閉.定時(shí)器控制閃燈頻率,PWM控制亮度
回復(fù)

使用道具 舉報(bào)

15#
ID:814525 發(fā)表于 2021-8-11 19:32 | 只看該作者
看看STC15的指令適不適合
PCA_PWM0 &= ~3;                                //PWM0正常輸出
PCA_PWM0 |=  3;                                //PWM0一直輸出0
回復(fù)

使用道具 舉報(bào)

16#
ID:497468 發(fā)表于 2021-8-16 17:25 | 只看該作者
感謝各位,現(xiàn)在調(diào)試的差不多了,感覺(jué)還可以,  因?yàn)橛卸嗦稰WM,用關(guān)CR的方法不行,會(huì)把全部關(guān)斷,我試過(guò)用PCA_PWM2 = 0x00;   將計(jì)數(shù)器和相對(duì)應(yīng)的PWM關(guān)掉,實(shí)際應(yīng)用中關(guān)不掉,最后用個(gè)笨辦法,關(guān)斷時(shí)直接用PWM_Adj2(255); 直接用來(lái)做關(guān)斷,效果挺好,  反應(yīng)迅速。  關(guān)于外部觸發(fā)的方法,我沒(méi)有用中斷了,因?yàn)橹袛嚅_(kāi)了沒(méi)辦法關(guān),我現(xiàn)在就直接用I0檢測(cè),if(!trigger1) M31=1;唯一的缺點(diǎn)就是只能達(dá)到100HZ左右,在實(shí)際應(yīng)用中也夠用了,(觸發(fā)信號(hào)由客戶(hù)提供,他只給一個(gè)電壓,觸發(fā)時(shí)間不定的,所 以不能按固定的頻率用定時(shí)器去做,)
另外,原來(lái)一直用STC提供的9-16位PWM的程序在做,發(fā)現(xiàn)在調(diào)節(jié)到最高或最低時(shí),有點(diǎn)失控,折騰了好久,將高位和低位都限掉也不好用,現(xiàn)直接用8位 的程序,效果很好,比較穩(wěn)定,好長(zhǎng)的彎路,
回復(fù)

使用道具 舉報(bào)

17#
ID:420836 發(fā)表于 2021-8-17 07:16 | 只看該作者
在軟件中,將占空比設(shè)置為對(duì)應(yīng)零輸出PWM的值,同時(shí)禁用功率級(jí)。
回復(fù)

使用道具 舉報(bào)

18#
ID:879348 發(fā)表于 2021-8-17 09:43 | 只看該作者
有些單片機(jī)存在關(guān)不停的問(wèn)題,設(shè)置0實(shí)際還有脈沖
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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