99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

全網(wǎng)最通俗易懂SPWM入門教程

璟琰乀 ? 來源:8號線攻城獅 ? 作者:8號線攻城獅 ? 2020-12-22 13:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

自然采樣法

規(guī)則采樣法

單極性

雙極性

如何編寫程序

總結(jié)

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

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

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

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

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

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

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

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

SPWM波形

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

鋸齒波和調(diào)制正弦波的交點為 A和 B;

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

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

Z7fmAf.png

自然采樣法

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

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

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

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

YnInau.png

單極性SPWM

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

載波PWM的周期為 T;

線段 BO為當(dāng)前這個等腰三角形的垂線;

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

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

rIZ7re.png

單極性正半周期

具體的推導(dǎo)過程如下:

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

最終簡化得到:

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

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

QjMjya.png

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

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

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

首先得先STM32是如何產(chǎn)生PWM?

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

計數(shù)寄存器: CNT

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

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

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

my6fQr.png

STM32的PWM產(chǎn)生原理

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

產(chǎn)生PWM的過程可以分為以下幾個過程;

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

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

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

第四步:循環(huán)上述三個步驟;

程序中如何實現(xiàn)?

從上述STM32產(chǎn)生PWM的過程中不難發(fā)現(xiàn), 滿足;

①上一節(jié)推導(dǎo)的公式如下:

②結(jié)合①式和②式,可以得到:

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

最后需要做的三件事

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

調(diào)制比,也就是 的系數(shù);

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

正弦函數(shù)表:

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};

中斷服務(wù)函數(shù):

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

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5435

    瀏覽量

    124607
  • SPWM
    +關(guān)注

    關(guān)注

    14

    文章

    361

    瀏覽量

    61964
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LED驅(qū)動電路設(shè)計

    兼顧了不同讀者的需要,由淺入深,層次清晰,通俗易懂,實用性強,可作為電氣工程類專業(yè)本科生及研究生的入門教材,也可供從事LED驅(qū)動電源設(shè)計的工程技術(shù)人員參考。獲取完整文檔資料可下載附件哦?。。?! 如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~
    發(fā)表于 07-18 15:26

    單片機C語言入門指導(dǎo)(非常通俗易懂?。?/a>

    (一) 相信很多愛好電子的朋友,對單片機這個詞應(yīng)該都不會陌生了吧。不過有些朋友可能只 聽說他叫單片機,他的全稱是什么也許并不太清楚, 更不用說他的英文全稱和簡稱了。單片機是一塊在集成電路芯片上集成了一臺有一定規(guī)模的 微型計算機。簡稱為:單片微型計算機或單片機 (Single Chip Computer)。單片機的應(yīng)用到處可見,應(yīng)用領(lǐng)域廣泛,主要應(yīng)用在智能儀表、 實時控制、通信、家電等方面。不過這一切都沒什么關(guān)系,因為我(當(dāng)然也包括任何人)都是從不知道轉(zhuǎn)變成知道的,再轉(zhuǎn)變成精通的。 現(xiàn)在我只想把我學(xué)習(xí)單片機的經(jīng)歷,詳細地講敘給大 家聽聽,可能有些大蝦會笑話我,想:那么簡單的東西還在這里賣弄。但是你錯了,我只是 把我個人學(xué)習(xí)的經(jīng)歷講述一遍而已,僅僅對那些想 學(xué)習(xí)單片機,但又找不到好方法或者途徑的朋友,提供一個幫助,使他們在學(xué)習(xí)過程中,盡 量少走些彎路而已!首先,你必須有學(xué)習(xí)單片機的熱情, 不是說今天去圖書館看了一個下午關(guān)于單片機的書, 而明天玩上半天,后天就不知道那個本書在講什 么東西了。 還是先說說我吧,我從大二的第一個學(xué)期期末的時候才開始接觸單片機,但在這之前,正如上面所說的:我知道有種芯片叫單片機, 但是具體長成什么樣子,卻一點也不知道!看到這里很多朋友一定會忍不住發(fā)笑。嘿嘿,你 可千萬別笑,有些大四畢業(yè)的人也同樣不知道單片 機長成什么樣子呢!而我對單片機的癡迷更是常人所不能想象的地步,大二的期末考試,我全放棄了復(fù)習(xí),每當(dāng)室友拿著書在埋頭復(fù)習(xí)的時候, 我卻捧著自己從圖書館借的單片機書在那看,雖然有很多不懂,但是我還是堅持了下來,當(dāng) 時我就想過,為了單片機值不值得我這樣去付出,或許這也是在一些三流學(xué)校的好處吧,考試掛科后,明年開學(xué)交上幾十元一門的補考費,應(yīng) 該大部分都能過了。于是,我橫下一條心,堅持看 我的單片機書和資料。 當(dāng)你明白了單片機是這么一回事的時候, 顯而易見的問題出來了: 我要選擇那種語言為 單片機編寫程序呢? 這個問題,困擾了我好久。具 體選擇 C51 還是 A51 呢?匯編在我們大二之前并沒有開過課, 雖然看著人家的講解, 很容易 明白單片機的每一時刻的具體工作情況,但是一合上 書或者資料,自己卻什么也不知道了,根本不用說自己寫程序了。于是,我最終還是決定學(xué) C51,畢竟 C51 和我們課上講的 C 語言,有些類似, 編程的思想可以說是相通的。 而且 C51 還有更大的優(yōu)點就是編寫大程序時的優(yōu)越性更不言而 喻,當(dāng)然在那時,我并沒有想的那么深遠,C51 的特 點,還是在后來的實踐過程中,漸漸體會到的!朋友如果你選擇了 C51,那么請繼續(xù)往下看, 如果你選擇了 A51,那么你可以不要看了!因為下面講 的全是 C 方面的,完全在浪費你的時間! 獲取完整文檔資料可下載附件哦!?。?! 如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~
    發(fā)表于 06-16 16:32

    電路基礎(chǔ)學(xué)習(xí)資料

    不可多得的電路基礎(chǔ)知識學(xué)習(xí)資料,作者郝銘先生具有深厚的電路功底,且講解的非常通俗易懂,非常適合初學(xué)者。 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 05-17 15:01

    電源模塊PCB設(shè)計注意事項

    PCB設(shè)計的基礎(chǔ)入門教材,圖文并茂,通俗易懂 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 05-06 15:43

    秒懂CCC與CQC,別傻傻分不清啦

    通俗易懂說CCC與CQC
    的頭像 發(fā)表于 05-06 10:23 ?2217次閱讀
    秒懂CCC與CQC,別傻傻分不清啦

    新型開關(guān)電源設(shè)計與維修

    通俗易懂。 純分享貼,有需要可以直接下載附件獲取文檔! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 04-17 15:36

    開關(guān)變換器環(huán)路設(shè)計指南從模擬到數(shù)字控制

    資料介紹 本書的特色是:作者對開關(guān)變換器的環(huán)路控制不進行過于“學(xué)術(shù)化”的討論,只對一些必要的理論給出數(shù)學(xué)方程,并由淺入深,用通俗易懂的語言,比較全面地介紹了環(huán)路控制的基本概念、環(huán)路穩(wěn)定的條件、輸入
    發(fā)表于 04-17 13:55

    通俗易懂說電能表Modbus RTU協(xié)議

    Modbus RTU協(xié)議憑借其開放性、穩(wěn)定性和易用性,成為電能表通信的“標(biāo)配”
    的頭像 發(fā)表于 04-02 15:21 ?1149次閱讀
    <b class='flag-5'>通俗易懂</b>說電能表Modbus RTU協(xié)議

    51單片機經(jīng)典入門教程(非常棒的教程)

    【前言】 適合初學(xué)者,入門級教程。 本文作者提示:本教程乃最通俗易懂之單片機教材,如果您還是看不懂,請千萬不要涉足此行,以免誤入歧途,耽誤您的前程。 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 03-28 15:05

    基于51單片機PWM直流電機調(diào)速程序 0到20級的調(diào)速

    基于51單片機PWM直流電機調(diào)速程序 0到20級的調(diào)速,代碼有中文詳細注解,通俗易懂,不愧是初學(xué)者福利。可以看得出作者真的很用心.這也讓我們學(xué)習(xí)單片機基礎(chǔ)更加的容易理解。 純分享貼,有需要可以直接下載附件獲取資料! (如果內(nèi)容有幫助可以關(guān)注、點贊、評論支持一下哦~)
    發(fā)表于 03-20 13:44

    DRAM基本單元最為通俗易懂的圖文解說

    的話題,稍微復(fù)雜一點的系統(tǒng)都需要用到DRAM,并且DRAM是除CPU之外,最為復(fù)雜也最貴的核心部件了,其設(shè)計,仿真,調(diào)試,焊接,等等都非常復(fù)雜,且重要。對DRAM使用的熟練情況,直接關(guān)系到系統(tǒng)設(shè)計的優(yōu)劣。本文試著用比較通俗系統(tǒng)的圖片和文字來解說,DRAM中一個基本電路單元的工作原理。
    的頭像 發(fā)表于 03-04 14:45 ?908次閱讀
    DRAM基本單元最為<b class='flag-5'>通俗易懂</b>的圖文解說

    FPGA編程語言的入門教程

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

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

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

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

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

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

    的 - 電是由一個個電荷組成的 ::: info 注意 本書目標(biāo)讀者為電子電路零基礎(chǔ)或不入門的初學(xué)者,盡可能的通俗易懂,所以很多地方?jīng)]有深入到物理層面,書中描述的概念可能不嚴(yán)謹,建議讀完本書后與權(quán)威
    發(fā)表于 08-17 18:03