,2
(華東理工大學信息科學與工程學院1,上海 200237;化工過程先進控制與優(yōu)化技術教育部重點實驗室2,上海 200237)
隨著社會的快速發(fā)展,人們的經濟收入顯著提高,汽車正在快速地進入普通家庭的生活。以前,汽車微型電機僅僅作為雨刮器、電機油泵、自動天線、擋風玻璃洗滌器等部件的驅動源,數量相對較少。如今,人們對舒適度與自動操控性的不斷追求,汽車電子得到了迅速發(fā)展,尤其是車用微型電機?,F在轎車內安裝有許多微型電機,例如電動座椅坐墊的位置移動、靠背和頭枕角度的變化、后視鏡的擺動、照明大燈的洗滌、玻璃窗的開啟關閉、電動車門鎖的操縱、水箱冷卻風扇的轉動等。這些汽車電機的大量需求,催生了部分企業(yè)對汽車電機的生產。
對于電機中的步進電機,如何快速且有效地檢測微型步進電機的性能特質,成為企業(yè)必須考慮的問題。電機的性能指標中,主要包括驅動器的設計、電機電流的檢測、步進電機的驅動電壓范圍以及步進電機的頻率等。本文將根據步進電機性能指標的檢測要求,進行檢測系統的硬件電路設計、軟件代碼開發(fā),以實現對步進電機的控制與檢測功能。
為了實現步進電機的良好控制以及性能檢測,同時,為了便于整個系統后續(xù)的修改與改進,將整個系統分成電源轉換模塊、主控制器模塊、步進電機驅動模塊、電機電流檢測模塊以及上位機接口模塊等幾部分。各個模塊之間相互獨立,可以方便地進行替換以及修改。
① 系統電源轉換模塊利用金升陽電源模塊完成AC 220 V轉DC 24 V的電壓轉換,利用專用電源芯片完成DC 24 V轉DC 5 V、DC 3.3 V的電壓轉換,并通過可調電位器完成步進電機驅動電壓的產生。
② 主控制器模塊利用STM32芯片完成步進電機的正反轉控制、穩(wěn)定狀態(tài)步數、頻率等相關的設置。
③ 驅動器模塊通過反相器74HC04D與L298N建立步進電機驅動器,完成步進電機的正常驅動。
④ 電流檢測模塊通過電流電壓檢測芯片MAX4172完成電流采集以及相關檢測。
⑤ 上位機界面利用C#語言完成人機交互界面軟件代碼,實時顯示當前步進電機的性能情況。
系統整體框架如圖1所示。
圖1 系統整體框架圖
為方便實際使用,電源轉換模塊采用AC 220 V作為輸入電壓,并利用MORNSUN的專用電源轉換芯片HL25-10B24將AC 220 V電源轉換成DC 24 V。該芯片具有穩(wěn)壓輸出、低紋波、低噪聲等特點。芯片內部具有大量的保護電路(輸出短路、過流、過溫等保護),可以防止因不當操作而損壞芯片。芯片產生的DC 24 V利用LM2596-5芯片轉換成DC 5 V電源,再利用LM1117-3.3芯片轉換產生DC 3.3 V電源。所產生的DC 5 V電源和DC 3.3 V電源為后續(xù)檢測芯片、控制器等供電。同時,利用LM2596-ADJ可調電源轉換芯片,通過R2、R3和R4的阻值關系,調節(jié)R2的阻值;利用LM2596-ADJ內部參考電壓Uref(1.23 V),輸出不同的電壓值UCC_M,用作步進電機的驅動電壓等。
UCC_M=Uref(R4+R2)/R3
(1)
式中:R3=1.5 kΩ;R4=5.1 kΩ;可變電位器R2的量程范圍為0~20 kΩ。
當R2取最小值0 kΩ時,UCC_M輸出4.18 V;當R2取最大值15 kΩ時,UCC_M輸出20.58 V。因此,UCC_M的取值范圍為4.18~20.58 V,比較符合汽車電機的電壓使用范圍8~16 V。
電源電壓轉換電路如圖2所示。
圖2 電源電壓轉換電路
系統選擇ST公司的Cortex-M3系列的微處理器STM32F103C8T6作為主控制器[1]。STM32F103xx具有高性能的ARM Cortex-M3 32位RISC內核,工作頻率達到72 MHz;內置高速存儲器(高達128 kB的閃存和20 kB的SRAM),具有豐富的增強I/O端口和聯接到2條APB總線的外設。其包含2個12位的ADC、3個通用16位定時器和1個PWM定時器,同時具有標準和先進的通信接口,如I2C、SPI、USART、USB和CAN總線等。
STM32F103xx這些豐富的接口,使其具有廣泛的應用場合:①電機驅動和應用控制;②醫(yī)療和手持設備;③PC外設和GPS平臺;④工業(yè)應用(可編程控制器、變頻器、打印機和掃描儀);⑤警報系統、視頻對講和暖氣通風空調系統等。
本文利用其在電機驅動和應用控制方面的優(yōu)勢來控制步進電機;利用MAX3232轉換芯片與RS-232接口,編寫上位機軟件代碼與PC機進行串口通信;利用Cortex-M3內部集成的ADC進行電壓檢測;通過TIM2定時器產生定時中斷;通過DMA直接內存存儲特性提高CPU的工作效率等功能實現步進電機控制與檢測。具體主控制器與串口通信電路如圖3所示。
圖3 主控制器與串口通信電路
步進電機驅動器主要用于步進電機的驅動。步進電機選擇的好壞,將在很大程度上決定步進電機的運行情況。該步進電機驅動器模塊采用L298N[2-6]驅動芯片。L298N驅動芯片屬于H橋集成電路,具有輸出大電流、大功率等特點;采用DIP封裝以及加散熱片的形式提高芯片的散熱效果,防止芯片發(fā)熱而影響芯片性能。
同時,利用IN4007二極管進行反接,實現電路保護,防止步進電機因堵轉等原因產生高脈沖沖擊電壓而損壞驅動器[7-11]。此外,在L298N的信號輸入端增加反相器74HC04,以進一步提高電機的驅動能力。步進電機驅動器電路設計如圖4所示。
圖4 步進電機驅動器電路設計
需要檢測的步進電機是兩相六線,即該步進電機主要有A+/A-相、B+/B-相和兩個驅動電源,共6根線組成。為了加快步進電機的檢測效率,4個步進電機同時檢測。根據參考,步進電機的最大相電流不超過260 mA,則4個步進電機的最大相電流和不超過1 040 mA,而驅動器L298N的輸出電流為2 A,最大可達到4 A。因此,考慮部分損耗,1個驅動器L298N完全能驅動4個步進電機[12-13]。
步進電機的控制是將A+A-B+B-(Pin1、Pin3、Pin4、Pin6)的高低電位,每隔一定的時間,按照一定的順序進行循環(huán)往復操作。如A+A-B+B-(Pin1、Pin3、Pin4、Pin6)的電位按照1001→1010→0110→0101的順序進行,再回到1001進行重復操作,并假定這種情況是正轉;那么反轉的情況剛好與正轉相反,即0101→0110→1010→1001,再回到0101進行重復操作。步進電機電平控制時序如圖5所示。
圖5 步進電機電平控制時序
無論是正轉還是反轉,每相相電流并非一直存在。為了查看當前測試電機的相電流情況,可以考慮直接接示波器測量電流。這種方式可以方便地觀察波形的情況(毛刺、峰值等),但這種方式比較適合前期試驗使用,在實際大批量測試時,這種方式就顯得不太合適。因此,利用電流電壓轉換芯片MAX4172,將測到的電流轉換成電壓并發(fā)送給Cortex-M3,在有電流產生時,利用其內部的ADC進行A/D采集,并進行一定的數據轉換,將數據發(fā)送給上位機顯示。以U1為例,在A+的電位為低時,產生相電流ILOAD,通過采樣電阻RSENSE(R2),將電流轉換為電壓;通過跨導增益Gm(10 mA/V),利用輸出采樣電阻ROUT(R5)輸出檢測電壓UOUT(MI1),并傳輸給控制器STM32F103。轉換公式如下:
UOUT=ROUT×Gm×ILOAD×RSENSE
(2)
在電流電壓轉換公式中,可以通過改變ROUT的值來改變輸出電壓值。采樣電阻RSENSE盡可能選擇小阻值,以減少電流的下降,并通過并聯較大阻值的R1對其進行部分修正。
系統軟件設計流程包括系統啟動、初始化程序、模式選擇、模式配置、電機正反轉控制和上位機顯示等。系統軟件設計流程如圖6所示。
圖6 系統軟件設計流程
初始化過程主要完成I/O端口、USART串口、RCC時鐘、ADC和DMA的初始化配置,以及Systick定時器配置、filter平均濾波算法、延遲函數設置與中斷初始化配置等。引入DMA配置的目的在于利用DMA的直接存儲功能,節(jié)省向CPU請求的時間,提高工作效率。加入filter()的目的在于利用其平均值濾波算法避免單次誤操作或檢測,避免檢測數值嚴重偏大。
模式選擇有兩種模式,簡要說明如下。
模式一,屬于常規(guī)模式,主要完成步進電機正轉啟動、穩(wěn)定轉動、停止轉動,循環(huán)N次;步進電機反轉啟動,穩(wěn)定轉動,停止轉動,循環(huán)N次。最后整個過程循環(huán)N次。
模式二,屬于一般模式,主要完成步進電機的隨意正反轉、停止轉動,并循環(huán)N次操作。
步進電機操作包括正轉反轉時的電機啟動、穩(wěn)定、停止的函數設置。部分函數設置如下。
void Motor_Conseqent_Start(u16 Start_Freq, u16 Steady_Freq);
void Motor_Conseqent_Steady(u16 Steady_Freq, u32 Steady_times);
void Motor_Conseqent_Stop(u16 Steady_Freq, u16 Stop_Freq);
void Motor_Reverse_Start(u16 Start_Freq, u16 Steady_Freq);
void Motor_Reverse_Steady(u16 Steady_Freq, u32 Steady_times);
void Motor_Reverse_Stop(u16 Steady_Freq, u16 Stop_Freq);
利用這些函數,可以快速地完成模式一、模式二的設置,實現步進電機的不同控制。
上位機部分完成步進電機的配置,包括啟動頻率、穩(wěn)定頻率、停止頻率、循環(huán)次數等。同時,通過串口調試軟件,完成步進電機在各個狀態(tài)下步進電機的電壓值、電流值等顯示。
為了分析整個系統的性能與可靠性,對模式一、模式二分別進行了試驗測試。在模式一中,對步進電機在不同的驅動電壓下進行測試,主要在8 V、10 V、12 V、14 V、16 V的電壓下進行穩(wěn)定性測試。選取的數據主要是步進電機在穩(wěn)定狀態(tài)下的30組電流值(僅在有電流通過時)。對這30組測試數據進行Matlab圖形顯示,不同電壓下步進電機的相電流大小如圖7所示。
圖7 不同電壓下步進電機的相電流大小
由圖7可以看出,在各個驅動電壓下,電機所檢測的相電流基本保持不變,說明此步進電機的驅動器具有良好的穩(wěn)定性。
但在實際情況下,步進電機必定不會長時間正轉或反轉后再改變運轉方向,而是一種隨機的方式。因此,采用模式二的方式,即步進電機的運轉方式是隨時可變的。模式二中步進電機工作情況如圖8所示。
圖8 模式二下步進電機工作情況
圖8中,梯形圖上升沿表示步進電機進行正轉,下降沿表示步進電機進行反轉,維持定值不變表示步進電機停止運轉。
由圖8可以看出,步進電機的運轉方式是隨機變化的。通過在模式二下對步進電機進行的性能測試表明,該電機具有良好的性能。
步進電機的控制與檢測系統可廣泛運用于功率較小的步進電機批量測試,尤其適合專門生產小電機的廠家使用。在使用較大驅動功率的步進電機時,可以通過減少驅動步進電機的個數來控制步進電機。在驅動四相步進電機時,僅需修改少量程序代碼,即可完美驅動電機運動。同時,可以利用電流檢測模塊進行一定的修改,以檢測電路中需要測試的電流。在電源模塊的設計中,直流2 V、5 V、3.3 V模塊和可調電壓模塊均是比較常用的模塊,可以直接運用到其他電路設計中,方便以后的開發(fā)使用。
測試表明,步進電機驅動器模塊具有良好的性能,工作穩(wěn)定、可靠,性能較一般的傳統驅動器有一定的改進。
[1] 喻金錢,喻斌.STM32F系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008:22-50.
[2] 杜家熙,陳艷鋒,李國厚.基于單片機的步進電機控制器設計[J].煤礦機械,2007(2):88-91.
[3] 張鴻斌.基于DSP的步進電機控制系統的設計[J].四川兵工學報,2013(7):88-91.
[4] 王慧華.基于C8051F單片機的步進電機控制驅動器設計[J].硅谷,2012(19):65.
[5] 王維正,臧玉萍.基于L297與L298N的步進電機控制系統設計[J].硅谷,2008(13):29,99.
[6] 向海鍵.基于L297/298的步進電機工作模式的單片機接口[J].微計算機信息,2007,26:302-303,179.
[7] 宰文嬌,汪華章.步進電機驅動控制系統的設計和實現[J].煤礦機械,2013(7):157-159.
[8] 勾占鋒.一種微型步進電機的驅動設計[J].科技創(chuàng)新與應用2012,24:8-9.
[9] 陳炳衡,郭云龍,胡清.基于ARM單片機的步進電機細分驅動設計[J].黑龍江科技信息,2011,36:31.
[10]王黨利,寧生科,馬寶吉.基于TB6560的步進電機驅動電路設計[J].單片機與嵌入式系統應用,2010(1):41-43.
[11]黃法,孔秀華.基于PIC16F873單片機的步進電機控制系統[J].現代電子技術,2009(12):175-178.
[12]魏玉輝,吳友宇.基于單片機及VC++的步進電機控制系統設計[EB/OL].[2013-03-25].Http//www.paper.edu.cn.
[13]陳文革,尹芳.步進電機在制袋式包裝機械運動控制中的應用[J].包裝工程,2005(1):36-38.