掌握MCU軟件設(shè)計(jì)準(zhǔn)則 實(shí)現(xiàn)直流馬達(dá)控制精準(zhǔn)度提升
MCU軟件襄助 永磁DC馬達(dá)更適于反轉(zhuǎn)應(yīng)用
永磁DC馬達(dá)通常被用于須要反轉(zhuǎn)馬達(dá)方向的應(yīng)用中。為了反轉(zhuǎn)旋轉(zhuǎn)方向,須要反轉(zhuǎn)馬達(dá)上電壓的極性。這須要使用H橋電路(圖3),H橋電路有四個(gè)晶體管。當(dāng)在正方向驅(qū)動(dòng)馬達(dá)時(shí),Q4打開,PWM信號(hào)應(yīng)用于晶體管Q1。在反方向上驅(qū)動(dòng)馬達(dá),Q3打開,PWM信號(hào)應(yīng)用于晶體管Q2。在這個(gè)范例中,下部的晶體管被用于PWM速度控制;上部的晶體管被用于轉(zhuǎn)向,使用這種拓?fù)浣Y(jié)構(gòu),可以在兩個(gè)方向上提供變速控制。
圖3 DC馬達(dá)全橋電路
在圖3中,N通道功率MOSFET被用于低壓側(cè)晶體管,P通道功率MOSFET被用于高壓側(cè)晶體管。對(duì)于驅(qū)動(dòng)20V以下的DC馬達(dá)來說,利用互補(bǔ)功率MOSFET是非常符合成本效益的。如圖3所示,低壓側(cè)閘極驅(qū)動(dòng)器帶有反相器;而高壓側(cè)閘極驅(qū)動(dòng)器沒有反相器。閘極驅(qū)動(dòng)器極性被選擇,以確保當(dāng)端口引腳在弱上拉?動(dòng)的重置配置模式下,功率晶體管處于關(guān)閉狀態(tài)。
該范例軟件建構(gòu)在基本范例代碼上。主回路現(xiàn)在包括一個(gè)if語句檢查反轉(zhuǎn)開關(guān)SW1的狀態(tài)。當(dāng)反轉(zhuǎn)按鍵被按下,PWM停止運(yùn)作,同時(shí)所有P0輸出也同樣被禁止。當(dāng)按鍵釋放后,馬達(dá)將反轉(zhuǎn)方向。范例軟件中的初始化函數(shù)類似于DC有刷馬達(dá)控制,只是除了增加額外的推挽式輸出引腳配置之外。
調(diào)用reverse()函數(shù)反轉(zhuǎn)馬達(dá)方向。標(biāo)志位Fwd用于保存馬達(dá)狀態(tài),F(xiàn)wd位被切換用于判斷哪些輸出須要啟動(dòng)。
反轉(zhuǎn)馬達(dá)還存在一個(gè)潛在的問題。當(dāng)反轉(zhuǎn)開關(guān)SW1被按下時(shí),馬達(dá)可能由于馬達(dá)慣性而繼續(xù)旋轉(zhuǎn)一段時(shí)間。當(dāng)馬達(dá)正在轉(zhuǎn)動(dòng)時(shí),它將產(chǎn)生與馬達(dá)速度成比例關(guān)系的反向電動(dòng)勢(shì);如果馬達(dá)停止旋轉(zhuǎn)之前反向按鍵被釋放,馬達(dá)反向電動(dòng)勢(shì)將透過上部晶體管而短路,如下所述。
參考圖4,假設(shè)開始時(shí)Q4處于打開狀態(tài),馬達(dá)正在正方向上旋轉(zhuǎn);假設(shè)馬達(dá)正在運(yùn)行,并且反向電動(dòng)勢(shì)大約為6V?,F(xiàn)在反轉(zhuǎn)開關(guān)被按下,所有四個(gè)晶體管被關(guān)閉,馬達(dá)右側(cè)將比左側(cè)高約6V;然后開關(guān)釋放,打開Q3,馬達(dá)左側(cè)被上拉到電源電壓,馬達(dá)的反向電動(dòng)勢(shì)必透過Q4的內(nèi)部二極管而短路。
圖4 DC馬達(dá)反轉(zhuǎn)危害
最終的結(jié)果是,馬達(dá)停止,在馬達(dá)機(jī)械慣性中儲(chǔ)存的所有能量被注入Q4。反轉(zhuǎn)過程中很容易損壞上部晶體管,在一些具有較大摩擦力負(fù)載的應(yīng)用中,一個(gè)固定延遲時(shí)間可以確保馬達(dá)有足夠時(shí)間停止。而在其他應(yīng)用中,馬達(dá)可能須要花費(fèi)幾秒鐘才完全停止,這個(gè)問題的通用解決方案,如圖4所示。
軟件防護(hù)法助力 DC馬達(dá)反轉(zhuǎn)控制更安全
這個(gè)用于DC馬達(dá)的軟件范例基于第二個(gè)范例,提供軟件防護(hù)方法。為了安全的反轉(zhuǎn)DC馬達(dá),我們須要判斷馬達(dá)是否還處于運(yùn)轉(zhuǎn)中。
確定馬達(dá)是否仍然處于旋轉(zhuǎn)狀態(tài)的簡(jiǎn)單而有效方法,是測(cè)量跨接在馬達(dá)端子上的電壓差。ADC能夠被配置,去測(cè)量模擬多路選擇器中的任意兩個(gè)輸入引腳上的差動(dòng)電壓??沙绦蛟O(shè)計(jì)的窗口檢測(cè)器也可以用于判斷差動(dòng)電壓是否屬于默認(rèn)極限。在這個(gè)范例軟件中,如果差動(dòng)馬達(dá)電壓在100毫秒(ms)內(nèi)保持在滿量程的3%以下,那么馬達(dá)即開始反轉(zhuǎn)。具備電壓感應(yīng)功能的DC馬達(dá)驅(qū)動(dòng)的硬件實(shí)現(xiàn),類似于在馬達(dá)端子上分別添加兩個(gè)電阻分壓器(圖5)。
圖5 帶有電壓感應(yīng)能力的DC馬達(dá)驅(qū)動(dòng)
主回路已經(jīng)被改進(jìn)用來檢測(cè)馬達(dá)是否停止。detectStop()函數(shù)首先配置ADC去測(cè)量差動(dòng)電壓,ADC和窗口檢測(cè)器都適用于查詢模式。如果ADC值在默認(rèn)窗口范圍內(nèi),那么計(jì)數(shù)器增加。使用實(shí)現(xiàn)10ms延遲的定時(shí)器T0設(shè)置采樣時(shí)間,任何在窗口之外的采樣值將重置定時(shí)器,退出while回路之前,它將使用十個(gè)連續(xù)的采樣值;返回到主回路之前,detectStop()函數(shù)將重新配置ADC去測(cè)量速度電位器。
評(píng)論