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