前言

第一次看到 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)就是把旋轉運動轉換為任意運動曲線的機構。

凸輪的基本類型

  1. 板凸輪(plate cam):最常見,像一個不規則形狀的輪子
  2. 端面凸輪(face cam):在平面上開溝槽
  3. 圓柱凸輪(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')

雷切注意事項

  1. 雷切寬度補償(kerf compensation):雷射光束有寬度(通常 0.1-0.2mm),切割後的零件會比設計尺寸小一點。齒輪的齒形需要向外偏移半個切縫寬度。
  1. 軸孔配合:如果軸孔設計為 5mm,雷切後可能只有 4.8mm。需要先測量你的雷切機的切縫寬度,再調整設計。
  1. 應力集中:齒根是最容易斷裂的地方。使用圓弧過渡而非尖角。
  1. 多層疊加:如果單層材料太薄(強度不足),可以切多層相同的齒輪黏合在一起。

組裝建議

軸承與軸

便宜又好用的軸承方案:

  • M5 螺絲 + 尼龍墊片:最簡單的軸承替代方案
  • 608 軸承(滑板軸承):內徑 8mm,便宜又容易取得
  • 銅套軸承:摩擦係數低,適合低速應用

框架設計

用雷切的板材組裝框架時,箱指接合(box joint)是最實用的連接方式。它不需要額外的螺絲或黏膠(雖然加點膠會更牢固),而且可以完全用雷切完成。

小結

設計動力雕塑是一個綜合性很強的創作過程。你需要理解齒輪的數學、凸輪的運動學、馬達的電機特性,還要有足夠的美學判斷力讓最終作品賞心悅目。

我的建議是從簡單的單軸旋轉雕塑開始——一個馬達帶動一根軸,軸上裝幾個凸輪,每個凸輪推動一個零件上下運動。掌握基本原理後,再逐步加入更多齒輪級和更複雜的連桿機構。

延伸閱讀:

  • Theo Jansen 的官網 strandbeest.com — 風力步行機的靈感之源
  • 507 Mechanical Movements — 經典的機構動畫百科
  • Arthur Ganson 的 MIT 博物館作品 — 極致的動力雕塑藝術
  • YouTube 頻道 “Wintergatan” — 彈珠音樂機的精彩製作過程