全國專題競賽
國立台灣科技大學機械工程系
乒乓球發球機器人
Table Tennis Robot
指導教授:黃育熙
學生:張元澤、王冠雄、邱韋懷、高慶隆
1
乒乓球發球機器人
Table Tennis Robot 指導教授:黃育熙
國立台灣科技大學 機械工程系 張元澤、王冠雄、邱韋懷、高慶隆
摘要
許多的運動都是多人進行,然而在現 今社會裡,卻充滿著想要運動卻找不到伴 的人,有鑑於此,我們針對桌球運動設計 出一台低成本、高準確度及高穩定性的乒 乓球發球機。利用精巧的加工與縝密的機 構設計配合機電整合控制系統,並具有紅 外線遙控以及 LCD 螢幕顯示發球情形之 功能,讓使用者即使在一人時也可以享受 運動的樂趣。
壹、緒論
配合校內課程競賽,我們用簡單的材 料及元件打造出一台花費不超過 6 千元的 乒乓球發射機,並且在此競賽裡榮獲冠軍。
透過此競賽測試了機器的性能,證明我們 所製作出來的發球機,低成本卻有極高的 準確度及穩定性。
一、研究動機與背景
本校機械系於 103 學年度之「機械系 統設計與實務」課程,以「投球機投球射 準競賽」為主題,要求學生們利用專業知 識,包含機構設計、機械零件設計與選配、
電控系統等理論基礎,發揮創意自行設計 組裝乒乓球的投球機。
二、競賽內容 (一)競賽主題簡介
以投球為主題,分為「連續投擲」跟
「準確投擲」這兩大類進行。製作一臺可 以連續擊發、自動停止的投球機,要求達 到連續性準確投擲的穩定度;並在簡單的 控制操作可以經由機器轉動或彈道的調整,
達到準確投擲的目的。
(二)比賽場地與規則
參賽者機臺與競賽場地投擲標的物的 投影距離皆為 1.2 m,製作之機臺活動部 位任一零件不得超過此規定劃線區域。
1. 初賽(一):連續投擲比賽
如下圖一,大會給予 20 顆球,在 1.5 分 鐘內射進 8 顆乒乓球者為進入下一階段 競賽之門檻。
2. 初賽(二):準確投擲比賽
如下圖二,給予 15 顆乒乓球,在 3 分鐘 內累計分數計分,7 個區域各有高低分不 等的相對應分數,將以所有組別的總分依 序排列作為分數評比標準,採最高分的 8 組錄取決賽資格。
2
圖一 初賽(一)場地
圖二 初賽(二)場地
3. 決賽:競技投擲比賽
如下圖三,採三戰兩勝制,每回合比 賽時間為 4 分鐘,一次給予 20 顆球。依 初賽成績決定發球順序,初賽成績較高分 者將取得第一回合及第三回合的優先發球 權,一次以一顆球發出計數,雙方輪流發 球,先取得三格子並連成一線的一方為勝 利者。
圖三 決賽場地
貳、機器設計
一、設計理念
設計理念將機器分成三大系統作細部 的討論,分別為儲球系統、發球系統和瞄 準系統。
(一)設計構想與確定 1. 儲球系統
表一 儲球系統構想方案
方式 優點 缺點
塑膠桶
能夠在高度的 限制內裝球,
體積較集中。
會有卡球的問 題。
撓性水管
較不會有卡球 問題。
架設的位置會 影 響 機 構 重 心 , 較 佔 空 間。
如上表一,考慮 2 個方案,最後選擇 桶子儲球。卡球的缺點,將利用馬達裝置 攪拌棒,做攪拌讓球順利排出。
2. 發球系統
表二 發球系統構想方案
方式 優點 缺點
摩擦輪
機台不易振 動,且控制容 易。
較無創新感
彈簧
取得方式容 易,材料好購 買。
機台振動,使 螺絲容易鬆脫
氣壓
具有創新感。 控制不易,壓 縮機價格昂 貴,體積龐 大。
3 如上表二,考慮 3 個方案,最後選擇 摩擦輪射出,因其控制容易,機器也較穩 定。
3. 瞄準系統
表三 瞄準系統構想方案
方式 優點 缺點
前導輪:
左右轉動
控制簡單,
輪的直徑可 以推算左右 偏幅。
機台支撐有 可能無法負 荷。
大齒輪組:
上下底盤 配合轉動
齒輪購買容 易。
金屬齒輪價 格昂貴,兩 齒輪組配不 易。
如上表三,考慮 2 個方案,最終選擇 前導輪左右轉動來控制左右落點,而球的 遠近可以用摩擦輪轉速來控制前後落點。
(二)材料選用
表四 機器零件之材料選用與加工方法
零件項目 材料選用 加工方法
底座 木材 鋸床加工
上座 壓克力 銑床加工
發射管 硬水管 銑床加工
送球連桿 壓克力 銑床加工 送球活塞 塑膠 現 成 + 鑽 床
加工 輸球道 伸縮水管 現成
摩擦輪 橡膠 現 成 + 鑽 床 加工
儲球桶 塑膠、
壓克力 銑、鑽床加工 儲球桶支架 木材 鋸床加工
馬達支架 木材 鋸床加工
發射管支架 木材 鋸床加工
攪拌器 壓克力 銑床加工
軸心連結器 塑鋼 車床加工
二、機構加工 (一)瞄準系統
如下圖四所示,將機台後端之一點固 定,前端設置一導輪作向左向右之轉動,
依照兩點距離以及輪子滾動之弦長,作幾 何比例的放大,並藉由此方法來控制射球 的左右落點。
圖四 瞄準系統作動示意圖
(二)發球系統
物體碰到摩擦輪會使其物沿切線方向 射出。球的遠近,採用改變射擊力道的方 式,亦即改變摩擦輪的轉速來控制射擊距 離的遠近,如下圖五所示。
圖五 發球系統作動示意圖
4 (三)儲球系統
設計儲球桶最大的問題就是球桶內多 顆球同時卡在出口,造成球無法持續的供 應。為解決此問題,我們在球桶的上方裝 上馬達及攪拌棒,來持續擾動球桶內的球,
使球保持流動。有弧度曲線的儲球桶形狀,
則是能夠儲存最多顆球,且同時把高度控 制在規定範圍內,如下圖六所示。
圖六 瞄準系統作動示意圖
三、電控設計
在機電整合的控制部分,配合機構我 們運用幾樣電子元件來作推球、發射、角 度控制、紅外線控制、螢幕顯示等控制,
並使用 ARDUINO 之 UNO 控制板撰寫程 式作為控制核心。以下將分成幾個部分介 紹,分別為發球系統、儲球系統、瞄準系 統、馬達晶片模組與電壓分配、紅外線控 制、LCD 螢幕顯示。
(一)控制方式與致動器介紹 1. 發球系統
(1)運用介紹
如圖七,推球時是用伺服機轉動特定 角度後復歸,轉動時帶動連桿將球推進,
最後靠著馬達轉動摩擦輪並利用摩擦力將 射出,而射球的遠近則依靠馬達轉速的控 制。
圖七 推球機構與伺服機
(2)電子元件 a. 伺服機 型號:GR995 規格:如下表五
表五 GR995 伺服機規格 Stall
torque
Operation Voltage
Operating Speed
Operating Speed 12kg/
cm(6V)
4.8 - 7.2 V 0.17sec / 60 degrees (4.8V no load)
0.13sec / 60 degrees (6.0V no load)
圖八 GR995 伺服機
5 b. 直流馬達
型號:GCR554DP-26075 規格:如下表六
表六 直流馬達規格
Voltage At Maximum Efficiency Operating
Range Norminal Speed Current Torque 9.6-14.4V 12V
Constant
4200
RPM 1.04 A 16.43 mN-m
圖九 直流馬達
圖十 摩擦輪搭配馬達
2. 儲球系統 (1)運用介紹
使用 30RPM 低轉速的馬達帶動壓克 力條狀材料加上竹筷做成的攪拌棒,讓球 在球桶裡不停受攪動,解決卡球問題,如 下圖十一、圖十二。
圖十一 低轉速馬達配合攪拌棒
圖十二 儲球桶上方
(2)電子元件
a. 低轉速直流馬達
型號:JYE MAW JM200-3529 規格:DC 12V
轉速:30RPM
3. 瞄準系統 (1)運用介紹
如下圖十三,前導輪轉動是靠伺服機轉動 角度,角度的範圍是 0~180 度。
圖十三 瞄準系統之前導輪
(2)電子元件 a. 伺服機
型號:GR995(與推球機構所用相同)
6 (二)控制器與電源供應電子元件介紹
1. 運用介紹
(1)初賽:在初賽時,馬達是用電控課程所 教的 TA7279P 晶片驅動,如下圖十四,
它可以控制兩個馬達,但我們只拿來控制 摩擦輪馬達,而驅動晶片的電壓來源和馬 達電壓則分別用鋰電池和電源供應器。
(2)決賽:歷經初賽後,發現流經 TA7279P 晶片的電流過大,導致晶片容易過熱,甚 至燒壞晶片,造成驅動馬達時會不穩定。
因此我們改用耐電流值較高的 L298N 晶 片模組驅動,過熱的問題因此而解決,但 為保險起見,在晶片旁加裝一小型風扇幫 助散熱。為了增加穩定度和減少配置空間,
我們將所有元件之電源供應改用電源供應 器配合降壓模組供電。
2. 電子元件 (1)初賽
a. TA7279P 馬達驅動晶片 規格:如下表七
表七 TA7279P 馬達驅動晶片規格
VCC (opr.) VS (opr.) Output current
6to18V(P, AP)
0to16V (P) / 0 to 18V(AP)
1.0A (AVE.), 2.0A (PEAK)
圖十四 TA7279P 馬達驅動晶片
b. 鋰電池
規格:1800mAh DC 12V 輸出電壓 Vdc 10.8V-12.6V
圖十五 鋰電池
c. 電源供應器
型號:MeanWell RS-35-15
規格:AC 110V 轉 DC 15V,額定電流 2.4A
(2)決賽
a. L298N 馬達驅動晶片模組 規格:如下表八
表八 L298N 馬達驅動晶片模組規格 最高工作電壓 最大瞬間峰值
電流 持續工作電流 額定功率
46V 3A 2A 25W
圖十六 馬達驅動晶片 L298N 模組 b. 電源供應器
型號:MeanWell RS-100-15
規格:AC 110V 轉 DC 15V,額定電流 7A
7
圖十七 電源供應器
c. 降壓模組
型號:LM2596 DC-DC 降壓模組 規格:輸入電壓 4.5-30V / 輸出可調 1.26-26V
圖十八 降壓模組
d. 散熱風扇
型號:AFB02512HA 規格:如下表九
表九 風扇規格
Rated Voltage
Operating Voltage
Range
Input Current
Input
Power Speed
VDC Amp Watt RPM 12 7.0 to 13.2 0.06 0.72 10000
圖十九 散熱風扇
(三)其他電子元件控制介紹 1. 運用介紹
整體機台除了儲球桶馬達是額外用開 關控制以外,其餘像是馬達轉速、機台左 右角度、發球、停止與復歸、初賽(1)模式 等控制,都是由紅外線遙控器發射訊號,
接收器接收訊號後,再給 Arduino 判讀,
最後再讓制動器作動。
2. 電子元件 (1)紅外線遙控器
圖二十 紅外線遙控器
(2)紅外線接收器
圖二十一 紅外線接收器
8 (3)LCD 螢幕
將 PWM 訊號、幾台角度、發射球數,
顯示在 LCD 螢幕上。
規格:2X16LCD 無背光
圖二十二 LCD 螢幕
(四)線路配置 1. 初賽
圖二十三 初賽線路配置圖
2. 決賽
圖二十四 初賽線路配置圖
(五)程式碼
本專題利用 ARDUINO 之 UNO 控制 板來操控發球機器人,控制功能包含「推 球機構作動 」、「摩擦輪直流馬達轉速調 整」、「瞄準導輪作動」,「紅外線接收與發 射」、「LCD 螢幕顯示」,詳細程式碼如 「陸、
附錄」所列。
9 四、成品
(一)最終成品
圖二十五 最終成品圖
圖二十六 最終成品圖(背面)
圖二十七 最終成品圖(電控配置)
圖二十八 最終成品圖(正面)
10 (二)流程進度表
表十 機器製作進度規畫表
時間 規劃內容
3 月 02 日 設計圖製作 3 月 18 日 材料購買 3 月 19 日 發射管加工 3 月 21 日 送球連桿、支架製作 3 月 24 日 摩擦輪軸心製作 3 月 27 日 發球系統組裝 3 月 28 日 儲球桶製作 4 月 03 日 儲球桶、底座製作 4 月 08 日 儲球系統組裝 4 月 12 日 整體機構組裝 4 月 25 日 機構微調與修整 5 月 16 日 電子原件架設 5 月 17 日 線路配置 5 月 19 日 性能測試 5 月 20 日 初賽 5 月 23 日 機構維修 5 月 27 日 外觀修飾 5 月 30 日 電子原件更換 6 月 01 日 線路調整與配置 6 月 02 日 性能測試 6 月 03 日 決賽
(三)經費支出表
表十一 機器製作經費支出表
品名 數量 總價
玩具車輪胎 2 240
壓克力板 2 210
木材 1 84
馬達 2 300
螺絲螺帽 1 80
塑鋼棒材 1 170
硬水管 1 100
塑膠伸縮管 1 63
熱熔膠槍+快乾 1 140
文具用品 1 216
壓克力顏料 1 252
電源供應器 1 327
捲尺 1 70
LCD 螢幕 1 180
木板 1 60
降壓模組 1 120
馬達驅動晶片 1 170
伺服機 2 400
電子零件相關 1 1900
其它 1 400
合計 5482
11
参、研究結果與分析
一、比賽結果
初賽一,定點準確投擲,給予 20 球,
進 8 球即可晉級,本隊 20 球全數命中。
初賽二,7 個格子皆有高低分不等的相對 應分數,給予 15 顆球,所有空格填滿則 獲得滿分。兩場初賽本隊皆奪下最高分,
晉級至決賽。
從 12 個隊伍裡,依照初賽的成績排 名次序,取前 4 強作為 8 強裡的種子隊伍,
而本隊在 8 強淘汰賽以 2 比 0 晉升至 4 強,
並再以 2 比 0 晉升至冠軍賽,最後以 2 比 1 奪得冠軍。比賽過程裡,總發數 21 顆,
未投至欲達目地之失誤球數為 1,準確度 為 95.2 %。賽前測試準確度如下表十二,
投射目標範圍設為方圓半徑 4 公分,距離 機器為 1.2 公尺,測試次數 6 次,每次球 數為 25 顆,平均準確度為 94.6 %。
每局比賽時間約 5 分鐘,總開機時間 (未含暖機時間)約 15 分,含暖機總時間約 20 分。機器發球輸出穩定,機構上與電控 上未出現任何問題。
表十二 投球準確度測試
次數 進球數 投球數 命中率 1 23 25 92 % 2 24 25 96 % 3 25 25 100 % 4 22 25 88 % 5 24 25 96 % 6 24 25 96 %
平均命中率 94.6 %
二、問題與討論
初賽時,每回合機器運作時間約 3 分 鐘,機器運作初期,射球輸出穩定,然而 到了後期,卻出現了在同樣訊號的轉速,
所射出的球速卻越來越小,經過一連串的 檢察與測試,發覺摩擦輪所使用的馬達,
在運作時電流通過量大,然而馬達驅動晶 片之承載電流量卻不高,因此馬達的持續 運轉使得驅動晶片容易過熱,導致馬達轉 速輸出逐漸變慢,嚴重情形則為驅動晶片 燒壞。
為克服此問題,本組先用三用電表大 約量測馬達在啟動時所通過的電流,馬達 一般工作時的電流約為 0.25A,從低轉速 改變至高轉速之瞬間時,可達 0.4A,此值 會視前後轉速的差距大而增加;馬達從靜 止到起動之瞬間電流,若啟動的轉速為中、
低轉速,則瞬間電流為 0.5A,若啟動的轉 速為最高轉速,瞬間電流可達 1.2A。
有鑒於此,在決賽時,我們將馬達驅 動晶片更換為 L298N,它能夠承載更大的 電流並且在每次啟動馬達時,先從中轉速 啟動,另在晶片前方裝置小風扇,幫助晶 片散熱,延長機器穩定的運作時間。
肆、結論與建議
一、結論
綜合在製作機器上所面對的問題,歸 納出以下幾點在製作機器上應注意的事 項。
(一) 摩擦輪發射球具有高穩定性,且控制 容易。當馬達運轉時,會帶來些微振 動,考慮到剛性和吸震能力,建造機 器的材質要慎選。
12 (二) 若為儲球桶之設計時,必定會有卡球
的問題,最簡單的方法就是裝置攪拌 器排除。
(三) 供給電子元件電源時,除了滿足工作 電壓供給,也應注意通過電子元件的 電流量,電源供應器要有足夠的承載 電流範圍。
(四) 馬達驅動晶片在控制裡扮演重要的角 色,選擇晶片時,要注意其能承載的 輸出電流值,且注意散熱。
二、建議事項
市面上販售的乒乓球發射機,若是功 能齊全的機型,至少需要 2 到 3 萬元以上。
而我們所設計的機器所用到的元件及材料 花費不超過五千五百元,相當的便宜,且 製作出來的機器準確度及穩定性皆佳。未 來可以改善的部分為增加發球的變化,例 如下旋球、右旋、左旋球等等,以及最重 要的整體外觀包裝。
伍、參考文獻
[1] 維基百科,平面四連桿機構,
http://zh.wikipedia.org/wiki/%E5
%B9%B3%E9%9D%A2%E5%9B%
9B%E6%9D%86%E6%9C%BA%E6
%9E%84 2014/03/07 [2] 摩擦輪應用
www.khvs.tc.edu.tw/page/2/mod e/ME_digitalbook/09.pdf
2014/03/04
[3] L298N 接線說明與程式測試
http://ruten-proteus.blogspot.tw/
2014/02/L298NGuide.html 2014/2/23
陸、附錄
本專題所使用的 ARDUINO 控制晶片 之程式設計碼如下:
#include <LiquidCrystal.h>
//引用 lcd 螢幕函式庫
LiquidCrystal lcd(12,8,3,4,6,7);
#include <IRremote.h>
//引用 IRRemote 函式庫 const int irReceiverPin = 2;
//紅外線接收器 output 訊號接在 pin2 IRrecv irrecv(irReceiverPin);
//定義 IRrecv 物件來接收紅外線訊號 decode_results results;
//解碼結果將放在 decode_results 結構 的 result 變數裡
int pwm=0; //摩擦輪馬達轉速起始為 0
#include <Servo.h>
int pos=0;
//推球機構伺服機起始角度為 0 int pos1=90;
//前導輪伺服機起始角度為 90 int ball=0; //起始球數為 0 Servo A;
Servo B;
void setup(){
Serial.begin(9600);
//開啟 Serial port,通訊速率為 9600 bps
irrecv.enableIRIn(); //啟動紅外線解碼 pinMode(5,OUTPUT);
A.attach(11);
A.Write(pos);
B.attach(10);
B.Write(90);
13 lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print ("pwm:");
lcd.print(pwm);
lcd.setCursor(7,0);
lcd.print ("angle:");
lcd.print(pos1);
lcd.setCursor(0,1);
lcd.print ("ball:");
lcd.print(ball);
}
void loop(){
if (irrecv.decode(&results)){
//解碼成功,收到一組紅外線 Serial.print("irCode: ");
//印到 Serial port Serial.print(results.value);
//紅外線編碼
Serial.print(", bits: ");
Serial.println(results.bits);
//紅外線編碼位元數 delay(300);
irrecv.resume();
//繼續收下一組紅外線訊號 }
switch(results.value){
※由於下列按鍵功能的程式架構大 同小異,為了減少篇幅,以下只舉 出向右偏移、發射球及增加轉速功 能之程式碼,且以下每個 CASE 裡 均省略下列 LCD 程式。
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("pwm:");
lcd.print(pwm);
lcd.setCursor(7,0);
lcd.print ("angle:");
lcd.print(pos1);
lcd.setCursor(1,0);
lcd.print ("ball:");
lcd.print(ball);
case 3053641663:{
//向右偏移瞄準 if(pos1==170){
pos1=170;
B.Write(pos1);
delay(10);
results.value=0;
delay(10);
Serial.println(pos1);
break;
} else{
pos1=pos1+5;
B.Write(pos1);
delay(10);
results.value=0;
delay(10);
Serial.println(pos1);
break;
} }
case 2816777381:{ //增加轉速 if(pwm==255 || pwm==248){
pwm=255;
analogWrite(5,pwm);
delay(10);
results.value=0;
delay(10);
Serial.println(pwm);
14 break;
} else{
pwm=pwm+2;
analogWrite(5,pwm);
delay(10);
results.value=0;
delay(10);
Serial.println(pwm);
break;
}
case 349182793:{ //發射球 for(pos=0;pos<60;pos++) { A.Write(pos);
delay(18);
}
for (pos=59;pos>=1;pos--){
A.Write(pos);
delay(18);
}
delay(10);
results.value=0;
delay(10);
ball=ball+1;
Serial.println(ball);
break;
} } }