程 凱,曹天翔,段要祖,韓嘉興,張?jiān)?/p>
(南京工程學(xué)院,南京 211167)
隨著城市環(huán)境建設(shè)與規(guī)模的發(fā)展,人們的生活水平和質(zhì)量都在不斷提高。在移動(dòng)互聯(lián)網(wǎng)的風(fēng)口下,安全、綠色、高效的出行理念是順應(yīng)時(shí)代發(fā)展所需要,在這其中,智能便攜式代步工具呈現(xiàn)爆發(fā)式增長(zhǎng),成為人們的首選[1]。如美國(guó)賽格威公司所設(shè)計(jì)的“賽格威”平衡車(chē)建立了一種“動(dòng)態(tài)穩(wěn)定”的控制理論,以內(nèi)置的精密固體陀螺儀來(lái)判斷車(chē)身姿態(tài),通過(guò)高速的中央處理器計(jì)算出適當(dāng)?shù)闹噶顏?lái)驅(qū)動(dòng)馬達(dá);江蘇大學(xué)通過(guò)建立雙輪轂電機(jī)驅(qū)動(dòng)模型,設(shè)計(jì)差速與助力協(xié)調(diào)控制策略,并進(jìn)行仿真分析得到合適的驅(qū)動(dòng)轉(zhuǎn)向模型[2]。這類(lèi)代步工具的控制系統(tǒng)有的靈敏度過(guò)高,實(shí)際操作期間安全隱患較大;有的結(jié)構(gòu)過(guò)于復(fù)雜,便攜性達(dá)不到實(shí)際需要且不便于維修。
本文提出一種基于STM32 單片機(jī)的驅(qū)動(dòng)轉(zhuǎn)向系統(tǒng)模型。該設(shè)計(jì)采用雙輪轂電機(jī)驅(qū)動(dòng),通過(guò)操縱者意識(shí)自由改變霍爾傳感器輸入電壓的大小,將得到的信號(hào)通過(guò)單片機(jī)的運(yùn)算與處理轉(zhuǎn)化為不同的PWM值,進(jìn)而改變輸出車(chē)速的大小。該系統(tǒng)在保證足夠安全穩(wěn)定的同時(shí),省去了大量復(fù)雜的傳動(dòng)結(jié)構(gòu),大大提高了整車(chē)結(jié)構(gòu)的便攜性,對(duì)未來(lái)新型代步工具的研發(fā)有一定借鑒意義。
硬件設(shè)計(jì)主要包含STM32f1 單片機(jī)開(kāi)發(fā)板、輪轂電機(jī)驅(qū)動(dòng)電路、操縱控制總成。其中輪轂電機(jī)由54.8 V 鋰離子充電電池供電,其余兩部分由12 V鋰電池供電。硬件結(jié)構(gòu)連接如圖1所示。
圖1 硬件結(jié)構(gòu)連接圖
STM32f1是新的基于ARM內(nèi)核的32位高性能MCU。該單片機(jī)具有功能強(qiáng)、低電壓、低功耗、外設(shè)多等優(yōu)勢(shì)[3],支持PWM輸出、ADC轉(zhuǎn)換、DMA傳輸?shù)戎匾δ?,為系統(tǒng)高效快速處理數(shù)據(jù)提供了有力保障,是該控制系統(tǒng)的核心。為了實(shí)現(xiàn)在復(fù)雜的實(shí)際路況下能夠以最快的速度使駕駛者對(duì)車(chē)輛進(jìn)行有效控制,系統(tǒng)采取DMA傳輸方式。
驅(qū)動(dòng)連接圖如圖2所示。采用BLDC三相直流無(wú)刷無(wú)霍爾電機(jī)驅(qū)動(dòng)板,該驅(qū)動(dòng)板工作電壓范圍為36~72 V,額定功率約為700 W,結(jié)構(gòu)輕便且不易損壞,具有過(guò)載保護(hù)、電流異常保護(hù)及堵轉(zhuǎn)保護(hù)等功能[4]。其中VR為PWM輸入端,通過(guò)PA6輸入的PWM 波控制電機(jī)的轉(zhuǎn)速;ZF 可以控制電機(jī)正反轉(zhuǎn)。PC0=1時(shí),電機(jī)正轉(zhuǎn);PC0=0時(shí),電機(jī)反轉(zhuǎn),單片機(jī)與驅(qū)動(dòng)板共地。IN1、IN2 分別為電源正、負(fù)極,OUT1、OUT2、OUT3分別為三相電機(jī)輸出端。
圖2 驅(qū)動(dòng)連接圖(左輪)
圖3 操縱控制連線圖
操縱控制總成分為調(diào)速控制模塊與轉(zhuǎn)向控制模塊兩個(gè)部分,電路連接如圖3所示。
1.3.1 調(diào)速控制
系統(tǒng)調(diào)速采用霍爾轉(zhuǎn)把,基于霍爾原理的磁效應(yīng)傳感器是當(dāng)前市面上常見(jiàn)的一種傳感器,廣泛應(yīng)用于接近開(kāi)關(guān)、位置測(cè)量、轉(zhuǎn)速測(cè)量、電流測(cè)量等設(shè)備[5]。在本系統(tǒng)中,IN1 接單片機(jī)3.3 V 電壓,OUT1 為傳感器輸出的0~3.3 V 模擬電壓與單片機(jī)PA0連接參與ADC轉(zhuǎn)化,從而控制電機(jī)轉(zhuǎn)速。
1.3.2 轉(zhuǎn)向控制
左右電機(jī)的差速轉(zhuǎn)向是通過(guò)操縱桿的轉(zhuǎn)動(dòng)來(lái)實(shí)現(xiàn)的。操縱桿下方裝有轉(zhuǎn)向軸結(jié)構(gòu),如圖4所示,這種轉(zhuǎn)向軸是一種新型的霍爾傳感器,原理與大多數(shù)霍爾元件類(lèi)似,主要應(yīng)用于平衡車(chē),屬于通用配件[6]。其輸出電壓為0~3.3 V,至左向右轉(zhuǎn)動(dòng)輸出電壓線性增大。在該系統(tǒng)中,輸出的電壓值通過(guò)OUT2傳至PA1實(shí)現(xiàn)系統(tǒng)轉(zhuǎn)向信息的采集,及時(shí)調(diào)整左右電機(jī)速度差,實(shí)際控制如圖5所示。
圖4 轉(zhuǎn)向控制結(jié)構(gòu)
圖5 轉(zhuǎn)向控制原理
系統(tǒng)采用C 語(yǔ)言編寫(xiě)程序,系統(tǒng)軟件設(shè)計(jì)主要包括系統(tǒng)主程序、系統(tǒng)初始化子程序、ADC 轉(zhuǎn)換與DMA 傳輸子程序、系統(tǒng)主傳遞函數(shù)、PWM波子程序,系統(tǒng)程序流程如圖6所示。
本系統(tǒng)采用雙輸入端向單片機(jī)輸入數(shù)據(jù),因此需開(kāi)啟STM32ADC的通道0與通道1(即PA0、PA1),并按要求將所需寄存器一一配置好。值得注意的是,單片機(jī)兩個(gè)通道內(nèi)的數(shù)據(jù)不可能同時(shí)輸出,但系統(tǒng)要求兩個(gè)輸入?yún)⒘勘仨毻瑫r(shí)參與主函數(shù)的運(yùn)算,這就需要引入DMA傳輸方式。DMA即直接存儲(chǔ)器訪問(wèn)(Direct Memory Access),是一種可以在沒(méi)有CPU干預(yù)的情況下完成外部設(shè)備之間的數(shù)據(jù)傳輸,使CPU 能夠?qū)W⒂跀?shù)據(jù)的計(jì)算,適度解決芯片內(nèi)部數(shù)據(jù)處理能力不足的問(wèn)題,保證了系統(tǒng)即時(shí)運(yùn)算的快速性[7]。在系統(tǒng)中,通過(guò)配置DMA_Init()與DMA_DeInit()可以實(shí)現(xiàn)兩種輸入?yún)⒘恳詷O快的形式交替?zhèn)鬏斨羻纹瑱C(jī)中參與ADC轉(zhuǎn)換工作。由于傳輸速度極快,可以視為二者是同時(shí)從輸入端輸入至單片機(jī)中,保持車(chē)輛控制信息的準(zhǔn)確性與快速性,提高了系統(tǒng)的靈敏度。
圖6 系統(tǒng)軟件總體布局
根據(jù)PWM 值改變占空比去調(diào)整電機(jī)轉(zhuǎn)速的原理,PWM即脈沖寬度調(diào)制(Pulse Width Modulator),是指輸出固定的周期信號(hào),通過(guò)調(diào)整一個(gè)周期內(nèi)工作周期的大小來(lái)控制輸出功率的方法[8]。在PWM 驅(qū)動(dòng)直流電機(jī)的系統(tǒng)過(guò)程中,通過(guò)改變輪轂電機(jī)上電樞的電壓占空比來(lái)改變平均電壓的大小,從而控制輪轂電機(jī)的平均速度。占空比大則電機(jī)轉(zhuǎn)速大;占空比小則電機(jī)轉(zhuǎn)速小。PWM 波形圖如圖7所示。
圖7 PWM波形圖
輸出電壓的平均值為:
式中:U0為PWM的輸出電壓;T為開(kāi)關(guān)通斷周期;t為開(kāi)關(guān)接通時(shí)間;α為占空比。
由式可知,改變輸出電壓的占空比α就可以改變直流電機(jī)的平均速度,從而實(shí)現(xiàn)速度調(diào)節(jié)功能。
在該系統(tǒng)中,STM32ADC 轉(zhuǎn)換電壓為0~3.3 V,ADC 最大轉(zhuǎn)換值4 096(212)。此時(shí),設(shè)定PWM預(yù)裝載值寄存器最大值為4 096,即轉(zhuǎn)換后的數(shù)字量0 代表電壓0,占空比也為0;數(shù)字量4 096代表電壓3.3 V,占空比為100%。這樣就實(shí)現(xiàn)了輸入?yún)⒘?、ADC數(shù)字量、PWM占空比三者統(tǒng)一的控制。
設(shè)變速參量、差速參量經(jīng)ADC 轉(zhuǎn)換后的值分別為A、B,其中,A∈[0,4 096];B∈[0,4 096]。
根據(jù)實(shí)際情況,車(chē)輛在行駛過(guò)程中會(huì)面臨以下兩種情況:一是直線行駛的同步變速;二是轉(zhuǎn)彎行駛的左右差速。根據(jù)這兩種情況分別討論。
2.4.1 直線行駛的同步變速
當(dāng)車(chē)輛在直線行駛時(shí),要求左右電機(jī)轉(zhuǎn)速無(wú)差別或差別很小,即只要求A在系統(tǒng)中產(chǎn)生作用,通過(guò)改變A的大小來(lái)即時(shí)改變車(chē)輛行駛的速度大小。
2.4.2 轉(zhuǎn)彎行駛的左右差速
當(dāng)車(chē)輛在彎道行駛時(shí),要求左右電機(jī)有一定的轉(zhuǎn)速差以滿足差速轉(zhuǎn)彎的需要,此時(shí),在A要發(fā)揮作用的同時(shí),B也要產(chǎn)生作用,通過(guò)B 來(lái)改變左右車(chē)輪速度差的大小,進(jìn)而改變車(chē)輛轉(zhuǎn)彎半徑的大小,實(shí)現(xiàn)彎道行駛。
滿足以上兩種行駛狀態(tài)下的代碼如下:
left=(A/x)× (B/b)+n
C=4 096-B
right=(A/x)×(C/b)+n
TIM_SetCompare1(TIM3,left)
TIM_SetCompare2(TIM3,right)
式中:b=2 038-2 058中任意值,n為調(diào)整參數(shù)。
注意:x 為比例系數(shù),為防止最后總和超過(guò)4 096 而使數(shù)值溢出,要求x必須為大于1小于2的常數(shù);為防止手抖等不確定因素導(dǎo)致車(chē)把有小角度的歪斜而影響直線行駛,要求b在2 048(即中間值)左右;x與n需根據(jù)實(shí)際車(chē)型通過(guò)多次模擬仿真以及實(shí)車(chē)測(cè)試得到。
在直行中,操縱者將轉(zhuǎn)動(dòng)桿置于中位即B=2 048,此時(shí),(B/b)與(C/b)數(shù)值一致,左右電機(jī)速度相同,車(chē)輛保持直線行駛;當(dāng)車(chē)輛即將左轉(zhuǎn)時(shí),操縱者將轉(zhuǎn)向桿向左偏移,B<2 038 而C>2 058,導(dǎo)致左電機(jī)轉(zhuǎn)速明顯小于右電機(jī)轉(zhuǎn)速,因此車(chē)輛向左轉(zhuǎn);當(dāng)車(chē)輛即將右轉(zhuǎn)時(shí),操縱者將轉(zhuǎn)向桿向右偏移,B>2 038 而C<2 058,導(dǎo)致右電機(jī)轉(zhuǎn)速明顯小于左電機(jī)轉(zhuǎn)速,因此車(chē)輛向右轉(zhuǎn)。
綜上所述,該方程的設(shè)計(jì)符合實(shí)際操作需求。
本文提出的驅(qū)動(dòng)轉(zhuǎn)向系統(tǒng)以STM32 單片機(jī)為控制芯片,采用兩路霍爾傳感器為輸入端,通過(guò)ADC轉(zhuǎn)換后以DMA的傳輸方式在系統(tǒng)主傳遞函數(shù)中融合處理,將得到實(shí)時(shí)、可靠的PWM波驅(qū)動(dòng)電機(jī)運(yùn)作,可實(shí)現(xiàn)車(chē)輛的直行變速、左右轉(zhuǎn)彎等操作。該系統(tǒng)的設(shè)計(jì)對(duì)未來(lái)新型代步工具的研發(fā)有一定借鑒意義。