Записи с меткой ‘3D’

motor to lego shaft

lego

// Axle/Hub for Lego wheel.
// Connects M3 motor shaft on Tajima motor/gearbox kit to Lego splined axle wheel.
//
// Printed at 0.2mm layers on UP!. Build 45degree overhangs with no support
//
// Motor shaft hole can be HEX, ROUND, or ROUND with FLAT
// Using metal hex threaded standoff for M3 connection
// standoff is M3x10mm x5mm across flats JAYCAR HP0900
// standoff is press fit into hex hole. Hole has domed ceiling so prints without support
//
// Lego axle design has keyholing to get cleaner inner corners than a simple cross, on the UP
// Has provision for two Flanges that can directly engage the inner surfaces of the wheel rim to provide support
// as the printed axle is prone to shearing under load.
// It is intended that the flange/s are interference fit into the hub parts, 
// and that the wheel is forced all the way down the axle to the flange so the axle is not cantilevered
// Intended for insertion from the deep side of the wheel hub
//-------- Dimension Constants ------------
//R???? = radius, L???? = length; Note small numbers added to dimensions are used to trim for exact fit with your printer (eg +0.1)
LSpline = 10 + 2; //Spline is the Lego Axle part

//AQUA  Flange1 closest to spline
RFlange = (8 + 0.1) / 2; //Flange1 is adjacent to the axle spline
LFlange = 4.3;

//TEAL Flange 2 is optional where it needs a large ring spaced off the axle by Flange1

//Type2 Hub - Red/Orange Balloon tyres, double flange; Also works for Black wheels 
RFlange2 = (16 + 0.1) / 2;
LFlange2 = 6;

// Type1 Hub - Black, flat tyres, only 1 small flange
//RFlange2=RFlange;
//LFlange2=0.01;

HoleOS = 0.6 / 2; // Oversize holes to get to correct size. (UP usually makes holes small)
HoleIsHex = false;
HoleFlat = 0; //For round motor hole with flat on one side. Depth of flat from outside	
LHole = 10; //Hex threaded insert dimensions
RHole = 1.6 + HoleOS; //For hex holes is distance across flats (apothem)

//MAGENTA  Shaft is part holding hex from motor end
RShaft = 8 / 2;
LShaft = LHole ;

RHex = Apothem2Radius(RHole, 6); //dimension across diagonals	


//-----
function Apothem2Radius(apothem, n) = apothem / cos(180 / n);

use < MCAD / regular_shapes.scad >

    //-------------------- Lego Axle ----------------------
    axle_spline_width = 2.0 - 0.2;
axle_diameter = 4.8 - 0.1;
axle_inner_keyhole_radius = 0.3; //keyhole the corners to try and make them square when printed

module axle(height) {
        translate([0, 0, height/2 - LShaft])
        difference() {
                union() {
                        cube([axle_diameter, axle_spline_width, height], center = true);
                        cube([axle_spline_width, axle_diameter, height], center = true);
                    } //union
                for (A = [0, 90, 180, 270]) {
                    rotate([0, 0, A]) {
                            translate([axle_spline_width / 1.75, axle_spline_width / 1.75, 0])
                            cylinder(h = height + 0.01, r = axle_inner_keyhole_radius, center = true, $fs = 0.2);
                        } //rot
                } //for
            } //translate diff
    } //module
    //----------------------------- Main ---------------------------------
difference() {
        union() { //the solid bits
                color("magenta") cylinder(h = LShaft, r = RShaft, $fn = 50);
                translate([0, 0, LShaft]) {
                    color("teal") cylinder(h = RFlange2 - 2, r2 = RShaft - 3, r1 = RShaft, $fs = 1); //
                    translate([0, 0, LFlange2]) {
                        translate([0, 0, LFlange])
                        axle(height = LSpline);
                    }
                }
            } //union

        union() { //the holes
                translate([0, 0, -0.05]) {
                    cylinder(r1 = RHole * 1.2, r2 = RHole * 0.8, h = RHole * 0.4, center = false); //entry countersink
                    if (HoleIsHex) {
                        hexagon_prism(height = LHole, radius = RHex); //hole for hex spacer
                    } else {
                        intersection() { //to put a flat on side of round shafts
                                cylinder(r = RHole, h = LHole, $fn = 20);
                                translate([-RHole, -RHole - HoleFlat, 0]) cube([2 * RHole, 2 * RHole, LHole]);
                            } //intersect
                    } //if
                    translate([0, 0, LHole - 0.01])
                    cylinder(h = RHole, r1 = RHole, r2 = 0.5); //put a cone on top of hole so no support needed
                }
            } //union
    } //diff

 

Комментариев нет Далее...