Printed version of info port module

This commit is contained in:
redfast00 2022-01-12 21:43:54 +01:00
parent fee25c654f
commit 97b9b233b7
No known key found for this signature in database
GPG key ID: 5946E0E34FD0553C
7 changed files with 13 additions and 231 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -16,10 +16,8 @@ eps=0.0001;
outer_radius=40; // outer radius of inner cylinder (the one with holes) outer_radius=40; // outer radius of inner cylinder (the one with holes)
wall_thickness=2; wall_thickness=2;
use <servo.scad>;
use <gears.scad>; use <gears.scad>;
FUTABA_3F_SPLINE = [[5.92, 10, 1.1, 2.5], [25, 0.3, 0.7, 0.1]]; // spline of servo motor gear_height=13;
gear_height=5;
big_gear=30; big_gear=30;
small_gear=14; small_gear=14;
@ -75,8 +73,8 @@ module rotating_cylinder() {
module small_gear_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); 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); cylinder(r=5, h=gear_height+5, $fn=6);
mirror(v=[0, 0, 1]) cylinder(r=5, h=wall_thickness+distance_between_ports+2, $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 // http://sammy76.free.fr/conseils/electronique/arduino/SG90.php
@ -153,8 +151,12 @@ module container() {
module extragear() { module extragear() {
difference() { difference() {
spur_gear (modul=modul, tooth_number=big_gear, width=5, bore=1, pressure_angle=20, helix_angle=0, optimized=false); spur_gear (modul=modul, tooth_number=big_gear, width=gear_height, bore=0, pressure_angle=20, helix_angle=0, optimized=false);
servo_head(FUTABA_3F_SPLINE); 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, 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(); */

View file

@ -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();

Binary file not shown.