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