diff --git a/src/modules/info_ports/big_gear.stl b/src/modules/info_ports/big_gear.stl new file mode 100644 index 0000000..af5b919 Binary files /dev/null and b/src/modules/info_ports/big_gear.stl differ diff --git a/src/modules/info_ports/container.stl b/src/modules/info_ports/container.stl new file mode 100644 index 0000000..6dd49e7 Binary files /dev/null and b/src/modules/info_ports/container.stl differ diff --git a/src/modules/info_ports/container_bottom.stl b/src/modules/info_ports/container_bottom.stl new file mode 100644 index 0000000..afb48d4 Binary files /dev/null and b/src/modules/info_ports/container_bottom.stl differ diff --git a/src/modules/info_ports/cylinder.stl b/src/modules/info_ports/cylinder.stl new file mode 100644 index 0000000..38002fa Binary files /dev/null and b/src/modules/info_ports/cylinder.stl differ diff --git a/src/modules/info_ports/info_ports.scad b/src/modules/info_ports/info_ports.scad index 19445cf..3502b60 100644 --- a/src/modules/info_ports/info_ports.scad +++ b/src/modules/info_ports/info_ports.scad @@ -16,10 +16,8 @@ eps=0.0001; outer_radius=40; // outer radius of inner cylinder (the one with holes) wall_thickness=2; -use ; use ; -FUTABA_3F_SPLINE = [[5.92, 10, 1.1, 2.5], [25, 0.3, 0.7, 0.1]]; // spline of servo motor -gear_height=5; +gear_height=13; big_gear=30; small_gear=14; @@ -75,8 +73,8 @@ module rotating_cylinder() { module small_gear_cylinder() { spur_gear(modul=modul, tooth_number=small_gear, width=gear_height, bore=1, pressure_angle=20, helix_angle=0, optimized=false); - cylinder(r=5, h=gear_height+5); - mirror(v=[0, 0, 1]) cylinder(r=5, h=wall_thickness+distance_between_ports+2, $fn=6); + cylinder(r=5, h=gear_height+5, $fn=6); + mirror(v=[0, 0, 1]) cylinder(r=5-clearance/2, h=wall_thickness+distance_between_ports+2); } // http://sammy76.free.fr/conseils/electronique/arduino/SG90.php @@ -153,8 +151,12 @@ module container() { module extragear() { difference() { - spur_gear (modul=modul, tooth_number=big_gear, width=5, bore=1, pressure_angle=20, helix_angle=0, optimized=false); - servo_head(FUTABA_3F_SPLINE); + spur_gear (modul=modul, tooth_number=big_gear, width=gear_height, bore=0, pressure_angle=20, helix_angle=0, optimized=false); + union() { + translate([-10, -4, gear_height-4]) cube([20, 8, 100]); + translate([-6.325, 0, -1]) cylinder(r=0.5, h=100); + translate([6.325, 0, -1]) cylinder(r=0.5, h=100); + } } } @@ -231,12 +233,12 @@ translation_outer = -outer_radius - wall_thickness - clearance; -rotating_cylinder(); +/* rotating_cylinder(); */ -translate([125, 0, 0]) container(); +/* translate([125, 0, 0]) container(); */ translate([0, 130, 0]) extragear(); -translate([0, 170, 0]) small_gear_cylinder(); +/* translate([0, 170, 0]) small_gear_cylinder(); */ -translate([125 + translation_outer, 125, -wall_thickness]) container_bottom(); +/* translate([125 + translation_outer, 125, -wall_thickness]) container_bottom(); */ diff --git a/src/modules/info_ports/servo.scad b/src/modules/info_ports/servo.scad deleted file mode 100644 index c722ca4..0000000 --- a/src/modules/info_ports/servo.scad +++ /dev/null @@ -1,220 +0,0 @@ -/** - * Parametric servo arm generator for OpenScad - * Générateur de palonnier de servo pour OpenScad - * - * Copyright (c) 2012 Charles Rincheval. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Last update : - * https://github.com/hugokernel/OpenSCAD_ServoArms - * - * http://www.digitalspirit.org/ - */ - -$fn = 40; - -/** - * Clear between arm head and servo head - * With PLA material, use clear : 0.3, for ABS, use 0.2 - */ -SERVO_HEAD_CLEAR = 0.2; - -/** - * Head / Tooth parameters - * Futaba 3F Standard Spline - * http://www.servocity.com/html/futaba_servo_splines.html - * - * First array (head related) : - * 0. Head external diameter - * 1. Head heigth - * 2. Head thickness - * 3. Head screw diameter - * - * Second array (tooth related) : - * 0. Tooth count - * 1. Tooth height - * 2. Tooth length - * 3. Tooth width - */ -FUTABA_3F_SPLINE = [ - [5.92, 4, 1.1, 2.5], - [25, 0.3, 0.7, 0.1] -]; - -module servo_futaba_3f(length, count) { - servo_arm(FUTABA_3F_SPLINE, [length, count]); -} - -/** - * If you want to support a new servo, juste add a new spline definition array - * and a module named like servo_XXX_YYY where XXX is servo brand and YYY is the - * connection type (3f) or the servo type (s3003) - */ - -module servo_standard(length, count) { - servo_futaba_3f(length, count); -} - -/** - * Tooth - * - * |<-w->| - * |_____|___ - * / \ ^h - * _/ \_v - * |<--l-->| - * - * - tooth length (l) - * - tooth width (w) - * - tooth height (h) - * - height - * - */ -module servo_head_tooth(length, width, height, head_height) { - linear_extrude(height = head_height) { - polygon([[-length / 2, 0], [-width / 2, height], [width / 2, height], [length / 2,0]]); - } -} - -/** - * Servo head - */ -module servo_head(params, clear = SERVO_HEAD_CLEAR) { - - head = params[0]; - tooth = params[1]; - - head_diameter = head[0]; - head_height = head[1]; - //head_heigth - - tooth_count = tooth[0]; - tooth_height = tooth[1]; - tooth_length = tooth[2]; - tooth_width = tooth[3]; - - /* % cylinder(r = head_diameter / 2, h = head_height + 1); */ - - cylinder(r = head_diameter / 2 - tooth_height + 0.03 + clear, h = head_height); - - for (i = [0 : tooth_count]) { - rotate([0, 0, i * (360 / tooth_count)]) { - translate([0, head_diameter / 2 - tooth_height + clear, 0]) { - servo_head_tooth(tooth_length, tooth_width, tooth_height, head_height); - } - } - } -} - -/** - * Servo hold - * - Head / Tooth parameters - * - Arms params (length and count) - */ -module servo_arm(params, arms) { - - head = params[0]; - tooth = params[1]; - - head_diameter = head[0]; - head_height = head[1]; - head_thickness = head[2]; - head_screw_diameter = head[3]; - - tooth_length = tooth[2]; - tooth_width = tooth[3]; - - arm_length = arms[0]; - arm_count = arms[1]; - - /** - * Servo arm - * - length is from center to last hole - */ - module arm(tooth_length, tooth_width, reinforcement_height, head_height, hole_count = 1) { - arm_screw_diameter = 2; - - difference() { - union() { - cylinder(r = tooth_width / 2, h = head_height); - - linear_extrude(height = head_height) { - polygon([ - [-tooth_width / 2, 0], [-tooth_width / 3, tooth_length], - [tooth_width / 3, tooth_length], [tooth_width / 2, 0] - ]); - } - - translate([0, tooth_length, 0]) { - cylinder(r = tooth_width / 3, h = head_height); - } - - if (tooth_length >= 12) { - translate([-head_height / 2 + 2, head_diameter / 2 + head_thickness - 0.5, -4]) { - rotate([90, 0, 0]) { - rotate([0, -90, 0]) { - linear_extrude(height = head_height) { - polygon([ - [-tooth_length / 1.7, 4], [0, 4], [0, - reinforcement_height + 5], - [-2, - reinforcement_height + 5] - ]); - } - } - } - } - } - } - - // Hole - for (i = [0 : hole_count - 1]) { - //translate([0, length - (length / hole_count * i), -1]) { - translate([0, tooth_length - (4 * i), -1]) { - cylinder(r = arm_screw_diameter / 2, h = 10); - } - } - - cylinder(r = head_screw_diameter / 2, h = 10); - } - } - - difference() { - translate([0, 0, 0.1]) { - cylinder(r = head_diameter / 2 + head_thickness, h = head_height + 1); - } - - cylinder(r = head_screw_diameter / 2, h = 10); - - servo_head(params); - } - - arm_thickness = head_thickness; - - // Arm - translate([0, 0, head_height]) { - for (i = [0 : arm_count - 1]) { - rotate([0, 0, i * (360 / arm_count)]) { - arm(arm_length, head_diameter + arm_thickness * 2, head_height, 2); - } - } - } -} - -module demo() { - rotate([0, 180, 0]) - servo_standard(20, 4); -} - -demo(); diff --git a/src/modules/info_ports/small_gear_cylinder.stl b/src/modules/info_ports/small_gear_cylinder.stl new file mode 100644 index 0000000..b26887b Binary files /dev/null and b/src/modules/info_ports/small_gear_cylinder.stl differ