機器人關(guān)節(jié)的設(shè)計與實現(xiàn)
《機器人關(guān)節(jié)的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《機器人關(guān)節(jié)的設(shè)計與實現(xiàn)(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、設(shè)計題目: 機器人關(guān)節(jié)的設(shè)計與實現(xiàn) 學(xué)生姓名: ******* 所在院系: 信息工程學(xué)院 所學(xué)專業(yè): 計算機科學(xué)與技術(shù) 導(dǎo)師姓名: ******** 完成時間: ********** 摘要 機器人關(guān)節(jié)是機器人的基礎(chǔ)部件,其性能的好壞直接影響機器人的性能。隨 著數(shù)字伺服技術(shù)等電子技術(shù)的發(fā)展, 機器人關(guān)節(jié)也在不斷發(fā)展。本文主要研究基 于舵機的機器人關(guān)節(jié)的設(shè)計與實現(xiàn)。本文主要了完成以下工作: 采用定時器控制方法產(chǎn)生舵機控制的脈沖信號。 為了能實現(xiàn)活動關(guān)節(jié)根據(jù)輸 入角度準確定位和微調(diào),在設(shè)計中加入了矩陣鍵盤調(diào)控系統(tǒng)。在硬件搭建方面, 設(shè)計了基于STC89C52的2路
2、脈沖信號的硬件控制電路系統(tǒng)。之后對系統(tǒng)所使用 的編輯軟件和調(diào)試工具進行了簡要說明,并詳細介紹了軟硬件主要模塊的設(shè)計和 實現(xiàn)過程,以及重要模塊的調(diào)試和仿真的具體過程。 最后,根據(jù)軟硬件設(shè)計結(jié)果, 制作了一個極坐標(biāo)結(jié)構(gòu)的機器人關(guān)節(jié),能夠完成在水平和豎直方向的比較精確的 控制。 關(guān)鍵詞 舵機,機器人關(guān)節(jié),脈沖信號 Abstract Robots joi nt, is a basic part of robot, whose performa nee will directly affect a robot. With the developme nt of electr onic tech n
3、o logy such as digital servo, the tech no logy of robot joint is develop ing continu ally. This paper studies the robot joint desig n and impleme ntati on based on digital serv o. In this paper, the follow ing work to complete: In order to achieve activities Joint accurate positioning and fine-tune
4、 based on the in put an gle, the desig n addi ng a matrix keyboard to con trol the system. Hardware structures desig ned 2-way pulse hardware con trol based on STC89C52 circuit system. Then, the paper briefly describes the editing software and debugging tools by the system. This paper in troduces th
5、e desig n and impleme ntati on of the main modules of hardware and software, and importa nt part of the specific process of debugg ing and simulatio n. Fin ally, accord ing to the results of software and hardware desig n, produced a polar structure of the robot joi nts which can complete in the hori
6、z on tal and vertical directi on s, respectively, the more precise con trol. Key words Servo, Robot joint. Pulse signal 1. 弓 I言 2.. 1.1 課題背景 2. 1.2 舵機簡介 3. 1.3 本文研究的工作 4. 2. 系統(tǒng)的總體設(shè)計 4. 3. 硬件的設(shè)計與實現(xiàn) 5. 3.1 主要元器件介紹 5. 3.1.1 舵機 5. 3.1.2 STC89C52 .6.. 3.2 硬件的設(shè)計過程 6. 3.2.1 工作電源控制電路設(shè)計 6 3.2
7、.2 1602顯示控制電路設(shè)計 1 3.2.3 矩陣鍵盤控制電路設(shè)計 8 3.2.4 舵機與系統(tǒng)接口電路設(shè)計 9 3.2.5 機器人關(guān)節(jié)的外形設(shè)計 9 3.3 硬件的實現(xiàn)過程 9. 3.3.1 電路板的設(shè)計過程 9. 3.3.2 硬件的組裝過程 10 4. 軟件的設(shè)計與實現(xiàn) 1.0 4.1 系統(tǒng)軟件設(shè)計流程 1.1 4.2 各模塊程序設(shè)計 1.1 4.2.1 脈沖信號產(chǎn)生模塊 1.1 4.2.2 矩陣鍵盤控制模塊 12 4.3 數(shù)據(jù)處理 1.3 4.3.1 矩陣鍵盤的散列轉(zhuǎn)換 1.3 4.3.2 脈寬與角度的數(shù)據(jù)處理 1.4 5. 仿真與調(diào)試 15
8、 5.1 硬件電路的仿真 15 5.2 單片機的程序調(diào)試 16 6. 總結(jié) 17 致謝 1.8 參考文獻 1.9 附錄1 20 附錄2 20 1.引言 從一戰(zhàn)以來,機器人學(xué)和飛機、火箭、計算機等一樣,也日益發(fā)展成為我們 日常生活不可或缺的科學(xué)技術(shù),機器人的應(yīng)用廣泛,從傳統(tǒng)的自動化制造領(lǐng)域, 到人類的日常生活,再到茫茫星系的探索,都已經(jīng)離不開機器人。 1.1課題背景 機器人關(guān)節(jié)的種類有很多,根據(jù)機器人的功能不同,關(guān)節(jié)的配臵和運動系統(tǒng) 的形式也都各不相同。 應(yīng)用最多的工業(yè)機器人是多關(guān)節(jié)機器人,它主要是由多個回轉(zhuǎn)關(guān)節(jié)和連桿組 成,模擬人的肩關(guān)節(jié)、肘關(guān)節(jié)和腕關(guān)節(jié)等的作用。工業(yè)
9、機器人關(guān)節(jié)根據(jù)輸出運動 形式的不同分為移動關(guān)節(jié)和轉(zhuǎn)動關(guān)節(jié):根據(jù)傳動機構(gòu)的不同可以分為齒輪傳動、 連桿傳動和擺線針輪減速傳動;根據(jù)驅(qū)動器形式的不同可以分為電驅(qū)動關(guān)節(jié)、 氣 壓驅(qū)動關(guān)節(jié)、液壓驅(qū)動關(guān)節(jié)和特種驅(qū)動關(guān)節(jié)等。仿人機器人也是當(dāng)今機器人愛好 者研究的熱點之一,仿人機器人因為外型類人則其關(guān)節(jié)可以分為上肢關(guān)節(jié)和下肢 關(guān)節(jié)。仿人機器人主要分為仿人手臂型和仿人雙足型。仿人手臂型主要是研究 7 自由度手臂和多自由度操作臂、多指靈巧手及手臂和靈巧手的組合。 仿人雙足型 主要研究步行機構(gòu)及步行特性,下肢關(guān)節(jié)結(jié)構(gòu)是步行質(zhì)量好壞的關(guān)鍵。微型機器 人則是利用集成電路微細加工,將驅(qū)動器,關(guān)節(jié)傳動裝臵以及傳感器控
10、制器和電 源等集成在很小的多晶硅上。工業(yè)機器人與仿人機器人的肩、 肘、髖關(guān)節(jié)不同的 是自由度的個數(shù)。通常工業(yè)機器人的肩肘髖的關(guān)節(jié)的自由度為 1。 總體來看機器人關(guān)節(jié)呈現(xiàn)出大力矩,高精度,反應(yīng)靈敏,小型化,標(biāo)準化和 模塊化的趨勢和發(fā)展。 1.2舵機簡介 在機器人關(guān)節(jié)的設(shè)計中,電機是至關(guān)重要的一部分,電機就像是機器人關(guān)節(jié) 的肌肉,只有正確的配臵和使用電機才能使機器人關(guān)節(jié)正常運轉(zhuǎn)起來。 常見的電機主要有直、交流電機,而直流電機一直在機器人設(shè)計中占有主導(dǎo) 地位。直流電機可以分為連續(xù)轉(zhuǎn)動電機和步進電機 2種,主要區(qū)別是連續(xù)轉(zhuǎn)動的 電機在通電后主軸連續(xù)轉(zhuǎn)動,只有當(dāng)斷電或者電機提供的驅(qū)動力無法驅(qū)動負
11、載 時,主軸才停止轉(zhuǎn)動或這阻塞;步進電機則是通電后主軸轉(zhuǎn)動某一個角度后, 然 后停止。直流電機和步進電機都是開環(huán)反饋系統(tǒng), 也就是在電機轉(zhuǎn)動的過程中并 不知道電機究竟轉(zhuǎn)過了多少角度。 伺服電機是一種比較特殊的連續(xù)轉(zhuǎn)動電機類型。 伺服電機轉(zhuǎn)動的角度可以通 過控制電路反饋,并且控制電路不斷的修正轉(zhuǎn)動角度的誤差, 直到電機轉(zhuǎn)動要預(yù) 期位臵。 舵機是一種伺服電機,它具有伺服電機的優(yōu)點,即在接收到控制信號后可以 轉(zhuǎn)過相對準確的位臵,這使舵機在機器人設(shè)計,航模,船模等有著廣泛的應(yīng)用, 比如用來控制機器人的轉(zhuǎn)動方向等。 舵機的定位是利用脈寬調(diào)制的方法實現(xiàn)的。 舵機可以根據(jù)周期內(nèi)高電平的持 續(xù)時間(即
12、脈寬)來完成定位。一般的舵機控制電路能夠接收周期為 20ms、脈 寬為1~2ms的脈沖信號,脈沖的準確長度決定了舵機軸轉(zhuǎn)動的準確位臵 (圖1-1)。 目前普遍使用PWM (占空比)即高電平在20ms周期內(nèi)的持續(xù)時間所占的比例 來描述脈寬。當(dāng)舵機接收到的1ms的脈寬時,舵機向某一個極限位臵轉(zhuǎn)動,當(dāng) 接收到脈寬為2ms的時候,舵機向另一個方向極限位臵轉(zhuǎn)動。也可以說舵機的 角位移與接收到的脈寬成正比,一般情況下,舵機能在 0.25~0.5的時間內(nèi)轉(zhuǎn)過 60°。 伺服電機是一種閉環(huán)反饋系統(tǒng),內(nèi)部主要有一個控制電路、一個電機、一個 齒輪箱和一個電位計組成。電位計的作用是檢測舵機的輸出軸是否已經(jīng)轉(zhuǎn)到
13、期望 位臵。電位計與舵機的輸出軸相連接,這樣分壓計能夠非常準確的反映出舵機輸 出軸的當(dāng)前位臵。電位計輸出為一個電壓信號,當(dāng)舵機的輸出軸的位臵變換時, 控制電路就會從分壓器接收到不同的電壓信號。 舵機中的控制電路將電位計的輸 出的電壓信號和控制脈沖信號定時比較,如果電壓信號不正確就會產(chǎn)生誤差信 號。該誤差信號與電位計的位臵和可能告知脈沖的差值成正比, 當(dāng)存在誤差信號 時,電機就會保持轉(zhuǎn)動,直到電位計輸出的電壓信號和控制脈沖信號相匹配時, 誤差信號被移除,電機停轉(zhuǎn)。 1?2ms A 20ms 圖1-1周期為
14、20ms的脈沖信號的高電平持續(xù)時間在 1~2ms之間變化可以控制舵機的輸出軸位臵 舵機的主要技術(shù)參數(shù)有力矩,回轉(zhuǎn)率,工作電壓,工作溫度,死區(qū)等。舵機 的應(yīng)用場合,主要有多自由度機器人設(shè)計,多路伺服航??刂?,電動遙控飛機 , 遙控飛機,航海模型,高檔遙控仿真車等。 1.3本文研究的工作 通過對電機類型的結(jié)構(gòu)和原理進行分析與比較,本課題選用舵機作為機器人 關(guān)節(jié)的本體原件來完成的機器人關(guān)節(jié)的設(shè)計與實現(xiàn),以達到可以在水平和豎直兩 個方向上控制機器人關(guān)節(jié)的活動效果。 系統(tǒng)主要包括硬件設(shè)計和軟件設(shè)計, 以及 最終硬件的制作。硬件設(shè)計主要包括液晶顯示模塊,矩陣鍵盤模塊和舵機與單片 機的接口模
15、塊,以及最后的機器人關(guān)節(jié)外形設(shè)計。 與硬件設(shè)計相對應(yīng)的,軟件設(shè) 計主要包括液晶顯示模塊,矩陣鍵盤模塊和舵機的脈沖形成模塊。在本文的下面 一些章節(jié)會詳細介紹軟硬件各部分的設(shè)計過程。 2.系統(tǒng)的總體設(shè)計 系統(tǒng)的總體設(shè)計分別包括系統(tǒng)的硬件設(shè)計和軟件設(shè)計。硬件設(shè)計主要是指完 成系統(tǒng)工作所必須的硬件部分電路設(shè)計以及硬件組裝設(shè)計; 軟件設(shè)計主要是指單 片機的程序設(shè)計。硬件設(shè)計主要包含液晶顯示,矩陣鍵盤和舵機接口三大部分。 圖2-1為系統(tǒng)框圖。 圖2-1系統(tǒng)框圖 3.硬件的設(shè)計與實現(xiàn) 硬件是系統(tǒng)運行的基礎(chǔ),硬件設(shè)計是系統(tǒng)設(shè)計中的重要組成部分。本系統(tǒng)中 的硬件設(shè)計主要包括系統(tǒng)工作電源電
16、路設(shè)計, 1602液晶顯示電路設(shè)計,矩陣鍵 盤和舵機與系統(tǒng)接口的電路設(shè)計等。 3.1主要元器件介紹 下面主要對硬件中使用的一些重要的元器件的電氣特征作一下介紹。 3.1.1舵機 通過對舵機的結(jié)構(gòu)原理,控制特性與機械特性的綜合分析與研究, 最終選擇 TowerPro公司的MG995型號舵機(圖3-1)作為本課題的舵機本體。該型號舵 機具有力矩大(10kg/cm),輸出功率高,價格合理,穩(wěn)定性好等優(yōu)點。其他參數(shù) 還有回轉(zhuǎn)率0.20s/60°,工作電壓4.8~7.2V,工作溫度為0~55°C,角度范圍0~90 度等。 圖 3-1 TowerPro MG995 3.1.2 STC89
17、C52 由于51系列單片機在國內(nèi)廣泛使用,技術(shù)比較成熟,而且相關(guān)的開發(fā)工具 也比較普及,性能優(yōu)越,所以在此也選擇 51系列的STC89C52單片機作為控制 機器人關(guān)節(jié)的單片機。STC89C5*系列單片機不僅性能優(yōu)越,而且控制簡單,價 格合理。該型號的單片機片內(nèi) EPROM達到8K,同時有2個定時器,足以承擔(dān) 系統(tǒng)的設(shè)計需要。 其他的選用的主要器件還有穩(wěn)壓器 7805,液晶顯示器1602,電容和電阻等 一系列電器元件。 3.2硬件的設(shè)計過程 硬件的設(shè)計過程包括硬件的電路設(shè)計和機器人關(guān)節(jié)的外形設(shè)計。 根據(jù)系統(tǒng)將要完成的幾項功能考慮硬件電路設(shè)計,硬件部分所要提供的功能 有液晶顯示、矩陣鍵盤
18、、舵機接口,所以硬件電路設(shè)計主要包含這幾個部分的功 能。除此之外還有系統(tǒng)工作的電壓電路, 以及機器人關(guān)節(jié)的外形設(shè)計等。 下面詳 細介紹重要功能模塊的設(shè)計。 3.2.1工作電源控制電路設(shè)計 為了給系統(tǒng)各部分提供穩(wěn)定可靠的直流電壓,在控制系統(tǒng)中選用了穩(wěn)壓器 7805完成對工作電壓的穩(wěn)定控制工作。7805具有體積小,重量輕,可靠性好等 特點。圖3-2是為系統(tǒng)電源控制電路圖。 12V的直流電壓經(jīng)過7805后轉(zhuǎn)換為穩(wěn)定的5V電壓后,供應(yīng)整個電路的電 源系統(tǒng)。為了防止電路回時電流過大對 7805造成損害,在電路中選用二極管保 護 7805。 VCC 5V VCC 12V 7805 1 3
19、 2 C1 C2 key 當(dāng)GND 圖3-2電源控制電路圖 3.2.2 1602顯示控制電路設(shè)計 系統(tǒng)選用1602 (SPI16引腳)作為數(shù)據(jù)顯示器件,主要用于顯示舵機的當(dāng)前 角度和調(diào)整角度。1602是一種16*2字符型液晶顯示器,采用電路模塊封裝,控 制器大部分為HD44780,帶有標(biāo)準的SIP14引腳(無背光)或SIP16引腳(帶背 光),芯片和背光電路工作電壓與單片機兼容引腳分為電源、通信數(shù)據(jù)和控制三 部分,可以很方便的可以與單片機進行連接。 設(shè)計中選用單片機的 P0 口作為1602的數(shù)據(jù)輸入端口( D0~D7 ),P3.2,P3.3, P3.4分別作為數(shù)據(jù)命令選擇端
20、(H/L)( RS),讀/寫選擇端(H/L)( RW),使能信 號端(E)。上拉電阻部分(RP1)具有限流的作用。圖3-3為1602與STC89C52 的接口電路圖。 LM016L 圖3-3 1602 顯示電路圖 3.2.3矩陣鍵盤控制電路設(shè)計 本系統(tǒng)的矩陣鍵盤主要是用于定位調(diào)整和加減微調(diào)舵機角度兩項功能。 電路 圖3-4為矩陣鍵盤的控制電路。 選用STC98C52單片機的P2 口作為矩陣鍵盤的控制端口。按鍵 0~9為數(shù)字 按鍵,主要用于定位舵機角度的輸入。鍵 D1++,D1――,D2++,D2――分別 控制舵機1和舵機2微調(diào)。確定鍵,當(dāng)輸入舵機需要定位的角度后,按下確認鍵 后
21、,舵機開始運轉(zhuǎn)。取消鍵,用于取消輸入的定位角度(未按確定鍵前) 。 P2.0 10 P2.1 P2.2 P2.3 STC89C>4 P2.5 P2.6 P2.7 11 12 13 14 15 16 17 1 2 3 D1++ 4 5 6 D1-- 7 8 9 0 D2++ D2-- 確認 取消 14 15 16 「 仃 「 10 11 12 13 圖3-4
22、 矩陣鍵盤電路圖 324舵機與系統(tǒng)接口電路設(shè)計 向舵機發(fā)送脈沖信號的電路部分,舵機根據(jù)脈沖寬度調(diào)整舵機的位臵。 下圖 (圖3-5)為舵機與系統(tǒng)接口的控制電路部分。 VCC 分別選用STC89C52單片機的P1.3, P1.4引腳作為舵機1和舵機2的輸出 脈沖信號的控制端口。在電路仿真中,該2個端口接的是虛擬示波器,用來顯示 和反映脈沖信號的輸出狀態(tài)。 3.2.5機器人關(guān)節(jié)的外形設(shè)計 機器人關(guān)節(jié)的外形設(shè)計是指最終機器人關(guān)節(jié)的成型外形。 首先是關(guān)節(jié)的支架 部分的設(shè)計,因為關(guān)節(jié)支架是第一眼外觀直接接觸到的, 所以設(shè)計的時候兼顧成 本與外形的美觀;然后是關(guān)節(jié)基座的設(shè)計,關(guān)節(jié)基
23、座是位于關(guān)節(jié)底層的基礎(chǔ)部件, 它的穩(wěn)固與靈活直接關(guān)系到整個關(guān)節(jié)的活動性。 3.3硬件的實現(xiàn)過程 硬件的實現(xiàn)過程主要包括PCB板得制作過程和硬件的組裝過程下面對此兩 方面做分別介紹。 3.3.1電路板的設(shè)計過程 將整個系統(tǒng)電路圖設(shè)計出來后,接下來我們就需要制作電路板圖了。 電路板 設(shè)計得是否合理,質(zhì)量是否可靠,直接決定著制作出來的控制電路的質(zhì)量和運行 的可靠性。Altium Designer提供了板圖設(shè)計功能,包括自動布線和器件自動擺放 功能。事實上,器件自動擺放功能是達不到要求的,因此,實際操作時應(yīng)采用“人 工擺放兀件一人工預(yù)布線一自動布線一人工細調(diào)” 的設(shè)計流程,一步一步制作出
24、符合要求的電路板。電路板圖見附錄二。 332硬件的組裝過程 這部分主要包括部分硬件的制作和硬件的組裝。前期硬件制作的精細將直接 關(guān)系到最終關(guān)節(jié)的靈活性、外觀以及擴充能力,也就是決定了機器人關(guān)節(jié)的質(zhì)量。 硬件的組裝主要包括機器人關(guān)節(jié)的外形組裝和電路板的各元件的安放與焊 接,以及組裝完成后的調(diào)試等過程。首先是硬件的選材,在跑遍各材料市場之后, 終于選定了以鋁合金作為支架的材料。 但是因為鋁合金的硬度較大,實驗的工具 設(shè)計的不足,以及遇到各式各樣的問題 剪過程的失誤,造 有限,不易裁剪,所以這對部分的器件制作產(chǎn)生了不小的困難。 不過最終我們依 然是不懈的向我們的設(shè)計靠近,裁剪出來比較合格的
25、部件。硬件的組裝過程可以 說也是一個有難度的過程,在設(shè)計階段的各個關(guān)節(jié)部件,在組裝過程中才會發(fā)現(xiàn) 。比如會遇到裁剪好的部件因為誤差和裁 E的最終部件不能很好的吻合舵機的轉(zhuǎn)軸問題等。 4.軟件的設(shè)計 '實現(xiàn) 圖3-6 關(guān)節(jié)實物圖 軟件是系統(tǒng)的靈魂,軟件設(shè)計的好壞直接影響到整個系統(tǒng)性能的強弱。 所以 軟件設(shè)計是本系統(tǒng)中重要的組成部分 4.1系統(tǒng)軟件設(shè)計流程 在本系統(tǒng)中的軟件主要是指單片機的程序,主要包括舵機脈沖信號發(fā)生模 塊,矩陣鍵盤控制模塊和液晶顯示器 1602顯示模塊幾大部分。 軟件的工作過程首先單片機程序復(fù)位以后,定時器和 160分別進行初始化。 之后在主函數(shù)里設(shè)臵舵機的初始
26、位臵,然后進入 while()函數(shù)。在函數(shù)內(nèi)部,不 停的進行按鍵掃描是否有按鍵被按下, 如果按鍵被按下,則進入按鍵數(shù)據(jù)處理函 數(shù)keymanage(進行按鍵處理,并將處理結(jié)果送去 1602顯示。系統(tǒng)流程圖如圖 4-1所示。 4-1系統(tǒng)設(shè)計流程圖 4.2各模塊程序設(shè)計 單片機程序的子模塊主要包括脈沖信號產(chǎn)生模塊,矩陣鍵盤控制模塊和液晶 顯示模塊,在這里主要詳細介紹前 2個模塊。 4.2.1脈沖信號產(chǎn)生模塊 在該單片機程序中,主要使用2個定時器來產(chǎn)生2路脈沖信號,分別輸送給 2個舵機。具體實現(xiàn)方法是timer1作為基準定時器,提供穩(wěn)定的10ms定時,timerO 則作為控制
27、高電平時間定時器。在 timerl中每次根據(jù)標(biāo)志位選擇翻轉(zhuǎn)脈沖信號 高低電平,并打開timerO:在timerO中斷函數(shù)中,則根據(jù)標(biāo)志位重新翻轉(zhuǎn)脈沖信 號,最后關(guān)閉timerO,則形成高電平脈沖,完成舵機脈沖信號的輸出。脈沖信號 產(chǎn)生流程圖如圖4-2所示。 ▼ 設(shè)置 timerO, timerl timerl timerO 打開 timerO, timerl PWM1=~PWM1 Flag=1 PWM2=?PWM2 Flag=O 設(shè)置舵機2的定 時器初值并 PWM 仁?PWM1 設(shè)置舵機1的定 時器初值并 PWM2=~PWM2 是 —— (Fl
28、ag==O)? 打開timeO 關(guān)閉TimerO 圖4-2 脈沖信號產(chǎn)生流程圖 因為舵機的控制電路周期的脈沖時間為 20ms,而STC89C52里共有2個定 時器,所以本系統(tǒng)采用分時復(fù)用的方法來產(chǎn)生 2路脈沖信號。該方法在理論上可 以控制10個舵機的共同工作,可擴充性強。 4.2.2矩陣鍵盤控制模塊 在單片機程序中,矩陣鍵盤的控制最為繁雜。首先是鍵盤的掃描,根據(jù)按鍵 的不同分別執(zhí)行不同的程序操作:0~9數(shù)字按鍵經(jīng)過鍵盤的散列轉(zhuǎn)換后分別被存 入程序處理并臵flag_key=1 (表示有數(shù)字按鍵被按下)和送去液晶顯示器顯示; ++,――按鍵直接控制脈寬信號微調(diào)增加(減少)千分之 0.5
29、( <0.1°);確定鍵 則是很據(jù)所輸入2個舵機的角度的范圍滿足要求且flag_key=1(數(shù)字鍵按下標(biāo)志) 時,系統(tǒng)則控制脈寬信號發(fā)生變化,舵機轉(zhuǎn)動到相應(yīng)角度,并更新 1602顯示, 否則執(zhí)行出錯;取消鍵則是用于取消已輸入角度,但是還未按下確定鍵的角度值。 矩陣鍵盤的控制流程圖如圖4-3所示。 按鍵掃描 有按鍵被? 按下? ■ —1
30、 是 r 鍵盤散列轉(zhuǎn)換 1 數(shù)據(jù)處理 否 圖4-3 矩陣鍵盤流程圖 4.3數(shù)據(jù)處理 在本單片機程序中,數(shù)據(jù)處理的任務(wù)主要有兩個,分別是矩陣鍵盤的散列轉(zhuǎn) 換和脈寬與角度轉(zhuǎn)換的處理。 4.3.1矩陣鍵盤的散列轉(zhuǎn)換 鍵盤的散列轉(zhuǎn)換是指鍵盤分別接收到不同的按鍵信息后, 分別轉(zhuǎn)化為相應(yīng)的 數(shù)字或者相應(yīng)的操作。鍵盤地散列轉(zhuǎn)換采用根據(jù) P2的值來進行不同的鍵的功能 定義,分別對應(yīng)見下表: 表4-3-1鍵盤散列轉(zhuǎn)換功能定義表 P2值 對應(yīng)鍵 P2值 對應(yīng)鍵 Oxee 取消 Oxeb 舵機1-- Oxde 確定 Oxdb 6 Oxbe 舵機2-
31、- Oxbb 5 0x7e 舵機2++ 0x7e 4 Oxed 0 Oxe7 舵機1++ Oxdd 9 Oxd7 3 Oxbd 8 Oxb7 2 0x7d 7 Ox77 1 432脈寬與角度的數(shù)據(jù)處理 根據(jù)舵機的控制原理可知,脈寬與角度滿足線性關(guān)系(圖4.2)o脈寬與角度 的處理包含2個部分,一是將脈寬信號轉(zhuǎn)化為角度并用液晶顯示器顯示出來, 另 一部分是將輸入的角度轉(zhuǎn)換為脈寬信號。 若角度記為 二,脈寬記為,,脈寬-角度關(guān)系圖如圖4-4所示。 圖4-4脈寬一角度關(guān)系圖 在將脈寬轉(zhuǎn)換為角度的時候,因為顯示的角度是整數(shù),顯示部分采取下限
32、取 整(如80.0° ~80.9°顯示為80)。需要指出的是,在程序內(nèi)部,使用的脈寬單位 為us,故轉(zhuǎn)換公式如下: v - 0.09* ——90 脈寬信號在程序內(nèi)部采用的是整數(shù)(即 1000~2000us),在將輸入的角度轉(zhuǎn) 換為脈寬信號時,采取的約法是四舍五入(如 1500.3=1500,1500.6=1501。轉(zhuǎn)換 公式如下: = ((「90)*10)*1.1111 0.5 5.仿真與調(diào)試 5.1硬件電路的仿真 在本系統(tǒng)中的硬件電路仿真設(shè)計,主要是運用英國Labcenter electronics公司 開發(fā)的EDA工具軟件Protues, Protues是一款非常優(yōu)秀的仿真
33、軟件,能支持當(dāng) 前主流單片機系統(tǒng)的仿真并有豐富的軟件調(diào)試功能。 下面對主要的硬件電路仿真 作介紹和分析。首先是系統(tǒng)脈沖信號的產(chǎn)生,因為產(chǎn)生的是脈沖信號,所以選用 2個虛擬示波器查看單片機定時器產(chǎn)生的波形與大?。蝗缓笫褂?LCD1602來模 擬液晶顯示器的顯示,4*4按鍵模擬矩陣鍵盤(圖5-1)。 圖5-1電路仿真圖 系統(tǒng)最終輸送給舵機的脈沖信號是 20ms分2次10ms周期,兩路舵機信號 分別在前10ms與后10ms翻轉(zhuǎn),形成高電平,最終仍然脈沖周期仍為 20ms。圖 5-2為系統(tǒng)產(chǎn)生的2路舵機脈沖信號圖。 PWM1 PWM2 <-
34、 i 10ms — ?! 20i ms - ■* 圖5-2 2路舵機脈沖信號圖 5.2單片機的程序調(diào)試 開發(fā)工具是選用目前國內(nèi)流行的 Keil公司出品的51系列單片機軟件仿真 器。Keil Vision3 IDE是一個窗口化的軟件開發(fā)平臺,它集可視化編程、編譯、 調(diào)試、仿真于一體,支持51匯編、PLM和C語言的混合編程,界面友好、易學(xué) 易用、功能強大。它具有功能強大的編輯器、工程管理器以及各種編譯工具。 由于單片機程序采用 C語言編寫,因而程序的調(diào)試比較簡單。使用 Keil uVision3提供了豐富的調(diào)試工具,使調(diào)試進行的非常順利,最后通過編譯并生成 了
35、hex可執(zhí)行文件,下圖5-3為程序部分調(diào)試過程圖。 lESin ■mnz* K■訃*IrstdKiHiR斟djh W Q[ Fljili FrLiihrdi ]>山 兩 Ejdp 冋* N4 | -■ - + 電 二鼻咖 愴了監(jiān)£|聞也暑3 ■JU: LP^^MrrEK E'. ■AJLCTJd £hkf rCllLZ V 1 ?i 苓 罷匸粗1 mH方回 ■ml! lrat I'widl dLt Fni-pi*]a 如戈 FnChiP: 站0. .'7L1I2 Hf :F】魁弘何4 //Lllf ffl riitim: 匸庇顧 丿
36、門芒?rtl帛電甲*;找界廿 TIIRI. CEtuyiJpOI. LfJC-TQ.dlM 卄 ★ip】町.宜rue 1石. ■ ■93 I $?????*? ■ ■ +CJI ESK [QE -iibhBBariiidJ I I iikhbiririiiiid 11 LtabfaBS?ddiiJ I I iikhbiririririJ 11 Ltabhfci?d:l OX 蟲il ifldriD fihx! ■WH]) I聞0: TJHHI.=i?:EE!!2?-MLI/2E£!>. tll?C=■::£E£frNUCl..,2Et:L nH
37、L^i;i;IEE£:i>mL!iaiE£:i. JfiH 厲冋階nkDinbh Eg角心2 STrfill Brwrl.14r St列k霽t OOWJEWS DEFINE DIR Pitploy &tn E^Luoc* KIT IWC to 曲UWE KILL - 圖5-3 程序部分調(diào)試圖 6?總結(jié) 本課題利用單片機定時器實現(xiàn)了舵機 2路脈
38、沖信號的輸出,實現(xiàn)了機器人關(guān) 節(jié)轉(zhuǎn)動的功能,完成了本課題的主要內(nèi)容:機器人關(guān)節(jié)的設(shè)計與實現(xiàn)。 由于制作工藝水平的有限,使得本次設(shè)計中電路系統(tǒng)做得比較簡易與粗糙, 由于時間緊迫,未能完成更高等的目標(biāo)與任務(wù)。然而,在有限的時間內(nèi),我努力 掌握了舵機的控制方式,整體把握了機器人關(guān)節(jié)的設(shè)計思路, 完成了從設(shè)計硬件 電路、單片機程序到實現(xiàn)關(guān)節(jié)轉(zhuǎn)動的整個過程。在實驗過程中,我學(xué)習(xí)了 Keil、 Potues和Altium Designer軟件的基本功能,并掌握了一些基本的使用方法。 在前期收集資料的過程中,從網(wǎng)上和前輩們的論文中搜集到了很多不同的多 路PWM脈沖信號的控制方法,使我從不同的角度深入的
39、了解舵機的控制方法, 這對我本次實驗的軟件設(shè)計脈沖信號部分有很大的借鑒和參考意義。 雖然這次軟 件設(shè)計過程中,林林總總換了三、四種脈沖信號產(chǎn)生方案,在做過幾種方法的穩(wěn) 定性與操作難度的比較之后,最終決定使用定時器方式來完成脈沖信號的產(chǎn)生。 畢業(yè)設(shè)計是一個回顧與理順舊知識, 不斷的吸收新知識的過程。在這個過程 中,我深深感覺到自己的不足,連每一次的失敗都顯得是那么的珍貴, 都會給我 以深刻的啟迪。雖然在以后不一定會有機會從事單片機相關(guān)的工作,但是這個過 程的努力和汗水,思維和方法都會是我寶貴的人生財富。 在論文的完成過程中,得到了院系老師的大力支持,尤其是得到了曲培新老 師的精心指導(dǎo)和
40、幫助,感謝曲老師在百忙之中的辛苦指點,給予我無盡的啟迪。 曲老師從論文方向的選定,到最后的整篇文論的完成,都非常耐心的對我進行指 導(dǎo)。給我提供了大量數(shù)據(jù)資料和建議,告訴我應(yīng)該注意的細節(jié)問題,細心的給我 指出錯誤。他嚴肅的科學(xué)態(tài)度,嚴謹?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地 感染和激勵著我。 在此,我還要特別感謝在論文完成過程中所有給予我?guī)椭睦蠋熀屯瑢W(xué)。 正 是由于你們的幫助和支持,我才能克服一個一個的困難和疑惑, 直至本文的順利 完成。在論文即將完成之際,請在這里請接受我誠摯的謝意! 參考文獻 [1] 劉廣瑞等?機器人創(chuàng)新制作?西安:西北工業(yè)大學(xué)出版社,2007.2 [2] 張玉
41、茹,李繼婷,李劍鋒等.機器人靈巧手.北京:機械工業(yè)出版社, 2007.1 [3] ( 美)Gordon McComb Myke Predko著;龐明等譯.北京:科學(xué)出版社, 2007 [4] (美)McComb,G著:原魁等譯?機器人本體制作指南?北京:機械工業(yè)出 版社,2006.2 ⑸李華晉,劉鳴?機器人關(guān)節(jié)及轉(zhuǎn)向裝臵一一舵機的原理及應(yīng)用[J]高校實 驗室工作研究,2010( 103): 62-63 [6] 王倩,李冬雪?基于FPGA的機器人多路舵機控制器[J] 科學(xué)技術(shù)與工 程,2009( 11):3083-3085 [7] 萬小丹,孔凡讓,李巖,趙小偉.基于at89c5
42、2單片機的機器人關(guān)節(jié)控制 系統(tǒng)設(shè)計[J]學(xué)術(shù)論文2008(2):38-40 [8] 付麗,劉衛(wèi)國,伊強?單片要控制的多路舵機用 PWM波產(chǎn)生方法[J]微 特電機,2006(2) : 28-33 [9] 徐謀峰,黃雪梅?舞蹈機器人動作編程研究[J]山東理工大學(xué)學(xué)報,2010 (24) : 77-80 [10] 梁峰,王志良,解侖,等?多舵機控制在類人機器人上的應(yīng)用 [J].微計 算機信息,2008(1-2) : 242-243 附錄1 附錄2 /*現(xiàn)在系統(tǒng)中需要2個舵機的控制,采用的控制方式是改變單片機的一個定時器中斷的初 值,對于每一個舵機來說,是將 20ms分為三次中
43、斷執(zhí)行,一次短定時中斷和兩次長定時中 斷。這樣既節(jié)省了硬件電路,也減少了軟件開銷,控制系統(tǒng)工作效率和控制精度都很高。 具體的設(shè)計過程:例如想讓舵機轉(zhuǎn)向左極限的角度,它的正脈沖為 2ms,則負脈沖為 20ms-2ms=18ms 所以開始時在控制口發(fā)送高電平, 然后設(shè)臵定時器在 2ms后發(fā)生中斷,中斷發(fā)生后,在 中斷程序里將控制口改為低電平,并關(guān)閉短中斷,再過 18ms進入下一次定時長中斷,再將 控制口改為高電平,打開短中斷并將定時器初值改為 2ms,等待下次中斷到來,如此往復(fù)實 現(xiàn)PWMI號輸出到舵機。用修改定時器中斷初值的方法巧妙形成了脈沖信號, 調(diào)整時間段的 寬度便可使伺服機
44、靈活運動為保證軟件在定時中斷里采集其他信號, 并且使發(fā)生PWM信號的
程序不影響中斷程序的運行 (如果這些程序所占用時間過長,有可能會發(fā)生中斷程序還未結(jié) 束,下次中斷又到來的后果 ),所以需要將采集信號的函數(shù)放在長定時中斷過程中執(zhí)行,也 就是說每經(jīng)過兩次中斷執(zhí)行一次這些程序,執(zhí)行的周期還是 20ms。*/
#in elude < reg52.h >
#in elude vintrin s.h>
#in clude
45、sig ned char flag=1; un sig ned char TIM0H2; un sig ned char TIM0L2; void in it(void); sbit PWM 仁P"3; // sbit PWM2=P1A4; //舵機1短定時器初始化高 8位 //舵機1短定時器初始化低 8位 //控制舵機PWM輸出標(biāo)志變量 //舵機2短定時器初始化高 8位 //舵機2短定時器初始化低 8位 //定時器初始化函數(shù) 定義舵機1信號輸出接口 //定義舵機2信號輸出接口 *********************************************
46、********** 主函數(shù) ******************************************************** ini t(); // 定時器初始化 F1602_i nit(); //1602 初始化 F1602_clear(); //1602 清屏 NUM1=1500; //1.5ms 的高電平舵機1初值 NUM2=1500; //1.5ms的高電平舵機2初值 PWM 仁1; //舵機1的PWMU始設(shè)臵高為電平 gotoxy(1,0); in t_To_char(); display_stri ng(a); //16
47、02顯示舵機的初始角度 while(1) //保證while連續(xù)執(zhí)行 { key(); //按鍵檢索函數(shù) 短定時器時間為 NUM1 us // void mai n() { TIM0H1=((65536-NUM1)/256); TIM0L1=((65536-NUM1)%256); TIM0H2=((65536-NUM2)/256); TIM0L2=((65536-NUM2)%256); // 短定時器的時間為 NUM2 us /********************************************************* 中斷服務(wù)函數(shù)
48、**********************************************************/ void Timel(void) in terrupt 3 { TH1=0xd8; TL1=0xf0; if(flag==0) { PWM 仁-PWMI; flag=1; //10ms 定時 // 舵機1PWMH號翻轉(zhuǎn) //舵機1電平翻轉(zhuǎn)完畢,改變標(biāo)志位 } else
49、 { PWM2=?PWM2; flag=O; } TR0=1; } void TimeO(void) in terrupt 1 { if(flag==1) { TH0=TIM0H2; TL0=TIM0L2; PWM 仁?PWM1; } else //舵機1PWMH號翻轉(zhuǎn) // 舵機1翻轉(zhuǎn)完畢, 改變標(biāo)志位 // 波形產(chǎn)生,每舵機 PWM20m反 轉(zhuǎn) // 產(chǎn)生長時間中斷后, 打開小中斷 // 舵機1的信號控制 // 改變短中斷(舵機 2)的定時器初值 { TH0
50、=TIM0H1; TL0=TIM0L1; PWM2=?PWM2; } TR0=0; } 〃舵機1再次翻轉(zhuǎn),形成脈沖信號 // 舵機2的信號控制 //改變短中斷(舵機 2)的定時器初值 //舵機2再次翻轉(zhuǎn),形成脈沖信號 //關(guān)閉短中斷,等待長中斷打開 // 長短中斷交替執(zhí)行,形成 2路脈沖信號 ******************************************************* 鍵盤掃描函數(shù) ******************************************************** void key()
51、 { { un sig ned char key_code; P2=key_sca n[i]; if(P2!=key_sca n[ i]) { delay(20); key_code=P2; while(P2!=key_sca n[ i]); keyma nage(key_code); } i++; if(i>=4) i=0; } 〃臨時變量,存放被按下的按鍵信息 //首先進行行掃描 //判斷是否有按鍵按下 //有按鍵按下進入if
52、 //延遲,消除抖動 //將按鍵信息送給臨時變量做按鍵處理 //按鍵抬起有效 //進入按鍵處理函數(shù) //掃描下一行 //如果掃描結(jié)束,返回第一行繼續(xù)掃描 { ******************************************************* 鍵盤處理函數(shù) **********************************************************/ //鍵盤處理函數(shù)包括兩個部分,分別是矩陣鍵盤地散列轉(zhuǎn)換和鍵盤的數(shù)據(jù)處理 〃鍵盤地散列轉(zhuǎn)換采用根據(jù) P2的值來進行不同的鍵的功能定義(見表 4-3-1) } voi
53、d keyma nage( un sig ned char temp) { un sig ned char key=16; switch(temp) { case 0xed: key=O;break; case 0x77: key=1;break; case 0xb7: key=2;break; case 0xd7: key=3;break; case 0x7b: key=4;break; case 0xbb: key=5;break; case 0xdb: key=6;break; case 0x7d: key=7;break; case 0xbd: key=8;break; case
54、 0xdd: key=9;break; } if(temp==0xe7) { NUM仁NUM1 + 10; in t_To_char(); F1602_clear(); delay(200); flag_key=0; x=3; display_stri ng(a); } if(temp==0xeb) { NUM仁NUM1-10; in t_To_char(); F1602_clear(); delay(200); flag_key=0; x=3; display_stri ng(a); delay(20); } if(temp==0x7e) { NUM2=NU
55、M2+10; in t_To_char(); F1602_clear(); delay(200); 〃鍵盤散列轉(zhuǎn)換 // 舵機 1PWMt調(diào) +10 //將整形數(shù)據(jù)轉(zhuǎn)換為字符串 〃1602清屏 //標(biāo)志按下的不是0-9數(shù)字鍵 〃1602顯示 // 舵機 1PWMt調(diào) +10 // 舵機 2PWMt調(diào) +10 flag_key=0; display_stri ng(a);
56、 } if(temp==Oxbe) { NUM2=NUM2-10; in t_To_char(); F1602_clear(); delay(200); flag_key=O; x=3; display_stri ng(a); } if(key>=0&&key<=9) { if(flag_last==1||flag_ca ncel==1) { F1602_clear(); x=3; delay(100); display_stri ng(a); flag_last=0; flag_ca ncel=O; } fla
57、g_key=1; gotoxy(2,x); write_data(key+'O'); delay(200); // 舵機 2PWM微調(diào)-10 //當(dāng)按下是數(shù)字鍵時候,顯示數(shù)字并傳送 //給舵機信號 //如果1602顯示到最后一位或者曾經(jīng)按 //下過取消鍵則將重新定位顯示位臵,則 //將這些標(biāo)志清0 〃1602清屏 //重新定位顯示位臵 //將顯示到最后一位標(biāo)志位清 0 //將取消鍵標(biāo)志清 0 //數(shù)字鍵被按下標(biāo)志 //將1602光標(biāo)移動到顯示位臵 //在光標(biāo)處顯示按下的數(shù)字 switch(x) { //檢查當(dāng)前顯示所在位臵,根據(jù)按鍵位臵設(shè)臵舵機角度 case 3:
58、num1仁num11+key*10;break; // 舵機 1 角度的十位 case 4 :num11= num11+key;break; // 舵機 1 角度的個位 case 11 :num22=num22+key*10;break;〃 舵機 2 角度的十位 case 12 :num22=num22+key;break; // 舵機 2 角度的個位 } x++; if(x==5) x=11; //如果舵機1角度顯示位臵顯示完畢,則 //跳到舵機2顯示顯示舵機2的角度 if(x>12) flag_last=1; //顯示完畢,設(shè)臵最后標(biāo)志位
59、 } if(temp==Oxde) // K1 確認鍵 { f1=(( nu m11+90)*1000)*1.1111+0.5555;〃 舵機 1 角度轉(zhuǎn)換為脈寬 f2=((num22+90)*1000)*1.1111+0.5555;〃 舵機 2 角度轉(zhuǎn)換為脈寬 num11=f1; //強制浮點型轉(zhuǎn)換為整形脈寬并賦值給 num22=f2; 〃臨時存貯脈寬變量 } if(n
60、um11>=1000&&n um11<=2000&&n um22>=1000&&nu m22<=2000&& flag_key==1 && flag」a st==1) { //舵機只能接受1000~2000的脈寬,并且 //保證2個舵機的角度輸入的是數(shù)字信 //息并且都輸入完畢 〃1602清屏 /將脈寬值賦值給 NUM1 /將脈寬值賦值給NUM2 //賦值完畢將脈寬臨時變量清 0 F1602_clear(); NUM仁n um11; NUM2=num22; in t_To_char(); nu m11=0; num22=0; x=3; delay(100); f
61、lag_key=0; display_stri ng(a); } else { x=3; num11=0; num22=0; F1602_clear(); delay(100); flag_ca ncel=1; display_stri ng(a); gotoxy(2,3); delay(100); display_stri ng("Error!"); } } if(temp==0xee) { F1602_clear(); x=3; delay(100); display_stri ng(a); flag_key=0; } //賦值完畢,將0-9按鍵標(biāo)識清0 〃1602顯示當(dāng)前舵機的角度 //舵機角度不符合條件,則顯示出錯 //重新定位顯示位臵 //舵機脈寬臨時變量清 0 //取消輸入的舵機角度信息 // 顯示"Error 〃K0取消鍵 〃1602清屏 //重新定位顯示位臵 〃將0-9按鍵清0
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案