懸掛運(yùn)動控制系統(tǒng)的設(shè)計(jì)
懸掛運(yùn)動控制系統(tǒng)的設(shè)計(jì),懸掛,吊掛,運(yùn)動,控制系統(tǒng),設(shè)計(jì)
47
- -
目 錄
第1章 緒論 1
1.1 課題來源 1
1.2 課題目的 1
1.3 課題意義 2
1.4 應(yīng)解決的主要問題 2
1.5 技術(shù)要求 2
第2章 方案論證 4
2.1 可行性研究 4
2.1.1 經(jīng)濟(jì)可行性研究 4
2.1.2 技術(shù)可行性研究 4
2.1.3 方案提出 5
2.1.4 方案分析 5
2.1.3 方案確定 7
2.2 需求分析 7
第3章 過程論述 8
3.1 概要設(shè)計(jì) 8
3.1.1 系統(tǒng)功能設(shè)計(jì) 8
3.1.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 8
3.2 詳細(xì)設(shè)計(jì) 9
3.2.1 硬件設(shè)計(jì) 9
3.2.2 軟件設(shè)計(jì) 19
第4章 系統(tǒng)測試 28
4.1 硬件測試 28
4.2 軟件測試 28
4.2.1 單元測試 28
4.2.2 功能測試 30
4.2.3 集成測試 31
4.2.4 測試結(jié)果 31
結(jié) 論 32
后 記 33
參考文獻(xiàn) 34
附 錄 35
第1章 緒論
1.1 課題來源
本畢業(yè)設(shè)計(jì)課題是屬于教師擬定性課題,主要是研究基于單片機(jī)的對步進(jìn)電機(jī)的有效控制。步進(jìn)電機(jī)是一種能將數(shù)字輸入脈沖轉(zhuǎn)換成旋轉(zhuǎn)或直線增量運(yùn)動的電磁執(zhí)行元件,每輸入一個脈沖電機(jī)轉(zhuǎn)軸步進(jìn)一個步距角增量。電機(jī)總的回轉(zhuǎn)角與輸入脈沖數(shù)成正比例,相應(yīng)的轉(zhuǎn)速取決于輸入脈沖頻率。?
???步進(jìn)電機(jī)是機(jī)電一體化產(chǎn)品中關(guān)鍵部件之一,通常被用作定位控制和定速控制。步進(jìn)電機(jī)慣量低、定位精度高、無累積誤差、控制簡單等特點(diǎn)。廣泛應(yīng)用于機(jī)電一體化產(chǎn)品中,如:數(shù)控機(jī)床、包裝機(jī)械、計(jì)算機(jī)外圍設(shè)備、復(fù)印機(jī)、傳真機(jī)等。?
???選擇步進(jìn)電機(jī)時,首先要保證步進(jìn)電機(jī)的輸出功率大于負(fù)載所需的功率。而在選用功率步進(jìn)電機(jī)時,首先要計(jì)算機(jī)械系統(tǒng)的負(fù)載轉(zhuǎn)矩,電機(jī)的矩頻特性能滿足機(jī)械負(fù)載并有一定的余量保證其運(yùn)行可靠。在實(shí)際工作過程中,各種頻率下的負(fù)載力矩必須在矩頻特性曲線的范圍內(nèi)。一般地說最大靜力矩Mjmax大的電機(jī),負(fù)載力矩大[1 ]。?
???選擇步進(jìn)電機(jī)時,應(yīng)使步距角和機(jī)械系統(tǒng)匹配,這樣可以得到機(jī)床所需的脈沖當(dāng)量。在機(jī)械傳動過程中為了使得有更小的脈沖當(dāng)量,一是可以改變絲桿的導(dǎo)程,二是可以通過步進(jìn)電機(jī)的細(xì)分驅(qū)動來完成。但細(xì)分只能改變其分辨率,不改變其精度。精度是由電機(jī)的固有特性所決定。?
???選擇功率步進(jìn)電機(jī)時,應(yīng)當(dāng)估算機(jī)械負(fù)載的負(fù)載慣量和機(jī)床要求的啟動頻率,使之與步進(jìn)電機(jī)的慣性頻率特性相匹配還有一定的余量,使之最高速連續(xù)工作頻率能滿足機(jī)床快速移動的需要。
基于單片機(jī)的懸掛運(yùn)動控制系統(tǒng),具有硬件電路結(jié)構(gòu)簡單,精確度高,抗干擾性強(qiáng)等優(yōu)點(diǎn)。
1.2 課題目的
培養(yǎng)綜合運(yùn)用四年大學(xué)所學(xué)知識去分析問題和解決實(shí)際問題的能力。在實(shí)踐中檢驗(yàn)所學(xué)知識,從而加強(qiáng)理論與實(shí)踐的相結(jié)合。 體驗(yàn)一個科研項(xiàng)目開發(fā)的全過程,學(xué)會單片機(jī)開發(fā)應(yīng)用方法,鍛煉應(yīng)用能力,動手能力。本課題設(shè)計(jì)是具有一定難度的基于單片機(jī)的應(yīng)用系統(tǒng)開發(fā)項(xiàng)目,培養(yǎng)學(xué)生創(chuàng)新精神和創(chuàng)新能力。通過這次畢業(yè)論文及設(shè)計(jì),檢驗(yàn)的綜合素質(zhì)和專業(yè)教育的培養(yǎng)效果,并且使學(xué)會閱讀、利用英文文獻(xiàn)資料,閱讀并翻譯外文資料的能力,學(xué)會設(shè)計(jì)報告和論文。
1.3 課題意義
隨著社會的發(fā)展、科技的進(jìn)步以及人們生活水平的逐步提高,各種方便于生活的自動控制系統(tǒng)開始進(jìn)入了人們的生活,以單片機(jī)為核心的自動門系統(tǒng)就是其中之一。同時也標(biāo)志了自動控制領(lǐng)域成為了數(shù)字化時代的一員[ 3]。它實(shí)用性強(qiáng),功能齊全,技術(shù)先進(jìn),使人們相信這是科技進(jìn)步的成果。它更讓人類懂得,數(shù)字時代的發(fā)展將改變?nèi)祟惖纳?,將加快科學(xué)技術(shù)的發(fā)展。
通過對“微機(jī)控制自動門系統(tǒng)”的研究和設(shè)計(jì),精心撰寫了微機(jī)控制自動門系統(tǒng)論文。本論文著重闡述了以單片機(jī)為主體,LED點(diǎn)陣顯示芯片及步進(jìn)電機(jī)為核心的系統(tǒng)。
本設(shè)計(jì)主要應(yīng)用SST89E58作為控制核心,LED點(diǎn)陣顯示芯片、步進(jìn)電機(jī)、壓力傳感器、電位器相結(jié)合的系統(tǒng)。充分發(fā)揮了單片機(jī)的性能。其優(yōu)點(diǎn)硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等特點(diǎn),具有一定的使用和參考價值。
1.4 應(yīng)解決的主要問題
在基于單片機(jī)的懸掛運(yùn)動控制系統(tǒng)中,主要分三個部分設(shè)計(jì),一個是輸入和鍵盤顯示模塊;另一個是步進(jìn)電機(jī)驅(qū)動模塊;第三個是最小系統(tǒng)和輸出模塊設(shè)計(jì)。主要解決的問題是:
1. 單片機(jī)最小系統(tǒng)硬件設(shè)計(jì);
2. 步進(jìn)電機(jī)驅(qū)動模塊設(shè)計(jì);
3. 輸出部分的軟硬件設(shè)計(jì);
4. 主程序設(shè)計(jì);
5. 繪圖板的設(shè)計(jì)。
1.5 技術(shù)要求
設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運(yùn)動。
在一白色底板上固定兩個滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運(yùn)動,運(yùn)動范圍為80cm×100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動時能在板上畫出運(yùn)動軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn), 示意圖如下。
第2章 方案論證
2.1 可行性研究
2.1.1 經(jīng)濟(jì)可行性研究
開發(fā)一個基于計(jì)算機(jī)的系統(tǒng)主要是為了獲取較好的經(jīng)濟(jì)效益和社會益。因此對待開發(fā)系統(tǒng)的經(jīng)濟(jì)可行性的論證就成為可行性研究的重要內(nèi)容。
1. 成本估算
(1) 購置并安裝軟硬件及有關(guān)設(shè)備費(fèi)用。
懸掛運(yùn)動控制系統(tǒng)主要由核心模塊、步進(jìn)電機(jī)驅(qū)動模塊、輸入模塊、顯示模塊、通訊模塊等組成。
核心模塊由SST98E58和啟動單片機(jī)所用到的電容、電阻和晶振組成。
步進(jìn)電機(jī)驅(qū)動模塊由1K×4、330歐的電阻,5610、5609、2N3055、MJ2955三極管,1N4007二極管等組成。
輸出模塊由一塊1602液晶顯示器構(gòu)成。
輸入模塊主要由16個OMRON按鈕組成。
通訊模塊由單片機(jī)的串行口和MAX232芯片組成。
以上元件共需大約489元。
(2) 系統(tǒng)開發(fā)費(fèi)用
懸掛運(yùn)動系統(tǒng)主要是的硬件和軟件主要是由我一個人完成,從設(shè)計(jì)到實(shí)現(xiàn)一共用了大約2個月的時間。費(fèi)用約為800元。
(3) 系統(tǒng)安裝、運(yùn)行和維護(hù)費(fèi)用。
本系統(tǒng)完全實(shí)現(xiàn)后由單片機(jī)控制步進(jìn)電機(jī)帶動重物繪圖。單片機(jī)需要5V的電源。維護(hù)的費(fèi)用主要是在測試時出現(xiàn)的錯誤需要更正時,替換的元器件大概10元左右。
(4) 人員培訓(xùn)費(fèi)用
懸掛運(yùn)動系統(tǒng)主要由專業(yè)人員操作,而且操作非常簡單,費(fèi)用幾乎沒有。
2. 成本-效益分析
社會效益:懸掛運(yùn)動系統(tǒng)是大學(xué)生電子競賽中的一個題目。本次畢業(yè)設(shè)計(jì),對本系統(tǒng)的功能進(jìn)行了進(jìn)一步的完善,特別是對步進(jìn)電機(jī)的驅(qū)動,從硬件到軟件都比較穩(wěn)定,如果在將來的的實(shí)驗(yàn)或競賽中還要用到單片機(jī)對步進(jìn)電機(jī)的控制,可以將本系統(tǒng)的硬件和軟件直接應(yīng)用或作為參考,所以,本系統(tǒng)對學(xué)校的教學(xué)和科研開發(fā)都有著深遠(yuǎn)的意義。
2.1.2 技術(shù)可行性研究
1. 風(fēng)險分析:懸掛運(yùn)動控制系統(tǒng)要完成的功能為設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運(yùn)動。在一白色底板上固定兩個滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運(yùn)動,運(yùn)動范圍為80cm×100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動時能在板上畫出運(yùn)動軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn)。
懸掛運(yùn)動控制系統(tǒng)硬件系統(tǒng)的路已經(jīng)設(shè)計(jì)好,并且可能很快的實(shí)現(xiàn)。相應(yīng)的軟件設(shè)計(jì)已經(jīng)有了三種備選方案。
2. 資源分析:所需的硬件器件可以很快購齊。編程語言(C51)已經(jīng)熟練掌握。
3. 技術(shù)分析:電機(jī)主要分為步進(jìn)電機(jī)和直流電機(jī),如果需要對電機(jī)進(jìn)行有效的精確的控制,選用步進(jìn)電機(jī)更為合理。步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角[2]。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單。
雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識。
單片機(jī)是微型機(jī)的主要分支,在結(jié)構(gòu)上的最大特點(diǎn)是把CPU、存儲器和定時器、多種輸入、輸出接口電路集成電路芯片上,將來的控制系統(tǒng)中,對于芯片的集成度要求更高。就其組成和功能而言,一塊單片機(jī)芯片就是一臺計(jì)算機(jī)。
本次設(shè)計(jì)主要分硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件系統(tǒng)包括開發(fā)平臺SST89E58單片機(jī)實(shí)驗(yàn)與開發(fā)集成系統(tǒng),將其作為硬件系統(tǒng)的檢測方式之一。硬件系統(tǒng)主要是由自己搭建電路,以此為基本方式來制作此項(xiàng)設(shè)計(jì)。單片機(jī)芯片采用SST89E58系列單片機(jī)中的。
軟件系統(tǒng)中主要是采用C51語言來進(jìn)行軟件方面的編程。具體的環(huán)境是應(yīng)用KeilC開發(fā)平臺,以此來進(jìn)行程序的編譯、通訊以及程序的調(diào)試。SST89E58單片機(jī)實(shí)驗(yàn)與開發(fā)集成系統(tǒng)軟件直觀且易于掌握?,F(xiàn)在比較普遍的單片機(jī)編程語言主要有兩種——匯編和C51編程語言,匯編語言的可讀性、可移植性差,沒有通用性,而C51更接近人類語言、直觀、更易于描述復(fù)雜算法,所以選用的是C51語言。
經(jīng)過以上分析,本系統(tǒng)可以按時完成任務(wù)。
2.1.3 方案提出
對本系統(tǒng)的軟件設(shè)計(jì)已經(jīng)準(zhǔn)備了閉環(huán)數(shù)字控制方式和開環(huán)數(shù)字控制方式兩套方案。
2.1.4 方案分析
方案1: 閉環(huán)數(shù)字控制方式
閉環(huán)數(shù)字控制方式,主要利用光電傳感器檢測法,結(jié)構(gòu)圖如圖2.1所示。首先單片機(jī)根據(jù)輸入的數(shù)據(jù)來計(jì)算物體要移動的距離并控制物體往坐標(biāo)的大概方向運(yùn)動,紅外發(fā)射接收器來探測懸掛物體移動了多少個1*1cm的小方格,并經(jīng)過A/D送給單片機(jī),單片機(jī)通過特定的算法計(jì)算出物體的坐標(biāo),并控制電機(jī)的轉(zhuǎn)動來控制物體往坐標(biāo)進(jìn)發(fā),在此過程中單片機(jī)不斷計(jì)算,不斷調(diào)整電機(jī)的轉(zhuǎn)速和方向使懸掛物體做一定路線的移動。但其缺點(diǎn)是,電路復(fù)雜,不但要求要有A/D電路,光電探測電路,還要其電路要做得十分精確。任何一個電路設(shè)計(jì)得不好,也會使物體運(yùn)動產(chǎn)生很大的偏差[5]。
微機(jī)
單片機(jī)
電機(jī)驅(qū)動
電機(jī)
D/A
光電傳感器
圖2.1 閉環(huán)數(shù)字控制
方案2: 開環(huán)數(shù)字控制方式
開環(huán)數(shù)字程序控制方式,即沒有反饋系統(tǒng),開環(huán)數(shù)字控制的結(jié)構(gòu)圖如圖2.2所示。由圖可看出,此種控制方式與上面的控制方式少了反饋電路[6]。單片機(jī)由輸入的數(shù)據(jù)來計(jì)算物體要移動的距離,直接發(fā)出控制脈沖來控制電機(jī)的轉(zhuǎn)動,進(jìn)而控制物體的運(yùn)動方向。由于少了反饋電路,系統(tǒng)的精度只與單片機(jī)所采用的算法準(zhǔn)確性有關(guān),此種方式電路結(jié)構(gòu)簡單,成本低且易于調(diào)整和維護(hù),是一種較理想的方式。
單片機(jī)
電機(jī)驅(qū)動
電機(jī)
微機(jī)
圖2.2 開環(huán)數(shù)字控制方式
2.1.3 方案確定
綜合上面所述,考慮時間和調(diào)試的復(fù)雜性,本設(shè)計(jì)采用方案2。
2.2 需求分析
當(dāng)今時代,是一個新技術(shù)層出不窮的時代。在電子領(lǐng)域,尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng)正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。大部分的高等工科學(xué)校都已開設(shè)了單片機(jī)課程。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動控制的核心就是單片機(jī)。目前,一個學(xué)習(xí)與應(yīng)用單片機(jī)的高潮正在工廠、學(xué)校及企事業(yè)單位大規(guī)模地興起。過去習(xí)慣于傳統(tǒng)電子領(lǐng)域的工程師、技術(shù)員正面臨著全新的挑戰(zhàn),如不能在較短時間內(nèi)學(xué)會單片機(jī),勢必會被時代所遺棄,只有勇敢地面對現(xiàn)實(shí),挑戰(zhàn)自我,加強(qiáng)學(xué)習(xí),爭取在較短的時間內(nèi)將單片機(jī)技術(shù)融會貫通,才能跟上時代的步伐。
步進(jìn)電機(jī)是一種離散運(yùn)動的裝置[4],它和現(xiàn)代數(shù)字控制技術(shù)有著緊密的本質(zhì)的聯(lián)系。步進(jìn)電機(jī)亦是一種將電脈沖轉(zhuǎn)化為角位移或直線位移的執(zhí)行機(jī)構(gòu),當(dāng)步進(jìn)電機(jī)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度(又稱之為步進(jìn)角),為此可以通過控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時可以通過脈沖頻率來控制步進(jìn)電機(jī)的轉(zhuǎn)動速度和加速度,從而達(dá)到調(diào)速的目的。這里給出懸掛運(yùn)動控制系統(tǒng)的要求:
基本要求:
1. 控制系統(tǒng)能夠通過鍵盤或其他方式任意設(shè)定坐標(biāo)點(diǎn)參數(shù);
2. 控制物體在80cm×100cm的范圍內(nèi)作自行設(shè)定的運(yùn)動,運(yùn)動軌跡長度不小于100cm,物體在運(yùn)動時能夠在板上畫出運(yùn)動軌跡,限300秒內(nèi)完成;
3. 控制物體作圓心可任意設(shè)定、直徑為50cm的圓周運(yùn)動,限300秒內(nèi)完成;
4. 物體從左下角坐標(biāo)原點(diǎn)出發(fā),在150秒內(nèi)到達(dá)設(shè)定的一個坐標(biāo)點(diǎn)(兩點(diǎn)間直線距離不小于40cm)。
第3章 過程論述
3.1 概要設(shè)計(jì)
3.1.1 系統(tǒng)功能設(shè)計(jì)
1. 硬件設(shè)計(jì)
總體結(jié)構(gòu)由AT89C52系列單片機(jī)等芯片構(gòu)成,大致分為以下幾個部分。
首先是最小系統(tǒng)部分。這個部分是以單片機(jī)為核心的一個單片機(jī)最小系統(tǒng)。根據(jù)設(shè)計(jì)之前對設(shè)計(jì)題目的分析,可大致的了解到系統(tǒng)所要求程序和所要存儲數(shù)據(jù)單元的大小,這里采用的單片機(jī)為SST系列單片機(jī)中的SST89E58。
其次是信號的采集部分和鍵盤輸入顯示部分設(shè)計(jì)。
然后是信號的輸出部分。根據(jù)鍵盤的輸入,選定一個工作模試,選定進(jìn)行繪制的圖形,再根據(jù)輸入的參數(shù),繪制出具體的圖形。
最后本設(shè)計(jì)是要實(shí)現(xiàn)電機(jī)的驅(qū)動部份,因?yàn)?,電機(jī)的驅(qū)動是用四項(xiàng)模擬信號輸入來控制的,所以要設(shè)計(jì)一個電機(jī)驅(qū)動電路,把單片機(jī)輸出的數(shù)字信號,轉(zhuǎn)換成電機(jī)能夠使用的模擬信號。
2. 軟件設(shè)計(jì)
在設(shè)計(jì)中,需要對鍵盤的輸入數(shù)據(jù)進(jìn)行采集,并將采集來的數(shù)據(jù)顯示在屏幕上,然后將輸入的數(shù)據(jù)傳給上位機(jī),并根據(jù)輸入的數(shù)據(jù)執(zhí)行相應(yīng)的操作,控制步進(jìn)電機(jī)繪制出所需的圖形。
3.1.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
單片機(jī)本身具備比較強(qiáng)大的功能,但往往不能滿足一個實(shí)際應(yīng)用系統(tǒng)的功能要求,有些單片機(jī)本身就缺少一些功能部分需要擴(kuò)展至應(yīng)用系統(tǒng)所要求的規(guī)模。
單片機(jī)無法直接與微型計(jì)算機(jī)進(jìn)行通信,如果想讓單片與微機(jī)通信必須將max232芯片與單片機(jī)串口相聯(lián)[7]。
懸掛控制系統(tǒng)由鍵盤,MSC1602液晶顯示器,SST89E58單片機(jī),42BYG205電機(jī)等組成。功能框圖如圖3.1。
鍵盤采用4×4矩陣鍵盤通過程序設(shè)計(jì)完成鍵盤掃描。LCD顯示器通過P2口接收數(shù)據(jù)。單片機(jī)收到命令后,按照相應(yīng)的算法,經(jīng)過計(jì)算后發(fā)出控制信號傳給電機(jī)。電機(jī)根據(jù)信號實(shí)現(xiàn)相應(yīng)的動作。
鍵盤控制部分
SST89C52單片機(jī)控制部分
LCD顯示部分
電機(jī)控制部分
微機(jī)
圖3.1 功能框圖
原理總框圖:
單片機(jī)
接收
串行通訊
PC機(jī)顯示
圖3.2 串行通信原理圖
3.2 詳細(xì)設(shè)計(jì)
3.2.1 硬件設(shè)計(jì)
1. 整體設(shè)計(jì)
懸掛運(yùn)動控制系統(tǒng)主要由核心模塊、步進(jìn)電機(jī)驅(qū)動模塊、輸入模塊、顯示模塊、通訊模塊等組成。如圖3.3所示。本系統(tǒng)能夠完成以下功能:由鍵盤輸入工作模式和坐標(biāo)數(shù)據(jù),其中工作模式包括:模式1:畫直線,輸入起點(diǎn)和終點(diǎn)的坐標(biāo)后,電機(jī)將帶動重物運(yùn)動出一條直線的軌跡。模式2:畫圓,輸入圓心和半徑的數(shù)據(jù)后,電機(jī)將帶動重物運(yùn)動出一圓形軌跡。模式3:3邊圖形,輸入3個點(diǎn)的坐標(biāo)后,電機(jī)將帶動重物運(yùn)動出一個三角形的軌跡。模式4:4邊圖形,輸入4個點(diǎn)的坐標(biāo)后,電機(jī)將帶動重物運(yùn)動出一個四邊形的軌跡。然后顯示模塊會將工作的狀態(tài)顯示在LCD上,反映輸入的數(shù)據(jù)是否正確,和電機(jī)當(dāng)前的運(yùn)行狀態(tài)。步進(jìn)電機(jī)驅(qū)動模塊,將單機(jī)輸出的5V信號轉(zhuǎn)換成步進(jìn)電機(jī)所需要的12V信號,提供步進(jìn)電機(jī)所需要的驅(qū)動電流。通訊模塊是能max232芯片,使用一定的協(xié)議,使單片機(jī)能與微機(jī)之間進(jìn)行通訊,實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的相互控制。
各個模塊的具體工作原理,將在下面作出詳細(xì)說明。
2. 主要功能模塊設(shè)計(jì)
懸掛運(yùn)動控制系統(tǒng)主要由最小系統(tǒng)模塊、步進(jìn)電機(jī)驅(qū)動模塊、輸入模塊、顯示模塊等組成。通過鍵盤輸入數(shù)據(jù),可以完成以下功能:將工作的狀態(tài)顯示在LCD上,控制步進(jìn)電機(jī)將重物移至指定位置,控制步進(jìn)電機(jī)帶動重物畫出指定的圖形,包括圓形、直線、多邊形等。
(1) 核心模塊
核心模塊是整個懸掛運(yùn)動系統(tǒng)的最基本的部分。主要由SST89E58單片機(jī)和支持單片工作的一些器件,如晶振、電源和相關(guān)的電阻、電容組成,見圖3.4。SST98E58內(nèi)部具有三總路線和32K的存儲器,所以不用擴(kuò)展總線和外部存儲[8]。各IO口分部如下:P0口作為鍵盤接口,P1口作為電機(jī)驅(qū)動接口,P2口作為LCD的數(shù)據(jù)接口,P3.3、P3.4、P3.5作為LCD的控制線接口。
(2) 步進(jìn)電機(jī)驅(qū)動模塊
步進(jìn)電機(jī)的驅(qū)動模塊是完成對步進(jìn)電機(jī)的驅(qū)動,步電機(jī)是由+12V電壓驅(qū)動的,這個驅(qū)動電路的主要功能是將+5V的電壓轉(zhuǎn)換為+12V電壓[9]。見附錄圖 1。步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角。感應(yīng)子式步步進(jìn)電機(jī)大體分為兩種:① 反應(yīng)式步進(jìn)電機(jī),②感應(yīng)子式步進(jìn)電機(jī)。
我們使用的是兩相的感應(yīng)子式步進(jìn)電機(jī),當(dāng)電機(jī)繞組通電時序?yàn)闀r為正轉(zhuǎn),通電時序?yàn)闀r為反轉(zhuǎn)。我們的對步進(jìn)電機(jī)驅(qū)動是將輸出4個的+5V和0V信號經(jīng)過集成運(yùn)放LM324變換成兩個+5V的信號[9],再經(jīng)過步進(jìn)電機(jī)的驅(qū)動電路形成步進(jìn)電機(jī)所需的兩個+12V的信號,分別對應(yīng)步進(jìn)電機(jī)的兩相AB,按照上述順序變換,實(shí)現(xiàn)對步進(jìn)電機(jī)的驅(qū)動。
圖3.3 整體設(shè)計(jì)框圖
圖3.4 核心結(jié)構(gòu)框圖
(3) 輸入模塊
輸入模塊是由自行焊接的4x4矩陣的鍵盤實(shí)現(xiàn)的[10],在這16個按鍵中,包括0~9的數(shù)字鍵,一個確定鍵,一個光標(biāo)控制鍵,一個標(biāo)志鍵,兩個電機(jī)驅(qū)動鍵,一個模式選擇鍵。見圖 3.5。將鍵盤的8根線,接到單片機(jī)P0口上,前4根為行線,后4根為列線,采用行列掃描的方法,對鍵盤監(jiān)測:首先給所有的行線為高電平,列線順序給某一根線低電平[11]。當(dāng)某一鍵按下,并且列線掃描到該鍵所在的列時,會使該鍵所在的行線接口鉗制到低電平,這時就可以確定是那一個鍵按下了。
(4) 顯示模塊
顯示模塊是由一塊1602LCD構(gòu)成,在單片機(jī)中編寫程序控制其顯示內(nèi)容。見圖3.6。 1602是一塊(16個字符×2行的)液晶顯示器。有8根數(shù)據(jù)線(D0~D7)和三根控制線(RS、R/W、E)與單片機(jī)相聯(lián)RS:數(shù)據(jù)/命令選擇端,R/W:讀寫選擇端,E:使能信號??梢酝ㄟ^程序設(shè)計(jì)完成對1602的初始化和輸出控制。
圖3.5 輸入模塊框圖
(5) 通訊模塊
本懸掛運(yùn)動控制系統(tǒng)利用單片機(jī)自帶的串行口,通過max232與微型計(jì)算機(jī)相聯(lián),實(shí)現(xiàn)相互控制。Max232又叫做雙通道RS232線性驅(qū)動/接收器[12]。該器件包含2驅(qū)動器、2接收器和一個電壓發(fā)生器電路提供TIA/EIA-232-F電平。串行異步通信最廣泛使用的總路線接口標(biāo)準(zhǔn)RS-232C。232C接口標(biāo)準(zhǔn)采用EIA電平。它規(guī)定:高電平為+3V~15V,低電平為+3V~+15V。實(shí)際應(yīng)用常采用12V或15V。
① 基本約定:I、波特率:9600
II、一位啟始位,8位數(shù)據(jù),一位停止位,無奇偶校驗(yàn)位。
② 傳送順序:第一個字符,表示圖形標(biāo)志,根據(jù)標(biāo)志位,決定數(shù)據(jù)位的字符個數(shù)。
所畫的五個圖形分別用1、2、3、4、5表示。其中1表示直線,2表示圓形,3表示三角形,4表示四邊形,5表示五邊形。
直線:連續(xù)8字節(jié)數(shù)據(jù)(直線的兩個點(diǎn)),最后組裝成4個無符號字符型數(shù)據(jù)。
圓形:連續(xù)6字節(jié)數(shù)據(jù),前4個為圓心坐標(biāo),后2個為半徑。
三角形:連續(xù)12字節(jié)數(shù)據(jù)(三個點(diǎn)的坐標(biāo)),最后組裝成6個無符號字符型數(shù)據(jù)。
四邊形:連續(xù)16字節(jié)數(shù)據(jù)(四個點(diǎn)的坐標(biāo)),最后組裝成8個無符號字符型數(shù)據(jù)。
五邊形:連續(xù)20字節(jié)數(shù)據(jù)(五個點(diǎn)的坐標(biāo)),最后組裝成10個無符號字符型數(shù)。
圖3.6 顯示模塊框圖
(6) 系統(tǒng)組成原理圖
系統(tǒng)的總體框圖如圖 3.7
圖3.7 系統(tǒng)控制硬件總框圖
3. 主要元器件功能與選用
(1) 步進(jìn)電機(jī)介紹
步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單。
雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識。
目前,生產(chǎn)步進(jìn)電機(jī)的廠家的確不少,但具有專業(yè)技術(shù)人員,能夠自行開發(fā),研制的廠家卻非常少,大部分的廠家只一、二十人,連最基本的設(shè)備都沒有。僅僅處于一種盲目的仿制階段。這就給用戶在產(chǎn)品選型、使用中造成許多麻煩。簽于上述情況,我們決定以廣泛的感應(yīng)子式步進(jìn)電機(jī)為例。敘述其基本工作原理。望能對廣大用戶在選型、使用、及整機(jī)改進(jìn)時有所幫助。
(2) 步進(jìn)電機(jī)控制原理
步進(jìn)電機(jī)是數(shù)字控制電機(jī),它將脈沖信號轉(zhuǎn)變成角位移,即給一個脈沖信號,步進(jìn)電機(jī)就轉(zhuǎn)動一個角度,因此非常適合于單片機(jī)控制。步進(jìn)電機(jī)可分為反應(yīng)式步進(jìn)電機(jī)(簡稱VR)、永磁式步進(jìn)電機(jī)(簡稱PM)和混合式步進(jìn)電機(jī)(簡稱HB)。
步進(jìn)電機(jī)區(qū)別于其他控制電機(jī)的最大特點(diǎn)是,它是通過輸入脈沖信號來進(jìn)行控制的,即電機(jī)的總轉(zhuǎn)動角度由輸入脈沖數(shù)決定,而電機(jī)的轉(zhuǎn)速由脈沖信號頻率決定。
步進(jìn)電機(jī)的驅(qū)動電路根據(jù)控制信號工作,控制信號由單片機(jī)產(chǎn)生。其基本原理作用如下:
① 控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進(jìn)電機(jī)的三拍工作方式,其各相通電順序?yàn)锳-B-C-D,通電控制脈沖必須嚴(yán)格按照這一順序分別控制A,B,C,D相的通斷。
② 控制步進(jìn)電機(jī)的轉(zhuǎn)向
如果給定工作方式正序換相通電,步進(jìn)電機(jī)正轉(zhuǎn),如果按反序通電換相,則電機(jī)就反轉(zhuǎn)。
③ 控制步進(jìn)電機(jī)的速度
如果給步進(jìn)電機(jī)發(fā)一個控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個脈沖,它會再轉(zhuǎn)一步。兩個脈沖的間隔越短,步進(jìn)電機(jī)就轉(zhuǎn)得越快。調(diào)整單片機(jī)發(fā)出的脈沖頻率,就可以對步進(jìn)電機(jī)進(jìn)行調(diào)速。
(3) 電機(jī)選擇
方案1:直流電機(jī)。
直流電機(jī)又分為直流無刷電機(jī)和直流有刷電機(jī),是最早實(shí)現(xiàn)調(diào)速的電動機(jī),其優(yōu)點(diǎn)是有良好的線性調(diào)速特性,簡單的控制性能,高的效率,但其數(shù)字控制方面較難把握。
方案2:步進(jìn)電機(jī)。
步進(jìn)電機(jī)是多種機(jī)電設(shè)備中被廣泛應(yīng)用的一種電機(jī),它主要由定子和轉(zhuǎn)子構(gòu)成。定子的主要結(jié)構(gòu)是繞組。三相、四相、五相步進(jìn)電機(jī)分別有三個、四個、五個繞組,其它以此類推。繞組按一定的通電順序工作著,這個通電順序我們稱為步進(jìn)電機(jī)的“相序”。轉(zhuǎn)子的主要結(jié)構(gòu)是磁性轉(zhuǎn)軸,當(dāng)定子中的繞組在相序信號作用下,有規(guī)律的通電、斷電工作時,轉(zhuǎn)子周圍就會有一個按此規(guī)律變化的電磁場,因此一個按規(guī)律變化的電磁力就會作用在因此轉(zhuǎn)子上,使轉(zhuǎn)子發(fā)生轉(zhuǎn)動。它將電脈沖信號轉(zhuǎn)換成角位移,即給一個脈沖信號,步進(jìn)電動機(jī)就轉(zhuǎn)動一個角度,因此非常適合于單片機(jī)控制。另外步進(jìn)電機(jī)還有動態(tài)響應(yīng)快易于起停,易于正反速及變速等優(yōu)點(diǎn)。
綜合上面所述,為易于單片機(jī)控制,本設(shè)計(jì)采用方案2。
(4) 驅(qū)動方式的選擇
我們知道步進(jìn)電動機(jī)使用脈沖電源工作。開關(guān)管是按照控制脈沖的規(guī)律“開”和“關(guān)”,使直流電源以脈沖方式向繞組L供電,這一過程我們稱它為步進(jìn)電動機(jī)的驅(qū)動。
①單電壓驅(qū)動 單電壓驅(qū)動是指電動機(jī)繞組在工作時,只用一個電壓電源對繞組供電。它的特點(diǎn)是電路簡單,一般只用于小功率步進(jìn)電動機(jī)的驅(qū)動。
②雙電壓驅(qū)動 雙電壓驅(qū)動是用提高電壓的方法使繞組中的電流上升波形變陡。它的基本思路是在低頻段使用較低的電壓驅(qū)動,在高頻段使用較高的電壓驅(qū)動。這種驅(qū)動方法在低頻段具有單電壓驅(qū)動的特點(diǎn),在高頻段具有良好的高頻性能。
本設(shè)計(jì)考慮到變壓器,因采用了單電壓驅(qū)動.
(5) SST89E58單片機(jī)
SST89E58是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含32k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM)。該器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)。由于片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大的SST89E58單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。
(6) 對于本系統(tǒng)開發(fā)來說存在下列很明顯的優(yōu)點(diǎn)
① 內(nèi)部含F(xiàn)LASH存儲器。因此在系統(tǒng)開發(fā)過程中可以十分容易進(jìn)行程序的修改,這就大大縮短了系統(tǒng)的開發(fā)周期。同時,在系統(tǒng)工作過程中,能有效的保存一些數(shù)據(jù)信息,即使外界電源損壞也不影響到信息的保存。
② 和80C51插座兼容。SST89E58單片機(jī)的引腳是和80C51一樣的,所以,當(dāng)用SST89E58單片機(jī)取代80C52時,可以直接進(jìn)行代換。
③ 時鐘方式。SST89E58單片機(jī)采用靜態(tài)時鐘方式,所以可以節(jié)省電能,這對于降低便攜式產(chǎn)品的功耗十分有用。
④ 編程亦無廢品產(chǎn)生。一般的OTP產(chǎn)品,一旦錯誤編程就成了廢品。而89C51單片機(jī)內(nèi)部采用了Flash存儲器,所以,錯誤編程之后仍可以重新編程直到正確為止,故不存在廢品。
⑤ 可以進(jìn)行反復(fù)系統(tǒng)試驗(yàn)。用SST89E58單片機(jī)設(shè)計(jì)的系統(tǒng),可以反復(fù)進(jìn)行系統(tǒng)試驗(yàn),每次試驗(yàn)可以編入不同的程序,這樣可以保證用戶的系統(tǒng)設(shè)計(jì)達(dá)到最優(yōu)。而且隨的需要和發(fā)展,還可以進(jìn)行修改,使系統(tǒng)能不斷追隨新的要求。
⑥ SST89E58是用靜態(tài)邏輯來設(shè)計(jì)的,其工作頻率可下降到0HZ,并提供兩種可用軟件來選擇的省電方式——空閑方式(Idle Mode)和掉電方式(Power Down Mode)。在空閑方式中,CPU停止工作,而RAM、定時器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,片內(nèi)振蕩器停止工作,由于時間被“凍結(jié)”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止。
(7) LM324是四運(yùn)放集成電路,它采用14腳雙列直插塑料封裝。它的內(nèi)部包含四組形式完全相同的運(yùn)算放大器,除電源共用外,四組運(yùn)放相互獨(dú)立。每一組運(yùn)算放大器可用圖1所示的符號來表示,它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的相位相同。
由于LM324四運(yùn)放電路具有電源電壓范圍寬,靜態(tài)功耗小,可單電源使用,價格低廉等優(yōu)點(diǎn),因此被廣泛應(yīng)用在各種電路中。
(8) 主要應(yīng)用
① 反相交流放大器
此放大器可代替晶體管進(jìn)行交流放大,可用于擴(kuò)音機(jī)前置放大等。電路無需調(diào)試。放大器采用單電源供電,由R1、R2組成1/2V+偏置,C1是消振電容。放大器電壓放大倍數(shù)Av僅由外接電阻Ri、Rf決定:Av=-Rf/Ri。負(fù)號表示輸出信號與輸入信號相位相反。按圖中所給數(shù)值,Av=-10。此電路輸入電阻為Ri。一般情況下先取Ri與信號源內(nèi)阻相等,然后根據(jù)要求的放大倍數(shù)在選定Rf。Co和Ci為耦合電容。
② 同相交流放大器
同相交流放大器的特點(diǎn)是輸入阻抗高。其中的R1、R2組成1/2V+分壓電路,通過R3對運(yùn)放進(jìn)行偏置。 電路的電壓放大倍數(shù)Av也僅由外接電阻決定:Av=1+Rf/R4,電路輸入電阻為R3。R4的阻值范圍為幾千歐姆到幾十千歐姆。
③ 交流信號三分配放大器
此電路可將輸入交流信號分成三路輸出,三路信號可分別用作指示、控制、分析等用途。而對信號源的影響極小。因運(yùn)放Ai輸入電阻高,運(yùn)放A1-A4均把輸出端直接接到負(fù)輸入端,信號輸入至正輸入端,相當(dāng)于同相放大狀態(tài)時Rf=0的情況,故各放大器電壓放大倍數(shù)均為1,與分立元件組成的射極跟隨器作用相同R1、R2組成1/2V+偏置,靜態(tài)時A1輸出端電壓為1/2V+,故運(yùn)放A2-A4輸出端亦為1/2V+通過輸入輸出電容的隔直作用,取出交流信號。
④ 有源帶通濾波器
許多音響裝置的頻譜分析器均使用此電路作為帶通濾波器,以選出各個不同頻段的信號,在顯示上利用發(fā)光二極管點(diǎn)亮的多少來指示出信號幅度的大小。這種有源帶通濾波器的中心頻率 ,在中心頻率fo處的電壓增益Ao=B3/2B1,品質(zhì)因數(shù) ,3dB帶寬B=1/(п*R3*C)也可根據(jù)設(shè)計(jì)確定的Q、fo、Ao值,去求出帶通濾波器的各元件參數(shù)值。R1=Q/(2пfoAoC),R2=Q/((2Q2-Ao)*2пfoC),R3=2Q/(2пfoC)。上式中,當(dāng)fo=1KHz時,C取0.01Uf。此電路亦可用于一般的選頻放大。此電路亦可使用單電源,只需將運(yùn)放正輸入端偏置在1/2V+并將電阻R2下端接到運(yùn)放正輸入端既可。
⑤ 比較器
當(dāng)去掉運(yùn)放的反饋電阻時,或者說反饋電阻趨于無窮大時(即開環(huán)狀態(tài)),理論上認(rèn)為運(yùn)放的開環(huán)放大倍數(shù)也為無窮大(實(shí)際上是很大,如LM324運(yùn)放開環(huán)放大倍數(shù)為100dB,既10萬倍)。此時運(yùn)放便形成一個電壓比較器,其輸出如不是高電平(V+),就是低電平(V-或接地)。當(dāng)正輸入端電壓高于負(fù)輸入端電壓時,運(yùn)放輸出低電平。
圖中使用兩個運(yùn)放組成一個電壓上下限比較器,電阻R1、R1ˊ組成分壓電路,為運(yùn)放A1設(shè)定比較電平U1;電阻R2、R2ˊ組成分壓電路,為運(yùn)放A2設(shè)定比較電平U2。輸入電壓U1同時加到A1的正輸入端和A2的負(fù)輸入端之間,當(dāng)Ui >U1時,運(yùn)放A1輸出高電平;當(dāng)Ui U2,則當(dāng)輸入電壓Ui越出[U2,U1]區(qū)間范圍時,LED點(diǎn)亮,這便是一個電壓雙限指示器。 若選擇U2 > U1,則當(dāng)輸入電壓在[U2,U1]區(qū)間范圍時,LED點(diǎn)亮,這是一個“窗口”電壓指示器。 此電路與各類傳感器配合使用,稍加變通,便可用于各種物理量的雙限檢測、短路、斷路報警等。
⑥ 單穩(wěn)態(tài)觸發(fā)器
此電路可用在一些自動控制系統(tǒng)中。電阻R1、R2組成分壓電路,為運(yùn)放A1負(fù)輸入端提供偏置電壓U1,作為比較電壓基準(zhǔn)。靜態(tài)時,電容C1充電完畢,運(yùn)放A1正輸入端電壓U2等于電源電壓V+,故A1輸出高電平。當(dāng)輸入電壓Ui變?yōu)榈碗娖綍r,二極管D1導(dǎo)通,電容C1通過D1迅速放電,使U2突然降至地電平,此時因?yàn)閁1>U2,故運(yùn)放A1輸出低電平。當(dāng)輸入電壓變高時,二極管D1截止,電源電壓R3給電容C1充電,當(dāng)C1上充電電壓大于U1時,既U2>U1,A1輸出又變?yōu)楦唠娖?,從而結(jié)束了一次單穩(wěn)觸發(fā)。顯然,提高U1或增大R2、C1的數(shù)值,都會使單穩(wěn)延時時間增長,反之則縮短。如果將二極管D1去掉,則此電路具有加電延時功能。剛加電時,U1>U2,運(yùn)放A1輸出低電平,隨著電容C1不斷充電,U2不斷升高,當(dāng)U2>U1時,A1輸出才變?yōu)楦唠娖健?
3.2.2 軟件設(shè)計(jì)
1. 主程序總流程圖
在設(shè)計(jì)系統(tǒng)的總流程中.比較簡單. 但在子程序相當(dāng)復(fù)雜.程序總圖如圖3.8所示:
2. 主程序設(shè)計(jì)
以往,人們研制單片機(jī)應(yīng)用系統(tǒng),幾乎都是使用匯編語言編寫應(yīng)用程序。經(jīng)管匯編語言具有能夠直接操作硬件、指令執(zhí)行速度快等優(yōu)點(diǎn),但匯編語言不是結(jié)構(gòu)化的程序設(shè)計(jì)語言,用它編寫的程序可讀性差,不便于資料的交流和移植,調(diào)試也比較麻煩;而C語言恰好克服了匯編語言的缺點(diǎn),而且又具有匯編語言的優(yōu)點(diǎn)。故本系統(tǒng)采用KEIL 51軟件用C語言進(jìn)行的程序設(shè)計(jì)[13]。
系統(tǒng)上電后,對設(shè)備進(jìn)行初始化,之后便進(jìn)入判斷測試狀態(tài)還是運(yùn)行狀態(tài),如果是運(yùn)行狀態(tài)便進(jìn)行波特率設(shè)置,如果是測試狀態(tài),便顯示當(dāng)前波特率,如果改變波特率,則進(jìn)行發(fā)送數(shù)據(jù),重新判斷是運(yùn)行還是測試狀態(tài)。如果運(yùn)行的是波特率設(shè)置,則之后進(jìn)行鍵盤設(shè)置,可以對通道進(jìn)行選擇,選擇后邊進(jìn)行A/D轉(zhuǎn)換狀態(tài),之后發(fā)送數(shù)據(jù),系統(tǒng)在進(jìn)行判斷是測試狀態(tài)還是運(yùn)行狀態(tài)。如果鍵盤處理的是定時器,則改變定時常數(shù),然后進(jìn)行A/D數(shù)據(jù)轉(zhuǎn)換,之后發(fā)送數(shù)據(jù),又進(jìn)行判斷是測試狀態(tài)還是運(yùn)行狀態(tài)[14]。
圖3.8 主程序流程圖
對與一個開環(huán)控制系統(tǒng)來說,最重要的就是它的算法的選擇,然后就是針對算法的編程.
(1) 控制算法的論證
方案1: 逐點(diǎn)比較直線插補(bǔ)算法[17]
逐點(diǎn)比較法是數(shù)控機(jī)床中廣泛采用的一種軟件插補(bǔ)算法,該方法普遍用于二坐標(biāo)數(shù)控加工系統(tǒng).所謂逐點(diǎn)比較法就是在繪圖過程中,繪圖筆每移動一步都要與理想線路進(jìn)行比較,然后決定下一步的移動方向用步步修正的方法畫出所期望的線段. 逐點(diǎn)比較法的基本原理是斜率比較法.即線段的起點(diǎn)與筆當(dāng)前的位置構(gòu)成的直線斜率與要繪線段斜率進(jìn)行比較.當(dāng)前者斜率小于后者斜率時,筆應(yīng)該向Y方向走一步.當(dāng)前者斜率大于后者斜率時,筆應(yīng)該向X方向走一步.
如圖3.9所示,OA為欲畫的路線,M1為畫筆開始所在的位置,當(dāng)OA的斜率小欲畫線段的斜率時,OA向+Y方向移動一步,到達(dá)M2點(diǎn).然后再用線段OM2的斜率與OA的斜率進(jìn)行比較,當(dāng)OM2的斜率大欲畫線段OA斜率時,OA向+X方向移動一步。
圖3.9 逐點(diǎn)比較直線插補(bǔ)算法
方案2:逐點(diǎn)比較圓弧插補(bǔ)算法[18].
圓弧軌跡插補(bǔ)不同于直線,一段圓弧可能跨越幾個象限。每當(dāng)一段圓弧跨過象限后,原來的偏差計(jì)算、坐標(biāo)計(jì)算式必須進(jìn)行修改。在插補(bǔ)過程中每走一步必須檢查是否會跨越象限,一旦查到跨越象限,就要根據(jù)順圓或逆圓改進(jìn)進(jìn)入該象限的一套計(jì)算方法。傳統(tǒng)的過象限處理是采用查表的方法,即用舊的標(biāo)志字通過查表取得新標(biāo)志字,替換舊標(biāo)志字,當(dāng)再次進(jìn)行插補(bǔ)時,根據(jù)新的標(biāo)志字進(jìn)行插補(bǔ)和進(jìn)給。查表法處理起來相當(dāng)麻煩。符號判別法是根據(jù)動點(diǎn)坐標(biāo)本身位置的變化自動轉(zhuǎn)換運(yùn)算和判別,自動轉(zhuǎn)入其他象限,改變偏差計(jì)算、坐標(biāo)計(jì)算式。
方案3:數(shù)學(xué)建模法[21]。
數(shù)學(xué)建模法是指用數(shù)學(xué)方法,運(yùn)用幾何知識(極坐標(biāo))把圓上的點(diǎn)和兩個電機(jī)所在的位置聯(lián)系起來,通過相關(guān)計(jì)算把圓上的點(diǎn)的坐標(biāo)用數(shù)學(xué)表達(dá)式表示出來,并轉(zhuǎn)換成電機(jī)所要轉(zhuǎn)動的偏移量,最后把偏移量轉(zhuǎn)化為電機(jī)所要轉(zhuǎn)的速度。此方法,計(jì)算復(fù)雜,但所得數(shù)據(jù)較為準(zhǔn)確,只要編程正確,用電機(jī)所畫出來的線就不會編差大。
上述幾種方法我們都嘗試編程,但在調(diào)試過程中,前兩種方法的誤差比較大.達(dá)不到比賽的要求,最后我們只能采用方案3。采用方案3的算法相當(dāng)復(fù)雜, 而且要經(jīng)過了無數(shù)次調(diào)試.
(2) 直線的計(jì)算和編程
從圖3.10我們可以看到假設(shè)原點(diǎn)坐標(biāo)X0,Y0,要達(dá)到的坐標(biāo)點(diǎn)X1,Y1
圖3.10 數(shù)學(xué)建模算法
那么到坐標(biāo)點(diǎn)的距離L
我們沒有采用Y=KX+B的直線方程,而是把L的長度分為COUNT_L等分
我們計(jì)算出每一個增量INC_X,INC_Y
我們假設(shè)一個變量i,i的范圍從1----COUNT_L
所以每走一步的坐標(biāo)值
畫直線函數(shù)的流程圖如圖3.11
圖3.11 直線函數(shù)的流程圖
部分程序如下:
void draw_line(float x0,float y0,float x1,float y1)
{
for(i=1; i<=count_ll; i++)
{xx=inc_x*i+x0 ; xxx=xx ;
yy=inc_y*i+y0 ;
L_l=sqrt((xx+15)*(xx+15)+(115-yy)*(115-yy)) ;
L_r=sqrt((95-xx)*(95-xx)+(115-yy)*(115-yy)) ;
inc_Ll=L_l-L_l0 ;
inc_Lr=L_r-L_r0 ;
count_l=inc_Ll/step_l+(inc_Ll>=0 ?0.5:-0.5) ;
count_r=inc_Lr/step_r+(inc_Lr>=0 ?0.5:-0.5) ;
drive_motor(count_l,count_r) ;
L_r0=L_r ;
}
我們可以看到畫直線的程序的復(fù)雜性.
(3) 圓的的計(jì)算和編程[20]
在圓弧的編程中,它的算法比直線的算法更復(fù)雜.從圖我們可以看到假設(shè)圓心坐標(biāo)X0,Y0,半徑為R
圓上的一點(diǎn)坐標(biāo)為XQ,YQ
XQ=X0+R
YQ=Y0
而我們把圓分成360度,即設(shè)一個變量,的范圍從1到360,每走一小步的坐標(biāo)值XX,YY
那么它的力臂LL,LR
LL=
LR=
而原點(diǎn)坐標(biāo)的力臂LL0,LR0
LL0=
LR0=
因此力臂的增量為LL,LR
△LL= LL- LL0
△LR= LR- LR0
因我們的步進(jìn)不同,所以它的增量分別為0.026,0.026,最后才計(jì)算出要給的脈沖數(shù)COUNT_L,COUNT_R
畫圓函數(shù)的流程圖如圖3.12所示
圖3.12 畫圓函數(shù)的流程圖
部分程序程序如下:
/**畫圓*********************/
void draw_circularity(float rr,float x0,float y0)
{
for(i=1;i<=360;i++)
{xx=rr*cos(pai*i/180)+x0 ;
xxx=xx;
yy=rr*sin(pai*i/180)+y0 ;
L_l=sqrt((xx+15)*(xx+15)+(115-yy)*(115-yy)) ;
L_r=sqrt((95-xx)*(95-xx)+(115-yy)*(115-yy)) ;
}
}
(4). 坐標(biāo)的顯示和編程
坐標(biāo)的顯示和編程就是把每走一步走的距離顯示在液晶上[15],通過調(diào)用液晶子程序,把變量寫入。
液晶使用的函數(shù)如下[19]:
void Init_LCD(void);
void PutStr_LCD(unsigned char *str);
void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str);
void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num);
void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len);
第4章 系統(tǒng)測試
4.1 硬件測試
對懸掛運(yùn)動控制系統(tǒng)各單元的測試包括最小系統(tǒng)模塊測試、LCD測試、鍵盤測試、電機(jī)驅(qū)動測試。
測試內(nèi)容
測試儀器
測試方法
測試結(jié)果
最小系統(tǒng)測試
萬用表
實(shí)測
工作正常
LCD測試
萬用表
實(shí)測
顯示正常
鍵盤測試
萬用表
實(shí)測
輸入正常
電機(jī)驅(qū)動測試
萬用表
實(shí)測
輸出正常
4.2 軟件測試
4.2.1 單元測試
白盒測試
白盒測試是一種透明的測試技術(shù),它包括邏輯覆蓋、基本路徑、循環(huán)覆蓋等幾種典型的白盒測試技術(shù),它是以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)來設(shè)計(jì)測試用例的[16],其原則是:
保證程序中每一個獨(dú)立的路徑至少執(zhí)行一次。
保證所有判定的每一個分支至少執(zhí)行一次。
保證每個判定表達(dá)式中每個條件的所有可能結(jié)果至少執(zhí)行一次。
保證每一循環(huán)都在邊界條件和一般條件至少各執(zhí)行一次。
保證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。
我選擇基本路徑測試方法對我的軟件設(shè)計(jì)部分的程序進(jìn)行測試。基本路徑測試對于不太復(fù)雜的程序進(jìn)行窮盡測試往往是不可能的?;韭窂綔y試方法就可以較好的解決這類問題,其主要思想是根據(jù)軟件詳細(xì)設(shè)計(jì)的過程性描述或源代碼中的控制流程求出程序的環(huán)形復(fù)雜性度量,然后用此度量確定程序的基本路徑集合,并由此導(dǎo)出一組測試用例來覆蓋該集合中的每一個獨(dú)立的路徑,從而可以保證每個語句至少執(zhí)行一次。
以下是采用基本路徑測試法對畫直線過程為例進(jìn)行的測試
1. 畫直線過程的流程圖為圖3.14,畫直線過程的流圖為圖4-2-1所示
圖4.1 畫直線過程的流圖
2. 根據(jù)流圖確定環(huán)形復(fù)雜度量V(G)??梢杂萌N方法求出V(G)的值:
1)V(G)=E-N+2=10-10+2=2,其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù)。
2)V(G)=2(個區(qū)域)
3)V(G)=P+1=1+1=2,其中P為謂詞結(jié)點(diǎn)的個數(shù)。在圖4-2-1中,僅結(jié)點(diǎn)6是謂詞結(jié)點(diǎn)。
3. 確定基本路徑集合(即獨(dú)立路徑集合)。一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。在(2)中求出的V(G)值正好等于該程序路徑的條數(shù)。于是可以確定2條獨(dú)立的路徑:
路徑1:1-2-3-4-5-6-7-8-9-6-10
路徑2:1-2-3-4-5-6-7-8-9-6…
其中路徑2后的省略號表示這些路徑的其余部分已無關(guān)緊要。
(4)為每一條獨(dú)立路徑各設(shè)計(jì)一組測試用例,以便強(qiáng)迫程序沿著該路至少執(zhí)行一次。
(1) 路徑1的測試用例:
i=有效的步數(shù)
期望結(jié)果:根據(jù)輸入的坐標(biāo)值,電機(jī)帶動重物畫直線。
(2) 路徑2的測試用例:
i=k,k>count_l
期望結(jié)果:直線完成,電機(jī)停止轉(zhuǎn)動。
以上是對畫直線過程的測試,其它過程用同種方法進(jìn)行測試,測試結(jié)果均為正常。
4.2.2 功能測試
功能測試采用黑盒測試方法:
黑盒測試主要是測試軟件是否滿足功能需求。黑盒測試主要測試的錯誤類型有:
1. 不正確或遺漏的功能。
2. 接口錯誤。
3. 性能錯誤。
4. 數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)訪問錯誤。
5. 初始化或終止條件錯誤等。
黑盒測試主要包括等價類的劃分、邊界值分析、錯誤推測、組合數(shù)據(jù)測試等幾種設(shè)計(jì)測試用例的方法。
對懸掛運(yùn)系統(tǒng)采用等價類劃分方法進(jìn)行測試,以下是用等價類劃分法設(shè)計(jì)測試用例,來測試程序畫圓過程,測試過程如下:
(1) 劃分等價類并編號。等價類劃分的結(jié)果如表4.1所示,即劃分成3個有效等價類和5個元效等價類。
表4.1 輸入坐標(biāo)值的等價類劃分
輸入有效等價類
有效等價類
無效等價類
坐標(biāo)輸入類型及長度
①整數(shù)部分為兩位的浮點(diǎn)
②整數(shù)部分超出兩位的數(shù)
X軸坐標(biāo)取值范圍
③在0~80之間
④小于0
⑤大于80
Y軸坐標(biāo)取值范圍
⑥在0~99之間
⑦小于0
⑧大于100
(2) 設(shè)計(jì)測試用例,以便覆蓋所有的有效等價類。在表4-1中列出3個有效等價類;覆蓋的編號分別為①③⑥,設(shè)計(jì)的測試用例如下:
測試數(shù)據(jù) 期望結(jié)果 覆蓋的有效等價類
50 輸入有效 ① ③ ⑥
c. 為每一個無效等價類設(shè)計(jì)一個測試用例,設(shè)計(jì)結(jié)果如下:
測試數(shù)據(jù) 期望結(jié)果 覆蓋的無效等價類
423 輸入無效 ②
-1 輸入無效 ④
95 輸入無效 ⑤
-3 輸入無效 ⑦
110 輸入無效 ⑧
4.2.3 集成測試
為了確定系統(tǒng)與題目要求的符合程度,我們對系統(tǒng)中的關(guān)鍵部分進(jìn)行了測試。位置測試如下:
表4.1 直線測試表
原點(diǎn)坐標(biāo)(X,Y)
輸入坐標(biāo)(X,Y)
實(shí)際測量距離值
誤差值
運(yùn)行時間
(10cm,10cm)
(40cm, 50cm)
39cm,49.2cm)
0.8cm-2cm
20S
(19cm,24cm)
(34cm,35cm)
(33cm,34.5cm)
1cm-2-cm
2S
表4.2 圓弧測試表
圓點(diǎn)坐標(biāo)(X,Y)
實(shí)際測量半徑值
誤差值
運(yùn)行時間
(40cm,50cm)
23~27cm
+-2cm
150S
4.2.4 測試結(jié)果
經(jīng)過以上測試后,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅(qū)動模塊可以正確的驅(qū)動電機(jī)??梢酝ㄟ^鍵盤輸入,使單片機(jī)帶動重物,繪制出規(guī)定的圖形。
結(jié) 論
本文介紹的懸掛運(yùn)動控制系統(tǒng)是基于單片機(jī)的控制系統(tǒng),集輸入、顯示、對電機(jī)的驅(qū)動于一身,另外還增加了與上位機(jī)的通信。顯示出了方便操作,功能完善、高集成度等特點(diǎn)。
本系統(tǒng)另一大特點(diǎn)的大部分功能由程序?qū)崿F(xiàn),節(jié)省了很多硬件,雖然算法和程序都非常復(fù)雜,但它省了很多硬件電路.因?yàn)楝F(xiàn)在提倡”硬件變?yōu)檐浖睂ξ覀兊木幊棠芰τ泻艽蟮拇龠M(jìn)。在本系統(tǒng)設(shè)計(jì)中,我們完成了全部基本要求,并完成了發(fā)揮部分的第一條。
經(jīng)過詳細(xì)的測試,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅(qū)動模塊可以正確的驅(qū)動電機(jī)??梢酝ㄟ^鍵盤輸入,使單片機(jī)帶動重物,繪制出規(guī)定的圖形。
最終完成的系統(tǒng)的運(yùn)行情況,反映出了本系統(tǒng)方案正確、實(shí)現(xiàn)方法可行,運(yùn)行效果好。
后 記
短短二個月的畢業(yè)設(shè)計(jì)已經(jīng)結(jié)束了,回顧這段時光,我身有感觸,它不僅是我所學(xué)知識的一次全面的考查而且也是從理論知識到實(shí)踐操作的一次大的深化。
大學(xué)三年多的時間都是在學(xué)習(xí)基礎(chǔ)知識,并未真正系統(tǒng)地去應(yīng)用和實(shí)踐。但是經(jīng)過這次畢業(yè)設(shè)計(jì),我接觸到了更多平時沒有接觸到的儀器設(shè)備、元器件,及時地彌補(bǔ)了這方面知識的不足,深刻體會到了所學(xué)理論知識的重要性。知識掌握得越多,設(shè)計(jì)得就更全面、更順利、更好。在此我要感謝四年來教過我的所有老師,沒有你們的精心教導(dǎo),就沒有今天將要畢業(yè)的我。
在畢業(yè)設(shè)計(jì)中,老師不僅使我養(yǎng)成了嚴(yán)肅認(rèn)真和實(shí)事求是的科學(xué)態(tài)度,同時也培養(yǎng)了我吃苦耐勞的精神以及相互合作的團(tuán)隊(duì)精神,同學(xué)之間的友誼也充分的在畢業(yè)設(shè)計(jì)當(dāng)中更加深厚了。我不僅學(xué)到了很多的與本專業(yè)相關(guān)知識,而且加深了所學(xué)課程知識,深刻感受到了知識的偉大和工作的快樂。在具體的設(shè)計(jì)中,我遇到了一些困難,通過上網(wǎng)和圖書館查到了許多相關(guān)的知識,經(jīng)過自己的仔細(xì)分析和小組成員一起討論研究,并向?qū)熣埥?,最終不只解決了所遇到的困難,而且學(xué)到了很多的知識,擴(kuò)大了知識面。
從最初的茫然,到現(xiàn)在小有成果;從最初的無從下手,到現(xiàn)在的信心百倍;離不開導(dǎo)師耐心的指導(dǎo)和小組成員的共同努力。畢業(yè)設(shè)計(jì)到了尾聲,無論是知識的收獲,還是同學(xué)友誼和師生情誼的加深,使我更加有信心面對以后的工作。在這里我個人非常感謝孫海老師給予我和小組成員的精心指導(dǎo)和幫助。
參考文獻(xiàn)
[1] 吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)[M].北京:中國科學(xué)技術(shù)大學(xué)出版社,2002.7. 1—60.
[2] 孫永浩.MCS-51 單片機(jī)開發(fā)與應(yīng)用指南[M]. 哈爾濱:黑龍江科學(xué)技術(shù)出版社,1989.1. 23—80.
[3] 宋文緒.自動檢測技術(shù)[M].北京: 冶金工業(yè)出版社,2000.2. 112—135.
[4] 孫和平.單片微機(jī)原理與接口技術(shù)[M].北京:冶金工出版社,2003.6. 138—200.
[5] 李建忠.單片機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2001.9. 37-79.
[6] 求實(shí)科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2004.3 44—67.
[7] 裘雪紅.微型計(jì)算機(jī)原理及接口技術(shù)[M].西安:西安電子科技
收藏