在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

全網最通俗易懂SPWM入門教程

璟琰乀 ? 來源:8號線攻城獅 ? 作者:8號線攻城獅 ? 2020-12-22 13:59 ? 次閱讀

自然采樣法

規則采樣法

單極性

雙極性

如何編寫程序

總結

基本原理SPWM的全稱是(Sinusoidal PWM),正弦脈沖寬度調制是一種非常成熟,使用非常廣泛的技術;

之前在PWM的文章中介紹過,基本原理就是面積等效原理,即沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同 。

換句話說就是通過一系列形狀不同的窄脈沖信號,相對應時間的積分相等(面積相等),其最終效果相同;

所以SPWM就是輸入一段幅值相等的脈沖序列去等效正弦波,因此輸出為高的脈沖時間寬度基本上呈正弦規律變化;

這里通常使用的采樣方法是:自然采樣法和規則采樣法;

自然采樣法自然采樣法是用需要調制的正弦波與載波鋸齒波的交點,

來確定最終PWM脈沖所需要輸出的時間寬度,最終由此生成SPWM波;

具體如下圖所示,這里會對局部①部分進行簡單分析,下面進一步介紹;

SPWM波形

局部①的情況如下圖所示;簡單分析一下整個圖形的情況;

鋸齒波和調制正弦波的交點為 A和 B;

因此 A點所需時間為 T1, B點所需時間為 T2;

所以在該周期內,PWM所需要的脈沖時間寬度 Ton滿足: 最終結論就是,只要求出 A點和 B點位置,就可以求出 ;

Z7fmAf.png

自然采樣法

這里對于求解A,B位置的推導不做介紹,但是計算量比較大,因此在微處理器中進行運算會占用大量資源,下面再介紹另一種優化的采樣方法:規則采樣法。

規則采樣法根據載波PWM的電壓極性,一般可以分為單極性SPWM和雙極性SPWM;下面進一步介紹;

單極性單極性SPWM在正弦波的正版周期,PWM只有一種極性,在正弦波的負半周期,PWM同樣只有一種極性,但是與正半周期恰恰相反,具體如下圖所示;

下面取正弦波的正半周期的情況進行分析;

YnInau.png

單極性SPWM

正弦波的正半周期整體如下所示;由圖中我們可以知道以下幾點;

載波PWM的周期為 T;

線段 BO為當前這個等腰三角形的垂線;

線段 BO與正弦曲線 相較于點 A;

所以在該周期內 ,PWM所需要的脈沖時間寬度 Ton滿足:

rIZ7re.png

單極性正半周期

具體的推導過程如下:

第一步:由于O點的位置比較好確認,因此,線段 第二步:這里載波鋸齒波的最大幅值為1,因此線段 第三步:根據初中學過的相似三角形定理,滿足:

最終簡化得到:

這里對載波的幅值做了歸一化處理,如果鋸齒波的最大值為 ,正弦波的幅值最大為 ,則;

雙極性只要符合面積等效原理,PWM還可以是雙極性的,具體如下圖所示;這種調制方式叫雙極性SPWM,在實際應用中更為廣泛。

QjMjya.png

雙極性SPWM如何編寫程序上面講到這里PWM的 時間滿足:

其中 為正弦波幅值, 為載波鋸齒波幅值;

那么下面以STM32為例,介紹以下如何進行程序編寫;

首先得先STM32是如何產生PWM?

通過數據手冊可以知道,STM32通過TIM輸出PWM,這里有幾個寄存器

計數寄存器: CNT

比較寄存器: CCR (決定了占空比,決定了脈沖寬度)

自動重裝寄存器: AAR(決定了PWM的周期)

可能這么說,還是云里霧里的,先看下圖;

my6fQr.png

STM32的PWM產生原理

STM32中PWM的模式有普通的PWM,和中央對齊的PWM,上圖使用的就是中央對齊PWM;

產生PWM的過程可以分為以下幾個過程;

第一步:配置好TIM, 通常時基和ARR都會配置好,這時候PWM的周期就已經被設定好了,另外時基決定了CNT計數寄存器增加一次技術所需的時間;

第二步:剛開始, CNT《CCR,并且 CNT開始增加,這時候PWM的輸出都是低電平;當CNT》CCR之后,PWM輸出為高電平;

第三步:當 CNT的值等于AAR之后, CNT開始減少,同理 CNT《CCR,PWM的輸出低電平;當CNT》CCR,PWM輸出為高電平;

第四步:循環上述三個步驟;

程序中如何實現?

從上述STM32產生PWM的過程中不難發現, 滿足;

①上一節推導的公式如下:

②結合①式和②式,可以得到:

上面公式中用CCR表示CCR寄存器中的值,ARR表示ARR寄存器中的值;

最后需要做的三件事

計算出ARR,一般配置TIM定時器的時候能在數據手冊找到公式;

調制比,也就是 的系數;

根據③式生成正弦表,然后查表(實時計算因為涉及到較多運算量,所以利用查表,空間換時間,提高效率), 利用PWM的事件去觸發中斷,更新下一次CCR的值;

正弦函數表:

const uint16_t indexWave[] = { 0, 9, 18, 27, 36, 45, 54, 63, 72, 81, 89, 98, 107, 116, 125, 133, 142, 151, 159, 168, 176, 184, 193, 201, 209, 218, 226, 234, 242, 249, 257, 265, 273, 280, 288, 295, 302, 310, 317, 324, 331, 337, 344, 351, 357, 364, 370, 376, 382, 388, 394, 399, 405, 410, 416, 421, 426, 431, 436, 440, 445, 449, 454, 458, 462, 465, 469, 473, 476, 479, 482, 485, 488, 491, 493, 496, 498, 500, 502, 503, 505, 506, 508, 509, 510, 510, 511, 512, 512, 512, 512, 512, 512, 511, 510, 510, 509, 508, 506, 505, 503, 502, 500, 498, 496, 493, 491, 488, 485, 482, 479, 476, 473, 469, 465, 462, 458, 454, 449, 445, 440, 436, 431, 426, 421, 416, 410, 405, 399, 394, 388, 382, 376, 370, 364, 357, 351, 344, 337, 331, 324, 317, 310, 302, 295, 288, 280, 273, 265, 257, 249, 242, 234, 226, 218, 209, 201, 193, 184, 176, 168, 159, 151, 142, 133, 125, 116, 107, 98, 89, 81, 72, 63, 54, 45, 36, 27, 18, 9, 0};

中斷服務函數:

extern uint16_t indexWave[];extern __IO uint32_t rgb_color;/* 呼吸燈中斷服務函數 */void BRE_TIMx_IRQHandler(void){ static uint16_t pwm_index = 0; //用于PWM查表 static uint16_t period_cnt = 0; //用于計算周期數 static uint16_t amplitude_cnt = 0; //用于計算幅值等級 if (TIM_GetITStatus(BRE_TIMx, TIM_IT_Update) != RESET) //TIM_IT_Update { amplitude_cnt++; //每個PWM表中的每個元素有AMPLITUDE_CLASS個等級, //每增加一級多輸出一次脈沖,即PWM表中的元素多使用一次 //使用256次,根據RGB顏色分量設置通道輸出 if(amplitude_cnt 》 (AMPLITUDE_CLASS-1)){ period_cnt++; //每個PWM表中的每個元素使用period_class次 if(period_cnt 》 period_class){ //標志PWM表指向下一個元素 pwm_index++; //若PWM表已到達結尾,重新指向表頭 if( pwm_index 》= POINT_NUM){ pwm_index=0; } //重置周期計數標志 period_cnt = 0; } //重置幅值計數標志 amplitude_cnt=0; }else{ //每個PWM表中的每個元素有AMPLITUDE_CLASS個等級, //每增加一級多輸出一次脈沖,即PWM表中的元素多使用一次 //根據RGB顏色分量值,設置各個通道是否輸出當前的PWM表元素表示的亮度 //紅 if(((rgb_color&0xFF0000)》》16) 》= amplitude_cnt) { //根據PWM表修改定時器的比較寄存器值 BRE_TIMx-》BRE_RED_CCRx = indexWave[pwm_index]; }else{ //比較寄存器值為0,通道輸出高電平,該通道LED燈滅 BRE_TIMx-》BRE_RED_CCRx = 0; } //綠 if(((rgb_color&0x00FF00)》》8) 》= amplitude_cnt){ //根據PWM表修改定時器的比較寄存器值 BRE_TIMx-》BRE_GREEN_CCRx = indexWave[pwm_index]; }else{ //比較寄存器值為0,通道輸出高電平,該通道LED燈滅 BRE_TIMx-》BRE_GREEN_CCRx = 0; } //藍 if((rgb_color&0x0000FF) 》= amplitude_cnt){ //根據PWM表修改定時器的比較寄存器值 BRE_TIMx-》BRE_BLUE_CCRx = indexWave[pwm_index]; }else{ //比較寄存器值為0,通道輸出高電平,該通道LED燈滅 BRE_TIMx-》BRE_BLUE_CCRx = 0; } //必須要清除中斷標志位 TIM_ClearITPendingBit (BRE_TIMx, TIM_IT_Update); } }}

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5343

    瀏覽量

    120401
  • SPWM
    +關注

    關注

    14

    文章

    357

    瀏覽量

    60637
收藏 人收藏

    評論

    相關推薦

    FPGA編程語言的入門教程

    FPGA(現場可編程邏輯門陣列)的編程涉及特定的硬件描述語言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個FPGA編程語言(以Verilog為例)的入門教程: 一、Verilog
    的頭像 發表于 10-25 09:21 ?278次閱讀

    請問什么是軌到軌?這種運放和普通運放比有什么特點和優點?

    什么是軌到軌?這種運放和普通運放比有什么特點和優點? 最近看到TI有一些運放屬于軌到軌,不知道這類有什么特點,與普通的比有什么優缺點沒?哪位給講的通俗易懂點啊?
    發表于 09-18 06:52

    通俗易懂的理解,什么是芯片?

    我們在日常工作和生活中,經常會使用到各種各樣的電子或電器產品,例如電腦、手機、電視、冰箱、洗衣機等。 這些產品,如果我們把它拆開,都會看到類似下面這樣的一塊綠色板子。 大家都知道,這個綠色板子,叫做電路板。更官方一點的名稱,叫印制電路板,也就是PCB(Printed Circuit Board,國外有時候也叫PWB,Printed Wire Board)。 在PCB上,焊接了很多的電子元器件,例如電容、電阻、電感等。 我們還可以看到,有一些黑色的方形元件。 沒錯,這個
    的頭像 發表于 08-22 13:32 ?3.3w次閱讀
    <b class='flag-5'>通俗易懂</b>的理解,什么是芯片?

    類比法快速入門電子電路系列教程

    的 - 電是由一個個電荷組成的 ::: info 注意 本書目標讀者為電子電路零基礎或不入門的初學者,盡可能的通俗易懂,所以很多地方沒有深入到物理層面,書中描述的概念可能不嚴謹,建議讀完本書后與權威
    發表于 08-17 18:03

    spwm載波頻率過低的影響

    SPWM(Sinusoidal Pulse Width Modulation,正弦脈沖寬度調制)是一種在電力電子領域廣泛應用的調制技術,主要用于變頻器、逆變器等設備中。SPWM通過控制脈沖寬度,使得
    的頭像 發表于 08-14 11:45 ?1295次閱讀

    第一篇:V1.5-STM32f103c8t6智能小車筆記 標準庫開發 6612電機驅動新手入門項目

    這是全網最詳細、性價比最高的STM32實戰項目入門教程,通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節代碼手把手教會你如何開發和調試。讓你更快掌握嵌入式系統開發。
    的頭像 發表于 08-12 18:25 ?1641次閱讀
    第一篇:V1.5-STM32f103c8t6智能小車筆記 標準庫開發 6612電機驅動新手<b class='flag-5'>入門</b>項目

    發酵罐攪拌器軸磨損修復方法

    這樣修復發酵罐攪拌器軸磨損通俗易懂
    發表于 04-24 18:43 ?0次下載

    真的通俗易懂!差分信號電路的解讀

    一、什么是差分運放電路差分電路是具有對共模信號抑制,對差模信號放大特征的電路。該電路的兩個信號輸信號的差值是該電路的有效值。將這兩信號輸入只差進行放大后輸出。如果存在干擾信號,會對兩個輸入信號產生相同的干擾,通過二者之差,干擾信號的有效輸入為零,這就達到了抗共模干擾的目的。對于運算放大電路來說,運放工作在線性區,所以電路一定是負反饋電路。運放的基本分析方法就
    的頭像 發表于 04-24 08:10 ?7005次閱讀
    真的<b class='flag-5'>通俗易懂</b>!差分信號電路的解讀

    詳解4種過壓保護電路!電源保護,通俗易懂

    今天給大家分享的是:過壓保護、過壓保護原理、過壓保護電路。 一、過壓保護是什么意思? 過壓保護是一種電源功能,當輸入電壓超過預設值時會切斷電源,為了防止高壓浪涌,通常會一些過壓保護方法。 大多數電源都使用過電壓保護電路來防止損壞電子元件。過電壓條件的影響因電路而異,范圍從損壞組件到降低組件性能并導致電路故障或火災。 由于電源內部故障或配電線路等外部原因,電源可能會出現過壓情況。 過電壓的幅度和持續時間是設
    的頭像 發表于 03-28 17:47 ?1.5w次閱讀
    詳解4種過壓保護電路!電源保護,<b class='flag-5'>通俗易懂</b>!

    allegro快速入門教程

    電子發燒友網站提供《allegro快速入門教程.pdf》資料免費下載
    發表于 02-29 09:32 ?71次下載

    生成SPWM波形的方法

    生成SPWM波形的方法? SPWM波形產生是一種常見的數字信號生成技術,用于控制交流電子設備的輸出電壓或電流的形狀,使其接近正弦波。 SPWM波形是由一系列的脈沖信號組成,每個脈沖信號的寬度由一個
    的頭像 發表于 02-06 13:52 ?2987次閱讀

    SPWM脈寬調制是異步還是同步?

    SPWM脈寬調制是異步還是同步? SPWM脈寬調制是一種用于調節交流電壓的技術,通過調整脈沖的寬度來模擬純正的正弦電壓信號。在SPWM技術中,脈沖的開啟和關閉時間取決于參考信號和比較器之間的比較結果
    的頭像 發表于 02-06 11:33 ?794次閱讀

    通俗易懂電壓跟隨器的知識總結

    當電阻增加時,從電源汲取的電流會減少。因此,我們得出結論,如果電流饋入高阻抗負載,則功率不受影響。
    發表于 01-24 14:04 ?8296次閱讀
    <b class='flag-5'>通俗易懂</b>電壓跟隨器的知識總結

    通俗易懂的材料的表面處理工藝

    真空電鍍是一種物理沉積現象。即在真空狀態下注入氬氣,氬氣撞擊靶材,靶材分離成分子被導電的貨品吸附形成一層均勻光滑的仿金屬表面層。
    的頭像 發表于 01-24 11:06 ?455次閱讀
    <b class='flag-5'>通俗易懂</b>的材料的表面處理工藝

    如何通俗易懂理解射頻微波

    在低頻的電振蕩中,磁電之間的相互變化比較緩慢,其能量幾乎全部返回原電路而沒有能量輻射出去; 在高頻率的電振蕩中,磁電互變甚快,能量不可能全部返回原振蕩電路。
    發表于 01-02 10:57 ?987次閱讀
    如何<b class='flag-5'>通俗易懂</b>理解射頻微波
    主站蜘蛛池模板: 精品一区二区三区视频| 80s国产成年女人毛片| 老师解胸罩喂我吃奶| 一区二区中文字幕亚洲精品 | 综合精品| 91久久另类重口变态| www在线播放| 尻老逼| 四虎影视在线影院在线观看| 成人理论片| 欧美51| 夜夜夜爽爽爽久久久| 九九99视频在线观看视频观看| 色宅男午夜电影在线观看| 伊人手机在线观看| 亚欧美视频| 操女人网址| 日韩欧美卡一卡二卡新区| 日本爱爱片| 国产成人精品午夜二三区| 手机在线看片你懂的| 99免费视频观看| 国产床戏无遮掩视频播放| 久久青青成人亚洲精品| 日本a级影院| 特级中国aaa毛片| 亚洲精品黄色| 99久热只有精品视频免费观看17| 亚洲免费区| 一区二区不卡视频| 777kkk亚洲综合欧美色老头| 1000部又爽又黄的做黄禁片| 日日干天天干| 日日夜夜天天久久| 97久草| 在线观看黄色x视频| 久久刺激视频| 精品午夜久久影视| 久久91精品牛牛| 黄视频网站入口| 在线二区|