本文主要介紹了一種基于STM32的混合式步進(jìn)電機(jī)控制方案,STM32產(chǎn)生PWM(脈寬調(diào)制信號),利用PWM完成DAC轉(zhuǎn)換,通過PWMDAC的輸出電壓實(shí)現(xiàn)對步進(jìn)電機(jī)的多細(xì)分控制。該設(shè)計(jì)相比利用DAC數(shù)模轉(zhuǎn)換芯片的設(shè)計(jì)方案具有電路簡單,費(fèi)效比高的優(yōu)點(diǎn),而且可實(shí)現(xiàn)步進(jìn)電機(jī)十六分之一步的驅(qū)動控制,精度較高。
1、硬件設(shè)計(jì)
硬件設(shè)計(jì)框圖如圖1所示,主要由PC上位機(jī)給STM32F103發(fā)送控制命令,通過STM32F103控制A3988,從而驅(qū)動兩個步進(jìn)電機(jī)轉(zhuǎn)動。其中,STM32F103是意法半導(dǎo)體公司生產(chǎn)的基于ARMCortex—M3內(nèi)核的微控制器,內(nèi)核架構(gòu)先進(jìn),性能優(yōu)越,主頻可達(dá)72MHz,執(zhí)行效率高,具有較高的運(yùn)算能力及數(shù)據(jù)處理功能,擁有豐富的外設(shè)接口,在硬件設(shè)計(jì)中,上位機(jī)與STM32F103之間的RS—422串行通信,就是通過外接MAX3079電平轉(zhuǎn)換芯片來實(shí)現(xiàn)的。
圖1硬件設(shè)計(jì)框圖
STM32F103控制定時器產(chǎn)生PWM,通過LPF(低通濾波器)實(shí)現(xiàn)PWM的DAC轉(zhuǎn)換,并由PWMDAC來提供A3988的4個基準(zhǔn)電壓,設(shè)計(jì)中,定時器TIM1的輸出通道在經(jīng)過濾波器后與A3988的參考電壓VERFx接口相連,PC0~3,PB12~15,PB6~9為通用GPIO輸出端口,接A3988的邏輯控制信號輸入腳I0x、I1x和Phasex,PC0~3和PB12~15分別置低,Phasex用于控制流過電機(jī)各相電流的方向。選用的步進(jìn)電機(jī)的步距角為0.9,額定電流為0.5A。
2、多細(xì)分控制原理分析與實(shí)現(xiàn)
2.1、多細(xì)分控制原理分析
選用電機(jī)為兩相步進(jìn)電機(jī),假設(shè)為A、B相,通過兩相的電流在相位上相差為90,控制流過兩相的電流大小和方向就可以控制電機(jī)轉(zhuǎn)動。A3988是一個4DMOS全橋脈寬調(diào)制電機(jī)驅(qū)動器,可以同時驅(qū)動兩個步進(jìn)電機(jī),每個全橋輸出電流最大可達(dá)到1.2A。流過電機(jī)的每一相電流可以通過UREFx,I0x,I1x,Phasex和接SENSEx引腳的電阻Rx進(jìn)行控制。工作電流通過公式(1)可以得到。
ITripMax=UREFx/(3RSx)(1)
由式(1)可知,最大電流ITripMax是由UREFx和RSx共同決定,UREFx為PWM-DAC的輸出的電壓,其最大值為1.1V,RSx選用1歐的電阻。
ITrip=(%ITripMax/100)ITripMax(2)
式(2)中,ITrip為實(shí)際輸出的電流,邏輯接口I0x,I1x控制%ITripMax,由A3988的用戶文檔可知,當(dāng)I0x,I1x控制邏輯都為低時,實(shí)際輸出電流就等于最大電流,由上述公式可知,ITrip最大輸出約為367mA。
為實(shí)現(xiàn)步進(jìn)電機(jī)多細(xì)分控制,必須能夠控制流過步進(jìn)電機(jī)的兩相電流,在參考電壓UREFx一定的情況下,使用邏輯接口I0x,I1x,Phasex僅可實(shí)現(xiàn)步進(jìn)電機(jī)整步、半步和四分之一步的驅(qū)動控制,這樣的細(xì)分控制并不能滿足設(shè)計(jì)需求,為了得到更多的細(xì)分,設(shè)計(jì)采用動態(tài)改變UREFx的方法來輸出動態(tài)變化的電流,通過對UREFx的多細(xì)分控制,來實(shí)現(xiàn)對ITrip的多細(xì)分,從而實(shí)現(xiàn)對步進(jìn)電機(jī)多細(xì)分控制。
UREFx由PWM-DAC輸出,其值在0~1.1V變化,將其按0~π的正旋曲線32等分得到32個電壓值,令PWM-DAC輸出的值為這32個值,從而對應(yīng)得到0~1.1V的32個電壓值和按正弦規(guī)律變化的32個電流值,通過Phasex控制電流方向,可實(shí)現(xiàn)步進(jìn)電機(jī)1/16步的驅(qū)動控制。
2.2、PWM實(shí)現(xiàn)DAC轉(zhuǎn)換的原理及設(shè)計(jì)
雖然大容量的STM32F103具有內(nèi)部DAC,但是更多的型號是沒有DAC的,本文中所用到的STM32F03就沒有DAC外設(shè)功能。不過STM32所有的芯片都有PWM輸出,因此,可以用PWM+LPF來實(shí)現(xiàn)PWM-DAC輸出,從而節(jié)省成本。
PWM本質(zhì)上是一種周期一定而高低電平的占空比可以調(diào)制的方波信號,實(shí)際電路中典型的PWM波形如圖2所示。
圖2典型的PWM波形
圖2的PWM波形可以用分段函數(shù)表示為式(3)。
式(3)中,T是STM32定時器TIM1的計(jì)數(shù)頻率(最高可達(dá)72MHz)的倒數(shù),N是PWM波一個周期的計(jì)數(shù)脈沖個數(shù),也就是STM32的ARR—1的值,n是PWM波一個周期中高電平的計(jì)數(shù)脈沖個數(shù),也就是STM32的CCRx的值,VH和VL分別是STM32產(chǎn)生PWM波的高低電平電壓值,高電平為3.3V,低電平為0V,k為諧波次數(shù),t為時間。將式(3)展開成傅里葉級數(shù),得到式(4)。
從式(4)可以看出,式(4)中第1個方括弧為直流分量,第2項(xiàng)為1次諧波分量,第3項(xiàng)為大于1次的高次諧波分量。直流分量與n成線性關(guān)系,并隨著n從0到N,直流分量在0~3.3V變化。這正是電壓輸出的DAC所需要的。因此,如果能把式中除直流分量外的諧波過濾掉,則可以得到從PWM波到電壓輸出DAC的轉(zhuǎn)換,即:PWM波可以通過一個低通濾波器進(jìn)行解調(diào)。其中,第2項(xiàng)的幅度和相角與n有關(guān),頻率為1/(NT),其實(shí)就是PWM的輸出頻率。該頻率是設(shè)計(jì)低通濾波器的依據(jù)。如果能把1次諧波很好過濾掉,則高次諧波就基本不存在了。
選用RC二階低通濾波器實(shí)現(xiàn)PWM波的解調(diào),電路設(shè)計(jì)如圖3所示。
圖3二階低通濾波器調(diào)理電路
當(dāng)N取值為256時,PWM-DAC的分辨率為log2(N)=8位,在8位分辨條件下,要求1次諧波對輸出電壓的影響不要超過1個位的精度,也就是3.3/256=0.01289V。由式(4)可知,一次諧波的最大值是2×3.3/π=2.1V,所以,RC濾波電路要提供至少-20lg(2.1/0.01289)=-44dB的衰減。
當(dāng)STM32的定時器TIM1的計(jì)數(shù)頻率是72MHz,分辨率為8的時候,PWM頻率為72/256=281.25kHz。如果是1階RC濾波,則要求截止頻率為1.77kHz,如果為2階RC濾波,則要求截止頻率為22.34kHz。相比之下,2階濾波器的信號抑制能力更強(qiáng),濾波效果更好。由分析可知,2階RC濾波截止頻率計(jì)算公式為:
7.96×10-5,可確定電路參數(shù)值,令R1=R2=2.4kΩ,C1=C2=3300pF,可計(jì)算出圖3的截止頻率為21.9kHz,略小于22.34kHz,符合設(shè)計(jì)需求。PWM波調(diào)制后,輸出的直流分量最大值為3.3V,而UREFx可操作的電壓的范圍是只有0~1.5V,可利用一個2.4kΩ的電阻R3與濾波器串聯(lián),從而實(shí)現(xiàn)對直流分量的分壓調(diào)理。
3、軟件設(shè)計(jì)
軟件設(shè)計(jì)主要是電機(jī)驅(qū)動軟件的相關(guān)設(shè)計(jì),通過對定時器的控制,實(shí)現(xiàn)電機(jī)的轉(zhuǎn)動方向和速度的調(diào)節(jié),其次是PC上位機(jī)控制軟件設(shè)計(jì),主要利用C++Bulider平臺開發(fā),完成對步進(jìn)電機(jī)的測試。
3.1、PWM信號產(chǎn)生的設(shè)計(jì)
STM32F103中的7個定時器,每個定時器均有4個獨(dú)立可編程通道輸出的PWM信號。選用高級定時器TIM1,它由APB2總線提供時鐘,設(shè)置為72MHz,向上(增)計(jì)數(shù),自動裝載寄存器ARR—1的值為256,所以,PWM波的占空比的取值范圍為0~256,不同占空比的取值存儲在每個通道的捕獲比較寄存器CCRx中,編程時,通過改變寄存器CCRx的值來改變PWM波的占空比。占空比值的計(jì)算如式(6)所示。
這樣就得到正旋曲線0~π范圍內(nèi)的32個點(diǎn)對應(yīng)的占空比的值。將得到的占空比的值放在定義的數(shù)組Sequence[32]內(nèi),通過查表的方法,使定時器TIM1輸出占空比變化的PWM波,通過濾波器后產(chǎn)生UREFx的波形如圖4。
圖4PWM產(chǎn)生UREFx波形圖
從圖中可以看出,輸出信號UREFx波形達(dá)到了預(yù)期目標(biāo)。由于選擇了合適的濾波器參數(shù),PWM波和UREFx幾乎不存在大的相位差。
3.2、Phasex信號產(chǎn)生的設(shè)計(jì)
Phase1~Phase4用于控制流過電機(jī)各相電流的方向,當(dāng)Phase1為1時,電流從OUT1A流向OUT1B流向,當(dāng)Phase1為0時,電流從OUT1B流向OUT1A,其他三相控制原理相同,下面就以Phase1為例加以闡述。
STM32F103通過PB6來控制Phase1信號,配置PB6為推挽輸出端口,在UREFx奇數(shù)次周期時,將PB6置1,偶數(shù)次周期時,PB6置0,在0~2π區(qū)間內(nèi),PB6將變化兩次。Phase1信號變化如圖5所示。
圖5Phase1信號變化波形
通過Phasex信號對電流方向的控制,可實(shí)現(xiàn)實(shí)際輸出電流ITrip以2π為周期的正弦曲線變化,在0~2π共產(chǎn)生64個電流值,從而實(shí)現(xiàn)了步進(jìn)可實(shí)現(xiàn)步進(jìn)電機(jī)十六分之一步的驅(qū)動控制。
3.3、步進(jìn)電機(jī)正反轉(zhuǎn)和變速控制
由于通過步進(jìn)電機(jī)A、B相的電流在相位上相差為90,當(dāng)A相超前B相時,電機(jī)正轉(zhuǎn),而當(dāng)B超前A時,則電機(jī)反轉(zhuǎn)。所以,控制流過A、B相電流的相位差,即可實(shí)現(xiàn)對步進(jìn)電機(jī)的方向控制,也就是控制輸入?yún)⒖茧妷旱南辔徊?。在軟件設(shè)計(jì)時,定時器TIM1通過查表法輸出PWM波,在占空比數(shù)組的初始下標(biāo)取值時,讓A、B相對應(yīng)的PWM輸出相差90。例如,當(dāng)A相對應(yīng)的PWM輸出的初始占空比為Sequence[0]時,B相為Sequence[16],這樣使得輸入各相的參考電壓在相位上相差了90。
在步距角已知的情況下,通過控制相鄰兩個取值的變化時間間隔,便可以控制電機(jī)的轉(zhuǎn)動速度,時間間隔越小,轉(zhuǎn)動速度越高,時間長則轉(zhuǎn)速低。為了得到兩個取值變化之間精確的時間間隔,設(shè)計(jì)通過定時器TIM2進(jìn)行精確的定時控制,TIM2中ARR—1的取值通過等分0~π2正弦曲線的辦法計(jì)算得到,在這里不再贅述,定時器產(chǎn)生定時中斷,中斷響應(yīng)中改變PWM占空比的值,實(shí)現(xiàn)了速度10級可調(diào)??芍诓竭M(jìn)電機(jī)實(shí)現(xiàn)變速控制時,Phasex和UREFx的頻率都發(fā)生了變化。
3.4、上位機(jī)控制和實(shí)驗(yàn)測試
STM32F103提供功能強(qiáng)大的USART串口功能,在本設(shè)計(jì)中,通過外接電平轉(zhuǎn)換芯片實(shí)現(xiàn)了上位機(jī)與MCU之間的RS—422串行通信,RS—422是一種全雙工的通訊總線。STM32F103通過計(jì)算PWM占空比變化的次數(shù)和TIM2的中斷周期,將電機(jī)的位置點(diǎn)和速度信息發(fā)送至上位機(jī),上位機(jī)利用增量式PID算法,向步進(jìn)電機(jī)發(fā)送控制命令,實(shí)現(xiàn)對電機(jī)的實(shí)時控制。
為了確定系統(tǒng)能否按照設(shè)計(jì)需求工作,需要對系統(tǒng)進(jìn)行測試。上位機(jī)模擬生成一段目標(biāo)航路,控制步進(jìn)電機(jī)跟蹤,測試結(jié)果如圖6所示。
圖6模擬航路跟蹤誤差曲線
由測試結(jié)果可知,步進(jìn)電機(jī)跟蹤精度在2mil之內(nèi),達(dá)到了模型設(shè)計(jì)的需求。
4、結(jié)束語
本文介紹了基于STM32F103和A3988的步進(jìn)電機(jī)多細(xì)分控制系統(tǒng),較傳統(tǒng)的利用DA轉(zhuǎn)換芯片的方案,具有結(jié)構(gòu)簡單,靈活性較好等優(yōu)點(diǎn),充分利用了A3988技術(shù)應(yīng)用特點(diǎn)和STM32F103芯片優(yōu)越的性能,極大提高了系統(tǒng)的性能和可擴(kuò)展性。經(jīng)實(shí)際實(shí)驗(yàn)表明,該系統(tǒng)工作穩(wěn)定,精度高,且具有較高精度及效費(fèi)比,達(dá)到了設(shè)計(jì)要求,為步進(jìn)電機(jī)控制提供了一種新的方法,具有一定推廣價值。
評論