$fn = 64; /* --- PARAMETERS --- */ // Main dimensions platform_diameter = 160; base_diameter = 150; // Thicknesses and heights plate_thickness = 4; base_thickness = 8; internal_height = 15; // Height of the rotation mechanism // Axle dimensions axle_base_dia = 36; axle_top_dia = 16; clearance = 0.6; // Tolerance for smooth rotation /* --- RENDER --- */ // Positioned side-by-side in optimal 3D printing orientation (no supports needed) translate([0, platform_diameter/2 + 5, 0]) turntable_platform(); translate([0, -base_diameter/2 - 5, 0]) turntable_base(); /* --- MODULES --- */ module turntable_base() { // 1. Main Base Plate difference() { cylinder(d=base_diameter, h=base_thickness); // Hollow bottom to save material and prevent warping translate([0, 0, -1]) cylinder(d=base_diameter - 20, h=base_thickness - 2); // Chamfer bottom edge (elephant foot compensation & aesthetics) translate([0, 0, -0.1]) difference() { cylinder(d=base_diameter + 1, h=2.1); cylinder(d1=base_diameter - 4, d2=base_diameter + 1, h=2.1); } } // 2. Tapered Glide Ring (Low friction bearing surface) translate([0, 0, base_thickness]) rotate_extrude() translate([(base_diameter - 12)/2, 0, 0]) polygon([ [-1.5, 0], [1.5, 0], [0.5, internal_height], [-0.5, internal_height] ]); // 3. Central Conical Axle (Self-centering pivot) translate([0, 0, base_thickness]) cylinder(d1=axle_base_dia, d2=axle_top_dia, h=internal_height); } module turntable_platform() { // Calculate exact heights to ensure perfect assembly clearances boss_height = internal_height - 1; skirt_height = internal_height + base_thickness - 2; // Calculate conical hole diameters to maintain parallel clearance hole_d1 = axle_top_dia + clearance*2; hole_d2 = axle_top_dia + (axle_base_dia - axle_top_dia) * (boss_height / internal_height) + clearance*2; // 1. Main Top Plate (Prints upside down, flat on the bed) difference() { cylinder(d=platform_diameter, h=plate_thickness); // Chamfer the top edge (which is on the bottom during printing) translate([0, 0, -0.1]) difference() { cylinder(d=platform_diameter + 1, h=2.1); cylinder(d1=platform_diameter - 4, d2=platform_diameter + 1, h=2.1); } } // 2. Outer Skirt (Hides the mechanism, prevents dust, provides grip edge) translate([0, 0, plate_thickness]) difference() { cylinder(d=platform_diameter, h=skirt_height); translate([0, 0, -1]) cylinder(d=platform_diameter - 6, h=skirt_height + 2); } // 3. Central Boss (Receives the axle) translate([0, 0, plate_thickness]) difference() { // Boss outer body cylinder(d1=axle_top_dia + 16, d2=axle_base_dia + 16, h=boss_height); // Conical hole for axle (Expands upwards in print orientation, safe overhang) translate([0, 0, -0.1]) cylinder(d1=hole_d1, d2=hole_d2, h=boss_height + 0.2); } }