摘 要: 選取STM32系列的STM32F103RBT6作為主控系統(tǒng),以L6203作為直流電機(jī)的驅(qū)動;根據(jù)小車的位置通過PID算法調(diào)節(jié)小車的速度,對主控中高級定時器進(jìn)行設(shè)計,通過UART顯示數(shù)據(jù);觀測小車運(yùn)行過程中能否消除慣性帶來的影響并立刻轉(zhuǎn)向,及PID算法是否可以應(yīng)用在噴繪機(jī)小車的控制系統(tǒng)中。經(jīng)過理論分析和軟硬件結(jié)合測試表明,該設(shè)計不但解決了直流電機(jī)中由于慣性大難以剎車的問題,并驗證了PID算法在噴繪機(jī)控制系統(tǒng)中的可行性和實用性。
關(guān)鍵詞: STM32;L6203;PID算法;噴繪機(jī)
0 引言
噴墨式噴繪機(jī)為保證噴繪出圖像精準(zhǔn)細(xì)膩,小車上的噴頭每行掃描過程中按需進(jìn)行噴墨,但是來自小車的平穩(wěn)性以及在改變方向時小車的運(yùn)動狀態(tài),直接影響噴頭墨滴噴出的位置。如何在保證小車平穩(wěn)運(yùn)行前提下,根據(jù)提供的信號改變小車的運(yùn)行狀態(tài)值得深入研究和探討。
1 系統(tǒng)設(shè)計理念
攜帶噴頭的小車在噴繪軌道上來回運(yùn)動,在需要的位置上(即像素點)噴頭進(jìn)行噴墨。主控發(fā)控制信號給電機(jī)驅(qū)動模塊來控制電機(jī),從而控制小車的方向和位置。電機(jī)可以是步進(jìn)電機(jī)、位置控制方式的伺服電機(jī)和直流電機(jī)。步進(jìn)電機(jī)啟動力矩大,易于精確控制位置,但很難達(dá)到高速,實際應(yīng)用中使用較少。位置控制方式的伺服電機(jī)不但具有步進(jìn)電機(jī)的優(yōu)點,而且內(nèi)置的控制器具有電子齒輪易改傳動比,實際應(yīng)用中采用較多,但此電機(jī)非常昂貴,從實際的成本出發(fā)不易選用。綜合考慮,采用成本較低的普通直流電機(jī),通過調(diào)整驅(qū)動電壓調(diào)整速度,但直流電機(jī)不能精確定位,必須為其配備精密的位置檢測機(jī)構(gòu)以及伺服控制機(jī)構(gòu)才能實現(xiàn)較精確的定位。由于攜帶噴頭的小車慣性很大,方向調(diào)整時很難瞬時根據(jù)控制信號來更改方向,總是在主控發(fā)送完調(diào)整方向信號后速度慢慢減到0,然后才能調(diào)整方向從0慢慢加速。由于機(jī)械特性增加了誤差,不少研發(fā)人員采用在改變方向前先加高占空比反相沖擊電壓,然后再調(diào)整適合的占空比,但實際應(yīng)用過程中此方法并不完全合適。這是因為質(zhì)量太大,高脈沖難以沖擊反相速度并調(diào)整方向。綜合不同的方法和經(jīng)驗,借助STM32主控系統(tǒng)的優(yōu)勢,通過理論研究和實際應(yīng)用迅速調(diào)整方向,基本消除了物體質(zhì)量過大帶來的慣性影響,而且小車在實際運(yùn)行中通過PID算法[1]達(dá)到平穩(wěn)。噴繪機(jī)的噴繪軌道是帶光柵的,小車實際運(yùn)行過程中接收光柵編碼器的位置信號,從而計算小車的位置和運(yùn)動速度。由于機(jī)械、系統(tǒng)成本、復(fù)雜性、實驗環(huán)境等多方面限制,本設(shè)計系統(tǒng)沒有真正采用噴繪系統(tǒng)的小車作為研究對象,但為了說明和解決實際問題,本設(shè)計系統(tǒng)采用同等系統(tǒng)的等效法進(jìn)行實驗。設(shè)計系統(tǒng)等效法如下:在電機(jī)上固定噴頭和小車同等重量的物體(相當(dāng)于小車攜帶噴頭的運(yùn)動系統(tǒng)),并在物體上綁定多圈可調(diào)電位器(相當(dāng)于光柵編碼器來傳送位置信號),電位器上綁定一定質(zhì)量的擺,擺偏移設(shè)定點(相當(dāng)于小車系統(tǒng)的原點)的角度記作位置(相當(dāng)于小車偏移位置),通過PID算法調(diào)節(jié)擺的占空比(相當(dāng)于小車的速度),擺在偏移點左右轉(zhuǎn)動時瞬間改變電機(jī)的方向(相當(dāng)于小車方向調(diào)整)。通過系統(tǒng)等效法驗證了此設(shè)計方法在噴繪系統(tǒng)的實用性和可行性。
2 基于系統(tǒng)的硬件設(shè)計
圖1、2為控制系統(tǒng)硬件結(jié)構(gòu)架構(gòu),其中圖1是系統(tǒng)硬件的總體架構(gòu),圖2是電機(jī)的驅(qū)動電路。主控系統(tǒng)選取的是STM32系列的STM32F103RBT6,選此控制系統(tǒng)是因為主控不但使用方便、成本較低、通過高級定時器編程設(shè)計直接實現(xiàn)電機(jī)驅(qū)動的死區(qū)設(shè)置,并可適當(dāng)?shù)馗乃绤^(qū)時間,而且普通定時器也具有編碼功能,可直接應(yīng)用在噴繪機(jī)控制系統(tǒng)中的光柵編碼器,從而正交采集光柵信號檢測小車[2]的運(yùn)行位置。PC與STM32主控交互,可通過J-Link向主控中的Flash下載程序或通過PC的串口工具接收單片機(jī)發(fā)送的信息等。設(shè)計中選取STM32為主控,選取支持死區(qū)模式的TIM1定時器的PWM輸出供給L6203信號。主控中集成的AD主要是為了采樣搖擺偏移原點的位置(相當(dāng)于小車偏移位置),主控中的DMA主要是為了快速傳遞AD采樣信息。為實現(xiàn)嵌入式經(jīng)典理論中前后臺系統(tǒng)設(shè)計,采用中斷方式(NVIC)來處理任務(wù)。主控中的RCC為系統(tǒng)需要的時鐘配置;GPIO為需要的引腳配置,既包括AD引腳的采樣輸入引腳,又包括定時器的PWM輸出引腳等;UART接口通過串口線和PC連接來顯示信息;Tim4定時顯示處理向PC發(fā)送電機(jī)的狀態(tài)信息;SysTick定時中斷處理不同角度下通過PID調(diào)整的占空比任務(wù)。
L6230電機(jī)的驅(qū)動模塊是手動焊接且通過測試可正常工作的。之所以選擇以L6203為主芯片模塊,是因為此模塊可以提供最大電流4 A、最大電壓48 V,以便可以提供搖擺足夠大的速度,來觀察高速運(yùn)動下通過設(shè)置死區(qū)能否克服物體由于質(zhì)量大帶來的難以剎車問題,從而驗證此設(shè)計系統(tǒng)在噴繪領(lǐng)域的實用性。主控和L6203跳線時,為保護(hù)主控系統(tǒng)又要滿足主控和電機(jī)模塊的對地接入,L6203模塊在接入時的GND引腳先跳線到SEMSE引腳,然后再跳線到L6203 GND引腳,再接入到主控STM32的GND。此方法的主要作用是當(dāng)系統(tǒng)中電流過大時,電流只會貫穿L6203,不會燒壞STM32主控,對主控起到保護(hù)作用。L6203的IN1和IN2為兩路PWM輸入,Vs和SEMSE接入穩(wěn)壓電源的正負(fù)極,EN為主控提供使能信號,OUT1和OUT2供給普通直流電機(jī)的電壓。
3 基于系統(tǒng)的軟件設(shè)計
整個軟件架構(gòu)分別對串行通信、高級定時器、AD角度采樣、PID算法設(shè)計、主控狀態(tài)機(jī)切換等進(jìn)行設(shè)計與研究,最后借助PC上的串口調(diào)試器人機(jī)交互來設(shè)置采樣位置和檢測系統(tǒng)的執(zhí)行狀態(tài),從而證明系統(tǒng)可行性。
3.1 軟件中狀態(tài)機(jī)切換
圖3為控制系統(tǒng)中狀態(tài)機(jī)間的切換。程序設(shè)計思想借助于嵌入式實時操作系統(tǒng)提出的前后臺系統(tǒng)理論。為避免后臺系統(tǒng)打斷前臺系統(tǒng)對任務(wù)的處理有影響,任務(wù)做在后臺中斷里,前臺的While()死循環(huán)(LOOP狀態(tài))中沒有任務(wù),后臺通過中斷信號來告知處理器,從而刺激中斷的發(fā)生。從狀態(tài)機(jī)的切換圖可以看出,INIT狀態(tài)是系統(tǒng)初始化過程,主要包括主控的定時器、輸入輸出引腳、AD以及DMA等時鐘初始化,定時器、AD轉(zhuǎn)化以及串口的輸入輸出引腳初始化,定時器、DMA、系統(tǒng)定時中斷的初始化以及DMA傳輸設(shè)置初始化。初始化時設(shè)置的PC.4(GPIO_Mode_AIN模式)即模擬輸入模式,當(dāng)PC.4引腳的信號發(fā)生變化時,即位置傳感器傳入當(dāng)前位置后進(jìn)入ADC狀態(tài)。為提高AD轉(zhuǎn)化速度和程序處理能力,DMA初始化時借助DMA1的第12通道,直接把AD配置成從ADC1->DR的地址傳送到ad_sm地址,此時為DMA狀態(tài)。傳輸完數(shù)值后進(jìn)入SMO狀態(tài),此狀態(tài)下任務(wù)對傳遞的ad_sm做平滑處理,平滑處理次數(shù)越多值越精確,此處做了8次平滑處理。選擇8次處理,首先是因為經(jīng)過實際應(yīng)用知平滑處理過的AD數(shù)值誤差精度已達(dá)要求。其次,做8次平滑處理只需在數(shù)值累加時右移3位、結(jié)果中最后左移3位,相比于復(fù)雜的乘除運(yùn)算,左右移操作不會占處理器太多處理時間,一定程度上提高了系統(tǒng)的效率,,否則需乘除法和借助浮點庫,加大了主控需求,給主控帶來了難度和挑戰(zhàn)。最后在SMO狀態(tài)(DMA中斷的處理程序)輸出處理后的位置采樣AD值ad_sm_new,并將此處的ad_sm_new設(shè)置為全局變量數(shù)據(jù)共享即可進(jìn)入到Verify_Keep狀態(tài)。TIM4狀態(tài)中定時器設(shè)置為1 s中斷的方式采集ad_sm_new并通過串口發(fā)送給上位機(jī),通過串口調(diào)試器顯示給程序員調(diào)試。為滿足調(diào)整的精度要求,系統(tǒng)初始化時設(shè)置系統(tǒng)定時器(滴答定時器),程序運(yùn)行后處于Sys狀態(tài),每10 ?滋s產(chǎn)生系統(tǒng)定時中斷對當(dāng)前位置采集到的AD值(即ad_sm_new),根據(jù)當(dāng)時的實際情形進(jìn)行PID調(diào)試或PI調(diào)試狀態(tài)后進(jìn)入PWM狀態(tài),輸出調(diào)整PWM占空比(速度)。采集到的位置要改變方向時(即到達(dá)一方向的終點時,在Verify_Keep狀態(tài)下的判斷),進(jìn)行Deal2處理進(jìn)入Die狀態(tài)。由于在改變方向時直流電機(jī)不能立刻停下來改變方向,每次都是在原始的方向減小到0然后再改變方向,這種情況不滿足實際的工作狀態(tài)。此狀態(tài)下通過初始化時設(shè)置的高級定時器,設(shè)置死區(qū)加以控制小車方向的改變??刂葡到y(tǒng)需要更改位置初始點設(shè)置以及系統(tǒng)定時中斷時間等參數(shù)時,通過按鍵中斷促使發(fā)生,進(jìn)入到Key狀態(tài),此狀態(tài)下有相應(yīng)的消抖處理,一旦確認(rèn)特定的按鍵按下則進(jìn)入到Change狀態(tài),通過串口顯示信息提示來更改初始點位置以及系統(tǒng)中斷時間等參數(shù)。
3.2 系統(tǒng)中PID算法的應(yīng)用
圖4為PID算法在程序中的應(yīng)用。從程序框圖可知,在初始點處設(shè)Uk=0,每10 ?滋s后進(jìn)入系統(tǒng)中斷采集位置AD值,然后計算出偏差err。若err大于設(shè)定的最大偏差,則需進(jìn)行比例、積分、微分共同調(diào)節(jié);若小于設(shè)定偏差,則只需比例、積分調(diào)節(jié),最后通過偏差數(shù)值乘以設(shè)定的比例值算出需要的Templ,并把Uk進(jìn)行累積(最后的Uk為TIM1定時器需要裝載的值)來更改占空比。若求出的偏差err>0則正向輸出PWM波形,否則反向輸出。
PID程序設(shè)計重要的是調(diào)節(jié)適當(dāng)?shù)谋壤?、積分、微分系數(shù),本系統(tǒng)在PID調(diào)節(jié)過程中首先把微分、積分系數(shù)設(shè)為0,使之成為純比例調(diào)節(jié)。調(diào)節(jié)比例系數(shù)Kp由0增大,直至出現(xiàn)震蕩后,減小Kp使震蕩消失后記此比例系數(shù)Kp。比例系數(shù)確定后調(diào)節(jié)積分系數(shù)Ki,積分系數(shù)的時間常數(shù)設(shè)為較大的Ti,然后為較小Ti使之出現(xiàn)振蕩,然后再反過來增加Ti使振蕩消失后記此Ki。最后在微分調(diào)節(jié)時先觀察,若發(fā)現(xiàn)控制有明顯的滯后時,需對Kd進(jìn)行調(diào)節(jié)到合適,否則不需調(diào)節(jié)Kd。通過此調(diào)節(jié)過程可知PID算法在此控制系統(tǒng)的簡單性和實用性。
3.3 高級定時器在程序中的應(yīng)用設(shè)置
主控中的高級定時器TIM1能夠輸出兩路互補(bǔ)的PWM信號并能瞬時地關(guān)斷和接通,同時設(shè)置定時器中的CCxE和CCxNE位插入死區(qū)。設(shè)置適當(dāng)?shù)牟迦胨绤^(qū)時間可以瞬間地調(diào)整搖擺(相當(dāng)于噴繪機(jī)中的小車)的方向,不會因為慣性太大而難以剎車。設(shè)置時定時器的PA9和PB14引腳對應(yīng)到OCx和OCxN。庫函數(shù)通過設(shè)置TIM_BDTRInitStructure.TIM_DeadTime值來改變插入的死區(qū)時間。系統(tǒng)上電初期,TIM1_BDTR寄存器中的MOE低即剎車功能禁止。方向調(diào)整需要更改時,調(diào)整TIM1_BDTR寄存器BKE位來使能剎車功能。當(dāng)不需要調(diào)整方向而在一個方向上平穩(wěn)運(yùn)行時,通過位置檢測來調(diào)整需要的占空比。圖5為系統(tǒng)剎車時序圖,是搖擺調(diào)整方向時通過示波器測出的。圖中1通道引入的是定時器1的PA9引腳,2互補(bǔ)通道引入的是定時器1 PB14引腳,可看出兩條豎線間是插入的死區(qū)時間,從右邊黑圈內(nèi)讀出兩豎線間的時間為300 ?滋s與高級定時器的設(shè)置相吻合。經(jīng)實際操作驗證,此系統(tǒng)在此死區(qū)時間以及互補(bǔ)PWM信號設(shè)置下可瞬時改變方向,基本消除了機(jī)械上慣性帶來的干擾。
4 系統(tǒng)的測試
結(jié)合系統(tǒng)總體架構(gòu)的軟件和硬件平臺以及過程方法步驟的闡述,最后測試結(jié)果如圖6、圖7所示。其中圖6顯示了運(yùn)動過程中的位置采樣信息,從圖可知,在COM1下、9 600 b/s傳輸率、8個數(shù)據(jù)位、1個停止位、無奇偶校驗下,第一時刻采集到的位置值為198。圖7是PID在此位置調(diào)試下的示波器截圖,顯示了此位置下通過PID調(diào)節(jié)后輸出的占空比PWM波形。從截圖黑圈中可看出,在平穩(wěn)狀態(tài)下運(yùn)行時的頻率為20 kHz,占空比為28%,滿足搖擺平穩(wěn)的運(yùn)行狀態(tài)與實際的設(shè)置相吻合。結(jié)合圖5、圖6、圖7可看出搖擺在調(diào)整方向時的剎車以及PID在搖擺平穩(wěn)狀態(tài)下運(yùn)行的可行性和實用性,證明此設(shè)計系統(tǒng)正確,可投放到應(yīng)用領(lǐng)域。
5 結(jié)論
隨著噴繪技術(shù)發(fā)展,對噴繪機(jī)中小車控制系統(tǒng)要求越來越高。本設(shè)計從簡單、方便、實用性考慮,將STM32作為主控制平臺、L6203作為電機(jī)驅(qū)動,系統(tǒng)結(jié)合軟件設(shè)計出噴繪機(jī)中小車的控制系統(tǒng)。通過實踐和理論研究證明此方案可行,系統(tǒng)不僅簡捷、方便,而且更改容易,且執(zhí)行過程中一定程度上提高了系統(tǒng)的效率并解決了一定技術(shù)難題,達(dá)到了理想的預(yù)期效果。但此設(shè)計控制系統(tǒng)沒能真正地面向噴繪機(jī)中小車系統(tǒng),只是采取了系統(tǒng)等效法進(jìn)行了演示,一定還有不少缺陷和不足,需以后加以彌補(bǔ)和改正。也希望將來此設(shè)計系統(tǒng)可廣泛應(yīng)用到噴繪機(jī)小車的控制系統(tǒng)中。
參考文獻(xiàn)
[1] 李博,馬訓(xùn)鳴,霍建鋒.基于PID的變量馬達(dá)恒速控制系統(tǒng)研究[J].西安工程大學(xué)學(xué)報,2014,27(2):231-233.
[2] 劉晉,劉卓.USB接口在噴繪機(jī)中的應(yīng)用[J].航空計算技術(shù),2007,37(2):62-65.