如何用N76E003做無(wú)刷電機(jī)控制器?
網(wǎng)上關(guān)于單片機(jī)BLCD驅(qū)動(dòng)資料很多,但能通俗易懂的少,看這些資料不得要領(lǐng)、源代碼更是看得是一頭霧水,尤其關(guān)于PWM、換相完全不得其法。本文,就準(zhǔn)備以最基本的通俗易懂的思維,帶大家一步一步的來(lái)了解無(wú)刷電動(dòng)機(jī)驅(qū)動(dòng)的思路和設(shè)計(jì)。
由于屬于入門級(jí)別的,所以只以有霍爾的三相無(wú)刷電機(jī)為例子來(lái)展開。其實(shí)搞懂了有霍爾,則無(wú)霍爾也僅僅只是程序上的升級(jí)版而已。
網(wǎng)上關(guān)于三相無(wú)刷電機(jī)的基本原理、UVW接法,轉(zhuǎn)動(dòng)原理就不重復(fù)了,這里就直接核心的內(nèi)容,先根據(jù)霍爾來(lái)展開。
霍爾傳感器,這里也假定大家已經(jīng)知道其基本原理和輸出信號(hào)(如果想理解原理,大家另行去找資料看),這里所說(shuō)的,是已經(jīng)獲取到完整的霍爾信號(hào),并進(jìn)一步就霍爾信號(hào)和驅(qū)動(dòng)信號(hào)來(lái)一步一步的展開。
說(shuō)起霍爾,又繞不過(guò)去一個(gè)令很多人疑惑的概念:120°和60°。
所謂120°霍爾,和60°霍爾,從實(shí)際上來(lái)說(shuō),是以物理角度安裝位置就可以明確區(qū)分的,其安裝角度步距角度為60°就叫60°霍爾,120°的類推。
下面是旋轉(zhuǎn)一個(gè)360度電氣角度的120°霍爾信號(hào)時(shí)序:
行業(yè)標(biāo)準(zhǔn)霍爾編碼從100開始,這里圖片的波形時(shí)序也按照該標(biāo)準(zhǔn)。
這里特別稱為360度電氣角度,是因?yàn)椋?60度完成了一個(gè)循環(huán),而并不是電機(jī)轉(zhuǎn)了360°,電機(jī)到底轉(zhuǎn)了多少角度還和電機(jī)的極數(shù)有關(guān),極數(shù)越多,則360°一個(gè)循環(huán)驅(qū)動(dòng)周期電機(jī)轉(zhuǎn)動(dòng)的角度越小。UVW都是一個(gè)極的,則電機(jī)真的轉(zhuǎn)了360度,而都是2個(gè)極的則只轉(zhuǎn)了180°,以此類推,這個(gè)大家了解就好,關(guān)系就是驅(qū)動(dòng)扭矩和轉(zhuǎn)速等的區(qū)別,和原理、程序基本沒什么區(qū)別。
下圖是60°霍爾信號(hào)的時(shí)序:
對(duì)比上面2個(gè)時(shí)序圖,大家應(yīng)該可以發(fā)現(xiàn),60°和120°時(shí)序的差別,也就是各個(gè)霍爾是在角度差異120°還是60°時(shí)候改變狀態(tài)而已。
現(xiàn)在,我們把60°霍爾的Hb信號(hào)反一個(gè)相,或者在電機(jī)上面轉(zhuǎn)換一個(gè)面安裝,同時(shí)把這個(gè)這個(gè)信號(hào)當(dāng)成Hc,而把原來(lái)的Hc當(dāng)成Hb,再來(lái)看看新是時(shí)序邏輯,發(fā)現(xiàn)了沒,它就是120°霍爾的時(shí)序圖了。圖是直接在60度時(shí)序上面變換,所以看起來(lái)第一順序就不是典型的100了,大家順延類推就好。
這就是網(wǎng)上常常說(shuō)的,60°-120°其實(shí)安裝位置是一樣的,只是中間一個(gè)反了個(gè)個(gè)安裝而已說(shuō)法的由來(lái),當(dāng)然這個(gè)說(shuō)法好像都忽略了,相位順序最后2個(gè)必須顛倒一下。
上面說(shuō)了120°和60°的關(guān)系了,相信大家都已經(jīng)明白,其實(shí)這些問(wèn)題,如果放到程序里面去處理,會(huì)更加簡(jiǎn)單,所以,這里就只討論120°霍爾條件下的電機(jī)及其驅(qū)動(dòng),弄清楚這個(gè),大家肯定可以非常簡(jiǎn)單的處理出60度霍爾的對(duì)應(yīng)方法。
圖為一個(gè)三相無(wú)刷電機(jī)典型的輸出驅(qū)動(dòng)線路簡(jiǎn)化圖。這里分別標(biāo)注了各個(gè)驅(qū)動(dòng)信號(hào)的位置和意義,當(dāng)然這里的AH---CL都只是邏輯上的高低電平表述,實(shí)際上我們必須通過(guò)浮柵驅(qū)動(dòng)等手段來(lái)實(shí)現(xiàn)MOS管的具體驅(qū)動(dòng)線路,這些,會(huì)在后面講到。
有了典型驅(qū)動(dòng)線路,那么,我們?cè)撛趺慈ヲ?qū)動(dòng)這個(gè)線路能?
下面就通過(guò)另一個(gè)時(shí)序圖,清楚的了解一下單片機(jī)各驅(qū)動(dòng)端輸出邏輯和霍爾的關(guān)系。
經(jīng)過(guò)對(duì)單片機(jī)6個(gè)端口的驅(qū)動(dòng)時(shí)序要求,我們進(jìn)一步分析,可以得到時(shí)序圖后面標(biāo)注的輸出和霍爾ABC的邏輯關(guān)系。各個(gè)關(guān)系自己看圖就好了。
對(duì)應(yīng)這樣的驅(qū)動(dòng)時(shí)序要求,我們會(huì)單片機(jī)編程的,已經(jīng)在想了,這邏輯實(shí)現(xiàn)起來(lái),在程序上面不怎么難嘛,是的,這就是我們說(shuō)的換相邏輯,其實(shí),到這里,如果你會(huì)基本的編程,那么你就已經(jīng)可以根據(jù)輸入的3個(gè)霍爾信號(hào),編程完成AH-CL6個(gè)驅(qū)動(dòng)IO端口的邏輯了。為了編程過(guò)程更加清晰明了,我們下面根據(jù)上圖的換相邏輯,用一個(gè)混合的邏輯圖來(lái)進(jìn)一步說(shuō)明:
這里,我們把3個(gè)IO,分別接到3個(gè)霍爾信號(hào)端,同時(shí)采用N76E003管腳中斷方式,每個(gè)霍爾狀態(tài)變化都將引起一次中斷,用一個(gè)寄存器(可位尋址),每個(gè)中斷分別讀取3個(gè)霍爾點(diǎn)位,并取反存儲(chǔ)到對(duì)應(yīng)bit,然后根據(jù)豎線所表示的邏輯關(guān)系,直接邏輯運(yùn)算,就已經(jīng)獲得了各端口輸出信號(hào),如果我們把各位集中暫存在某寄存器,等六位完成后,一次性送到一個(gè)IO寄存器,就可以一次性輸出變化后的驅(qū)動(dòng)信號(hào),而不會(huì)有任何時(shí)序上的先后。
上面的霍爾換相驅(qū)動(dòng),我們是基于時(shí)序圖并用基本的邏輯運(yùn)算來(lái)實(shí)現(xiàn),看起來(lái)有點(diǎn)復(fù)雜,其特點(diǎn)是思路明確,直接模擬邏輯運(yùn)算過(guò)程實(shí)現(xiàn)換相。缺點(diǎn)是程序過(guò)程稍嫌復(fù)雜,換相運(yùn)算量相對(duì)大點(diǎn),而這個(gè)是不利于提高轉(zhuǎn)速的。
那么是不是有更簡(jiǎn)潔快速的方法呢?當(dāng)然有,我們馬上可以想到另外一種常用手段那就是查表。我只需要把可能的幾種組合,變成表里面的數(shù)據(jù),直接查表不就成了。
請(qǐng)看下面的圖:
我們把各輸出端口,分別定義為bit5-bit0,其中,AH=bit5;AL=bit4;....CL=bit0,程序輸出時(shí)候,這些位,將直接對(duì)應(yīng)單片機(jī)P端口的輸出寄存器。
再看看把霍爾信號(hào)當(dāng)成地址數(shù)據(jù),則可以發(fā)現(xiàn),地址占3位,而狀態(tài)只有6種就開始重復(fù)了,那么其中有000和111是非法地址,其他都是合法地址。根據(jù)上面的思路,我們按照地址升序排列,就可以獲得下面的表格:
就這樣,當(dāng)霍爾信號(hào)邊沿變化,中斷到來(lái)時(shí)候,我們只需要檢查一下是不是非法地址,并直接排除,然后就把霍爾數(shù)據(jù)當(dāng)成3位地址查表,將查表數(shù)據(jù)直接填入到IO輸出寄存器,就實(shí)現(xiàn)了非常簡(jiǎn)單的換相邏輯,而且運(yùn)算量非常小。
到這里,有人會(huì)問(wèn)了,你上面描述的,換相是有了,可都只是方波,這里沒PWM什么事情啊。對(duì)的,為了清除的說(shuō)明問(wèn)題,這里還真沒有加入PWM,你可以理解為,上面說(shuō)的所有換相邏輯,都是PWM100%時(shí)候的波形,也就是,如果我們按照上面的去做,我保證電機(jī)完全可以正常轉(zhuǎn)起來(lái)的,缺點(diǎn)就是轉(zhuǎn)起來(lái)就是最高速度,它是不會(huì)調(diào)速的.......。當(dāng)然還有啟動(dòng)時(shí)候電流大什么的,這些我們暫時(shí)就先忽略了吧。
電機(jī)不能調(diào)速怎么成,我們當(dāng)然必須要能夠用PWM無(wú)級(jí)變速、那么實(shí)際的速度控制的我們?cè)撛趺醋瞿兀?/span>
其實(shí)非常簡(jiǎn)單,我們把上面描述的換相邏輯當(dāng)中的波形,每路驅(qū)動(dòng)信號(hào)幅度為1的那高電平部分,直接替換成我們可以控制的PWM信號(hào),則一個(gè)帶PWM調(diào)速的無(wú)刷有霍爾電機(jī)就完成了。
當(dāng)我們能夠把輸出變成這樣一種驅(qū)動(dòng)信號(hào)的時(shí)候,再描述一下PWM調(diào)速的過(guò)程:
當(dāng)我們準(zhǔn)備運(yùn)轉(zhuǎn)電機(jī)時(shí)候,則單片機(jī)PWM開始增加,然后電機(jī)在換相邏輯控制下,輸出符合上面時(shí)序圖的帶PWM的驅(qū)動(dòng)波形,然后電機(jī)開始旋轉(zhuǎn),在某個(gè)合適的PWM占空比條件下,電機(jī)最終就會(huì)穩(wěn)定在一個(gè)合適的速度,而不再是上面那個(gè)簡(jiǎn)單方波,一接上電機(jī),電機(jī)就是全速運(yùn)轉(zhuǎn)。
到這里,關(guān)于換相邏輯的部分都已經(jīng)說(shuō)明白了,那么我們?cè)趺淳唧w去實(shí)現(xiàn)呢?
N76E003其實(shí)為電機(jī)驅(qū)動(dòng)做好了充分的準(zhǔn)備,人家芯片硬件都弄的好好的,我們只需要把這些硬件驅(qū)動(dòng)起來(lái)便是了。。。
編輯:admin 最后修改時(shí)間:2020-11-04