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