江蘇百虹電子有限公司
電話:0510-87508680
手機:18915508393
傳真:0510-85306157
E-Mail:sales@bellhope.com
公司地址:江蘇省無錫市宜興市周鐵鎮太湖西岸科創園46-201&301
作者: 點擊:1760 發表時間:2020-08-31
在程序上,我們綜合考慮單片機的處理速度,采用定時中斷去檢測相位變化,中斷周期采用128μS,中斷源可使用TMR0,或者PWM本身的TMR2中斷。
我們先列一下電動車無刷馬達控制器的基本要求:
功能性要求:
1.電子換相
2.無級調速
3.剎車斷電
4.附加功能
a.限速
b.1+1助力
c.EBS柔性電磁剎車
d.定速巡航
e.其它功能(消除換相噪音,倒車等)
安全性要求:
1.限流驅動
2.過流保護
3.堵轉保護
3.電池欠壓保護
4.節能和降低溫升
5.附加功能(防盜鎖死,溫升限制等)
6.附加故障檢測功能
從上面的要求來看,功能性要求和安全性要求的前三項用專用的無刷馬達驅動芯片加上適當的外圍電路均不難解決,代表芯片是摩托羅拉的MC33035,早期的控制器方案均用該集成塊解決。但后來隨著競爭加劇,很多廠商都增加了不少附加功能,一些附加功能用硬件來實現就比較困難,所以使用單片機來做控制的控制器迅速取代了硬件電路芯片。
但是硬件控制和軟件控制有很大的區別,硬件控制的反應速度僅僅受限于邏輯門的開關速度,而軟件的運行則需要時間。要使軟件跟得上電機控制的需求,就必須要求軟件在的時間內能夠正確處理換相,電流限制等各種復雜動作,這就涉及到一個對外部信號的采樣頻率,采樣時機,信號的內部處理判斷及處理結果的輸出,還有一些抗干擾措施等,這些都是軟件設計中需要再三仔細考慮的東西。
PIC16F72是一款哈佛結構,精簡指令集的MCU,由于其數據總線和指令總線分開,總共35條單字指令,0-20M的時鐘速度,所以其運算速度和抗干擾性能都非常,2K字長的FLASH程序空間,22個可用的IO口,同時又附加了3個定時/計數器,5個8位AD口,1個比較/捕捉/脈寬調制器,8個中斷源,這些優異的性能為電動車控制器控制提供了良好的硬件環境和軟件基礎,一經推出就贏得眾多設計人員的熱捧。
那么如何使用PIC16F72來設計一個電動車控制器呢?我們下面以目前市面流行的硬件設計為基礎,盡量通俗易懂地介紹一下程序設計思路和注意點。
要使無刷電機轉起來,并且聽從駕駛者的調速、剎車等基本指揮,基本的要求就是要實現硬件所能實現的電子換向和調速,剎車等功能。實際上軟件的整體設計也和硬件一樣,也是一個模塊化堆砌的過程,問題在于模塊的合理化堆砌,使堆砌后形成的整體能夠堅固,協調、運作。我們先說一說各種模塊功能的簡單實現,然后再來討論如何使這些模塊協調運轉。
1.首先說說電子換相模塊
我們知道,直流永磁電機在運轉時需要一對電刷和與線圈相對應的換向整流子來使線圈中的電流方向根據磁場方向來不斷改變,從而轉子持續向一個方向運轉,我們稱這種電機為有刷電機,在電動車剛剛面世時一般均使用這種電機,但有刷電機有一個致命的缺陷,就是用作電刷的碳刷非常容易磨損,換向整流子也非常容易被油污,碳刷碎屑填滿空隙而漏電,而且功率越大,這種毛病越嚴重,導致有刷電機維護量和故障率急劇上升,嚴重影響其推廣,因此在較大功率的場合,無刷電機應運而生。
無刷電機,顧名思義就是沒有了電刷,不能自動換向,因此要依靠傳感器檢測轉子的位置、用電子開關來改變線圈中電流的方向,所以其控制器要對轉子永磁體位置進行檢測,并用電子開關切換不同繞組通電以獲得持續向前的動力。轉子位置檢測傳感器有很多,比如光傳感器,磁感應傳感器等,電子開關可以用大功率三極管、功率型場效應管、IGBT等制作,在目前的絕大多數電動車三相無刷電機中均使用三個開關式的霍爾傳感器檢測永磁體相對于定子線圈的位置,控制器跟據三個霍爾傳感器輸出的六種不同信號輸出相應的控制信號驅動功率型場效應管(MOSFET)組成的電子開關向馬達供電。這就是所謂六步換相法。從電機原理可以看出,這種電機是一種特殊的同步電機,因此換相必須及時,否則會導致電機失步,從而使電機噪音增大,效率降低,嚴重的還會導致控制器,電機燒毀。
鑒于以上要求,我們先必須測一下市面上普通的無刷馬達在轉速時(考慮到順風和下坡的情況)的換向情況,這個比較簡單,用示波器測量之后得到在速時每相霍爾傳感器輸出的頻率大概在140HZ左右,折合到換向的時間,那么應該是1.2mS左右換相一次,根據際的使用效果,軟件的反應時間必須在0.12mS左右,也就是說在檢測到換相信號的改變并且輸出換相驅動信號時的過程必須在0.1-0.2mS之內完成。
另一個需要考慮的是,電機驅動是一個大電流驅動,又是一個電感性負載,控制器在運行時不可避免有干擾引入,因此除了在硬件布局,布線上注意外,軟件上也要做相應的抗干擾措施以避免錯誤的換向動作。考慮到輸入到單片機的換相信號容易受干擾,加上線路上濾波電容的影響,單片機程序在讀取換相信號時應至少連續讀取3次,以3次信號完全一致時才采用該值作為換相信號的真值,如果其中一次不對,那么干脆就重新再讀3次,這就是一個有抗干擾措施的鑒相過程。取得換相信號后,我們將其與上次讀到的值做對比,如果相同,則表示沒有換相,如果不同,則要跟據這個值去取得一個相對應的驅動信號,從而驅動電子開關動作。這個過程可以使用逐項比較法,查表法等來實現。鑒于查表法比較快捷,一般使用查表法。其中需要考慮的是,一旦獲得的信號與所有的六個信號都不相同,可能表示電機中霍爾元件或者其連接線路出現故障,此時我們應該讓電機斷電以避免誤操作。
市面上有兩種電機,即所謂的120°和60°霍爾信號,這個角度代表三個霍爾器件輸出的三相電信號其相位角相差的角度,其實這里面的區別僅僅是電平的不一樣,在馬達內部的安裝上,位置沒什么不同,只是中間一相的相位相反,所以仍然是六種信號對應六種驅動,軟件上將表稍作調整即可。需要提一下的是,在120°的霍爾信號中,不可能出現二進制0B000和0B111的編碼,所以在一定程度上避免了因霍爾零件故障而導致的誤操作。因為霍爾元件是開路輸出,高電平依靠電路上的上拉電阻提供,一旦霍爾零件斷電,霍爾信號輸出就是0B111。一旦霍爾零件短路,霍爾信號輸出就是0B000,而60°的霍爾信號在正常工作時這兩種信號均會出現,所以一定程度上影響了軟件判斷故障的準確率。目前市面馬達已經逐漸舍棄60°相位的霍爾排列。
編程提示:
在程序上,我們綜合考慮單片機的處理速度,采用定時中斷去檢測相位變化,中斷周期采用128μS,中斷源可使用TMR0,或者PWM本身的TMR2中斷。在同一個中斷中,我們還將安排其它更重要的工作,這個在后面的電流控制中再說明。