2021年8月13日金曜日

OpenSCADとUltimaker Curaを使用して、LEGO Technic互換の穴とSG92Rギアに対応する穴が端についたアームを作る

OpenSCADとUltimaker Curaを使用して、LEGO Technic互換の穴とSG92Rギアに対応する穴が端についたアームを作るには以下の手順を実行します。

〇LEGO Technic互換の穴とSG92Rギアに対応する穴が端についたアームの写真
※白色のアームが今回作った物、灰色の部品は純正のLEGOブロックです。片方の端の穴がSG92Rギアに対応する穴になっています。

作成手順

1. OpenSCADで以下のコードを実行して形状を調整し、STLファイルにエクスポートします。
穴の半径など3Dプリンタや設定によって微調整してください。
ギアの歯の半径サイズはSMALL_RADIUS/LARGE_RADIUSで変更できます。ギアが緩かったり、はまらなかった場合は増減して調整してください。

・LEGO Technic互換の穴とSG92Rギアに対応する穴がついたアームのソースコード
// アームの厚さ
PLATE_THICK=4;

// LEGOの1ブロック
LEGO_SQUARE=7.95;
// 突起の直径
HOLE_MARGIN=0.5;
LEGO_HOLE=4.8+HOLE_MARGIN;
LEGO_HOLE_R=LEGO_HOLE/2;
LEGO_HOLE_H=1.8;
LEGO_HOLE_L=6.2+HOLE_MARGIN;
LEGO_HOLE_LR=LEGO_HOLE_L/2;
LEGO_HOLE_LH=0.5;

// プレートのサイズ(ブロック単位)
NUM_HOLE_W=4;
NUM_HOLE_D=1;

// SG92Rのギアのサイズ
SMALL_RADIUS=4.76/2;
LARGE_RADIUS=4.86/2;
NUM_POINTS=20;
GEAR_HEIGHT=3;
ANGLE = 360/NUM_POINTS/2;

difference()
{
    union(){
        translate([-LEGO_SQUARE/2, 0, 0])
        linear_extrude(height=PLATE_THICK){
            square([LEGO_SQUARE*NUM_HOLE_W, LEGO_SQUARE*NUM_HOLE_D]);
        }
        translate([LEGO_SQUARE*NUM_HOLE_W-LEGO_SQUARE/2, LEGO_SQUARE/2, 0])
        linear_extrude(height=PLATE_THICK){
            circle(LEGO_SQUARE/2, $fn=50);
        }
        translate([-LEGO_SQUARE/2, LEGO_SQUARE/2, 0])
        linear_extrude(height=PLATE_THICK){
            circle(LEGO_SQUARE/2, $fn=50);
        }
    }
    union(){
        for( lw = [0 : NUM_HOLE_W-1] ){
            for( ld = [0 : NUM_HOLE_D-1] ){
                translate([LEGO_SQUARE*lw+LEGO_SQUARE/2, LEGO_SQUARE*ld+LEGO_SQUARE/2, 0])
                linear_extrude(height=PLATE_THICK){
                    circle(LEGO_HOLE_R, $fn=50);
                }
                translate([LEGO_SQUARE*lw+LEGO_SQUARE/2, LEGO_SQUARE*ld+LEGO_SQUARE/2, 0])
                linear_extrude(height=LEGO_HOLE_LH){
                    circle(LEGO_HOLE_LR, $fn=50);
                }
                translate([LEGO_SQUARE*lw+LEGO_SQUARE/2, LEGO_SQUARE*ld+LEGO_SQUARE/2, PLATE_THICK-LEGO_HOLE_LH])
                linear_extrude(height=LEGO_HOLE_LH){
                    circle(LEGO_HOLE_LR, $fn=50);
                }

            }
        }

        translate([-LEGO_SQUARE/2, LEGO_SQUARE/2, 0])
        linear_extrude(height=PLATE_THICK){
            for( pt = [0 : NUM_POINTS-1]) {
                l_px = cos(pt*ANGLE*2)*LARGE_RADIUS;
                l_py = sin(pt*ANGLE*2)*LARGE_RADIUS;
                s_px = cos(pt*ANGLE*2+ANGLE)*SMALL_RADIUS;
                s_py = sin(pt*ANGLE*2+ANGLE)*SMALL_RADIUS;
                l_px2 = cos(pt*ANGLE*2+ANGLE*2)*LARGE_RADIUS;
                l_py2 = sin(pt*ANGLE*2+ANGLE*2)*LARGE_RADIUS;
                polygon(points=[[0, 0], [l_px, l_py], [s_px, s_py], [l_px2,  l_py2]], paths  = [[0, 1, 2, 3]]);
            }
        }

    }
}

・OpenSCADの画面

2. Ultimaker CuraでSTLファイルを読み込み、スライスしてgcodeを保存します。

3. 3Dプリンターで印刷します

関連情報

OpenSCADまとめ

OpenSCADとUltimaker Curaを使用して、LEGO Technic互換の穴とSG92Rギアに対応する穴がついた十字アームを作る
OpenSCADとUltimaker Curaを使用して、LEGO互換の凹みがついたサーボモーター固定台を作る

0 件のコメント:

コメントを投稿