標(biāo)題: ST MCU定時(shí)器應(yīng)用中的死區(qū)控制話題 [打印本頁(yè)]

作者: taoran    時(shí)間: 2016-1-2 02:06
標(biāo)題: ST MCU定時(shí)器應(yīng)用中的死區(qū)控制話題
本文作者:Miler Shao
ST MCU
各系列中的高級(jí)定時(shí)器都帶有死區(qū)控制和剎車功能,一般來(lái)說(shuō)死區(qū)和剎車控制主要用于馬達(dá)或類似控制中。這里主要聊聊基于STM32高級(jí)定時(shí)器死區(qū)控制相關(guān)話題,分三個(gè)話題來(lái)談。

  1. 何謂死區(qū)?為什么要設(shè)計(jì)死區(qū)?

  2. STM32高級(jí)定時(shí)器中的死區(qū)的計(jì)算。

  3. STM32高級(jí)定時(shí)器配置死區(qū)參數(shù)不合適時(shí)的問(wèn)題。


一、何謂死區(qū)?為什么要設(shè)計(jì)死區(qū)?

說(shuō)死區(qū)這個(gè)概念其實(shí)范圍很廣,很多地方都會(huì)談及到,個(gè)人理解為某個(gè)處于相對(duì)無(wú)效狀態(tài)的時(shí)間或空間。下面要談的死區(qū)是針對(duì)STM32高級(jí)定時(shí)器輸出PWM驅(qū)動(dòng)馬達(dá)時(shí)的某個(gè)無(wú)效狀態(tài)時(shí)段。

先看一副逆變器電機(jī)驅(qū)動(dòng)原理示意圖。這里有三組橋臂,每組橋臂又分上下橋臂。


各個(gè)橋臂由功率器件組成,比如IGBT,在驅(qū)動(dòng)三相馬達(dá)時(shí),各個(gè)橋臂是按照一定的規(guī)律輸出一系列PWM方波來(lái)驅(qū)動(dòng)馬達(dá)的運(yùn)轉(zhuǎn)。從PWM控制技術(shù)的應(yīng)用上可能有不同的實(shí)現(xiàn)方法,但你不論用什么實(shí)現(xiàn)方法,每一相的上下兩個(gè)橋臂不可以同時(shí)導(dǎo)通,否則電源會(huì)通過(guò)上下兩個(gè)橋臂形成短路出現(xiàn)燒毀及其它異常

理論上講,每組橋臂的上下臂呈互補(bǔ)關(guān)驅(qū)動(dòng)系,即上臂導(dǎo)通,下臂截止,反之亦然。實(shí)際上那些晶體管的開關(guān)動(dòng)作本身一定有時(shí)延問(wèn)題、而且不同晶體管動(dòng)作的延時(shí)還有差異。鑒于此,為了避免上下臂同時(shí)導(dǎo)通的隱患,就額外設(shè)置一個(gè)時(shí)段,保證讓上下臂都呈截止?fàn)顟B(tài),這個(gè)時(shí)段就是死區(qū)。

STM32芯片為例,下面是某通道的內(nèi)部中間參考信號(hào)【OCXREF】及其互補(bǔ)輸出PWM信號(hào)OCXOCXN插入了死區(qū)后的時(shí)序圖。假設(shè)OCX和OCXN互補(bǔ)通道極性都是高有效,且上下臂均是高電平有效導(dǎo)通。



本來(lái)
OCX信號(hào)與OCXREF時(shí)序同相同步,OCXN信號(hào)與OCXREF時(shí)序反相同步。但為了安全考慮,OCXREF為參考基準(zhǔn)OCXNOCX通道將理論上本該導(dǎo)通的時(shí)間點(diǎn)往后延時(shí)一下,即做從截止切換到導(dǎo)通狀態(tài)的延時(shí)。這樣做的目的就是為了避開上下臂出現(xiàn)同時(shí)導(dǎo)通的情況。請(qǐng)注意紅色字,理解死區(qū)插入的延時(shí)參考是什么,在什么時(shí)刻插入,OCXREF就是參考基準(zhǔn)。不管你怎么調(diào)整死區(qū),OCXREF是不會(huì)變的。導(dǎo)通電平可能是高也可能是低,所以不能簡(jiǎn)單地說(shuō)死區(qū)插入是在上升沿或下降沿之前,而應(yīng)該說(shuō)死區(qū)插入是在有效電平前。

二、STM32高級(jí)定時(shí)器中的死區(qū)如何計(jì)算

STM32高級(jí)定時(shí)器的死區(qū)設(shè)置為例,我們只需簡(jiǎn)單配置下寄存器就好,其它硬件負(fù)責(zé)搞定。這里以STM32F407芯片的TIM1為例來(lái)看看死區(qū)時(shí)間如何計(jì)算。

計(jì)算公式就在TIMX_BDTR里有給出,其中那個(gè)CK_INT時(shí)鐘就是來(lái)自RCC供給TIMX外設(shè)的時(shí)鐘,Fdts可以通過(guò)TIMX_CR1相關(guān)寄存器位選擇配置。DT即為死區(qū)時(shí)間。


計(jì)算時(shí),先確定Tdts,然后結(jié)合你需要的死區(qū)時(shí)間選擇相應(yīng)的計(jì)算檔位,最后確定DTG[70]。假設(shè)STM32f407TIM1工作在168M,設(shè)置Tdts=1/168 us,死區(qū)設(shè)置

4us,經(jīng)過(guò)估算該死區(qū)時(shí)間落在DTG[7:5]=111段。

先算得DTG[4:0]=01010B,再跟DTG[7:5]組合在一起,最后算得DTG[7:0]=11101010B,即0xEA.

需要注意的是,死區(qū)時(shí)間的計(jì)算是分段計(jì)算的,各段的時(shí)間步長(zhǎng)和計(jì)算方式有差別,不可隨便填寫數(shù)據(jù)。

三、死區(qū)參數(shù)設(shè)置不合適出現(xiàn)的問(wèn)題

經(jīng)常遇到有人在使用STM32高級(jí)定時(shí)器的死區(qū)控制時(shí),反映說(shuō)沒(méi)加死區(qū)前好好的,加死區(qū)后PWM輸出就異常了。問(wèn)及死區(qū)時(shí)間及定時(shí)器相關(guān)參數(shù)設(shè)置時(shí),往往不是很清楚。

其實(shí)死區(qū)不能隨便配置的,必須合適、合理。死區(qū)時(shí)間不能比嵌入死區(qū)前的互補(bǔ)通道的有效脈沖還寬,否則相應(yīng)通道的輸出呈無(wú)效狀態(tài)。這也不難理解,當(dāng)死區(qū)時(shí)間比它本該進(jìn)入有效狀態(tài)的脈沖還長(zhǎng)的話,自然整個(gè)周期都處于無(wú)效狀態(tài)了。

下面是STM32高級(jí)定時(shí)器死區(qū)設(shè)置不合理時(shí)的互補(bǔ)通道輸出時(shí)序圖!具@里假設(shè)CCXP=CCXNP=0CCXE=CCXNE=1,MOE=1


根據(jù)上面假設(shè)前提,Figure121OCXREF的低電平對(duì)應(yīng)著OCXN的有效電平,現(xiàn)在死區(qū)延時(shí)比它有效電平本身還長(zhǎng),沒(méi)辦法OCXN只能一路無(wú)效輸出,即呈現(xiàn)低電平。同樣,Figure 122OCXREF的高電平對(duì)應(yīng)著OCX的有效電平,但現(xiàn)在死區(qū)延時(shí)比它有效電平本身還長(zhǎng),OCX也只能一路無(wú)效輸出,即呈現(xiàn)低電平。換句說(shuō),當(dāng)死區(qū)時(shí)間比有效電平還長(zhǎng)時(shí),就沒(méi)有機(jī)會(huì)輸出有效電平了。

從上面的分析我們了解到,插入死區(qū)是出于對(duì)馬達(dá)控制系統(tǒng)的安全考慮,但死區(qū)又是以犧牲有效驅(qū)動(dòng)脈沖時(shí)間為代價(jià)的。可以想象,另一方面講死區(qū)也會(huì)帶來(lái)一些不利因素,有興趣的可以找相關(guān)專著閱讀。


作者: liuzhiping    時(shí)間: 2016-4-17 16:08
好文,多謝
作者: hheyy    時(shí)間: 2018-8-2 14:13
馬克,謝謝
作者: 彭偉0427    時(shí)間: 2018-8-4 10:17
F103的死區(qū)配置過(guò)程有嗎
作者: son2011    時(shí)間: 2019-10-21 14:20
好文,學(xué)習(xí)了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1