3d-stuff/openscad/own/roomba clamp/roomba_clamp.scad

110 lines
2.2 KiB
OpenSCAD

// 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
}
}