《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的伺服電機(jī)控制系統(tǒng)設(shè)計(jì)
基于單片機(jī)的伺服電機(jī)控制系統(tǒng)設(shè)計(jì)
2015年微型機(jī)與應(yīng)用第24期
白 濤,,吳 振,,陳若謎
(哈爾濱工程大學(xué) 自動化學(xué)院,黑龍江 哈爾濱 150001)
摘要: 通過對BE系列伺服電機(jī)工作原理的分析,,利用STC89C52單片機(jī)設(shè)計(jì)了一種電機(jī)控制器,。通過單片機(jī)I/O口向TLC5618數(shù)模轉(zhuǎn)換芯片發(fā)送數(shù)據(jù),輸出電壓信號經(jīng)運(yùn)放加法電路放大控制轉(zhuǎn)速,。運(yùn)放輸出末端放置一雙刀雙擲繼電器,,驅(qū)動芯片為ULN2003,改變輸出電壓正負(fù)極性可實(shí)現(xiàn)轉(zhuǎn)向控制,,并通過USB轉(zhuǎn)串口與上位機(jī)通信,。最后,將驅(qū)動器反饋的方波信號頻率,、轉(zhuǎn)速和轉(zhuǎn)向顯示在液晶屏上,。該設(shè)計(jì)可以實(shí)現(xiàn)伺服電機(jī)的平穩(wěn)控制和精確調(diào)速,能夠滿足工業(yè)現(xiàn)場的需要,。
Abstract:
Key words :

  摘  要: 通過對BE系列伺服電機(jī)工作原理的分析,,利用STC89C52單片機(jī)設(shè)計(jì)了一種電機(jī)控制器。通過單片機(jī)I/O口向TLC5618數(shù)模轉(zhuǎn)換芯片發(fā)送數(shù)據(jù),,輸出電壓信號經(jīng)運(yùn)放加法電路放大控制轉(zhuǎn)速,。運(yùn)放輸出末端放置一雙刀雙擲繼電器,驅(qū)動芯片為ULN2003,,改變輸出電壓正負(fù)極性可實(shí)現(xiàn)轉(zhuǎn)向控制,,并通過USB轉(zhuǎn)串口與上位機(jī)通信。最后,,將驅(qū)動器反饋的方波信號頻率,、轉(zhuǎn)速和轉(zhuǎn)向顯示在液晶屏上。該設(shè)計(jì)可以實(shí)現(xiàn)伺服電機(jī)的平穩(wěn)控制和精確調(diào)速,,能夠滿足工業(yè)現(xiàn)場的需要,。

  關(guān)鍵詞: 單片機(jī);伺服電機(jī),;轉(zhuǎn)向控制,;精確調(diào)速

0 引言

  伺服電機(jī)的定位精度相當(dāng)高,現(xiàn)代位置控制系統(tǒng)已越來越多地采用交流伺服電機(jī)作為主要部件[1],。本設(shè)計(jì)采用的BE系列伺服電機(jī)以其體積小,、驅(qū)動能力強(qiáng),、應(yīng)用廣泛成為了多種場合的通用驅(qū)動設(shè)備,也是學(xué)習(xí)伺服電機(jī)控制的良好對象,。但與其配套的控制器價格較高,,并不適合一般小型試驗(yàn)的需求。本文給出了一種低成本的控制方案,,使其在52單片機(jī)的控制下也能充分發(fā)揮其功能。

1 伺服電機(jī)控制系統(tǒng)設(shè)計(jì)方案

  本設(shè)計(jì)以STC89C52RC單片機(jī)作為控制器,,充分利用其價格低廉,、編程方便、技術(shù)成熟等優(yōu)點(diǎn),,并以TLC5618作為模擬信號輸出芯片,,經(jīng)OP07運(yùn)放搭建的加法電路,使DA芯片的雙路輸出電壓相加,,最大值可達(dá)到10 V,,精度為0.002 4 V。設(shè)計(jì)出一款轉(zhuǎn)速調(diào)節(jié)精度高,、轉(zhuǎn)向可控,、成本較低的伺服電機(jī)控制器,可以顯示實(shí)時采集的轉(zhuǎn)速數(shù)和轉(zhuǎn)向,,并能夠?qū)⒉杉降姆讲ㄐ盘栴l率轉(zhuǎn)化為十進(jìn)制數(shù)一同顯示在液晶屏上,。此外,本系統(tǒng)還利用CH340G芯片連接USB線,,通過上位機(jī)軟件對BE系列伺服電機(jī)進(jìn)行轉(zhuǎn)速轉(zhuǎn)向的控制,,實(shí)現(xiàn)了上下位機(jī)通信、數(shù)模轉(zhuǎn)換,、電壓放大,、電機(jī)精確調(diào)速、數(shù)據(jù)顯示等一系列功能和過程,。

2 系統(tǒng)硬件設(shè)計(jì)

  本設(shè)計(jì)采用STC89C52RC單片機(jī)構(gòu)建了一個最小系統(tǒng),,通過數(shù)模轉(zhuǎn)換、運(yùn)放,、轉(zhuǎn)向控制和隔離繼電器等模塊實(shí)現(xiàn)電機(jī)正反轉(zhuǎn)智能切換,,而且實(shí)現(xiàn)了伺服電機(jī)的精確調(diào)速控制[2]。其控制系統(tǒng)組成如圖1所示,。

001.jpg

  通過LCD1602顯示模塊將轉(zhuǎn)速,、轉(zhuǎn)向以及脈沖頻率顯示在液晶屏上;利用串口通信模塊接收上位機(jī)發(fā)送的數(shù)據(jù),,并將該數(shù)據(jù)發(fā)送給DA轉(zhuǎn)換輸出模塊,;轉(zhuǎn)換后的模擬電壓通過運(yùn)算放大器將輸出電壓放大,,用來控制電機(jī)的轉(zhuǎn)速和轉(zhuǎn)向。

  2.1 單片機(jī)最小系統(tǒng)電路設(shè)計(jì)

  系統(tǒng)采用STC89C52RC單片機(jī),,5 V電源供電[3],。兩個外圍電路分別為復(fù)位電路和晶振電路,晶振頻率為11.059 2 MHz,,電容30 pF,。晶振兩端與單片機(jī)XTAL1、XTAL2連接,,使其產(chǎn)生一個周期固定的交流電流,,單片機(jī)可以根據(jù)這個電流的周期來確定工作周期。最小系統(tǒng)原理圖如圖2所示,。

002.jpg

  2.2 液晶顯示模塊

  這里L(fēng)CD1602只需進(jìn)行寫操作不需要讀操作,,故直接將RW腳接地,VEE是液晶顯示偏壓信號,,即調(diào)節(jié)液晶屏幕顯示的對比度,,將其接到滑動變阻器上,實(shí)現(xiàn)液晶顯示的對比度調(diào)節(jié),。RS是數(shù)據(jù)命令選擇端,,即在程序中選擇給顯示屏發(fā)送命令或是發(fā)送數(shù)據(jù)[4]。寫指令時RS為低電平,,寫數(shù)據(jù)時RS為高電平,。余下的DB0~DB7與單片機(jī)P0口連接,BLA和BLK是液晶顯示屏背光供電端口,,分別接5 V電源和地,。其具體電路如圖3所示。

003.jpg

  2.3 串口通信模塊

  根據(jù)方案設(shè)計(jì)思路,,單片機(jī)需要接收上位機(jī)發(fā)送的數(shù)據(jù),,那么需要一個串口通信模塊來實(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)對I/O口的控制,。

  單片機(jī)與上位機(jī)通信的波特率為9 600 b/s,,無校驗(yàn)。其具體電路如圖4所示,。

004.jpg

  2.4 D/A轉(zhuǎn)換輸出模塊

  由TLC5618性質(zhì)和原理可知,,首先將TLC5618的GND端接到系統(tǒng)模擬地,實(shí)現(xiàn)最佳的接地連接[5]。同時在VDD與GND之間應(yīng)接0.1 ?滋F的獨(dú)立旁路電容,,濾除電源與地之間的高頻干擾,。此外,基準(zhǔn)電壓一定要保證精度,,且在基準(zhǔn)電壓輸出端接0.1 ?滋F的瓷片電容,,以降低系統(tǒng)噪聲對轉(zhuǎn)換精度的影響。分別將CS接P2.2,、SCLK接P2.1,、DIN接P2.0,兩個DAC模擬輸出即可完成對DA轉(zhuǎn)換芯片的控制,。

  2.5 運(yùn)放輸出模塊

  運(yùn)放模塊用到OP07芯片,,它是一種低噪聲,非斬波穩(wěn)零的雙極性運(yùn)算放大器集成電路,。OP07具有非常低的輸入失調(diào)電壓,一般不需要額外的調(diào)零措施,。OP07同時具有輸入偏置電流低和開環(huán)增益高的特點(diǎn),,這種低失調(diào)、高開環(huán)增益的特性使得OP07特別適合于高增益的測量設(shè)備和放大傳感器的微弱信號等方面,。經(jīng)運(yùn)放放大輸出的電壓最大值可達(dá)到10 V,,精度可達(dá)0.002 4 V,從而實(shí)現(xiàn)電機(jī)轉(zhuǎn)速精準(zhǔn)控制[6],。其具體電路如圖5所示,。

005.jpg

  2.6 轉(zhuǎn)向控制模塊

  單片機(jī)I/O口輸出電流無法使繼電器工作,設(shè)計(jì)中采用ULN2003來提高帶載能力,。ULN2003屬于高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,,其電流增益和工作電壓都很高且溫度范圍寬,帶載能力強(qiáng),,而且輸入端只需和單片機(jī)I/O口相連接,,5 V供電無需外接電路。這里用P2.5口控制繼電器的工作與否,,P2.5輸出一個高電平,,ULN2003接收到該高電平就可以驅(qū)動繼電器工作,改變輸出電壓極性,。其具體電路如圖6所示,。

006.jpg

3 系統(tǒng)軟件設(shè)計(jì)

  針對上述硬件各個模塊功能編寫各模塊需要子程序,主程序部分注意使用的P1.0的引腳功能,,頭文件包含regx52.h,,其對T2CON寄存器有定義,否則無法完成程序的編譯[7]。此外,,還需定義變量的類型,、名稱及相關(guān)延時函數(shù);顯示模塊程序需要對其進(jìn)行初始化設(shè)置,,寫出命令輸入子程序,、數(shù)據(jù)輸入子程序、數(shù)字字符轉(zhuǎn)換程序,;串口通信模塊程序需要對其進(jìn)行初始化設(shè)置,,采用T2定時器作為波特率發(fā)生器,編寫一串口中斷函數(shù),,將SBUF的值賦予各個變量,;方波采集程序?qū)0和T1進(jìn)行初始化設(shè)置,其中T0計(jì)時,,T1計(jì)數(shù),。定義一中斷函數(shù)重新給T0、T1賦值,;D/A轉(zhuǎn)換輸出模塊程序需要用單片機(jī)的I/O口對其寫入16 bit的數(shù)據(jù),,分兩次發(fā)送,先發(fā)送高字節(jié),,后發(fā)送低字節(jié),。最先發(fā)送的D12~D15位為可編程位控制字,用以確定數(shù)據(jù)的傳送方式,。在片選信號的上升沿把數(shù)據(jù)送到DAC寄存器開始D/A轉(zhuǎn)換,。

  3.1 系統(tǒng)主程序

  主程序內(nèi)需聲明各個變量名稱和類型,直接調(diào)用子程序即可,。然后定義一個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位允許從定時器1或定時器2獲得串行口發(fā)送和接收的波特率。當(dāng)TCLK=0時,,定時器1作為串行口發(fā)送波特率發(fā)生器,;當(dāng)TCLK=1時,定時器2作為串行口發(fā)送波特率發(fā)生器,。RCLK對串行口接收波特率有同樣的作用,。模式1和模式3的波特率=振蕩器頻率/32×[65636-(RCAP2H,RACP2L)],,式中(RCAP2H,,RCAP2L)是RCAP2H和RCAP2L中的16位無符號數(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 方波頻率采集模塊

  定時器1負(fù)責(zé)計(jì)數(shù),,定時器0負(fù)責(zé)定時。單片機(jī)在使用定時器或計(jì)數(shù)器功能時,,通常需要設(shè)置兩個與定時器有關(guān)的寄存器分別為定時器/計(jì)數(shù)器工作方式寄存器TMOD和定時器/計(jì)數(shù)器控制寄存器TCON[8],。設(shè)計(jì)中T1選擇計(jì)數(shù)方式C/T=1,故該系統(tǒng)的TMOD=0×51,,由于需要設(shè)定一個50 ms的計(jì)時中斷,,要給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ā)送一個時鐘信號,,DIN發(fā)送數(shù)據(jù)即可,數(shù)據(jù)為16 bit,,前4 bit控制其工作狀態(tài),,后12 bit控制兩路輸出電壓大小。

4 結(jié)論

  此次控制系統(tǒng)設(shè)計(jì)以單片機(jī)作為控制器,,對非標(biāo)準(zhǔn)交流伺服電機(jī)進(jìn)行控制,,有效利用單片機(jī)內(nèi)部資源以及掌握了相應(yīng)電機(jī)運(yùn)動控制系統(tǒng)的運(yùn)行特性,在生產(chǎn)調(diào)速電機(jī)的配套裝置實(shí)際應(yīng)用中,,降低了生產(chǎn)成本,,提高了系統(tǒng)的性能。

參考文獻(xiàn)

  [1] 張國斌,,尹崗.基于單片機(jī)的交流伺服電機(jī)轉(zhuǎn)速控制系統(tǒng)設(shè)計(jì)[J].電子測量技術(shù),,2009,1(11):105-107.

  [2] 陳華林.基于單片機(jī)的電機(jī)控制系統(tǒng)研究[J].硅谷,,2014,,17(6):9-10.

  [3] 苗敬利,鄒靖.無刷直流電機(jī)直接轉(zhuǎn)矩控制系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2014,,40(7):88-91.

  [4] 鄒智慧.淺談直流伺服電機(jī)的驅(qū)動與應(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].電子測試,,2013,5(9):123-124.

  [8] 趙磊,,王哈力.基于單片機(jī)的交流伺服電機(jī)轉(zhuǎn)速控制系統(tǒng)研究[J].現(xiàn)代電子技術(shù),,2009,16(12):196-198.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。