懸掛運(yùn)動(dòng)控制系統(tǒng)2_第1頁(yè)
懸掛運(yùn)動(dòng)控制系統(tǒng)2_第2頁(yè)
懸掛運(yùn)動(dòng)控制系統(tǒng)2_第3頁(yè)
懸掛運(yùn)動(dòng)控制系統(tǒng)2_第4頁(yè)
懸掛運(yùn)動(dòng)控制系統(tǒng)2_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、懸掛運(yùn)動(dòng)控制系統(tǒng)摘要:本系統(tǒng)以單片機(jī)89C52為核心,采用了步進(jìn)電機(jī)控制裝置、紅外尋跡傳感裝置來(lái)實(shí)現(xiàn)一個(gè)對(duì)懸掛物體運(yùn)動(dòng)控制系統(tǒng)。友好的操作界面和靈活的監(jiān)控方式是本設(shè)計(jì)的兩大特色,增強(qiáng)了系統(tǒng)的實(shí)用性。關(guān)鍵詞:步進(jìn)電機(jī) ;紅外傳感器 ;懸掛運(yùn)動(dòng)。 一、方案論證與選擇 1題目任務(wù)要求及相關(guān)指標(biāo)的分析題目的基本要求中,要求在150秒內(nèi)到達(dá)設(shè)定的一個(gè)坐標(biāo)點(diǎn)以及300秒內(nèi)畫(huà)圓或按照設(shè)定的軌跡運(yùn)動(dòng),這要求我們對(duì)左右兩個(gè)電機(jī)進(jìn)行靈活、準(zhǔn)確、快速的控制,并且有和諧的人機(jī)交換功能,才能夠滿足要求。因此選擇合適的電機(jī)以及運(yùn)用有效的算法來(lái)對(duì)電機(jī)進(jìn)行控制是必需的,我們通過(guò)建立合理的數(shù)學(xué)模型,使兩電機(jī)控制的繩長(zhǎng)依照我們建

2、立的函數(shù)關(guān)系變化,來(lái)實(shí)現(xiàn)懸掛物體在板上以各種方式運(yùn)動(dòng)。 發(fā)揮部分,要求控制物體沿板上標(biāo)出的任意曲線運(yùn)動(dòng),通過(guò)紅外傳感器尋跡,實(shí)現(xiàn)跟蹤運(yùn)動(dòng)。而顯示畫(huà)筆的位置坐標(biāo),則可通過(guò)兩段繩長(zhǎng)變化與原點(diǎn)坐標(biāo)之間的函數(shù)關(guān)系來(lái)計(jì)算,求出當(dāng)前點(diǎn)的橫縱坐標(biāo),并在LCD上顯示出來(lái)。2方案的比較與選擇(1)電機(jī)的選擇方案一:直流電機(jī)采用單片機(jī)和A/D轉(zhuǎn)換構(gòu)成系統(tǒng),控制普通電機(jī)的步數(shù)和旋轉(zhuǎn)方向,可以考慮達(dá)林管組成的H型PWM電路。用單片機(jī)控制達(dá)林管使之工作在占空比可調(diào)的開(kāi)關(guān)狀態(tài),精確調(diào)整電機(jī)轉(zhuǎn)速,減小因慣性,速度,步距角過(guò)大而引起的調(diào)整誤差,達(dá)到改變繩長(zhǎng)的要求,缺點(diǎn)是通過(guò)控制直流電機(jī)驅(qū)動(dòng)模塊將脈沖信號(hào)轉(zhuǎn)化為模擬信號(hào),需要將

3、單片機(jī)輸出的序列脈沖轉(zhuǎn)換,延長(zhǎng)了控制的時(shí)間,導(dǎo)致控制精度差;關(guān)鍵是直流電機(jī)不能即停,使直流電機(jī)不能精確定位,滿足不了控制誤差范圍為設(shè)定值的要求。方案二:步進(jìn)電機(jī)用單片機(jī)產(chǎn)生脈沖信號(hào),脈沖信號(hào)的占空比為0.5左右,脈沖信號(hào)經(jīng)過(guò)功率放大控制步進(jìn)電機(jī),控制信號(hào)為數(shù)字信號(hào),不再需要數(shù)/模轉(zhuǎn)換;步進(jìn)電機(jī)的速度易于控制,具有快速啟/停能力,可在一剎那間實(shí)現(xiàn)啟動(dòng)或停止;它的轉(zhuǎn)動(dòng)角度嚴(yán)格可控,一般情況步距角可以降低到以下,而采用專(zhuān)用驅(qū)動(dòng)塊,可以更加的精確。步進(jìn)電機(jī)延時(shí)短,定位準(zhǔn)確,精度高,可控制性強(qiáng)。這樣我們就可以根據(jù)驅(qū)動(dòng)脈沖總數(shù)來(lái)計(jì)算繩子所走過(guò)的路程,從而得出坐標(biāo)和時(shí)間。根據(jù)本課題技術(shù)指標(biāo)要求,物體質(zhì)量大于

4、100克即可,步進(jìn)電機(jī)的輸出功率足以滿足負(fù)載要求;同時(shí)根據(jù)題目要求運(yùn)動(dòng)軌跡與預(yù)期軌跡偏差不超過(guò)4cm,這對(duì)電機(jī)有精確的要求,而直流電機(jī)難以達(dá)到這一指標(biāo)。綜上方案的比較分析,故而本設(shè)計(jì)采用方案二。(2)懸掛物體定位方式的選擇方案一:坐標(biāo)查詢(xún)方式在80cm100cm的白色底板上,等分為8000個(gè)方格,視其為8000個(gè)點(diǎn),每個(gè)點(diǎn)都有橫縱坐標(biāo)(a,b)兩個(gè)數(shù)據(jù),即共有16000個(gè)數(shù)據(jù),而底板左右對(duì)稱(chēng),所以只需記錄一半的數(shù)據(jù),即8000個(gè),這樣我們只需事先計(jì)算出懸掛物體在每一點(diǎn)對(duì)應(yīng)的兩側(cè)繩長(zhǎng)(x,y),將這8000個(gè)數(shù)據(jù),即4000個(gè)確定的繩長(zhǎng)數(shù)組記錄在單片機(jī)中,這樣就可以對(duì)所設(shè)定的坐標(biāo),采用查詢(xún)的方式

5、,找到相應(yīng)點(diǎn)所對(duì)應(yīng)的數(shù)組(x,y),與當(dāng)前點(diǎn)對(duì)應(yīng)的繩長(zhǎng)做差,得到所需的繩長(zhǎng)改變量,從而控制電機(jī)使物體到達(dá)該點(diǎn)。此方案的優(yōu)點(diǎn)在于查詢(xún)方便快捷,準(zhǔn)確性高,動(dòng)作運(yùn)動(dòng)迅速,但準(zhǔn)備工作的計(jì)算量太大,而且需要通過(guò)一塊片外的ROM來(lái)存儲(chǔ)如此龐大的數(shù)組集,不方便實(shí)現(xiàn)。方案二:公式計(jì)算方式根據(jù)題目中給出的各段長(zhǎng)度,可以很容易的得到底板上各點(diǎn)坐標(biāo)與兩電機(jī)分別對(duì)應(yīng)的繩長(zhǎng)之間的函數(shù)關(guān)系,這樣可以根據(jù)給定點(diǎn)的坐標(biāo)求出各繩長(zhǎng)或根據(jù)繩長(zhǎng)求出點(diǎn)的坐標(biāo),能夠?qū)崿F(xiàn)各項(xiàng)指標(biāo),實(shí)現(xiàn)懸掛物體的精確定位,滿足題目的要求。該方案數(shù)學(xué)模型清晰,可以在較短時(shí)間內(nèi)完成繩長(zhǎng)或坐標(biāo)的計(jì)算,使電機(jī)快速動(dòng)作,無(wú)須片外ROM存儲(chǔ),而且占用單片機(jī)內(nèi)存少,空

6、間利用率較高,可操作性強(qiáng)。綜上方案的比較分析,根據(jù)本課題技術(shù)指標(biāo)要求,用公式計(jì)算的方法比較容易實(shí)現(xiàn),故而本設(shè)計(jì)采用方案二。(3)畫(huà)圓方案的選擇方案一:切分?jǐn)M合法首先通過(guò)周長(zhǎng)計(jì)算,將圓等分為3000等份,然后依次計(jì)算初始點(diǎn)到下一點(diǎn)的坐標(biāo)增量,通過(guò)增量來(lái)控制兩個(gè)電機(jī)的運(yùn)動(dòng),從而調(diào)整繩長(zhǎng),實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的精確移動(dòng),也就是說(shuō)所畫(huà)的圓是由3000段小線段與之?dāng)M合連接起來(lái)的。這需要我們有足夠快的運(yùn)算速度,與很高的精度,依次精確計(jì)算出每一次步進(jìn)的距離,橫縱坐標(biāo)和兩段繩子的改變量,占用內(nèi)存很大,計(jì)算時(shí)間較長(zhǎng),反應(yīng)到電機(jī)上就是電機(jī)的運(yùn)動(dòng)時(shí)斷時(shí)續(xù),畫(huà)圓的用時(shí)很長(zhǎng),線段相對(duì)光滑,但是累積誤差比較大。方案二:查詢(xún)計(jì)算法第

7、一步要求我們能夠畫(huà)出一個(gè)題中要求的標(biāo)準(zhǔn)圓,然后將這條軌跡對(duì)應(yīng)的各點(diǎn)坐標(biāo)與相鄰坐標(biāo)的增量處理后詳細(xì)記錄,并且存儲(chǔ)到單片機(jī)內(nèi),當(dāng)我們需要畫(huà)圓的時(shí)候,只需要調(diào)用這些標(biāo)準(zhǔn)增量,通過(guò)公式計(jì)算出繩長(zhǎng)的改變量,就可以很精準(zhǔn)的得到:左右電機(jī)從當(dāng)前點(diǎn)運(yùn)動(dòng)到相鄰點(diǎn)的脈沖數(shù)目與方向。這樣就可以實(shí)現(xiàn)快速、準(zhǔn)確、美觀的畫(huà)圓。上述兩種方案中,方案二可以避免復(fù)雜的計(jì)算,縮短電機(jī)的等待時(shí)間,沒(méi)有誤差的累積,反應(yīng)快速、靈活,畫(huà)面連續(xù)、美觀,實(shí)現(xiàn)起來(lái)也比較方便。因此,我們畫(huà)圓采用上述的方案二。(4)尋跡傳感器的選擇發(fā)揮部分尋跡傳感器可供選擇的種類(lèi)較多,主要有以下兩種:方案一:光電傳感器光電傳感器有多種類(lèi)型,按其外表結(jié)構(gòu)有對(duì)射型、

8、回歸反射型、擴(kuò)散反射型;按光源色分類(lèi)又有紅色、綠色、藍(lán)色、紅外以及半導(dǎo)體雷射等,其自身帶有內(nèi)置的或分離的放大器。根據(jù)題目的要求,要使所選傳感器可以很好區(qū)分白色與黑色,有多種光電傳感器可供選擇,某些光源色為紅色或綠色的光電傳感器由于其對(duì)黑色與白色的反射率相差很大,所以可以很容易的識(shí)別。但是其價(jià)格昂貴,結(jié)構(gòu)偏大,外圍機(jī)械部分比較復(fù)雜。方案二:紅外傳感器紅外傳感器是我們非常常用的一種傳感器,也具有很強(qiáng)的對(duì)黑色與白色的辨識(shí)能力。由于紅外光波長(zhǎng)比可見(jiàn)光長(zhǎng),因此受可見(jiàn)光的影響較小。同時(shí)紅外系統(tǒng)還具有以下優(yōu)點(diǎn):尺寸小、質(zhì)量輕,能有效的抗可見(jiàn)光波段的偽裝,對(duì)輔助裝置要求最少,對(duì)人眼無(wú)傷害。當(dāng)然紅外光也有一定的

9、缺點(diǎn),如大氣、潮濕的天氣、霧和云對(duì)它有衰減作用。它具有體積小、靈敏度高、線性好等特點(diǎn),外圍電路簡(jiǎn)單,安裝起來(lái)方便,電源要求不高。用它作為近距離傳感器是最理想的,電路設(shè)計(jì)簡(jiǎn)單、性能穩(wěn)定可靠。綜上方案的比較分析,根據(jù)本課題技術(shù)指標(biāo)要求,故而本設(shè)計(jì)采用方案二。(4)尋跡傳感器布局的選擇方案一:5傳感器梅花狀分布采用上、中、下、左、右各裝一個(gè)紅外傳感器來(lái)探測(cè)黑線,常態(tài)讓中間的傳感器保持在黑線上面,其余四個(gè)方向的傳感器用來(lái)告知控制系統(tǒng):該傳感器所在的位置,是否為黑線上方。若在,則控制畫(huà)筆向該傳感器所在的方位移動(dòng),否則保持原來(lái)的移動(dòng)方向不變,直到某個(gè)傳感器探測(cè)到黑線,并發(fā)出信號(hào)為止。這種方法雖然所用器件少

10、,但是可靠性相對(duì)較差,精度較低。方案二: 8傳感器九宮圖分布在九宮格中間的右上、右、上、右下、左上、左下、左、下這八個(gè)方向裝上紅外傳感器,并按照上面的順序設(shè)置優(yōu)先級(jí)。優(yōu)先級(jí)的設(shè)定,取決于坐標(biāo)原點(diǎn)相對(duì)于運(yùn)動(dòng)區(qū)域的所在位置。這樣的話,我們就可以很容易的探測(cè)出黑線的前進(jìn)趨向,依照優(yōu)先級(jí)來(lái)控制電機(jī)的運(yùn)動(dòng),可以準(zhǔn)確快速實(shí)現(xiàn)尋跡功能,能夠精準(zhǔn)追蹤1.5cm1.8cm寬的黑色軌跡。比較以上兩種方案,方案一的探測(cè)范圍顯然要小,一旦傳感器組處于黑線的同一邊時(shí),就很難重新自糾正,尤其是碰到有間斷的曲線時(shí),就很難控制它的運(yùn)動(dòng);而方案二則可以探測(cè)較大的范圍,實(shí)現(xiàn)多方位探測(cè),控制思想較之方案一要先進(jìn)的多,便于實(shí)現(xiàn)PID

11、控制。 (5) 小結(jié)經(jīng)過(guò)仔細(xì)比較與論證,我們確定了整個(gè)控制系統(tǒng)各個(gè)模塊的最終方案如下:電機(jī)的選擇:步進(jìn)電機(jī),帶專(zhuān)用驅(qū)動(dòng)模塊,通過(guò)單片機(jī)輸出脈沖信號(hào)來(lái)控制;懸掛物體定位方式的選擇:公式計(jì)算方式,求出點(diǎn)坐標(biāo)對(duì)應(yīng)的繩長(zhǎng),用步進(jìn)電機(jī)實(shí)現(xiàn)繩長(zhǎng)的改變。畫(huà)圓的算法:存儲(chǔ)、查詢(xún)計(jì)算,預(yù)先存儲(chǔ)標(biāo)準(zhǔn)圓的相應(yīng)增量,以便隨時(shí)調(diào)用。發(fā)揮部分尋跡傳感器的選擇:紅外傳感器發(fā)揮部分尋跡傳感器布局方法的選擇:九宮圖分布二、系統(tǒng)總體設(shè)計(jì)方案及實(shí)現(xiàn)方框圖 系統(tǒng)以89C52單片機(jī)為核心,加以其他外圍電路實(shí)現(xiàn)較高精度定位。由于只需控制左右兩個(gè)電機(jī),所以其外圍電路較簡(jiǎn)單,由于要實(shí)現(xiàn)高精度的控制,而硬件上的誤差影響太多,所以需采用合理程序

12、實(shí)現(xiàn)優(yōu)良性能。 系統(tǒng)原理圖三、理論分析與計(jì)算 該設(shè)計(jì)以單片機(jī)控制的兩個(gè)步進(jìn)電機(jī)為基本構(gòu)架,兩電機(jī)控制各自的繩長(zhǎng)實(shí)現(xiàn)懸掛物體的二維移動(dòng)。根據(jù)題目將滑輪近似為一點(diǎn)(誤差在最后單片機(jī)做出補(bǔ)償),我們根據(jù)如圖3.1中各線之間的關(guān)系,得到關(guān)系式如下: (1)其中:x 為左電機(jī)控制的滑輪右側(cè)繩長(zhǎng); y 為右電機(jī)控制的滑輪左側(cè)繩長(zhǎng); a為以圖中標(biāo)出的原點(diǎn)為原點(diǎn)物體所對(duì)應(yīng)的橫坐標(biāo); 圖3.1 b 為物體所對(duì)應(yīng)的縱坐標(biāo)。 這樣通過(guò)輸入設(shè)定值,便可在單片機(jī)中依式(1)計(jì)算得出繩長(zhǎng)x和y,與所在點(diǎn)的坐標(biāo)所對(duì)應(yīng)的繩長(zhǎng)做差,便可得到電機(jī)所需運(yùn)動(dòng)的繩長(zhǎng)及轉(zhuǎn)動(dòng)方向,便可通過(guò)單片機(jī)對(duì)電機(jī)驅(qū)動(dòng), 圖3.1實(shí)現(xiàn)對(duì)懸掛物體的精確定

13、位。 在實(shí)現(xiàn)控制物體沿板上標(biāo)出的任意曲線運(yùn)動(dòng)的過(guò)程中,我們實(shí)現(xiàn)了系統(tǒng)每移動(dòng)到一個(gè)坐標(biāo)便在LCD上顯示這點(diǎn)的坐標(biāo),這就要求根據(jù)繩長(zhǎng)的變化得到坐標(biāo)的變化,同樣在單片機(jī)內(nèi)部可依據(jù)式(1)進(jìn)行逆變換,得到如下的函數(shù),式(2) (2)依次可算出a、b,得到所在點(diǎn)的坐標(biāo),從而顯示出來(lái)。四、主要功能電路的設(shè)計(jì) 1.基本說(shuō)明由于本系統(tǒng)設(shè)計(jì)所要求的精度較高,我們用單片機(jī)輸出脈沖控制的步進(jìn)電機(jī),每前進(jìn)一個(gè)步距的距離為0.046mm,速度易于控制,具有快速啟/停能力,可以達(dá)到精度高、速度快、定位準(zhǔn)這些優(yōu)良的性能,足以很好的滿足各項(xiàng)性能要求。反射式紅外傳感器,其工作原理為:紅外發(fā)射管發(fā)射紅外光,接收管是否接收到紅外光

14、,對(duì)應(yīng)了接收管的導(dǎo)通與截止兩種狀態(tài),導(dǎo)通時(shí)有一個(gè)變化的通光電流,我們只需對(duì)微弱的通光電流進(jìn)行上拉,變?yōu)殡妷盒盘?hào),再對(duì)這個(gè)電壓信號(hào)進(jìn)行比較,輸出開(kāi)關(guān)脈沖,由單片機(jī)的I/O口將檢測(cè)到的開(kāi)關(guān)信號(hào)送到單片機(jī)進(jìn)行識(shí)別、分析,然后發(fā)出相應(yīng)的控制指令。整體電路的設(shè)計(jì)簡(jiǎn)單合理、性能穩(wěn)定可靠。2.關(guān)鍵電路單元的考慮和計(jì)算紅外尋跡傳感器的電路設(shè)計(jì)如右圖4.1,傳感器型號(hào)采用反射式紅外發(fā)射接收管ST188,比較器采用LM339,用兩片以滿足8個(gè)紅外傳感器的需求。查資料得,紅外發(fā)射管的極限電流為50mA,我們?nèi)≈虚g態(tài)計(jì)算:,紅外接收管的通光電流最大為=0.25mA,可以計(jì)算其導(dǎo)通截止兩種狀態(tài)的電平所需電阻最小為: 圖

15、4.1 紅外尋跡電路 ,其中為導(dǎo)通管壓降,實(shí)際電路中取大于,取=。五、系統(tǒng)軟件的設(shè)計(jì)本設(shè)計(jì)以合理的定位計(jì)算和優(yōu)良的修正補(bǔ)償為主要特色,程序中這兩點(diǎn)的合理性在系統(tǒng)性能指標(biāo)實(shí)現(xiàn)中起著很大的作用。主程序: 主程序主要由四塊模式組成,即畫(huà)直線,畫(huà)圓,通過(guò)鍵盤(pán)控制物體上下左右運(yùn)動(dòng),以及寫(xiě)字(通過(guò)程序本程序?yàn)椤半姟保i_(kāi)機(jī)開(kāi)機(jī)畫(huà)面復(fù)位選擇工作類(lèi)型圓上下左右寫(xiě)“電”直線 圖5.1 主程序流程圖直線運(yùn)動(dòng)核心算法假設(shè)E(x0,y0),F(x1,y1)為給定平面范圍上的任意兩點(diǎn),作輔助線(圖中虛線部分),在直角三角形ABE中a02=(x0+15)2+(115-y0)2 (5.1)在直角三角形CDE中:b02=(9

16、5-x0)2+(115-y0)2 (5.2)同理對(duì)于F點(diǎn),兩拉線長(zhǎng)分別為:a12=(x1+15)2+(115-y1)2 (5.3)b12=(95-x1)2+(115-y1)2 (5.4)因此當(dāng)懸掛物從E點(diǎn)運(yùn)動(dòng)到F點(diǎn)時(shí):電機(jī)1的收放線長(zhǎng)度為c(當(dāng)c0時(shí),電機(jī)反轉(zhuǎn)(或拉線收縮)c=a0-a1(5.5)電機(jī)2的收放線長(zhǎng)度為d(當(dāng)d0時(shí),電機(jī)正轉(zhuǎn)(或拉線伸長(zhǎng))d=d0-d1(5.6)根據(jù)c,d的正負(fù)分別確定電機(jī)1,電機(jī)2的正反轉(zhuǎn)向。設(shè)繩索位移1mmAD變化值為P,而根據(jù)c,d的絕對(duì)值來(lái)確定電位器1,電位器2所要變化的值:電位器1所分配的數(shù)值:m=|c|*p (5.7)電位器2所分配的數(shù)值:n=|d|*

17、p (5.8)畫(huà)圓子程序:根據(jù)圓的參數(shù)方程的計(jì)算圓上點(diǎn)的坐標(biāo),通過(guò)調(diào)用畫(huà)圓程序來(lái)實(shí)現(xiàn),畫(huà)圓程序流程圖如圖4.4所示。圖4.4 畫(huà)圓子程序流程圖/*畫(huà)圓*/void draw_circularity(float rr,float x0,float y0) /rr:半徑,(x0,y0):圓心坐標(biāo)float L_l,L_r,L_l0,L_r0,inc_Ll,inc_Lr,xx,yy,xxx ; int count_l,count_r,i ; L_l0=sqrt(x0+rr+15)*(x0+rr+15)+(115-y0)*(115-y0) ;/(x0+rr,y0):畫(huà)圓起點(diǎn)坐標(biāo) L_r0=sqrt(9

18、5-x0-rr)*(95-x0-rr)+(115-y0)*(115-y0) ; for(i=1;i=0 ?0.5:-0.5) ; / 左步進(jìn)電機(jī)每步弧長(zhǎng)(厘米) count_r=inc_Lr/step_r+(inc_Lr=0 ?0.5:-0.5) ; / 右步進(jìn)電機(jī)每步弧長(zhǎng)(厘米) drive_motor(count_l,count_r) ; delay(50) ; /延時(shí)50ms L_l0=L_l ; L_r0=L_r ; 鍵盤(pán):鍵盤(pán)流程圖如圖4.5所示。4.5鍵盤(pán)模塊程序流程圖123方式456右移789左移0啟動(dòng)設(shè)置確認(rèn)圖4.3.7 44鍵盤(pán)功能圖 設(shè)置鍵:手動(dòng)對(duì)位或任意設(shè)定坐標(biāo)點(diǎn)參數(shù)鍵,

19、按下后用上、下、左、右鍵可進(jìn)行手動(dòng)對(duì)位控制,然后按確認(rèn)鍵確認(rèn),圖4.3.8所示。圖4.3.8設(shè)置鍵操作圖六 結(jié)束語(yǔ):本系統(tǒng)采用STC89C52RC單片機(jī)作為懸掛控制系統(tǒng)的檢測(cè)和控制核心,實(shí)現(xiàn)通過(guò)人機(jī)界面對(duì)物體所作運(yùn)動(dòng)進(jìn)行設(shè)定,通過(guò)LCD實(shí)時(shí)顯示此時(shí)畫(huà)筆所在的坐標(biāo)值;系統(tǒng)具有可畫(huà)出相應(yīng)的運(yùn)動(dòng)軌跡功能。運(yùn)動(dòng)參數(shù)的設(shè)定通過(guò)無(wú)線鍵盤(pán)輸入,系統(tǒng)通過(guò)比較當(dāng)前畫(huà)筆所在位置與設(shè)定位置的差異以及運(yùn)動(dòng)類(lèi)型,控制步進(jìn)電機(jī)完成相應(yīng)運(yùn)動(dòng);采用了L298驅(qū)動(dòng)芯片和PWM技術(shù)實(shí)現(xiàn)電機(jī)控制;在設(shè)計(jì)過(guò)程中,力求硬件電路簡(jiǎn)單,充分發(fā)揮軟件設(shè)計(jì)的優(yōu)勢(shì),編程靈活方便來(lái)滿足系統(tǒng)的要求。附錄: 程序:#include #include

20、#include #define Lcd_Command 0#define Lcd_Data 1#define uchar unsigned char#define uint unsigned int#define pai 3.14159 /圓周率#define step_l 0.0049 /左步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)#define step_r 0.0049 /右步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)sbit rs =P10; /1602液晶sbit rw =P11;sbit en =P12;sbit bf=P27;bit key_flag;void delay(uint z);void draw_lin

21、e(float x0,float y0,float x1,float y1);void draw_circularity(float rr,float x0,float y0);void drive_motor(int c_l,int c_r);void motor_r_frap();void motor_r_loosen();void motor_l_loosen(); void motor_l_frap(); sbit a = P30; /電機(jī)串口P3sbit b = P31;sbit c = P32;sbit d = P33;sbit e = P34;sbit f = P35;sbit

22、g = P36;sbit h = P37;uchar B1,B2;uchar x_b,x_b1,x_s,x_s1,x_g,x_g1,y_s,y_s1,y_g,y_g1,r_s;r_g;/x值,y值的百、十、個(gè)位uchar key_value,mode; / key_value 按鍵值;mode選擇模式值;uchar mode1_shape;/ 模式1 選擇圖形值uchar mode3_x,mode3_y,mode3_r;/模式3,圓心坐標(biāo)(mode3_x,mode3_y,mode3_r)uchar mode4_star_x,mode4_end_x,mode4_star_y,mode4_end_

23、y;/模式4 起、終點(diǎn)坐標(biāo)(x1,y1)(x2,y2)uchar *str1 = Mode1: Line Move;/1畫(huà)直線運(yùn)動(dòng)uchar *str2 = Mode2: Circle ;/2畫(huà)圓運(yùn)動(dòng)uchar *str3 = Mode3: Measure ;/3 鍵盤(pán)控制運(yùn)動(dòng)uchar *str4 = Mode4: Xie zhi ;/4寫(xiě)字“電”void wait();void Lcd_Write(bit style,unsigned char input);void Setpos(uchar x,uchar y);void print_char(uchar *s,uchar length

24、);void write_strdata(uchar *s,uchar length);void print_char1(uchar a);void Lcd_Init(void);void ClrScreen(void);uchar key(); void Mode_Select();/模式選擇函數(shù)void Mode2_ParameterSet();void Mode1_ParameterSet();void Mode3_ParameterSet();void Mode4_ParameterSet();void delay_ms(uint z) uint x;uchar y;for (x=z;

25、x0;x-)for (y=140;y0;y-); void delay(uint z) uint x;uchar y;for (x=z;x0;x-)for (y=110;y0;y-); /*畫(huà)直線*/void draw_line(float x0,float y0,float x1,float y1) /(x0,y0):起點(diǎn)坐標(biāo),(x0,y0):停止點(diǎn)坐標(biāo)idata float ll,inc_x,inc_y,xx,yy,L_l0,L_r0,L_l,L_r,inc_Ll,inc_Lr;idata int count_ll,count_l,count_r,i;uchar xx13,yy12; ll

26、=sqrt(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) ; /ll:斜邊長(zhǎng)度count_ll=ll/0.5+0.5 ; /count_ll:步數(shù) inc_x=(x1-x0)/count_ll ; /inc_x:x步長(zhǎng)inc_y=(y1-y0)/count_ll ; /inc_y:y步長(zhǎng) L_l0=sqrt(x0+15)*(x0+15)+(115-y0)*(115-y0) ;L_r0=sqrt(95-x0)*(95-x0)+(115-y0)*(115-y0) ;Setpos(0,1);/實(shí)時(shí)顯示write_strdata( New: xxx,yy ,16);for(i=1; i

27、=0 ?0.5:-0.5) ;count_r=inc_Lr/step_r+(inc_Lr=0 ?0.5:-0.5) ;drive_motor(count_r,count_l);/delay(50) ; /延時(shí)50ms test: x0,y0,x1,y1=10,10,40,40 L_l0=L_l ; L_r0=L_r ; /*畫(huà)圓*/void draw_circularity(float rr,float x0,float y0) /rr:半徑,(x0,y0):圓心坐標(biāo)idata float L_l,L_r,L_l0,L_r0,inc_Ll,inc_Lr,xx,yy ; idata int co

28、unt_l,count_r,i ;uchar xx13,yy12;L_l0=sqrt(x0+rr+15)*(x0+rr+15)+(115-y0)*(115-y0) ; L_r0=sqrt(95-x0-rr)*(95-x0-rr)+(115-y0)*(115-y0) ;Setpos(0,1); /實(shí)時(shí)顯示write_strdata( New: xxx,yy ,16);for(i=1;i=0 ?0.5:-0.5) ; count_r=inc_Lr/step_r+(inc_Lr=0 ?0.5:-0.5) ; drive_motor(count_l,count_r) ; / delay(50) ; /

29、延時(shí)50ms L_l0=L_l ; L_r0=L_r ; /*驅(qū)動(dòng)電機(jī)*/void drive_motor(int c_l,int c_r)int j; for(j=0;j0) motor_l_frap(); /左馬達(dá)松開(kāi)線if(c_l0) motor_l_loosen();/左馬達(dá)收緊線 for(j=0;j0) motor_r_loosen(); /右馬達(dá)松開(kāi)線 if(c_r0) motor_r_frap() ; /右馬達(dá)收緊線 /*左馬達(dá)收緊線*/void motor_r_frap()B2+; if(B2=5) B2=1; switch (B2) case 1: a=1;b=0;c=0;d

30、=0;delay(15);break;case 2: a=0;b=1;c=0;d=0;delay(15);break;case 3: a=0;b=0;c=1;d=0;delay(15);break;case 4: a=0;b=0;c=0;d=1;delay(15);break; /*左馬達(dá)松開(kāi)線*/void motor_r_loosen() B2-;if(B2=0) B2=4; switch (B2) case 1: a=1;b=0;c=0;d=0;delay(15);break;case 2: a=0;b=1;c=0;d=0;delay(15);break;case 3: a=0;b=0;c

31、=1;d=0;delay(15);break;case 4: a=0;b=0;c=0;d=1;delay(15);break; /*右馬達(dá)收線*/void motor_l_loosen() B1+; if(B1=5) B1=1; switch (B1) case 1: e=1;f=0;g=0;h=0;delay(15);break;case 2: e=0;f=1;g=0;h=0;delay(15);break;case 3: e=0;f=0;g=1;h=0;delay(15);break;case 4: e=0;f=0;g=0;h=1;delay(15);break;/*右馬達(dá)放線*/void

32、 motor_l_frap()B1-;if(B1=0) B1=4; switch (B1) case 1: e=1;f=0;g=0;h=0;delay(15);break;case 2: e=0;f=1;g=0;h=0;delay(15);break;case 3: e=0;f=0;g=1;h=0;delay(15);break;case 4: e=0;f=0;g=0;h=1;delay(15);break; void main()uchar i;B1=4;B2=4;Lcd_Init();Setpos(16,0);write_strdata(,15); /歡迎語(yǔ) 淮南師范學(xué)院Setpos(16

33、,1);write_strdata(xgydkz: kxhappy,16);/ 歡迎語(yǔ) 懸掛運(yùn)動(dòng)控制 kx工作室for(i = 0;i 16;i+)Lcd_Write(Lcd_Command,0x18);/光標(biāo)和顯示字符一起移動(dòng)delay_ms(200); while(1)key_value = key();if(key_flag = 1)key_flag = 0;if( key_value = 10)/模式鍵按下Mode_Select();if(key_value =14)/設(shè)定鍵按下;if(mode = 2)/模式2 畫(huà)圓Mode2_ParameterSet();if(mode = 1)/

34、模式1 畫(huà)直線 Mode1_ParameterSet();if(mode = 3) Mode3_ParameterSet();if(mode = 4) Mode4_ParameterSet();if(key_value =13) /開(kāi)始鍵按下if(mode = 2)ClrScreen();write_strdata(str2,16);draw_circularity(mode3_r,mode3_x,mode3_y);while(1);if(mode = 1)ClrScreen();write_strdata(str1,16);draw_line(mode4_star_x,mode4_star_

35、y,mode4_end_x,mode4_end_y); /出發(fā)delay(30000) ; /暫停draw_line(mode4_end_x,mode4_end_y,mode4_star_x,mode4_star_y); /返回while(1); /1602 忙否void wait()while(1)P2= 0xff;rs = 0;rw = 1;en =0;en =1;if(bf = 0)break;/*功能:寫(xiě)函數(shù) *參數(shù):style為寫(xiě)命令/數(shù)據(jù),0-命令,1-數(shù)據(jù);input為寫(xiě)入的8位 *命令/數(shù)據(jù) */void Lcd_Write(bit style,unsigned char input)wait();P2= input;rs = style; rw = 0;en = 1;en = 0;/*顯示位置*/void Setpos(uchar x,uchar y)if(y=0) Lcd_Write(Lcd_Command,0x80+x); /第一行else Lcd_Write(Lcd_Command,0xc0+x); /第二行/寫(xiě)字符串void write_strdata(uchar *s,uchar length)uchar i;for(i= 0;ilength;i+) Lcd_Write(Lcd_Data,*s); s+;/*功能:寫(xiě)數(shù)字字母 *參數(shù):顯示數(shù)組,長(zhǎng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論