版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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)(e題)設(shè)計(jì)報(bào)告摘要:本懸掛控制系統(tǒng)是一個(gè)電機(jī)控制系統(tǒng),控制物體在80cm100cm的范圍內(nèi)作直線、圓、尋跡等運(yùn)動(dòng),并且在運(yùn)動(dòng)時(shí)能顯示運(yùn)動(dòng)物體的坐標(biāo)。設(shè)計(jì)采用at89s52單片機(jī)作為核心控制器件,采用57byg007-4型步進(jìn)電機(jī)和高細(xì)分步進(jìn)電機(jī)驅(qū)動(dòng)器sm-60作為動(dòng)力裝置,采用紅外反射式光電傳感器實(shí)現(xiàn)畫板上黑色線尋跡檢測(cè),顯示部分用液晶顯示模塊lcd1602實(shí)現(xiàn)。關(guān)鍵詞:懸掛控制、單片機(jī)、 步進(jìn)電機(jī)、 紅外反射式光電傳感器一、設(shè)計(jì)要求1、任務(wù)設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角100度)的板上運(yùn)動(dòng)。在一白色底板上固定兩個(gè)滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一
2、物體在板上運(yùn)動(dòng),運(yùn)動(dòng)范圍為80cm100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動(dòng)時(shí)能在板上畫出運(yùn)動(dòng)軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn), 示意圖如下。 2、基本要求:(1)控制系統(tǒng)能夠通過鍵盤或其他方式任意設(shè)定坐標(biāo)點(diǎn)參數(shù);(2)控制物體在80cm100cm的范圍內(nèi)作自行設(shè)定的運(yùn)動(dòng),運(yùn)動(dòng)軌跡長(zhǎng)度不小于100cm,物體在運(yùn)動(dòng)時(shí)能夠在板上畫出運(yùn)動(dòng)軌跡,限300秒內(nèi)完成;(3)控制物體作圓心可任意設(shè)定、直徑為50cm的圓周運(yùn)動(dòng),限300秒內(nèi)完成;(4)物體從左下角坐標(biāo)原點(diǎn)出發(fā),在150秒內(nèi)到達(dá)設(shè)定的一個(gè)坐標(biāo)點(diǎn)(兩點(diǎn)間直線距離不小于
3、40cm)。3、發(fā)揮部分(1)能夠顯示物體中畫筆所在位置的坐標(biāo);(2)控制物體沿板上標(biāo)出的任意曲線運(yùn)動(dòng)(見示意圖),曲線在測(cè)試時(shí)現(xiàn)場(chǎng)標(biāo)出,線寬1.5cm1.8cm,總長(zhǎng)度約50cm,顏色為黑色;曲線的前一部分是連續(xù)的,長(zhǎng)約30cm;后一部分是兩段總長(zhǎng)約20cm的間斷線段,間斷距離不大于1cm;沿連續(xù)曲線運(yùn)動(dòng)限定在200秒內(nèi)完成,沿間斷曲線運(yùn)動(dòng)限定在300秒內(nèi)完成;(3)其他。4、評(píng)分標(biāo)準(zhǔn)項(xiàng)目滿分基本要求設(shè)計(jì)與總結(jié)報(bào)告:方案比較、設(shè)計(jì)與論證,理論分析與計(jì)算,電路圖及有關(guān)設(shè)計(jì)文件,測(cè)試方法與儀器,測(cè)試數(shù)據(jù)及測(cè)試結(jié)果分析。50實(shí)際制作完成情況50發(fā)揮部分完成第(1)項(xiàng)10完成第(2)項(xiàng)中連續(xù)線段運(yùn)動(dòng)
4、14完成第(2)項(xiàng)中斷續(xù)線段運(yùn)動(dòng)16其他105、說明1、物體的運(yùn)動(dòng)軌跡以畫筆畫出的痕跡為準(zhǔn),應(yīng)盡量使物體運(yùn)動(dòng)軌跡與預(yù)期軌跡吻合,同時(shí)盡量縮短運(yùn)動(dòng)時(shí)間;2、若在某項(xiàng)測(cè)試中運(yùn)動(dòng)超過限定的時(shí)間,該項(xiàng)目不得分;3、運(yùn)動(dòng)軌跡與預(yù)期軌跡之間的偏差超過4cm時(shí),該項(xiàng)目不得分;4、在基本要求(3)、(4)和發(fā)揮部分(2)中,物體開始運(yùn)動(dòng)前,允許手動(dòng)將物體定位;開始運(yùn)動(dòng)后,不能再人為干預(yù)物體運(yùn)動(dòng);5、競(jìng)賽結(jié)束時(shí),控制系統(tǒng)封存上交賽區(qū)組委會(huì),測(cè)試用板(板上含空白坐標(biāo)紙) 測(cè)試時(shí)自帶。二、方案論證與選擇1.核心控制模塊的選擇方案一:fpga/cpld方式。即用fpga/cpld完成鍵盤定義與識(shí)別、電機(jī)工作狀態(tài)選擇與
5、切換、液晶電路的驅(qū)動(dòng)與控制等功能。這種方案的優(yōu)點(diǎn)在于系統(tǒng)結(jié)構(gòu)緊湊、操作方便,而且可以使用的i/o口線很多;缺點(diǎn)是調(diào)試時(shí)需要接很多接線,過程繁瑣,而且使用cpld時(shí),由于其內(nèi)部沒有rom,對(duì)功能的實(shí)現(xiàn)有所限制。方案二:?jiǎn)纹瑱C(jī)方式。即由單片機(jī)、電機(jī)驅(qū)動(dòng)電路及電機(jī)等組成系統(tǒng)。使用單片機(jī)也可以完成鍵盤定義與識(shí)別、電機(jī)工作狀選擇與切換等功能,組成的系統(tǒng)規(guī)模較小,有一定靈活性,而且可以使用我們比較熟悉的單片機(jī)最小系統(tǒng)電路板,減少了工作量。該控制方式需要單片機(jī)具有較大的程序存儲(chǔ)量,所以可選擇存儲(chǔ)量為8k的at89s52單片機(jī)?;谝陨戏治?,擬選用方案二。2.電機(jī)及其驅(qū)動(dòng)模塊的選擇 電機(jī)驅(qū)動(dòng)模塊是本系統(tǒng)的執(zhí)行
6、機(jī)構(gòu),用于控制懸掛物體的運(yùn)動(dòng)。 方案1:采用普通小型直流電機(jī)。普通直流電機(jī)由于其自身結(jié)構(gòu)的限制,控制精度很低,無法達(dá)到系統(tǒng)要求的指標(biāo),這里不予采用。 方案2:采用專用步進(jìn)電機(jī)驅(qū)動(dòng)器及與其配套的步進(jìn)電機(jī)。用這種方案的控制精度、效率和可靠性都很高。根據(jù)精度要求選擇方案二。3.黑線探測(cè)模塊方案一:采用多路陣列式光敏電阻組成的光電探測(cè)器。因?yàn)楣饷綦娮杼綔y(cè)到黑線時(shí),黑線上方的電阻值發(fā)生變化,經(jīng)過電壓比較器比較將信號(hào)送給單片機(jī)處理,從而控制物體做相應(yīng)的動(dòng)作。但由于光敏電阻對(duì)環(huán)境光的識(shí)別,容易受到外界環(huán)境光的影響。,方案二:采用紅外反射式探測(cè),即用已調(diào)的紅外線垂直射到板面,經(jīng)反射后轉(zhuǎn)換為電信號(hào)送入單片機(jī)處理
7、。由于使用的是紅外線,不受外界自然光的影響,循跡效果好?;谏厦娴挠懻?,選用了抗干擾能力強(qiáng)的方案二。4.顯示方案的選擇方案一:采用led數(shù)碼管顯示器。led 數(shù)碼管亮度高,醒目,但是其電路復(fù)雜,顯示信息量較小,且動(dòng)態(tài)掃描需要占用大量單片機(jī)時(shí)間,無法做到實(shí)時(shí)顯示。方案二:采用漢字lcd液晶顯示器。lcd有明顯的優(yōu)點(diǎn):微功耗、尺寸小,超薄輕巧、顯示信息量大、字跡清晰、美觀、視覺舒適。本設(shè)計(jì)中采用1602字符型lcm。1602字符型lcm克服了led數(shù)碼管的缺點(diǎn),具有顯示容量大、占用單片機(jī)口線少、節(jié)省單片機(jī)時(shí)間、功耗低等優(yōu)點(diǎn),完全符合本系統(tǒng)要求。5.位置傳感模塊位置傳感模塊用于實(shí)現(xiàn)顯示畫筆位置的功能
8、。對(duì)于這個(gè)模塊可以有硬件和軟件兩類解決方案。 方案1:在物體上安裝水平和垂直方向的兩只激光筆,在板邊緣每條坐標(biāo)線旁邊安裝一光電傳感器,物體坐標(biāo)所在處的傳感器接收到激光筆,即可確定物體位置。可見本方案共需要180個(gè)光電傳感器,造成此方案幾乎不可實(shí)現(xiàn)。方案2:采用軟件的方法確定物體位置。單片機(jī)控制物體從某個(gè)已知的坐標(biāo)位置出發(fā),并且記錄步進(jìn)電機(jī)的每一次移動(dòng)情況,就可以通過一定的算法計(jì)算出物體的位置。這種方案沒有位置傳感器,精度較低,但是系統(tǒng)簡(jiǎn)單。避免了硬件方案過于復(fù)雜的缺點(diǎn)。本設(shè)計(jì)使用方案2。6.鍵盤模塊本模塊采用即插型按鍵,接在最小系統(tǒng)的p2.0p2.7,采用了44的16點(diǎn)陣鍵盤??梢枣I入19的數(shù)
9、字,即可以輸入點(diǎn)的坐標(biāo)值(x,y),以及清除,確定,等功能按鍵。三、系統(tǒng)具體設(shè)計(jì)實(shí)現(xiàn)1、硬件電路的設(shè)計(jì)(1)系統(tǒng)的總體設(shè)計(jì)方案如圖3-1所示采用at89s52單片機(jī)作為運(yùn)動(dòng)物體的控制中心,進(jìn)行數(shù)學(xué)計(jì)算、對(duì)光電傳感器送來的信號(hào)進(jìn)行處理來控制運(yùn)動(dòng)物體的運(yùn)行方向、計(jì)算運(yùn)行物體的坐標(biāo)位置、lcd數(shù)據(jù)顯示、鍵盤控制等。圖3-1 系統(tǒng)方框圖(2)黑線檢測(cè)模塊電路黑線檢測(cè)模塊電路圖3-2所示。當(dāng)紅外線反射式光電傳感器st178位于黑線之上時(shí),光電開關(guān)輸出高電平;反之,輸出低電平。光電傳感器輸出電平后接反相器74ls04以穩(wěn)定電平和增大驅(qū)動(dòng)能力。 本設(shè)計(jì)采用8個(gè)紅外傳感器實(shí)現(xiàn)對(duì)黑線的檢測(cè),通過并口轉(zhuǎn)串口芯片7
10、4ls165將數(shù)據(jù)串行傳送到單片機(jī)。圖3-2 黑線檢測(cè)模塊電路(3)鍵盤電路本設(shè)計(jì)采用4x4矩陣鍵盤實(shí)現(xiàn)數(shù)字的輸入和功能的選擇,鍵盤接到at89s52單片機(jī)的p2口,通過單片機(jī)對(duì)鍵盤的行列掃描實(shí)現(xiàn)按鍵的識(shí)別。鍵盤電路如圖3-3所示:圖3-3 4x4鍵盤電路對(duì)應(yīng)的按鍵碼如下:789/456/123/清除0確認(rèn)/(4)單片機(jī)電源電路單片機(jī)控制電路、紅外傳感器模塊電路和液晶顯示模塊均采用+5v供電,采用集成穩(wěn)壓芯片7805來實(shí)現(xiàn),電路圖如圖3-4所示。圖3-4單片機(jī)電源電路(5)步進(jìn)電機(jī)驅(qū)動(dòng)電路本設(shè)計(jì)采用57byg007-4型步進(jìn)電機(jī)和專用高細(xì)分步進(jìn)電機(jī)驅(qū)動(dòng)器sm-60作為動(dòng)力裝置。57byg007
11、-4型步進(jìn)電機(jī)為四相混合式步進(jìn)電機(jī),由于實(shí)驗(yàn)室現(xiàn)有電機(jī)驅(qū)動(dòng)器為兩相的,固步進(jìn)電機(jī)作兩相使用,步距腳為1.8度,通過步進(jìn)電機(jī)驅(qū)動(dòng)器sm-60細(xì)分實(shí)現(xiàn)步距腳0.9度。電機(jī)驅(qū)動(dòng)器sm-60接口如下: gnd端為外接直流電源,直流電壓為12va+,a-端為電機(jī)a相,b+,b-端為電機(jī)b相。+com端為光電隔離電源公共端,接單片機(jī)供電電源為+5v,cp端為脈沖信號(hào),下降沿有效。dir端為方向控制信號(hào),電平高低決定電機(jī)運(yùn)行方向。free端為驅(qū)動(dòng)器使能,高電平或懸空電機(jī)可運(yùn)行。低電平驅(qū)動(dòng)器無電流輸出,電機(jī)處于自由狀態(tài)。2、軟件及算法設(shè)計(jì)(1)物體位置的計(jì)算圖 3-5 物體位置示意圖坐標(biāo)點(diǎn)參數(shù)的計(jì)算將畫筆所在
12、的位置設(shè)定為整個(gè)物體的位置。如圖3-5設(shè)定物體位置的初值坐標(biāo)為(x,y)l1= l2= 設(shè)電機(jī)a 的步進(jìn)為a cm, 電機(jī)b的步進(jìn)為b cm,物體高度為h cm。如圖8為物體在畫板某一位置,則有:解得x軸點(diǎn)位置和h為則y軸點(diǎn)位置y=115-h控制物體從一點(diǎn)到另一點(diǎn)的實(shí)現(xiàn)就是當(dāng)x、y已知條件,求電機(jī)的步進(jìn)過程。由圖8 解得:解得 (cm)(cm)由此,利用軟件實(shí)現(xiàn)以上算法來分別控制兩個(gè)步進(jìn)電機(jī)的步進(jìn)a,b,這樣就可以向控制系統(tǒng)輸入起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)讓物體在畫板置任意行走。(2)直線算法: 目前畫直線的算法也算是有很多,比如:逐點(diǎn)比較直線插補(bǔ),脈沖增量插補(bǔ)和數(shù)據(jù)采集插補(bǔ),本設(shè)計(jì)根據(jù)實(shí)際所學(xué)知識(shí),選
13、擇了逐點(diǎn)比較直線插補(bǔ)法,具體如下:逐點(diǎn)比較法的基本原理是,在刀具按要求軌跡運(yùn)動(dòng)加工零件輪廓的過程中,不斷比較刀具與被加工零件輪廓之間的相對(duì)位置,并根據(jù)比較結(jié)果決定下一步的進(jìn)給方向,使刀具向減小偏差的方向進(jìn)給。圖3-6 第一象限直線如圖3-6所示,設(shè)直線的起點(diǎn)為坐標(biāo)原點(diǎn),終點(diǎn)坐標(biāo)為a(,),點(diǎn)m (,)為加工點(diǎn)(動(dòng)點(diǎn))。定義偏差公式為 。若=0,表明點(diǎn)m在oa直線段上;若0,表明點(diǎn)m在oa直線段上方,即點(diǎn)m 處;若0, 表明點(diǎn)m在oa直線段下方,即點(diǎn)m處。由此可得第一象限直線逐點(diǎn)比較法插補(bǔ)的原理是:從直線的起點(diǎn)出發(fā),當(dāng)0時(shí),沿+x軸方向走一步;當(dāng)0時(shí),沿+y軸方向走一步;當(dāng)兩方向所走的步數(shù)與終點(diǎn)
14、坐標(biāo)(,)相等時(shí),發(fā)出終點(diǎn)到信號(hào),停止插補(bǔ)??梢詫⑸厦嫠x的偏差公式進(jìn)一步簡(jiǎn)化,推導(dǎo)出偏差的遞推公式。 當(dāng)0時(shí),沿+x軸方向進(jìn)給一步, (1)當(dāng)0時(shí),沿+y軸方向進(jìn)給一步, (2)式(1)和式(2)是簡(jiǎn)化后偏差的計(jì)算公式,在公式中只有一次加法或減法運(yùn)算,新加工點(diǎn)的偏差都可由前一點(diǎn)偏差和終點(diǎn)坐標(biāo)相加或相減得到。本體設(shè)計(jì)中采用以上原理,不過對(duì)于非原點(diǎn)開始的直線,采用起點(diǎn)坐標(biāo)歸零思想,結(jié)果也證明了改思路的可行性。(3)畫圓算法:畫圓算法采用圓弧插補(bǔ)法。圓弧插補(bǔ)法也是在繪圖系統(tǒng)中常用的一種方法,它和直線插補(bǔ)法原理相同,也是逐點(diǎn)比較算法。若 f=0,表明加工點(diǎn)在圓弧上;f0,表明加工點(diǎn)在圓弧外;f0,
15、表明加工點(diǎn)在圓弧內(nèi)。若 f0,為逼近圓弧,下一步向-x軸進(jìn)給一步,并計(jì)算出新的偏差值;f0,為逼近圓弧,下一步向+y 軸進(jìn)給一步,并計(jì)算出新的偏差值。各象限插補(bǔ)公式如下在實(shí)際操作中,可以以圓心為假設(shè)的坐標(biāo)原點(diǎn),再根據(jù)上面的原理設(shè)計(jì)算法。(4)循跡黑線的探測(cè)及循跡算法在以畫筆為中心,半徑20毫米的圓周上安裝了8個(gè)反射式紅外對(duì)管作為軌跡探測(cè)傳感器,安裝方式如圖3所示。 07654321-1+1圖3-7 軌跡探測(cè)傳感器安裝方式 圖3-8 方向調(diào)整示意圖根據(jù)圖3-7安裝方式及安裝半徑,只要系統(tǒng)的采樣頻率足夠高,軌跡是無法脫離探測(cè)范圍的。但由于使用了8個(gè)傳感器,不同傳感器信號(hào)間的組合太多,使用一般窮舉辦
16、法難以實(shí)現(xiàn)循跡控制,因此自己設(shè)計(jì)了一套循跡算法。如圖3-8,定義了物體循跡時(shí)運(yùn)動(dòng)的8個(gè)方向,圖中黑箭頭(1號(hào)方向上)表示物體當(dāng)前的循跡方向。循跡時(shí),使用變量direct表示當(dāng)前物體運(yùn)動(dòng)方向,物體每次運(yùn)動(dòng)時(shí)先按當(dāng)前方向向前步進(jìn)一段固定的距離,然后檢測(cè)采樣傳感器信號(hào)并調(diào)整direct,再沿新的direct方向步進(jìn)。由于所給的曲線是連續(xù)的,所以每次調(diào)整direct只能是1或1。如圖3-8所示,direct在需向左偏時(shí)則direct加1,需向右偏則減1,繼續(xù)前進(jìn)則保持不變。由于只有8個(gè)運(yùn)動(dòng)方向,所以對(duì)direct的運(yùn)算需在模8的范圍內(nèi)(07)進(jìn)行。現(xiàn)在考慮如何決定左偏或右偏的問題,使用上述調(diào)整辦法只需
17、要根據(jù)direct的前后方向及左右方向的四個(gè)信號(hào)對(duì)direct調(diào)整即可。如圖4中僅需根據(jù)1、3、5、7方向的信號(hào)對(duì)direct調(diào)整。由于每個(gè)方向上1和保持不變的傳感器信號(hào)是一定的,故對(duì)8個(gè)方向上的調(diào)整策略用一個(gè)靜態(tài)數(shù)組的形式保存起來,調(diào)整時(shí)直接查表即可,方便編程。這種循跡算法大大地減少了循跡運(yùn)動(dòng)的調(diào)試時(shí)間,為整個(gè)作品成功的完成打下了基礎(chǔ)。當(dāng)每次步進(jìn)的距離較小時(shí),若在direct方向的前、左、右三處的傳感器同時(shí)發(fā)現(xiàn)是白紙,則表明傳感器探測(cè)到了曲線的間斷部分或盡頭,此時(shí)應(yīng)根據(jù)前幾次(23次)direct的平均值作為探索方向,再向前步進(jìn)23步,保證循跡的正確停止。在取平均值時(shí),需對(duì)70和07的轉(zhuǎn)變作
18、特殊處理,否則可能出錯(cuò)。實(shí)踐證明,按照上面的辦法循跡迅速穩(wěn)定,并且不會(huì)受交叉線的影響。由于軌跡線有一定寬度,實(shí)際的軌跡不可能轉(zhuǎn)折得十分迅速,當(dāng)步進(jìn)距離較小時(shí),甚至可以完成銳角的循跡。本系統(tǒng)使用的步進(jìn)距離是5毫米,效果很好。(5)系統(tǒng)主程序流程框圖上電,初始化液晶顯示等待按鍵,選擇所需的功能1直線2正方形 3圓 4循跡輸入起 點(diǎn)終點(diǎn)坐 標(biāo)按照事先設(shè)定運(yùn) 行設(shè)定圓心手動(dòng)到 點(diǎn)手動(dòng)到循跡起始 點(diǎn)執(zhí) 行 部 件返回顯示程序按鍵確認(rèn),進(jìn)入對(duì)應(yīng)程序圖3-9系統(tǒng)主程序流程框圖四、系統(tǒng)測(cè)試1測(cè)試儀器dt9205a型數(shù)字萬用表;秒表、卷尺;+12v直流穩(wěn)壓電源。2測(cè)量結(jié)果(1) 直線測(cè)試次數(shù)設(shè)定起點(diǎn)坐標(biāo)設(shè)定終點(diǎn)
19、坐標(biāo)實(shí)際坐標(biāo)誤差用時(shí)1(0,0)(50,50)(50.2,51.3)2cm75s2(0,0)(80,99)(80.1,100.5)1.5cm134s(2) 畫圓測(cè)試次數(shù)圓心坐標(biāo)半徑最大誤差用時(shí)1(25,25)251cm130s2(3) 循跡測(cè)試連續(xù)線段線長(zhǎng)間斷線段長(zhǎng)度60cm46cm用時(shí)28.1s24.3s3誤差分析及改進(jìn)措施(1)坐標(biāo)轉(zhuǎn)換的誤差。(x,y)坐標(biāo)向(l,r)坐標(biāo)轉(zhuǎn)換時(shí)使用幾何分析的方法,但為了處理方便,將懸掛滑輪視為一點(diǎn),沒有考慮其半徑。本作品以減小其半徑的辦法降低誤差。同時(shí),進(jìn)行坐標(biāo)變換時(shí),單片機(jī)在計(jì)算精度上也會(huì)引進(jìn)誤差,由于使用浮點(diǎn)運(yùn)算,該誤差不大。(2)筆尖和懸掛點(diǎn)不在同
20、一平面引入誤差,應(yīng)盡量使三點(diǎn)處于與地板平行的平面以減小誤差。(3)步進(jìn)電機(jī)的步進(jìn)脈沖個(gè)數(shù)和步進(jìn)線距離之間的折算誤差。作品使用了直接測(cè)量一段距離和步進(jìn)個(gè)數(shù)再求平均值的辦法降低誤差。(4)牽引線引入的誤差,包括拉伸誤差和由松弛產(chǎn)生的誤差。改進(jìn)措施是使用變形系數(shù)小的牽引線和增加懸掛物體的重量。(5)繞線產(chǎn)生的誤差。解決辦法是根據(jù)力學(xué)分析采用機(jī)械的辦法保證繞線不重疊,并且使用半徑小的牽引線使繞線在橫向延伸的距離減少,從而減少誤差。(6)讀數(shù)誤差。初始定位時(shí)需提供物體坐標(biāo),測(cè)量結(jié)果需人為讀數(shù),這會(huì)引入誤差。五、結(jié)論本設(shè)計(jì)以at89s52單片機(jī)為核心,利用軟件編程,實(shí)現(xiàn)了定點(diǎn)直線運(yùn)動(dòng),圓形軌跡運(yùn)動(dòng),間斷黑
21、線循跡以及坐標(biāo)的實(shí)時(shí)顯示。測(cè)試結(jié)果表明,本設(shè)計(jì)很好地完成了題目基本部分和發(fā)揮部分的全部要求,速度快、精度高。整個(gè)系統(tǒng)從軟件到硬件都體現(xiàn)優(yōu)良簡(jiǎn)約的風(fēng)格。主要有以下幾個(gè)優(yōu)點(diǎn):(1) 采用步進(jìn)電機(jī)及專用細(xì)分驅(qū)動(dòng)器,懸繩收放控制較精確;(2) 程序算法優(yōu)良,易于誤差處理和提高精確度;(3) lcd液晶顯示,界面友好。 六、參考文獻(xiàn)1、王瓊.單片機(jī)原理及應(yīng)用.合肥工業(yè)大學(xué)出版社2、求是科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航.人民郵電出版社3、 高吉祥.全國大學(xué)生電子設(shè)計(jì)競(jìng)賽培訓(xùn)教程 - 數(shù)字系統(tǒng)與自動(dòng)控制系統(tǒng)設(shè)計(jì).電子工業(yè)出版社附錄一 電路原理圖1、控制部分電路圖:2、循跡模塊電路圖:附錄二 源代碼/*/#i
22、nclude #include #include #include #define uchar unsigned char /無符號(hào)字符類型定義#define uint unsigned int /無符號(hào)整數(shù)類型定義/*/步進(jìn)電機(jī)驅(qū)動(dòng)器引腳連接定義sbit motor_left_cp =p10; /左步進(jìn)電機(jī)脈沖sbit motor_left_dir=p11; /左步進(jìn)電機(jī)方向控制端sbit motor_right_cp =p12; /右步進(jìn)電機(jī)脈沖sbit motor_right_dir=p13; /右步進(jìn)電機(jī)方向控制端sbit motor_free =p14; /電機(jī)使能端(高電平有效,低
23、電平是電機(jī)處于自由狀態(tài))sbit shld = p15;sbit s_clk = p16;sbit s_data = p17;sbit jiesu=p36;/*/#define pai 3.141592 /圓周率#define a 15 /80cm x 100cm場(chǎng)地到兩電機(jī)連線的垂直距離(厘米)#define b 15 /80cm x 100cm場(chǎng)地到邊線(頂端滑輪和電機(jī)的連線)的垂直距離(厘米)#define r 0.8276 /滑輪半徑(厘米)#define stepz 0.0122 /左步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)#define stepy 0.0122 /右進(jìn)步點(diǎn)擊每步弧長(zhǎng)(厘米)#de
24、fine step 0.0125 /步進(jìn)電機(jī)每步弧長(zhǎng)(厘米)#define radius 25 /圓周半徑長(zhǎng)度#define motor_free 1/*/lcd1602液晶模塊引腳連接定義#define lcd_data p0 /1602的8位數(shù)據(jù)線連接到p0口sbit rs=p35; /1602的數(shù)據(jù)/命令選擇端rs連接到p1.0sbit rw=p34; /1602的讀/寫選擇端連接到p1.1sbit en=p33; /1602的使能信號(hào)引腳連接到p1.2/*/uchar code kaiji016= welcome! ;uchar code kaiji116=loaddowning.;u
25、char code table016=1.line 2 rectan;uchar code table116=3.circu 4.follow; uchar code table316= draw a line ;uchar code table416=draw circularity;uchar code table516=follow the line ;uchar code table616=( , );( , ) ;uchar code table716=( , ); r= cm ; uchar code table816=( cm, cm) ;uchar code table916=
26、 enter to begin ;uchar code table1016=executing . x;uchar code table1116=rectan perform. ;uchar code table1216=(25,25)-(50,25) ;uchar code table1316=(50,50)-(25,50) ;uchar code table1416=have completed!;uchar code wrong16=wrong coordinate;uchar code agian16=input agian ? ;uchar code number10=0123456
27、789; /*/int x0,y0,x1,y1;/*/函數(shù)聲明void delay_1ms(int time); /延時(shí)1ms*timevoid lcd1602_busy_check(void); /lcd1602忙檢查函數(shù)void write_lcd1602(uchar udata,bit command); /lcd1602寫數(shù)據(jù)和寫指令函數(shù)void write_byte_locate(uchar x,uchar y,uchar udata); /把數(shù)據(jù)顯示在lcd1602的指定位置void init_lcd1602(); /lcd1602初始化函數(shù)uchar keyboard_scan(
28、void); /鍵盤掃描函數(shù),返回鍵盤掃描碼uchar scan_code_transform(uchar scancode); /鍵碼識(shí)別函數(shù)/void motot_ld(int );void motor_left_step(bit dir); /左電機(jī)轉(zhuǎn)動(dòng)一步,dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即松開線;dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即收緊線void motor_right_step(bit dir);/右電機(jī)轉(zhuǎn)動(dòng)一步,dir=0時(shí)反轉(zhuǎn)(順時(shí)針),即收緊線;dir=1時(shí)正轉(zhuǎn)(逆時(shí)針),即松開線void draw_circular(int x,int y); / 畫圓函數(shù)void currentdi
29、sp(int line,int x,int y);/當(dāng)前顯示void linedisp(int,int,int,int,int); /當(dāng)前直線點(diǎn)顯示void display(uchar table16,bit line);/提示顯示void line(int,int,int,int);/畫直線函數(shù)void draw_line();/void buchang(float,float,float,float);/確定左右電機(jī)移動(dòng)的步數(shù)void returndata();/讀取對(duì)光二極管的值void follow();/循跡函數(shù)void zouxiang(int);/循跡電機(jī)驅(qū)動(dòng)函數(shù)/*/延時(shí)函數(shù),
30、延時(shí)時(shí)間=1ms*time(晶振12mhz)void delay_1ms(int time) uchar i,j; do for(i=0;i15;i+) for(j=0;j20;j+); while(time-)!=0); /*/*lcd1602液晶操作函數(shù)部分*/lcd1602液晶檢查忙函數(shù)void lcd1602_busy_check(void) en=0; rw=1; rs=0; en=1; while(lcd_data&0x80=1); en=0; delay_1ms(1);/*/lcd1602寫數(shù)據(jù)和寫指令函數(shù)/把寫數(shù)據(jù)和指令二個(gè)合在一起,用一個(gè)變量command來判斷void wr
31、ite_lcd1602(uchar udata,bit command) lcd1602_busy_check(); /忙檢查 rs=command;/command=0時(shí)寫入指令,command=1時(shí)寫入數(shù)據(jù) rw=0; /把lcd設(shè)置成寫狀態(tài) en=1; /e高脈沖,把數(shù)據(jù)/指令寫入 lcd_data=udata; en=0;/*/把數(shù)據(jù)顯示在lcd1602的指定位置/x,y是坐標(biāo),udata是需要顯示的數(shù)據(jù)/x不能大于15,每行最多顯示16字符/y不能大于1,最多顯示2行void write_byte_locate(uchar x,uchar y,uchar udata) if(y)x+
32、=0x40;/判斷顯示哪行,顯示第二行l(wèi)cd存儲(chǔ)區(qū)加40h x+=0x80; /如果沒有加0x40則顯示第一行 write_lcd1602(x,0); /寫指令 write_lcd1602(udata,1);/寫顯示數(shù)據(jù)/*/lcd1602初始化函數(shù)void init_lcd1602() write_lcd1602(0x38,0); /顯示模式設(shè)置 delay_1ms(20); write_lcd1602(0x01,0);/清除屏幕 write_lcd1602(0x06,0);/顯示光標(biāo)移動(dòng)設(shè)置 write_lcd1602(0x0c,0);/開顯示/*/*鍵盤掃描和鍵碼識(shí)別函數(shù)部分*/鍵盤掃描
33、函數(shù),返回鍵盤掃描碼/p2.0p2.3輸出,p2.4p2.7輸入uchar keyboard_scan(void) uchar scancode,tmpcode; p2=0xf0; while(p2=0xf0); /等待有鍵按下 delay_1ms(20); /延時(shí)10ms去抖動(dòng) if(p2!=0xf0) scancode=0xfe; /逐行掃描 while(scancode!=0xef) /還沒有掃描完4行 p2=scancode; if(p2&0xf0)!=0xf0) /本列有鍵按下 tmpcode=(p2&0xf0)|(scancode&0x0f); while(p2&0xf0)!=0x
34、f0); /等待鍵釋放 return(tmpcode); else scancode=(scancode0)znum=(int)(zb+0.5);fhz=1;elseznum=abs(int)(zb-0.5); fhz=0;if(yb0)ynum=(int)(yb+0.5); fhy=0;elseynum=abs(int)(yb-0.5); fhy=1; while(znum-) motor_left_step(fhz);while(ynum-) motor_right_step(fhy); /return 0; /*float sumz1=0.0;float sumz2=0.0;float
35、sumy1=0.0;float sumy2=0.0;void buchang(float x,float y,float nextx,float nexty)/,int *znum1,int *ynum1) float zb,yb; float d;int znum,ynum,fhz,fhy; zb=(sqrt(114.7-y)*(114.7-y)+(14.4+x)*(14.4+x)-sqrt(114.7-nexty)*(114.7-nexty)+(14.4+nextx)*(14.4+nextx)/stepz; yb=(sqrt(114.5-y)*(114.5-y)+(94.4-x)*(94.
36、4-x)-sqrt(114.5-nexty)*(114.5-nexty)+(94.4-nextx)*(94.4-nextx)/stepy; if(zb0) d=zb-(int)(zb); sumz1+=d;fhz=1; if(sumz1=1) sumz1-=1; znum=(int)(zb)+1; else znum=(int)(zb); elsed=zb-(int)(zb); sumz2+=d;fhz=0; if(sumz20)d=yb-(int)(yb); sumy1+=d;fhy=0; if(sumy1=1) sumy1-=1; ynum=(int)(yb)+1; else ynum=(
37、int)(yb); elsed=yb-(int)(yb); sumy1+=d;fhy=1; if(sumy10)&(sy=0) if(fm=0) if(fm=0) nextx=x+8*step; nexty=y;buchang(x+a0),(y+b0),(nextx+a0+0.003),(nexty+b0);fm=fm-zy;else nextx=x+8*step; nexty=y; buchang(x+a0),(y+b0),(nextx+a0),(nexty+b0); fm=fm-zy; else nexty=y+8*step; nextx=x;buchang(x+a0),(y+b0),(nextx+a0),(nexty+b0);fm=fm+zx; else if(sx0) /2 if(fm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 消費(fèi)電子鋁型材及加工項(xiàng)目可行性研究報(bào)告
- 二零二五年度建筑勞務(wù)分包及項(xiàng)目管理服務(wù)協(xié)議3篇
- 運(yùn)動(dòng)地板項(xiàng)目可行性研究報(bào)告申請(qǐng)備案
- 工業(yè)互聯(lián)網(wǎng)產(chǎn)業(yè)園項(xiàng)目初步設(shè)計(jì)
- 中國公務(wù)機(jī)產(chǎn)業(yè)發(fā)展環(huán)境透析、市場(chǎng)全景評(píng)估及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告(智研咨詢)
- 智研咨詢發(fā)布:中國航運(yùn)行業(yè)市場(chǎng)現(xiàn)狀、發(fā)展概況、未來前景分析報(bào)告
- 鈦合金泵閥建設(shè)項(xiàng)目可行性研究報(bào)告申請(qǐng)立項(xiàng)備案
- 深圳某電子商務(wù)平臺(tái)項(xiàng)目可行性研究報(bào)告
- 智能控制設(shè)備生產(chǎn)基地項(xiàng)目申請(qǐng)可行性研究報(bào)告
- 安置房項(xiàng)目二次結(jié)構(gòu)磚砌體工程專項(xiàng)施工方案培訓(xùn)資料
- SB/T 10756-2012泡菜
- GB/T 20492-2006鋅-5%鋁-混合稀土合金鍍層鋼絲、鋼絞線
- 公司變更評(píng)審表
- 醫(yī)院輸血質(zhì)量管理考核標(biāo)準(zhǔn)
- 七年級(jí)語文上冊(cè):15、《古代詩歌四首》教案
- 自由戰(zhàn)爭(zhēng)-簡(jiǎn)體素材表
- 氣道評(píng)估與處理課件
- 腦血管病的介入診療課件
- 新概念第三冊(cè)課文60全(打印版)
- 四年級(jí)硬筆書法教案教學(xué)設(shè)計(jì)共16課
評(píng)論
0/150
提交評(píng)論