如何用HT45FM03B 驅動BLDC 馬達 (組合語言)

如何用HT45FM03B 驅動BLDC 馬達 (組合語言)
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
文件編碼:HA0229T
簡介
直流無刷電機由於採用電子換相、PWM 調速,克服了直流電機機械換相帶來的一系列問題,
從而大大延長了電機的使用壽命。近年來已廣泛應用於家電、電動自行車、數控機床、機
器人等領域。
HT45FM03B 是 Holtek 公司開發的高性能 RISC 結構微控制器,主要用於直流無刷電機控制。
HT45FM03B 內建比較器、運算放大器、多路 AD 轉換器、多路外部中斷以及含死區時間的
互補型 PWM 控制器。
本文介紹以 HT45FM03B 為核心構成的直流無刷電機的控制系統中,HT45FM03B 的各個功
能部件在無刷電機使用方法,如速度設定、換相原理、PWM 調速原理、電機過流保護方法、
電機快速制動方法等。
基本特徵介紹
HT45FM03B 是構成直流無刷電機控制系統的核心,具有豐富的內建資源,其基本特徵如下:
 工作電壓:
fSYS=0.4~20MHz at 4.2V~5.5V
 26 個雙向輸入/輸出埠
 4 個與輸入/輸出埠共用引腳的外部中斷輸入
 1 個 8 位元可程式定時/計數器,具有溢出中斷及 7 位預除頻
 1 個 16 位元可程式定時/計數器,具有溢出中斷及 7 位預除頻
 4096x15 程式儲存器 ROM
 Flash Type MCU
 192x8 資料儲存器 RAM
 內置晶體、內部 RC 和外部 RC 振盪電路
 內部集成 12MHz、16MHz 和 20MHz RC 振盪器
 看門狗計時器
 具有 PFD 功能,可用於發聲
 HALT 和喚醒功能可降低功耗
 在 VDD=5V,系統頻率為 20MHz 時,指令週期為 0.2s
 8 層硬體堆疊
 8 通道 12 位元解析度的 A/D 轉換器
1
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
 3 通道 10 位元的帶互補功能的 PWM 輸出,與 6 個輸入/輸出埠共用引腳,且具有 3 對占
空比控制暫存器
 位元元操作指令
 查表指令
 63 條指令
 指令執行時間為 1 或 2 個指令週期
 低電壓重置功能
 低電壓保護功能
 一個運算放大器
 一個帶中斷功能的比較器
 28-pin SOP 封裝 (圖 1)
P B 5 /A N 5 /[IN T 0 B ]
1
2 8
P B 6 /A N 6 /[IN T 0 C ]
P B 4 /A N 4 /[IN T 0 A ]
2
2 7
P B 7 /A N 7 /T M R 0 /T M R 1
P A 4 /IN T 0 A
P A 3 /C O U T
3
2 6
P A 2 /C V IN N
4
2 5
P A 5 /IN T 0 B
P A 1 /C V IN P
5
2 4
P A 6 /IN T 0 C
P A 0 /O P V IN P
6
2 3
P A 7 /IN T 1
P B 3 /A N 3 /O P V IN N
7
2 2
P D 3 /O S C 2
P B 2 /A N 2 /O P O U T
8
2 1
P D 2 /O S C 1
P B 1 /A N 1
9
2 0
V D D /A V D D
P B 0 /A N 0
1 0
1 9
P D 1 /R E S
V S S /A V S S
1 1
1 8
P D 0 /P F D
P C 0 /P W M 0 H
1 2
1 7
P C 5 /P W M 2 L
P C 1 /P W M 0 L
1 3
1 6
P C 4 /P W M 2 H
P C 2 /P W M 1 H
1 4
1 5
P C 3 /P W M 1 L
H T 4 5 F M 0 3 B
2 8 S O P -A
圖1
瞭解 HT45FM03B 的基本特徵後,下面重點介紹,HT45FM03B 相關元件在直流無刷電機控
制過程中的作用以及相關控制原理和使用方法。
BLDC 馬達的簡介
直流無刷 (BLDC) 馬達,即直流無刷電動機,是採用半導體開關元件實現電子換相,即使
用電子開關元件代替傳統的接觸式換相器和電刷。直流無刷馬達由永磁體轉子、多極繞組
定子、位置傳感器等組成。具有可靠性高、無換相火花、機械噪聲等優點。
2
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
ADC 在 BLDC 馬達中的應用
速度設定方法
速度設定值,通過 AD 埠送一個電壓給 MCU,MCU 將轉換資料作為速度基準值,如圖 2 所
示,VR 用來調整速度設定值的電壓,R9 和 C15 構成濾波電路。
DC5V
HT45FM03B
R8
1k
VR
50k
R9
1k
AN0 10 PB0/AN0
C15
104
圖2
AD 的使用簡介
HT45FM03B 中與 AD 轉換相關的暫存器有:ADRL、ADRH、ADCR、ACSR。下面簡要說明
在進行 AD 轉換時,相關暫存器設定方法。
 ADCR
 通過設定 ADCR 中位元 3~5 中 PCR0~PCR2 的值,選擇相應的 IO 埠為模擬轉入口。
 通過設定 ADCR 中位元 0~2 中 ACS0~ACS2 的值,選擇相應的模擬轉入口與內部 AD
轉換模組相聯接。
 能過給 ADCR 中位元 7 (START) 由低到高,再由高到低 (0→1→0),啟動 AD 轉換。
 當 AD 轉換開始後,可通過查詢 ADCR 中位元 6 (EOCB) 是否為0,來判斷 AD 轉換
是否完成。
 ACSR
主要通過設定 ACSR 中位元 0~4 中 ADCS0~ADCS3 的值,選擇 AD 轉換的時鐘。
 ADRH、ADRL
主要用於保存 AD 轉換的結果。高 8 位元存於 ADRH,低 4 位元存於 ADRL 的高 4 位元。
以上為 HT45FM03B AD 的使用簡介,具體使用方法請參照規格書及 Holtek 網站上相關 AD
使用的應用範例。
Hall Sensor 在 BLDC 馬達中的應用
HT45FM03B 之 Hall Sensor 檢測電路
如圖 3 所示,Hall Sensor 的三根線連接到 HT45FM03B 外部中斷 0 的 INT0A~INT0C,
INT0A~INT0C 管腳與 PA4、PA5、PA6 管腳共用,只要 INT0A、INT0B、INT0C 中任何一個
外部中斷埠有下降緣信號產生,均可產生外部中斷 0。可在外部中斷 0 服務程式中讀取 Hall
Sensor 之狀態,對電機進行換相。
目前,在無刷直流電機上,均安裝三個 Hall Sensor,則對 HT45FM03B 來講,可有 8 個輸入
狀態,以 120 度電機為例,則各狀態為:001、010、011、100、101、110、111、000,在此
8 個狀態中,111 和 000 兩個狀態沒有用,一般檢測到此兩個狀態,則認為電機缺相。
Hall Sensor 的作用除了對電機進行換相外,亦可用來進行位置和速度回饋,用 Hall Sensor
對速度進行回饋的優點是可以節約成本,缺點是定位精度較差。
3
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
在圖 3 中,R1、R2、R3 為提昇電阻,R4、R5、R6 為限流電阻,C7、C8、C9 為旁路電容,
D1、D2、D3 為隔離二級管防止電機 Noise 串入到 HT45FM03B。
DC5V
R1
51k
SA
R2
51k
M
R3
51k
R4 3k
R5 3k
SB
R6 3k
SC
C7
104
C8
104
Phase A
D1
1N4148
Phase B
D2
1N4148
Phase C
D3
1N4148
C9
104
圖3
電機換相原理
直流無刷電機的驅動,是根據 Hall Sensor 之狀態,來控制六個 MOSFET 對電機進行換相,
從而推動電機運轉。圖 4 為六個 MOSFET 推動電機原理圖。
DC36V
Q1
Q3
M
Q5
A
B
C
Q2
Q4
Q6
圖4
對於直流無刷電機而言,具有 60 度和 120 度兩種,對每種電機而言,其 Hall Sensor 狀態,
與其 MOSFET 狀態的對應關係如下:
60 度無刷電機換相真值表:
Hall sensor(SA:SB:SC)
000
001
011
111
110
100
MOSFET 管狀態
Q1, Q4 on
Q5,Q4 on
Q5, Q2 on
Q3, Q2 on
Q3, Q6 on
Q1, Q6 on
4
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
120 度無刷電機換相真值表:
Hall sensor (SA:SB:SC)
MOSFET 管狀態
101
Q1, Q4 on
001
Q5, Q4 on
011
Q5, Q2 on
010
Q3, Q2 on
110
Q3, Q6 on
100
Q1, Q6 on
電機快速制動原理
電機制動在定位系統中是很重要的,傳統的機械制動存在許多缺點,例如:隨著閘皮的磨
損,定位誤差會越來越大。E-ABS (電磁主動剎車) 電子制動方法克服了機械制動的缺點。
E-ABS 電子制動的方法為:
 短路電機至少兩個相線,可通過 HT45FM03B 同時打開三個上臂或三個下臂,使電機三個
相線短路。這時電機內部定子上的線圈將形成閉合回路。當定子轉動,就會引起磁感線
切割,從而產生感生磁場阻礙定子轉動。
 目前無刷電機的控制方式是三相六狀態,3 個 Hall Sensor 的 8 個狀態為 (對 120 度電機而
言) :001、010、011、100、101、110、111、000,有兩個狀態為缺相狀態,即:000、111。
除去缺相的兩個狀態,另 6 個狀態分別對應了電機六種位置。當按照 Hall Sensor 狀態 001
→010→011→100→101→110 來驅動電機時,電機正轉。當按照 Hall Sensor 的狀態反向驅
動電機時,則電機會反轉,則可利用電機反轉產生的反向力來達到制動效果。
PWM 在 BLDC 馬達中的應用
HT45FM03B PWM 特徵簡介
HT45FM03B 提供三個通道互補型 PWM 輸出,PWM 輸出與 PC0~PC5 管腳共用。各個 PWM
被命名為 PWM0H~PWM2H,其互補端被命名為 PWM0L~PWM2L,互補型 PWM 輸出,提高
了電機工作效率。
HT45FM03B 在互補型 PWM 輸出中同時加入了死區時間,死區時間可防止由於驅動器執行
速度原因造成同一橋臂同時導通之情況。
HT45FM03B 同時也為 PWM 提供了中斷服務程式入口,PWM 在每個調製週期的上升緣可產
生中斷。
HT45FM03B 可提供四種 PWM 工作模式,即 10 bits 模式、(9+1) bits 模式、(8+2) bits 模式、
(7+3) bits 模式,不同工作模式可提供不同頻率的 PWM 輸出。
5
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
功能設定
 PWM 時鐘的設定
PWM 時鐘由 PWMC1 暫存器之 bit 5 ~bit 7 (PWMPS0~PWMPS2) 對系統時鐘進行除頻而
來,PWM 時鐘 fPWM 與系統時鐘 fSYS 的關係如下表所示:
PWMPS2 : PWMPS1 : PWMPS0
000
001
010
011
100
101
110
111
PWM 時鐘
fPWM = fSYS
fPWM = fSYS/2
fPWM = fSYS/3
fPWM = fSYS/4
fPWM = fSYS/5
fPWM = fSYS/6
fPWM = fSYS/7
fPWM = fSYS/8
 PWM 工作模式的選擇





PWM 共有四種工作模式,即 10 bits 模式、(9+1) bits 模式、(8+2) bits 模式、(7+3) bits 模式,
不同工作模式可提供不同頻率的 PWM 輸出。此四種模式的選擇是在 Confuguration Options
中。
PWM 輸出總控制 (PWMCTRL)
PWMC0 之 bit 6 (PWMCTRL) 是 PWM 輸出總控制位元。為1時,PWM 輸出有效;為0
時,PWM 輸出無效。
PWM 輸出控制方式的選擇 (PWMCM)
PWMC2 之 bit 1 (PWMCM) 是 PWM 輸出控制方式選擇位元。為1時,PWM 輸出由暫存
器 PCPWMC 控制;為0時,PWM 輸出由 IO 埠 PC6、PC7 共同控制。
PWM 輸出使能控制 (PWMEN)
PWMC0 之 bit 0 (PWMEN) 是 PWMxH 輸出的使能位元。為1時, 允許 PWMxH 輸出;
為0時, 禁止 PWMxH 輸出。
PWM 補充輸出使能控制 (PWMCEN)
PWMC0 之 bit 1 (PWMCEN) 是 PWMxL 輸出的使能位元。為1時,允許 PWMxL 輸出;
為0時,禁止 PWMxL 輸出。
PWM 輸出選擇控制的設定
PCPWMC 是 PWM 輸出選擇控制暫存器,其輸出選擇控制如圖 5 所示:
b 7
P W M B U F
P C 5 M O D
P C 4 M O D
P C 3 M O D
P C 2 M O D
P C 1 M O D
b 0
P C 0 M O D
P C P W M C R e g is te r
P C 0 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P C 1 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P C 2 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P C 3 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P C 4 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P C 5 o u tp u t m o d e
1 : P W M m o d e
0 : I/O m o d e
P W M
1 : P W
P W
p re
0 : P W
P W
a fte
b u ffe r e n a
M b u ffe r e
M w a v e fo
s e n t P W M
M b u ffe r d
M w a v e fo
r p re s e n t
b le /d is a
n a b le d
rm n o t u
e n d s
is a b le d
rm u p d a
P W M s u
b le
p d a te d u n til
te d im m e d ia te ly
b c y c le
N o t im p le m e n te d , r e a d a s " 0 "
圖5
PCPWMC Register
6
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
 PWM 資料輸出控制的設定
PCPWMD 是 PWM 資料輸出控制暫存器,其資料輸出控制如圖 6 所示:
b 7
P W M 2 L D
P W M 2 H D
P W M 1 L D
P W M 1 H D
P W M 0 L D
b 0
P W M 0 H D
P C P W M D
R e g is te r
P W M 0 H o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
P W M 0 L o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
P W M 1 H o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
P W M 1 L o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
P W M 2 H o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
P W M 2 L o n /o ff c o n tro l
1 : P W M s ig n a l
0 : in a c tiv e le v e l
N o t im p le m e n te d , r e a d a s " 0 "
圖6
PCPWMD Register
 PWM 停止輸出的設定
PWM 停止輸出是由 PWMC1 之 bit 2~bit 4 (PWMSP0~PWMSP2) 共同控制。其控制方式如
下表所示:
PWMSP2:PWMSP1:PWMSP0
000
001
010
011
100
101
110
111
PWM 停止輸出方式
只由軟體控制。
由 COUT / PA3 下降緣控制。
由 INT1 中斷控制。
由 COUT / PA3 下降緣或 INT1 中斷控制。
當 COUT / PA3 下降緣時,PWMxH、PWMxL 輸出無效。
當 COUT / PA3 上升緣時,PWMxH、PWMxL 輸出有效。
當 COUT / PA3 下降緣時,PWMxH 輸出無效。
當 COUT / PA3 上升緣時,PWMxH 輸出有效。
當 COUT / PA3 下降緣時,PWMxH 輸出無效。
當 COUT / PA3 下降緣時,PWMxH、PWMxL 輸出無效。
Dead Time 相關設定
 PWM Dead Time 輸出使能控制 (DTEN)
PWMC0 之 bit 2 (DTEN) 是 PWM 互補輸出是否加入 Dead Time 使能位元。為1時,PWM
互補輸出時含有 Dead Time;為0時,PWM 互補輸出時不含有 Dead Time。
 Dead Time 時鐘的選擇
Dead Time 的時鐘,是依賴於 MISC 暫存器之 bit 6~ bit 7 (DTPS0~DTPS1) 對系統頻率之除
頻。Dead Time 時鐘與系統頻率的關係如下表所示:
DTPS1:DTPS0
00
01
10
11
Dead Time 的時鐘
fD = fSYS
fD = fSYS/2
fD = fSYS/4
fD = fSYS/8
7
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
 Dead Time 時間的選擇
Dead Time 時間長短的選擇,是在 PWMC0 暫存器之 bit 3~bit 5 (PWMDT0~PWMDT2) 中選
擇,其時間對應如下表所示:
PWMDT2:PWMDT1:PWMDT0
000
001
010
011
100
101
110
111
Dead Time 時間
1/ fD
2/ fD
3/ fD
4/ fD
5/ fD
6/ fD
7/ fD
8/ fD
 在互補型 PWM 輸出中加入 Dead Time 的作用
HT45FM03B 在互補型 PWM 輸出中加入 Dead Time 的作用是為了避免同一組 PWM
(PWMxH 和 PWMxL) 在輸出時,由於驅動器的執行速度造成同一組 PWM (PWMxH 和
PWMxL) 的驅動器出現同時開起 (Active) 之情況。
例如:對於 PWMxH 和 PWMxL 不含有 Dead Time 的輸出波形,如圖 7 所示。
圖7
在圖 7 中存在的問題是:PWMxH 在 T1 變為 Active 而 PWMxL 在 T1 變為 Inactive,此時
若驅動器的開啟速度快而關斷速度慢,則 PWMxH 及 PWMxL 的驅動器會出現同時 Active
之情況。
對於 PWMxH 和 PWMxL 含有 Dead Time 的輸出波形,如圖 8 所示。
圖8
如圖 8 對於含有 Dead Time 的 PWMxH 和 PWMxL 輸出,在 T1 時,PWMxL 變為 Inactive
而 PWMxH 在 T2 變為 Active,這樣就避免了由於驅動器關斷速度慢而出現同一組驅動器
皆 Active 之情況。
在 HT45FM03B 中,對於 Dead Time 時間選取,應注意:
 Dead Time 時間不宜太短,太短會出現同一組驅動器皆 Active 之情況。
 Dead Time 時間不宜太長,太長會影響效率。要根據所選用的驅動器的速度選取合適的
Dead Time 時間。
8
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
PWMxH 和 PWMxL 輸出邏輯選擇
在 PWM Confuguration Options 中,有兩個位元可用來選擇 PWM 的輸出邏輯,即 PWMLEV
和 PWMCLEV。
PWMLEV 選項是用來選擇 PWM0H~PWM2H,各 PWM 調製輸出工作週期 (Duty Cycle) 的邏
輯關係。
若 PWMLEV 選項選為 Active High,PWMnH/PWMnL 中的值決定了一個 PWM 調製週期內高
準位輸出寬度。
若 PWMLEV 選項選為 Active Low,PWMnH/PWMnL 中的值決定了一個 PWM 調製週期內低
準位輸出寬度。
例如:PWM 工作在 (9+1) bits 模式,fPWM = 8MHz 時,
若 PWMLEV 選項選為 Active High,PWMH/PWML=0014H,PWM 輸出波形如下:
PWM Cycle: 128us
1.25us
64us
64us
PWM Modulation Cycle : 64us
圖9
若 PWMLEV 選項選為 Active Low,PWMH/PWML=0014H,PWM 輸出波形如下:
PWM Cycle: 128us
1.25us
64us
64us
PWM Modulation Cycle : 64us
圖 10
9
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
PWM 資料輸出
PWM 調製資料暫存器 PWMnH 和 PWMnL,資料位元分配如圖 11 所示:
Register
PWMnH
PWMnL
Bit 7
D9
-
Bit 6
D8
-
Bit 5
D7
-
Bit 4
D6
-
Bit 3
D5
-
Bit 2
D4
-
Bit 1
D3
D1
Bit 0
D2
D0
圖 11
PWM 資料暫存器中的值,決定了一個 PWM 調製週期內,高低準位的占空比。
PWM 開關控制
在設定好 PWM 的各控制選項,對 PWM 的開關可通過 PC0~PC5 暫存器來設定。當 PC0~PC5
為1時開啟 PWM 輸出,當 PC0~PC5 為0則關閉 PWM 輸出。例如:
當 PC0 = 1,則開啟 PWM0H 輸出;當 PC0 = 0,則關閉 PWM0H 輸出。
PWM 中斷控制
PWM 在每個調製週期的上升緣會產生中斷。HT45FM03B PWM 的工作模式有:10 bits 模式、
(9+1) bits 模式;(8+2) bits 模式和 (7+3) bits 模式,共計四種模式。不論 PWM 工作在哪種模
式下,PWM 中斷間隔時間均為 PWM 調製週期之時間。瞭解 PWM 的中斷間隔時間,對書
寫 PWM 中斷服務程式非常重要。下面舉例說明 PWM 中斷間隔時間如何計算。
例如:HT45FM03B PWM 工作在 (9+1) bits 模式時,PWM 中斷間隔時間計算方法為:
T=512/fPWM
其中 T 為中斷間隔時間, fPWM 為 PWM 時鐘頻率,fPWM 的大小是 PWMC1 暫存器之 bit 5 ~ bit
7 (PWMPS0~PWMPS2) 中的值對系統頻率 fSYS 的除頻值。
若 fSYS=8MHz,PWMC1 暫存器之 bit 5~bit 7=001 時,
則 fPWM=fSYS/2=8MHz/2=4MHz,T=512/fPWM=512/4MHz =128s
即在上述條件下,PWM 每間隔 128s 發生一次中斷。
10
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
PWM 驅動 MOSFET 原理
PWM 驅動 MOSFET,對電機進行調速,驅動電路有很多方法,例如可用 IR2103 驅動塊或
HT45B0C 驅動塊,為了更好地闡述 PWM 驅動 MOSFET 原理,下面介紹由電晶體組成的驅
動電路。如圖 12 所示。
DC36V
DC15V
D4
C18
104
1N4148
C19
R34
2k
Q8
5551
DC5V
R32 1k
DC15V
COIL
R36
Q10
R35
510
R37 1k
Q28
75N75F
1k
5401
Q12
5401
Q11
5551
DC5V
PWMxL
Q24
75N75F
Q9
5401
47uF/63V
PWMxH
1N4148
1k
5401
R31
510
D5
R33
Q7
R38
2k
圖 12
在圖 12 中,COIL 為電機的一個繞阻,MOSFET 的驅動分上臂驅動電路和下臂驅動電路。
上臂驅動電路相對下臂驅動電路來說比較複雜,其原因是當上下臂全部導通時,DC36V 電
壓會降壓在 COIL 線圈上,所以在上臂中加入了 D4、D5 隔離二極體,及 C19 維持電容 。
驅動電路完成兩個作用:
 完成準位轉換,轉換方法上下臂均由電子開關組成。在上臂中,該電子開關由 R31、Q7、
Q8、R32 等組成;在下臂中該電子開關由 R35、Q10、Q11、R37 等組成。
 該驅動電路包含一個放電回路,主要是因為 MOSFET 柵極間存在雜散電容,在 PWM 快
速開關 MOSFET 時,若無此放電電路,MOSFET 可能存在無法關斷之情況。上臂中放電
電路由 Q9 和 R34 組成。下臂中放電電路由 Q12 和 R38 組成。
逐次逼近式 PWM 調速演算法
目前 PWM 控制直流無刷電機進行調速的方法很多,例如:PI 調節等,此處給出一種逐漸
逼近式調節方法,其方法如下:
 步驟一:讀取速度設定 AD 值,根據此 AD 值查表求出對應的 PWM 輸出設定值,PWM
輸出設定值與速度為一一對應關係。
 步驟二:在 PWM 中斷服務程式中,每間隔一定時間,將現在 PWM 輸出值與 PWM 設定
值進行比較。若目前 PWM 輸出值小於 PWM 設定值,那麼增加 PWM 輸出值;若目前 PWM
輸出值大於 PWM 設定值,那麼減小 PWM 輸出值;直到輸出值等於設定值。這樣進行速
度調節時,速度就會平滑地增加或減小。
總之,AD 設定值決定了速度的目標值,要達到此速度,不是立刻將其對應的 PWM 值送出,
而是在 PWM 中斷服務程式中,逐漸增加或減小 PWM 輸出,使速度平滑地逼近設定值。
11
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
OP 與 CP 在 BLDC 馬達中的應用
HT45FM03B CP 特徵簡介
HT45FM03B 為用戶提供一個 CP 比較器,其輸入輸出腳分別與 PA1、PA2、PA3 共用,具體
如圖 13 所示。
P A 1 /C V IN P
P A 2 /C V IN N
P A 3 /C O U T
C M P O P
S 1
S 2
D e -b o u n c e
C ir c u it
S 3
C o m p a ra to r
In te rru p t
C O F 0 ~ C O F 4
C M P E N
圖 13
CP 相關暫存器的設定
 CP 使能控制
MISC 之 bit 3 (CMPEN) 是 CP 使能控制位元。為0時,禁止作為 CP 比較器使用;為1
時,允許作為 CP 比較器使用。
 CP 輸出選擇控制
MISC 之 bit 5 (COUTEN) 是 CP 輸出選擇控制位元。為0時,PA3/COUT 為正常 IO 埠;
為1時,PA3/COUT 作為 CP 比較器輸出。
 CP 遲滯使能控制
CMPC 之 bit 7 (CHYSON) 是 CP 遲滯使能控制位元。為0時,關閉遲滯功能;為1時,
打開遲滯功能。
 CP 輸入偏置電壓校驗模式選擇控制
CMPC 之 bit 6 (COFM) 是 CP 輸入偏置電壓模式選擇控制位元。為0時,作為正常 CP 比
較器模式;為1,作為輸入電壓偏置校驗模式。
 CP 輸入偏置電壓校驗參考選擇控制
CPMC 之 bit 5 (CRS) 是 CP 輸入偏置電壓校驗參考電壓選擇控制位。為0時,選擇 CVINN
作為參考電壓的輸入;為1時,選擇 CVINP 作為參考電壓的輸入。
 CP 輸入偏置電壓校驗控制位元的設定
CMPC 之 bit 0~bit 4 (COF0~COF4) 是 CP 輸入偏置電壓校驗控制位元。
 CP 中斷遲滯時間的設定
CP 中斷遲滯時間的選擇是在 DBTC 之 bit 0~bit 3 (CMPDB0~CMPDB3) 中選擇,其時間對
應如下表所示。
CMPDB3:CMPDB2:CMPDB1:CMPDB0
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001~1111
12
遲滯時間
0
4/fSYS
8/fSYS
16/fSYS
32/fSYS
64/fSYS
128/fSYS
256/fSYS
512/fSYS
1024/fSYS
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
CP 輸入偏置電壓校驗步驟
 步驟 1:將 COFM 設定1,選擇 CP 作為輸入偏置電壓校驗模式 (即將 S3 閉合)。
 步驟 2:將 CRS 設定0或1,選擇 CVINN 或 CVINP 的輸入電壓為校驗的參考電壓。
 步驟 3:按順序更改 COF0~COF4 的值,直至 COUT 的輸出電壓發生變化,記錄此時的
COF0~COF4 的值。
 步驟 4:將 COFM 設定0,選擇 CP 作為正常的比較器使用。
以上為 HT45FM03B CP 的使用簡介,具體使用方法請參照規格書及 Holtek 網站上相關 CP 使
用的應用範例。
HT45FM03B OP 特徵簡介
HT45FM03B 為用戶提供一個 OP 運放,其 OPVINP、OPVINN、OPOUT 分別與 PA0、PB3、
PB2 共用。其相關暫存器設定如下。
 OP 使能控制
OPAC 之 bit 7 (OPAEN) 是 OP 使能控制位元。為0時,禁止作為 OP 運放使用;為1時,
允許作為 OP 運放使用。
 OP 輸入偏置電壓校驗模式選擇控制元
OPAC 之 bit 5 (AOFM) 是 OP 輸入偏置電壓模式選擇控制位元。為0時,作為正常 OP 運
放模式;為1時,作為輸入電壓偏置校驗模式。
 OP 輸入偏置電壓校驗參考選擇控制
OPAC 之 bit 4 (ARS) 是 OP 輸入偏置電壓校驗參考電壓選擇控制位。為0時,選擇 OPVINN
作為參考電壓的輸入;為1時,選擇 OPVINP 作為參考電壓的輸入。
 OP 輸入偏置電壓校驗控制位元的設定
OPAC 之 bit 0~bit 3 (AOF0~AOF4) 是 OP 輸入偏置電壓校驗控制位元。
以上為 HT45FM03B OP 的使用簡介,具體使用方法請參照規格書及 Holtek 網站上相關 OP
使用的應用範例。
13
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
OP 與 CP 在 BLDC 馬達中的應用
OP 與 CP 在 BLDC 馬達中,主要運用於電機過流保護機制中。HT45FM03B 內建一個比較器、
一個運算放大器。比較器可對瞬間過電流進行保護,運放可用來監控電機運轉電流。 電流
採樣值可通過鏮銅電阻來完成。如圖 14 所示。
HT45FM03B
DC5V
R27
5k CPP
DC36V
R28
1k5
DC5V
CPP
Q1
Q3
M
Q5
OPOUT R29
A
B
C
Q2
Q4
R30
39k
CPN
CP INTERRUPT
CPN
1k
C17
104
Q6
R24
Current
OPP
OPP
OPOUT
1k
R23
1R
AN2
OPN
16
104
R25
10k
R26
2k
圖 14
在圖 14 中 R23 為鏮銅電阻,電阻值之大小與電機功率有關。利用 HT45FM03B 內建 OP 對電
流進行放大,R24 和 C16 構成電流濾波網路連接到運放的同相端,R25 為反回饋電阻。在
HT45FM03B 內部,運算放大器輸出一路與 AD 轉換器 AN2 相連,可通過監測電流值,監測
電機運轉情況。
另一路經 R29 和 C17 構成電流濾波網路,連接到 HT45FM03B 內部比較器的反向端;R27
和 R28 為電流基準值設定網路,連接到比較器的同相端。在 HT45FM03B 內部,比較器的輸
出與中斷系統相連,當電流值大於基準時,則比較器快速反轉,產生中斷,可在比較器中
斷服務程式中進行保護處理。
14
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
電路原理圖
R9 1k
DC36V
DC5V
R8
1k
VR
50k
DC5V
DC36V
R10 36R/2W
C2
104
C10
104
10k
R13
51
Phase B
R14
51
DC15V
C4
104
3
IC2 7805
1
C3
100uF/25V
HT45FM03B
2
51
R16
Q6
Q5
XT1
4MHz
C5
47uF/25V
C12
104
C17
104
R30
39k
CPN
DC5V
PWM2L
PWM2H
PWM1L
DC5V
RES
SA
SB
SC
C6
104
GND
DC5V
28
27
26
25
24
23
22
21
20
19
18
17
16
15
R29
1k
R22
100k
60NF60
R21
100k
60NF60
Current
Phase C
51
R15
PB6/AN6/[INT0C]
PB7/AN7/TMR0/TMR1
PA4/INT0A
PA5/INT0B
PA6/INT0C
PA7/INT1
PD3/OSC2
PD2/OSC1
VDD/AVDD
PD1/RES
PD0/PFD
PC5/PWM2L
PC4/PWM2H
PC3/PWM1L
R28
1k5
C11
104
CB
CT
R27
5k CPP
DC5V
Q4
Q3
DC36V
R20
100k
60NF60
R19
100k
60NF60
R26
2k
OPN
PB5/AN5/[INT0B]
PB4/AN4/[INT0A]
PA3/COUT
PA2/CVINN
PA1/CVINP
PA0/OPVINP
PB3/AN3/OPVINN
PB2/AN2/OPOUT
PB1/AN1
PB0/AN0
VSS/AVSS
PC0/PWM0H
PC1/PWM0L
PC2/PWM1H
IC3
3
IC1 7815
1
BB
BT
OPOUT R25
1
2
3
4
CPN
5
CPP
6
OPP
7
OPN
OPOUT 8
9
10
11
12
13
14
Q2
Q1
AN0
GND
PWM0H
PWM0L
PWM1H
C1
1000uF/50V
AN0
C15
104
OPP
C16
104
60NF60
R17
100k
60NF60
R7
100k RES
1k
R24
C13
104
R23
1R
R11
51
Phase A
R12
R18
100k
DC15V
D4
C18
104
D6
PWM0H
DC15V
C20
104
D8
PWM1H
DC15V
C22
104
PWM2H
1N4148
C19
47uF/63V
R32 1k
1N4148
C21
47uF/63V
R40 1k
1N4148
C23
47uF/63V
R48 1k
DC5V
DC5V
DC5V
R31
510
R39
510
R47
510
Q7
5401
Q8
5551
Q13
5401
Q14
5551
Q19
5401
Q20
5551
R34
2k
R42
2k
R50
2k
R33
1k
R41
1k
R49
1k
D5
D7
D9
SA
SB
SC
1N4148
AT
BT
Phase A
Q9
5401
1N4148
Q15
5401
Phase B
CT
R2
51k
DC5V
Phase C
Q21
5401
1N4148
R1
51k
PWM0L
PWM1L
PWM2L
R3
51k
R4 3k
R5 3k
R6 3k
DC5V
DC15V
R37 1k
DC5V
DC15V
R45 1k
C8
104
DC5V
DC15V
R53 1k
C7
104
R35
510
R43
510
Q10
5401
Q11
5551
Q16
5401
Q17
5551
Q22
5401
R38
2k
R46
2k
D2
D1
1N4148
1N4148
1N4148
R51
510
Phase A
D3
R54
2k
Phase B
Q23
5551
Phase C
C9
104
R36
1k
R44
1k
R52
1k
M
AB
Q12
5401
BB
Q18
5401
CB
Q24
5401
15
C14
104
Current
AT
AB
51
Current
圖 15
2
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
軟體流程圖
程式説明
主程式首先進行 IO 埠初始化、RAM 初始化、SFR 初始化以及 4ms 定時的設定;然後依次進
行按鍵檢測、調速儀電壓檢測、電流檢測和速度控制四個副程式的反覆呼叫。
電流檢測副程式主要完成電機的電流經轉換及放大為電壓後,對這個電壓進行 AD 取樣。將
所測得的電壓值存於 current_value 與基準值 current_ref 進行比較。若 current_value 大於
current_ref,將 op_flag 設定1,否則 op_flag 設定0。延時 30s 後,若 current_value 仍大於
current_ref,即 op_flag 為1,則將 over_flag 設定置1,否則 over_flag 設定0。
速度控制副程式主要完成電機是否運行的控制。主要通過判斷 system_flag、cp_flag、over_flag
三個旗標是否滿足電機運行的條件,來設定電機是運行還是停止。
16
如何用 HT45FM03B 驅動 BLDC 馬達 (組合語言)
程式範例
configuration option:
OSC:
PWM mode:
Comparator interrupt source:
PWM duty mode:
INT0A pin-shared option:
INT0B pin-shared option:
INT0C pin-shared option:
PD0/PFD:
PD1/RESB:
WDT:
;other option select by user.
external XTAL
(9+1) bits mode
Comparator output falling edge
1 PWM duty mode
Pin share with PA4
Pin share with PA5
Pin share with PA6
PD0
RESB
Enable
程式代碼及說明:見附件。
結論
本文重點介紹了 HT45FM03B 應用於直流無刷電機控制中各個功能元件的使用方法,並給出
了參考電路及軟體程式。HT45FM03B 已在電動自行車、遙控玩具飛機中得到應用,隨著我
們對 HT45FM03B 的介紹和推廣, HT45FM03B 將在直流無刷電機控制領域得到廣泛應用。
17
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement