|
緒論 1.1 步進電機國內(nèi)外研究現(xiàn)狀 步進電動機是一種新型增量式電機,是數(shù)字控制系統(tǒng)的一種執(zhí)行元件。它是利用電脈沖信號進行控制,將電脈沖信號轉(zhuǎn)換成相應的角位移或線位移的電動機。它的位移與輸入脈沖信號相對應,步矩誤差不長期積累,不需用電刷,電機本體部件少,易于啟停、正反轉(zhuǎn)及變速。用步進電機作為驅(qū)動裝置構(gòu)成的控制系統(tǒng),具有成本低,控制簡單,容易維護等優(yōu)點。步進電動機問世后,廣泛地應用在等各個領域。做為機床控制、電子瞄準、工業(yè)自動化、辦公自動化和機器人運動控制中應用的重要執(zhí)行部件,顯示出廣闊的發(fā)展前景。 步進電動機有多種不同的結(jié)構(gòu)。經(jīng)過近七十多年的發(fā)展,逐漸形成以混合式和反應式為主的產(chǎn)品格局。混合式步進電動機是在同步電動機或者說是在永磁感應子式同步電動機的基礎上發(fā)展起來的。既有反應式步進電動機基于氣隙磁導變化的特征,又有軸向恒定磁場的永磁式步進電動機的特征。其綜合了該兩類步進電動機的特點,因而性能更好。具有分辨率高,控制功率小等優(yōu)點,是應用最為廣泛的步進電動機種類,至今沒發(fā)現(xiàn)更合適取代它的產(chǎn)品。缺點是帶慣性負載能力差,低頻振蕩現(xiàn)象嚴重,高頻運行時輸出轉(zhuǎn)矩下降。 國外步進電動機研究較早,對步進電機驅(qū)動技術(shù)的研究一直很活躍,如今正在研究開發(fā)以步進電動機為執(zhí)行機構(gòu)的高性能伺服系統(tǒng)。目前,這類電動機最大的生產(chǎn)國還是日本。日本有很多公司生產(chǎn),像JAPAN SERVO,SANYO DENKI等。它們的產(chǎn)品無論是外觀質(zhì)量,內(nèi)部性能指標,還是生產(chǎn)手段,都處于世界先進水平。而在我國,步進電動機的研制最早始于1958年。經(jīng)過五十年的發(fā)展,目前發(fā)展趨于平緩,與國外相比,反應式步進電動機還占大量比例,只是隨著近年來大批進口設備大量涌入我國,而這些設備大多數(shù)采用了混合式步進電動機,混合式步進電動機才為人們所熟悉。在國外,特別是工業(yè)比較發(fā)達的國家,步進電動機及其驅(qū)動技術(shù)早已規(guī)模化生產(chǎn),我國與之相比還有相當大的差距。雖然我國在該類電機的研制和生產(chǎn)上已形成一定規(guī)模,但生產(chǎn)規(guī)模較小,未形成商品化和系列化,僅處于按用戶要求研制定制階段,與國外產(chǎn)品相比尚無競爭能力。從步進電動機驅(qū)動技術(shù)發(fā)展歷史來看,步進電動機的相數(shù)不同,有2相、3相、4相、5相、9相等。齒數(shù)也不同,使得產(chǎn)品規(guī)格品種繁多,生產(chǎn)格局復雜化,對用戶選擇不利。然而由于步進電動機和其它電機有著很大的差別,具有其它電機所沒有的特性。因此,它仍然能根據(jù)市場的需求,沿著小型化、高效、低價的方向發(fā)展. 步進電動機的使用性能與它的驅(qū)動電路有密切的關(guān)系,隨著電力電子技術(shù)及微電子技術(shù)及其器件的發(fā)展,驅(qū)動器的面貌不斷改變。最初使用的末級功放元件是可控硅。可控硅雖然觸發(fā)簡單,但關(guān)斷困難,總的來說線路較復雜、易形成誤觸發(fā)、可靠性也差;且不便于調(diào)試和維護、抗干擾能力不好。但隨著大功率晶體管的發(fā)展目前一般不再采用末級功放元件來驅(qū)動控制步進電動機。目前,功率開關(guān)管多采用功率場控晶體管(MOSFET)和全控型器件(IGBT)。功率集成電路(PIC)將功率器件、前級驅(qū)動電路、控制電路及保護電路等都集成在一起,具有較強的功能和較大的輸出功率。用這種器件做成步進電動機驅(qū)動器,具有結(jié)構(gòu)簡單、性能穩(wěn)定及運行可靠等優(yōu)點。目前已應用于中、小功率步進電動機的驅(qū)動。驅(qū)動器控制電路發(fā)展的一個重要方面是集成電路專用芯片的采用。如F/V變換器(LM2917),V/W變換器(SG3525,TL494),微步控制與功率器件集成在一起的芯片(A3955SB)等,更使步進電機驅(qū)動器的研制上了一個新臺階,使其性能指標有了顯著的提高。使步進電動機的控制系統(tǒng)達到了一個新的水平。其它一些控制技術(shù),如矢量控制,模糊控制,神經(jīng)網(wǎng)絡控制等也獲得了飛速發(fā)展和應用。步進電動機今后的發(fā)展,依賴于新材料的應用,設計手段的完善,以及與驅(qū)動技術(shù)的最佳配合。首先,精確的分析和設計,模型的建立和完善,是一項重要的基礎研究,至今還有很多工作要做,它可以為各類問題的深入分析提供基礎,為優(yōu)化設計指出方向。其次,電力電子技術(shù)、微電子技術(shù)的發(fā)展,高性能永磁材料的應用及優(yōu)化設計技術(shù)起到明顯的作用自不待說,驅(qū)動技術(shù)改進的作用也不容忽視,特別是微步驅(qū)動技術(shù)的應用和成熟,使步進電動機的分辨率和特性與相數(shù)的關(guān)系不大,對步進電動機的設計,今后的發(fā)展會產(chǎn)生很大的影響,也提出了一系列新的研究課題和方向。 1.2 研究主要內(nèi)容及其意義 隨著步進電動機系統(tǒng)在各種數(shù)字控制系統(tǒng)中的廣泛應用,各種數(shù)字控制系統(tǒng)隨步進電動機性能和使用條件的要求也越來越高。這就要求不斷研制出高性能高可靠性高集成化低價位的驅(qū)動器和低成本的單片機控制滿足需求。眾所周知,國內(nèi)對這方面的研究一直很活躍,但是可供選用的高性能的步進電動機驅(qū)動器卻很少,而且國內(nèi)的驅(qū)動器方面基本都存在著體積大、外形尺寸不規(guī)則、性能指標不穩(wěn)定及遠沒有達到系列化等問題,這就給驅(qū)動器的選用和安裝帶來了極大的不便,另外,隨著國內(nèi)單片機技術(shù)的發(fā)展,更精度的步進電動機控制技術(shù)也得到很大的發(fā)展。國外雖然有通用的各種類型的步進電動機驅(qū)動器,但大都存在價格昂貴,與我國的系統(tǒng)連接不匹配等問題。步進電動機不能直接接到交直流電源上工作,而必須使用專用的步進電動機驅(qū)動器;在驅(qū)動電源的設計方面目前采用更多的是由單片機提供脈沖驅(qū)動信號。步進電動機系統(tǒng)的性能,除與電動機自身的性能有關(guān)外,也在很大程度上取決于驅(qū)動器的性能。步進電動機在運行時,一般有以下問題:各相繞組都是開關(guān)工作,多數(shù)電動機繞組都是連續(xù)的交流或直流,而步進動機各相繞組都是脈沖式供電所以繞組電流不是連續(xù)的。電動機各相繞組都是繞在鐵心上的線圈,所以都有較大的電感。繞組通電時,電流不能迅速上升至額定值,電流上升率受到限制,繞組斷電時,應該電流截止的相不能立即截止。繞組導通和截止都會產(chǎn)生較大的反電勢,而截止時反電勢將對驅(qū)動級器件的安全產(chǎn)生有害的影響。電動機運轉(zhuǎn)時在各相繞組中產(chǎn)生旋轉(zhuǎn)電勢,這些電勢的大小和方向?qū)@組電流產(chǎn)生很大的影響。由于旋轉(zhuǎn)電勢基本上與電動機轉(zhuǎn)速成正比,轉(zhuǎn)速越高,電勢越大,繞組電流越小,從而使電機輸出轉(zhuǎn)矩也隨著轉(zhuǎn)速升高而下降。步進電動機的固有分辨率不高,不能精密位移。以應用最廣的8極50齒兩相混合式步進電動機為例,其步距角為0.9°/1.8°,需配合機械減速機構(gòu)以達到所需要的脈沖當量精度,但是,機械系統(tǒng)的增加也同時帶來了一個誤差源。步進電動機在低頻運行時的振蕩及過沖問題,嚴重限制了步進電動機的應用范圍。對這個問題的解決辦法,除了改善負載特性及附加機械阻尼外,還可以在驅(qū)動電源方面加以改善,如引入電磁阻尼、采用細分驅(qū)動等辦法來解決。 在機電一體化中,步進電機是最常用的一種執(zhí)行電機,它實現(xiàn)了機械中的角度、位移的數(shù)字化控制,從而使機械控制的精度大大提高。現(xiàn)代控制技術(shù)中普遍采用的方式為開環(huán)控制和閉環(huán)控制,開環(huán)控制結(jié)構(gòu)簡單成本低但其精度不是太高;閉環(huán)控制可以實現(xiàn)高精度的控制,但其結(jié)構(gòu)復雜投入成本高。步進電機的出現(xiàn)解決了這一技術(shù)難題,它使得開環(huán)控制的精度和速度大大提高,由它組成的步進式伺服控制系統(tǒng)實現(xiàn)了數(shù)字化機械生產(chǎn)過程。步進電機可以直接用數(shù)字信號驅(qū)動,使用非常方便。一般電動機都是連續(xù)轉(zhuǎn)動的,而步進電動機則有定位和運轉(zhuǎn)兩種基本狀態(tài),當有脈沖輸入時步進電動機一步一步地轉(zhuǎn)動,每給它一個脈沖信號,它就轉(zhuǎn)過一定的角度。步進電動機的角位移量和輸入脈沖的個數(shù)嚴格成正比,在時間上與輸入脈沖同步,因此只要控制輸入脈沖的數(shù)量、頻率及電動機繞組通電的相序,便可獲得所需的轉(zhuǎn)角、轉(zhuǎn)速及轉(zhuǎn)動方向。在沒有脈沖輸入時,在繞組電源的激勵下氣隙磁場能使轉(zhuǎn)子保持原有位置處于定位狀態(tài)。因此非常適合于單片機控制[2] 1.3 步進電機的單片機控制優(yōu)點 控制系統(tǒng)對步進電機的控制通過步進電機驅(qū)動器來完成。因此它已經(jīng)被廣泛地用于自動控制系統(tǒng)中作為執(zhí)行元件。原來的步進電機控制系統(tǒng)采用分立元件或者集成電路組成的控制回路,不僅調(diào)試安裝復雜,要消耗大量元器件,實現(xiàn)起來成本高、費時多,而且一旦定型后,電路就很難改動,因此不得不重新設計控制器。 單片機是一種微型計算機,它在一個集成芯片中,集成有微處理器(CPU)、存儲器(RAM和ROM)、基本的I/O接口以及定時/計數(shù)部件,即在一個芯片上實現(xiàn)了一臺微型計算機的基本功能[3]。 步進電機的控制部分以單片機為主的微處理器控制具有如下優(yōu)點:1.靈活性和適應性。微處理器的控制方式是有軟件完成時,如果需要修改控制規(guī)律,一般不必改變系統(tǒng)的硬件電路,只需修改程序即可。在系統(tǒng)調(diào)試和升級時,可以不斷嘗試選擇最優(yōu)參數(shù),非常方便。2.可以實現(xiàn)較復雜的控制,控制精度高。微處理器具有很強的邏輯功能、運算速度快、精度高、有大量的存儲單元,因此有能力實現(xiàn)復雜的控制。3.可提供人機界面。在電機控制中要用到鍵盤和顯示器作為人機界面來實現(xiàn)對步進電機的控制。單片機體積小,重量輕,抗干擾能力強,對環(huán)境要求不高,價格低廉,指令功能強,運行速度快,可靠性高及靈活性好開發(fā)也較為容易,國內(nèi)近些年來已將其廣泛應用[4]。 在該設計中我選用了MSC-51作為步進電機的控制器, 用它來實現(xiàn)步進電機的空載時的一些控制功能。 2.1 步進電動機的基本原理 步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。步進電機可以直接用數(shù)字信號驅(qū)動,使用非常方便。一般電動機都是連續(xù)轉(zhuǎn)動的,而步進電動機則有定位和運轉(zhuǎn)兩種基本狀態(tài),在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的。可以通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。步進電機可以作為一種控制用的特種電機,利用其沒有積累誤差的特點,使得在速度、位置等控制領域用步進電機來控制變的非常的簡單,廣泛應用于各種開環(huán)控制[5]。 2.2 步進電動機分類 步進電機的品種規(guī)格很多,現(xiàn)在比較常用的步進電機包括反應式步進電機(VR)、永磁式步進電機(PM)、混合式步進電機(HB)和單相式步進電機等。 永磁式步進電機一般為兩相,轉(zhuǎn)矩和體積較小,步進角一般為7.5度或15度;反應式步進電機一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,步進角一般為1.5度,但噪聲和振動都很大。反應式步進電機的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導的變化產(chǎn)生轉(zhuǎn)矩。 混合式步進電機是指混合了永磁式和反應式的優(yōu)點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為0.72度。這種步進電機的應用最為廣泛,也是本方案所選用的步進電機[6]。 2.3 步進電機的一些基本參數(shù) 2.3.1 電機的拍數(shù) 完成一個磁場周期性變化所需脈沖用n表示或指電機轉(zhuǎn)過一個齒距角所需脈沖數(shù)以四相電機為例,四相四拍運行方式即AB-BC-CD-DA-AB,四相八拍運行方式即 A-AB-B-BC-C-CD-D-DA-A。 2.3.2 電機固有步進角 它表示控制系統(tǒng)每發(fā)一個步進脈沖信號,電機所轉(zhuǎn)動的角度。電機出廠時給出了一個步距角的值,如86BYG250A型電機給出的值為0.9°/1.8°(表示半步工作時為0.9°、整步工作時為1.8°),這個步距角可以稱之為‘電機固有步距角’,它不一定是電機實際工作時的真正步距角,真正的步距角和驅(qū)動器有關(guān)[7]。 2.3.3 步進電機的相數(shù) 產(chǎn)生不同對極N、S磁場的激磁線圈對數(shù),是指電機內(nèi)部的線圈組數(shù),目前常用的有二相、三相、四相、五相步進電機。電機相數(shù)不同,其步距角也不同,一般二相電機的步距角為0.9°/1.8°、三相的為0.75°/1.5°、五相的為0.36°/0.72°。在沒有細分驅(qū)動器時,用戶主要靠選擇不同相數(shù)的步進電機來滿足自己步距角的要求。如果使用細分驅(qū)動器,則‘相數(shù)’將變得沒有意義,用戶只需在驅(qū)動器上改變細分數(shù),就可以改變步距角[8]。 2.4 步進電機結(jié)構(gòu) 電機轉(zhuǎn)子均勻分布著 40個小齒,定子齒有三個勵磁繞阻,其幾何軸線依次分別與轉(zhuǎn)子齒軸線錯開0、1/3て、2/3て,(相鄰兩轉(zhuǎn)子齒軸線間的距離為齒距以て表示),即A與齒1相對齊,B與齒2向右錯開1/3て,C與齒3向右錯開2/3て,A'與齒5相對齊,(A'就是A,齒5就是齒1) 2.4.1 步進電機的旋轉(zhuǎn) 如A相通電,B,C相不通電時,由于磁場作用,齒1與A對齊,(轉(zhuǎn)子不受任何力以下均同)。 如B相通電,A,C相不通電時,齒2應與B對齊,此時轉(zhuǎn)子向右移過1/3て,此時齒3與C偏移為1/3て,齒4與A偏移(て-1/3て)=2/3て。 如C相通電,A,B相不通電,齒3應與C對齊,此時轉(zhuǎn)子又向右移過1/3て,此時齒4與A偏移為1/3て對齊。 如A相通電,B,C相不通電,齒4與A對齊,轉(zhuǎn)子又向右移過1/3て ,這樣經(jīng)過A、B、C、A分別通電狀態(tài),齒4(即齒1前一齒)移到A相,電機轉(zhuǎn)子向右轉(zhuǎn)過一個齒距,如果不斷地按A,B,C,A„„通電,電機就每步(每脈沖)1/3て,向右旋轉(zhuǎn)。如按A,C,B,A„„通電,電機就反轉(zhuǎn)[9]。 由此可見:電機的位置和速度由導電次數(shù)(脈沖數(shù))和頻率成一一對應關(guān)系,而方向由導電順序決定。 不過,出于對力矩、平穩(wěn)、噪音及減少角度等方面考慮。往往采用A-AB-B-BC-C-CA-A這種導電狀態(tài),這樣將原來每步1/3て改變?yōu)?/font>1/6て。甚至于通過二相電流不同的組合,使其1/3て變?yōu)?/font>1/12て,1/24て,這就是電機細分驅(qū)動的基本理論依據(jù)。 不難推出:電機定子上有m相勵磁繞阻,其軸線分別與轉(zhuǎn)子齒軸線偏移1/m,2/m……(m-1)/m,1。并且導電按一定的相序電機就能正反轉(zhuǎn)被控制——這是步進電機旋轉(zhuǎn)的物理條件[10]。 2.5 步進電動機的控制原理 由于步進電機是一種將電脈沖信號轉(zhuǎn)換成直線或角位移的執(zhí)行元件,它不能直接接到交直流電源上,而必須使用專用設備—步進電機控制驅(qū)動器,控制器可以發(fā)出脈沖頻率從幾赫茲到幾千赫茲可以連續(xù)變化的脈沖信號,它為環(huán)形分配器提供脈沖序列。環(huán)形分配器的主要功能是把來自控制環(huán)節(jié)的脈沖序列按一定的規(guī)律分配后,經(jīng)過功率放大器的放大加到步進電機驅(qū)動電源的各項輸入端,以驅(qū)動步進電動機的轉(zhuǎn)動。環(huán)形分配器主要有兩大類:一類是用計算機軟件設計的方法實現(xiàn)環(huán)形分配器要求的功能,通常稱軟環(huán)形分配器、另一類是用硬件構(gòu)成的環(huán)形分配器,通常稱為硬環(huán)形分配器。功率放大器主要對環(huán)形分配器的較小輸出信號進行放大,以達到驅(qū)動步進電機的目的[11]。 2.6 步進電動機的特點 步進電動機有如下特點: (1)步進電機的角位移與輸出脈沖數(shù)成正比,因此當它轉(zhuǎn)一轉(zhuǎn)后,沒有累計誤差,具有良好的跟隨性。 (2)由步進電機和驅(qū)動電路組成的開環(huán)數(shù)控系統(tǒng),既非常方便、廉價,又非常可靠。同事,它也可以有角度反饋環(huán)節(jié)組成高性能的閉環(huán)數(shù)控系統(tǒng)。 (3)步進電機的動態(tài)響應快,易于起停、正反轉(zhuǎn)及變速。 (4)速度可在相當寬的范圍內(nèi)平滑調(diào)節(jié),低速情況下仍能保證獲得很大的轉(zhuǎn)矩,因此一般可以不用減速器而直接驅(qū)動負載。 (5)步進電機只能通過脈沖電源供電才能運行,它不能直接用交流電源或直接電源。 (6)步進電機自身的噪聲和震動比較大,帶慣性負載的能力強[16] 3 主要芯片介紹 3.1 89S5l單片機簡介 本次設計以CPU選用89S5l作為步進電機的控制芯片.89S51的結(jié)構(gòu)簡單并可以在編程器上實現(xiàn)閃爍式的電擦寫數(shù)達幾萬次以上.使用方便等優(yōu)點,而且完全兼容MCS5l系列單片機的所有功能。AT89S51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Flash Programmable And erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89S51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案[17]。 3.1.1 單片機的引腳功能 (1)VCC(40):電源+5V。 (2)VSS(20):接地,也就是GND。 (3)XTL1(19)和XTL2(18):振蕩電路。單片機是一種時序電路,必須有脈沖信號才能工作,在它的內(nèi)部有一個時鐘產(chǎn)生電路,有兩種振蕩方式,一種是內(nèi)部振蕩方式,只要接上兩個電容和一個晶振即可;另一種是外部振蕩方式,采用外部振蕩方式時,需在XTL2上加外部時鐘信號。 (4)PSEN(29):片外ROM選通信號,低電平有效。 (5)ALE/PROG(30):地址鎖存信號輸出端/EPROM編程脈沖輸入端。 (6)RST/VPD(9):復位信號輸入端/備用電源輸入端。 (7)EA/VPP(31):內(nèi)/外部ROM選擇端 (8)P0口(39-32):雙向I/O口。 (9)P1口(1-8):準雙向通用I/0口。 (10)P2口(21-28):準雙向I/0口[18]。 3.1.2 單片機的主要特性 與MCS-51 兼容 4K字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:全靜態(tài)工作:0Hz-24Hz三級程序存儲器鎖定、128*8位內(nèi)部RAM、32可編程I/O線、兩個16位定時器/計數(shù)器、5個中斷源、可編程串行通道、低功耗的閑置和掉電模式、片內(nèi)振蕩器和時鐘電路[19]。 (1)振蕩器特性: XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應不接。輸入至其內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度[20]。 (2)芯片擦除: 整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。 此外,AT89S51設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止[21]。 3.2 L298簡介 3.2.1 L298的原理 L298N是一種比較常用的芯片,具有電壓高、電流大的特性,同時他還具有兩個橋的高電壓大電流全橋式驅(qū)動器,能夠?qū)崿F(xiàn)驅(qū)動直流電動機、步進電機和電感線圈等器件,它通過邏輯電平信號控制,而且同時具有兩個使能控制端,另外外部可以增加一個電路,檢測電阻將發(fā)生的變化反饋給控制電路。L298N芯片作為驅(qū)動電機的芯片,可以驅(qū)動四相電機,能夠調(diào)節(jié)輸出電壓,根據(jù)電源操作很方便,同時還提供信號,通過單片機的I/O口進行,并且電路較為簡單,容易操作且不容易出錯,比較方便。 3.2.2 L298概述 L298是SGS公司的產(chǎn)品,比較常見的是15腳Multiwatt封裝的L298N,內(nèi)部同樣包含4通道邏輯驅(qū)動電路。可以方便的驅(qū)動兩個直流電機,或一個兩相步進電機。 L298N芯片可以驅(qū)動兩個二相電機,也可以驅(qū)動一個四相電機,輸出電壓最高可達50V,可以直接通過電源來調(diào)節(jié)輸出電壓;可以直接用單片機的IO口提供信號;而且電路簡單,使用比較方便。 L298N可接受標準TTL邏輯電平信號VSS,VSS可接4.5~7 V電壓。4腳VS接電源電壓,VS電壓范圍VIH為+2.5~46 V。輸出電流可達2.5 A,可驅(qū)動電感性負載。1腳和15腳下管的發(fā)射極分別單獨引出以便接入電流采樣電阻,形成電流傳感信號。L298可驅(qū)動2個電動機,OUT1,OUT2和OUT3,OUT4之間可分別接電動機。圖3-5是L298N功能邏輯圖,圖3-6是L298N的引腳圖[25]。 3.3 光電開關(guān) 本系統(tǒng)中所用傳感器為FC-SPX302光電開關(guān),該傳感器為開關(guān)型傳感器,四個接線腳分別為“+,L,OUT,-”其輸入電壓范圍廣為直流5-24V,L為控制指示端,當“L”與“+”相連時,傳感器未檢測到物體時LED燈發(fā)光,當“L”懸空時則相反,其特點為: 1. 動作模式備有遮光時ON/入光時ON(可切換型) 2. 應答頻率為1KHZ的高速響應 3. 入光顯示燈明顯,容易進行動作確認 4. 電源電壓為DC-24V的廣范圍 5. 備有遮光時入光顯示燈燈亮型 其連接電路如圖3-7所示: file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps228D.tmp.jpg 4 硬件設計 啟動系統(tǒng)后,從單片機的I/O口輸出控制脈沖,經(jīng)過L298N驅(qū)動電路對脈沖進行處理,輸出能直接控制步進電機的脈沖信號。在負載能力范圍允許內(nèi),就能實現(xiàn)步進電機獨立起停、轉(zhuǎn)向、速度、位置變化的控制。 4.1 總體設計方框圖 由4-1圖中看以看出以單片機為控制核心。鍵盤做為外設,進行功能的選擇,啟動,轉(zhuǎn)速增加,轉(zhuǎn)速減少,停止等操作。1602液晶屏顯示實際轉(zhuǎn)速和設定轉(zhuǎn)速。通過L298N來驅(qū)動步進電機。把步進電機的實際轉(zhuǎn)速通過單片機外部中斷反饋到單片機。調(diào)用PID程序,通過改變脈沖周期調(diào)節(jié)轉(zhuǎn)速。總體設計方框圖如圖4-1所示 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps22AD.tmp.jpg 4.2 系統(tǒng)仿真圖 系統(tǒng)仿真圖如圖4-2。仿真圖是根據(jù)實際電路所搭建。是以單片機為核心,L298為驅(qū)動,1602作為顯示,按鍵作為輸入所搭建的仿真模型。4-2圖所示模型處于運行狀態(tài)。啟動仿真模型,選擇按鍵START,模型開始正常運轉(zhuǎn),通過V+V-改變電機轉(zhuǎn)速,最后選擇按鍵STOP停止仿真。
file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps22CD.tmp.jpg 4.3 步進電動機的控制方式選擇 步進電機控制是一個比較精確的控制,步進電機開環(huán)控制系統(tǒng)具有成本低、簡單、控制方便等優(yōu)點,在采用單片機的步進電機開環(huán)系統(tǒng)中,控制系統(tǒng)的CP脈沖的頻率或者換向周期實際上就是控制步進電機的運行速度。系統(tǒng)可用兩種辦法實現(xiàn)步進電機的速度控制。一種是延時,一種是定時。延時方法是在每個周期完成后調(diào)用一個延時子程序,待延時結(jié)束后再次執(zhí)行脈沖輸出程序,這樣周而復始就可發(fā)出一定頻率的CP脈沖。延時子程序的延時時間與換向程序所用的時間和,就是CP脈沖的周期,該方法簡單,占用資源少,全部由軟件實現(xiàn),調(diào)用不同的子程序可以實現(xiàn)不同速度的運行,適合較簡單的控制過程。定時方法是利用單片機系統(tǒng)中的定時器定時功能產(chǎn)生任意周期的定時信號,從而可方便的控制系統(tǒng)輸出CP脈沖的周期,有點是定時時間準確。本次設計采用第二種方式改變頻率,進而來控制速度的方法來實現(xiàn)。 步進電機控制采用閉環(huán)控制,具有準確性較高、成本低、簡單等優(yōu)點,
4.4 步進電動機的驅(qū)動方式選擇 有兩種方法驅(qū)動步進電機,都是利用CPU驅(qū)動,分為直接和間接。這里不采用直接驅(qū)動,因為他的缺點很明顯,步進電機運轉(zhuǎn)需要足夠的電流,而CPU直接驅(qū)動不能夠提供足夠大的電流脈沖;CPU間接驅(qū)動,需要先將CPU輸出的信號放大,這樣就能滿足驅(qū)動步進電動機的條件,再直接驅(qū)動或者再利用控制驅(qū)動器來實現(xiàn)要求,這種方法比較穩(wěn)妥,可以達到目的,優(yōu)更加安全可靠,這里采用CPU間接驅(qū)動步進電機。 步進電機具有兩種控制驅(qū)動器,一種利用多個功率放大器件驅(qū)動電機,放大電路的種類和器件的參數(shù)不同,達到的目的就不同,實現(xiàn)的功能也不同,但是選擇使用四相步進電機,需要每個信號都放大,電路將比較復雜而且麻煩,電路也會特別不穩(wěn)定,本次使用電機驅(qū)動模塊芯片驅(qū)動電機。 此次設計利用L298芯片驅(qū)動電機,L298芯片能夠很好的與單片機結(jié)合,進行控制,對于單片機的驅(qū)動更方便,與單片機結(jié)合能夠?qū)崿F(xiàn)性能較好的步進電機的驅(qū)動。這次采用固定斬波頻率的PWM恒流斬波驅(qū)動方式,可以采用四相雙極性步進電機,電壓可達到46V,電流可與達到2A。此次步進電機驅(qū)動系統(tǒng)的設計比較簡單,需要的元件較少,成本很低,電路也簡單,可靠性很高,占用空間少。并且通過開發(fā)軟件,使得計算機的負擔降低,準確性變高。同時,L298芯片是獨立的,能夠十分靈活的應用,可以廣泛的適用在步進電機系統(tǒng)中,使得整個電路設計方案簡潔,成本低廉,準確性高,使用特別方便。
4.5 鍵盤電路設計 4.5.1 鍵盤原理圖 鍵盤具有兩種接口的方法,一種是矩陣式接口,另一種是獨立式接口。矩陣接口方式接線相對較為復雜,但是資源占用得較少,一般在需要鍵盤較多的時候使用。獨立式接口方式接發(fā)結(jié)構(gòu)較為簡單,但是占用的資源較多,比較適合需要按鍵較少的時候使用,本次設計就采用的是獨立性鍵盤接口,其原理圖如下 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps22EE.tmp.jpg 4.5.2 鍵盤功能 此次設計,設計了手動控制電路,實現(xiàn)了動控制、加速控制、減速控制、停止控制、反轉(zhuǎn)控制,分別通過s1、s2、s3、s3控制,具體電路圖如下,其中S1實現(xiàn)電機的啟動,通過內(nèi)部檢測到s1的變化引發(fā)的P1.3的狀態(tài)改變,來操作程序的運行,最終達到啟動電機的目的。至于步進電機的轉(zhuǎn)速就是通過改變點擊的脈沖不同二實現(xiàn)的,達到控制轉(zhuǎn)速的目的。 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps231D.tmp.jpg 按鍵功能表
4.6 顯示電路 此次設計,需要通過步進電機的控制,實現(xiàn)顯示電路來表示加速、減速。有兩種方法可以實現(xiàn)功能,但是如果采用4位段數(shù)碼管組成顯示電路,利用數(shù)碼管來顯示單片機得到的數(shù)據(jù),這種方案缺點很明顯,需要的元件很多,電路較為復雜,且不容易操作,可讀性差,如果設定了數(shù)值,就不容易更改,操作起來很麻煩,很難增加其他的功能,而且耗電量很大,電路供電很麻煩。所以本次設計采用了單片機和液晶顯示器的結(jié)合,實現(xiàn)電機設計和電機的工作狀態(tài)的顯示電路,以方便了解電機的運行狀態(tài)和轉(zhuǎn)速,同時顯示數(shù)據(jù)。 通過液晶顯示數(shù)據(jù),比數(shù)碼管的電路更加簡單,而且容易操作,同時液晶顯示比較穩(wěn)定、省電、美觀,對于修改數(shù)據(jù)也比較簡單,容易修改功能,可操作性較高,同時讀數(shù)比較容易,同時能夠顯示實際轉(zhuǎn)速和設定轉(zhuǎn)速。
file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps233E.tmp.jpg 4.7 測速電路 對于測速電路的設計,采用FA-SPX302光電開關(guān)實現(xiàn)功能,電路比較簡單,電路如下圖所示: file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps237D.tmp.jpg 5 軟件設計 步進電機的軟件設計,就是通過程序的設計,實現(xiàn)完成環(huán)形分配器的要求,進而實現(xiàn)對于轉(zhuǎn)動角度和唯一的目標。開始的是時候,通過判斷旋轉(zhuǎn)方向,然后相應的運行對應的程序,同時通過運行正反轉(zhuǎn)程序的相應模型以及脈寬時延程序來實現(xiàn)步進電機的正反轉(zhuǎn)功能。
5.1 PID控制算法 在計算機控制過程中,整個過程采用的是數(shù)值計算方法,當采樣周期足夠小時,這種數(shù)值近似計算相當誰確,使離散的被控過程與連續(xù)過程相當接近。圖5-1為單片機閉環(huán)控制系統(tǒng)框圖。PID算法是將描述連續(xù)過程的微分方程轉(zhuǎn)化為差分方程,然后,根據(jù)差分方程編制計算程序來進行控制計算的。 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps238E.tmp.jpg 5.1.1 位置式PID的控制算法 如前所述PID調(diào)節(jié)的微分方程見公式(5-1) file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps243B.tmp.jpg+ 公式(5-1) 將此微分方程寫成對應的差分方程形式。 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps246B.tmp.jpg-=-=+++å 公式(5-2) 公式(5-2)式中ne-第n次采樣周期內(nèi)所獲得的偏差信號;1ne--第n-1次采樣 周期內(nèi)所獲得的偏差信號;T-采樣周期;ny-調(diào)節(jié)器第rt次控制變量的輸出;為了編寫計算機程序的方便,現(xiàn)將公式(5-2)寫成下列形式 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps247B.tmp.jpg 其中file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps249B.tmp.jpg因為采樣周期T,積分常數(shù)iT和微 分常數(shù)dT選定后皆為常數(shù),因此ak及bk必為常。當調(diào)整參數(shù)改善控制性能時,也只須調(diào)整pk、ak和bk的大小即可。 file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps24BC.tmp.jpg file:///C:\Users\王博\AppData\Local\Temp\ksohtml\wps24CC.tmp.jpg 附錄C 程序 #include<intrins.h> #include<reg51.h> #define uint unsigned int #define uchar unsigned char
uint i,j,m,n,flag,t; signed int a,b,c,d; double tt; uchar code LEDData[]="0123456789"; uchar TX[6]={0,}; uchar run[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; 控制口定義 sbit EnA =P2^6; sbit SA1 =P2^2; sbit SA2 =P2^3; sbit EnB =P2^7;
sbit SB1 =P2^4; sbit SB2 =P2^5; sbit en =P3^3; sbit rw =P3^1; sbit rs =P3^0; sbit start=P1^4; sbit vh =P1^5; sbit vl =P1^6; sbit stop =P1^7; 延時1ms程序 void delay0(int t) {int w; for(;t>0;t--) for(w=110;w>0;w--); } 鍵盤掃描程序 void key() {if(start==0) {delay0(10); while(start==0); {j++; n=1; } } if(stop==0) {delay0(10); while(stop==0); {n--; j=0; } } if(vh==0) {delay0(10); while(vh==0); {m++; a++;} } if(vl==0) {delay0(10); while(vl==0); {m--; b--;} } } 寫指令程序 void write_com(uchar com) { rs=0; P0=com; delay0(5); en=1; delay0(5); en=0; } 寫數(shù)據(jù)程序 void write_data(uchar date) { rs=1; P0=date; delay0(5); en=1; delay0(5); en=0; } PID程序 void PID() {uint e1,e2,e3; e1=TX[5]-TX[4]; e2=TX[3]-TX[2]; e3=TX[1]-TX[0]; if(e1>e2>10) { t=10*e1-6*e2+4*e3; } if(2<e1<e2) { t=3*e1-5*e2+2*e3; } 中斷0服務程序 void interrupt0() interrupt 1 using 2 {c++; } 定時器0服務程序 void timer0() interrupt 1 { uint e; uint f; TH0=(65536-(1250-t))/256; TL0=(65536-(1250-t))%256; if(f<7) {P2=run[f]; f++; } else {P2=run[f]; f=0; } d++; if(d==m) {if(e<6) {e++; TX[e]=c; } else {e=0; PID(); } c=0; d=0; } } 內(nèi)部資源初始化 void Init(void) { TMOD=0x11; TH0=(65536-(1250-t))/256; TL0=(65536-(1250-t))%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; IT0=1; EX0=1; IP=0x03; EA=1; ET0=1; TR0=1; en=0; rw=0; write_com(0x38); write_com(0x0c); write_com(0x04); write_com(0x01); write_com(0x80); write_data('S'); write_data('S'); write_data('P'); write_data('E'); write_data('E'); write_data('D'); write_data(':'); write_com(0x80+0x0B); write_data('R'); write_data('/'); write_data('S'); write_com(0x80+0x40); write_data('R'); write_data('S'); write_data('P'); write_data('E'); write_data('E'); write_data('D'); write_data(':'); write_com(0x80+0x4B); write_data('R'); write_data('/'); write_data('S'); } 速度顯示 void speeddisplay() { write_com(0x80+0x07); write_data('0'); write_data(LEDData[m/100]); write_data(LEDData[m%100/10]); write_data(LEDData[m%10]); if((m<600)&(m>950)) {write_com(0x80+0x48); write_data(LEDData[(m+1)/100]); write_data(LEDData[(m+1)%100/10]); write_data(LEDData[(m+1)%10]);} else {write_com(0x80+0x47); write_data('0'); write_data(LEDData[m/100]); write_data(LEDData[m%100/10]); write_data(LEDData[m%10]);}; } void main(void) { a=b=c=d=i=0; j=0; m=800; n=1; flag=0; while(1) {key(); if(j==1) {init(); } while(j&&n) {key(); PID(); tt=(1.3*(a+b)); t=tt; speeddisplay(); } if(n==0) {write_com(0x38); write_com(0x0c); write_com(0x04); write_com(0x01); } } }
|