1
0
Fork 0
polymer-strain-amp/sensors/sensor_40mm_x_100mm_x_0.1mm...

123 lines
2.7 KiB
OpenSCAD

// Flex Sensor - units in cm
width=40;
min_width=7.5;
height=0.125;
length=100;
gap=2;
struts=0;
strut_height=height;
endcap_run_ratio=0.5; /* How large are joined sections compared to run
width */
term_diameter = 1.628;
term_side = sqrt(term_diameter*term_diameter/2);
term_distance = 5;
term_offset = 20;
nozzle_width = 0.4;
sewable = 0;
$fn = 100;
// DNE
leg_width = (width - gap) / 2;
gap_span = leg_width*2+gap;
module cap_model () {
difference () {
circle(width / 2);
translate([-width / 2, -width])
square(width);
}
}
module Cap () {
translate([width / 2, length - width / 2, 0])
difference () {
linear_extrude (height)
cap_model();
translate([0, 0, 0.2])
difference () {
linear_extrude (height)
offset(r=-0.5)
cap_model();
linear_extrude (height)
offset(r=-1)
cap_model();
}
}
}
module Leg() {
term1_x = abs(width - term_distance) / 2;
t_total_width = min_width;
difference () {
union () {
linear_extrude(height)
polygon([[0, length - width / 2], [leg_width, length - width / 2],
[term1_x + term_side / 2 + gap/2, 0],
[term1_x + term_side / 2 + gap/2 - min_width, 0]]);
translate([term1_x + term_side / 2 - min_width + gap/2, 0, 0])
cube([min_width, 2, term_side/2]);
linear_extrude(term_side/2)
polygon([[term1_x - term_side/2, -term_side * 4], [term1_x + term_side / 2 + gap/2, 0],
[term1_x + term_side / 2 +gap / 2 - min_width, 0]]);
}
translate([0,0, 0.2])
difference () {
linear_extrude (height)
offset(r=-0.5)
polygon([[0, length - width / 2], [leg_width, length - width / 2],
[term1_x + term_side / 2 + gap/2, 0],
[term1_x + term_side / 2 + gap/2 - min_width, 0]]);
linear_extrude (height)
offset(r=-1)
polygon([[0, length - width / 2], [leg_width, length - width / 2],
[term1_x + term_side / 2 + gap/2, 0],
[term1_x + term_side / 2 + gap/2 - min_width, 0]]);
}
}
}
module Terminal() {
translate([-term_side/2, 0, 0])
cube([term_side, term_offset, term_side]);
}
module Terminals() {
Terminal();
translate([term_distance, 0, 0])
Terminal();
}
union() {
// Legs
union () {
Leg();
translate([width, 0, 0])
mirror()
Leg();
}
// Terminals
translate([-(term_distance-width)/2, -term_offset, 0])
Terminals();
Cap();
// End Support
*translate([0, length-leg_width/4, 0])
cube([gap_span, leg_width/4, height*1.5]);
// Edge Supports
*cube([nozzle_width, length, height * 1.5]);
*translate([width - nozzle_width, 0, 0])
cube([nozzle_width, length, height * 1.5]);
}