110 lines
2.2 KiB
OpenSCAD
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
|
||
|
}
|
||
|
}
|
||
|
|