L297+L298步進電機控制_第1頁
L297+L298步進電機控制_第2頁
L297+L298步進電機控制_第3頁
L297+L298步進電機控制_第4頁
L297+L298步進電機控制_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

摘要本文介紹了計算機通過單片機控制步進電機的系統(tǒng)。在電氣時代的今天,電動機一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。步進電機是機電控制中一種常用的執(zhí)行機構,其原理是通過對它每相線圈中的電流和順序切換來使電機作步進式旋轉(zhuǎn)。步進電動機的突出優(yōu)點是它可以在寬廣的頻率范圍內(nèi),可以利用改變脈沖頻率來實現(xiàn)調(diào)速,快速起停、正反轉(zhuǎn)控制及制動等,并且由其組成的開環(huán)系統(tǒng)簡單、廉價、可靠,因此在眾多領域有著極其廣泛的應用。本設計重點研究了高性能步進電機驅(qū)動器及其控制系統(tǒng)。該系統(tǒng)以微機作為上位機,AT89C 51單片機作為下位機。下位機設定電機速度和方向,上位機對下位機的數(shù)據(jù)信號進行控制和備份。通過單片機與微機的串口通訊,實現(xiàn)對步進電機的遠距離實時監(jiān)控。使用軟件代替環(huán)形分配器,完成了高效、節(jié)能的步進電機控制系統(tǒng)設計。軟件使用易于維護的模塊化設計方法,并采取軟、硬件抗干擾技術,提高了系統(tǒng)穩(wěn)定性。大量實驗表明系統(tǒng)性能達到設計要求,最后對本次設計做出分析和總結。經(jīng)系統(tǒng)調(diào)試,能夠很好的控制步進電機的正反轉(zhuǎn)、加減速,從而達到預期目的。整個系統(tǒng)具有結構簡單、可靠性高、成本低和實用性強等特點,具有較高的通用性和應用推廣價值。關鍵詞:計算機串行口MSComm51單片機步進電機AbstractThispaper,weintroducesasteppermotorsystemwhichcontrolledbySCM.IntheElectricaleratoday,Motorhasbeenplayingaveryimportantroleinthemodernizationofproductionandlife.Steppermotorisacommonusedimplementingagencyinmotorcontrol.Theprincipleisbyswitchingthecoilcurrentandtheorderinitseachphasetomakeastep-by-steprotarymotor.Theoutstandingadvantagesofstepmotorarethatitcanrealizespeedregulation,quickstartupandstop,positive-reversecontrol,brakeandsoonbychangingthefrequencyofpulse.Inaddition,theopen-loopsystemthatconsistedofthestepmotorissimple,cheapandreliability.Thereforeitsapplicationisveryextensiveinmanyfields.Thoughsystemtesting,itcanbeveryconvenienttocontrolthesteppermotor,suchasacceleration,deceleration,exigencystopsoastoachievethedesiredobjectives.Thewholesystemissimpleinstructurewithcharacteristicsofhighreliability,lowcostandpracticalitywhichhasahigheruniversalcharacteristicandthepromotionalandappliedvalue.Keywords:computerMSCommSingle-chipmicroprocessorSteppermoto目錄摘要 IVAbstract IV第1章緒論 IV1.1技術概述 IV1.2課題的背景及意義 IV第2章步進電機控制系統(tǒng)的總體設計 V2.1整體方案設計 V2.2上位機軟件介紹 V2.3上位機任務 V第3章系統(tǒng)硬件設計 V3.1單片機的選擇 V3.1.1驅(qū)動芯片的選擇 V3.1.2步進電機的選擇 V3.2PC串口通信模塊硬件設計 V3.2.1PC串口描述 V3.2.2上下位機通信電路設計 V3.3小結 V第4章上位機軟件設計 V4.1上位機界面實現(xiàn)步驟 V4.2串口通信模塊程序設計 V串口通信原理 V串口通信流程圖 V串口通信程序設計 V4.3AT89C51程序分析 V第5章系統(tǒng)測試 V5.1系統(tǒng)測試 V結論 V致謝 V參考文獻 V附錄1:下位機程序 V附錄2:科技文摘譯 V緒論1.1技術概述在電氣時代的今天,電動機一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。無論是在工農(nóng)業(yè)生產(chǎn)還是在日常生活中的家用電器,都大量地使用著各種各樣的電動機。因此對電動機的控制變得越來越重要了。電動機的控制技術的發(fā)展得力于微電子技術、電力電子技術、傳感器技術、永磁材料技術、自動控制技術、微機應用技術的最新發(fā)展成就。正是這些技術的進步使電動機控制技術化。步進電機是機電控制中一種常用的執(zhí)行機構,其原理是通過對它每相線圈中的電流和順序切換來使電機作步進式旋轉(zhuǎn)。驅(qū)動電路由脈沖信號來控制,所以調(diào)節(jié)脈沖信號的頻率便可改變步進電機的轉(zhuǎn)速。通俗地說:當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一個固定的角度(及步進角)。通過控制脈沖個數(shù)即可以控制角位移量,從而達到準確定位的目的。同時通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的,現(xiàn)在比較常用的步進電機包括反應式步進電機(VR)、永磁式步進電機(PM),混合式步進電機(HB)和單相式步進電機等。永磁式步進電機一般為兩相,轉(zhuǎn)矩和體積較小,步進角一般為7。50;反應式步進電機一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,步進角一般為1。50,但噪聲和振動都很大。反應式步進電機的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導的變化產(chǎn)生轉(zhuǎn)矩?;旌鲜讲竭M電機是指混合了永磁式和反應式的優(yōu)點。它又分為兩相和五相:兩相步進角一般為1。8“而五相步進角一般為0。720。這種步進電機的應用最為廣泛。步進電機的一些基本參數(shù):電機固有步距角:它表示控制系統(tǒng)每發(fā)一個步進脈沖信號,電機所轉(zhuǎn)動的角度。電機出廠時給出了一個步距角的值,如86BYG250A型電機給出的值為0。90/1。80(表示半步工作時為0。90、整步工作時為1。80),這個步距角可以稱之為“電機固有步距角”,它不一定是電機實際工作時的真正步距角,真正的步距角和驅(qū)動器有關。步進電機的相數(shù):是指電機內(nèi)部的線圈組數(shù),目前常用的有二相、三相、四相、五相步進電機。電機相數(shù)不同,其步距角也不同,一般二相電機的步距角為0。90/1。80、三相的為0。750/1。50、五相的為0。360/0。720。在沒有細分驅(qū)動器時,用戶主要靠選擇不同相數(shù)的步進電機來滿足自己步距角的要求。如果使用細分動器,則“相數(shù)”將變得沒有意義,用戶只需在驅(qū)動器上改變細分數(shù),就可以改變步距角。保持轉(zhuǎn)矩:是指步進電機通電但沒有轉(zhuǎn)動時,定子鎖住轉(zhuǎn)子的力矩。它是步進電機最重要的參數(shù)之一,通常步進電機在低速時的力矩接近保持轉(zhuǎn)矩。由于步進電機的輸出力矩隨速度的增大而不斷衰減,輸出功率也隨速度的增大而變化,所以保持轉(zhuǎn)矩就成為衡量步進電機最重要的參數(shù)之一。比如,當人們說2Nm的步進電機,在沒有特殊說明的情況下是指保持轉(zhuǎn)矩為2Nm的步進電機。步進電機的一些特點:⑴一般步進電機的精度為步進角的3%--5%,且不累積。⑵步進電機外表允許的最高溫度。⑶步進電機溫度過高首先會使電機的磁性材料退磁,從而導致力矩下降乃于失步,因此電機外表允許的最高溫度應取決于不同電機磁性材料的退磁點;一般來講,磁性材料的退磁點都在130C以上,有的甚至高達200C以上,所以步進電機外表溫度80C-90C完全正常。⑷步進電機的力矩會隨轉(zhuǎn)速的升高而下降。⑸當步進電機轉(zhuǎn)動時,電機各相繞組的電感將形成一個反向電動勢;頻率越高,反向電動勢越大。在它的作用下,電機隨頻率(或速度)的增大而相電流減小,從而導致力矩下降。⑹步進電機低速時可以正常運轉(zhuǎn),但若高于一定速度就無法啟動,并伴有嘯叫聲。介紹步進電機的一個技術參數(shù):空載啟動頻率,即步進電機在空載情況下能夠正常啟動的脈沖頻率,如果脈沖頻率高于該值,電機不能正常啟動,可能發(fā)生丟步或堵轉(zhuǎn)。在有負載的情況下,啟動頻率應更低。如果要使電機達到高速轉(zhuǎn)動,脈沖頻率應該有加速過程,即啟動頻率較低,然后按一定加速度升到所希望的高頻(電機轉(zhuǎn)速從低速升到高速)。⑺步進電動機以其顯著的特點,在數(shù)字化制造時代發(fā)揮著重大的用途。伴隨著不同的數(shù)字化技術的發(fā)展以及步進電機本身技術的提高,步進電機將會在更多的領域得到應用。本文以永磁式步進電機為例,來介紹如何用計算機通過上位機mscomm控件來指示MCS-51系列單片機控制步進電機。1.2課題的背景及意義步進電機可以對旋轉(zhuǎn)角度和轉(zhuǎn)動速度進行高精度控制。步進電機作為控制執(zhí)行元件,是機電一體化的關鍵產(chǎn)品之一,廣泛應用在各種自動化控制系統(tǒng)和精密機械等領域。例如,在儀器儀表,機床設備以及計算機的外圍設備中(如打印機和繪圖儀等),凡需要對轉(zhuǎn)角進行精確控制的情況下,使用步進電機最為理想。隨著微電子和計算機技術的發(fā)展,步進電機的需求量與日俱增,在各個國民經(jīng)濟領域都有應用。上個世紀就出現(xiàn)了步進電動機,它是一種可以自由回轉(zhuǎn)的電磁鐵,動作原理和今天的反應式步進電動機沒有什么區(qū)別,也是依靠氣隙磁導的變化來產(chǎn)生電磁轉(zhuǎn)矩。在本世紀初,由于資本主義列強爭奪殖民地,造船工業(yè)發(fā)展很快,同時也使得步進電動機的技術得到了長足的進步。到了80年代后,由于廉價的微型計算機以多功能的姿態(tài)出現(xiàn),步進電動機的控制方式更加靈活多樣。原來的步進電機控制系統(tǒng)采用分立元件或者集成電路組成的控制回路,不僅調(diào)試安裝復雜,要消耗大量元器件,而且一旦定型之后,要改變控制方案就一定要重新設計電路。計算機則通過軟件來控制步進電機,更好地挖掘出電動機的潛力。因此,用計算機控制步進電機已經(jīng)成為了一種必然的趨勢,也符合數(shù)字化的時代趨勢?,F(xiàn)在比較常用的步進電機包括反應式步進電機、永磁式步進電機、混合式步進電機和單相式步進電機等。其中反應式步進電機的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導的變化產(chǎn)生轉(zhuǎn)矩?,F(xiàn)階段,反應式步進電機獲得最多的應用。第2章步進電機控制系統(tǒng)的總體設計隨著材料科學、工藝技術、計算機技術的發(fā)展與進步,電路系統(tǒng)向著集成度極高的方向發(fā)展。CPU的生產(chǎn)制造技術,也朝著綜合性、技術性、實用性發(fā)展。如CPU的運算位數(shù)從4位、8位……到32位機的發(fā)展,運算速度從8MHz、32MHz……到1.6GHz??梢哉f是日新月異的發(fā)展著。其中單片機在控制系統(tǒng)中的應用是越來越普遍了。單片機控制系統(tǒng)是以單片機(CPU)為核心部件,擴展一些外部接口和設備,組成單片機工業(yè)控制機,主要用于工業(yè)過程控制。要進行單片機系統(tǒng)設計首先必須具有一定的硬件基礎知識;其次,需要具有一定的軟件設計能力,能夠根據(jù)系統(tǒng)的要求,靈活地設計出所需要的程序;第三,具有綜合運用知識的能力。最后,還必須掌握生產(chǎn)過程的工藝性能及被測參數(shù)的測量方法,以及被控對象的動、靜態(tài)特性,有時甚至要求給出被控對象的數(shù)學模型。MAX232MAX232計算機51單片機L297NL298N步進電機圖2-1總體框圖2.1整體方案設計使用、控制步進電機必須由環(huán)形脈沖源、功率放大電路等部分組成控制系統(tǒng),脈沖信號一般由單片機或CPU產(chǎn)生,一般脈沖信號的占空比為0.3-0.4左右,電機轉(zhuǎn)速越高,占空比則越大。功率放大是驅(qū)動系統(tǒng)最為重要的部分。步進電機在一定轉(zhuǎn)速下的轉(zhuǎn)矩取決于它的動態(tài)平均電流而非靜態(tài)電流,平均電流越大,電機力矩越大,要達到平均電流大,這就需要驅(qū)動系統(tǒng)盡量克服電機的反電勢。因而不同的場合采取不同的驅(qū)動方式。到目前為止,驅(qū)動方式一般有以下幾種:恒壓、恒壓串電阻、高低壓驅(qū)動、恒流等。此控制系統(tǒng)的硬件主要組成:計算機,MAX232,51系列單片機,L297N,L298N、步進電機等。整體結構如圖2-1所示本系統(tǒng)總體設計思路是:由計算機發(fā)出電平信號,通過電平轉(zhuǎn)換芯片MAX232把命令給單片機。單片機接受并轉(zhuǎn)換成控制信號發(fā)送給L297,L298N。L297主要作用那個是控制步進電機,使編程簡單,L298N主要作用連接步進電機從而驅(qū)動步進電機。2.2上位機軟件介紹由于本設計上位機的界面是用VC++6.0實現(xiàn)的,因此有必要先對VC++6.0做簡單介紹,使讀者對該軟件有初步了解。VC++6.0是Microsoft公司推出的一個基于Windows系統(tǒng)平臺、可視化的集成開發(fā)環(huán)境,它的源程序按C++語言的要求編寫,并加入了微軟提供的功能強大的MFC(MicrosoftFoundationClass)類庫。MFC中封裝了大部分WindowsAPI函數(shù)和Windows控件,它包含的功能涉及到整個Windows操作系統(tǒng)。MFC不僅給用戶提供了Windows圖形環(huán)境下應用程序的框架,而且還提供了創(chuàng)建應用程序的組件,這樣,開發(fā)人員不必從頭設計創(chuàng)建和管理一個標準Windows應用程序所需的程序,而是從一個比較高的起點編程,故節(jié)省了大量的時間。另外,它提供了大量的代碼,指導用戶編程時實現(xiàn)某些技術和功能。因此,使用VC++提供的高度可視化的應用程序開發(fā)工具和MFC類庫,可使應用程序開發(fā)變得簡單。談到vc++6.0就不得不提到它的調(diào)試功能,這是devcpp比不上的。調(diào)試重要的幾個鍵:F9在當前光標所在的行下斷點,如果當前行已經(jīng)有斷點,則取消斷點。F5調(diào)試狀態(tài)運行程序,程序執(zhí)行到有斷點的地方會停下來。F10單步執(zhí)行程序。CTRL+F10運行到光標所在行。F11和F10的區(qū)別是,如果當前執(zhí)行語句是函數(shù)調(diào)用,則會進入函數(shù)里面.SHIFT+F11跳出當前所在函數(shù)。調(diào)試的步驟:1,保存為c或c++文件。2,根據(jù)斷點調(diào)試找到錯誤處。3,采用F10或F11單步調(diào)試找到精確的錯誤處。其中f10是跳過函數(shù)調(diào)用,F(xiàn)11是進入函數(shù)體調(diào)試。一般是先用F10,確定函數(shù)輸入輸出是否正確(與自己想的一樣),如不一樣,則用F11進入函數(shù)體一步一步調(diào)試。4,在調(diào)試過程中,肯定得監(jiān)視程序中的變量。在vc++6.0的右下角有一個watch窗口,專門用來設置監(jiān)視變量。具體怎樣設置自己體會吧。在調(diào)試過程中,鼠標輕輕放在變量上也會顯示該變量的值5,vc6.0專門為調(diào)試設置了工具箱以方便調(diào)試的進行,打開的方法如下。右鍵-->在debug(或調(diào)試)選擇項的勾勾上。我們就暫時告別一下這些令人敬畏的源代碼,來看看VC6的工程設置選項。不過,雖然講座中不談及源代碼,心鈴還是建議大家有空就多讀讀程序,因為這是一條能夠迅速增加編程知識,提高編程能力的有效途徑。打開或新建一個包含至少一個工程的Workspace后,VC6的Project菜單中的“Settings…”命令就變?yōu)橛行?,選擇它或者按下熱鍵Alt+F7后,便可調(diào)出工程設置對話框,這里面的選項將影響整個工程的建立和調(diào)試過程,因此很重要,雖然在一般情況下,其中的大多數(shù)選項都不用改變,但了解一下它們的含義能夠消除我們心中存在的神秘感,并加深我們對VC工程的理解。在這個對話框中,左上方的下拉列表框用于選擇一種工程配置,包括有Win32Debug、Win32Release和AllConfigurations(指前兩種配置一起),某些選項在不同的工程配置中有不同的缺省值。左邊的樹形視圖給出了當前工程所有的文件及分類情況。如果我們把工程“Schedule”置為高亮顯示,對話框的右邊就會出現(xiàn)總共十個選項卡,其中列出了與工程有關的各種選項,不少選項卡中有一個Reset按鈕,按下它后可以把選項卡內(nèi)的各項設置恢復到生成工程時的初始值。如果我們在樹形視圖中選擇一個文件類或一個文件,那么對話框右邊的選項卡會自動減少到一個或兩個,其中列出的都是與選中的文件類或文件有關的選項。下面我們就以Win32Debug為例來看看與工程有關的十個選項卡各自的功能與含義,與文件有關的選項卡則請大家自己琢磨一下。General這個選項卡比較簡單,從上向下的第一個選項用于更改使用MFC類庫的方式,大家是否還記得我們曾在AppWizard的第五步指定以DLL的方式來使用MFC類庫?但現(xiàn)在我們可以在兩種方式之間隨意進行切換。第二個選項用于指定在編譯連接過程中生成的中間文件和輸出文件的存放目錄,對于調(diào)試版本來說,缺省的目錄是工程下面的“Debug”子目錄。在General類別中,我們可以指定要調(diào)試的可執(zhí)行文件名,如果正在編寫的程序是一個DLL,那么應在此處指定一個用來調(diào)試該DLL的EXE文件。另外三個選項可以指定用于調(diào)試的工作目錄,開始調(diào)試時給程序傳送的命令行參數(shù),以及進行遠程調(diào)試時可執(zhí)行文件的路徑。把類別切換到AdditionalDLLs后,我們可以指定在開始調(diào)試時是否為一些額外的DLL裝載調(diào)試符號信息,只有裝載了符號信息后才能跟蹤進DLL。C/C++選項卡控制著VC6的編譯器,其中的選項比較多,也比較復雜,心鈴要重點介紹一下它。最下面有一個ProjectOptions編輯框,里面列出的各種命令開關將會在開始編譯時作為命令行參數(shù)傳送給VC6的編譯器,以便對編譯過程進行控制。這些命令開關會跟隨其它選項改變而改變,另外,如果我們知道某些命令開關,也可以直接在這個編輯框中輸入,開關所對應的選項會自動改變。在General類別中,Warninglevel用于指定編譯器顯示警告的級別,None表示不顯示任何警告,L1表示只顯示嚴重的警告,L2表示顯示比L1次嚴重的警告,L3表示顯示比L2次嚴重的警告,L4則表示顯示出所有的警告,包括那些安全忽略的警告,如果選中了Warningsaserrors,那么顯示的每一個警告都將會引起一個錯誤,這樣在編譯完畢后就無法啟動連接器來進行連接。C/C++語言的語法相當復雜和嚴格,盡管編輯器在產(chǎn)生了警告后并不會中斷工程的建立過程,但警告信息往往表示程序在某些地方存在著潛在的問題,所以心鈴建議大家今后把警告等級設置成L3,并盡量排除掉編譯過程中產(chǎn)生的警告。Optimizations用于設置代碼優(yōu)化方式,優(yōu)化的目的主要有提高運行速度和減小程序體積兩種,但有時候這兩種目的是相互矛盾的。Debuginfo用于指定編譯器產(chǎn)生的調(diào)試信息的類型,第一講中心鈴曾介紹過VC6支持即編即調(diào)功能,為了使用這一項功能,必須在這里選擇生成“ProgramDatabaseforEditandContinue”類型的調(diào)試信息,而不能生成與老版本編譯器兼容的調(diào)試信息。Preprocessordefinitions是一些預先定義的宏名,MFC類庫和Windows的頭文件中大量使用了這些宏來設置條件編譯。2.3上位機任務本設計中上位機的任務是利用VC++6.0軟件,編寫出基于對話框的應該用程序,該對話框中包括“啟動,停止,正轉(zhuǎn),反轉(zhuǎn),加速,減速”六個按鈕,一個“靜態(tài)文本框”,一個“下拉組合框”和一個“MSComm控件”。要想利用該對話框的按鈕向單片機發(fā)送指令從而間接控制步進電機轉(zhuǎn)動,必須利用VC++提供的MSComm控件。上位機和下位機的約定是:01H代表啟動,02H代表停止,03H代表正轉(zhuǎn),04H代表反轉(zhuǎn),05H代表加速,06H代表減速。當操作人員按了六個按鈕中的任何一個按鈕時,上位機應該應用MSComm控件的功能把相應的指令代號準確的傳送給單片機。上位機不直接對計算機的硬件進行操作,而是利用VC++6.0來把串口當做文件來處理。本設計要達到的目的是,當按下相應按鈕時,計算機把相應指令代號傳送給單片機,單片機根據(jù)指令代號跳向單片機內(nèi)的相應程序。由于轉(zhuǎn)動完全受上位機控制,單片機內(nèi)沒有改變電機運行狀態(tài)的程序代碼所以上位機必須能夠?qū)崿F(xiàn)準確快速的把指令代碼傳給單片機。總之上位機要實現(xiàn)一個人機互動的界面,并具有實際功能。第3章系統(tǒng)硬件設計步進電機是數(shù)字控制電機,它將脈沖信號轉(zhuǎn)變成角位移,即給一個脈沖信號,步進電機就轉(zhuǎn)動一個角度,因此非常適合于單片機控制。步進電機可分為反應式步進電機(簡稱VR)、永磁式步進電機(簡稱PM)和混合式步進電機(簡稱HB)。步進電機區(qū)別于其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉(zhuǎn)動角度由輸入脈沖數(shù)決定,而電機的轉(zhuǎn)速由脈沖信號頻率決定。步進電機的驅(qū)動電路根據(jù)控制信號工作,控制信號由單片機產(chǎn)生。其基本原理作用如下:(1)控制換相順序通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相圖3-1AT89C51的引腳圖通電順序為A-B-C-D,通電控制脈沖必須嚴格按照這一順序分別控制A,B,C,D相的通斷。(2)控制步進電機的轉(zhuǎn)向如果給定工作方式正序換相通電,步進電機正轉(zhuǎn),如果按反序通電換相,則電機就反轉(zhuǎn)。(3)控制步進電機的速度如果給步進電機發(fā)一個控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個脈沖,它會再轉(zhuǎn)一步。兩個脈沖的間隔越短,步進電機就轉(zhuǎn)得越快。調(diào)整單片機發(fā)出的脈沖頻率,就可以對步進電機進行調(diào)速。3.1單片機的選擇MCS-51是標準的40腳雙列直插式集成電路芯片,引腳排列請參見圖3-1VCC:電源電壓;GND:地;P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫1可作為高阻抗輸入端用。P1口:P1口是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫1,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。0作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流。P2口:P2口是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯們電路。對端口寫1,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流。P3口:P3口是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P3的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯們電路。對端口寫1,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉底時會輸出一個電流。P3口除了作為一般的I/O口線外,更重要的用途是他的第二個功能,如表3-1所示:表3-1P3口特殊功能端口引腳功能特性P3.0RXD(串行口輸入)P3.1TXD(并行口輸入)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(定時計數(shù)外部輸入0)P3.5T1(定時計數(shù)外部輸入0)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)P3口還接收一些用于FLASH閃速存儲器編程和程序效驗的控制信號。RST:復位輸入。其引腳一旦變成兩個機器周期以上的高電平,所有的I/O口都將復位到1狀態(tài),當振蕩器正在工作時,持續(xù)兩個機器周期以上高電平便可完成復位,每個機器周期為12個振蕩時鐘周期。EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器(0000H—FFFFH),EA端必須保持低電平接地,需注意的是:如果加密位LB1被編程,復位是內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源VPP,當然這必須是該器件是使用12V編程電壓VPP。XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器輸出端。AT89C51中有一個用于構成內(nèi)部振蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋器件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器,振蕩電路參見圖3-2。外接石英晶體或陶瓷振蕩器及電容C1,C2接在放大器的反饋回路中構成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低,振蕩器工作的穩(wěn)定性,起振得難易程度及溫度穩(wěn)定性,如果使用石英晶體,推薦電容使用30PF±10PF,而如使用陶瓷振蕩器建議選擇40PF±10PF。圖3-2時鐘振蕩電路3.1基于L297/298驅(qū)動芯片的兩相雙極性混合式步進電機驅(qū)動器,采用恒流斬波

圖:L297/298驅(qū)動器方式驅(qū)動,每相電流可達2A。其中L297是步進電機控制器,適用于雙極性兩相步進電機或單極性四相步進電機的控制。用L297輸出信號可控制L298雙橋驅(qū)動集成電路,用來驅(qū)動電

壓最高為46V,總電流為4A以下的步進電機。L297也可用來控制由達林頓管組成的分立電路,以驅(qū)動更高電壓,更大電流的步進電機。L297只需要時鐘、方向和模式輸入信號,相位由內(nèi)部產(chǎn)生,從而減輕了微處理器和程序設計的負擔。L297采用固定斬波頻率的PWM恒流斬波方式工作。L297主要由譯碼器,兩個固定斬波頻率的PWM恒流斬波器以及輸出控制邏輯組成[2]。L298是用來驅(qū)動步進電機的集成電路,采用雙全橋接方式驅(qū)動,由于是雙極性驅(qū)動,步進電機的定子勵磁繞組線圈可以完全利用,使步進電機達到最佳的驅(qū)動?;贚297/298驅(qū)動器的混合式步進電機有三種不同的工作模式:即半步模式,見圖3-3,整步兩相勵磁模式,見圖3-4整步一項勵磁模式,見圖3-5。步進電機工作于半步模式時,其內(nèi)部定子繞組的勵磁是一相與兩相相間的,此時步進電機每接受一個脈沖,只轉(zhuǎn)過半個步距角。步進電機工作于半步模式時,步進電機所獲得的轉(zhuǎn)距較常規(guī)值偏小。步進電機工作于整步一相勵磁模式時,其內(nèi)部定子繞組的勵磁在任何一個時刻都是一相的,此時步進電機每接受一個脈沖,轉(zhuǎn)過一個步距角。步進電機工作于整步一相勵磁模式時,步進電機獲得常規(guī)轉(zhuǎn)距。步進電機工作于整步兩相勵磁模式時,其內(nèi)部定子繞組的勵磁在任何一個時刻都是兩相的,此時步進電機每接受一個脈沖,轉(zhuǎn)過一個步距角。步進電機工作于整步兩相勵磁模式時,步進電機獲得的轉(zhuǎn)距相對前兩種而言是最大的。L297的核心是其內(nèi)部的譯碼器,通過譯碼器L297產(chǎn)生三種相序信號,以對應三種不同的工作模式。譯碼器受L297的方向輸入引腳信號和半步方式/整步方式輸入引腳信號所控制。譯碼器內(nèi)部是一個3BIT的計數(shù)器,加上一些組合邏輯,產(chǎn)生每周期8步的格雷碼時序信號(見圖3-6即半步模式的時序信號,此時L297的輸入引腳信號取高電平。若引腳取低電平,則得到整步工作模式。如果引腳是在譯碼器的八步格雷碼時序信號的奇數(shù)狀態(tài)位時取圖3-3和圖3-4低電平的,則得到整步兩相勵磁模式;如果引腳是在譯碼器的八步格雷碼時序信號的偶數(shù)狀態(tài)位時取低電平的,則得到整步一相勵磁模式。圖3-5和圖3-63.1步進電機可以對旋轉(zhuǎn)角度和轉(zhuǎn)動速度進行高精度控制。步進電機作為控制行元件,是機電一體化的關鍵產(chǎn)品之一,廣泛應用在各種自動化控制系統(tǒng)和精密等領域。隨著微電子和計算機技術的發(fā)展,步進電機的需求量與日俱增,在各個國民經(jīng)濟領域都有應用。步進電機和普通電動機不同之處是步進電機接受脈沖信號的控制?,F(xiàn)在比較常用的步進電機包括反應式步進電機、永磁式步進電機、混合式步進電機和單相式步進電機等。其中反應式步進電機的轉(zhuǎn)子磁路由軟磁材料制成,定子上有多相勵磁繞組,利用磁導的變化產(chǎn)生轉(zhuǎn)矩?,F(xiàn)階段,反應式步進電機獲得最多的應用。步進電機和普通電機的區(qū)別主要在于其脈沖驅(qū)動的形式,是這個特點,步進電機可以和現(xiàn)代的數(shù)字控制技術相結合。不過步進電機在控制的精度度變化范圍、低速性能方面都不如傳統(tǒng)的閉環(huán)控制的直流伺服電動機。在精度不是需要特別高的場合就可以使用步進電機,步進電機可以發(fā)揮其結簡單、可靠性高和成本低的特點。使用恰當?shù)臅r候,甚至可以和直流伺服電動機性能相媲美。每當步進電機被激勵一次,它的軸就轉(zhuǎn)動一個精確的角度。一般按國際標準的話,可分為大角度步進器和小角度步進器兩大類。大角度步進器每步移動7.5。、15。、45。和90o;小角度步進器的標準步幅為1.80和5。。這種不連續(xù)的步進器輸出方式的優(yōu)點是,只要算一算計算機驅(qū)動電機多少步,便可知道電機軸的具體位置即實際控制設備的位置就可以知道。與步進電機的接口是比較復雜的問題,各種接口在不同的設備中有一些不同的處理方式,但基本上大同小異,但有些接口可能比我們這里分析輸液泵接口的情況有差別,它可能比這里出現(xiàn)的情況要復雜的多,應該說接口電路在實際應用中有著重要的價值。步進電機有4個組。1、2、3和4,按適當順序加上脈沖電流,電機就能步進。有如下三種順序:(1)低功耗順序;(2)正常順序;(3)半步順序。低功耗順序是把電流脈沖送到繞組1,然后是繞組2,繞組3,繞組4,再返回到繞組1,如此循環(huán),在同一時刻不會有兩個繞組接通,這時電機將步進一步。正常順序下列順序一次激勵兩個繞組1和2。2和3,3和4,4和1等等。這樣做的結果是運轉(zhuǎn)平穩(wěn),但需要較大的功率。半步方式允許在每個步之間走半個角步。其順序號:1和2;2;2和3;3;3和4;4;4和1;1。電機繞組的電阻相當?shù)?,其典型值?.2Q姆,因此需要電流源來激勵,同時還由于繞組的電感很大,需要特殊的設計方法,以防止因電感反沖而損壞開關管或濾波電容器。如果注意到真值表中由兩個0和兩個1組成的半字節(jié)是如何循環(huán)移位的,則程序就變得十分簡單了,我們所應當做的就是以8位環(huán)形方式使數(shù)值00110011循環(huán)移位,在每次循環(huán)到PIA之前便輸出。下面舉例說明。步進電機2個相鄰磁極之間的夾角為60°。線圈繞過相對的2個磁極,構成一相(A-A′,B-B′,C-C′)。磁極上有5個均勻分布的矩形小齒,轉(zhuǎn)子上沒有繞組,而有40個小齒均勻分布在其圓周上,且相鄰2個齒之間的夾角為9°。當某組繞組通電時,相應的2個磁極就分別形成N-S極,產(chǎn)生磁場,并與轉(zhuǎn)子形成磁路。如果這時定子的小齒與轉(zhuǎn)子沒有對齊,則在磁場的作用下轉(zhuǎn)子將轉(zhuǎn)動一定的角度,使轉(zhuǎn)子齒與定子齒對齊,從而使步進電機向前“走”一步。211步進電機的控制方式如果通過單片機按順序給繞組施加有序的脈沖電流,就可以控制電機的轉(zhuǎn)動,從而實現(xiàn)數(shù)字→角度的轉(zhuǎn)換。轉(zhuǎn)動的角度大小與施加的脈沖數(shù)成正比,轉(zhuǎn)動的速度與脈沖頻率成正比,而轉(zhuǎn)動方向則與脈沖的順序有關。以三相步進電機為例,電流脈沖的施加共有3種方式。(1)單相三拍方式(按單相繞組施加電流脈沖):→A→B→C→正轉(zhuǎn);→A→C→B→反轉(zhuǎn)。(2)雙相三拍方式(按雙相繞組施加電流脈沖):→AB→BC→CA→正轉(zhuǎn);→AC→CB→AB→反轉(zhuǎn)。(3)三相六拍方式(單相繞組和雙相繞組交替施加電流脈沖):→A→AB→B→BC→C→CA→正轉(zhuǎn);→A→AC→C→CB→B→BA→反轉(zhuǎn)。單相三拍方式的每一拍步進角為3°,三相六拍的步進角則為1.5°,因此,在三相六拍下,步進電機的運行反轉(zhuǎn)平穩(wěn)柔和,但在同樣的運行角度與速度下,三相六拍驅(qū)動脈沖的頻率需提高1倍,對驅(qū)動開關管的開關特性要求較高。步進電機的驅(qū)動方式如下:步進電機常用的驅(qū)動方式是全電壓驅(qū)動,即在電機移步與鎖步時都加載額定電壓。為了防止電機過流及改善驅(qū)動特性,需加限流電阻。由于步進電機鎖步時,限流電阻要消耗掉大量的功率,故限流電阻要有較大的功率容量,并且開關管也要有較高的負載能力。步進電機的另一種驅(qū)動方式是高低壓驅(qū)動,即在電機移步時,加額定或超過額定值的電壓,以便在較大的電流驅(qū)動下,使電機快速移步;而在鎖步時,則加低于額定值的電壓,只讓電機繞組流過鎖步所需的電流值。這樣,既可以減少限流電阻的功率消耗,又可以提高電機的運行速度,但這種驅(qū)動方式的電路要復雜一些。驅(qū)動脈沖的分配可以使用硬件方法,即用脈沖分配器實現(xiàn)。現(xiàn)在,脈沖分配器已經(jīng)標準化、芯片化,市場上可以買到。但硬件方法結構復雜,成本也較高。步進電機控制(包括控制脈沖的產(chǎn)生和分配)也可以使用軟件方法,即用單片機實現(xiàn)。L297產(chǎn)生四相驅(qū)動信號,用以控制雙極性兩相步進電機或四相單極性步進電機,可以采用半步、兩相勵磁、單相勵磁三種工作方式控制步進電機,并且控制電機的片內(nèi)PWM斬波電路允許三種工作方式的切換。使用L297突出的特點是外部只需時鐘、方向和工作方式三個輸入信號,同時L297自動產(chǎn)生電機勵磁相序減輕了微處理器控制及編程的負擔。L297具有DIP20和SO20兩種封裝形式,可用于控制集成橋式驅(qū)動電路或分立元件組成的驅(qū)動電路。因此本設計選用雙極性二項步進電機35BY48S03。SGS公司的L297單片步進電機控制集成電路適用于雙極性兩相步進電機或四相單極性步進電機的控制,與兩片H橋式驅(qū)動芯片L298組合,組成完整的步進電機固定斬波頻率的PWM恒流斬波驅(qū)動器。L297產(chǎn)生四相驅(qū)動信號,用以控制雙極性兩相步進電機或四相單極性步進電機,可以采用半步、兩相勵磁、單相勵磁三種工作方式控制步進電機,并且控制電機的片內(nèi)PWM斬波電路允許三種工作方式的切換。使用L297突出的特點是外部只需時鐘、方向和工作方式三個輸入信號,同時L297自動產(chǎn)生電機勵磁相序減輕了微處理器控制及編程的負擔。L297具有DIP20和SO20兩種封裝形式,可用于控制集成橋式驅(qū)動電路或分立元件組成的驅(qū)動電路。L297主要由譯碼器、兩個固定斬波頻率的PWM恒流斬波器以及輸出邏輯控制組成。L297另一重要組成是PWM斬波器控制相繞組電流,實現(xiàn)恒流斬波控制,以獲得良好的轉(zhuǎn)矩-頻率特性。每個斬波器由一個比較器、一個RS觸發(fā)器以及外接采樣電阻組成內(nèi)部設有一公共振蕩器,向兩個斬波器提供觸發(fā)脈沖信號,脈沖頻率是由外接的RC網(wǎng)絡決定,當時振蕩器脈沖使觸發(fā)器置“1”,電機繞組相電流上升,采樣電阻RS的電壓上升到基準電壓Vref時,比較器翻轉(zhuǎn),使觸發(fā)器復位,功率晶體管關斷,電流下降,等待下一個振蕩器脈沖的到來。這樣,觸發(fā)器輸出是恒頻的PWM信號,調(diào)制L297的輸出信號,繞組相電流峰值由Vref決定。圖3-7L297和L298的步進電機驅(qū)動電路圖SGS公司的L298芯片是一種高電壓、大電流雙H橋功率集成電路,可用來驅(qū)動繼電器、線圈、直流電機和步進電機等感性負載。它具有兩抑制輸入來使器件不受輸入信號影響。每橋的三極管的射級是連接在一起的,相應的外接線端可用來連接外設傳感電阻。可安置另一輸入電源,使邏輯能在低電壓下工作。采用L297和L298實現(xiàn)的步進電機驅(qū)動電路見圖3-7,該電路為固定斬波頻率的PWM恒流斬波驅(qū)動方式,適用兩相雙極性步進電機,最高電壓46V,每相電流可達2A。用兩片L298和一片297配合使用,可驅(qū)動更大功率的兩相步進電機。3.2PC串口通信模塊硬件設計隨著計算機應用技術和微機網(wǎng)絡技術的發(fā)展,計算機與其外部設備之間的數(shù)據(jù)通信越發(fā)顯得重要,在很多實際應用中通常用單片機來采集數(shù)據(jù),用微機來處理得到的數(shù)據(jù)。數(shù)據(jù)通信方式可分為兩種:并行傳送和串行傳送。并行傳送速度快、效率高,但傳送可靠性差,不適合遠距離傳送;串行傳送數(shù)據(jù)按位順序移動,速度較慢、效率偏低,但傳送可靠,可以節(jié)省通信子系統(tǒng)的硬件投資。本文給出了MCS251單片機與微機的串行通信方法,它具有使用方便、數(shù)據(jù)傳輸可靠、適用于遠距離通信的特點,在工業(yè)監(jiān)控、數(shù)據(jù)采集、檢測等系統(tǒng)中有著廣泛的應用。通信協(xié)議是指通信雙方共同遵守的交換數(shù)據(jù)的格式和意義的一組規(guī)則。計算機網(wǎng)絡的協(xié)議包括了從物理線路的電氣特性到各計算機的進程之間共享資源的全面內(nèi)容。我們的通信協(xié)議只需制訂信息在線路中的傳輸規(guī)則,它涉及信息格式、順序控制、流量控制、信息的成幀與拆幀、差錯控制及傳輸過程中的管理等方面。為了保證通信的正常進行,必須將通信協(xié)議規(guī)定的盡量詳盡和周到,考慮到可能發(fā)生的各種情況。為了便于理解,通信協(xié)議的功能可以歸納如下:1信號的傳送與接收應規(guī)定信息傳送的格式、接口標準以及啟動控制、結束控制、超時控制等。2差錯控制使構成傳輸數(shù)據(jù)的源碼或源碼組具有一定的邏輯性,接收端根據(jù)收到的數(shù)據(jù)進行相應的檢測和糾錯操作。3順序控制對發(fā)送方的數(shù)據(jù)進行編號,以免重復接收或丟失。4透明性指對用戶終端所使用的數(shù)據(jù)代碼無任何約束性的限制,即對用戶使用的代碼保證編碼的獨立性與傳輸?shù)耐该餍浴?鏈路控制與管理在全雙工、半雙工等多種線路中,確定哪個站發(fā)送、哪個站接收,主要用于分布式控制系統(tǒng)中。6流量控制為保證數(shù)據(jù)接收方與發(fā)送方在速率上的匹配而采用的方法。由于串行通信是計算機運行時進程的一個組成部分,其協(xié)議的設計應考慮能較為方便地與數(shù)據(jù)存儲、輸入輸出等操作協(xié)調(diào)工作。本文采用基于幀的協(xié)議設計思想,即在向RS-232串行口發(fā)送命令信號、應答信號及數(shù)據(jù)信號時,信號是一幀一幀發(fā)送的。通信鏈路中所有的內(nèi)容都將包含在這樣的一個幀中,無論它是控制命令還是傳送的數(shù)據(jù)。為了使數(shù)據(jù)可靠的傳輸,將每一幀信號唯一對應一個命令幀,具體如下:1在PC讀數(shù)據(jù)時,遵循“讀命令--等數(shù)據(jù)--報告”,即PC下達一條命令,等待接收數(shù)據(jù),再根據(jù)所接收數(shù)據(jù)的正誤向應用程序報告此命令的執(zhí)行情況。2在PC寫數(shù)據(jù)時,遵循“寫命令--等回應--報告”,即PC’下達一條寫命令(此時所要寫的數(shù)據(jù)含于此命令中),等待單片機發(fā)來的“已正確接收”的回應信號,并向應用程序報告此命令執(zhí)行完畢。3如果在傳輸?shù)倪^程中,PC或MCU所接收任何一幀信號出現(xiàn)錯誤時,均會向?qū)Ψ桨l(fā)送重發(fā)此幀信號的請求,連續(xù)三次失敗,則退出通信。一般說來,計算機都有一個或多個串行端口,它們依次為Com1,Com2,?這些串口還提供了外部設備與PC進行數(shù)據(jù)傳輸和通信的通道,這些串口在CPU和外設之間充當解釋器的角色。當字符數(shù)據(jù)從CPU發(fā)送給外設時,這些字符數(shù)據(jù)將被轉(zhuǎn)換成串行比特流數(shù)據(jù);當接收數(shù)據(jù)時,比特流數(shù)據(jù)被轉(zhuǎn)換為字符數(shù)據(jù)傳遞給CPU。本文選用的是微機的Com1。單片機串口輸入輸出電平為TTL電平,而計算機串口符合RS232C串行總線標準,采用的是負邏輯,邏輯“1”為-5圖3-8串行通信硬件電路V~-15V,邏輯“0”為+5V~+15V。這兩種電平是不一樣的,因此不能直接連在一起。在本設計中,通過電平轉(zhuǎn)換芯片MAX232來轉(zhuǎn)換這兩種電平。電路原理圖如圖3-8所示。PC串口計算機串行接口采用RS232標準:規(guī)定邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,常用的信號有8個(接口為DB9M插座時,引腳號如表3-2所示),其中RXD、TXD為收、發(fā)數(shù)據(jù),可與RS232串行口設備直接進行通訊,RTS、DTR、CD、DSR、CTS、BELL為控制與檢測MODEM的信號,在通訊過程中起聯(lián)絡與控制作用。數(shù)據(jù)格式有5、6、7、8位幾種,1位起始位(邏輯0),1、1.5或2位停止位(邏輯1),可以選擇奇校驗、偶校驗和無校驗,常用波特率為2400、4800、7200、9600bps等。串行口編程方法主要有三種:硬件編程法、文件操作法、串口控件法。表3-2DB9常用信號引腳針號功能說明縮寫1數(shù)據(jù)載波檢測DCD2接受數(shù)據(jù)RXD3發(fā)送數(shù)據(jù)TXD4數(shù)據(jù)終端準備DTR5信號地GND6數(shù)據(jù)設備準備好DSR7請求發(fā)送RTS8清除發(fā)送CTS9振鈴指示DHL隨著單片機和微機技術的不斷發(fā)展,特別是網(wǎng)絡技術在測控領域的廣泛應用,由PC機和多臺單片機構成的多機網(wǎng)絡測控系統(tǒng)已成為單片機技術發(fā)展的一個方向。它結合了單片機在實時數(shù)據(jù)采集和微機對圖形處理、顯示的優(yōu)點。同時,windows環(huán)境下后臺微機在數(shù)據(jù)庫管理上具有明顯的優(yōu)勢。二者結合,使得單片機的應用已不僅僅局限于傳統(tǒng)意義上的自動監(jiān)測或控制,而形成了以網(wǎng)絡為核心的分布式多點系統(tǒng)發(fā)展的趨勢。單片機和PC機的串行通信一般采用RS-232、RS-422或RS-485總線標準接口。本文針對PC機常用的RS-232方式,圖3-9計算機與MAX232接口電路主要探討通過VB610建立界面,采用RS-232接口與單片機通信的方法。RS-232是早期為公用電話網(wǎng)絡數(shù)據(jù)通信而制定的標準,其邏輯電平與TTL\CMOS幾乎完全不同。邏輯“0”規(guī)定為+3~+15V之間,邏輯“1”,規(guī)定為-3~-15V之間。由于RS-232發(fā)送和接收之間有公共地,傳輸采用非平衡模式,因此,共模噪聲會耦合到信號系統(tǒng)中,其標準建議的最大通信距離為15米。PC機COM1與COM2口的9針串口的引腳功能如表2。RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進行電平轉(zhuǎn)換,實現(xiàn)邏輯電平轉(zhuǎn)換。MCl488和MCl489芯片為RS-232至TTL邏輯電平。上下位機通信電路設計計算機通過MAX232和單片機的硬件電路如圖3-9。3.3小結本文設計出的步進電機控制系統(tǒng),可以實現(xiàn)對步進電機的基本控制及運行狀態(tài)的實時顯示。該系統(tǒng)實用性強,操作方便,經(jīng)測試取得了良好效果。經(jīng)過一定的技術改進后,可以應用于包裝機械的物料計量、包裝膜供送、橫封等過程中,精確控制執(zhí)行機構的運行速度和運行位置。利用步進電機替代傳統(tǒng)的機械或其它方式,不僅能使包裝機械結構變得簡單、調(diào)節(jié)方便、可靠性增加,而且精度會得到很大提高。在Windows環(huán)境下,一般不允許用戶直接對各類接口進行操作,因此如何在Windows環(huán)境下開發(fā)微機的低層資源一針對控制串行口的各類寄存器已成為當今工業(yè)控制軟件的一大熱點。WindowsAPI提供了一系列標準函數(shù),可以支持Windows系統(tǒng)下的串行通信編程。但由于Windows本身的復雜性,對這些標準函數(shù)及其參數(shù)的理解和應用也是比較復雜的。VisualC++6.0提供了一個ActiveX控件MicrosoftCommControl,簡稱M~.omm控件,可以較為方便地進行計算機串口的管理與控制。步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。雖然步進電機已被廣泛地應用,但步進電機并不能象普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業(yè)知識。本設計通過采用MAX232把計算機的字符命令轉(zhuǎn)換為單片機的脈沖序列,實現(xiàn)了電平轉(zhuǎn)換和合杰斯命令的作用。采用L297和L298聯(lián)合驅(qū)動步進電機的硬件電路,L297是步進電機的控制器,采用該控制器可以很方便的實現(xiàn)步進電機的正轉(zhuǎn)反轉(zhuǎn)不同工作狀態(tài)下的轉(zhuǎn)換,大大減小了程序設計的難度。而L298是步進電機的驅(qū)動器件,L298可是輸出46V電壓單項2A電流,實現(xiàn)步進電機最后的運轉(zhuǎn)。第4章上位機軟件設計步進電機是將電脈沖信號變換成相應的角位移或直線位移的機電執(zhí)行元件。因為步進電機具有快速起停、精確步進以及能直接接收數(shù)字量的特點,所以在工業(yè)系統(tǒng)中廣泛應用。本章主要介紹一種基于微機和單片機的步進電機控制系統(tǒng)。本系統(tǒng)主要由上位PC機,MCS-51單片機,驅(qū)動電路和步進電機組成。其中,上位機是PC機,可由VC++實現(xiàn)用戶界面,并將用戶輸入的控制命令通過串行口輸出到下位的MCS-51單片機,單片機按照上位PC機的命令產(chǎn)生相應的控制信號,通過驅(qū)動電路來驅(qū)動步進電機。在本系統(tǒng)中,上位機與下位機之間采用串行通信方式。由于PC機串口電平邏輯是RS-232C電平,而MCS-51串口電平邏輯是TTL電平,因此二者不能直接相連接,故需要進行電平轉(zhuǎn)換。在本系統(tǒng)中,我們選用了MAX232。軟件部分分為上位機程序和單片機程序兩部分。其中上位機程序主要是使用VC++語言實現(xiàn)了用戶界面和串口通信功能;單片機程序除了串口編程,更重要的是產(chǎn)生步進電機控制信號,使步進電機實現(xiàn)正反轉(zhuǎn)和加減速控制。軟件部分分為上位機程序和單片機程序兩部分。圖4-1創(chuàng)建工程4.1上位機界面實現(xiàn)步驟⑴,創(chuàng)建工程:在IDE中依次選擇“File”→“New”菜單命令,在New”菜單中單擊“Project”選項卡,在列表中選擇“MFCAppWizard(.exe)”選項,在“Projectname”文本框中輸入“MSComm”,其他使用默認值,如圖4-1。圖4-2step1圖4-3控件對話框單擊“OK”按鈕,彈出“MFCAppWizard-Step1”對話框。在“MFCAppWizard-Step1”對話框中,選擇“Dialogbased”單選按鈕,其他默認值,單擊“Finish”按鈕,如圖4-2。在彈出的“NewProjectInformation”中,單擊“OK”按鈕,就以完成工程的創(chuàng)建。⑵,添加MSComm控件:依次單擊菜單欄的“Project”→“AddToProject”→“ComponentandControl”,彈出添加控件對話框,如圖4-3。然后打開“RegisteredActiveXControls”控件夾,選中“MicrosoftCommunicationsControl,,vison6.0”控件,如圖4-4,將其添加到工程中。圖4-4具體控件接著編輯對話框界面,刪除原有的靜態(tài)文本和“確認”“取消”按鈕,并為對話框添加六個“按鈕”控件,分別是“啟動,停止,正轉(zhuǎn),反轉(zhuǎn),加速,減速”,一個靜態(tài)文本框“選擇串口”。最后添加一個“下拉組合框”,用于選擇串口號。調(diào)整他們的大小和位置,使其美觀,如圖4-5。圖4-5界面圖⑶,修改控件屬性:添加完各個控件后我們將對各個空間的屬性進行修改,具體步驟如下。將鼠標光標移動到對話框中需要編輯的空間上,然后單擊鼠標右鍵打開彈出式菜單,選擇“Properities”屬性,打開各控件的屬性對話框,對控件的屬性進行如表4-1的修改:表4-1控件的屬性控件ID控件屬性MSComm控件IDC_MSCOMM默認啟動按鈕IDC_BUTTON1Caption:啟動停止按鈕IDC_BUTTON2Caption:停止正轉(zhuǎn)按鈕IDC_BUTTON3Caption:正轉(zhuǎn)反轉(zhuǎn)按鈕IDC_BUTTON4Caption:反轉(zhuǎn)加速按鈕IDC_BUTTON5Caption:加速減速按鈕IDC_BUTTON6Caption:減速選擇串口下拉列表IDC_COMBOLISTGroup:選中,Caption:時間如圖4-6為串行通信控件MSComm的屬性。圖4-6MSComm屬性對話框⑷,添加控制成員變量:選擇“View”→“ClassWizard”菜單項,在彈出的“MFCClassWizard”對話框中單擊“MemberVariables”選項卡,進入編輯對話框空間成員變量的界面。如圖4-7。圖4-7添加變量對話框這個界面用于設置為控件關聯(lián)變量,使得在程序中通過這些變量可以訪問空間的屬性。在“Project”列表欄中選擇“MSComm”,在“Classname”列表框中選擇“CMSCommDlg”,再在“ControlIDs”選項欄中選擇需要添加變量的ID,單擊“AddVariable”按鈕來添加變量,如圖4-7。需要添加的變量如表4-2所示。表4-2各控件ID及其對應變量ID變量屬性變量類型變量名IDC_MSCOMMContrlCMSCmmm_commIDC_BUTTON1無無無IDC_BUTTON1無無無IDC_BUTTON1無無無IDC_BUTTON1無無無IDC_BUTTON1無無無IDC_BUTTON1無無無IDC_COMBOLISTValueIntM_port完成變量添加的“MemberVariables”界面如圖4-8。圖4-8添加完變量后界面⑸,為控件添加響應函數(shù):添加完變量后,就應該對前面添加的每個控件設置一個響應的函數(shù)。在IDE主菜單中依次選擇“View”→“ClassWizard”,打開ClassWizard對話框,選擇“MemberMaps”選項卡,在“Project”下拉列表框中選擇“MSComm”,在“Classname”下拉列表框中選擇“CMSCommDlg”。在“ObjectIDs”下拉列表框中選擇要添加響應控件的ID,在Message項中選中需要添加的消息,通過時對話框的下部出現(xiàn)響應的提示。單擊“AddFunction…”按鈕,單擊“OK”按鈕就可以創(chuàng)建一個消息的處理函數(shù),如圖4-9。單擊“EditCode”按鈕退出“ClassWizard”對話框,并自動定位在添加的函數(shù)上。圖4-9添加函數(shù)界面⑹,添加代碼:在文件“MSCommDlg.h”的頭部加入語句#include“mscomm1.h”,然后為對話框類加入成員函數(shù)voidInitComm(),來出初始化MSComm控件,其各部分代碼見本章第二節(jié)。4.2串口是常用的計算機與外部串行設備之間的數(shù)據(jù)傳輸通道。由于串行通信方便易行,所以應用廣泛。依據(jù)不同的條件實現(xiàn)對串口的靈活編程控制是我們所需要的。Windows下串行通信與以往串行通信程序不同的是,Windows不提倡應用程序直接控制硬件,而是通過Windows操作系統(tǒng)提供的設備驅(qū)動程序來進行數(shù)據(jù)傳遞。串行口在Windows中是作為文件來進行處理的,而不是直接對端口進行操作,對于串行通信,Windows提供了相應的文件I/O函數(shù)與通信函數(shù)。通過了解這些函數(shù)的使用,可以編制出符合不同需要的通信程序。與通信設備相關的結構有COMMCONFIG、COMMPROP、COMMTIME2OUTS、COMSTAT、DCB、MODEMDEVCAPS、MODEMSETTINGS共7個,與通信有關的WindowsAPI函數(shù)共有26個。在很多情況下,遠程監(jiān)控和自動化領域系統(tǒng)常見的通信編程多為串口通信編程。計算機串口編程在通信軟件中有著十分廣泛的應用。在VisualC++、Ddphi、VisualRasis、TC、BC等開發(fā)工具之間,VisualC++由于功能強大和應用靈活,同時也得到Miscrosoft系統(tǒng)的最好支持,因此涉及硬件操作的通信編程,一般采用VisualC++。

在VC++中有兩種方法可以進行串口通訊。一種是直接用VC++訪問串口。另一種是利用Microsoft公司提供的ActiveX控件MicrosoftCommunicationsControl。本文將主要介紹第二種方法。利用ActiveX控件MicrosoftCommunicationsCon—trol訪問串口

ActiveX是Windows下進行應用程序開發(fā)的嶄新技術,它的核心內(nèi)容是組件對象模型CDM(ComponentObjectModel)。ActiveX控件包括一系列的屬性、方法和事件,使用ActiveX控件的應用程序和ActiveX控件之間的工作方式是客戶/服務器方式,即應用程序通過ActiveX控件提供的接口來訪問ActiveX控件的功能。

MicrosoftConununicationsControl(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅(qū)動(Event-driven)方法,一是查詢方法。

⑴事件驅(qū)動法

事件驅(qū)動通信是處理串行端口交互作用的一種非常有效的方法。在使用事件驅(qū)動法設計程序時,每當有新字符到達,或端口狀態(tài)改變,或發(fā)生錯誤時,MSComm控件的OnComm事件捕獲并處理這些通信事件。而應用程序在捕獲該事件后,通過檢查MSComm控件的CommEvent屬性可以獲知所發(fā)生的事件或錯誤,從而采取相應的操作。

⑵查詢法

這種方法適合于較小的應用程序。在這種情況下,每當應用程序執(zhí)行完某~串行口操作后,將不斷檢查MSComm控件的ConunEvent屬性以檢查執(zhí)行結果或者檢查某一事件是否發(fā)生。如果應用程序較小,并且是自成一體,這種方法可能是更可取的。

MSComm控件有許多重要的屬性,其中首要的幾個如下所示Settings以字符串的形式設置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。PortOpen設置并返回通信端口的狀態(tài),也可以打開和關閉端口。Input從接收緩沖區(qū)返回和刪除字符。Output向發(fā)送緩沖區(qū)寫一個字符串。InputLen設置每次Input讀入的字符個數(shù),缺省值為0,表明讀取接收緩沖區(qū)中的全部內(nèi)容。InBufferCount返回接收緩沖區(qū)中已接收到的字符數(shù),將其置為0可以清除接收緩沖區(qū)。InputMode定義Input屬性獲取數(shù)據(jù)的方式(為0:文本方式;為1:二進制方式)。RThreshold和SThreshold屬性,表示在OnComm事件發(fā)生之前,接收緩沖區(qū)或發(fā)送緩沖區(qū)中可以接收的字符數(shù)。編程實現(xiàn)打開VisualC+十6.0集成開發(fā)環(huán)境,創(chuàng)建一個基于對話框的MFC應用程序項目,命名為MyCOM,記住在設置項目選項時必須選上ActiveXControls,其他的按照缺省設置。完成這一步后,選擇菜單項Project/AddtoProiect/Compo—nentsandControls……,將彈出一個對話框以選擇系統(tǒng)中已有的組件(Components)和控件(Controls)。選擇RegisteredActiveXControls文件夾下的MicrosoftCommunicationsControl項并按下Insert按鈕,將MSComm控件支持加入到本項目中。這時將生成一個名為CMSComm的C++類,并且在對話框編輯器里的工具欄將出現(xiàn)MSComm控件圖標。CM一SComm類是由MSComm控件導出的一系列接口函數(shù)構成的,利用它將可以訪問MSComm控件的屬性(Property)和方法(Method)。

我們假設先利用計算機CDMl口上,那么打開資源編輯器,在程序主對話框(資源ID為IDD_MYCDM_DIALOG)上面放置一個MSComm控件,并用ClassWizard為該對話框類添加對應該控件的成員變量m_wndCOMl。我們假設外接口與計算機進行串行通信時采用7個數(shù)據(jù)位、1個停止位、偶校驗方式,并且波特率為2400/4800/9600可選,這里采用9600波特率,在對話框編輯器中設置MSComm控件的屬性。隨著單片機和微機技術的不斷發(fā)展,特別是網(wǎng)絡技術在測控領域的廣泛應用,由PC機和多臺單片機構成的多機網(wǎng)絡測控系統(tǒng)已成為單片機技術發(fā)展的一個方向。它結合了單片機在實時數(shù)據(jù)采集和微機對圖形處理、顯示的優(yōu)點。同時,windows環(huán)境下后臺微機在數(shù)據(jù)庫管理上具有明顯的優(yōu)勢。二者結合,使得單片機的應用已不僅僅局限于傳統(tǒng)意義上的自動監(jiān)測或控制,而形成了以網(wǎng)絡為核心的分布式多點系統(tǒng)發(fā)展的趨勢。單片機和PC機的串行通信一般采用RS-232、RS-422或RS-485總線標準接口。本文針對PC機常用的RS-232方式,主要探討通過VB610建立界面,采用RS-232接口與單片機通信的方法。RS-232是早期為公用電話網(wǎng)絡數(shù)據(jù)通信而制定的標準,其邏輯電平與TTL\CMOS幾乎完全不同。邏輯“0”規(guī)定為+3~+15V之間,邏輯“1”,規(guī)定為-3~-15V之間。由于RS-232發(fā)送和接收之間有公共地,傳輸采用非平衡模式,因此,共模噪聲會耦合到信號系統(tǒng)中,其標準建議的最大通信距離為15米。RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進行電平轉(zhuǎn)換,實現(xiàn)邏輯電平轉(zhuǎn)換。RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進行電平轉(zhuǎn)換,實現(xiàn)邏輯電平轉(zhuǎn)換MCl488和MCl489芯片為RS-232至TTL邏輯電平的轉(zhuǎn)換芯片,。該電路需要±12V電壓。圖中TXD、RXD分別接單片機的發(fā)送和接收端MCS-51系列單片機對串口的控制是通過對串行控制寄存器SCON和電源控制寄存器PCON的設置來實現(xiàn)的。SCON是一個可位尋址的特殊功能寄存器,通過設置SCON的SM0和SM1,可以使單片機有四種不同的工作方式。在用于和PC機實現(xiàn)串行通信時,一般設置為方式1或方式3,主要區(qū)別是方式1的數(shù)據(jù)格式為8位,只用于雙機通信;方式3的數(shù)據(jù)格式為9位,其中第9位SM2為多機通信位,可實現(xiàn)單片機的多點通信,即既適用于雙機通信,又適用于多機通信。電源控制寄存器PCON的SMOD為串行口波特率倍增控制位。單片機和PC機通信時,其通信速率由定時器T1或定時器T2產(chǎn)生(52系列),在T1工作在方式2時的通信速率的計算公式為:波特率=(2SMOD×Fosc)/(32×12×[256-TH1])。其中Fosc晶振頻率,為獲得準確的通信速率,F(xiàn)osc通常為11。0592MHZ。采用T1定時器通信的系統(tǒng),速率不可能過高,一般情況下最高為19200bit/s。如為了獲得更高的通信速率可利用52系列單片機的定時器T2,最高速率可達115200bit/s。單片機通信程序一般采用中斷方式與微機通信,微機為主控方。當單片機收到微機發(fā)送的地址信號時,便轉(zhuǎn)入中斷服務程序,向微機發(fā)送數(shù)據(jù)。其中斷服務于程序流程見圖2,該中斷服務于程序也適用于多機通信的系統(tǒng)。單片機的晶振為1110592MHZ,通信速率為9600bit/s,幀格式為N1811。打開VisualC+十6.0集成開發(fā)環(huán)境,創(chuàng)建一個基于對話框的MFC應用程序項目,命名為MyCOM,記住在設置項目選項時必須選上ActiveXControls,其他的按照缺省設置。完成這一步后,選擇菜單項Project/AddtoProiect/Compo—nentsandControls……,將彈出一個對話框以選擇系統(tǒng)中已有的組件(Components)和控件(Controls)。選擇RegisteredActiveXControls文件夾下的MicrosoftCommunicationsControl項并按下Insert按鈕,將MSComm控件支持加入到本項目中。這時將生成一個名為CMSComm的C++類,并且在對話框編輯器里的工具欄將出現(xiàn)MSComm控件圖標。CM一SComm類是由MSComm控件導出的一系列接口函數(shù)構成的,利用它將可以訪問MSComm控件的屬性(Property)和方法(Method)。我們假設先利用計算機CDMl口上,那么打開資源編輯器,在程序主對話框(資源ID為IDD_MYCDM_DIALOG)上面放置一個MSComm控件,并用ClassWizard為該對話框類添加對應該控件的成員變量m_wndCOMl。我們假設外接口與計算機進行串行通信時采用7個數(shù)據(jù)位、1個停止位、偶校驗方式,并且波特率為2400/4800/9600可選,這里采用9600波特率,在對話框編輯器中設置MSComm控件的屬性如表4-3所示:表4-3MSComm控件屬性屬性說明IDIDC_COM1(資源ID)CommPort1(COM1)Settings9600,e,7.,1(波特率9600,偶校驗,7個數(shù)據(jù)位,1個停止位)RThreshold0(不觸發(fā)接受換成區(qū)空事件)SThreshold1(沒接受到一個字符就觸發(fā)一個發(fā)送數(shù)據(jù)事件)Inputlen0(不從接受緩存區(qū)讀取數(shù)據(jù))4.開始開始串口初始化發(fā)送命令幀延時60s事件驅(qū)動?接收數(shù)據(jù)校驗和正確?結束NN圖4-10PC機通信流程圖本設計采用事件驅(qū)動方式來對pc機和單片機的通信進行編程,是實時性高,節(jié)省cpu資源,別且編程比才用查詢方式簡單。計算機和單片機通信時,上位機程序并沒有給出控制步進電機如何加速如何減速如何正轉(zhuǎn)和反轉(zhuǎn)的程序。而是通過和單片機來約定指令代碼:01h表示啟動,02h表示停止,03h表示正轉(zhuǎn),04h表示反轉(zhuǎn),05h表示加速,06h表示減速。單片機接受到指令代碼后,通過判斷來執(zhí)行相應的程序。上位機的程序主要包括串口初始化程序和傳送指令代碼程序兩部分。4.以下是串行口的初始化程序:m_ComPort.SetCommPort(1);//指定串口號

m_ComPort.SetInBufferSize(1024);//設置輸入緩沖區(qū)的

大小,Bytes

m_ComPort.SetOutBufferSize(512);//設置輸出緩沖區(qū)的

Bytes,

if(!m_ComPort.GetPortOpen());//打開串口

m_ComPort.SetPortOpen(TRUE);//打開通信口

m_ComPort.SetInputMode(1);//設置輸入方式為二進制

方式

m_ComPort.SetSettings(“9600,n,8,1”);//設置波特率等

參數(shù)

m_ComPort.SetRThreshold(1);//為1表示有一個字符引

發(fā)一個事件

m_ComPort.SetInputLen(0);以下是串行口傳輸指令代碼的程序:⑴“啟動按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”01h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑵“停止按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”02h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑶“正轉(zhuǎn)按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”03h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑷“反轉(zhuǎn)按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”04h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑸“加速按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”05h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑹“減速按鈕”代碼:VoidCMSCommDlg::onSend(){//TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);Buffer=”06h”;m_ComPort.SetOutput(Buffer);UpdateData(FALSE);}⑺“選擇串口下拉列表”代碼:VoidCMSCommDlg::onSend(){//TODO:Addyourcontrolnot

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論