【Z2F #3】主翼の作成(クラークY翼)を作る ~OpenSCADで型紙作成~ #3

こんにちは、TUKUMO工房の管理人LumenHeroです。 「ゼロから飛ばす!ラジコン飛行機自作記」(Z2F)の第3回、今回は「デジタル設計編」です。

前回【Z2F #2】主翼の設計(クラークY翼)を作る~翼形状の選定と設計編~ #2は、低速走行に強い伝統の翼型「Clark-Y」を採用することに決定しました。今回はその理論上の形状を、実際に切り出すための「型紙」へと変換するプロセスを解説します。

ゼロから飛ばす、ラジコン飛行機[Z2F]の第三回。飛行機の飛行特性を大きく決める主翼の形状の設計からOpenSCADで読み込み調整後、型紙化まで。

1. 座標データ(DATファイル)の入手

翼型を決定しただけでは、まだ紙に描くことはできません。まずはAirfoil ToolsのClark-Yのページから、翼の形状を点群で定義しているDATファイルを入手します。

Airfoil Tools clark-y

Airfoil Tools clark-y

飛行機データベース 翼形状clark-y

airfoiltools.com

DATファイルとは、翼の前縁を起点としたX座標とY座標のリストです。しかし、このままだと「翼弦長を80mmにしたい」「カーボンロッドを通す穴を空けたい」といった微調整が非常に困難です。そこで、当ブログおなじみの3Dモデリングツール、OpenSCADの出番です。

#DATファイルの中身 (head 10 line抜粋)
CLARK Y AIRFOIL
  1.000000  0.000599
  0.990000  0.002969
  0.980000  0.005333
  0.970000  0.007687
  0.960000  0.010023
  0.940000  0.014624
  0.920000  0.019116
  0.900000  0.023502
  0.880000  0.027789
...

DATファイルの中身:正規化された2D座標データが入っている

2. 座標データをopenSCADに読み込ませる。

DATファイルの形式そのままだとSCADに読み込ませられないので、リスト形式にちょこっと整形する必要があります。

OpenSCADのpolygonで読み込ませる予定なので、[[x1,y1],[x2,y2]…]形式になるように整形しました。

// --- [DATA] ------------------------------------------------------
// CLARK-Y 11.7% smoothed points
clark_y_points = [
    [1.000000, 0.000000], [0.995720, 0.001150], [0.982960, 0.004480], 
    // ...中略...
    [0.995720, -0.000250], [1.000000, 0.000000]
];

3. パラメータ調整と構造穴の設計

次に、第2回で決めた「翼弦長 80mm」などの数値を反映させつつ、骨組みを通すための穴を設計します。ただの翼の形ではなく、「組み立てられるパーツ」としての設計です。

SCADなので、変数化しておくことで後からの調整がしやすいようにしました。

// --- 設定 ---
chord = 80;                 // 翼弦長 (mm)
hole_d = 2.1;               // 穴径 (mm)
front_hole_pos = [5, 2.2];  // 前縁の主桁と中心の主桁の位置関係
spar_hole_pos  = [chord_length * 0.28, 3.6]; // 中心の主桁は全体の28%位置

諸々の調整後のリブの形状プレビューです。

clark-y翼形のリブのcadプレビュー

リブのプレビュー:穴あけ位置の目印付き

4. 印刷できるように2d化とpdf出力

軽量化と強度のため、3dプリント製ではなく密度の高い発泡プラバンを切り出してリブにする予定なので、型紙にする必要があります。

単一のデータを並べてPDF出力しても良いのですが、印刷時にサイズが微妙にズレたり、1枚ずつ印刷するのは効率が悪かったりします。そこで、A4用紙の枠内に自動でリブを敷き詰めるモジュールを作成しました。

// レイアウト設定
render_mode = "paper";  // "view": 確認用(1枚), "paper": 印刷用(A4充填)
margin = 10;            // 用紙の余白 (mm)
padding_x = 5;          // リブ間の横間隔 (mm)
padding_y = 10;         // リブ間の縦間隔 (mm)

// 用紙設定 (A4)
A4 = [210, 297];
// ... くらーくy のリストなど略

module rib(show_marks = false) {
    // Clark Yの厚みは約11.7%なので、原点を中心付近に移動して扱いやすくする
    translate([0, chord_length * 0.028]) {
        difference() {
            scale([chord_length, chord_length]) polygon(clark_y_points);
            translate(front_hole_pos) circle(d = hole_diameter, $fn=30);
            translate(spar_hole_pos)  circle(d = hole_diameter, $fn=30);
        }
        if (show_marks) {
            color("red") for(p = [front_hole_pos, spar_hole_pos]) 
                translate(p) { square([10, 0.1], true); square([0.1, 10], true); }
        }
    }
}

module a4_fill_layout() {
    rib_h = chord_length * 0.12 + padding_y; // 翼の厚みを考慮した高さ
    rib_w = chord_length + padding_x;
    
    cols = floor((A4.x - 2 * margin) / rib_w);
    rows = floor((A4.y - 2 * margin) / rib_h);

    %square(A4); // 用紙枠の表示 (プレビュー用)
    
    for (r = [0 : rows - 1]) {
        for (c = [0 : cols - 1]) {
            translate([margin + c * rib_w, margin + r * rib_h]) rib();
        }
    }
}
clark-y翼形のリブのcadをA4サイズの用紙に印刷するために配置した

印刷配置でのプレビュー

5. 型紙PDF完成

これで、理論上の設計(第2回)から、現実の工作に使える「型紙(第3回)」へと橋渡しができました。OpenSCADを使う最大のメリットは、一度コードを書いてしまえば「やっぱり翼を大きくしたい」といった変更が数値を1箇所書き換えるだけで済むという点にあります。

次回予告:手切りは地獄?「自作ツール」を作る

次回は、「カッターで1枚ずつ切るのは大変すぎる!」という不満から生まれた、自作ニクロム線カッターによるリブ量産編をお届けします。

指定された記事(ID: 5048)は現在公開されていません。

[型紙データの配布について] 今回設計したClark-Yのリブ型紙(A4レイアウト済みPDF)を、当サイトのDLコーナーにて無料公開しました! : clark-y-30cm-rc-plane-wing-rib-template-pdf