基于計(jì)算機(jī)控制的光碟智能存取裝置研制論文_第1頁
基于計(jì)算機(jī)控制的光碟智能存取裝置研制論文_第2頁
基于計(jì)算機(jī)控制的光碟智能存取裝置研制論文_第3頁
基于計(jì)算機(jī)控制的光碟智能存取裝置研制論文_第4頁
基于計(jì)算機(jī)控制的光碟智能存取裝置研制論文_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、. . . . 目目 錄錄一、項(xiàng)目簡介一、項(xiàng)目簡介1 1二、主要?jiǎng)?chuàng)新點(diǎn)二、主要?jiǎng)?chuàng)新點(diǎn)1 1三、研究背景、目的和意義三、研究背景、目的和意義2 2四、探究過程四、探究過程2 21.研究方案探究 22.技術(shù)路線圖 43.結(jié)構(gòu)設(shè)計(jì) 54.計(jì)算機(jī)管理功能的實(shí)現(xiàn) 85.精確定位的實(shí)現(xiàn) 176.路徑算法的優(yōu)化與創(chuàng)新應(yīng)用 257.設(shè)備連接與調(diào)試 338.智能應(yīng)用 379.改進(jìn) 37五、展望和應(yīng)用五、展望和應(yīng)用4141六、感六、感4343七、附件七、附件4343. . . . 1 / 49全國青少年科技創(chuàng)新大賽全國青少年科技創(chuàng)新大賽基于計(jì)算機(jī)控制的光碟智能存取裝置基于計(jì)算機(jī)控制的光碟智能存取裝置-隨機(jī)存儲(chǔ)、自

2、動(dòng)搜索與控制、路徑優(yōu)化算法的創(chuàng)新與應(yīng)用一、項(xiàng)目簡介一、項(xiàng)目簡介本項(xiàng)目的最終目標(biāo)最終目標(biāo)是實(shí)現(xiàn)一種基于計(jì)算機(jī)控制的光碟智能存取裝置,是一個(gè)集計(jì)算機(jī)管理與軟件開發(fā)、算法設(shè)計(jì)與控制為一體的計(jì)算機(jī)應(yīng)用系統(tǒng)。完善后可以廣泛應(yīng)用于圖書館、檔案館、電視臺(tái)、廣播電臺(tái)、博物館、資料室等需要管理大宗信息和資料的單位。主要研究容包括主要研究容包括:取多盤執(zhí)行機(jī)構(gòu)路徑優(yōu)化算法的研究與探討;執(zhí)行機(jī)構(gòu)精度控制算法的研究與軟件設(shè)計(jì);光盤管理信息系統(tǒng)設(shè)計(jì)與程序開發(fā);單片機(jī)控制與驅(qū)動(dòng)系統(tǒng)設(shè)計(jì);光盤位置檢測的實(shí)現(xiàn);存儲(chǔ)機(jī)構(gòu)設(shè)計(jì)與加工;整機(jī)系統(tǒng)的試驗(yàn)研究與改進(jìn)等。系統(tǒng)裝置實(shí)現(xiàn)如下功能如下功能:光光碟隨機(jī)存儲(chǔ)功能碟隨機(jī)存儲(chǔ)功能,光碟

3、存放時(shí)不需要按分類和編號(hào)進(jìn)行對號(hào)入座和固定存放,即:哪里有空位就哪里存放;光碟自動(dòng)搜索與控制功能光碟自動(dòng)搜索與控制功能:按存放位置自動(dòng)更新、分層分類,并按照關(guān)鍵字進(jìn)行自動(dòng)搜索的數(shù)據(jù)庫設(shè)計(jì),實(shí)現(xiàn)對光碟基本信息的瀏覽、自動(dòng)搜索和查找功能。同時(shí),光碟取出執(zhí)行機(jī)構(gòu)會(huì)按照搜索到的光碟位置信息,自動(dòng)彈出要查找的光碟;取多盤路徑優(yōu)化功能取多盤路徑優(yōu)化功能,執(zhí)行取多盤功能時(shí),應(yīng)用與計(jì)算機(jī)進(jìn)行通信的單片機(jī)控制電路、驅(qū)動(dòng)電路和執(zhí)行結(jié)構(gòu),以路徑最短方式進(jìn)行路徑優(yōu)化設(shè)計(jì),實(shí)現(xiàn)多盤自動(dòng)彈出功能。稍做簡化可直接進(jìn)入家庭。系統(tǒng)裝置具有廣泛的應(yīng)用前景和市場推廣價(jià)值。 二、主要?jiǎng)?chuàng)新點(diǎn)二、主要?jiǎng)?chuàng)新點(diǎn)1) 取多盤路徑尋優(yōu)算法與創(chuàng)新

4、應(yīng)用。本系統(tǒng)具有一次取多盤路徑優(yōu)化功能,. . . . 2 / 49采用了改進(jìn)的回溯尋優(yōu)法尋找最佳路徑,利用截枝分界法來提高搜索效率,并對分界比較值進(jìn)一步優(yōu)化,使系統(tǒng)的取盤效率大大提高。2) 在取盤機(jī)構(gòu)位置控制精度方面,本系統(tǒng)在普通分段線性化的基礎(chǔ)上進(jìn)行了改進(jìn),對取盤機(jī)構(gòu)上的控制上采用了斜率分段線性化優(yōu)化算法,使取盤的位置精度得到保證。3)本系統(tǒng)裝置功能人性化,充分考慮實(shí)用性與應(yīng)用型,是集光、機(jī)、電、控制與信息為一體的綜合智能化計(jì)算機(jī)實(shí)際應(yīng)用系統(tǒng)。三、研究背景、目的和意義三、研究背景、目的和意義隨著科學(xué)技術(shù)和文化事業(yè)的發(fā)展,光碟的數(shù)量是越來越多,而從林林總總的光碟中找到自己需要的光盤是一件費(fèi)時(shí)

5、費(fèi)力的事情。有一天,我為了找老鷹樂隊(duì)的珍藏碟,我花了一個(gè)上午的時(shí)間,將所有的碟翻了出來才找到。這不僅浪費(fèi)了我的時(shí)間,也破壞了我那天的好心情。當(dāng)時(shí)我就在想,是否可以有那么一個(gè)裝置,存儲(chǔ)物品的時(shí)候可以隨意放置,取出的時(shí)候裝置可以自動(dòng)找到物品并把物品自動(dòng)取出來。這樣一個(gè)想法激發(fā)了我對這方面的探究興趣。這樣的裝置研究出來,將對許多需要物品存儲(chǔ)管理的場合和單位非常有用。光碟是目前用途最廣、也是最可靠的信息載體,經(jīng)過調(diào)研,我發(fā)現(xiàn)圖書館,檔案館,電視臺(tái),廣播電臺(tái),博物館,資料室等這樣的一些單位,保存、管理和使用數(shù)量巨大的光碟,以此作為切入口,我選擇了以光碟自動(dòng)存取作為研究對象開始我的探究之路。四、探究過程四

6、、探究過程1.1.研究方案探究研究方案探究首先,這是一個(gè)自動(dòng)裝置,結(jié)構(gòu)方面應(yīng)該緊湊,要爭取在有限的空間存放盡可能多的光盤。根據(jù)觀察,發(fā)現(xiàn)檔案館里存放檔案的檔案柜的設(shè)計(jì)和放置十. . . . 3 / 49分合理,一排排緊湊放置,每排僅留一個(gè)機(jī)動(dòng)的操作位,由于每個(gè)柜底下有導(dǎo)軌和滑輪,柜子可以依次移動(dòng),當(dāng)取檔案時(shí),把操作位調(diào)整到合適位置就可以進(jìn)行操作。同時(shí),市面上有一種柵格一樣的結(jié)構(gòu),可以裝幾十去掉封套、僅保存光碟本身的光碟盒也是一種好的結(jié)構(gòu)。將這兩種結(jié)構(gòu)結(jié)合在一起,就是我設(shè)想中的智能光碟存取裝置結(jié)構(gòu)(如圖 1.1) 。其中,柵格為多層層疊式,每層兩組,自動(dòng)取盤機(jī)構(gòu)設(shè)在中間,可以把選擇的光碟從兩邊彈

7、出。圖 1.1 初步設(shè)想中的智能光碟存取裝置結(jié)構(gòu)其次,既然要實(shí)現(xiàn)智能功能,每個(gè)柜子應(yīng)設(shè)計(jì)計(jì)算機(jī)控制系統(tǒng),本系統(tǒng)考慮用設(shè)有觸摸屏的計(jì)算機(jī)控制系統(tǒng)實(shí)現(xiàn)其智能功能。光碟隨機(jī)存儲(chǔ)功能光碟隨機(jī)存儲(chǔ)功能-光碟存放時(shí)不需按分類和編號(hào)進(jìn)行對號(hào)入座和固定存放,哪里有空位就哪里存放。光碟自動(dòng)搜索與控制功能光碟自動(dòng)搜索與控制功能方便光碟基本信息方便的瀏覽、搜索和查找。光碟光碟自動(dòng)彈出功能自動(dòng)彈出功能-應(yīng)用控制電路驅(qū)動(dòng)執(zhí)行結(jié)構(gòu),將選擇的光碟自動(dòng)彈出??紤]到每個(gè)柜中可以儲(chǔ)存的光碟容量很大(估計(jì) 5000-8000 個(gè)) ,單個(gè)光碟設(shè)計(jì)一個(gè)彈出機(jī)構(gòu)是不現(xiàn)實(shí)的,可以考慮用計(jì)算機(jī)控制的 X-Y 滑塊方式來實(shí)現(xiàn),我想這種方式用

8、計(jì)算機(jī)來控制是應(yīng)該可以做到的。目前市面上那些光碟管理柜(裝置)多半是先人工分類編號(hào),存放的時(shí)候一一對號(hào)入座,而且也少有自動(dòng)彈出機(jī)構(gòu)。我設(shè)計(jì)的這個(gè)智能光碟存取裝置不僅設(shè)有自動(dòng)彈出機(jī)構(gòu),而且光碟實(shí)現(xiàn)可以隨意存放在任意的空閑位置上,裝置自動(dòng)識(shí)別出位置,并記錄起來以便以后自動(dòng)尋找,這一點(diǎn),對圖書館,檔案館,電視臺(tái),廣播電臺(tái),博物館,資料室等這樣需要保存、管理和使用數(shù)量巨大的. . . . 4 / 49光碟的一些單位相當(dāng)有用。圖書館一天從借閱者還書時(shí)回收上百書帶光碟(現(xiàn)在好多書都配光碟,它們與書分開存放) ,管理員每天要將它們一一對號(hào)入座,將是多大的工作量??!2.2.技術(shù)路線圖技術(shù)路線圖帶著這個(gè)問題,我

9、征詢了老師和爸爸的意見,他們?nèi)χС趾凸膭?lì)我對這個(gè)問題進(jìn)行探討,并聯(lián)系了華南理工大學(xué)自動(dòng)化學(xué)院老師對我進(jìn)一步的指導(dǎo)。經(jīng)過溝通,老師對我的研究方案提出了兩點(diǎn)意見和建議:一是方案提出“不需按分類和固定位置存放”解決光碟存放問題符合當(dāng)前倉庫管理理念,是一種新趨勢,方案可行,具有廣闊的應(yīng)用前景。支持我以此為目標(biāo),為最后形成實(shí)際應(yīng)用產(chǎn)品而努力。但就目前而言,建議分段實(shí)施。二是項(xiàng)目涉與計(jì)算機(jī)、單片機(jī)、自動(dòng)化、機(jī)械設(shè)計(jì)與加工,電路設(shè)計(jì)、數(shù)學(xué)、物理等多個(gè)學(xué)科門類的知識(shí),有些已經(jīng)大大超出高中學(xué)生的要求,提出只要有興趣和毅力,邊學(xué)邊實(shí)現(xiàn),可以完成預(yù)定的目標(biāo)。老師的意見給予我信心。在老師們的幫助下,我重新調(diào)整了方案

10、。簡要講就是設(shè)計(jì)用一組柵格,先做一個(gè)可以存放 200 個(gè)左右光碟的單元柜,實(shí)現(xiàn)主要功能進(jìn)行可行性試驗(yàn)和測試,發(fā)現(xiàn)問題,彌補(bǔ)不足并積累經(jīng)驗(yàn),待成功后才向前推進(jìn)。控制系統(tǒng)和計(jì)算機(jī)數(shù)據(jù)庫系統(tǒng)先采用單片機(jī)+普通計(jì)算機(jī)來實(shí)現(xiàn),待成功后用一體機(jī)(老師說是工業(yè)計(jì)算機(jī),可配觸摸屏)轉(zhuǎn)變(圖 2.1) 。圖 2.1 經(jīng)咨詢討論后確定的試驗(yàn)樣機(jī)裝置圖. . . . 5 / 49所擬的技術(shù)路線圖如下:3.3.結(jié)構(gòu)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)光電管位置檢測方案的選定光電管位置檢測方案的選定在整個(gè)設(shè)計(jì)過程中,首先應(yīng)解決的問題是如何實(shí)現(xiàn)隨意存儲(chǔ)功能。整個(gè)方案反反復(fù)復(fù)修改了幾次,是本探究學(xué)習(xí)的主要難點(diǎn)和重點(diǎn)之一。探究過程如下:首先,我想到

11、了普通的滑動(dòng)變阻器。根據(jù)電阻長度位置的不同而阻值不同的特性,可以通過測量電路中電阻的阻值,就可以將阻值與光碟位置一一對應(yīng)起來。但是,經(jīng)過我的實(shí)驗(yàn),我發(fā)現(xiàn)每次測量同一位置的電阻值并不是一個(gè)定值,而且不同位置的電阻值相差的又不是很大,很難與光碟位置一一對應(yīng),數(shù)據(jù)處理起來非常的困難,所以我選擇放棄。. . . . 6 / 49圖 3.1 滑動(dòng)變阻器的原理圖接著,我又想到了觸動(dòng)開關(guān),就是在每個(gè)光碟的存放位置安放一個(gè)觸動(dòng)彈片來感知光碟的位置。對此,我還去專門的電子市場去尋找相應(yīng)的材料?;氐郊抑泻?,我將它們焊接到一塊電路板上做可行性實(shí)驗(yàn)。雖然電路很簡單,元器件比較少,但是線路卻非常繁雜,檢查電路也成為了一

12、件異常費(fèi)力的事情。所以為了接通這十六個(gè)觸動(dòng)開關(guān)組成的電路,整整花了我一天的時(shí)間。正當(dāng)我正高興于實(shí)驗(yàn)的成功時(shí),我發(fā)現(xiàn),僅僅十六個(gè)觸動(dòng)開關(guān)就占用了很大的面積。因?yàn)檫@是我在市面上找到的最小型號(hào)觸動(dòng)開關(guān),而將來要設(shè)計(jì)出可以存儲(chǔ) 1000 光碟的裝置時(shí),裝置的占地面積將會(huì)異常巨大,這違背了我結(jié)構(gòu)設(shè)計(jì)方面的宗旨,況且觸動(dòng)開關(guān)的反應(yīng)并不像想象中的靈敏,所以我決定找尋更佳的方案。圖 3.2 觸動(dòng)開關(guān)示意圖再者,通過以前對數(shù)字電路學(xué)習(xí)的基礎(chǔ),我想到了一種可以有效減少數(shù)據(jù)線數(shù)量的方案薄膜開關(guān)。也就是說,連接八條數(shù)據(jù)線,那么就有 28256種狀態(tài)。每個(gè)光碟槽放置一個(gè)薄膜開關(guān),每個(gè)開關(guān)對應(yīng)一種狀態(tài),這樣就可以識(shí)別出光

13、碟的位置,從而實(shí)現(xiàn)隨意存儲(chǔ)的功能。我的這個(gè)想法得到了指導(dǎo)老師的高度贊揚(yáng),說這是一個(gè)很好的想法。但是由于電子市場根本沒有這樣的開關(guān)賣,訂做會(huì)導(dǎo)致成本很高,而且可靠性不高。無奈之下,只能放棄了這個(gè)很好的方案。. . . . 7 / 49圖 3.3薄膜開關(guān)示意圖最后,通過在網(wǎng)上論壇的討論,我終于發(fā)現(xiàn)了一個(gè)目前來說的最佳選擇-光電檢測管。它有著體積小、反應(yīng)靈敏和可靠性高優(yōu)點(diǎn)。我的設(shè)想是在每個(gè)光碟存放位置的前端安放一對光電檢測管,當(dāng)有光碟存放時(shí),它可以觸發(fā)信號(hào),送給上層管理系統(tǒng),使其識(shí)別并記憶光碟所處的位置。通過實(shí)驗(yàn)發(fā)現(xiàn),開關(guān)反應(yīng)靈敏,工作可靠,而且在市面上可以買到尺寸非常小的此類開關(guān)(大約 3 毫米左

14、右) 。因此,最后確定選用光電檢測管來實(shí)現(xiàn)自動(dòng)檢測光碟位置的功能。光電檢測管的排布設(shè)計(jì)光電檢測管的排布設(shè)計(jì)我對于結(jié)構(gòu)方面設(shè)計(jì)的初衷是:在有限的空間里可以存放盡可能多的光盤。所以,我決定采用柵格結(jié)構(gòu),因?yàn)樗目臻g利用率是最高的。依照原來的設(shè)想,光電檢測管是按“一”字型排列的。但是通過觀察發(fā)現(xiàn),以這種排列方式的話,光電檢測管的兩壁會(huì)占用較多的空間,我當(dāng)時(shí)就在想能不能把這部分的空間也充分利用起來。通過多種擺放方案的嘗試,終于發(fā)現(xiàn)通過“品”字型的排布是空間利用率最好的排布。圖 3.4a “一“字型排布示意圖圖 3.4b “品”字型排布示意圖. . . . 8 / 49取盤機(jī)構(gòu)的設(shè)計(jì)取盤機(jī)構(gòu)的設(shè)計(jì)根據(jù)測

15、量,光碟的厚度是大約是 1.25mm,設(shè)想中光碟之間的距離是盡可能窄的。要在這么小的距離自動(dòng)取出光碟是比較麻煩的事情。開始我想到的是利用機(jī)械手臂,但是機(jī)械手臂體積太大結(jié)構(gòu)太復(fù)雜,同時(shí)也涉與到了太復(fù)雜的技術(shù),考慮用機(jī)械手臂這個(gè)方案不現(xiàn)實(shí),放棄。方案的選擇陷入了僵局,通過電視我發(fā)現(xiàn)實(shí)際工程應(yīng)用中有很多精密控制的例子,我決定去工廠參觀來尋找解決方案。通過與那里師傅的交流,我獲益匪淺,最終采用了絲桿+螺母結(jié)構(gòu)的雙步進(jìn)電機(jī)作為執(zhí)行機(jī)構(gòu)。雙步進(jìn)電機(jī)的一個(gè)負(fù)責(zé)軸向運(yùn)動(dòng),另一個(gè)負(fù)責(zé)推出光碟。4.4.計(jì)算機(jī)管理功能的實(shí)現(xiàn)計(jì)算機(jī)管理功能的實(shí)現(xiàn)我的光盤管理軟件設(shè)計(jì)主要可以分為兩個(gè)階段,分別是前期探索,實(shí)際設(shè)計(jì)。前期

16、探索前期探索所謂萬事起頭難,現(xiàn)在想起我剛開始的時(shí)候,還真有點(diǎn)苦盡甘來的感覺。當(dāng)決定要設(shè)計(jì)一個(gè)光盤管理系統(tǒng)后,通過與指導(dǎo)老師商討和在網(wǎng)上搜索,我決定利用 VB 和數(shù)據(jù)庫進(jìn)行開發(fā),選擇 VB 是因?yàn)橹拔覍λ?jīng)有所接觸,有一定的基礎(chǔ),而且老師說 VB 語言入門比較容易,對專業(yè)知識(shí)要求不高,而且控件資源比較豐富。但對于數(shù)據(jù)庫我的概念就比較模糊,只感覺是一門高深的學(xué)問與容。雖說我有一點(diǎn) VB 的基礎(chǔ),可是要開發(fā)一個(gè)軟件還是有所欠缺。老師說我應(yīng)該循序漸進(jìn),所以我第一步是以設(shè)計(jì)一個(gè)簡易計(jì)算器為目標(biāo)的,作為一個(gè)前期的學(xué)習(xí)階段。. . . . 9 / 49圖 4.1 我設(shè)計(jì)的簡易計(jì)算器不要以為設(shè)計(jì)計(jì)算器很簡

17、單,記得那時(shí)候我花了整整大半個(gè)月的時(shí)間,特別是某些細(xì)節(jié)的地方,例如在 VB 中的 TEXT 控件,顯示的是從左到右的,但計(jì)算器是從右到左的,開始時(shí)我也沒有注意,但和 Windows 上附件中自帶的做比較后,發(fā)現(xiàn)這個(gè)問題,通過在網(wǎng)上搜索,知道是需要修改控件的屬性。還有就是數(shù)據(jù)的類型也要特別注意,因?yàn)槔?TEXT 控件來顯示數(shù)據(jù)和結(jié)果,他需要的是字符型的數(shù)據(jù),而在運(yùn)算過程中,利用的是數(shù)字型的數(shù)據(jù),這樣在不同的地方就要對數(shù)據(jù)進(jìn)行恰當(dāng)?shù)霓D(zhuǎn)換。還有的是中間變量的設(shè)置也需要注意它的類型匹配,總之,雖然這個(gè)例子對其他人可能比較簡單,但通過它我掌握了 VB 程序開發(fā)的過程,基本控件的使用方法還有數(shù)據(jù)利用的原

18、則。學(xué)會(huì)使用 VB 僅僅是個(gè)開始,因?yàn)槲以O(shè)計(jì)的系統(tǒng)中需要用到數(shù)據(jù)庫,而這方面我完全沒有學(xué)習(xí)過的。開始時(shí)在網(wǎng)上找了些資料看,但看了很久還是沒有頭緒。指導(dǎo)老師針對我系統(tǒng)的設(shè)計(jì)需求,給我有針對性地進(jìn)行輔導(dǎo)。經(jīng)過他的講解,我終于對數(shù)據(jù)庫中,例如關(guān)系數(shù)據(jù)庫,表,視圖,關(guān)鍵字,搜索等一些概念有了基本了解。老師還為我講解了數(shù)據(jù)庫中常用的 SQL 語言,通過學(xué)習(xí),我知道了基本的數(shù)據(jù)庫操作語言,例如 insert、delete、update、select 等命令的使用格式。根據(jù)老師給的資料,我開始按著提示,利用 Office 中自帶的Access 數(shù)據(jù)庫軟件,建立自己的數(shù)據(jù)庫。. . . . 10 / 49圖

19、4.2練習(xí)建立的圖書信息表由于系統(tǒng)中需要利用 VB 對數(shù)據(jù)庫進(jìn)行操作,從資料上我知道,VB 通過 ADO可以方便對數(shù)據(jù)庫進(jìn)行操作的。其實(shí)從現(xiàn)在我的理解來說,ADO 應(yīng)該相當(dāng)于一個(gè)橋梁,利用它可以使 VB 和數(shù)據(jù)庫進(jìn)行連接,而 VB 送到數(shù)據(jù)庫的是 SQL 數(shù)據(jù)庫操作語言,而從數(shù)據(jù)庫回來的是查詢的數(shù)據(jù)。為了練習(xí)如何利用 ADO 對數(shù)據(jù)庫進(jìn)行操作,對著書本上的例子,我做了一個(gè)數(shù)據(jù)庫數(shù)據(jù)查詢器,利用它可以對數(shù)據(jù)庫所建立的表中數(shù)據(jù)進(jìn)行查詢,并把結(jié)果顯示出來。圖 4.3 我設(shè)計(jì)的數(shù)據(jù)查詢器這個(gè)例子對與我后面的設(shè)計(jì)起到了很大的幫助,通過它不但知道了如何在VB 中利用 ADO 控件對數(shù)據(jù)庫中表的數(shù)據(jù)進(jìn)行查詢

20、,還知道了可以利用 DATAGRID. . . . 11 / 49控件對數(shù)據(jù)進(jìn)行顯示。之前的學(xué)習(xí)主要是了解和熟悉各個(gè)控件的使用,對數(shù)據(jù)庫和 VB 中的一些基本原理更加了解。在正式開始系統(tǒng)設(shè)計(jì)前,我通過書上例子,設(shè)計(jì)出了一個(gè)簡易的圖書管理軟件。這個(gè)軟件從包括從數(shù)據(jù)庫的建立,數(shù)據(jù)表的設(shè)計(jì),到 VB 中界面的設(shè)計(jì),各個(gè)控件的使用和協(xié)調(diào),數(shù)據(jù)的查詢搜索,更新,刪除等都用上了,是我之前所學(xué)知識(shí)的一個(gè)綜合使用。我對著參考書一個(gè)一個(gè)語句看,一個(gè)部分一個(gè)部分地嘗試,用了整整一個(gè)多月的時(shí)間,把書上例子中的主要功能都實(shí)現(xiàn)了。通過這個(gè)練習(xí),我對自己需要設(shè)計(jì)的系統(tǒng)有了更多的了解,我知道該如何下手了。我的系統(tǒng)也是在這個(gè)

21、例子的基礎(chǔ)上建立起來的。圖 4.4 我做的圖書管理軟件界面實(shí)際設(shè)計(jì)實(shí)際設(shè)計(jì)通過前期的準(zhǔn)備,我對 VB 程序設(shè)計(jì),數(shù)據(jù)庫使用以與其的二次開發(fā)有了更深的了解。在前期的基礎(chǔ)上,我開始一部分一部分地設(shè)計(jì)自己的光盤管理軟件。對于整個(gè)系統(tǒng)來說,其核心部分應(yīng)該是數(shù)據(jù)庫,而其中表的建立是基礎(chǔ)。表中的數(shù)據(jù)要設(shè)置得合適,數(shù)據(jù)之間的相互關(guān)聯(lián)性要好,而且要避免冗余。我開始時(shí)先把想到的需要保存的信息制作出幾個(gè)表來,其中包括光盤信息表,用戶信息表,針對著這兩個(gè)表在 VB 中分別建立連接。可是隨著編程中發(fā)現(xiàn),這樣的表設(shè)置不是很合理,例如光盤信息表中光盤存放位置等信息,這些信息是可以隨時(shí)更改的,而例如光盤名字,光盤備注等信息

22、不是經(jīng)常要更新,這樣的信息應(yīng)該有所區(qū)別,還有,就是光盤的分類,應(yīng)該獨(dú)立來處理比較合理。這樣一步一. . . . 12 / 49步地嘗試,我現(xiàn)在是在整個(gè)數(shù)據(jù)庫中建立了幾數(shù)據(jù)表,分別是光盤基本信息表,光盤分類表,用戶資料表,光盤動(dòng)態(tài)信息表等。我設(shè)想中的管理系統(tǒng),它應(yīng)該具有信息查詢、信息瀏覽、添加、編輯、刪除、取盤等功能,并且能夠和單片機(jī)進(jìn)行通信,實(shí)現(xiàn)對取盤執(zhí)行機(jī)構(gòu)的控制。根據(jù)以上需求,設(shè)計(jì) VB 框架如下:圖 4.5 VB 框架圖主窗體設(shè)計(jì)主窗體設(shè)計(jì)主窗體是打開軟件時(shí)的第一個(gè)窗體,對于數(shù)據(jù)庫的一切操作都是在它上面完成。利用 VB 工具中的“菜單欄設(shè)計(jì)”命令,可以很簡單地設(shè)計(jì)出想要的窗體結(jié)構(gòu)。具體設(shè)

23、計(jì)見下圖:圖 4.6 主窗體結(jié)構(gòu)效果如下:. . . . 13 / 49圖 4.7 效果在主窗體中插入兩個(gè)菜單欄,分別為“基本信息管理”和“系統(tǒng)用戶管理” 。在“基本信息管理”中各子菜單實(shí)現(xiàn)功能如下:CD 分類管理:實(shí)現(xiàn)光碟類別的添加、修改、刪除CD 信息管理:實(shí)現(xiàn)光碟信息的添加、修改、刪除、取盤、瀏覽、查詢“系統(tǒng)用戶管理”中各子菜單實(shí)現(xiàn)功能如下:用戶管理:當(dāng)用戶是管理者時(shí)可以對其他用戶進(jìn)行刪除修改密碼:當(dāng)前登錄用戶可以修改自己的登陸密碼CDCD 分類管理子窗體設(shè)計(jì)分類管理子窗體設(shè)計(jì)當(dāng)存放的光碟數(shù)目比較多的時(shí)候,對于光碟的快速查找和瀏覽就有比較高的要求,為了提高管理效率,應(yīng)該對光碟分類進(jìn)行管理

24、,而不同用戶對于光碟類別的區(qū)分不大一樣,所以本設(shè)計(jì)對光碟類別進(jìn)行動(dòng)態(tài)管理。對于光碟分類設(shè)立一個(gè)專門的表來儲(chǔ)存信息,用戶可以根據(jù)設(shè)計(jì)的需求對光碟類別進(jìn)行添加、修改、刪除,這樣就能夠把各種光碟分門別類地保存起來。 為了更好地顯示分類效果,利用 VB 中的 TreView 控件,形成樹狀顯示結(jié)構(gòu),這樣就能夠清楚地察看分類情況。具體實(shí)現(xiàn)效果如下:圖 4.8 分類對于選定的分類,可以按需要隨時(shí)添加、修改、刪除下一層節(jié)點(diǎn)。分類編輯子窗體如下:. . . . 14 / 49圖 4.9 分類編輯子窗體CDCD 信息管理子窗體設(shè)計(jì)信息管理子窗體設(shè)計(jì)這是本管理軟件的核心窗口,要完成對于光碟的主要操作。它能夠?qū)崿F(xiàn)光

25、碟信息的添加、修改、刪除、快速查找、取盤等功能。具體設(shè)計(jì)窗體如下:圖 4.10 信息管理子窗體對于查找功能,用戶可以從兩種方法實(shí)現(xiàn)。第一是利用光碟分類管理形成的結(jié)構(gòu),把不同的光碟分門別類地顯示出來,用戶只需要打開對應(yīng)的樹狀分類表就可以瀏覽對應(yīng)光碟的信息。第二種方法是快速查找,用戶利用紅外掃描儀把貼在光碟上的標(biāo)簽號(hào)輸入到快速查找框,察看對應(yīng)光碟的信息,可用戶還可以選擇關(guān)鍵字查找方式,在快速查找框中輸入光碟名稱的關(guān)鍵字來實(shí)現(xiàn)模糊查找。. . . . 15 / 49圖 4.11 模糊查找管理軟件中碟信息的輸入只需輸入一次。有兩種途徑,第一是用戶直接在快速查找框中掃描輸入新的條形碼編號(hào),軟件會(huì)自動(dòng)查詢

26、數(shù)據(jù)庫中的信息,當(dāng)發(fā)現(xiàn)為新的信息時(shí)會(huì)自動(dòng)調(diào)用添加信息窗體。圖 4.12 碟信息輸入窗口第二種途徑是用戶自己在對應(yīng)分類的圖書列表中直接按添加按鈕添加新的信息。軟件會(huì)自動(dòng)調(diào)用碟信息輸入窗口。用戶按要求填寫好信息,按保存按鈕就可以把新的光碟信息保存下來。當(dāng)填入的信息不對或者忘記填寫時(shí),軟件會(huì)彈出提示窗口。圖 4.13 提示窗口. . . . 16 / 49用戶管理子窗體設(shè)計(jì)用戶管理子窗體設(shè)計(jì)本軟件有用戶使用限制,用戶可以根據(jù)需要設(shè)計(jì)用戶密碼來防止別人修改數(shù)據(jù)庫中的容。當(dāng)?shù)卿涇浖r(shí)候,軟件會(huì)自動(dòng)彈出登錄信息窗體: 圖 4.14 身份驗(yàn)證只有輸入正確的用戶名和對應(yīng)密碼才能進(jìn)入軟件。而在軟件中用戶可以根據(jù)

27、實(shí)際需要設(shè)立和修改用戶名和對應(yīng)密碼,編輯子窗口如下:圖 4.15 用戶信息按確認(rèn)后軟件會(huì)把數(shù)據(jù)儲(chǔ)存到對應(yīng)的用戶管理表中。所設(shè)計(jì)的數(shù)據(jù)庫界面如下圖所示:(a). . . . 17 / 49(b)圖 4.16 數(shù)據(jù)庫設(shè)計(jì)界面5.5.精確定位的實(shí)現(xiàn)精確定位的實(shí)現(xiàn)單片機(jī)的學(xué)習(xí)單片機(jī)的學(xué)習(xí)通過前一段時(shí)間的軟件設(shè)計(jì),我電腦上的管理軟件已經(jīng)有了個(gè)基本框架了,而光碟存放的機(jī)械結(jié)構(gòu)已經(jīng)委托機(jī)械廠師傅幫我加工,現(xiàn)在的問題是怎么用我電腦上的管理軟件來控制光碟存放裝置,讓它完成我設(shè)想中的隨意存放光碟和自動(dòng)取光碟的功能。我設(shè)想中是利用電腦直接控制電機(jī)和接受信號(hào)就可以了。但事實(shí)上并不是這樣的。那次去工廠參觀時(shí),我特意去問

28、了這個(gè)問題,工作的師傅說他們設(shè)計(jì)的那些裝置都有自己的控制單元。例如 PLC,DSP,單片機(jī)等等,這些東西我都沒有接觸過,我把我的想法同他們交流,他們建議我可以利用單片機(jī)作為裝置的控制單元。利用它與電腦進(jìn)行通信,并且控制裝置上的其他東西。因?yàn)楦咧姓n程中沒有接觸過單片機(jī),所以為了方案的實(shí)施,我開始了單片機(jī)的學(xué)習(xí)歷程。我因?yàn)榇蛩阌?C 語言編寫單片機(jī)程序,所以首先我先去購書中心買了一本有關(guān) C 語言入門和單片機(jī)教程的書籍來看。我的鄰居是一個(gè)在校研究生,名叫小何,是自動(dòng)化控制專業(yè)的,我打算向他請教有關(guān)方面的知識(shí)。他建議我用 AVR 的單片機(jī)來做,因?yàn)檫@款單片機(jī)入門資料比較多,而且價(jià)格便宜,使用方便,而

29、且他對 AVR 比較了解。他還說,學(xué)習(xí)單片機(jī)最好的方法是自己動(dòng)手實(shí)踐。他先是很系統(tǒng)地教了我一些 C 語言在單片機(jī)開發(fā)中的應(yīng)用,然后他還. . . . 18 / 49教我如何利用一個(gè)專門的模擬軟件來模擬實(shí)驗(yàn)效果。在他的幫助下,我可以運(yùn)用模擬軟件中的 AVRMEGA16 單片機(jī)來實(shí)現(xiàn)一些比如說走馬燈之類的簡單的控制功能。經(jīng)過模擬的訓(xùn)練后,我在小何哥哥的指導(dǎo)下做自己的單片機(jī)最小系統(tǒng)板。開始時(shí)總覺得最小系統(tǒng)板是一個(gè)很深?yuàn)W的東西,但實(shí)際上它所需要的器件不是很多。我做的最小系統(tǒng)板包括幾個(gè)部分,第一是供電電路,是利用 7805 芯片實(shí)現(xiàn)的;第二是串口通信電路,小何哥哥說我的設(shè)計(jì)需要用到單片機(jī)跟 PC 機(jī)的通

30、信,比較簡單而且可行的方法是利用串口,只需要一條串口線和 Max232 芯片就可以了;第三部分是單片機(jī)的復(fù)位電路;第四部分是調(diào)試口,因?yàn)樾『胃绺缒抢镉?JTAGICE 調(diào)試工具,只需要把單片機(jī)對應(yīng)端口按順序引出就可以了。我按照小何哥哥給我提供的原理圖,在萬用板上一部分一部分地把芯片連接起來。焊接電路真是一個(gè)細(xì)致活,小何哥哥說假如某個(gè)地方短路就很容易把芯片給燒了。雖然需要連接的線不是很多,但我還用了整整一天的時(shí)間,而且用萬用表反復(fù)檢查,生怕哪里出了問題。到了最后,小何哥哥給我檢查了一遍,確定沒有問題后,就開始最重要的時(shí)刻,上電。當(dāng)時(shí)我的心真懸著啊,上電的一刻還在默默祈禱著。幸虧一切正常,小何哥哥

31、說利用仿真器能夠正常連接到芯片,這表明芯片已經(jīng)能正常工作了。第二天,我繼續(xù)完成我的最小系統(tǒng)板。我很快就把電路焊接好了,可是上電后,我把小何哥哥給我的串口調(diào)試程序下載到芯片后芯片不能正常和 PC 機(jī)通信,我一下子懵了。小何哥哥讓我再仔細(xì)檢查電路是否連接正確,串口的參數(shù)設(shè)定是否符合要求等。最后發(fā)現(xiàn)原來是有一條線沒有連接好。硬件調(diào)試遠(yuǎn)比軟件困難,一個(gè)錯(cuò)誤可能需要很長時(shí)間才能發(fā)現(xiàn)。最后,小何哥哥讓我在板上焊接了 8 個(gè)調(diào)試燈,并給了我一些基礎(chǔ)的程序,讓我參照著它們來控制這些燈。在這個(gè)最小系統(tǒng)板上,我完成了很多的實(shí)驗(yàn),比如走馬燈、蜂鳴器等。通過這一系列的實(shí)驗(yàn),我對單片機(jī)的了解也越來越深,對單片機(jī)中斷,I

32、O 口操作,定時(shí)器使用,PWM 發(fā)生器使用等也有形成了基本認(rèn)識(shí)。電路設(shè)計(jì)電路設(shè)計(jì)在我學(xué)習(xí)單片機(jī)的時(shí)間里,我委托機(jī)械廠的師傅加工機(jī)械部分。因?yàn)檫@裝置要求的精度非常高,且運(yùn)用到了高級(jí)的工業(yè)加工技術(shù),以我現(xiàn)在的知識(shí)面和. . . . 19 / 49條件,顯然是無法單獨(dú)開展這樣的工作。我把我的思路與設(shè)計(jì)方案向機(jī)械廠的師傅進(jìn)行了描述,并在他們熱心的指導(dǎo)下進(jìn)行了調(diào)整,算是最終定下來了,最后在加工廠師傅的協(xié)助下,他們幫助我設(shè)計(jì)了加工的圖紙,并按照我們討論的方案,幫助我進(jìn)行了機(jī)械加工。按照設(shè)計(jì)和加工的樣式,模型由三部分組成,第一部分是光盤存放架子,光盤可以豎著放到架子上;第二部分是絲桿和螺母組成的運(yùn)動(dòng)部分,一

33、個(gè)步進(jìn)電機(jī)帶動(dòng)著絲桿轉(zhuǎn)動(dòng)而讓另外一個(gè)步進(jìn)電機(jī)橫向移動(dòng),當(dāng)?shù)竭_(dá)設(shè)定位置時(shí),另外一個(gè)步進(jìn)電機(jī)運(yùn)作,帶動(dòng)一個(gè)撥盤把光盤從架子上推出來。接著利用單片機(jī)按照預(yù)定程序控制這兩個(gè)步進(jìn)電機(jī)就可以了。為了簡化裝置,師傅向我推薦了幾款步進(jìn)電機(jī)驅(qū)動(dòng)器,單片機(jī)產(chǎn)生的 PWM脈沖信號(hào)輸入到驅(qū)動(dòng)器后就可以控制步進(jìn)電機(jī)。將驅(qū)動(dòng)器分別與單片機(jī)和步進(jìn)電機(jī)連起來后,驅(qū)動(dòng)電路就這樣完成了。接下來是光電管的檢測電路。據(jù)我所知,光電管的特性是當(dāng)有遮擋物的時(shí)候可等效為斷路,無遮擋物的時(shí)候等效為通路。在之前檢測方式選擇時(shí),我在網(wǎng)上找到,利用光電管的特性,很容易設(shè)計(jì)出一個(gè)檢測電路,當(dāng)光電管間有遮擋物時(shí)輸出 0V,沒有遮擋物時(shí)輸出 5V,電路

34、圖如下圖所示:圖 5.1 光電管的檢測電路但問題是怎么樣令單片機(jī)檢測到這些信號(hào)呢?我向小何哥哥請教,他給我說了幾個(gè)方案,一是可以利用并進(jìn)串出芯片串聯(lián)起來,可是這樣檢測速度就有所限制,二是利用模擬開關(guān)對信號(hào)一個(gè)一個(gè)檢測,但是這樣需要很多 IO 口,而單片機(jī)上只有 32 個(gè) IO 口,三是利用鎖存器加譯碼芯片。這樣既方便讀取信號(hào),而且用的 IO 口也相對較小。所以我采用了第三種方案。. . . . 20 / 49我首先在萬用板上焊接 16 個(gè)光電管作為測試,接著利用單片機(jī)控制譯碼器,輪流地開關(guān)鎖存器的使能端口,八個(gè)一組地讀取光電管的信號(hào)。經(jīng)過測試和實(shí)際調(diào)整,基本能夠?qū)崿F(xiàn)我的要求。然后是指示燈的電路

35、設(shè)計(jì)。在我的設(shè)想之中,裝置進(jìn)行取盤操作的隨后對應(yīng)光碟的位置的 LED 指示燈會(huì)亮起來,因?yàn)檠b置對 LED 指示燈的即時(shí)性要求不是很高,小何哥哥提議利用單片機(jī)的 SPI 口串行移位芯片實(shí)現(xiàn)來實(shí)現(xiàn)指示燈的功能。我上網(wǎng)查了一下,發(fā)現(xiàn)了有一個(gè)利用八位移位輸出芯片在 LED 大屏幕顯示中的應(yīng)用實(shí)例,于是,我就參照了一下他的電路樣式,在小何哥哥的指導(dǎo)之下完成了指示燈的萬用板電路(如圖 5.2 所示) 。經(jīng)過測試,效果基本滿意。圖 5.2 指示燈的萬用板電路為了讓整個(gè)裝置運(yùn)行更加穩(wěn)定,更加美觀,按照之前設(shè)計(jì)方案,我委托工廠把光電檢測電路和指示燈電路制作成 PCB 板。整個(gè)控制系統(tǒng)結(jié)構(gòu)圖如下:圖 5.3 控制

36、系統(tǒng)結(jié)構(gòu). . . . 21 / 49設(shè)置控制命令格式設(shè)置控制命令格式PC 作為整個(gè)系統(tǒng)的控制中心,在設(shè)計(jì)中要解決的一個(gè)重點(diǎn)是如何利用軟件控制整套系統(tǒng)。由于控制部分是以單片機(jī)為核心的,那么問題就轉(zhuǎn)變?yōu)槿绾问枪芾碥浖c單片機(jī)有效通信交流。這部分一開始時(shí)我還真沒有頭緒,因?yàn)閱纹瑱C(jī)主要是利用串口與電腦通信的,而該如何處理發(fā)送數(shù)據(jù)才能實(shí)現(xiàn)與單片機(jī)的溝通呢?經(jīng)過在網(wǎng)上一些論壇發(fā)帖咨詢,還有與指導(dǎo)老師的討論,我才形成了現(xiàn)在的那種以控制標(biāo)識(shí)符,數(shù)據(jù)容,命令結(jié)束標(biāo)志為組合的控制信息。例如上文所述,當(dāng)在軟件上按取盤按鈕,那么電腦會(huì)自動(dòng)形成控制信息如下“G+Address+E”其中,G 表示 GET,就是說要取盤

37、,Address 是需要取盤的位置信息,E 是命令結(jié)束標(biāo)志符??刂泼畹刂方Y(jié)束標(biāo)志設(shè)計(jì)命令格式開始的時(shí)候,我設(shè)計(jì)的系統(tǒng)只能取一個(gè)光盤,那么它的命令只有“G+Address” ,可是到了后面,系統(tǒng)具有取多盤的功能,就是說所要去的的光盤個(gè)數(shù)的不確定的,那么單片機(jī)在讀取位置信息時(shí)就要有一個(gè)結(jié)束標(biāo)志才能判斷出來。所以要加上一個(gè)“E”來坐標(biāo)標(biāo)識(shí)符。而在實(shí)際中,G 是用十六進(jìn)制的0XFA 表示,E 用十六進(jìn)制的 0XFF 表示。下面是利用串口助手接受軟件發(fā)送數(shù)據(jù)。利用它可以很方便地對串口發(fā)送數(shù)據(jù)進(jìn)行監(jiān)控,這樣就可以在沒有與單片機(jī)控制系統(tǒng)連接下也可以對軟件進(jìn)行調(diào)節(jié)。. . . . 22 / 49圖 5.4

38、取盤時(shí)軟件發(fā)送的數(shù)據(jù)精度控制精度控制利用我自己的單片機(jī)最小系統(tǒng)板和師傅介紹的驅(qū)動(dòng)模塊,我已經(jīng)成功地控制步進(jìn)電機(jī)根據(jù)我的設(shè)想前進(jìn)和后退,但是步進(jìn)電機(jī)是按照脈沖數(shù)目來控制的,而我電腦上保存的是光盤位置,還有因?yàn)楣獗P的間距很小,如何準(zhǔn)確的把光碟推出來,這些問題還值得我去思考。精度的調(diào)試主要經(jīng)過了三個(gè)階段。階段一:階段一:光碟槽在加工的時(shí)候是按照均勻位置距離來加工的,所以一開始,我按照全程線性化的方法編寫單片機(jī)控制程序。因?yàn)楣獗P與光盤之間的距離為 3mm,每個(gè)光盤的厚度為 2.1mm,從理論上說,絲桿上步進(jìn)電機(jī)的步角為 1.8,每圈需要的脈沖數(shù)為 200。當(dāng)知道絲桿每一圈前進(jìn)的距離,加上光盤厚度與間距

39、,就可以計(jì)算出對應(yīng)光盤位置所需要的脈沖。其表達(dá)式為,其中,120DD/200Pn()l為光盤厚度,為光盤間距,就是每個(gè)光盤間的實(shí)際距離。為絲1D2D12DD0l桿每一圈的前進(jìn)距離,因?yàn)槲覀兠恳蝗π枰?200 個(gè)脈沖,那么,就是每0/ 200l. . . . 23 / 49個(gè)脈沖前進(jìn)的距離。是當(dāng)前要取的光盤位置,代入上式就能計(jì)算出理論需要n的脈沖個(gè)數(shù) P。當(dāng)我滿懷信心去驗(yàn)證我的實(shí)驗(yàn)成果的時(shí)候,我發(fā)現(xiàn)步進(jìn)電機(jī)并沒有到達(dá)相應(yīng)的位置。在咨詢了家長后,我明白,在實(shí)際的加工過程中,是不可能實(shí)現(xiàn)光碟槽位置的均勻分布的。階段二:階段二:通過網(wǎng)絡(luò)的問詢,我采用了一種新方法分段線性化。我首先測量一組光盤位置與對應(yīng)

40、脈沖個(gè)數(shù)的數(shù)據(jù)??梢钥隙ǎ竭_(dá)這些位置,需要走的脈沖個(gè)數(shù)是知道的。對于點(diǎn)與點(diǎn)之間的區(qū)域,近似認(rèn)為是按線性變化的。這種方法計(jì)算脈沖的表達(dá)式為,其中,是當(dāng)前需要取的光盤所在1()iiiPPKxxiP分段區(qū)域中起點(diǎn)位置所對應(yīng)的脈沖數(shù),是其坐標(biāo)位置。是光盤所在分段ix1iK區(qū)域中的近似斜率,計(jì)算公式為,為當(dāng)前需要取的光盤位置。每個(gè)分段iiyixk x區(qū)域中的近似斜率計(jì)算表達(dá)式為,為分段區(qū)域起點(diǎn)與終點(diǎn)坐標(biāo),111iiiiyyixxK1,iix x為其對應(yīng)的脈沖個(gè)數(shù)。1,iiy y經(jīng)過實(shí)際調(diào)試,利用以上方法能夠準(zhǔn)確的定位到大部分的位置,但在某些地方,還是不能準(zhǔn)確定位。階段三:階段三:通過向指導(dǎo)老師的咨詢

41、與自己慎重的考慮,我認(rèn)為出現(xiàn)的問題主要有兩點(diǎn)。第一可能是我測量時(shí)估計(jì)量不準(zhǔn)確造成的,第二是這段圍的光盤存放位置的不均勻比較明顯而造成的。我又對我的控制方法進(jìn)行了改進(jìn)。我先在這些精度比較差的圍我重新測量了位置與脈沖對應(yīng)關(guān)系,然后對于一個(gè)關(guān)鍵的參數(shù) K,我修改了計(jì)算方法。原來的 K 在同一段圍是不變的,現(xiàn)在我把它改為一個(gè)動(dòng)態(tài)值,定義脈沖計(jì)算公式為,其中為需要取的光盤位置,為*()iiPkkxxxxix目標(biāo)光盤所在分段區(qū)域的起點(diǎn)坐標(biāo),為它的斜率,定義為,為當(dāng)前ikiiyixk *k分段中斜率的變化率,其定義為,為對應(yīng)分段起始和結(jié)束端點(diǎn)11*iiiikkxxk1,iix x坐標(biāo),為他們對應(yīng)的斜率。1,

42、iik k在實(shí)際中,驅(qū)動(dòng)器選擇 64 分頻下,測到的位置與對應(yīng)脈沖關(guān)系如下:. . . . 24 / 49X1X2X3X4X5X6坐標(biāo)837.85186.5109130.6脈沖數(shù)20366106588145046246845311927373835利用斜率分段線性化的流程框圖如下:圖 5.5 利用斜率分段線性化的流程框圖根據(jù)斜率分段線性化思路,先把整個(gè)區(qū)域分成六段,每段的端點(diǎn)位置分別為 address_f 和 address_b,address_f 是首端點(diǎn),所對應(yīng)測得的脈沖數(shù)為pluse_f, address_b 為末端點(diǎn),所對應(yīng)測得的脈沖數(shù)為 pluse_b。其實(shí)這里對于每個(gè)分段來說,它的

43、末端點(diǎn)就是下一分段的首端點(diǎn)。為了簡化說明,這里設(shè)為每段首端點(diǎn)對應(yīng)的位置,為其對應(yīng)的脈沖個(gè)數(shù)。這樣,利用以上定義式ixiy. . . . 25 / 49,就可以計(jì)算出每個(gè)光盤位置對應(yīng)的脈沖數(shù)了。*()iiPkkxxx利用分段線性化和斜率分段線性化畫出曲線如下:圖 5.6 利用以上兩種方法畫出來的曲線圖 5.7 曲線局部放大(虛線為分段線性化擬合,實(shí)線為斜率分段線性化擬合)可以看出,利用斜率分段線性化擬合后,脈沖數(shù)量的增加是按端點(diǎn)斜率的變化趨勢改變的。經(jīng)過實(shí)際檢測,利用以上辦法,能夠很好解決誤差問題,取盤精度基本滿意。6.6.路徑算法的優(yōu)化與創(chuàng)新應(yīng)用路徑算法的優(yōu)化與創(chuàng)新應(yīng)用我在原來設(shè)計(jì)中,裝置每次

44、只能取一個(gè)光盤,當(dāng)完成取盤操作后就自動(dòng)回. . . . 26 / 49復(fù)到初始零位。若使用者一次要取的盤很多時(shí),這樣的操作就很浪費(fèi)時(shí)間。我當(dāng)時(shí)就在想,是否既可以令裝置一次性取多盤,而且可以令裝置記錄當(dāng)前位置,節(jié)省復(fù)位時(shí)間?這個(gè)部分從想法的提出,到實(shí)現(xiàn)經(jīng)過了很漫長的過程。我先利用單片機(jī)里的 EEPROM 存儲(chǔ)了每次取盤完成后的當(dāng)前位置,解決了每次取盤操作后復(fù)位的問題,接著我再著力解決取多盤的問題。開始的時(shí)候,我是按照用戶選擇取盤的順序來實(shí)現(xiàn)取盤的,就是說用戶先點(diǎn)擊 1 號(hào)盤,再點(diǎn)擊 2 號(hào)盤,再點(diǎn)擊 3 號(hào)盤,那么系統(tǒng)就會(huì)按照 1,2,3 的順序來取出光盤,但在實(shí)際調(diào)試過程中發(fā)現(xiàn),很多時(shí)候取盤機(jī)

45、構(gòu)都走了重復(fù)的路線。我就想能不能設(shè)計(jì)出一種有效的方法,讓取盤機(jī)構(gòu)在最短的時(shí)間把光盤都取出來呢?順著這個(gè)思路,我在網(wǎng)上找了很多資料,包括動(dòng)態(tài)規(guī)劃,最優(yōu)設(shè)計(jì),貪心算法等等,但是看到這些高深的東西,我真的不知道如何下手。通過和指導(dǎo)老師交流后,老師推薦了我兩本書看,包括如何進(jìn)行思考 , 算法設(shè)計(jì)與分析這兩本書對于一些基本的算法做了詳細(xì)的介紹,還有具體的例子。我利用課余時(shí)間一點(diǎn)一點(diǎn)地看,老師也把書上的部分容給我進(jìn)行講解,我發(fā)現(xiàn)利用書上的算法,可以解決實(shí)際中很多難題。例如旅行售貨員問題,最大團(tuán)問題,這對于我思考其他問題帶來很大的啟發(fā)。書本讓我理解了什么叫做樹,什么是圖,如何對樹進(jìn)行遍歷,如何尋找最小生成樹

46、等。說實(shí)話,書上有些容我還不是很理解,但通過它們,我漸漸發(fā)現(xiàn)我需要解決的關(guān)于在對短時(shí)間實(shí)現(xiàn)取多盤的問題應(yīng)該屬于最優(yōu)路徑問題,與旅行售貨員問題有點(diǎn)相似,但又有所區(qū)別,它要尋找的是一條回路,而我的問題是一條停止在最優(yōu)端點(diǎn)的最短路徑。這點(diǎn)的不同也使得我對算法的改進(jìn)提供了思路。我設(shè)計(jì)的取盤最優(yōu)路徑算法我設(shè)計(jì)的取盤最優(yōu)路徑算法1 1)取多盤問題的進(jìn)一步闡述:)取多盤問題的進(jìn)一步闡述:在電機(jī)速度不變的情況下,最短時(shí)間把選定的光盤全部取出的問題實(shí)際等效于一個(gè)最短路徑問題,就是要找出一個(gè)最短路徑,讓取盤機(jī)構(gòu)經(jīng)過各個(gè)目標(biāo)光盤存放點(diǎn),并把光盤推出到指定位置。就像下面的示意圖(圖 6.1):. . . . 27 /

47、 49圖 6.1 圓圈表示需要取的光盤,三角形代表當(dāng)前取盤機(jī)構(gòu)的位置上圖表示一個(gè) 3 層的光盤存放機(jī)構(gòu),每層可以存放 10 光盤。其中圓形表示需要取的光盤,三角形表示取盤機(jī)構(gòu)當(dāng)前的位置,事實(shí)上,取盤機(jī)構(gòu)的位置是上一次取盤過程中取最后一光盤的位置。由排列組合的知識(shí)可以算出,當(dāng)所需要取光盤個(gè)數(shù)為 n 時(shí),那么可用的取盤的路徑條數(shù)為 n!,例如,以上所需要取光盤個(gè)數(shù)為 7,那個(gè)可選的路徑數(shù)目為 5040 條!為了討論方便,我們減小取盤數(shù)目,假設(shè)取盤數(shù)目為 3 個(gè),見如下圖:圖 6.2需要取個(gè)光盤時(shí)表示圖(圓圈表示需要取的光盤,三角形代表當(dāng)前取盤機(jī)構(gòu)的位置)可以算出上圖可選的路徑數(shù)目為 3!=6。問題

48、需要求取總距離最短的路徑,那么就必須有一個(gè)權(quán)衡路徑的量。在本算法中,定義光盤之間的距離為,其中是以裝置一個(gè)端點(diǎn)為原點(diǎn)時(shí),第 i 個(gè)光盤的1212L |xxyy( ,)iix y. . . . 28 / 49坐標(biāo),由于實(shí)際中不可能測量每個(gè)光盤到原點(diǎn)的位置,我們利用光盤存放的位置信息作為坐標(biāo)。例如,上圖中光盤 C 的坐標(biāo)為(9,3) ,光盤 B 的坐標(biāo)為(3,2) 。那么光盤 B 和光盤 C 的距離 L=|9-3|+|3-2|=7。可是在實(shí)際中光盤橫向與縱向的比例不可能是 1:1,在計(jì)算縱向坐標(biāo)時(shí)應(yīng)該把位置信息乘上一個(gè)大于零的比例系數(shù) K,所以最終的計(jì)算公式應(yīng)該為,因?yàn)?212L |xxK yyK

49、 是一個(gè)任意致,可以假設(shè) K=1。利用上圖雖然可以表示各個(gè)光盤的位置信息,但還不夠直觀,利用圖的概念和以上定義的距離信息,可以得到以上坐標(biāo)圖的等效加權(quán)圖如下:圖 6.3 加權(quán)圖表示光盤位置其中線條之間數(shù)據(jù)表示兩個(gè)點(diǎn)之間的距離。1,2,3,4 表示需要走過的各個(gè)節(jié)點(diǎn),起點(diǎn)規(guī)定為 1 號(hào)節(jié)點(diǎn)。2 2)基于回溯法的最短路徑探究)基于回溯法的最短路徑探究前面提到,當(dāng)需要取的光盤個(gè)數(shù)為 n 時(shí),可選路徑數(shù)目為 n!,當(dāng)需要取的光盤數(shù)目為 10 個(gè)時(shí),可選路徑達(dá)到 10!=3628800。所以必須采用一個(gè)系統(tǒng)的方法來選取最優(yōu)路徑。這里采用回溯法來實(shí)現(xiàn)?;厮莘ㄓ小巴ㄓ媒忸}法”之稱。用它可以系統(tǒng)地搜索問題的所

50、有解?;厮莘ㄊ且粋€(gè)既帶有系統(tǒng)性又帶有跳躍性的搜索算法。它在問題的解空間樹中,按深度優(yōu)先策略,從根結(jié)點(diǎn)出發(fā)搜索解空間樹。算法搜索至解空間樹的任一結(jié)點(diǎn)時(shí),先判斷該結(jié)點(diǎn)是否包含問題的解。如果肯定不包含,則跳過對以該結(jié)點(diǎn)為根的子樹的搜索,逐層向其祖先結(jié)點(diǎn)回溯;否則,進(jìn)入該子樹,繼續(xù)按深度優(yōu)先策略搜索?;厮莘ㄇ蠼鈺r(shí),只要搜索到問題的一個(gè)解就可結(jié)束。3 3)問題的解空間)問題的解空間用回溯法解問題時(shí),應(yīng)該明確定義問題的解空間。問題的解空間至少應(yīng)該包含問題的一個(gè)(最優(yōu))解。例如,對圖 6.4 所示,當(dāng)需要取 3 個(gè)光盤時(shí),按光盤序號(hào),可選的路徑為(1,2,3,4),(1,2,4,3),(1,3,4,2) ,

51、(1,3,2,4) , (1,4,2,3) , (1,4,3,2) ,他們共同構(gòu)成一個(gè)解空間。定義了問題的解空間后,還應(yīng)該將解空間很好地組織起來,使得能用回溯. . . . 29 / 49法方便地搜索整個(gè)解空間。通常將解空間組織成樹的形式。對于圖 6.3 所示,利用解空間樹表示如圖 6.4 所示:圖 6.4 解空間樹表示其中,AQ 為樹的各個(gè)結(jié)點(diǎn),結(jié)點(diǎn)間數(shù)字表示實(shí)際經(jīng)過的光盤編號(hào)和到達(dá)這個(gè)光盤需要的路徑長度。例如從分支(A,B,C,F(xiàn),L)表示遍歷順序?yàn)椋?,2,3,4) ,對應(yīng)路徑長度為 5,3,7,總共路程為 15。4 4)回溯法的求解思路)回溯法的求解思路確定了解空間的組織結(jié)構(gòu)后,回溯法

52、從開始結(jié)點(diǎn)(根結(jié)點(diǎn))出發(fā),以深度優(yōu)先方式搜索整個(gè)解空間。這個(gè)開始結(jié)點(diǎn)成為活結(jié)點(diǎn),同時(shí)成為當(dāng)前的擴(kuò)展結(jié)點(diǎn)。在當(dāng)前擴(kuò)展結(jié)點(diǎn)出,搜索向縱深方向移動(dòng)至一個(gè)新的結(jié)點(diǎn)。這個(gè)結(jié)點(diǎn)成為新的活結(jié)點(diǎn),并成為當(dāng)前擴(kuò)展結(jié)點(diǎn)。如果在當(dāng)前擴(kuò)展結(jié)點(diǎn)處不能再向縱深方向移動(dòng),則當(dāng)前擴(kuò)展結(jié)點(diǎn)就成為死結(jié)點(diǎn)。此時(shí),應(yīng)該往回移動(dòng)(回溯)至最近的活結(jié)點(diǎn)處,并使這個(gè)活結(jié)點(diǎn)成為當(dāng)前擴(kuò)展結(jié)點(diǎn)?;厮莘ㄒ赃@種工作方式遞歸地在解空間中搜索,直至找到所需求的解或者解空間中已無活動(dòng)結(jié)點(diǎn)為止。對圖 6.4 所示的解空間樹,回溯法找最短路勁時(shí),從解空間樹的根節(jié)點(diǎn) A出發(fā),搜索至 B,C,F(xiàn),L。在葉結(jié)點(diǎn) L 處記錄找到的路線為(1,2,3,4) ,該路線長

53、度為 15。從葉結(jié)點(diǎn) L 返回至最近活動(dòng)結(jié)點(diǎn) F 處。由于 F 處已經(jīng)沒有可擴(kuò)展結(jié)點(diǎn),算法又回到結(jié)點(diǎn) C 處。結(jié)點(diǎn) C 成為新擴(kuò)展結(jié)點(diǎn),由新擴(kuò)展結(jié)點(diǎn),算. . . . 30 / 49法再移動(dòng)至結(jié)點(diǎn) G 后又移動(dòng)至結(jié)點(diǎn) M,得到路線為(1,2,4,3) ,其長度為22,這個(gè)長度比之前的更長,所以舍棄。算法又依次返回至結(jié)點(diǎn) G,C,B。從結(jié)點(diǎn) B,算法繼續(xù)搜索至結(jié)點(diǎn) D,H,N。在葉結(jié)點(diǎn) N 處,響應(yīng)的路線為(1,3,2,4) ,其長度為 17,比當(dāng)前最短路徑長,舍棄。從結(jié)點(diǎn) N 算法返回至結(jié)點(diǎn) H,然后從開始繼續(xù)向縱深搜索至結(jié)點(diǎn)。依此方式算法繼續(xù)搜索遍整個(gè)解空間,最終得到最小費(fèi)用路徑為(,) ,

54、其長度為15。5 5)算法的改進(jìn))算法的改進(jìn)從以上可以看到,回溯法搜索過程中,需要對整個(gè)解空間進(jìn)行搜索,而在實(shí)際中,往往有些結(jié)點(diǎn)顯然不能生成最優(yōu)解,所以可以采用有效的策略避免無效搜索,提高回溯法的搜索效率。本算法采用剪枝法來提高搜索效率。其思路是利用目標(biāo)消耗最少的特點(diǎn),把當(dāng)前支路中的消耗與當(dāng)前所求的最優(yōu)值比較,當(dāng)前支路中的消耗比當(dāng)前所求的最優(yōu)解還大時(shí),就沒有必要繼續(xù)往下搜索其他結(jié)點(diǎn)了。其中剪枝標(biāo)準(zhǔn)的選取相當(dāng)重要,合理的標(biāo)準(zhǔn)值可以提高算法的效率。以上所述的回溯法在搜索過程中,其下層結(jié)點(diǎn)的選取是隨意的,而利用局部最優(yōu)思想,在搜索過程中,對于每一個(gè)活動(dòng)結(jié)點(diǎn),先從其代價(jià)最小的一個(gè)分支開始。其核心思想是

55、利用局部最優(yōu)來達(dá)到整體最優(yōu)。例如,從跟結(jié)點(diǎn)出發(fā),其子結(jié)點(diǎn)只有,接著尋找的子結(jié)點(diǎn)為,從到他們的距離分別為,選取距離最短的結(jié)點(diǎn)為新活動(dòng)結(jié)點(diǎn),這里選取,如此類推,得到路徑為(,) ,其代價(jià)為??梢钥闯?,第一次搜索到的路徑不是最優(yōu)的,但肯定是目前分支中的次最優(yōu)。把它作為目前的剪枝標(biāo)準(zhǔn)值,在接下來的回溯搜索過程中,只要發(fā)現(xiàn)當(dāng)前分支的總路程大于 18,就可以停止對其子結(jié)點(diǎn)的搜索了。現(xiàn)在我們再來看圖 6.4 所示的解空間樹,由于本問題只需要把各個(gè)結(jié)點(diǎn)遍歷就可以了,不需要回到開始位置。就是說,結(jié)點(diǎn) L,M,N,O,P,Q 都分別是對應(yīng)路徑的末節(jié)點(diǎn)。而且,在所需要取的光盤個(gè)數(shù)為 n 時(shí),只要前 n-1 個(gè)結(jié)點(diǎn)確

56、定了,那么最后一個(gè)結(jié)點(diǎn)就是唯一的。例如,當(dāng)確定了路線為(1,2,3)后,接著最后一個(gè)結(jié)點(diǎn)肯定就是 4。上面提到,利用剪枝法來提高搜索效率時(shí),剪枝標(biāo)準(zhǔn)的選取起到關(guān)鍵作用。設(shè) best_l 為當(dāng)前問題的最短路徑長度,為其( )l i. . . . 31 / 49對應(yīng)結(jié)點(diǎn)間的距離。有,那么對于任意的其路徑,設(shè)其路徑總長1_( )nibestll i度為,有,令為各個(gè)結(jié)點(diǎn)中最短距離,為當(dāng)前已經(jīng)搜索ol_olbestlminl*_bestl過的路徑中最短的路長度,則有,,*_bestl _bestl*minmin_bestllbestll就是說,在接下來的搜索中,最優(yōu)路徑出現(xiàn)的條件為。為當(dāng)前正在搜索的路

57、徑總長度。換句*minmin1( )_()jil ilbestlljn1( )jil i話說,在當(dāng)前正在生成的路徑中,只有滿足以上式子的時(shí)候,才能在其分支上出現(xiàn)最優(yōu)路徑。也就是指當(dāng)前的路徑總長度必須要小于。利用這個(gè)*min_bestll性質(zhì),可以對剪枝標(biāo)準(zhǔn)進(jìn)一步縮減,定義為,就是當(dāng)前搜索到的最*min_bestll短路徑減去各個(gè)結(jié)點(diǎn)之間最短路徑的值。利用這個(gè)標(biāo)準(zhǔn)再來看看圖 6.4 所示的問題。首先可以看出,各個(gè)結(jié)點(diǎn)中最短距離=3,利用局部最優(yōu)的思路,選擇路徑最短的分支優(yōu)先生成,于是得到minl第一條路徑為(A,B,D,H,N)其路徑長度為 17,由于這是第一條生成的路徑長度,令,于是當(dāng)前的剪枝

58、比較值為=14。接著回溯*_17bestl *min_bestll到 D 點(diǎn),生成新的路徑為(A,B,D,I,O)其路徑長度為 21,比之前的大,非最優(yōu)解。接著回溯到 B 點(diǎn),由于到 C,E 兩個(gè)子結(jié)點(diǎn)消耗都一樣,可以隨意選取,按從左到右原則,先選取 C 結(jié)點(diǎn)。得到路徑為(A,B,C,F,L)其路徑總長度為 15,比當(dāng)前要少,于是令=15,當(dāng)前的比較值變*_bestl*_bestl*min_bestll為 12。接著回溯到 C 點(diǎn),此時(shí)可以算出,到達(dá) G 點(diǎn)是路程長度為 15,大于=12,所以不用再往下搜索了。回溯到 B 點(diǎn),進(jìn)入 E 結(jié)點(diǎn)搜索。當(dāng)*min_bestll到達(dá) J 結(jié)點(diǎn)時(shí),路徑長

59、度為 15,比=12 要大,不用再往下搜索了。*min_bestll回溯到 K,到達(dá) K 結(jié)點(diǎn)時(shí),當(dāng)前路徑長度為 12,大于等于=12。由*min_bestll于只需要選取一條最優(yōu)路徑,所以不用再繼續(xù)往下搜索了。最終,遍歷整個(gè)解. . . . 32 / 49空間得到最短路徑為(A,B,C,F,L)搜索光盤順序?yàn)椋?,2,3,4)路徑總長度為 15。從上面的解空間樹可以看出結(jié)果正確。實(shí)驗(yàn)證明,通過以上算法優(yōu)化,可以準(zhǔn)確尋找最短路徑,并顯著提高路徑的搜索效率。下圖為本算法實(shí)現(xiàn)流程框圖:圖 6.5 路徑尋優(yōu)算法流程框圖. . . . 33 / 497.7.設(shè)備連接與調(diào)試設(shè)備連接與調(diào)試1)系統(tǒng)組成圖圖

60、 7.1 首次制作的位置檢測電路試驗(yàn)板 圖 7.2 應(yīng)用的位置檢測板(PCB 板)圖 7.3 光碟編碼掃描試驗(yàn)圖 7.4 存放光碟的柵格結(jié)構(gòu) 圖 7.5 撥盤自動(dòng)執(zhí)行機(jī)構(gòu). . . . 34 / 49 圖 7.6 制作的單片機(jī)控制線路板 圖 7.7 步進(jìn)馬達(dá)驅(qū)動(dòng)(a)界面 (b)分類設(shè)計(jì)圖 7.8 計(jì)算機(jī)管理系統(tǒng). . . . 35 / 49圖 7.9 整機(jī)裝置圖2)工作圖圖 7.10 位置檢測電路設(shè)計(jì) 圖 7.11 光碟編碼掃描 圖 7.12 檢測電路焊接 圖 7.13 位置檢測電路調(diào)試. . . . 36 / 49圖 7.14 整機(jī)組裝8.8.智能應(yīng)用智能應(yīng)用每存放的光碟都貼上一個(gè)標(biāo)簽,作

溫馨提示

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

最新文檔

評論

0/150

提交評論