PWM的討論
1)PWM原理
2)
硬件實現PWM的原理
3)常用分離的PWMIC
4)常見帶PWM的MCU
5)MCU:PWM的應用問題:位數、精度、穩定度
6)常見的應用原理圖
7)總結對比表
在PWM方面我只是個初學者,還請所長和大俠們多多指教。
網友評論:在我之前的講述中,把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/20079114810449.pdf
網友評論:在我之前的講述中,把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/20079114946240.pdf
網友評論:發了好多次怎么傳不上來呢。郁悶。
在我之前的講述中,把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/200791141138402.pdf
網友評論:在我之前的講述中,把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/200791141338615.pdf
網友評論:在我之前的講述中,把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/20079114166268.pdf
網友評論:4)常見帶PWM的MCU
5)MCU:PWM的應用問題:位數、精度、穩定度
市場上常見超過10位的pwm價格又在.10元以內都有誰家的.想現實10位的DA
網友評論:之前,我把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/200791154412625.pdf
網友評論:我發了好幾次,為什么貼子發不上來呢???
網友評論:不是用蜂鳴器產生音樂,是揚聲器(俗名小嗽叭),理論上用PWM的確能講話的,效果應該跟"文曲星"
PC505的效果差不多,聽得出是電腦發聲,不是真人發聲。
看過一本PDA維修的書上列出MC68XX龍珠芯片做的PDA,就用PWM的輸出驅動三極管推動揚聲器發聲。這種應用現在都過時了。因為其效果實在太差。
網友評論:PWM作DA的確可行,見過別人的PCB板上有此設計,用PWM輸出濾波,再用
LM324進行幅度調整,就能輸出滿足需求的模擬量,用的是STC12系列單片機,我估計設計者是為了用這芯片的硬件PWM吧,才選擇它的。
網友評論:不過聲音的確很差。
PWM做DA的確可行,并且在低成本的方案中還很不錯。
我們公司的儀表輸出4-20mA就都是用PWM控制輸出的。
不過輸出電路并不是那么簡單,需要一個達林頓解法的兩個三極管,以及一個反饋控制用的運放。
不過這種做法有兩個缺點:
第一個是輸出響應速度不夠快
第二個是輸出存在較大的溫度漂移和時間漂移。
通常專用的DA芯片只有25ppm的漂移。而此電路我們目前做的最好的情況也大概有90ppm的漂移。
網友評論:在用單片機的pwm做A/D輸出時,總是感覺在濾波和驅動能力方面有些問題,不知道那位高手能提供很好的解決方案。
網友評論:我認為PWM是一個功能很強大的東東。現在很多單片機都集成了PWM功能,如果沒集成用軟件也比較容易模擬。以下是我用過的PWM
一,DA功能,PWM就是一個巧妙的DA,對PWM波形進行積分,就可以得到占空比成正比的電壓
1,直流電機調速。我們知道直流電機速度隨著電壓不同而變化的,單片機輸出PWM波形,然后通過驅動電路驅動電機,通過調節占空比得到不同的電壓,故電機速度進行變化
2,改變LED等亮度,曾經做過一個LED點陣牌,要求亮度可調節。我用的方法是調節每行點陣的導通時間來改變亮度,其實用的時就PWM原理
二,語音功能。其實還是DA功能
用PWM的確可以生成語音,曾經用SUNPLUS做過語音講話
計算器,這個東西大家幾乎都見過,上面的聲音就可以用PWM生成,當然SUNPLUS集成了語音功能。我們知道語音波形是比較復雜的,通過參考SUNPLUS硬件集成原理,在沒有語音集成的單片機上自己可以用PWM生成任意波形,比如生成正弦波:把正弦波一個周期電壓對應的PWM占空比數據做成一個表格,然后在做一個PWM軟件驅動程序,留出一個接口,這個驅動程序的功能就是把接口數據轉換成對應占空比的波形,然后以一定頻率查表,然后把數據丟到這個接口,就可以輸出正弦波了,當然單片機IO需要加上積分電路
三,省電功能
曾經做過一個產品,帶紅外接收,不過要求低功耗,大家知道紅外接受頭靜態電流很大的,為了解決這個問題,我當時的辦法是用一個IO控制紅外接收頭,比如打開紅外接收頭50ms,關閉450ms,這樣耗電就會變為原來的十分之一
四,調制波
比如紅外通訊中,數據的傳輸都要經過調制,利用PWM進行調制很容易實現
網友評論:把PWM工作與雙積分A/D工作對比,這樣才可以讓眾網友理解更深刻。
網友評論:建議分解成幾個小題目
逐步求精
另外時間上俺估計半個月是不夠的.
掃盲有可能可以..
其它就難說了
網友評論:這樣的活動,實在是太棒了。讓不讓我們“盜版”呀?
網友評論:其他的還沒有用到
網友評論:PWM我只弄過模擬的,以前大概花了1個月時間摸索過,對驅動及輸出部分有所了解。關注單片機的PWM處理方法。。。
網友評論:前天發了N次,也發不上來!
之前,我把占空比和周期混在一起了(古道熱腸也幫我指出來了)。
在我用過的帶有PWM模塊的單片機中,是D/A的一種。大致原理是這樣的:有一個計數器,兩個16位的比較器。其中,一個比較器用于控制占空比(比較器1),一個用于控制一個脈沖的周期。
運行時,計數器自動加一個步長(可設置,相當于加幾是自己定),輸出D/A值。
在當計數器的數與比較器1中的設定值相等時,則開始輸出低電平
在當計數器的數與比較器2中的設定值相等時,則計數器重要開始計數,下一個周期開始。
輸出的電平在經過RC濾波平滑處理后,輸出。
圖我沒發過不知道怎么發,就用文件的形式發了,請高手指點,下次改正。
相關鏈接:/upfiles/img/20079/200793102341759.pdf
網友評論:PWM波軟件實現很容易,用循環程序可以實現所有不同的PWM波.
如果要用硬件來實現的話,就可以用555定時器來實現
總而言之,PWM波的實現只要能夠輸出各種占空比的方波即可
網友評論:呵~哪位用PWM做音頻有經驗指導下哦..
小弟要用PWM驅動揚聲器,基于SPWM原理..
前段時間做出單頻音來了..500HZ.1000Hz.2000Hz等..
用錄音軟件錄下后,發現諧波成分存在,我是用16K的采樣率(PWM周期),最嚴重的問題就是喇叭發出的聲音包含有16K的載波頻率...聽起來噪音很嚴重..
有點郁悶..我后面沒加濾波的,直接占空比變化的PWM接喇叭(利用喇叭的感性)
網友評論:我現來開個頭,我做過單片機的PWM輸出控制LED亮度的試驗。
1、選用單片機P89C51RA2DIP40封裝
2、硬件架設,將P89C51RA2替換ME5103仿真器的8031單片機,并在P14引腳串聯電阻后接一發光二極管到VCC.
3、實現功能:發光管由亮變暗,短暫停頓后,由暗變亮。
4、軟件源代碼:
#defineuintunsignedint
#defineucharunsignedchar
#defineulongunsignedlong
#defineboolbit
#definetrue1
#definefalse0
sbitc_PWM_LED=P1^4;
sfrCCON=0xD8;
sfrCMOD=0xD9;
sfrCL=0xE9;
sfrCH=0xF9;
sfrCCAP0L=0xEA;
sfrCCAP1L=0xEB;
sfrCCAP0H=0xFA;
sfrCCAP1H=0xFB;
sfrCCAPM0=0xDA;
sfrCCAPM1=0xDB;
sbitCR=0xDE;
sbitc_MCBoard_LED=P1^4;
#definec_MAX_PWM_Value0xFE
#definec_Min_PWM_Value0x02
#definec_StepValue0x01
#definec_DelayCount0x100
voidTestPWMLED(void)
{
ulongulCount;
ucharucTempValue;
CMOD=0x02;
CL=0x00;
CH=0x00;
CCAP0L=0x10;
CCAP0H=0x10;
CCAPM0=0x42;
CCAP1L=0x10;
CCAP1H=0x10;
CCAPM1=0x42;
CR=1;
ucTempValue=0;
while(1)
{
while(1)
{
if(ucTempValue<c_MAX_PWM_Value)
{
ucTempValue+=c_StepValue;
}
else
{
break;
}
CCAP0H=ucTempValue;
CCAP1H=ucTempValue;
for(ulCount=0;ulCount<c_DelayCount;ulCount++)
{
;
}
}
for(ulCount=0;ulCount<0x10000;ulCount++)
{
;
}
while(1)
{
if(ucTempValue>c_Min_PWM_Value)
{
ucTempValue-=c_StepValue;
}
else
{
break;
}
CCAP0H=ucTempValue;
CCAP1H=ucTempValue;
for(ulCount=0;ulCount<c_DelayCount;ulCount++)
{
;
}
}
for(ulCount=0;ulCount<0x10000;ulCount++)
{
;
}
}
while(1)
{
for(ulCount=0;ulCount<0x1000;ulCount++)
{
}
c_PWM_LED=0;
for(ulCount=0;ulCount<0x1000;ulCount++)
{
}
c_PWM_LED=1;
}
}
網友評論:200ms調一次脈寬
一次變動0.4ms
周期為20ms
listp=16F54
#include<p16f5x.inc>
__CONFIG_CP_OFF&_WDT_OFF&_HS_OSC
WIDEEQU11H
DO_200MEQU12H
TURNEQU13H
MIDEQU14H
ORG0x1FF;processorresetvector
GOTOSTART
ORG0x000
;初始化
STARTNOP
CLRF10H
MOVFW10H
TRISPORTB
CLRFPORTB
BSFPORTB,3
MOVLW02H
OPTION;8分頻
MOVLW.206
MOVWFTMR0;定時400us
MOVLW.50
MOVWFWIDE;脈寬20ms
MOVLW.10
MOVWFDO_200M;200ms調整一次占空比
MOVLW.50
MOVWFTURN;初值為全占空
MOVWFMID
LOOP;0.4ms
MOVFWTMR0
BTFSSSTATUS,Z
GOTOLOOP
LOOP1
MOVLW.206
MOVWFTMR0
;滅
DECFSZTURN,F;
GOTO$+4
BSFPORTB,2
MOVFWMID
MOVWFTURN
;判斷是否為20ms
DECFSZWIDE,F
GOTOLOOP
;亮
BCFPORTB,2
MOVLW.50
MOVWFWIDE
MOVFWMID
MOVWFTURN
DECFSZDO_200M,F
GOTOLOOP
;遞減脈寬
MOVLW.10
MOVWFDO_200M
DECFSZMID,F
GOTOLOOP
BSFPORTB,2
BCFPORTB,3
GOTO$
網友評論:不過重點是介紹軟件濾波
網友評論:pwm就是脈沖調制,通過調制高(或低)電平所占脈沖周期的時間(占空比),
來控制輸出的接通時間,以達到功率控制.一般的
開關電源都是使用此原理
來穩壓的.還有白光LED使用PWM來控制功耗.
網友評論:之前用STC12系列的一款芯片,用到了它的AD采樣和PWM輸出
AD采回熱敏電阻的電壓變化,然后改變占空比控制風扇啟動~
但不能完全實現PWM輸出高電平或低電平,這是為什么?
網友評論:PWM實現方式用很多種,下面是從網上找來的
幾種PWM控制方法
看了“農民講習所”老師的這個帖子,發表如題感慨!^_^
網友評論:用單片機做降壓型開關電源!
目前在用單片機做鋰電充電器,用PWM控制MOS管恒流給
電池充電,從100mA到1A可調,很好用.8位的ADC電流精度可以控制在20mA.
網友評論:PWM就是控制高低電平的比例,主要看你怎么操作
網友評論:pwm在電機調速上用的比較多,通過控制mos管的導通時間,調節電機的電壓,從而達到控制電機速度,不過控制曲線不是怎么平滑。
網友評論:速度是調下來了,力矩也損失不少,大家有何良策,我們現在都用大功率電機和機械減速器來補償這種損失。
網友評論:用PWM做
步進電機細分可以改善電機轉動的平滑性,且做上細分力矩反而會增大的,網上很多相關的資料,但如何生成一份好的細分及調速表很很重要~
網友評論:小弟,也在自己實驗PWM希望能得到高人的指點。
十分感謝!!
如有相關的資料請給小弟發一些zhenyongan2008@163.com
十分感謝
網友評論:如:全通或八九十%的PWM情況下,先正通5ms,再反通2ms等等
網友評論:1。直接應用PWM模塊,不同MCU有數種PWM波形,按模式應用簡單,而且PWM模塊
一般都帶RC處理部分。
2。使用I/O口模式,任意定義自己需要是的占空比。
數字信號直接驅動其實效果還是看等效面積,這與積分后的信號是一個原理。。
在頻率較大情況小可以等效于積分的效果,比如PWM信號控制LED的亮度,周期10MS左右的PWM信號控制外部不需要加積分電路
網友評論:三,省電功能
曾經做過一個產品,帶紅外接收,不過要求低功耗,大家知道紅外接受頭靜態電流很大的,為了解決這個問題,我當時的辦法是用一個IO控制紅外接收頭,比如打開紅外接收頭50ms,關閉450ms,這樣耗電就會變為原來的十分之一
這么做不會錯過按鍵嗎?
網友評論:好啊!!!
網友評論:/********************************************************************************************
*文件名:test017.c
*功能:模擬PWM輸出控制LED
燈的10個亮度級別。
*硬件條件:1.CPU型號:
AT89S52*2.晶振:12.000MHz
*3.用跳線帽短接LED11__P1.7
*用跳線帽短接LED10__P1.6
*用跳線帽短接LED9__P1.5
*說明:要改變LED燈的顯示亮度,可以使用PWM輸出控制。在一定頻率的方波中,調整高電平和低電平
*的占空比,即可實現。例如用低電平點亮一個LED燈,假設把一個周期分為10個時間等份,如果
*方波中的高低電平占空比是9:1,這時就是一個比較暗的亮度,如果占空比是5:5,就是一個中間
*亮度,如果高低電平占空比是1:9,這時就是一個比較亮的亮度,高低電平占空比為10:0時,燈
*是滅的,高低電平占空比為0:10時,燈最亮。
*在本實驗中,我們將定時器2的溢出定為1/2000秒,每10次脈沖輸出一個200Hz頻率。這每10次
*脈沖再用來控制高低電平的10個比值。這樣,在每個1/200秒的方波周期中,我們都可以改變
*方波的輸出占空比,從而控制LED燈的10個亮度級別。
*注意:為什么輸出方波的頻率我們選擇200Hz這么高呢?因為如果頻率太低,人眼就會看到閃爍
*感覺。一般起碼要在60Hz以上感覺才好點,120Hz基本上看不到閃爍,因此我們選擇200Hz,
*人眼將看不到閃爍,只能看到亮度變化。
*作者:POWER
*日期:2006年12月12號
*斯凱科技主頁:www.armsky.net
*龍圖開發網:/upfiles/img/20079/2007913211444516.jpg" onload="thumbImg(this)" alt="" />
相關鏈接:http://www.longtoo.com
網友評論:省電功能
曾經做過一個產品,帶紅外接收,不過要求低功耗,大家知道紅外接受頭靜態電流很大的,為了解決這個問題,我當時的辦法是用一個IO控制紅外接收頭,比如打開紅外接收頭50ms,關閉450ms,這樣耗電就會變為原來的十分之一
這么做不會錯過按鍵嗎?
紅外接收頭周期性高電平,周期做的要小一些,必須比遙控器發碼周期小很多,這樣當有紅外線發過來的時候就不會漏掉,如果發現有紅外線,單片機就使接收頭全部有效,當全部接收完畢,再使紅外接受頭處于省電狀態就可以了
網友評論:頻率,分辨率呢?
網友評論:對你的程序小弟有幾處不明白,還望指點
1.if(scale_0==tt)//按照當前占空比切換輸出高電平???????
2.staticuint8tt;//tt用來保存當前時間在1秒中的比例位置1秒是怎么回事
3.scale_0怎么沒有初值
4.在每個1/200秒的方波周期中,我們都可以改變方波的輸出占空比,那占空比是怎么改變的呢
網友評論:PWM方式發人聲似乎是大家熱烈討論的話題,而且似乎一致在說這個辦法不行。在下切以為討論套籠統,結論太粗率啊!
PWM能不能發聲?顯然是沒有任何問題的,而且是可以達到Hi-Fi指標的。
網友評論:數字PWM產生基本上都是2個計數器
外面一個計數器對整個PWM周期計數,里面的計數器計數高/低電平的個數.
設定PWM周期和占空比就可以產生一定占空比的PWM~~
如果要改占空比,把里面那個計數器的計數上限改了就行,改周期則直接改周期計數的上限~~
如果是硬件PWM那就更簡單,直接配置相關的
寄存器就可以了~
網友評論:哪位大蝦講講用PWM對單項異步交流電機的調速
網友評論:除了調占空比以外,還是可以調整輸出頻率
網友評論:共有0-9十個數字語音,暫時為固定三位數報號,可以用下載器編程語音信息,下載到語音報號器中,采用高頻率pwm合成語音,現在格式為16k,8bit語音。可以作為公共身份報號,在出租等行業載入車載臺中使用,觸發端為車載臺手柄,按動后報號,手抬起也報一次號,時間大約400ms
只是音質不是太好,清晰度還可以
相關鏈接:http://www.ednchina.com/blog/JYTZ9988/14838/message.aspx