Interactive Preview & Customizer
3D STL viewer with browser-based OpenSCAD rendering on parameter changes.
Loading preview...
Resolution of curves
step 1
Maximum outer diameter (including scroll)
step 1
Overall thickness/height
step 1
Shell thickness
step 0.1
Width of the air nozzle (narrowest point)
step 0.1
Height of the air nozzle
step 0.1
Distance from nozzle to splitting edge
step 0.1
Number of impeller blades
step 1
WASM compiler loads on first parameter change.
Prompt
Design a turbocharger that whistle when you blow in the vent, you choose the measuraments make It small
OpenSCAD Code
/* [Global] */
// Resolution of curves
$fn = 80; // [40:5:150]
/* [Dimensions] */
// Maximum outer diameter (including scroll)
total_diameter = 45; // [30:1:60]
// Overall thickness/height
total_height = 18; // [12:1:25]
// Shell thickness
wall_thickness = 1.6; // [1.2:0.1:2.4]
/* [Whistle Tuning] */
// Width of the air nozzle (narrowest point)
nozzle_width = 3.5; // [2.5:0.1:5.0]
// Height of the air nozzle
nozzle_height = 4.0; // [3.0:0.1:6.0]
// Distance from nozzle to splitting edge
fipple_gap = 4.0; // [2.0:0.1:6.0]
/* [Aesthetics] */
// Number of impeller blades
blade_count = 7; // [5:1:12]
/* [Hidden] */
scroll_radius = total_diameter / 2.4;
chamber_r = scroll_radius - wall_thickness;
module impeller() {
intersection() {
cylinder(h = total_height/2, r = chamber_r * 0.8);
union() {
cylinder(h = total_height/2, r = 2.5); // Center hub
for(i = [0 : blade_count-1]) {
rotate([0, 0, i * (360/blade_count)])
translate([0, -0.5, 0])
rotate([0, -25, 0]) // Angled for look
cube([chamber_r * 0.8, 1, total_height/2]);
}
}
}
}
module turbo_whistle() {
difference() {
union() {
// Main Volute Scroll
for (a = [0 : 10 : 270]) {
hull() {
rotate([0, 0, a])
translate([a/360 * 5, 0, 0])
cylinder(h = total_height, r = (scroll_radius * 0.7) + (a/360 * (scroll_radius * 0.3)), center = true);
rotate([0, 0, a + 10])
translate([(a+10)/360 * 5, 0, 0])
cylinder(h = total_height, r = (scroll_radius * 0.7) + ((a+10)/360 * (scroll_radius * 0.3)), center = true);
}
}
// Tangential Intake (The mouthpiece)
translate([scroll_radius, -scroll_radius * 1.2, 0])
rotate([0, 0, 5])
cube([14, scroll_radius * 1.5, total_height], center = true);
// Decorative Intake Ring
translate([0, 0, total_height/2])
cylinder(h = 3, r1 = scroll_radius*0.8, r2 = scroll_radius*0.7);
}
// --- INTERNAL CUTOUTS ---
// 1. Resonance Chamber
cylinder(h = total_height - (wall_thickness*2), r = chamber_r, center = true);
// 2. Venturi Mouthpiece & Nozzle
// Tapers from wide to narrow
translate([scroll_radius, -scroll_radius * 1.1, 0])
rotate([0, 0, 5])
hull() {
// Wide end (mouth)
translate([0, -scroll_radius*0.5, 0])
cube([10, 1, total_height - (wall_thickness*2)], center = true);
// Narrow end (nozzle)
translate([0, scroll_radius*0.5, 0])
cube([nozzle_width, 1, nozzle_height], center = true);
}
// 3. Whistle Window (Air Exit)
translate([scroll_radius, -fipple_gap, total_height/2 - wall_thickness])
cube([nozzle_width * 2, fipple_gap * 1.5, wall_thickness * 4], center = true);
// 4. Fipple (The Sharp Edge)
// Angled at 45 degrees for printability and sound
translate([scroll_radius, 0, total_height/2 - wall_thickness])
rotate([-45, 0, 0])
cube([nozzle_width * 2, 5, 5], center = true);
// 5. Center Intake Bore (Visible Impeller Hole)
translate([0, 0, wall_thickness])
cylinder(h = total_height, r = chamber_r * 0.85);
// 6. Chamfered top edge for 45 deg printability
translate([0,0,total_height/2])
difference() {
cylinder(h=4, r=total_diameter);
cylinder(h=5, r1=scroll_radius*0.8, r2=scroll_radius*1.2, center=true);
}
}
// Add the decorative impeller inside the intake
translate([0, 0, -total_height/2 + wall_thickness])
impeller();
}
// Ensure the model is sitting on the ground
translate([0, 0, total_height/2])
turbo_whistle();