1 KF8S1101面向BLDC控制的特性
u ChipON自主的KungFu內(nèi)核——高效的處理器平臺
? 典型的RISC架構(gòu),程序存儲器和數(shù)據(jù)存儲器分開
? 具有8個8位寄存器組成的寄存器組堆
? SFR無需分組,簡化程序設(shè)計和代碼密度
? 16bit指令代碼,多數(shù)指令在一個周期內(nèi)完成
? 工作頻率*高20MHZ
u 面向BLDC控制的豐富的外設(shè)
? 帶死區(qū)控制的增強型PWM,每個通道極性可獨立設(shè)置
? 緊急故障輸入端口,內(nèi)部自帶比較器,自動關(guān)斷PWM輸出
? 可觸發(fā)ADC事件,PWM中間點采樣電流
? 內(nèi)部集成無霍爾信號檢測陣列,降低外圍器件成本
2 軟件庫特點
u 簡單易用,提供完整的樣例程序
u 支持有霍爾模式/無霍爾模式
u 平穩(wěn)的無霍爾啟動算法
u PI恒流控制
u 詳盡完善的方案保護功能
u 改進的控制算法,電機適應(yīng)性廣
u 針對不同電機參數(shù),只需在頭文件中更改宏定義參數(shù)
u 提供硬件參考電路,結(jié)合樣例程序,用戶針對具體應(yīng)用開發(fā)周期短
3 開發(fā)套件的使用
提供完整的開發(fā)環(huán)境(IDE)、ANSI C99標準的C編譯器、仿真器、編程器和DEMO 評估板,詳盡的用戶手冊和免費的軟件源程序代碼。用戶無需設(shè)計硬件即可進行馬達驅(qū)動性能的評估,方便用戶針對具體應(yīng)用添加和刪減代碼,開發(fā)出符合需求、高性價比的產(chǎn)品。
下圖為基于KF8S1101芯片設(shè)計的工作電壓DC24V的DEMO板。
圖1 KF8S1101 BLDC DEMO板
3.1 BLDC控制板主要接口說明
1.電機相線接口,從上到下依次為電機相線U、V、W。
2.控制板工作電源,左邊為正,右邊為負。Rated Voltage 額定電壓: 24V (DC),Voltage Range 使用電壓范圍: 9-26V(DC)。
3.電機霍爾信號接口,從左到右依次霍爾電源、霍爾信號U相、霍爾信號V相、霍爾信號W相、霍爾地。
4.電機正反轉(zhuǎn)控制信號,跳線帽接上電機逆時針運行,跳線帽去除電機順時針運行。
5.MCU程序下載接口。
6.電機啟停控制按鍵,按一次開啟,再按一次關(guān)閉。
7.電機轉(zhuǎn)速調(diào)整旋鈕。
8.電機運行狀態(tài)指示燈。
3.2 開發(fā)軟件的安裝
使用ChipOn的ChipON IDE v1.1.0版本的開發(fā)環(huán)境和ANSI C99標準的C編譯器,按照向?qū)б哉0惭b順序?qū)④浖惭b到電腦上。
3.3 建立KungFu8項目
運行ChipON IDE v1.1.0,選擇工作空間地址。
新建一個項目。注意項目類型需要選擇KF8-C。進入下一步,選擇芯片型號KF8S1101,再點擊下一步就建好了項目。
3.4 添加源文件
把提供的源程序文件(包括.c文件和.h文件)復制到新建項目下。鼠標放到項目名上點右鍵,選擇粘貼,覆蓋掉原來的“main.c”文件。
選擇構(gòu)建項目。
將庫文件“CommutationRun.o”、“BEMF.o”粘貼到項目里的“Release”。
鼠標指向項目名稱單擊右鍵選擇“屬性”,選擇“C/C++ 構(gòu)建”下的設(shè)置,修改 C 鏈接器 命令參數(shù),加入“CommutationRun.o”和“BEMF.o”。
這時再選擇構(gòu)建項目,即可成功的生成HEX文件。
3.5 樣例程序清單
? 源程序C文件
? 源程序頭文件
3.6 庫文件
庫文件包含下面兩個文件
庫文件對應(yīng)的兩個頭文件為“CommutationRun.h”和“BEMF.h”,主要聲明了庫文件中包含的兩個函數(shù),為
voidBEMFFuction(void); //感生電動勢過零點檢測處理函數(shù)
voidCommutationInSpect(void); //換相檢測處理函數(shù)
庫函數(shù)中變量聲明全部以“CHIPON_”開頭,程序中用的函數(shù)名不要以其開頭命名,以免出現(xiàn)重復。
庫函數(shù)中用到的公有變量有:
unsignedchar fGlobe_SynchronizingRectify;//同步續(xù)流狀態(tài)標志
unsignedchar SensorlessFirstCommutation;//無傳感器模式初始換向狀態(tài)標志
unsignedchar FrontTimesAfterZeroStart; //靜態(tài)啟動換向次數(shù)計數(shù)器
unsignedchar CntForPWMTwo; //PWM 2 占空比
unsignedchar fGlobe_SensorlessStatus; //有無傳感器模式標志
unsignedchar Fwd_RevFlag; //正反轉(zhuǎn)標志
unsignedchar fGlobe_MotorBrockStart; //開始堵轉(zhuǎn)標志
unsignedchar fGlobe_MotorBrock; //堵轉(zhuǎn)標志
unsignedchar fGlobe_Run; //系統(tǒng)運行標志
unsignedchar U8Globe_PwmShadow; //PWM占空比
庫函數(shù)中用到的宏定義為:
#defineHALL_PORT P2 //霍爾信號狀態(tài)寄存器
#define HALL_STATE_012 0x07 //hall 有效位(低三位)
4 基于KF8S1101開放套件實現(xiàn)實際項目的開發(fā)
針對實際項目開發(fā)時,程序只需做少量的修改即可實現(xiàn)功能。
4.1 有霍爾模式、無霍爾模式選擇
樣例程序中在子函數(shù)“void InitSystem(void)”里通過檢測按鍵是否長按來選擇有霍爾模式或者無霍爾模式,實際應(yīng)用中只需把變量直接賦給所需的值即可實現(xiàn)模式選擇。目前庫文件中有霍爾模式只適合霍爾電角度為120°的電機,如果是60°電角度的話需要和我們聯(lián)系,重新提供霍爾角度為60°電角度的庫文件。
fGlobe_SensorlessStatus= 1; //無霍爾模式fGlobe_SensorlessStatus= 0; //有霍爾模式
4.2 電機正反轉(zhuǎn)模式選擇
樣例程序中在子函數(shù)“void FWDREV_Function(void)”里通過檢測“FWD_REV”IO口是高電平還是低判斷來調(diào)節(jié)電機轉(zhuǎn)向,實現(xiàn)順時針或者逆時針旋轉(zhuǎn)。實際應(yīng)用中只需把變量直接賦給所需的值即可實現(xiàn)電機旋轉(zhuǎn)方向的選擇。
SYFwd_Rev =0; //電機正向選擇
SYFwd_Rev =1; //電機反向選擇
4.3 不同類型電機參數(shù)修改
實際應(yīng)用中會涉及到不同參數(shù)的BLDC電機,只需根據(jù)電機參數(shù)修改“system.h”里的宏定義即可。
/*電流參數(shù)*/
#define SENSOR_RES 0.05 //電流傳感器阻值 ohm
#define CURRENT_AMP 6.5 //電流放大器放大倍數(shù)
#define LIMITCURERNT_REALY 1.5 // 均值電流限制值A
#define BLOCKING _CURRENT_START_A 0.885 // 堵轉(zhuǎn)判斷電流值A
#define RECTIFY_CURRENT_START_A 0.45 // 同步整流開始值A
#define PEAK_CURRENT_LIM_A 4 // 峰值電流限制值A
/*電機堵轉(zhuǎn)時間,20ms周期*/
#define BROCKTIME 70 //堵轉(zhuǎn)計數(shù)器 70*20ms = 1.4s