91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

wkhn
認證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
通向數(shù)字電源之路——初學(xué)者入門(1)
通向數(shù)字電源之路——初學(xué)者入門(2)
通向數(shù)字電源之路——初學(xué)者入門(3)
通向數(shù)字電源之路——初學(xué)者入門(4)
通向數(shù)字電源之路——初學(xué)者入門(5)
通向數(shù)字電源之路--進階(1)
作者動態(tài) 更多
一種采用CAN總線方式升級F28035芯片F(xiàn)lash的方法(三)
2024-05-13 15:31
一種采用CAN總線方式升級F28035芯片F(xiàn)lash的方法(二)
2024-05-13 15:31
一種采用CAN總線方式升級F28035芯片F(xiàn)lash的方法(一)
2024-05-13 15:31
STM32G4系列MCU——數(shù)字電源入門(4)
2023-03-14 10:46
STM32G4系列MCU——數(shù)字電源入門(3)
2023-03-13 20:05

通向數(shù)字電源之路——初學(xué)者入門(2)

      在上一篇文章中,筆者以buck電路為例,講述了數(shù)字電源內(nèi)部的控制環(huán)路、采樣環(huán)節(jié)是如何數(shù)字化的,以及經(jīng)典的PID算法是如何讓電源穩(wěn)定的。在本文中,將介紹開發(fā)板另一部分的Boost升壓電路是如何配置外設(shè)寄存器的。

      現(xiàn)在開始。

      主電路如下,是最傳統(tǒng)的電路形式

      在上一篇文章中的附件里有開發(fā)板完整的原理圖。先要說明一下,為了能使初學(xué)者更容易明白代碼的結(jié)構(gòu)體系和功能,筆者將上文中的buck電路的程序和本文中的boost電路的程序完全分開,即不能在以前buck程序的基礎(chǔ)上添加boost的程序代碼,否則boost電路工作不正常。代碼分開的好處就是讓初學(xué)者關(guān)注數(shù)字電源本身的功能實現(xiàn),至于兩套電路代碼融合的問題并不是本文關(guān)心的重點。

      我們開始編寫boost升壓電路程序代碼。

      同樣在MPLAB X IDE中新建一個工程文件。注意是“新建”,不能用上文中的Buck電路的代碼。然后打開MCC。

1)配置系統(tǒng)時鐘

系統(tǒng)時鐘為60MHz,PWM時鐘為240MHz。

2)數(shù)字PWM發(fā)生器

因為是用PWM2發(fā)生器控制Boost主開關(guān)管,所以要配置PWM2的寄存器,PWM1用缺省值。

使能PWM總開關(guān)“Enable PWM”,然后將PWM的開關(guān)周期定為10us(100KHz),最大占空比設(shè)為60%(這是數(shù)字PWM的一大特點,最大占空比是可以設(shè)置的,模擬芯片幾乎不可能實現(xiàn)這一功能)。其中“Primary Duty Cycle”寄存器設(shè)置最大占空比,“Primaty Phase Shift”寄存器確定開關(guān)周期。計算公式如下:

這里240,是在系統(tǒng)時鐘里設(shè)置的PWM工作時鐘240MHz,8是公式的常數(shù),10是需要的PWM開關(guān)周期10us的意思。19192的十六進制數(shù)就是0x4AF8。同理可以算出對應(yīng)60%占空比的“Primary Duty Cycle”寄存器值為0x2D00。但是計算公式稍有不同。

接下來

“1”與buck電路有所不同,boost只是用“PWM2L”控制主開關(guān)MOS管,所以把“PWM2H”關(guān)掉。“2”PWM的輸出形式選擇“冗余輸出”模式。“3”限流比較器是“CMP1”,“4”發(fā)生限流時,“PWM2L  PWM2H”都處于關(guān)斷狀態(tài)。“5”表示每個PWM周期要觸發(fā)一次ADC的采樣,采樣頻率越快,控制環(huán)路的帶寬上限越寬。“6”是死區(qū)時間,不同于同步降壓BUCK電路,boost電路不存在兩mos管直通的問題。所以死區(qū)是0。數(shù)字PWM配置完成。

3)ADC配置

和同步buck電路中的ADC配置相似,但是我們將ADC的采樣時間更改為100ns,也可以使電路穩(wěn)定。至于有何種影響,會在后面文章中涉及。注意,boost輸出電壓的ADC采樣用的是AN3通道。并將中斷使能勾選,觸發(fā)源選“PWM2 Primary Trigger”。其它的中斷都應(yīng)該禁止。

4)限流比較器

上文buck電路用的是CMP2,boost要用CMP1,即內(nèi)部比較器1,查看電路圖可以確認。

比較器輸入源是“CMP1B”,完成比較器1的配置。

5)控制環(huán)路的算法

自動生成代碼后,還是在“adc1.c”文件中添加PID算法代碼。先聲明變量

輸出電壓:

將上面的代碼添加至

回調(diào)函數(shù)中。在AN3中斷的回調(diào)函數(shù)中,筆者還加入了“軟啟動”和“開關(guān)控制”的功能,這兩項功能很簡單,并不影響對PID算法的理解。

“軟啟動”讓電路在初次上電時,最大占空比緩慢的從0到設(shè)定值,防止過沖。

“開關(guān)控制”是當X3短路時,boost電路開機工作,有輸出電壓。X3斷開時,boost電路停止工作,輸出電壓為零。

同樣用PI補償器就能使boost控制環(huán)路達到穩(wěn)定。其中Kp=24.6,Ki=0.122

6)控制環(huán)路穩(wěn)定性驗證

用網(wǎng)絡(luò)分析儀測量環(huán)路參數(shù)。額定輸入電壓15V,輸出電壓19.8V

19.8V0.5A(穿越頻率2.2KHz,相位裕度73.5°)

輸出19.8V0.25A(穿越頻率356Hz,相位裕度108.4°)

輸出19.8V0A(穿越頻率120Hz,相位裕度114°)

輸出紋波(0.5A負載,基波95mv,峰峰值1.6V)

負載階躍響應(yīng)(0A至0.5A,向下過沖195mv,恢復(fù)時間1.41ms)

總結(jié):     

      通過調(diào)整boost控制環(huán)路的PI參數(shù),能使電路有較好的穩(wěn)定性,但是輕載狀態(tài)時的穿越頻率較低,動態(tài)響應(yīng)不夠快,有改進的空間。本例中用到的PID算法雖然有點簡陋和不完善,但也具備使控制環(huán)路穩(wěn)定的能力,實現(xiàn)了數(shù)字電源最基本的功能:穩(wěn)壓及負載變化的快速響應(yīng)。

      下面根據(jù)前面內(nèi)容,筆者認為還有一些技術(shù)細節(jié)和讀者探討一下:

1)PID公式中的數(shù)據(jù)是不是用浮點數(shù)據(jù)結(jié)構(gòu)更直觀更簡捷。

      其它牌子的dsp筆者還沒用過,但是單就本文中提到的dspic33系列的dsp,筆者曾嘗試將u_N、u_P等這些變量變成float(浮點型)后,單獨一個執(zhí)行PID算法的ADC中斷處理程序就要用去40us的時間,已經(jīng)遠遠超過了一個PWM周期的時間,嚴重影響ADC的觸發(fā)中斷。即使將PWM觸發(fā)ADC采樣的頻率調(diào)整為每5個PWM周期觸發(fā)一次ADC采樣(即控制環(huán)路的帶寬上限為20KHz),用浮點型數(shù)據(jù)也是不行的。因為在實際的數(shù)字電源中,dsp程序內(nèi)還會有其它功能代碼,也是會占用一定的時間的,PID差分方程占用過多的CPU時間,一定會導(dǎo)致其它功能工作不正常。

2)PID公式中的Kp和Ki如何得到

      PID中的Kp和Ki可以用多種方式獲得,其實筆者以前的文章中也講述過一種方法,用simplis+matlab。但是得到的是s域的傳遞函數(shù),怎么變成差分方程?matlab中有“雙線性變換”函數(shù),自動完成s域的傳遞函數(shù)到z域中的差分方程的變換。至于是否準確,還要在實際調(diào)試中驗證,即使建模不準確,但也能得到一些基礎(chǔ)數(shù)據(jù),再做調(diào)整就事半功倍了。

在MPLAB X IDE中有一個插件,也可以方便計算出結(jié)果。

如果什么方法都不會,那就一個一個參數(shù)試吧,只要有耐心總是能試出來的。

3)官方開發(fā)板工作頻率為350KHz,為何筆者的開發(fā)板開關(guān)頻率降為100KHz

      為了繞過用匯編語言編寫PID算法的代碼,只能將PID的代碼以C語言寫入到ADC中斷里,代價就是C語言的執(zhí)行速度比匯編代碼要慢的多,所以為了適應(yīng)較慢的PID計算速度,我們也只能將開關(guān)頻率降低。經(jīng)過驗證,100KHz的PWM開關(guān)頻率時,C語言代碼在dsp時鐘頻率為60MHz速度下,執(zhí)行PID計算的時間是滿足要求的。

4)電流采樣都沒有斜率補償

      按照理論來說,峰值電流型反饋控制系統(tǒng)要求對電流斜坡進行斜率補償,但在buck和boost電路中,pwm驅(qū)動波形都沒有超過50%,所以也就沒有必要補償,而且還減少了一個干擾因素,使環(huán)路設(shè)計更簡單。其實斜坡補償也可以用代碼的方式實現(xiàn),甚至限流比較器都可以用代碼實現(xiàn),這樣才是真正意義上的數(shù)字電源。有時間筆者會在這方面探索一下。

5)官方開發(fā)板代碼內(nèi)容簡介

      在這里說說筆者對官方代碼的理解,如有不對請多指出,謝謝。

這是所有代碼的結(jié)構(gòu)圖

“1”main主函數(shù),程序執(zhí)行的入口,里面包括一些出始化的操作和外設(shè)的配置。

“2”這是匯編代碼,包含在系統(tǒng)初始化代碼內(nèi),這段代碼只在程序初始化時執(zhí)行一次。主要的功能就是把要計算的差分方程的參數(shù)裝入CPU內(nèi)核的備用工作寄存器中,目地是在進入或離開ADC中斷時,盡量節(jié)省工作寄存器壓入堆棧和彈出堆棧的時間,從而減少整體ADC中斷處理程序的執(zhí)行時間,這在高頻的PWM應(yīng)用中是非常重要的。在代碼中有下面一條匯編指令:

就是告訴CPU當ADC1有中斷產(chǎn)生時,內(nèi)核要切換到該備用工作寄存器。怎么把ADC中斷與上圖黃色標示出的“CTXTSWP #0x01;”綁定起來?在mcc界面下,“Interrupt Module”選項中,比如,要把ADC1通道中的AN11中斷操作與1號備用工作寄存器綁定,就選擇“CTXT1”。從圖上可以發(fā)現(xiàn),該顆dsp內(nèi)核其中是有4套備用工作寄存器可供切換,意味著dsp內(nèi)核支持多種控制算法的切換,這是數(shù)字電源最大的優(yōu)點之一。  

“3”是數(shù)字電源控制環(huán)路的算法,也是用匯編代碼寫的,核心功能很簡單,處理ADC產(chǎn)生的中斷,并調(diào)用庫中的算法函數(shù)。注意,如果是用mcc生成的代碼,一定要在C代碼中,去掉相應(yīng)的ADC中斷處理程序,否則與匯編代碼中的中斷程序產(chǎn)生沖突,不知該執(zhí)行哪個中斷處理程序。前面提到的庫函數(shù)就在“5”,將它包含進工程文件中并且要在“init.h”文件中包含該函數(shù)庫的頭文件。

然后就可以調(diào)用里面的算法了。該算法函數(shù)庫中包含2P2Z、3P3Z、4P4Z和PID等多種算法,方便程序員調(diào)用。具體函數(shù)名稱還是要查看幫助手冊。

“4”   其實是由MPLAB X IDE中的一個插件“Digital Compensator Design Tool”生成的控制環(huán)路的參數(shù),也比較方便易用,筆者用的不多。對此感興趣的讀者可以試試。

以上就是數(shù)字電源控制環(huán)路的主功能,官方軟件代碼中還包括LCD顯示、通訊、負載控制等功能,讀者可以自己探索。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發(fā)給你
資料明細:DigitalPower_kit_boost.X.rar
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 5
收藏 6
關(guān)注 596
成為作者 賺取收益
全部留言
0/200
  • 發(fā)燒小峰 02-01 16:11
    老師,能不能發(fā)我一下資料,謝謝! bc****@****.com
    回復(fù) 1條回復(fù)
  • Jzz 2024-10-17 21:49
    老師,能不能發(fā)我一下資料,謝謝! 96****@****.com
    回復(fù) 1條回復(fù)
  • 無雙葉子 2024-07-21 23:51
    老師,能不能發(fā)我一下資料,謝謝! 84****@****.com
    回復(fù) 1條回復(fù)
  • dy-VfKQBTES 2024-06-10 17:01
    老師,能不能發(fā)我一下資料,謝謝! 48****@****.com
    回復(fù) 1條回復(fù)
  • refale 2024-05-27 06:49
    老師,能不能發(fā)我一下資料,謝謝! 03****@****.com
    回復(fù) 1條回復(fù)
  • dy-Qdm76yft 2024-03-18 18:31
    這個電路可以用嗎
    回復(fù)
  • songxium 2024-01-26 13:47
    老師,能不能發(fā)我一下資料,謝謝! so****@****.com
    回復(fù) 1條回復(fù)
  • power小白 2024-01-08 23:32
    老師,能不能發(fā)我一下資料,謝謝! 13****@****.com
    回復(fù) 1條回復(fù)
  • dy-fr7bqalt 2024-01-04 16:10
    老師,能不能發(fā)我一下資料,謝謝! da****@****.com
    回復(fù) 1條回復(fù)
  • dy-iGugTBNk 2023-12-21 17:30
    老師,能不能發(fā)我一下資料,謝謝! pe****@****.com
    回復(fù) 1條回復(fù)
  • anono 2023-09-11 13:49
    老師,能不能發(fā)我一下資料,謝謝! 10****@****.com
    回復(fù) 1條回復(fù)
  • dy-MaQAbUg3 2023-09-11 08:30
    老師,能不能發(fā)我一下資料,謝謝! 172809727@qq.com
    回復(fù)
  • dy-CD2VqjDm 2023-08-15 20:20
    老師,能不能發(fā)我一下資料,謝謝! do****@****.com
    回復(fù) 1條回復(fù)
  • dy-GQbyZem1 2023-05-25 09:17
    老師,能不能發(fā)我一下資料,謝謝! 22****@****.com
    回復(fù) 1條回復(fù)
  • sdll825 2023-03-16 14:13
    老師,能不能發(fā)我一下資料,謝謝! sd****@****.com
    回復(fù)
  • yangwenlong 2023-02-28 21:46
    老師,能不能發(fā)我一下資料,謝謝! ya****@****.com
    回復(fù) 1條回復(fù)
  • dy-xWcvWNJV 2023-02-17 15:39
    老師,能不能發(fā)我一下資料,謝謝! albert1105@qq.com
    回復(fù)
  • 熊紅 2022-11-27 11:25
    老師,能不能發(fā)我一下資料,謝謝! m1****@****.com
    回復(fù) 1條回復(fù)
  • dyy831 2022-11-07 12:16
    老師,能不能發(fā)我一下資料,謝謝! 49****@****.com
    回復(fù) 1條回復(fù)
  • hack100000 2022-09-14 11:27
    老師,能不能發(fā)我一下資料,謝謝! lo****@****.com
    回復(fù) 1條回復(fù)
主站蜘蛛池模板: 平昌县| 呼图壁县| 新河县| 乐昌市| 尼木县| 本溪| 枣阳市| 景德镇市| 阳江市| 大方县| 贵阳市| 青川县| 于都县| 客服| 江阴市| 河西区| 大港区| 宝丰县| 大名县| 辰溪县| 景东| 盐源县| 读书| 双鸭山市| 重庆市| 阳城县| 金溪县| 东莞市| 来凤县| 江达县| 荔波县| 蒲城县| 延安市| 大方县| 武宁县| 汨罗市| 新晃| 普陀区| 汝阳县| 清远市| 治多县|