張 婧,樊艷艷,李 勇
(1.中國核電工程有限公司,北京 100840;2.中核控制系統(tǒng)工程有限公司,北京 102401)
步進電機因為其結(jié)構(gòu)簡單、控制方式容易、定位精度高等優(yōu)點,在各控制領(lǐng)域中廣泛應(yīng)用。隨著生產(chǎn)自動化要求的不斷提高,步進電機的控制需求與日俱增,驅(qū)動方式也已經(jīng)非常成熟,在舞臺燈光的控制系統(tǒng)中,對于步進電機的遠程控制也成為一種趨勢。本文主要研究的是基于STM32F103VCT6 單片機和TMC5160 電機驅(qū)動芯片,應(yīng)用于舞臺燈光等控制系統(tǒng)中,是可通過DMX512 通信協(xié)議遠程控制的低成本,高可靠性的步進電機控制系統(tǒng)。
本文中的步進電機控制系統(tǒng)的主控制芯片選用STM32系列的STM32F103VCT6 單片機,電機驅(qū)動芯片選用Trinamic 公司2018 年新推出的TMC5160。
STM32F103 系列單片機是意法半導(dǎo)體公司(ST)推出的基于ARM Cortex-M3 內(nèi)核的32 位處理器芯片,是一款高性價比、速度快、效率高、外設(shè)功能豐富的單片機。

圖1 步進電機控制系統(tǒng)圖Fig.1 Stepper motor control system diagram
TMC5160 是Trinamic 公司于2018 年推出的帶有串行通信接口的新型單軸步進電機驅(qū)動芯片,具有完整的運動控制功能,配合可外擴N 通道MOSFET,每個線圈的電機電流可高達20A,最大電壓60VDC,實現(xiàn)了電機電壓和電流規(guī)格的最大化。其將步進電機驅(qū)動器和專用運動控制器集成在一塊芯片上,將數(shù)字信息轉(zhuǎn)換為平滑、精確、可靠的物理運動。
本步進電機控制系統(tǒng)中,當(dāng)有脈沖輸入步進電機驅(qū)動芯片,驅(qū)動芯片通過MOS 管輸出的信號驅(qū)動步進電機轉(zhuǎn)動。主要通過控制步進電機接收到的脈沖數(shù)來控制其轉(zhuǎn)動的步數(shù);通過控制步進電機接收的脈沖頻率來實現(xiàn)其轉(zhuǎn)動速度和加速度的變化。步進電機接收的脈沖頻率越高其轉(zhuǎn)動速度越快,步進電機接收的頻率越低其轉(zhuǎn)動的速度越慢[1]。STM32 單片機只需給電機控制芯片TMC5160 輸入方向和脈沖信號,即可達到對步進電機的控制。
本步進電機控制系統(tǒng),通過DMX512 通信協(xié)議,接收遠程控制系統(tǒng)發(fā)送的運動控制命令,主控制器判斷接收到的信息,確定PWM 波的方向和頻率,通過調(diào)節(jié)輸出PWM波的方法來對步進電機的運動進行控制[2]。DMX512 的數(shù)據(jù)傳輸,采用RS485 收發(fā)器,其采用差分的接收方式,信號可以遠距離傳輸,抗干擾能力強。
系統(tǒng)構(gòu)成如圖1 所示。
如圖1 所示,步進電機控制電路主要由電源輸入轉(zhuǎn)換模塊、RS485 轉(zhuǎn)換模塊、STM32F103 控制模塊、電機驅(qū)動芯片模塊以及MOSFET H 橋式電路組成。其中,SP3485主要負責(zé)DMX512 協(xié)議的接收[3],通過撥碼開關(guān)設(shè)置DMX512 的通道編碼,STM32F103 主要負責(zé)DMX512 協(xié)議的解析,確定電機運動的方向和速度,由此產(chǎn)生相應(yīng)頻率的PWM 波。

圖2 TMC5160外圍電路Fig.2 TMC5160 Peripheral circuit
STM32F103 控制模塊由基于單片機STM32F103VCT6的最小系統(tǒng)構(gòu)成,步進電機的驅(qū)動電路主要由步進電機驅(qū)動芯片TMC5160 及其外圍電路和MOSFST 橋式電路組成。本電路使用較少的外部器件,如圖2 所示。
本系統(tǒng)采用TMC5160 芯片的SPI/DIR 模式,此模式無需配置TMC5160 的寄存器,將TMC5160 的21 腳接VCC,22 腳接地,即使SD_MODE=1,SPI_MODE=0,可以通過撥碼開關(guān)進行配置;在SPI/DIR 模式下TMC5160 的17 腳為PWM 波的輸入端,18 腳為方向脈沖高低電平的輸入端。
在此模式下,驅(qū)動芯片TMC5160 的細分配置可以通過配置CFG0 和CFG1 實現(xiàn),其中MRES 為實際微步分辨率[4]。
運行電流可以通過配置CFG2、CFG3 和CFG4 實現(xiàn),IRUN 為電機運行時的標(biāo)定值,一般在16 ~31 范圍內(nèi)[4]。
CFG5 和CFG6 分別對應(yīng)TMC5160 的斬波模式選擇和保持電流配置,本系統(tǒng)通過撥碼開關(guān)的設(shè)置,可以自由地進行細分、運行電流等配置。
MOSFET 的選擇要考慮很多因素,包括封裝尺寸、額定電壓、導(dǎo)通電阻等。根據(jù)所需的電流、電壓,選擇擁有快速恢復(fù)特性和低反向恢復(fù)電荷的AO4842 MOS 管組成H橋,可驅(qū)動兩相四線步進電機。AO4842 為貼片型SOP8 封裝,允許更緊湊的PCB 布線,同時降低寄生電感效應(yīng);R3、R4、R5、R6、R13、R14、R15、R16 為MOSFET 柵極電阻RG,當(dāng)使用相對較小的MOSFET 時,軟斜率控制需要串聯(lián)較高的柵極電阻RG,這關(guān)系到能否安全地關(guān)斷MOSFET,要添加額外的二極管,以確保MOSFET 在緩慢切換斜率下的安全關(guān)斷。

表1 驅(qū)動芯片細分配置Table 1 Driver chip breakdown configuration

表2 驅(qū)動芯片運行電流配置Table 2 Drive chip running current configuration

圖3 MOSFET橋式電路Fig.3 MOSFET Bridge circuit

表3 采樣電阻的選擇對應(yīng)最大的電機電流(GLOBALSCALER=255)Table 3 Selection of the sampling resistor corresponds to the maximum motor current (GLOBALSCALER = 255)
TMC5160 有幾種設(shè)置電機電流的方法:電流標(biāo)定器CS、采樣電阻等。本系統(tǒng)通過采樣電阻(R7、R8、R9、R10)設(shè)置電機線圈的電流,電阻與電機電流對應(yīng)的關(guān)系見表3[4]。
由于電機的電流全部流過采樣電阻,所以選擇采樣電阻要仔細考慮,可選擇薄膜電阻或碳晶實心電阻,以抑制電壓尖峰引起的振鈴;在設(shè)計PCB 時,要注意將采樣電阻和所有濾波電容盡可能地靠近MOS 管放置,并且地線采用大面積鋪銅的方式,以降低電阻、電感,增大散熱面積。
軟件通過C 語言實現(xiàn),在Keil uVision5 軟件,設(shè)計了初始化模塊、定時器中斷模塊、DMD512 通訊和協(xié)議解析模塊、電機控制模塊。
步進電機在啟動階段頻率過高或者頻率降低過快,會使電機出現(xiàn)震蕩或者丟步的現(xiàn)象,所以步進電機在啟動時要有頻率逐漸增加的過程,停止時也要有緩慢降低頻率的過程。一般步進電機的運動過程為3 個階段:加速、勻速、減速。步進電機的控制算法常用的有梯形算法、“S”型函數(shù)法、SPTA 算法等。
本控制系統(tǒng)控制電機的運動,采用梯形加速的方式實現(xiàn)。以電機運動一定的距離為例,即電機接收定量脈沖,在此過程中電機先由低速啟動,按照一定的加速度加速,然后勻速運動,快到目標(biāo)位置的時候,按一定的加速度減速,最終到目標(biāo)位置停止。

圖4 梯形加減速波形圖Fig.4 Trapezoidal acceleration / deceleration waveform
梯形加減速的過程如圖4 所示。在加速階段和減速階段將時間分成很多等分,先通過DMX512 得到梯形加速的斜率設(shè)置,即通過確定加減速的時間AddTimer,繼而確定加減速的級數(shù)Ladder_Num,然后得到初始頻率StartFreq 和目標(biāo)頻率TargetFreq 的差值,這個差值除以加減速的級數(shù),就得到了每次頻率增加或減少的數(shù)值。
Ladder_Num=AddTimer/10;//加減速級數(shù)
j=(TargetFreq-StartFreq)/LadderNum;
可以由此得到加減速各個階梯的頻率LadderFreq,進而確定對應(yīng)的定時器的預(yù)分頻的值LadderPSC。
for(i=0;i { LadderFreq[i]=i*j+StartFreq;//加減速各階梯頻率 LadderPSC[i]=(6000000/LadderFreq[i])-1; //加減速各階梯頻率對應(yīng)定時器預(yù)分頻值 } 本系統(tǒng)通過調(diào)節(jié)單片機定時器的方式調(diào)整PWM 波,得到輸出頻率,使用的定時器3,根據(jù)調(diào)整定時器預(yù)分頻的值的方式,來調(diào)整PWM 波的輸出頻率。在使用定時器之前要注意以下設(shè)置: TIM_TimeBaseStructure.TIM_Prescaler =TIM3_PSC; //設(shè)置用來作為TIM3 時鐘頻率除數(shù)的預(yù)分頻值 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //設(shè)置TIM 向上計數(shù)模式 單片機STM32F103VCT6 通過串口定時器中斷服務(wù)解析DMX512 協(xié)議,部分串口程序如下: void UART4_IRQHandler(void) { static u16 i=0; static u16 UART_REG=0; static u16 CODE_Data=0; static u8 RXB8=0; if(USART_GetFlagStatus(UART4, USART_FLAG_RXNE)!= RESET) { UART_REG = USART_ReceiveData(UART4); RXB8 = (u8)((UDR>>8)&0x01); if(RXB8) { DMXSignalFlag = YES; RXD_Data[i]=(u8)(UART_REG); //DMX512 寄存器 if(++i>=512) i=0; } else { CODE_Data = UART_REG; if(CODE_Data==0) { i=0; CODE_Data=0x1ff; } } } if(USART_GetITStatus(UART4, USART_IT_TXE) !=RESET) { USART_ITConfig(UART4, USART_IT_TXE,DISABLE);//清中斷 } } 本文主要介紹了一款基于STM32F103VCT6 單片機和TMC5160 的步進電機控制系統(tǒng),主要介紹了系統(tǒng)的硬件電機控制電路,通過梯形加減速,實現(xiàn)了步進電機的平穩(wěn)控制,降低了步進電機的控制成本,可廣泛應(yīng)用于舞臺、噴泉等控制系統(tǒng)。3.3 DMX512通訊和協(xié)議解析模塊
4 結(jié)束語