輕松DIY擊鼓機器人,提供詳細軟硬件設計參數和系統 解決方案
1. 基本組成部分概述
1.1 機械結構部分
【機械臂主體結構】
機械臂主體全手工制作,由15種零件,合共25件零件構成,其中包括3根規格不同的軸,2種規格不同的軸承合計5個(gè),支架1種合共2件,支座1種合共1件,第一級機械臂1種合共2件,第二級機械臂1種合共2件,第三級機械臂1種合計2件,機械臂間連接件3種共4件,軸固定件2種合計4件,另有用于各個(gè)零件間固定的角鐵合計8件。其中除軸承外均為鋁合金制件,機械臂手臂部分由平行鋁合金板構成雙立式結構,第三級機械臂共有兩邊,分別可自由活動(dòng),其由單塊鋁合金板組成,一端直接與舵機相連,另一端固定鼓棒。軸分為豎直軸與水平軸,豎直軸與步進(jìn)電機相套,水平軸由軸固定件與軸承分別連接各級機械臂。
整體呈現單支雙臂式結構,合共有5個(gè)自由度,其中3個(gè)自由度有電機驅動(dòng),其中位于底座下方的步進(jìn)電機用于轉動(dòng),而位于第二級與第三級機械臂之間連接的舵機用于帶動(dòng)第三級機械臂轉動(dòng)。鋁合金板零件之間使用自制淬火角鐵進(jìn)行固定,避免對鋁合金制件進(jìn)行鈑金工作,以減低成本和制作時(shí)間;軸與鋁合金工件之間采用軸連接件與軸承混合固定的方式進(jìn)行配合與固定。整體機械臂合共使用了將近200g的螺絲與螺母,主要用于角鐵與鋁合金板件的緊固處理,另外也有使用少量緊固螺釘進(jìn)行軸與固定件或者電機之間的固定。舵機上面也裝有四個(gè)帶有齒孔的固定件,用于夾持第三級機械臂。(詳見(jiàn)圖1.1)
圖1.1 機械臂主體結構實(shí)物圖
【底座結構】
機器人底座由2塊平行有機玻璃構成,其中由4根螺柱連接2塊玻璃板。面板裝有軸承,通過(guò)軸承自帶的小孔與有機玻璃地板進(jìn)行螺絲固定。底板通過(guò)角鐵夾住步進(jìn)電機,使步進(jìn)電機自身不能轉動(dòng),豎直軸穿過(guò)軸承與步進(jìn)電機相連,豎直軸底部為空心處理,并且使電機軸套入豎直軸中,并使用緊固螺釘進(jìn)行兩者的固定。面板同時(shí)有9根固定螺釘,用于支撐鼓。2塊底板之間的空間用于放置主控制電路電路板PIC,步進(jìn)電機驅動(dòng)及其中一個(gè)電源。(詳見(jiàn)圖1.2及1.3)
圖1.2 底座部分內部實(shí)物示意圖
圖1.3 底座部分整體實(shí)物圖
1.2 電子電路部分
【整體電路系統】
整個(gè)機器人的電路系統由3個(gè)主要部分組成分別為由PIC組成的主控制電路,由聲音傳感器與觸碰開(kāi)關(guān)組成的子控制電路,以及由單片機控制的電機及其配套電路,其中電機及其配套電路又細分為舵機的直接控制與使用步進(jìn)電機驅動(dòng)電路進(jìn)行對步進(jìn)電機的控制。
【主控制電路】
機器人主控制電路由開(kāi)發(fā)板和最小系統板組成,開(kāi)發(fā)板主要構造包括有PIC單片機,時(shí)鐘電路系統,蜂鳴器電路,復位電路系統,配套的LED燈顯示系統,數字顯示系統,外接數據線(xiàn)系統等組成(見(jiàn)圖1.4),外有與PIC匹配5V電壓電源系統相連,向主控制電路提供穩定的電壓。利用主控制電路上的排針設備,可以使用電路連接線(xiàn)連接各個(gè)子控制電路、舵機與步進(jìn)電機驅動(dòng)器的相關(guān)接口,通過(guò)主控制電路接收子控制電路的反饋信息,通過(guò)對應的判斷向舵機、步進(jìn)電機輸出相應的脈沖,控制電機運動(dòng)。其控制流程如下:
圖1.4 主控制電路控制流程示意圖
【子控制電路】
機器人子控制電路由手工制作的電路板組成,其中子控制電路又分為聲控子電路與觸控子電路;其中聲控電路部分主要由聲音傳感器及指示燈系統構成,能夠接收環(huán)境變量中的聲音分量,通過(guò)調節可變電阻可以使聲音傳感器接收合適范圍的聲強,并通過(guò)整波電路與放大電路將相關(guān)的信息傳遞到單片機中;觸控電路主要部分由觸碰開(kāi)關(guān)構成,觸碰開(kāi)關(guān)將在設計中外接,通過(guò)擊打觸碰開(kāi)關(guān),使開(kāi)關(guān)通過(guò)電流,通過(guò)電流后整體經(jīng)過(guò)各類(lèi)比較器、放大器、整波元件實(shí)現向PIC單片機輸出有高電平經(jīng)過(guò)的信息功能。其控制流程如下所示:
圖1.5 子控制電路整體示意圖
【步進(jìn)電機驅動(dòng)電路】
步進(jìn)電機驅動(dòng)電路為現成集成模塊,外部與15V電壓相連,邏輯電源接單片機VCC,通過(guò)單片機輸出脈沖實(shí)現一定角速度轉動(dòng),同時(shí)由DIR(方向)接口決定步進(jìn)電機轉動(dòng)方向,FREE(使能)接口決定步進(jìn)電機的啟動(dòng)與停止速度。
2. 基本功能概述
【擊鼓功能】
機器人通過(guò)第三級機械臂及其連接的鼓棒實(shí)現擊鼓的功能,其中第三級機械臂由舵機帶動(dòng),調節舵機的高低電平延時(shí)時(shí)間實(shí)現對舵機的轉速、擊打力度的控制,通過(guò)高低電平輸出的循環(huán)實(shí)現轉角的控制,同時(shí)調用相關(guān)的程序,使機器人可以按照一定的節奏或者現場(chǎng)示教人員的指示進(jìn)行有規律的擊鼓動(dòng)作。
如下圖所示,機器人當給予舵機延時(shí)2400us的高電平以及20ms低電平的脈沖信號(詳見(jiàn)圖3.5)并且將該程序循環(huán)40次,舵機會(huì )從圖1.9所示位置A移動(dòng)到圖1.10位置B,同時(shí)通過(guò)第三級機械臂、舵機自身、鼓棒形成一個(gè)三級結構,擊打鼓,使鼓發(fā)出一定的響聲;而當給予舵機延時(shí)600us的高電平以及20ms低電平的脈沖信號(詳見(jiàn)圖3.7)并且將該程序循環(huán)40次,舵機會(huì )從圖1.6所示位置回復到圖1.5所示位置,并且通過(guò)其自身的機械零點(diǎn)進(jìn)行回復。
通過(guò)單片機預先編寫(xiě)的程序或者示教的模式,機器人按照一定的規律進(jìn)行擊鼓,其擊鼓的頻率約為0.7-1.0秒/次,其中下行時(shí)間約為0.3-0.5秒,上行時(shí)間約為0.4-0.6秒,通過(guò)調節左右舵機輸出不同的脈沖信號,可以實(shí)現交替擊打(見(jiàn)圖1.7,圖1.8),交替極大能夠實(shí)現整體機器人平均擊鼓頻率在0.3-0.5秒/次,而通過(guò)雙臂僅能同時(shí)使整體機器人的擊鼓頻率在0.8-1.0秒/次左右。
而步進(jìn)電機能夠使機器人通過(guò)自身的轉動(dòng),擊打到不同位置的鼓,通過(guò)對步進(jìn)電機的輸出脈沖的個(gè)數進(jìn)行控制,根據步矩角理論則能夠使步進(jìn)電機轉動(dòng)一定的角度,經(jīng)過(guò)計算可以測出擊打左側兩個(gè)鼓與擊打右側兩個(gè)鼓需要轉動(dòng)的角度,即循環(huán)的次數,使步進(jìn)電機轉動(dòng)要求的角度,并且實(shí)現擊打的鼓的機械轉換。
圖1.6 擊鼓功能控制流程圖
圖1.7 機器人同步擊打A位置實(shí)物示意圖
圖1.8 機器人同步擊打B位置實(shí)物示意圖
圖1.9 機器人異步擊打實(shí)物示意圖A
圖1.10 機器人異步擊打實(shí)物示意圖B
【離線(xiàn)編程功能】
通過(guò)在預先在PIC單片機中離線(xiàn)編寫(xiě)好的程序,程序中進(jìn)行對舵機與步進(jìn)電機的脈沖信號輸出,其中包括有舵機的異步控制方法、同步控制方法以及步進(jìn)電機的控制;異步控制方法為單片機對兩個(gè)舵機中的一個(gè)輸出脈寬為2.4ms的高電平和20ms低電平而對另外一個(gè)電機輸出脈寬為0.6ms的高電平和20ms(詳見(jiàn)圖1,13),循環(huán)一定次數之后交換兩個(gè)電機的輸出脈沖(詳見(jiàn)圖1.14),這樣兩個(gè)舵機將會(huì )出現一個(gè)左側機械臂下行同時(shí)右側機械臂上行,然后左側機械臂上行右側機械臂下行的交替擊打;同步控制方法為PIC單片機對兩個(gè)舵機同時(shí)輸出脈寬為2.4ms的高電平和20ms的低電平(詳見(jiàn)圖1.15)循環(huán)一定次數之后同時(shí)再輸出脈寬為0.6ms的高電平和20ms的低電平,這樣兩個(gè)舵機將會(huì )出現同時(shí)擊打同時(shí)復位的情況。步進(jìn)電機使用占空比為50%的高低電平調控,能夠實(shí)現一定的步矩角的轉動(dòng)。
離線(xiàn)編程系統通過(guò)多次重復地不同地調用舵機異步控制、舵機同步控制、步進(jìn)電機控制的子程序,能夠實(shí)現機器人在步進(jìn)電機一邊轉動(dòng)一邊舵機同步擊打、步進(jìn)電機一邊轉動(dòng)一邊舵機異步擊打,步進(jìn)電機停動(dòng)同時(shí)舵機同步擊打、步進(jìn)電機停動(dòng)同時(shí)舵機異步擊打四種主要情況,通過(guò)交替、多次、重復、并排使用這些子程序和情況,能夠使機器人整體在圍繞三個(gè)鼓之間進(jìn)行多次的來(lái)回往復擊打,同時(shí)能夠進(jìn)行左右臂同時(shí)擊打(見(jiàn)圖1.7,圖1.8)和左右臂交替擊打的控制(見(jiàn)圖1.9,圖1.10)。
圖1.11 兩舵機異步控制脈沖信號示意圖A
圖1.12 兩舵機異步控制脈沖信號示意圖B
圖1.13 兩舵機同步控制脈沖信號示意圖
【示教功能】
通過(guò)在聲音傳感子控制電路,通過(guò)可變電阻調整聲音傳感器的接收范圍,可以識別現場(chǎng)的聲音,機器人通過(guò)從子控制系統反饋的聲音信息,能夠實(shí)時(shí)輸出相應的舵機同步控制脈沖信號,舵機同時(shí)擊鼓,機器人跟隨聲音進(jìn)行運動(dòng);通過(guò)觸感子控制電路,可以識別人是否對示教的模擬鼓進(jìn)行擊打,如果是則輸出相應的脈沖信號使一側舵機進(jìn)行跟隨運動(dòng)。
二、目的與意義
1. 創(chuàng )作意圖與靈感來(lái)源
【創(chuàng )作意圖】
大白菜作為一個(gè)擊鼓機器人,其主要功能并不局限與擊鼓。我們創(chuàng )作這個(gè)機器人的意圖是作為后續項目的前期制作,對后續項目中使用到的機械手進(jìn)行理論的論證,以及對其進(jìn)行部分制作,大白菜是后續項目中機械手的簡(jiǎn)化版本,我們也在大白菜上預留足夠的空間以及增加電機的空間,用于日后在項目中對其進(jìn)行改裝與增加自由度。
【靈感來(lái)源】
大白菜的靈感來(lái)源于多個(gè)方面:
(1)、基本結構:為了適應后續項目中的仿人式機械手而采用的單支雙臂式結構,第一級機械臂與第二級機械臂也采用與人相似的設計;
(2)、基本功能:由于在比賽中強調可展示性,強調能夠調動(dòng)現場(chǎng)氣氛的能力,因此簡(jiǎn)化了原有紀錄位姿的功能,單純采用單片機的控制而取消對電機轉角、轉速的測量,從而萌生使機械手進(jìn)行擊鼓動(dòng)作的設計;
(3)、附加功能:包括聲音控制與觸感控制,則源于在最近結束的上海世博會(huì )中在上海企業(yè)聯(lián)合館中的等待區節目,第一個(gè)為由觀(guān)眾現場(chǎng)的拍掌,使場(chǎng)館的LED燈根據現場(chǎng)拍掌的節奏而閃亮,第二個(gè)為由現場(chǎng)觀(guān)眾喊出相應的字母,機器人撿起對應的箱子,仿照這2個(gè)節目我們設計出通過(guò)現場(chǎng)觀(guān)眾拍掌的聲音控制機器人以及通過(guò)現場(chǎng)擊鼓的展示使機器人紀錄示教人的擊打信息并重現的附加功能。
2. 項目目的
(1)、作為一款參加機器人比賽展示類(lèi)的機器人,該機械臂能夠進(jìn)行基本的擊鼓動(dòng)作;而在附加功能上,則通過(guò)不同的傳感系統,記錄示教人員的擊鼓節奏,并在示教完成之后機器人能夠重現該擊鼓的動(dòng)作以及節奏。
(2)、作為一種單支雙臂式的機器人(機械臂),其仿人的設計用于作者對該理論的一種驗證,通過(guò)對仿人的設計,使機械手能夠模仿人的運動(dòng),而大白菜僅是作為對后期仿人機器人的設計與制作的一個(gè)前期步驟進(jìn)行相關(guān)的研究與制作。
(3)、作為一個(gè)預留了大量改進(jìn)空間的機器人,該機器人可以在多個(gè)方面進(jìn)行不同的改進(jìn),包括預留增加自由度的位置,增加電機的位置,增加編碼盤(pán)測量電機轉角轉速,縮減底座面積等多個(gè)改進(jìn)方向,通過(guò)不同方面改進(jìn)能夠為日后研究機器人(機械臂)的運動(dòng)、仿真、測量、多機器人協(xié)作等擴展功能提供了大量的現實(shí)數據、機器人實(shí)體和空間。
3.項目意義
(1)作為大賽的參賽作品,本機器人的最大功能與意義在于能夠實(shí)現最基本的擊鼓功能。并在擊鼓功能的基礎上增加附加功能,實(shí)現以離線(xiàn)編程模式與示教模式控制機器人的功能。能夠為觀(guān)眾帶來(lái)對機器人的一種新的感受,一種新的樂(lè )趣,并且讓更多觀(guān)眾參與到機器人當中。
(2)作為一種單支雙臂式的機器人(機械臂),本機器人的意義在于能夠通過(guò)舵機對其控制,實(shí)現擊鼓的功能;同時(shí),也是作為對該類(lèi)機械臂的結構的一種新思考的實(shí)踐與驗證。
(3)作為一個(gè)預留大量改進(jìn)空間的機器人,本機器人的意義在于為后續的設計與制作提供大量的現實(shí)數據與機器人實(shí)體,并且為日后的各個(gè)探究方面的選擇提供了更多的參考數據資料,能夠使日后項目組成員的后續探究設計更為完善與周詳。
4. 可行性總結
【技術(shù)可行性】
表1 探究過(guò)程中應用的技術(shù)及使用范圍
應用領(lǐng)域 | 技術(shù)名稱(chēng) | 技術(shù)功能 |
機械設計 | CAD制圖 | 交付制造機械臂主體 |
三維建模軟件 | 基本示意及大致分析 | |
一般力學(xué)分析 | 測算自由度受力 | |
機械制造 | 機械加工 | 制造機械臂主體 |
一般鉗工 | 組裝及固定整體機器人 | |
自動(dòng)控制 | 單片機控制 | 整體機器人控制 |
電機伺服控制 | 控制電機以期望速率、幅度運動(dòng) | |
電子電路 | 傳感器 | 接收環(huán)境變量信息 |
電路處理 | 放大、優(yōu)化、整理電路信息 |
上述各種技術(shù)已經(jīng)全部成熟及成型,只需要在掌握這些技術(shù)的基礎上使用它們,并不需要通過(guò)自行設計技術(shù)來(lái)實(shí)現;同時(shí)并且通過(guò)使用這些技術(shù),實(shí)現機器人的每個(gè)部分細節的處理,就能夠最終完成機器人的整體制作與調試,整個(gè)機器人的制作中使用的技術(shù)都是可行的。
【應用可行性】
本機器人作為一款基本參加大賽的作品,在參賽的應用方面由于其擁有良好的展示性與娛樂(lè )性,該方面應用是可行的;另外,由于預留了大量的改進(jìn)空間,即便是在比賽之后,需要進(jìn)行多方面的改進(jìn),在未來(lái),仍然能夠使用這個(gè)機器人現有的本體作后續的研究,該方面應用同時(shí)可行。
三、技術(shù)參數
1. 機械部分
【整體質(zhì)量與尺寸參數】
(1)、整體質(zhì)量:2.5Kg
(2)、整體尺寸:40cm X 30cm X 40cm (長(cháng)X寬X高)
【機械工作參數】
(1)、整體工作最大寬度:49cm
(2)、整體工作最大高度:53cm
(3)、整體工作最高溫度:45℃
(4)、整體工作最低溫度:-10℃
(5)、舵機工作最大轉角幅度:90°
(6)、步進(jìn)電機工作最大轉角幅度:30°
【電機參數】
表2 步進(jìn)電機的物理參數
步進(jìn)電機型號 | 57H46403(帶減速) |
步矩角 | 1.8° |
最大轉動(dòng)角 | 360° |
相數 | 2 |
相電流 | 2.4A |
靜力矩 | 7 |
定位力矩 | 2.8 |
表3 舵機的物理參數
舵機型號 | TOWER PRO MG945 (輝盛) |
靜力矩 | 1.2 |
最大轉速 | 0.25sec/60°(4.8V) |
最大轉角 | 185° |
工作電壓 | 4.8-7.2V |
【機械臂主體力矩參數】
(1)、自由度計算
將支架和臂簡(jiǎn)化為桿件,由于結構對稱(chēng)性,將兩舵機旋轉副、每個(gè)軸的旋轉副和兩三級臂各只作一個(gè),另外由于有兩個(gè)旋轉副(兩個(gè)軸所在的旋轉副)被限制,因此簡(jiǎn)化結果如圖3.1:
圖3.1 機械臂全自由度簡(jiǎn)化示意圖
活動(dòng)組件n=2高副P(pán) =0,低副P(pán) =2,自由度為:
(1)
兩個(gè)自由度分別由舵機和步進(jìn)電機控制,滿(mǎn)足機構穩定要求。
(2)、舵機靜力矩校核
取鋁合金密度為:
(2)
將三級臂上孔去掉,簡(jiǎn)化為一實(shí)體長(cháng)方體塊,則三級臂體積為:
(3)
由(2)、(3)式數據可得三級臂質(zhì)量為:
(4)
三級臂重心在其幾何中心,距離舵機旋轉軸距離為:
(5)
敲擊棒質(zhì)量取 ,其重心距舵機旋轉軸距離為:
(6)
當三級臂和敲擊棒處于圖示水平時(shí),舵機旋轉軸所需靜扭矩最大,其簡(jiǎn)化結構圖見(jiàn)圖3.2
圖3.2 第三級機械臂長(cháng)度簡(jiǎn)化示意圖
可以得第三級機械臂的靜力矩為:
(7)
(8)
(3)、整體穩定性校核
計算施加在軸2上扭矩
取該部分臂前端角鐵和螺釘、舵機總質(zhì)量m =120g,二三級連接板尺寸:
(9)
其質(zhì)量為:
kg (10)
同樣當三級臂水平時(shí),如圖3.3,所施加的靜力矩為最大
圖3.3 第二級、第三級機械臂靜力矩簡(jiǎn)化示意圖
此時(shí)重心距軸為L(cháng) =100mm,將前端角鐵和螺釘、舵機總重心距軸2距離也取L =100mm
(11)
(12)
取 =0.25
底座圓盤(pán)半徑R=66mm,厚t=8mm,質(zhì)量為:
(13)
kg (14)
假設整體受軸2上扭矩而傾斜,角度很小,則底盤(pán)邊緣一點(diǎn)與地接觸,此時(shí),校驗要使整體不倒條件 ,設所需整體部分結構(底盤(pán)至軸2間部件)質(zhì)量為m,其重心在整體中心軸上,如圖3.4所示
圖3.4 假定結構傾斜受力簡(jiǎn)化示意圖
當傾角a很小時(shí),底座重心、部分結構重心距傾角原點(diǎn)處距離均為R,列平衡條件:
(15)
k為動(dòng)載荷扭矩時(shí)相對于靜載荷比值 ,k取大越穩定,取2
(16)
由(16)式可得m>0.45kg
利用UG計算得實(shí)際m約0.70kg,這樣在底座、底座至軸部分結構重力力矩作用下,系統會(huì )有擺正趨勢,即a變小,可以保證要求,而且在中心軸作用下,整體會(huì )更穩定不倒
2. 電子電路部分
【聲音傳感器】
表4 聲音傳感器模塊主要技術(shù)參數
尺寸 | |
主要芯片 | LM393,駐極體話(huà)筒 |
工作電壓 | 4V-6V |
【步進(jìn)電機驅動(dòng)器】
表5 步進(jìn)電機驅動(dòng)器技術(shù)參數與接口
步進(jìn)電機驅動(dòng)型號 | QDQ241 |
驅動(dòng)最大電流 | 2.1A |
驅動(dòng)最大相數 | 2 |
可選細分數 | 1/2,1/4,1/10,1/15 |
工作電壓 | 0-32V |
(1)、+COM 接單片機VCC5V,如果接24V,則CP,DIR各串接一個(gè)2K電阻 | |
(2)、CP 接脈沖頻率輸入,決定快慢 | |
(3)、DIR 方向控制,0V反轉,空正轉,決定方向 | |
(4)、FREE 使能接口,接0V停轉,電機自由狀態(tài) | |
(5)、A+ A相正輸入 | |
(6)、A- A相負輸入 | |
(7)、B+ B相正輸入 | |
(8)、B- B相負輸入 | |
(9)、+DC 接外接驅動(dòng)電源,9-32V | |
(10)、 接0V |
【電源】
(1)、邏輯電源電壓:5V
(2)、步進(jìn)電機驅動(dòng)外加電壓:15V
3. 控制部分
【舵機輸入脈沖信號】
圖3.5 舵機正轉脈沖信號示意圖
圖3.6 舵機反轉脈沖信號示意圖
【步進(jìn)電機輸入脈沖信號】
圖3.7 步進(jìn)電機脈沖信號控制
四、使用說(shuō)明
1. 常用控制與使用說(shuō)明
【常見(jiàn)按鈕與連接】
圖4.1 步進(jìn)電機驅動(dòng)與電源連接方式實(shí)物示意圖
【使用注意事項】
(1)、避免使機器人在傾斜面上工作,以免從高處跌落造成損壞;
(2)、機械臂運動(dòng)時(shí)請勿用手觸摸工作部分;
(3)、出現電機在通電狀態(tài)卻不工作的情況,請立刻切斷電源,以免電機損壞;
(4)、聲控開(kāi)關(guān)和觸控開(kāi)關(guān)為易損部件,請勿暴力操作;
2. 模式使用說(shuō)明
聲控模式合適所有用戶(hù)使用,使用時(shí)將機器人擺在平臺上,平臺面積應足夠大,以確保機器人擊鼓時(shí)產(chǎn)生的震動(dòng)不會(huì )使機器人跌落平臺。檢查電路連接是否有斷線(xiàn)、短路。確保無(wú)誤后接通電源,人站在附近1m處,雙手合拍,觀(guān)察機器人是否出現敲鼓動(dòng)作,如果機器人沒(méi)有反應,則掌聲可以拍大一點(diǎn),直至觀(guān)察到機器人執行敲鼓動(dòng)作。若此時(shí)讓機器人擊鼓所需掌聲還比較小,人可以離機器人動(dòng)作遠一點(diǎn)拍掌觀(guān)察機器人是否敲鼓。這樣即可調節好人使用該機器人的掌聲大小和距離范圍。每次拍掌機器人會(huì )敲鼓一次,也可連續拍掌,但連續拍掌時(shí)速度不可過(guò)快,以留機器人反應時(shí)間。拍掌頻率掌握好后,人可以改變拍掌頻率,機器人則會(huì )以相同頻率做出擊鼓動(dòng)作。如果人根據一首歌曲節奏連續拍掌,機器人將記憶該節奏并在人拍掌后擊鼓重現該節奏,從而實(shí)現娛樂(lè )功能。使用完畢后應及時(shí)關(guān)閉電源,以免電路元件發(fā)熱影響機器人使用壽命。
【觸感模式開(kāi)啟與使用】
觸控模式可以合適所有用戶(hù)使用,使用時(shí)將機器人擺在平臺上,平臺面積應足夠大,以確保機器人擊鼓時(shí)產(chǎn)生的震動(dòng)不會(huì )使機器人跌落平臺。檢查電路連接是否有斷線(xiàn)、短路。確保無(wú)誤后接通電源,單手觸摸一下左臂上任一個(gè)觸摸開(kāi)關(guān),觀(guān)察機器人左擊鼓手是否執行擊鼓動(dòng)作。同樣方式檢查右手擊鼓功能是否正常。若左右擊鼓手均正常,則可以每次觸摸機器人任一擊鼓手上的觸摸開(kāi)關(guān),使機器人執行擊鼓動(dòng)作。也可同時(shí)雙手觸摸兩擊鼓手觸摸開(kāi)關(guān),左右擊鼓手同步執行擊鼓動(dòng)作。人可以通過(guò)調整觸摸頻率、觸摸位置來(lái)使機器人打出富有旋律和動(dòng)感的擊鼓聲。使用完畢后應及時(shí)關(guān)閉電源,以免電路元件發(fā)熱影響機器人使用壽命。
【再離線(xiàn)編程功能使用】
再離線(xiàn)編程功能主要由高級用戶(hù)使用。使用時(shí)請將電路的主要連接線(xiàn)全部移開(kāi),使PIC單片機所在的主控制電路板獨立出來(lái)使用,并同時(shí)打開(kāi)您的電腦,調試您電腦的串口線(xiàn)或者其它燒錄PIC單片機的設備處于正常工作狀態(tài)。在確保您能夠向單片機燒入程序的情況之下,您可以開(kāi)始編寫(xiě)程序,我們建議使用常見(jiàn)的KEIL軟件進(jìn)行單片機程序的編寫(xiě)和項目的建立和調試。程序由主要幾個(gè)部分組成,我們建議您盡量不要對我們附上的程序的主要結構、系統、頭文件、舵機和步進(jìn)電機的延時(shí)時(shí)間等方面進(jìn)行更改,否則會(huì )導致機器人的某些部分或者整體無(wú)法工作;請您對如各個(gè)舵機、步進(jìn)電機的子程序進(jìn)行某些次序的變化,或者對舵機的循環(huán)次數進(jìn)行修改,這樣可以根據您的喜好,調節機械臂的包括擊鼓的轉動(dòng)角度范圍、步進(jìn)電機的轉動(dòng)范圍以及舵機交替擊鼓與同步擊鼓的次序進(jìn)行調整,使機器人的表演更加具備您個(gè)人的特色。使用該功能的時(shí)候請您特別注意PIC單片機的數位與存儲范圍。完成燒錄之后將電路重新接回,開(kāi)啟離線(xiàn)編程模式之后機器人就能夠按您的設定進(jìn)行運動(dòng)。
3. 常見(jiàn)問(wèn)題與解決
【常見(jiàn)問(wèn)題及解決QA】
(1)Q:為何通電之后PIC單片機指示燈不亮,同時(shí)驅動(dòng)器指示燈微亮?
A:請您確定您已經(jīng)給兩個(gè)電路接入正確的電壓,PIC單片機接的是5V的邏輯電壓,電機驅動(dòng)器接的是15V的外加電壓,如果二者弄反了,可能會(huì )導致邏輯電路燒壞的情況。而驅動(dòng)器在低于9V的電壓條件下不能拖動(dòng)步進(jìn)電機工作,因此請保證您已經(jīng)為機器人接入正確的電源。
(2)Q:我已經(jīng)接入正確的電源,為何舵機不能工作?
A:請您確定您現在使用的模式是什么,如果您使用的是離線(xiàn)編程模式,可能是由于PIC單片機內沒(méi)有預設的程序,或者是您在本機器人再離線(xiàn)編程系統使用中給舵機輸出的脈沖信號不正確,本舵機使用的是伺服控制技術(shù),高電平延時(shí)2.4ms,低電平延時(shí)20ms為舵機正轉,高電平延時(shí)0.6ms,低電平延時(shí)20ms時(shí)為舵機反轉,一但延時(shí)時(shí)間不足,可能導致舵機不能工作;如果您使用的是聲控模式或者觸控模式,請確定您已經(jīng)正確開(kāi)啟這些模式,通過(guò)聲控系統指示燈和觸控系統指示燈可以判斷系統是否接收到您所擊打的信號。
(3) Q:我已經(jīng)接入正確的電源,為何步進(jìn)電機不能工作?
A:請您確定你給步進(jìn)電機輸出的脈沖是正確的,如果您使用再離線(xiàn)編程系統給步進(jìn)電機輸出的脈沖信號不正確,脈沖頻率過(guò)低會(huì )使步進(jìn)電機轉動(dòng)不明顯或者不轉動(dòng),脈沖頻率過(guò)高會(huì )使步進(jìn)電機發(fā)生跳動(dòng)并產(chǎn)生刺耳的高頻聲音。本步進(jìn)電機的工作頻率幅度比較大,為了保證足夠的觀(guān)賞性和安全性能,建議您使用高低電平交替的方波信號,兩者延時(shí)時(shí)間均為1.2±0.5ms
(4)Q:為何我的舵機揮動(dòng)手臂但打不到鼓?
A:如果您使用了再離線(xiàn)編程模式,請您確定您對舵機輸出的脈沖的循環(huán)次數,如果輸出的脈沖循環(huán)次數過(guò)低,會(huì )導致舵機的轉動(dòng)角度大幅減少,這樣機器人就無(wú)法擊鼓了。
(5)Q:我明明已經(jīng)給機器人聲音信號,為何機器人仍然沒(méi)有反應?
A:請您首先確定您使用的聲控模式,如果不是,請將其調至聲控模式再給予聲控信號;若您確定已使用聲控模式,請您首先觀(guān)察聲控模式的指示燈在您擊打鼓的時(shí)候有亮,如果沒(méi)有亮的話(huà)則可能是您給予的聲音信號不夠強,此時(shí)可以通過(guò)調節聲音傳感器一側的可變電阻以調節其靈敏度;如果燈在您擊打的時(shí)候有亮,但電機仍然不轉動(dòng),則表示PIC單片機在接收到信號的條件下無(wú)法帶動(dòng)電機,此時(shí)請檢查您是否曾使用過(guò)再離線(xiàn)編程功能,是否對舵機的驅動(dòng)子程序進(jìn)行過(guò)修改,如是則請按后面提供的源程序列表恢復;如果您不曾使用過(guò)在離線(xiàn)編程功能,則可能是由于電路方面連接出現問(wèn)題導致。
五、探究過(guò)程
1. 設計思路
大白菜的靈感來(lái)源與我們對機械臂方面研究的興趣,整個(gè)探究過(guò)程的設計采取以一個(gè)中心點(diǎn)出發(fā)進(jìn)行擴展的設計思路,其思路表達如下:
圖5.1 設計思路流程圖
2. 探究過(guò)程簡(jiǎn)述
首周作為確定題目和參賽的一周,主要工作在于對確定參賽的類(lèi)型,項目組成員進(jìn)行相關(guān)的構思與設計,盡管已經(jīng)擁有一個(gè)確定的方向,但是仍然需要確定設計的整體思路與方案,以及進(jìn)行接下來(lái)工作的一些物資與資料準備。
次周作為機器人制作的開(kāi)始,主要工作在于機械設計方面,尤其是以機械臂的主體結構進(jìn)行CAD及UG等軟件方面的設計為重,同時(shí)對機器人進(jìn)行相應的受力分析以及對應的細節處理,并將初稿提交給指導老師進(jìn)行審定與修改;電路方面進(jìn)行初期的購買(mǎi)物資,確定元器件類(lèi)型與數量,對開(kāi)發(fā)板與最小系統板進(jìn)行對應的初步調試。
機械機構部分 | 電路與控制部分 |
CAD與UG軟件制圖 受力分析 細節處理 指導老師修改機械設計方案 | 確定元器件類(lèi)型與數量 購買(mǎi)物資 調試PIC單片機開(kāi)發(fā)板 |
第三周工作進(jìn)入全面開(kāi)展的狀態(tài),由于機械設計方面出現不少的問(wèn)題,需要多次修改機械設計部分,如軸、各級機械臂、連接件等方面都出現了如孔徑不均、鈑金件尺寸不規范、軸沒(méi)有分級等多種問(wèn)題,需要多次與指導老師溝通并作出修改;另外,購買(mǎi)軸承、螺釘等緊固件與連接件,確定需要機械零件的參數與一般選定條件;電路與控制方面則開(kāi)始進(jìn)行相關(guān)子控制電路的制作,聲音控制系統與觸感控制系統的設計以及一般算法的編寫(xiě)與設計。
機械機構部分 | 電路與控制部分 |
機械設計修改 購買(mǎi)緊固件、軸承等 確定零件參數規格 | 子控制電路設計與制作 一般算法設計與編寫(xiě) |
第四周工作比較繁重,主要集中在機械設計方面繼續定稿與制作,并提交到加工方進(jìn)行受理與制作,而同時(shí)根據之前測得的機械臂的主體結構受力數據等方面進(jìn)行電機參數的選擇,購買(mǎi)舵機與步進(jìn)電機;電路與控制方面開(kāi)始對新購買(mǎi)的舵機、步進(jìn)電機、步進(jìn)電機驅動(dòng)器進(jìn)行相應的調試,由于供貨商方面提供的資料并不完整,因此在電機的調試上出現很多的問(wèn)題,如占空比的掌握、步進(jìn)電機脈沖的頻率調整等未能使電機轉動(dòng)。
機械機構部分 | 電路與控制部分 |
機械設計定稿 交付加工 確定電機參數并購買(mǎi)電機 | 對電機進(jìn)行運動(dòng)測試 |
第五周由于等待機械加工的原因,在機械方面并沒(méi)有太多的工作,只是一些購買(mǎi)簡(jiǎn)單組裝工具的工作;而工作重心則主要都集中在整個(gè)團隊對于新的電機的調試方面,分別向《機器人設計與制作》任課老師、電工電子實(shí)驗中心老師、機電學(xué)院研究生等多方面進(jìn)行相應的請教,終于使舵機能夠轉動(dòng),而步進(jìn)電機則出現發(fā)出尖叫聲的問(wèn)題。
機械機構部分 | 電路與控制部分 |
購買(mǎi)組裝工具 | 對電機進(jìn)行運動(dòng)測試 |
第六周機械加工完成,機械機構方面進(jìn)行相應的組裝工作,主要集中在對機械臂主體的組裝、電機的裝入與固定、底座的制作等配套工作;而控制方面則對已經(jīng)調整好的舵機進(jìn)行相應的控制測試,同時(shí)再對步進(jìn)電機進(jìn)行調試,終于在使用高頻信號發(fā)生器之下使步進(jìn)電機轉動(dòng),并且基本掌握步進(jìn)電機的工作頻率與工作電壓,以及步進(jìn)電機驅動(dòng)的控制技巧。
機械機構部分 | 電路與控制部分 |
機械零件組裝 配套系統制作 | 舵機進(jìn)行控制測試 步進(jìn)電機運動(dòng)測試 |
第七周需要加快工作進(jìn)度,機械方面已經(jīng)成型,結構已經(jīng)得到確定,并且各個(gè)自由度運動(dòng)在工作條件下運動(dòng)正常;而工作都集中在電路與控制方面,主要是整體程序的編寫(xiě)與各個(gè)子電路的測試,以及各個(gè)示教系統對電機的控制調試。
機械機構部分 | 電路與控制部分 |
自由度微調 | 整體與子程序編寫(xiě) 各個(gè)子系統對電機調試 |
第八周主要工作在于整機調試以及編寫(xiě)項目報告;整機調試工作主要集中在對機械臂的主體結構進(jìn)行PIC單片機控制,模擬現場(chǎng)情況進(jìn)行各個(gè)子控制系統的調試,模擬各種可能出現的問(wèn)題進(jìn)行相關(guān)的準備與設計。
整體工作 |
整體機械臂調試 編寫(xiě)總結報告 模擬及設想問(wèn)題及準備解決方案 |
3. 探究過(guò)程出現的問(wèn)題與采取的解決方法
3.1
【問(wèn)題】機械設計不規范,如軸、各級機械臂、連接件等方面都出現了如孔徑不均、鈑金件尺寸不規范、軸沒(méi)有分級等多種問(wèn)題。
【解決方法】通過(guò)與指導教師的溝通與多次交流,并將機械設計圖交給老師審閱與修改,由指導教師提供改進(jìn)的意見(jiàn),我們通過(guò)4次的大型修改,最終確定了現在的機械結構:使用角鐵連接機械臂、多級軸結構、法蘭與軸承分邊固定等機械結構,并在11月中下旬終于將機械設計圖最終定稿并交付加工方進(jìn)行相應的機械加工與制造。
3.2
【問(wèn)題】整個(gè)機械臂主體加工精度過(guò)低,導致機械臂多個(gè)地方的連接出現問(wèn)題,軸與軸承的配合過(guò)盈太多,主體結構的通孔間隙過(guò)大,平行機械臂結構的通孔沒(méi)有對準等多種機械加工精度問(wèn)題。
【解決方法】由于本機器人是交付到外面的加工方進(jìn)行相應的機械加工和機械制造,而為了節省成本,選擇了精度比較低的手控機床來(lái)進(jìn)行加工,因此機械加工的精度存在相當的問(wèn)題。為了解決上述的問(wèn)題,我們在設計的時(shí)候已經(jīng)相應增加了一定的過(guò)盈量以防加工失誤導致間隙過(guò)大等無(wú)法彌補的問(wèn)題;同時(shí),我們在獲得零件的時(shí)候已經(jīng)進(jìn)行相關(guān)的檢查,保證了一定的精度,但是仍然存在過(guò)盈或者間隙過(guò)大等一系列的問(wèn)題,最終解決方法是采用我們自己進(jìn)行后期再加工,如對軸、機械臂結構等進(jìn)行打磨,同時(shí)對過(guò)盈量過(guò)大的工件進(jìn)行銼刀慢銼以減低過(guò)盈量等,最終順利將所以工件組裝起來(lái)并完成機械臂的整體結構。
3.3
【問(wèn)題】由于沒(méi)有完整的技術(shù)資料,舵機在給予一定脈沖的時(shí)候不轉動(dòng),或者出現跳動(dòng)等現象。
【解決方法】出于沒(méi)有相關(guān)技術(shù)資料的原因,我們首先是在網(wǎng)上尋找MG945這款舵機的相關(guān)控制資料,但是沒(méi)有完整的占空比的信息,因此我們又找到了電工電子實(shí)驗中心的同學(xué)、《機器人設計與制作》的任課老師咨詢(xún),最終綜合網(wǎng)上的論壇資料與老師提供的信息,最后利用單片機進(jìn)行脈寬調節,最終確定了低電平延時(shí)20ms,高電平在1.5±1ms的伺服信號,并且增加循環(huán)等程序的控制下使電機能夠按照一定的周期擺動(dòng),并且在裝上機械臂后能夠使機械臂按照一定的角度進(jìn)行上下的擺動(dòng)。
3.4
【問(wèn)題】由于沒(méi)有完整的技術(shù)資料,步進(jìn)電機在使用單片機控制下不轉動(dòng)、或者跳動(dòng)并發(fā)出尖銳聲音
【解決方法】同樣由于技術(shù)資料不完整以及供貨方方面提供的信息有誤,步進(jìn)電機不能正常轉動(dòng),其主要現象是前者在步進(jìn)電機驅動(dòng)上電的情況之下步進(jìn)電機對信號完全沒(méi)有反應;后則則是在給予的脈沖有反映,但發(fā)出聲音。我們在面對著(zhù)兩種情況的時(shí)候分別尋找了機電學(xué)院的研究生與電工電子技術(shù)的老師進(jìn)行相關(guān)的咨詢(xún)和調試,最后根據相關(guān)的資料,得出了步進(jìn)電機的控制方法是通過(guò)一個(gè)高低電平的變化使步進(jìn)電機發(fā)生一個(gè)步矩角的轉動(dòng)的相關(guān)信息,可以確定是由于我們在連接的時(shí)候,給予步進(jìn)電機的脈沖頻率過(guò)高,達到了10000Hz,遠超過(guò)步進(jìn)電機的反應速度,因此后來(lái)將頻率調至350-700Hz左右的時(shí)候,步進(jìn)電機就能夠正常工作。
3.5
【問(wèn)題】步進(jìn)電機運動(dòng)與其步矩角參數等理論值不對應,如給定50個(gè)高低變化的脈沖,但是步進(jìn)電機轉動(dòng)的角度大于90度。
【解決方法】我們最終選擇忽略這個(gè)問(wèn)題,盡管無(wú)法量化地控制電機,但是通過(guò)多次的調試,最終能夠將電機的轉角調到一個(gè)合適的范圍;另外,根據供貨方提供的信息,本問(wèn)題的成因很可能是由于步進(jìn)電機的驅動(dòng)器有個(gè)細分數可選,而這個(gè)細分數可以將步矩角細分到一定的范圍,因此可能導致給定的高低電平變化使步進(jìn)電機的輸出角度變小,從而是角度與其原來(lái)的理論值不相符。
3.6
【問(wèn)題】步進(jìn)電機與其電機驅動(dòng)需要較高電壓電源,而且電機需要一個(gè)獨立電源,單片機需要一個(gè)獨立邏輯電源。
【解決方法】按照原來(lái)的計劃,我們是打算利用7805芯片進(jìn)行相應的電壓調整,使整個(gè)機器人只需要一個(gè)電源系統,但是后來(lái)根據指導老師的建議,認為邏輯電源與外接電源不宜一致,因此,應該使用兩個(gè)獨立電源;同時(shí),由于步進(jìn)電機的轉動(dòng)最低要求9V的電壓,而最好是有15V的電壓,因此在參加比賽的時(shí)候,則需要使用到外加的學(xué)生電源進(jìn)行相關(guān)的驅動(dòng)。
3.7
【問(wèn)題】?jì)蓚€(gè)舵機使用程序無(wú)法進(jìn)行調平
【解決方法】出現這個(gè)問(wèn)題的根本原因是由于選用的舵機有個(gè)機械零點(diǎn),它具有上電自動(dòng)復位的功能,因此在使用的時(shí)候就會(huì )由于每次單片機上電是舵機復位而導致無(wú)法進(jìn)行調平,無(wú)論我們的程序怎樣編寫(xiě)都沒(méi)有辦法使其合適擊鼓的需要。為了解決這個(gè)問(wèn)題,我們只能采用機械調平的方法處理,通過(guò)調整機械臂與舵機的不同角度的連接,從而改變其初始的角度,以及將兩個(gè)機械臂調成平行的,使其合適擊鼓的狀態(tài)。
3.8
【問(wèn)題】擊鼓的時(shí)候擊打的聲音并不明顯
【解決方法】這個(gè)問(wèn)題的主要成因是由于舵機屬于高扭矩的舵機,而其代價(jià)則是其轉速比較慢,僅為0.25sec/60°,同時(shí)在電機的伺服控制當中為了保證其有足夠的轉角,其速度也不能調得過(guò)快,否則會(huì )導致第三級機械臂與舵機之間的連接出現較大的問(wèn)題。為了解決這個(gè)問(wèn)題,我們只能夠在轉速、轉角、擊打力度之間取得一個(gè)平衡,我們也多次改變舵機的伺服控制程序,包括對高低電平的脈寬進(jìn)行相關(guān)調節,以及對循環(huán)的次數進(jìn)行調節,只能得出現在的這個(gè)情況,即便是在以后進(jìn)行改進(jìn)的時(shí)候,也只能在硬件方面,如增加鼓棒重量,改變鼓的結構或者使用架子鼓的發(fā)聲比較強的鼓進(jìn)行展示。
3.9
【問(wèn)題】聲音傳感器過(guò)靈敏,以致超過(guò)了舵機的反應速度
【解決方法】這個(gè)問(wèn)題的主要成因是由于聲音傳感器本身的精度問(wèn)題引起的,因此解決的方法有多種,一個(gè)是調節聲音傳感器本身,而另外一種則是在聲音傳感器與單片機的相連的電路系統中增加可變電阻系統,我們選擇了后者;在電路中增加可調的可變電阻,然后通過(guò)現場(chǎng)對可變電阻的調節,能夠滿(mǎn)足對聲音傳感器在其工作范圍內的聲音探測能力的調制,進(jìn)而能夠是機器人擁有更為廣泛的適應性與適用性。
3.10
【問(wèn)題】部分電路不穩定,使在聲控模式下舵機運動(dòng)并不規律,如在一次聲音信號輸入之下,舵機重復運動(dòng)。
【解決方法】這個(gè)問(wèn)題的主要成因比較復雜,可能是由于電路的原因造成的,也可能是由于程序的編寫(xiě)失誤或者是調用失誤導致的,因此至今我們也沒(méi)能明確這個(gè)問(wèn)題的主要成因是什么。但是我們采用了多種手段,包括調整程序的結構、重新編寫(xiě)子程序與調用的結構、重新設計電路與重新布局排版、增加施密特觸發(fā)器進(jìn)行整波等手段,最終使聲控電路能夠正常工作。
六、評價(jià)與改進(jìn)方案
1. 自我總結與評價(jià)
【自我總結】
經(jīng)過(guò)2個(gè)月的設計與制作,終于將機器人完整地完成 ,可以說(shuō)著(zhù)2個(gè)月過(guò)得痛并快樂(lè )著(zhù)。畢竟這個(gè)機器人是整個(gè)項目組成員已經(jīng)經(jīng)過(guò)了近半年的理論論證最終得到的實(shí)體,雖然其功能與原來(lái)的設想并不完全一致,但是至少給了我們一個(gè)參加比賽的機會(huì ),同時(shí)給了一個(gè)制作一臺真正機器人實(shí)體的機會(huì ),因此我們要感謝這次大賽,也感謝每一個(gè)支持與幫助過(guò)我們的老師、同學(xué)。
機器人的設計與制作總是伴隨著(zhù)那幾個(gè)不可缺少的基本點(diǎn),之所以我們參加比賽一來(lái)是為了更加貼近現實(shí)的機器人學(xué),二來(lái)是為了對項目的后續發(fā)展帶來(lái)更大的幫助。因此我們選擇了制造一直機械臂,雖然參加比賽的功能目前還只是擊鼓,但是相信在更長(cháng)遠的未來(lái),它會(huì )走得更遠。
正如之前所說(shuō)的,我們已經(jīng)經(jīng)過(guò)將近半年的理論驗證,從很多地方已經(jīng)省下了不少時(shí)間,包括我們已經(jīng)收集了足夠多的資料,也已經(jīng)對機械臂的實(shí)體進(jìn)行過(guò)相關(guān)的簡(jiǎn)易建模研究,因此在參加本次比賽的時(shí)候能夠得心應手。而在這次比賽當中,我們的確學(xué)到了更多,雖然在之前理論驗證階段已經(jīng)有了一定的數據與相關(guān)資料,但是仍然缺乏實(shí)際操作的空間。而在這次制作大白菜的過(guò)程中,首先學(xué)到的是機械設計方面的知識,在設計機械臂的時(shí)候無(wú)可避免地要與機械設計打交道,盡管之前有過(guò)相關(guān)的經(jīng)驗,但是仍然不足以應對十幾樣零件的設計,因此我們在很多地方也做得不足,也在很多細節上存在很多漏洞;然后學(xué)到的就是加工方面的一些知識,雖然我們不是親自去加工這些零件,但是怎樣才能更加快更加省錢(qián)的完成這些零件的制造,是我們需要考慮的問(wèn)題,因此我們省略了很多不必要的設計,也減去了一些在本次比賽不需要的自由度和相關(guān)零件;還有學(xué)到了電機的控制方面的知識,包括舵機、步進(jìn)電機、直流電機的控制方法,是如何進(jìn)行PWM脈沖調節,或者是如果控制步進(jìn)電機的這些知識有了初步的了解;最后就是電路與程序方面的調試,盡管電路并不復雜,但是整體由于機構比較大、功能復雜,因此各個(gè)組合的配合需要花很多心思去完成。
總結這次參加比賽,我們得到了一個(gè)能夠擊鼓的機器人,收獲了包括機械、電子、控制方面的知識,也認識到自己很多地方的不足與改進(jìn)之處。
【自我評價(jià)】
盡管每個(gè)人的參與程度與參與范圍不同,但是整個(gè)項目組都處于一種合一的狀態(tài)。同時(shí),每個(gè)人根據自己的能力所在進(jìn)行相應方面的研究,由于我們設計與制作的不是一架普通的小車(chē),而是一個(gè)機械臂,我們也需要在受力分析、三維建模、CAD制圖、機械加工與制造方面投入更多的時(shí)間,因此項目組成員主要都是偏機械方向,而在電路設計、程序控制、電機調測等方面也有相應的投入。由于工作組的不懈努力,無(wú)論是前期的準備,中期的制作與裝配,還是后期的調試都進(jìn)行得有條不紊,成員各司所職,將自己本分做好,也去幫助遇到困難的同伴,大家將自己所知道的,所掌握的知識投入到本次比賽中,再從中收獲更多的知識。
2. 自我改進(jìn)方案
【改進(jìn)方案】
由于參加本次比賽是已經(jīng)經(jīng)過(guò)相當多理論的驗證,因此在比賽之后,我們可以根據原來(lái)設定的方案繼續進(jìn)行機器人方面的探究。
根據原來(lái)的計劃,機械臂部分擁有大概9個(gè)自由度,其中第三級機械臂處會(huì )增加4個(gè)自由度,同時(shí)會(huì )為所有自由度配上舵機或者步進(jìn)電機,同時(shí)也會(huì )在軸部分增加編碼盤(pán)或者其它能夠測量電機轉動(dòng)角速度的器件,而在控制方面則著(zhù)重與對機械臂轉速與轉動(dòng)角度的量化測量,并且紀錄機械臂的對應時(shí)刻的位姿與速度,能夠完成測量臂的功能,并且能夠同時(shí)利用控制系統將其原來(lái)的示教過(guò)程中機械臂的位姿與速度重現,達到一種能夠記憶機械臂示教運動(dòng)并重現的最終功能。
擁有這種功能的機器人的應用方面廣泛,而針對特定的情況以及我們的制作水平與機器人的規模大小,最終預計會(huì )確定用于醫療方面,例如針對中風(fēng)病人進(jìn)行按摩,在醫護人員進(jìn)行相關(guān)的示教之后,機器人能夠自動(dòng)重現示教的動(dòng)作,對病人自動(dòng)進(jìn)行按摩。
附件:
1. 機械設計零件圖及裝配圖
1.1 機械零件CAD圖
【軸1】 1件
【軸2】 1件
【軸3】 1件
【底盤(pán)】 1件
【支架】 2件
【第一級機械臂】 2件
【第二級機械臂】 2件
【第三級機械臂】 2件
【二級臂連接件】 1件
【二三級連接件】 1件
【舵機固定件】 2件
【連接件1】 2件
【連接件2】 2件
1.2 機械零件UG圖
【軸1】 1件
【軸2】 1件
【軸3】 1件
【底盤(pán)】 1件
【支架】 2件
【第一級機械臂】 2件
【第二級機械臂】 2件
【第三級機械臂】 2件
【二級臂連接件】 1件
【二三級連接件】 1件
【舵機固定件】 2件
【連接件1】 2件
【連接件2】 2件
【軸承】5件
1.3 機械設計裝配總圖
【裝配圖-主視】
【裝配圖-俯視】
【裝配圖-任意角度1】
【裝配圖-任意角度2】
【裝配圖-任意角度3】
2. 電路原理圖
【聲控電路原理圖】
【觸控電路原理圖】
3. 全程序
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
/***********************************/
void delay_nus(unsigned int i) //延時(shí):i>=12 ,i的最小延時(shí)單12 us
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延時(shí)n ms
{
n=n+1;
while(--n)
delay_nus(900); //延時(shí) 1ms,同時(shí)進(jìn)行補償
}
/**********************************/
void init(void) //聲控程序,中斷初始化
{
EA=1;
EX0=1;
IT0=0;
}
void int0 () interrupt 0
{
P2_0=0;
delay_nms(200);
P2_0=1;
}
/***********************************/
void main(void) //主程序
{
int a,b,c;
P3_0=0;
while(1)
{
a=P3_4; //KEY4
if(a==0)
{
delay_nms(10);
if(a==0)
{
P2_3=0; //輸給自由表演的部分來(lái)檢測
while(1)
{
P1_5=0;
delay_nms(2000);
P2_3=1;
}
}
}
a=P3_5; //KEY5
if(a==0)
{
delay_nms(10);
if(a==0)
{
while(1)
{
b=P1_0;
c=P1_1;
if((b==0)(c==0))
{
P2_0=0;
delay_nms(200);
}
if((b==0)(c!=0))
{
P2_1=0;
delay_nms(200);
}
if((b!=0)(c==0))
{
P2_2=0;
delay_nms(200);
}
P1_6=0;
}
}
}
a=P3_6; //KEY6
if(a==0)
{
delay_nms(10);
if(a==0)
{
while(1)
{
init();
P1_7=0;
}}}
}}
#define uchar unsigned char
#define uint unsigned int
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P2_0=P2^0;
sbit P2_2=P2^2;
sbit P2_4=P2^4;
sbit P2_6=P2^6;
/***************************************/
void delay_nus(unsigned int i) //延時(shí):i>=12 ,i最小延時(shí)12us
{
i=i/10;
while(--i);
}
void delay_nms(unsigned int n) //延時(shí)n ms
{
n=n+1;
while(--n)
delay_nus(900); //延時(shí) 1ms,同時(shí)進(jìn)行補償
}
void SMotorL(void) //步進(jìn)電機左轉
{
int i;
P1_4=1;
P1_3=1;
for(i=0;i1550;i++)
{
P1_2=1;
delay_nus(800);
P1_2=0;
delay_nus(800);
}
delay_nus(5000);
}
void SMotorR(void) //步進(jìn)電機右轉
{
int i;
P1_4=1;
P1_3=0;
for(i=0;i1550;i++)
{
P1_2=1;
delay_nus(800);
P1_2=0;
delay_nus(800);
}
delay_nus(5000);
}
void DMotor_Dou(int n) //舵機雙手一起動(dòng),n表示次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_0=1;
P1_1=1;
delay_nus(1000);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Dou1(int n) //舵機雙手一起動(dòng),n表示次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i30;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i30;i++)
{
P1_0=1;
P1_1=1;
delay_nus(600);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Dou2(int n) //舵機雙手一起動(dòng),n表示次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i25;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i25;i++)
{
P1_0=1;
P1_1=1;
delay_nus(800);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Sig(int n) //左右手交替,n代表次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i15;i++)
{
P1_1=1;
delay_nus(2400);
P1_1=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_1=1;
delay_nus(1000);
P1_1=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_0=1;
delay_nus(2400);
P1_0=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_0=1;
delay_nus(1000);
P1_0=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotorL(int n) //舵機左手,n代表次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_0=1;
delay_nus(2400);
P1_0=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_0=1;
delay_nus(900);
P1_0=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotorR(int n) //舵機右手,n代表次數
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_1=1;
delay_nus(2400);
P1_1=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_1=1;
delay_nus(900);
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void main(void)
{
int a,b;
while(1)
{
a=P1_0;
if(a==0)
{
DMotor_Dou(1);
delay_nms(10);}
a=P1_1;
if(a==0)
{
DMotorL(1);
delay_nms(10);
}
a=P1_2;
if(a==0)
{
DMotorR(1);
delay_nms(10);}
a=P1_3;
if(a==0)
{
DMotor_Dou1(1);
DMotor_Dou2(1);
DMotor_Dou(3);
delay_nms(200);
DMotor_Dou(2);
SMotorR();
DMotor_Dou(2);
SMotorL();
DMotor_Dou(2);
SMotorR();
DMotor_Dou(2);
SMotorL();
DMotor_Dou(1);
delay_nms(30);
DMotor_Sig(2);
SMotorR();
DMotor_Sig(2);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotor_Sig(1);
DMotorL(1);
DMotorR(1);
DMotor_Dou(2);
delay_nms(100);
DMotorR(2);
DMotorL(2);
SMotorL();
DMotor_Sig(1);
DMotor_Sig(1);
delay_nms(100);
DMotorL(2);
SMotorR();
DMotorR(1);
DMotorL(2);
SMotorL();
DMotorR(1);
DMotorL(2);
SMotorR();
DMotorR(1);
DMotorL(2);
SMotorL();
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotor_Sig(1);
DMotorL(2);
DMotor_Sig(1);
DMotorL(2);
DMotorR(2);
delay_nms(400);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
SMotorR();
DMotorL(1);
DMotorR(1);
SMotorL();
DMotorL(1);
DMotorR(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
delay_nms(100);
DMotorL(1); SMotorL();
DMotorR(1); SMotorR();
DMotorL(1); SMotorL();
DMotorR(1); SMotorR();
delay_nms(200);
DMotor_Dou(2);
DMotor_Dou1(1);
DMotor_Dou2(1);}
}
}
評論