前言
第一次看到 Theo Jansen 的 Strandbeest 在沙灘上行走的影片時,我盯著螢幕看了整整十分鐘。那些由 PVC 管組成的「生物」靠著風力驅動,用純粹的機構設計實現了流暢的步行運動——沒有電子元件、沒有程式碼,只有幾何與力學。
從那天起,我就迷上了動力雕塑(Kinetic Sculpture)。這是一個結合機械設計、美學直覺和動手能力的領域。而雷射切割機的普及,讓製作精密的齒輪和凸輪機構變得前所未有地容易。
這篇文章是我設計動力雕塑的筆記整理。我會從最基本的齒輪計算講起,涵蓋凸輪曲線設計,最後分享如何用雷切實際製作這些零件。
齒輪基礎
齒輪的基本參數
設計齒輪時,你需要知道幾個關鍵參數:
- 模數(module, m):齒輪大小的基本單位,m = 齒距 / π
- 齒數(number of teeth, z):齒輪上的齒數
- 節圓直徑(pitch diameter, d):d = m × z
- 壓力角(pressure angle):通常是 20°,決定齒形的傾斜度
兩個齒輪要能正確嚙合,它們的模數必須相同。
齒輪比計算
齒輪比是動力雕塑設計中最重要的計算之一。它決定了不同部件的轉速關係。
齒輪比 = 從動齒輪齒數 / 主動齒輪齒數
= z2 / z1
例如,主動齒輪有 12 齒,從動齒輪有 48 齒:
齒輪比 = 48 / 12 = 4:1
這表示主動齒輪轉 4 圈,從動齒輪才轉 1 圈。如果你想讓雕塑的某個部分緩慢移動,就需要高齒輪比(減速)。
複合齒輪系
實際上,單對齒輪很難達到很高的齒輪比(因為大齒輪會變得太大)。解決方法是使用複合齒輪系——多對齒輪串聯起來。
總齒輪比 = (z2/z1) × (z4/z3) × (z6/z5) × ...
比如三對齒輪,每對都是 4:1,總齒輪比就是 4 × 4 × 4 = 64:1。這意味著輸入軸轉 64 圈,輸出軸只轉 1 圈。
用 Python 計算齒輪參數
import math
class Gear:
def __init__(self, module, teeth, pressure_angle=20):
self.module = module
self.teeth = teeth
self.pressure_angle = math.radians(pressure_angle)
# 計算各項參數
self.pitch_diameter = module * teeth
self.addendum = module # 齒頂高
self.dedendum = 1.25 * module # 齒根高
self.outer_diameter = self.pitch_diameter + 2 * self.addendum
self.root_diameter = self.pitch_diameter - 2 * self.dedendum
def __repr__(self):
return (f"Gear(m={self.module}, z={self.teeth}, "
f"d={self.pitch_diameter:.1f}mm, "
f"OD={self.outer_diameter:.1f}mm)")
def gear_ratio(driver, driven):
return driven.teeth / driver.teeth
def center_distance(g1, g2):
return (g1.pitch_diameter + g2.pitch_diameter) / 2
# 範例:設計一組減速齒輪
m = 1.5 # 模數 1.5mm,適合雷切 3mm 壓克力
g1 = Gear(m, 12) # 主動齒輪 12 齒
g2 = Gear(m, 48) # 從動齒輪 48 齒
print(f"主動齒輪: {g1}")
print(f"從動齒輪: {g2}")
print(f"齒輪比: {gear_ratio(g1, g2):.1f}:1")
print(f"中心距: {center_distance(g1, g2):.1f}mm")
輸出:
主動齒輪: Gear(m=1.5, z=12, d=18.0mm, OD=21.0mm)
從動齒輪: Gear(m=1.5, z=48, d=72.0mm, OD=75.0mm)
齒輪比: 4.0:1
中心距: 45.0mm
凸輪機構設計
為什麼需要凸輪?
齒輪提供的是旋轉運動,但動力雕塑中的許多動作是往復運動或複雜的非線性運動——比如鳥翅膀的拍動、波浪的起伏。凸輪(cam)就是把旋轉運動轉換為任意運動曲線的機構。
凸輪的基本類型
- 板凸輪(plate cam):最常見,像一個不規則形狀的輪子
- 端面凸輪(face cam):在平面上開溝槽
- 圓柱凸輪(cylindrical cam):在圓柱面上開溝槽
對於雷切製作,板凸輪是最實用的選擇。
凸輪曲線設計
凸輪的輪廓決定了從動件(follower)的運動曲線。以下是幾種常見的運動曲線:
等速運動:
y = h × (θ / β)
簡單但有「撞擊」問題,在起點和終點的速度突然改變。
簡諧運動(SHM):
y = h/2 × (1 - cos(π × θ / β))
平滑但加速度在端點不為零。
擺線運動(cycloidal):
y = h × (θ/β - sin(2π × θ/β) / (2π))
最平滑,速度和加速度在端點都為零。動力雕塑推薦使用這種。
用 Python 生成凸輪 SVG
import math
import svgwrite
def cycloidal_cam(filename, base_radius=20, lift=15,
rise_angle=150, dwell_angle=30, steps=360):
"""生成擺線運動凸輪的 SVG"""
dwg = svgwrite.Drawing(filename, size=('100mm', '100mm'),
viewBox='-50 -50 100 100')
points = []
rise_rad = math.radians(rise_angle)
dwell_rad = math.radians(dwell_angle)
fall_rad = rise_rad # 對稱設計
for i in range(steps):
theta = 2 math.pi i / steps
if theta < rise_rad:
# 上升段 - 擺線運動
t = theta / rise_rad
r = base_radius + lift (t - math.sin(2 math.pi t) / (2 math.pi))
elif theta < rise_rad + dwell_rad:
# 高位停留
r = base_radius + lift
elif theta < 2 * rise_rad + dwell_rad:
# 下降段 - 擺線運動(反向)
t = (theta - rise_rad - dwell_rad) / fall_rad
r = base_radius + lift (1 - t + math.sin(2 math.pi t) / (2 math.pi))
else:
# 低位停留
r = base_radius
x = r * math.cos(theta)
y = r * math.sin(theta)
points.append((x, y))
# 繪製凸輪輪廓
path_data = f'M {points[0][0]},{points[0][1]} '
for x, y in points[1:]:
path_data += f'L {x},{y} '
path_data += 'Z'
dwg.add(dwg.path(d=path_data, fill='none',
stroke='black', stroke_width=0.2))
# 中心孔
dwg.add(dwg.circle((0, 0), r=2.5,
fill='none', stroke='black', stroke_width=0.2))
dwg.save()
cycloidal_cam('my_cam.svg')
馬達選擇
動力雕塑的馬達需求
動力雕塑通常需要低轉速、穩定的旋轉。以下是常見的選擇:
| 馬達類型 | 轉速 | 扭力 | 適合場景 |
|———|——|——|———|
| 直流減速馬達 | 1-100 RPM | 中等 | 中小型雕塑 |
| 步進馬達 | 可控 | 高 | 需要精確控制的雕塑 |
| 時鐘機芯 | 1 RPM (分針) | 很低 | 超慢速微型雕塑 |
| 風力/水力 | 不定 | 不定 | 無電源的戶外雕塑 |
扭力計算
要讓雕塑順暢運轉,馬達的扭力必須大於負載扭力。粗略估算:
所需扭力 ≈ 零件重量 × 重心到旋轉軸距離 × 安全係數(2-3)
例如,一個 100g 的翅膀零件,重心距旋轉軸 15cm:
扭力 ≈ 0.1kg × 0.15m × 9.8 × 2.5 ≈ 0.37 N·m
考慮到齒輪系的減速增扭效果,如果齒輪比是 10:1,馬達端只需提供約 0.037 N·m 的扭力。
雷切齒輪實作
材料選擇
- 3mm 密度板(MDF):便宜、易切、適合原型測試
- 3mm 壓克力:精度好、美觀、適合展示品
- 3mm 樺木合板:強度好、質感佳、適合受力零件
齒輪 SVG 生成工具
我推薦使用 Inkscape 的齒輪擴充套件,或者用線上工具 Gear Generator(geargenerator.com)。設定好模數和齒數後,直接匯出 SVG。
如果你想要更多控制,可以用 Python 的 gear_generator 套件:
# 安裝: pip install gear-generator
# 或者自己算齒形的漸開線
import math
def involute_gear_svg(module, teeth, filename):
"""生成漸開線齒輪 SVG(簡化版)"""
pitch_r = module * teeth / 2
outer_r = pitch_r + module
root_r = pitch_r - 1.25 * module
base_r = pitch_r * math.cos(math.radians(20))
# 這裡用簡化的齒形,完整版需要計算漸開線
tooth_angle = 2 * math.pi / teeth
half_tooth = tooth_angle * 0.25
svg = f'<svg viewBox="-{outer_r+5} -{outer_r+5} {2(outer_r+5)} {2(outer_r+5)}" '
svg += f'width="{2(outer_r+5)}mm" height="{2(outer_r+5)}mm" '
svg += 'xmlns="http://www.w3.org/2000/svg">\n'
# 齒輪輪廓
points = []
for i in range(teeth):
angle = i * tooth_angle
# 齒根
points.append((root_r math.cos(angle - half_tooth 1.2),
root_r math.sin(angle - half_tooth 1.2)))
# 齒頂
points.append((outer_r math.cos(angle - half_tooth 0.4),
outer_r math.sin(angle - half_tooth 0.4)))
points.append((outer_r math.cos(angle + half_tooth 0.4),
outer_r math.sin(angle + half_tooth 0.4)))
# 齒根
points.append((root_r math.cos(angle + half_tooth 1.2),
root_r math.sin(angle + half_tooth 1.2)))
path = 'M ' + ' L '.join(f'{x:.3f},{y:.3f}' for x, y in points) + ' Z'
svg += f' <path d="{path}" fill="none" stroke="black" stroke-width="0.2"/>\n'
# 中心軸孔
svg += f' <circle cx="0" cy="0" r="2.5" fill="none" stroke="black" stroke-width="0.2"/>\n'
svg += '</svg>'
with open(filename, 'w') as f:
f.write(svg)
involute_gear_svg(1.5, 24, 'gear_24t.svg')
雷切注意事項
- 雷切寬度補償(kerf compensation):雷射光束有寬度(通常 0.1-0.2mm),切割後的零件會比設計尺寸小一點。齒輪的齒形需要向外偏移半個切縫寬度。
- 軸孔配合:如果軸孔設計為 5mm,雷切後可能只有 4.8mm。需要先測量你的雷切機的切縫寬度,再調整設計。
- 應力集中:齒根是最容易斷裂的地方。使用圓弧過渡而非尖角。
- 多層疊加:如果單層材料太薄(強度不足),可以切多層相同的齒輪黏合在一起。
組裝建議
軸承與軸
便宜又好用的軸承方案:
- M5 螺絲 + 尼龍墊片:最簡單的軸承替代方案
- 608 軸承(滑板軸承):內徑 8mm,便宜又容易取得
- 銅套軸承:摩擦係數低,適合低速應用
框架設計
用雷切的板材組裝框架時,箱指接合(box joint)是最實用的連接方式。它不需要額外的螺絲或黏膠(雖然加點膠會更牢固),而且可以完全用雷切完成。
小結
設計動力雕塑是一個綜合性很強的創作過程。你需要理解齒輪的數學、凸輪的運動學、馬達的電機特性,還要有足夠的美學判斷力讓最終作品賞心悅目。
我的建議是從簡單的單軸旋轉雕塑開始——一個馬達帶動一根軸,軸上裝幾個凸輪,每個凸輪推動一個零件上下運動。掌握基本原理後,再逐步加入更多齒輪級和更複雜的連桿機構。
延伸閱讀:
- Theo Jansen 的官網 strandbeest.com — 風力步行機的靈感之源
- 507 Mechanical Movements — 經典的機構動畫百科
- Arthur Ganson 的 MIT 博物館作品 — 極致的動力雕塑藝術
- YouTube 頻道 “Wintergatan” — 彈珠音樂機的精彩製作過程