// roomba dock mount // by zeus - zeus@ctdo.de - CC-BY-NC-4.0 // -> https://www.thingiverse.com/zeus // -> https://github.com/zeus86 // 2014-09-19 // some base measures of the original charger: // overall width: 132mm // effective upper width: 118.5mm // effective upper depth: 44mm // offset to wall: ~8mm $fn=25; measured_w=118.5; measured_d=44; bracket_h=10; bracket_gap=50; charger_d=measured_d; wall_offset=5; material_t=3; bracket_spacing=1.5; hole_dia=4; bighole_dia=10; charger_width=measured_w+bracket_spacing; dock_width=charger_width+material_t*2; helper_w=measured_w-charger_d+bracket_spacing; //mounting plate mnt_t=material_t*2; mnt_w=60; mnt_h=30; //------------------------------------------------------------------------- module dock_mount_side(){ cube([helper_w,material_t,bracket_h],center=true); translate([0,wall_offset/2+material_t/2,0]){ cube([mnt_w,wall_offset,bracket_h],center=true); } } module hole(){ translate([-4*hole_dia,0,1*hole_dia]){ rotate([90,180,0]){ cylinder(h=mnt_t+0.2,r=hole_dia/2); translate([0,hole_dia*2,0]){ cylinder(h=mnt_t+0.2,r=bighole_dia/2); } translate([0,hole_dia,mnt_t/2+0.1]){ cube([hole_dia,hole_dia*2,mnt_t+0.2],center=true); } } } } module holes(){ for(x=[0:1]) translate([x*(hole_dia * 8), mnt_t/2+0.1, 5]) hole(); } module mount_plate(){ difference(){ cube([mnt_w,mnt_t,mnt_h],center=true); holes(center=true); } } module gap_side(){ difference(){ cube([helper_w,material_t,bracket_h],center=true); cube([bracket_gap,material_t+1,bracket_h+1],center=true); } } module clamp(){ difference(){ cylinder(h=bracket_h,r=charger_d/2+material_t,center=true); union(){ cylinder(h=bracket_h+1,r=charger_d/2,center=true); translate([0,-charger_d/2-material_t,-bracket_h/2-0.5]){ cube([charger_d/2+material_t,charger_d+material_t,bracket_h+1]); } } } } dock_mount_side(); translate([0,wall_offset+material_t,mnt_h/2-bracket_h/2]){ mount_plate(); } translate([0,-charger_d-material_t,0]){ gap_side(); } translate([-helper_w/2,-charger_d/2-material_t/2,0]){ clamp(); //left } translate([helper_w/2,-charger_d/2-material_t/2,0]){ mirror([1,0,0]){ clamp(); //right } }