《電子技術(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é) 自動(dòng)化學(xué)院,,黑龍江 哈爾濱 150001)
摘要: 通過對(duì)BE系列伺服電機(jī)工作原理的分析,,利用STC89C52單片機(jī)設(shè)計(jì)了一種電機(jī)控制器,。通過單片機(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)向控制,,并通過USB轉(zhuǎn)串口與上位機(jī)通信,。最后,將驅(qū)動(dòng)器反饋的方波信號(hào)頻率,、轉(zhuǎn)速和轉(zhuǎn)向顯示在液晶屏上,。該設(shè)計(jì)可以實(shí)現(xiàn)伺服電機(jī)的平穩(wěn)控制和精確調(diào)速,能夠滿足工業(yè)現(xiàn)場(chǎng)的需要,。
Abstract:
Key words :

  摘  要: 通過對(duì)BE系列伺服電機(jī)工作原理的分析,利用STC89C52單片機(jī)設(shè)計(jì)了一種電機(jī)控制器,。通過單片機(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)向控制,,并通過USB轉(zhuǎn)串口與上位機(jī)通信。最后,,將驅(qū)動(dòng)器反饋的方波信號(hào)頻率、轉(zhuǎn)速和轉(zhuǎn)向顯示在液晶屏上,。該設(shè)計(jì)可以實(shí)現(xiàn)伺服電機(jī)的平穩(wěn)控制和精確調(diào)速,,能夠滿足工業(yè)現(xiàn)場(chǎng)的需要,。

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

0 引言

  伺服電機(jī)的定位精度相當(dāng)高,現(xiàn)代位置控制系統(tǒng)已越來越多地采用交流伺服電機(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線,通過上位機(jī)軟件對(duì)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)建了一個(gè)最小系統(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],。兩個(gè)外圍電路分別為復(fù)位電路和晶振電路,晶振頻率為11.059 2 MHz,,電容30 pF,。晶振兩端與單片機(jī)XTAL1、XTAL2連接,,使其產(chǎn)生一個(gè)周期固定的交流電流,,單片機(jī)可以根據(jù)這個(gè)電流的周期來確定工作周期。最小系統(tǒng)原理圖如圖2所示,。

002.jpg

  2.2 液晶顯示模塊

  這里L(fēng)CD1602只需進(jìn)行寫操作不需要讀操作,,故直接將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],。寫指令時(shí)RS為低電平,寫數(shù)據(jù)時(shí)RS為高電平,。余下的DB0~DB7與單片機(jī)P0口連接,,BLA和BLK是液晶顯示屏背光供電端口,分別接5 V電源和地,。其具體電路如圖3所示,。

003.jpg

  2.3 串口通信模塊

  根據(jù)方案設(shè)計(jì)思路,單片機(jī)需要接收上位機(jī)發(fā)送的數(shù)據(jù),,那么需要一個(gè)串口通信模塊來實(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,,無校驗(yàn)。其具體電路如圖4所示,。

004.jpg

  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í)具有輸入偏置電流低和開環(huán)增益高的特點(diǎn),,這種低失調(diào),、高開環(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所示,。

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輸出一個(gè)高電平,,ULN2003接收到該高電平就可以驅(qū)動(dòng)繼電器工作,,改變輸出電壓極性。其具體電路如圖6所示,。

006.jpg

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

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

  3.1 系統(tǒng)主程序

  主程序內(nèi)需聲明各個(gè)變量名稱和類型,,直接調(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位無符號(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] 張國斌,尹崗.基于單片機(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] 苗敬利,,鄒靖.無刷直流電機(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.


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