新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 簡單程序打造“山寨”版機器手

簡單程序打造“山寨”版機器手

作者: 時間:2011-02-21 來源:網(wǎng)絡(luò) 收藏

如今,進入網(wǎng)絡(luò)世界,君便可見滿 山遍野都是"山寨",在這個 "山寨文化"蓬勃興起的年代,很多 人都對這個新生事物充滿著好奇心, 躍躍欲試。本人亦不例外,也想來 "山寨"一下。要"山寨"一件什么 東西好呢?想了N久,想不出來,恰 好,本人正學了和C語言不久, 就用C語言編個"山寨"程序吧;剛 好自己又是個機器人迷,就拿定主意 給編個簡單的程序,做個"山 寨"版的機器手吧。

機器手的硬件平臺與電路原理

做 " 山寨 " 版的機器手 , 只在 紙上談兵或者在仿真軟件里仿真是不 行的,必須讓它"活"起來。首先, 需要構(gòu)筑一個硬件平臺,用什么芯 片好呢?51?PIC?AVR?ARM?呵 呵,也許有人已經(jīng)猜到了,對!就是 用51芯片,對于一個初學者來說, 51芯片最合適不過了。具體型號就 用AT89C2051,這個芯片對于許多高 手、大俠來說,簡直是小菜一碟,里 邊的資源已經(jīng)是"隔夜的"了,對于 像我這樣的菜鳥,就找本基礎(chǔ)的書慢 慢"刨"吧。"刨"完書,你就會發(fā) 現(xiàn)很多硬件設(shè)計都脫離不了如 圖 1所示的最小系統(tǒng)。 本"機器手"也不例外,只是在 外圍添加了少許元件而已,如圖2所 示。圖中的P1和P3口除了P1.0、 P1.1和P3.0外,內(nèi)部均有上拉電阻, P1口全部用作獨立式按鍵接口,由于 P1.0和P1.1比較特殊,是AT89C2051 內(nèi) 置 模 擬 比 較 器 的 同 相 輸 入 端 (AIN0)和反相輸入端(AIN1),內(nèi) 部沒有上拉電阻,故需在外部接入上 拉電阻,阻值選用常用的10kΩ就可以 了。P3口的P3.6沒有引出,而是作為 比較器的輸出,故不能像普通的I/O口 那樣訪問引腳 ;P3.2~P3.5、P3.7則 接伺服電機。

接著 , 還是來介紹一下我們機 器手的另一個重要元件吧,這就是伺 服電機,它在航模界中被廣泛使用, 亦稱為"舵機",是一種PWM控制 部件。當它收到一串指定角度的"指 令"時,其輸出軸就會轉(zhuǎn)動到指定的 角度上。伺服電機跟其他電機不太一 樣,輸入線不像直流電機那樣只有2 根,也不像步進電機(兩相式)那樣 有 6根,它有自己的特色,只有3根, 引線末端使用杜邦頭,如圖3所示。 圖 3中的杜邦頭引線由上至下, 紅色的是控制線(脈沖輸入線),接 到主控芯片上;中間的是電源線正極,第三條是地線(即電源負極), 供電電壓一般是4 ~6V。伺服電機是 一個PWM控制部件,在其控制線上 輸入一個周期性的脈沖信號,這個周 期性脈沖信號的高電平時間通常在 0.5 ~2.0ms之間,而周期在5 ~20ms 之間,要求并不十分嚴格,如圖4所 示,圖中表格給出了一個典型的20ms 周期性脈沖的脈沖寬度與伺服電機輸 出軸旋轉(zhuǎn)角度之間的對應(yīng)關(guān)系。

根據(jù)表格中的數(shù)據(jù)可總結(jié)出一條 輸出軸角度D和脈沖寬度T的轉(zhuǎn)換關(guān)系 式: D=90T-135(T?[0.5,2.5]) 有了這個公式,我們就可以很方 便地將轉(zhuǎn)角角度與脈寬互相轉(zhuǎn)換,計 算出初始化等所需要的脈沖寬度。

程序的編寫

作為一個初學者,對于單片機內(nèi) 部的資源往往理解不深,故程序?qū)懙?不好,還請各位高手們手下留情,多 多包涵。機器手程序的總流程圖如圖5 所示。程序初始化后,就執(zhí)行輸出脈 寬,接著進行按鍵掃描,完畢后又返 回輸出脈寬,循環(huán)不止。

圖 6是輸出脈寬到每個伺服電機 程序的詳細流程圖,W1、W2、W3、 W4、W5是5個脈沖寬度,按順序分時 地從P3.2~P3.5、P3.7引腳向5個伺服 電機輸出。例如要在P3.2輸出一個寬度 為W1(ms)的脈沖,如程序1所示。 程序中Delay_ms(W1)是一個以 延時1ms為單位的函數(shù),需要延時多 少毫秒只需在括號內(nèi)填入對應(yīng)的數(shù)字 即可(該函數(shù)的程序很簡單,不再列 出)。

圖 7是按鍵掃描子程序流程圖。 為了說明原理和排版簡潔,圖中S1和 S2掃描判斷原理采用詳細流程,而對 S3~S8則使用簡化框圖。進入此流 程,首先以一個判斷語句判斷S1是否 按下,若未按下則繼續(xù)往下掃描;若 按下了,則W1加1,并以2500為上限 值;如W1未超過該上限值,則繼續(xù)往 下掃描;S2的掃描原理與S1相似,稍 有不同之處是判斷W1的下限值,下限 為500。其他按鍵掃描的原理則分別與 S1和S2類同。

程序2所示是掃描S1和S2的程序代碼。

讀完代碼,大家是否覺得按鍵掃 描部分是不是少了點什么東西?呵呵, 對了,就是沒有延時去抖。剛開始自己 也覺得奇怪,沒有消抖程序怎么能正確 識別出按鍵呢?后來,請教了其他高手 之后才知道,由于程序簡短,整體循環(huán) 周期短,按鍵按下后,若第一次沒掃 到,后一周期還可以掃到;即使受到抖 動干擾,由于Wn的數(shù)據(jù)變化量很小, 對伺服電機轉(zhuǎn)角的改變影響并不大,故 消抖程序可以省去。 此時或許有人提出 : 是否可以 插入掃描按鍵釋放的代碼?關(guān)于這個 問題,本人也曾作過嘗試,發(fā)現(xiàn)在代 碼中插入釋放判別后,當按鍵的按放 次數(shù)很少時,伺服電機是看不出有轉(zhuǎn) 動跡象的,只在按放次數(shù)達幾十次時 才有比較明顯的效果,這樣操作者會 感覺很累,原因是伺服電機轉(zhuǎn)角參數(shù) Wn的范圍是在500 ~2500之間。鑒于 此,我就試著將Wn的增幅加大一點, 于是伺服電機達到了比較明顯的旋轉(zhuǎn) 效果,但旋轉(zhuǎn)精度卻會大打折扣,故 程序中未插入掃描按鍵釋放的代碼。 程序通過仿真后,就可以動手制 作硬件電路了。

PCB電路板的設(shè)計與制作

圖 8所示是在DXP2004 SP2 下設(shè) 計的PCB,圖中,已將按鍵從主板中獨 立出來,兩塊板使用10針排線互聯(lián), 這樣就可以很方便地操作機械手。圖9 (a)和圖9(b)是PCB3D仿真的正反 兩面圖。

由于電路很簡單,我們可以直接 用"洞洞板"焊接,按圖紙施工,不 需半小時便可完成,注意把按鍵接線 引出,接到控制手柄上。本人找了只 廢舊的PS2游戲手柄改裝代用,只需用 到其中的8個按鈕,其余的可以去掉。 這樣既看起來美觀又用起來方便,如 圖10所示。

完成后,用萬用表檢查無誤,把 程序"灌"入芯片即可。至此,"山寨 版"機器手的軟硬件部分都完成了,接 著就可以著手加工機械零件了。

機械部分的制作與調(diào)整

機械部分零件大部分采用2mm厚 的黑色廣告用塑料板制作,為了提高板 材的機械強度,采取了雙板粘合的辦法 (粘合劑為氯仿),經(jīng)粘合后的板材, 強度大大增強,估計可達單層的4~6 倍,為整機安全工作提供了足夠的保 證。為了減少零部件并減輕機器上部重 量,直接使用螺栓將伺服電機和板材進 行組合,省去了伺服電機自帶的舵臂。 這樣既降低了重心,增大了穩(wěn)定度,又 減輕了伺服電機的負載。

以伸縮臂與伺服電機組合為例, 簡單介紹一下組合方法吧。首先,用 卡尺(最好用電子卡尺或帶表卡尺, 精確度高些)量出伺服電機輸出軸外 徑f a和內(nèi)徑f b,然后在單層側(cè)板上 合適的位置,按f a尺寸稍小開一圓 孔,使轉(zhuǎn)軸穿過圓孔時,緊湊為宜。 注意,側(cè)板兩頭應(yīng)各開一孔,留一邊 待用;取另一未開孔單層側(cè)板B,在與 A側(cè)板相同位置上以fb稍大開孔,再 將A、B側(cè)板用氯仿粘合,待干后,一 塊具有較高強度的新側(cè)板C就誕生了。 再根據(jù)需要在側(cè)板中部打若干個組裝 孔,取一顆M3螺絲穿過側(cè)板f b孔把伺服電機輸出軸暫時固定,再往側(cè)板 fa孔中注入適量有機溶劑,使孔壁軟 化,收緊M3螺絲,使輸出軸與側(cè)板完 全配合,孔壁硬化后形成齒狀內(nèi)壁, 恰好與輸出軸緊密接觸,使側(cè)板能隨 軸轉(zhuǎn)動。側(cè)板的另一頭也用相同的方 法,連接另一伺服電機。取另一個已 組裝單個伺服電機的側(cè)板,用合適長 度的銅柱和若干M3螺絲將兩側(cè)板組裝 成臂體,組裝時注意同端的兩個伺服 電機轉(zhuǎn)角一致。擰緊螺絲,臂體就完 成了。 該機器手的其中一個伺服電機需 要使用雙輸出軸,而一般伺服電機底 部均無輸出軸,所以必須給它定造一 個"義軸",要求與原輸出軸同心。 截取一塊與伺服電機底部同等大小的 雙層塑料板D,在適當位置鉆孔,注意 D板貼上伺服電機底部時孔要與輸出軸 同心,在任意一面上將孔擴大(切不 可整孔都擴),深度只需2mm左右, 用于藏入一個M3螺母,擴孔畢,取 一個螺母和長5mm的帶螺紋銅柱,擰 緊,"義軸"便做成了。

采用相似的方法完成各部件后, 便可組裝成整體了。組裝完成以后, 還需作最后的整機測試,若伺服電機 初始化值和上下限值不適合,可以按 實際調(diào)試修改。確定后,將修改完的 源代碼編譯成bin或Hex文件,下載到 AT89C2051中。再找個合適的電源適 配器給它供電,至此,"山寨版"的 機器手工程順利竣工。圖11為完全手 工制作的"山寨版"機器手外形。

功能測試

機器完成后,本人做了些簡易的 測試,主要是回旋范圍和夾持搬運不 同物品的性能。

1.回旋范圍測試 圖11測試左右旋轉(zhuǎn)范圍,圖12、 圖13是測試前后伸展距離。

2.夾持不同物品搬運測試 圖14是搬運鉛筆測試,圖15是搬運中的鐵皮罐。

寫在后面的話

我剛開始設(shè)計這個機器手時是仿 照國外的5個自由度的,后來因采購的 伺服電機的輸出力矩不足(需要使用 大力矩的金屬齒輪伺服電機),而改 為 4個自由度,在圖11中能看到有些 "改造"的痕跡。制作機械部分時也 嘗試過使用亞克力板材,由于條件所 限,加工設(shè)備只有手鋸、銼刀和一把 電鉆,加工起來效果不佳,最后只好 放棄了亞克力,改用了現(xiàn)在所用的普 通塑料板。另外,程序設(shè)計時,編寫 了兩個方案,一個見上文,另一個方 案見源代碼,可到www.radio.com.cn 上下載,其原理也不復(fù)雜,請有興趣 的讀者可自行分析。

伺服電機相關(guān)文章:伺服電機工作原理




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉