摘 要: 通過對BE系列伺服電機工作原理的分析,利用STC89C52單片機設計了一種電機控制器。通過單片機I/O口向TLC5618數模轉換芯片發(fā)送數據,輸出電壓信號經運放加法電路放大控制轉速。運放輸出末端放置一雙刀雙擲繼電器,驅動芯片為ULN2003,改變輸出電壓正負極性可實現轉向控制,并通過USB轉串口與上位機通信。最后,將驅動器反饋的方波信號頻率、轉速和轉向顯示在液晶屏上。該設計可以實現伺服電機的平穩(wěn)控制和精確調速,能夠滿足工業(yè)現場的需要。
關鍵詞: 單片機;伺服電機;轉向控制;精確調速
0 引言
伺服電機的定位精度相當高,現代位置控制系統(tǒng)已越來越多地采用交流伺服電機作為主要部件[1]。本設計采用的BE系列伺服電機以其體積小、驅動能力強、應用廣泛成為了多種場合的通用驅動設備,也是學習伺服電機控制的良好對象。但與其配套的控制器價格較高,并不適合一般小型試驗的需求。本文給出了一種低成本的控制方案,使其在52單片機的控制下也能充分發(fā)揮其功能。
1 伺服電機控制系統(tǒng)設計方案
本設計以STC89C52RC單片機作為控制器,充分利用其價格低廉、編程方便、技術成熟等優(yōu)點,并以TLC5618作為模擬信號輸出芯片,經OP07運放搭建的加法電路,使DA芯片的雙路輸出電壓相加,最大值可達到10 V,精度為0.002 4 V。設計出一款轉速調節(jié)精度高、轉向可控、成本較低的伺服電機控制器,可以顯示實時采集的轉速數和轉向,并能夠將采集到的方波信號頻率轉化為十進制數一同顯示在液晶屏上。此外,本系統(tǒng)還利用CH340G芯片連接USB線,通過上位機軟件對BE系列伺服電機進行轉速轉向的控制,實現了上下位機通信、數模轉換、電壓放大、電機精確調速、數據顯示等一系列功能和過程。
2 系統(tǒng)硬件設計
本設計采用STC89C52RC單片機構建了一個最小系統(tǒng),通過數模轉換、運放、轉向控制和隔離繼電器等模塊實現電機正反轉智能切換,而且實現了伺服電機的精確調速控制[2]。其控制系統(tǒng)組成如圖1所示。
通過LCD1602顯示模塊將轉速、轉向以及脈沖頻率顯示在液晶屏上;利用串口通信模塊接收上位機發(fā)送的數據,并將該數據發(fā)送給DA轉換輸出模塊;轉換后的模擬電壓通過運算放大器將輸出電壓放大,用來控制電機的轉速和轉向。
2.1 單片機最小系統(tǒng)電路設計
系統(tǒng)采用STC89C52RC單片機,5 V電源供電[3]。兩個外圍電路分別為復位電路和晶振電路,晶振頻率為11.059 2 MHz,電容30 pF。晶振兩端與單片機XTAL1、XTAL2連接,使其產生一個周期固定的交流電流,單片機可以根據這個電流的周期來確定工作周期。最小系統(tǒng)原理圖如圖2所示。
2.2 液晶顯示模塊
這里LCD1602只需進行寫操作不需要讀操作,故直接將RW腳接地,VEE是液晶顯示偏壓信號,即調節(jié)液晶屏幕顯示的對比度,將其接到滑動變阻器上,實現液晶顯示的對比度調節(jié)。RS是數據命令選擇端,即在程序中選擇給顯示屏發(fā)送命令或是發(fā)送數據[4]。寫指令時RS為低電平,寫數據時RS為高電平。余下的DB0~DB7與單片機P0口連接,BLA和BLK是液晶顯示屏背光供電端口,分別接5 V電源和地。其具體電路如圖3所示。
2.3 串口通信模塊
根據方案設計思路,單片機需要接收上位機發(fā)送的數據,那么需要一個串口通信模塊來實現上下位機之間的通信。STC89C52RC單片機要接收數據需要從RXD和TXD腳接收TTL電平,采用CH340G能將USB口發(fā)送的數據轉換成TTL電平,送到單片機SBUF寄存器中。單片機程序只需調取SBUF中的數值就可以實現對I/O口的控制。
單片機與上位機通信的波特率為9 600 b/s,無校驗。其具體電路如圖4所示。
2.4 D/A轉換輸出模塊
由TLC5618性質和原理可知,首先將TLC5618的GND端接到系統(tǒng)模擬地,實現最佳的接地連接[5]。同時在VDD與GND之間應接0.1 ?滋F的獨立旁路電容,濾除電源與地之間的高頻干擾。此外,基準電壓一定要保證精度,且在基準電壓輸出端接0.1 ?滋F的瓷片電容,以降低系統(tǒng)噪聲對轉換精度的影響。分別將CS接P2.2、SCLK接P2.1、DIN接P2.0,兩個DAC模擬輸出即可完成對DA轉換芯片的控制。
2.5 運放輸出模塊
運放模塊用到OP07芯片,它是一種低噪聲,非斬波穩(wěn)零的雙極性運算放大器集成電路。OP07具有非常低的輸入失調電壓,一般不需要額外的調零措施。OP07同時具有輸入偏置電流低和開環(huán)增益高的特點,這種低失調、高開環(huán)增益的特性使得OP07特別適合于高增益的測量設備和放大傳感器的微弱信號等方面。經運放放大輸出的電壓最大值可達到10 V,精度可達0.002 4 V,從而實現電機轉速精準控制[6]。其具體電路如圖5所示。
2.6 轉向控制模塊
單片機I/O口輸出電流無法使繼電器工作,設計中采用ULN2003來提高帶載能力。ULN2003屬于高壓大電流達林頓晶體管陣列系列產品,其電流增益和工作電壓都很高且溫度范圍寬,帶載能力強,而且輸入端只需和單片機I/O口相連接,5 V供電無需外接電路。這里用P2.5口控制繼電器的工作與否,P2.5輸出一個高電平,ULN2003接收到該高電平就可以驅動繼電器工作,改變輸出電壓極性。其具體電路如圖6所示。
3 系統(tǒng)軟件設計
針對上述硬件各個模塊功能編寫各模塊需要子程序,主程序部分注意使用的P1.0的引腳功能,頭文件包含regx52.h,其對T2CON寄存器有定義,否則無法完成程序的編譯[7]。此外,還需定義變量的類型、名稱及相關延時函數;顯示模塊程序需要對其進行初始化設置,寫出命令輸入子程序、數據輸入子程序、數字字符轉換程序;串口通信模塊程序需要對其進行初始化設置,采用T2定時器作為波特率發(fā)生器,編寫一串口中斷函數,將SBUF的值賦予各個變量;方波采集程序對T0和T1進行初始化設置,其中T0計時,T1計數。定義一中斷函數重新給T0、T1賦值;D/A轉換輸出模塊程序需要用單片機的I/O口對其寫入16 bit的數據,分兩次發(fā)送,先發(fā)送高字節(jié),后發(fā)送低字節(jié)。最先發(fā)送的D12~D15位為可編程位控制字,用以確定數據的傳送方式。在片選信號的上升沿把數據送到DAC寄存器開始D/A轉換。
3.1 系統(tǒng)主程序
主程序內需聲明各個變量名稱和類型,直接調用子程序即可。然后定義一個while循環(huán)等待中斷發(fā)生。其主函數如下:
void main()
{ PS=1;
CK_init();//初始化串口
init_jishu();//初始化T0、T1
display();//調用顯示函數
while(1)//等待中斷的發(fā)生
{ Write_A_B(UA,UB,Channal_AB,1);
t0=0;
H1=TH1;
L1=TL1;
TL1=0;
TH1=0;
i=H1*256+L1;
digit_to_Char(i);}}
3.2 串口通信子模塊
寄存器T2CON的TCLK和RCLK位允許從定時器1或定時器2獲得串行口發(fā)送和接收的波特率。當TCLK=0時,定時器1作為串行口發(fā)送波特率發(fā)生器;當TCLK=1時,定時器2作為串行口發(fā)送波特率發(fā)生器。RCLK對串行口接收波特率有同樣的作用。模式1和模式3的波特率=振蕩器頻率/32×[65636-(RCAP2H,RACP2L)],式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位無符號數。故T2CON寄存器中的數為00110100B,即16進制數0x34。其部分程序如下:
void init_CK()
{SCON=0x50;
PCON=0x00;
T2CON=0x34;
EA=1;
ES=1;
RCAP2H=(65 536-36)/256;
RCAP2L=(65 536-36)%256;
T2MOD=0;
TL2=RCAP2L;
TH2=RCAP2H;}
3.3 方波頻率采集模塊
定時器1負責計數,定時器0負責定時。單片機在使用定時器或計數器功能時,通常需要設置兩個與定時器有關的寄存器分別為定時器/計數器工作方式寄存器TMOD和定時器/計數器控制寄存器TCON[8]。設計中T1選擇計數方式C/T=1,故該系統(tǒng)的TMOD=0×51,由于需要設定一個50 ms的計時中斷,要給TH0、TH1寄存器賦予初值。初值的計算方法是:THX=(65 536-N)/256,TLX=(65 536-N)%256,其中N=t/T,T是機器周期,即12×(1/11 059 200)≈1.09 ?滋s。所以TH0=(65 536-46 081)/256,TL0=(65 536-46 081)%256。其部分程序如下所示:
void init_jishu()
{ EA=1;
ET0=1;
TMOD=0x51;
TH0=(65 536-46 081)/256;
TL0=(65 536-46 081)%256;
TL1=0;
TH1=0;
TR0=1;
TR1=1;}
void jishi()interrupt 1
{ TH0=(65 536-46 081)/256;
TL0=(65 536-46 081)%256;
t0++;}
3.4 D/A轉換輸出模塊
本設計中只需選中TLC5618并向SLCK發(fā)送一個時鐘信號,DIN發(fā)送數據即可,數據為16 bit,前4 bit控制其工作狀態(tài),后12 bit控制兩路輸出電壓大小。
4 結論
此次控制系統(tǒng)設計以單片機作為控制器,對非標準交流伺服電機進行控制,有效利用單片機內部資源以及掌握了相應電機運動控制系統(tǒng)的運行特性,在生產調速電機的配套裝置實際應用中,降低了生產成本,提高了系統(tǒng)的性能。
參考文獻
[1] 張國斌,尹崗.基于單片機的交流伺服電機轉速控制系統(tǒng)設計[J].電子測量技術,2009,1(11):105-107.
[2] 陳華林.基于單片機的電機控制系統(tǒng)研究[J].硅谷,2014,17(6):9-10.
[3] 苗敬利,鄒靖.無刷直流電機直接轉矩控制系統(tǒng)的設計[J].電子技術應用,2014,40(7):88-91.
[4] 鄒智慧.淺談直流伺服電機的驅動與應用[J].才智,2010,19(16):65-66.
[5] 陳德益.基于嵌入式單片機的電機控制系統(tǒng)設計[J].計算機仿真,2010,1(7):359-362.
[6] 滕莉,李英,阮德林,等.一種基于步進電機的振蕩器控制設計[J].微型機與應用,2015,34(8):87-90.
[7] 曾浩.淺談AT89C51單片機在SR電機控制中的應用[J].電子測試,2013,5(9):123-124.
[8] 趙磊,王哈力.基于單片機的交流伺服電機轉速控制系統(tǒng)研究[J].現代電子技術,2009,16(12):196-198.