Added SBR rails
This change adds - SBR rails. For now only SBR16 - The bearing block that goes with it (SBR16UU) - An 'open' linear bearing (LM16UUOP) that is used by the bearing block - A 28mm circlip that has a wider opening than then normal circlip. (circlip_28iw)
113
readme.md
@@ -26,29 +26,29 @@ A list of changes classified as breaking, additions or fixes is maintained in [C
|
||||
<tr><td> <a href = "#BLDC_motors">BLDC_motors</a> </td><td> <a href = "#Jack">Jack</a> </td><td> <a href = "#Ring_terminals">Ring_terminals</a> </td><td> <a href = "#Cable_clip">Cable_clip</a> </td><td> <a href = "#Catenary">Catenary</a> </td><td> <a href = "#Global">Global</a> </td></tr>
|
||||
<tr><td> <a href = "#Ball_bearings">Ball_bearings</a> </td><td> <a href = "#LDRs">LDRs</a> </td><td> <a href = "#Rockers">Rockers</a> </td><td> <a href = "#Cable_grommets">Cable_grommets</a> </td><td> <a href = "#Core_xy">Core_xy</a> </td><td> <a href = "#Polyholes">Polyholes</a> </td></tr>
|
||||
<tr><td> <a href = "#Batteries">Batteries</a> </td><td> <a href = "#LED_meters">LED_meters</a> </td><td> <a href = "#Rod">Rod</a> </td><td> <a href = "#Camera_housing">Camera_housing</a> </td><td> <a href = "#Dogbones">Dogbones</a> </td><td> <a href = "#Rounded_rectangle">Rounded_rectangle</a> </td></tr>
|
||||
<tr><td> <a href = "#Bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SMDs">SMDs</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Box_sections">Box_sections</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Servo_motors">Servo_motors</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#Knob">Knob</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#LED_bezel">LED_bezel</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Terminals">Terminals</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fastons">Fastons</a> </td><td> <a href = "#Photo_interrupters">Photo_interrupters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Potentiometers">Potentiometers</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#LEDs">LEDs</a> </td><td> <a href = "#SBR_rails">SBR_rails</a> </td><td> <a href = "#Carriers">Carriers</a> </td><td> <a href = "#Fillet">Fillet</a> </td><td> <a href = "#Sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#Belts">Belts</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SK_brackets">SK_brackets</a> </td><td> <a href = "#Corner_block">Corner_block</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#SMDs">SMDs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Box_sections">Box_sections</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Servo_motors">Servo_motors</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Knob">Knob</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#LED_bezel">LED_bezel</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Terminals">Terminals</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fastons">Fastons</a> </td><td> <a href = "#Photo_interrupters">Photo_interrupters</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Potentiometers">Potentiometers</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
@@ -263,6 +263,14 @@ SCSnUU and SCSnLUU bearing blocks
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `sbr_bearing(type)` | Linear bearing used |
|
||||
| `sbr_circlip(type)` | Circlip used |
|
||||
| `sbr_hole_offset(type)` | Offset of bearing hole from base of *rail* |
|
||||
| `sbr_screw(type)` | Screw type |
|
||||
| `sbr_screw_separation_x(type)` | Screw separation in X direction |
|
||||
| `sbr_screw_separation_z(type)` | Screw separation in Z direction |
|
||||
| `sbr_side_height(type)` | Height of side above *rail* |
|
||||
| `sbr_spacer(type)` | Spacer used in long bearings |
|
||||
| `scs_bearing(type)` | Linear bearing used |
|
||||
| `scs_block_center_height(type)` | Height of the center of the block |
|
||||
| `scs_block_side_height(type)` | Height of the side of the block, this determines the minimum screw length |
|
||||
@@ -276,11 +284,16 @@ SCSnUU and SCSnLUU bearing blocks
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `sbr_size(type)` | Size of SBR bracket bounding block |
|
||||
| `scs_size(type)` | Size of scs bracket bounding block |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `right_trapezoid(base, top, height, h = 0, center = true)` | A right angled trapezoid with the 90° corner at the origin. 3D when `h` is nonzero, otherwise 2D |
|
||||
| `sbr_bearing_block(type)` | Draw the specified SBR bearing block |
|
||||
| `sbr_bearing_block_assembly(type, part_thickness, screw_type)` | Assembly with screws in place |
|
||||
| `sbr_bearing_block_hole_positions(type)` | Place children at hole positions |
|
||||
| `scs_bearing_block(type)` | Draw the specified SCS bearing block |
|
||||
| `scs_bearing_block_assembly(type, part_thickness, screw_type, nut_type)` | Assembly with screws and nuts in place |
|
||||
| `scs_bearing_block_hole_positions(type)` | Place children at hole positions |
|
||||
@@ -292,6 +305,7 @@ SCSnUU and SCSnLUU bearing blocks
|
||||
| ---:|:--- |:---|
|
||||
| 12 | `nut(M4_nut)` | Nut M4 x 3.2mm |
|
||||
| 24 | `nut(M5_nut)` | Nut M5 x 4mm |
|
||||
| 1 | `sbr_bearing_block(SBR16UU)` | SBR16UU bearing block |
|
||||
| 1 | `scs_bearing_block(SCS10LUU)` | SCS10LUU bearing block |
|
||||
| 1 | `scs_bearing_block(SCS10UU)` | SCS10UU bearing block |
|
||||
| 1 | `scs_bearing_block(SCS12LUU)` | SCS12LUU bearing block |
|
||||
@@ -303,6 +317,7 @@ SCSnUU and SCSnLUU bearing blocks
|
||||
| 1 | `scs_bearing_block(SCS8UU)` | SCS8UU bearing block |
|
||||
| 4 | `screw(M4_cap_screw, 25)` | Screw M4 cap x 25mm |
|
||||
| 8 | `screw(M4_cap_screw, 30)` | Screw M4 cap x 30mm |
|
||||
| 4 | `screw(M5_cap_screw, 16)` | Screw M5 cap x 16mm |
|
||||
| 16 | `screw(M5_cap_screw, 35)` | Screw M5 cap x 35mm |
|
||||
| 8 | `screw(M5_cap_screw, 45)` | Screw M5 cap x 45mm |
|
||||
| 12 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
@@ -741,6 +756,11 @@ Circlips aka tapered retaining rings.
|
||||
| `circlip_d5(type)` | Plier hole diameter |
|
||||
| `circlip_thickness(type)` | Thickness |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `circlip_closed_angle(type)` | Closed angle |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
@@ -756,6 +776,7 @@ Circlips aka tapered retaining rings.
|
||||
| 3 | `circlip(circlip_19i)` | Circlip internal 19mm |
|
||||
| 3 | `circlip(circlip_21i)` | Circlip internal 21mm |
|
||||
| 3 | `circlip(circlip_28i)` | Circlip internal 28mm |
|
||||
| 3 | `circlip(circlip_28iw)` | Circlip internal 28mm (wide opening) |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1928,6 +1949,8 @@ LMnUU linear bearings.
|
||||
| `bearing_groove_spacing(type)` | Spacing between grooves, outer to outer, ie includes the grooves themselves |
|
||||
| `bearing_length(type)` | Total length |
|
||||
| `bearing_rod_dia(type)` | Internal diameter |
|
||||
| `open_bearing_theta(type)` | For open bearings, the angle of the opening |
|
||||
| `open_bearing_width(type)` | For open bearings, the width of the opening at the rod |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
@@ -1950,6 +1973,7 @@ LMnUU linear bearings.
|
||||
| 1 | `linear_bearing(LM12UU)` | Linear bearing LM12UU |
|
||||
| 1 | `linear_bearing(LM16LUU)` | Linear bearing LM16LUU |
|
||||
| 1 | `linear_bearing(LM16UU)` | Linear bearing LM16UU |
|
||||
| 1 | `linear_bearing(LM16UUOP)` | Linear bearing LM16UUOP |
|
||||
| 1 | `linear_bearing(LM3LUU)` | Linear bearing LM3LUU |
|
||||
| 1 | `linear_bearing(LM3UU)` | Linear bearing LM3UU |
|
||||
| 1 | `linear_bearing(LM4LUU)` | Linear bearing LM4LUU |
|
||||
@@ -3484,6 +3508,49 @@ These items are symmetrical, so by default the origin is in the centre but it ca
|
||||
| 1 | `studding(8, 80)` | Threaded rod M8 x 80mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="SBR_rails"></a>
|
||||
## SBR_rails
|
||||
SBR rails
|
||||
|
||||
The rails are drawn from the center of the rod.
|
||||
`sbr_rail_center_height(type)` can be used to determine where the bottom of the rail is.
|
||||
|
||||
[vitamins/sbr_rails.scad](vitamins/sbr_rails.scad) Object definitions.
|
||||
|
||||
[vitamins/sbr_rail.scad](vitamins/sbr_rail.scad) Implementation.
|
||||
|
||||
[tests/SBR_rails.scad](tests/SBR_rails.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `sbr_rail_base_width(type)` | Width of the rail base |
|
||||
| `sbr_rail_carriage(type)` | Carriage to use with this rail |
|
||||
| `sbr_rail_center_height(type)` | Height of the center above the bottom of the rail |
|
||||
| `sbr_rail_diameter(type)` | Diameter of the rod |
|
||||
| `sbr_rail_screw(type)` | Screw to fasten this rail |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `sbr_rail(type , l)` | Draw an SBR rail |
|
||||
| `sbr_screw_locations(type, l)` | Linear locations of screws |
|
||||
| `sbr_screw_positions(type, l)` | Screw positions |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `sbr_rail(16, 200)` | SBR16 rail, length 200mm |
|
||||
| 1 | `sbr_bearing_block(SBR16UU)` | SBR16UU bearing block |
|
||||
| 4 | `screw(M5_cap_screw, 12)` | Screw M5 cap x 12mm |
|
||||
| 4 | `screw(M5_cap_screw, 18)` | Screw M5 cap x 18mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
|
46
tests/SBR_rails.scad
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2018
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib 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 General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/sbr_rails.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
use <../vitamins/bearing_block.scad>
|
||||
|
||||
length = 200;
|
||||
sheet = 3;
|
||||
|
||||
module sbr_rails()
|
||||
layout([for(r = sbr_rails) sbr_rail_base_width(r)], 10)
|
||||
rotate([90, 180,0]) {
|
||||
rail = sbr_rails[$i];
|
||||
sbr_rail(rail, length);
|
||||
carriage = sbr_rail_carriage(rail);
|
||||
screw = sbr_rail_screw(rail);
|
||||
|
||||
sbr_bearing_block_assembly(carriage, sheet);
|
||||
|
||||
sbr_screw_positions(rail, length)
|
||||
explode(20)
|
||||
rotate([90,0,0])
|
||||
screw(sbr_rail_screw(rail), 18);
|
||||
|
||||
}
|
||||
|
||||
if($preview)
|
||||
sbr_rails();
|
@@ -31,5 +31,16 @@ module scs_bearing_blocks()
|
||||
scs_bearing_block_assembly(scs_bearing_blocks_long[$i - 1], part_thickness);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
module sbr_bearing_blocks()
|
||||
layout([for(s = sbr_bearing_blocks) sbr_size(s).x], 10) {
|
||||
part_thickness = 5;
|
||||
sbr_bearing_block_assembly(sbr_bearing_blocks[$i], part_thickness);
|
||||
}
|
||||
|
||||
module bearing_blocks()
|
||||
scs_bearing_blocks();
|
||||
translate([190,120,0])
|
||||
sbr_bearing_blocks();
|
||||
|
||||
if($preview)
|
||||
bearing_blocks();
|
||||
|
@@ -28,6 +28,9 @@ module linear_bearings()
|
||||
translate([0, 30])
|
||||
linear_bearing(long_linear_bearings[$i]);
|
||||
}
|
||||
layout([for(b = open_linear_bearings) 2 * bearing_radius(b)])
|
||||
translate([105, 60])
|
||||
linear_bearing(open_linear_bearings[$i]);
|
||||
|
||||
if($preview)
|
||||
linear_bearings();
|
||||
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 77 KiB |
BIN
tests/png/sbr_rails.png
Normal file
After Width: | Height: | Size: 50 KiB |
@@ -41,6 +41,17 @@ function scs_circlip(type) = type[15]; //! Circlip used
|
||||
function scs_spacer(type) = type[16]; //! Spacer used in long bearings
|
||||
|
||||
|
||||
function sbr_size(type) = [type[4],type[6],type[5]]; //! Size of SBR bracket bounding block
|
||||
function sbr_hole_offset(type) = type[2]; //! Offset of bearing hole from base of *rail*
|
||||
function sbr_side_height(type) = type[3]; //! Height of side above *rail*
|
||||
function sbr_screw(type) = type[10]; //! Screw type
|
||||
function sbr_screw_separation_x(type) = type[7]; //! Screw separation in X direction
|
||||
function sbr_screw_separation_z(type) = type[8]; //! Screw separation in Z direction
|
||||
function sbr_bearing(type) = type[12]; //! Linear bearing used
|
||||
function sbr_circlip(type) = type[13]; //! Circlip used
|
||||
function sbr_spacer(type) = type[14]; //! Spacer used in long bearings
|
||||
|
||||
|
||||
sks_bearing_block_colour = grey(90);
|
||||
|
||||
module scs_bearing_block(type) { //! Draw the specified SCS bearing block
|
||||
@@ -63,11 +74,6 @@ module scs_bearing_block(type) { //! Draw the specified SCS bearing block
|
||||
bearing = scs_bearing(type);
|
||||
clip = scs_circlip(type);
|
||||
|
||||
module right_trapezoid(base, top, height, h = 0, center = true) {//! A right angled trapezoid with the 90° corner at the origin. 3D when `h` is nonzero, otherwise 2D
|
||||
extrude_if(h, center = center)
|
||||
polygon(points = [ [0,0], [base, 0], [top, height], [0, height] ]);
|
||||
}
|
||||
|
||||
boltHoleRadius = screw_clearance_radius(S1);
|
||||
footHeight = min(0.75, (G - bearing_dia(bearing) - 1.5) / 2); // estimate, not specified on drawings
|
||||
|
||||
@@ -169,3 +175,140 @@ module scs_bearing_block_assembly(type, part_thickness, screw_type, nut_type) {
|
||||
washer(washer_type);
|
||||
}
|
||||
}
|
||||
|
||||
/* SBR bearing blocks */
|
||||
|
||||
module sbr_bearing_block(type) { //! Draw the specified SBR bearing block
|
||||
vitamin(str("sbr_bearing_block(", type[0], "): ", type[0], " bearing block"));
|
||||
|
||||
T = type[1];
|
||||
h = sbr_hole_offset(type);
|
||||
H = sbr_side_height(type);
|
||||
|
||||
W = sbr_size(type)[0];
|
||||
G = sbr_size(type)[1];
|
||||
M = sbr_size(type)[2];
|
||||
J = sbr_screw_separation_x(type);
|
||||
K = sbr_screw_separation_z(type);
|
||||
S1 = sbr_screw(type);
|
||||
I = type[11]; // screw length
|
||||
|
||||
S2 = type[15];
|
||||
S2L = type[16];
|
||||
|
||||
bearing = sbr_bearing(type);
|
||||
clip = sbr_circlip(type);
|
||||
chamfer = 1.5;
|
||||
A = type[9]; // size of chamfered overhang - vertical
|
||||
Ah = A + chamfer * 2; // size of chamfered overhand - horizontal - not given in drawings
|
||||
|
||||
width = W - (2 * chamfer);
|
||||
height = G - chamfer;
|
||||
|
||||
boltHoleRadius = screw_radius(S1);
|
||||
setScrewRadius = screw_radius(S2);
|
||||
|
||||
color(sks_bearing_block_colour) {
|
||||
difference() {
|
||||
linear_extrude(M, center = true, convexity=2) {
|
||||
cutoutheight = 15; // chosen to fit SBR16, may not work with others
|
||||
bearingRadius = bearing_dia(bearing) / 2;
|
||||
bearingTheta = open_bearing_theta(bearing);
|
||||
bearingOpening = open_bearing_width(bearing);
|
||||
bearingOpeningBig = bearingOpening + (tan(bearingTheta/2) * cutoutheight);
|
||||
// center section with bearing hole
|
||||
difference() {
|
||||
translate([-width/2, -(H-h - chamfer)])
|
||||
square([width, height]);
|
||||
circle(r = bearingRadius);
|
||||
for(m = [0, 1])
|
||||
mirror([m, 0, 0])
|
||||
translate([0, h - (cutoutheight/2) - H + G + 0.1])
|
||||
right_trapezoid(bearingOpening/2, bearingOpeningBig/2, cutoutheight/2);
|
||||
}
|
||||
// add the sides
|
||||
for(m = [0, 1])
|
||||
mirror([m, 0, 0]) {
|
||||
translate([-(W/2) + chamfer, -((H-h))]) {
|
||||
difference() {
|
||||
union() {
|
||||
right_trapezoid(Ah - chamfer,Ah,chamfer);
|
||||
rotate([0,0,90])
|
||||
right_trapezoid(A + chamfer,A,chamfer);
|
||||
}
|
||||
translate([-(chamfer +0.1), -0.1,0])
|
||||
right_trapezoid(chamfer/2 + 0.2, 0, chamfer/2+ 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// bolt holes
|
||||
for(x = [-J / 2, J / 2])
|
||||
translate([x, h - H + I/2 - 0.1, 0])
|
||||
rotate([90, 0, 0])
|
||||
for (y = [-K / 2, K / 2])
|
||||
translate([0, y])
|
||||
cylinder(r = boltHoleRadius, h=I + 0.1, center=true);
|
||||
// set screw holes
|
||||
translate([-width/2 + S2L/2 - 0.1,0,0])
|
||||
rotate([0,90,0])
|
||||
cylinder(r = setScrewRadius, h=S2L, center=true);
|
||||
translate([0,-(H-h) + chamfer + S2L/2 -0.1,0])
|
||||
rotate([0,90,90])
|
||||
cylinder(r = setScrewRadius, h=S2L, center=true);
|
||||
|
||||
}
|
||||
}
|
||||
not_on_bom() no_explode() {
|
||||
spacer = sbr_spacer(type);
|
||||
for(end = spacer ? [-1, 1] : 0)
|
||||
translate_z(end * (bearing_length(bearing) + spacer) / 2)
|
||||
rotate([0,0,-90])
|
||||
linear_bearing(bearing);
|
||||
|
||||
for(end = [-1, 1])
|
||||
translate_z(end * ((spacer ? 2 * bearing_length(bearing) + spacer : bearing_length(bearing)) + circlip_thickness(clip)) / 2)
|
||||
rotate(180)
|
||||
internal_circlip(clip);
|
||||
|
||||
translate([-width/2 - 0.1,0,0])
|
||||
rotate([0,90,180])
|
||||
screw(S2, S2L);
|
||||
translate([0,-(H-h) + chamfer - 0.1,0])
|
||||
rotate([0,90,270])
|
||||
screw(S2, S2L);
|
||||
}
|
||||
}
|
||||
|
||||
module sbr_bearing_block_hole_positions(type) { //! Place children at hole positions
|
||||
y = sbr_hole_offset(type) - sbr_side_height(type);
|
||||
screw_separation_x = sbr_screw_separation_x(type);
|
||||
screw_separation_z = sbr_screw_separation_z(type);
|
||||
|
||||
for(x = [-screw_separation_x, screw_separation_x], z = [-screw_separation_z, screw_separation_z])
|
||||
translate([x / 2, y, z / 2])
|
||||
rotate([-90, 0, 0])
|
||||
children();
|
||||
}
|
||||
|
||||
module sbr_bearing_block_assembly(type, part_thickness, screw_type) { //! Assembly with screws in place
|
||||
|
||||
I = type[11]; // screw length
|
||||
sbr_bearing_block(type);
|
||||
screw_type = is_undef(screw_type) ? sbr_screw(type) : screw_type;
|
||||
G = sbr_size(type)[1];
|
||||
|
||||
screw_length = screw_shorter_than(I + part_thickness);
|
||||
|
||||
translate([0,-part_thickness,0])
|
||||
sbr_bearing_block_hole_positions(type)
|
||||
rotate([0,180,0])
|
||||
screw(screw_type, screw_length);
|
||||
}
|
||||
|
||||
/* Generic bearing block functions */
|
||||
|
||||
module right_trapezoid(base, top, height, h = 0, center = true) {//! A right angled trapezoid with the 90° corner at the origin. 3D when `h` is nonzero, otherwise 2D
|
||||
extrude_if(h, center = center)
|
||||
polygon(points = [ [0,0], [base, 0], [top, height], [0, height] ]);
|
||||
}
|
||||
|
@@ -36,8 +36,12 @@ SCS10LUU = ["SCS10LUU", 8, 13, 20, 40, 68, 26, 21, 28, 45, 6, M5_cap_sc
|
||||
SCS12LUU = ["SCS12LUU", 8, 15, 21, 42, 70, 28, 24, 30.5, 50, 5.75, M5_cap_screw, 4.3, 12, LM12UU, circlip_21i, 4];
|
||||
SCS16LUU = ["SCS16LUU", 9, 19, 25, 50, 85, 38.5, 32.5, 36, 60, 7, M5_cap_screw, 4.3, 12, LM16UU, circlip_28i, 4];
|
||||
|
||||
// T h H W M G J K A S1 I LB S2 S2L
|
||||
SBR16UU = ["SBR16UU", 16, 25, 45, 45, 45, 33, 32, 30, 9, M5_cap_screw, 12, LM16UUOP, circlip_28iw, 0, M5_grub_screw, 5];
|
||||
|
||||
scs_bearing_blocks = [SCS6UU, SCS8UU, SCS10UU, SCS12UU, SCS16UU];
|
||||
scs_bearing_blocks_long = [SCS8LUU, SCS10LUU, SCS12LUU, SCS16LUU];
|
||||
|
||||
sbr_bearing_blocks = [SBR16UU];
|
||||
|
||||
use <bearing_block.scad>
|
||||
|
@@ -32,14 +32,14 @@ function circlip_thickness(type) = type[4]; //! Thickness
|
||||
function circlip_a(type) = type[5]; //! Size of the lugs
|
||||
function circlip_b(type) = type[6]; //! Widest part of the taper
|
||||
function circlip_d5(type) = type[7]; //! Plier hole diameter
|
||||
function circlip_closed_angle(type) = is_undef(type[8]) ? 25 : type[8]; //! Closed angle
|
||||
|
||||
circlip_colour = grey(20);
|
||||
closed_angle = 25;
|
||||
|
||||
module internal_circlip(type, open = 0) { //! Draw specified internal circlip, open = 0, for nominal size installed, 1 for relaxed uninstalled, -1 for squeezed to install
|
||||
d1 = circlip_d1(type);
|
||||
|
||||
vitamin(str("circlip(", type[0], "): Circlip internal ", d1, "mm"));
|
||||
wide = is_undef(type[8]) ? "" : " (wide opening)";
|
||||
vitamin(str("circlip(", type[0], "): Circlip internal ", d1, "mm",wide));
|
||||
d3 = circlip_d3(type);
|
||||
d2 = circlip_d2(type);
|
||||
a = circlip_a(type);
|
||||
@@ -50,7 +50,7 @@ module internal_circlip(type, open = 0) { //! Draw specified internal circlip, o
|
||||
or = od / 2;
|
||||
c = (d3 - d1);
|
||||
|
||||
angle = (od - d1) / d1 * 360 + closed_angle;
|
||||
angle = (od - d1) / d1 * 360 + circlip_closed_angle(type);
|
||||
tab_angle = 360 * a / PI / od;
|
||||
p = [0, -or + b / 2, 1] * rot3_z(angle / 2 + tab_angle);
|
||||
pitch = (or - a / 2);
|
||||
|
@@ -22,7 +22,8 @@ circlip_15i = ["circlip_15i", 15, 15.7, 16.2, 1.0, 3.7, 2.0, 1.7];
|
||||
circlip_19i = ["circlip_19i", 19, 20.0, 20.5, 1.0, 4.1, 2.2, 2.0];
|
||||
circlip_21i = ["circlip_21i", 21, 22.0, 22.5, 1.0, 4.2, 2.4, 2.0];
|
||||
circlip_28i = ["circlip_28i", 28, 29.4, 30.1, 1.2, 4.8, 2.9, 2.0];
|
||||
circlip_28iw = ["circlip_28iw", 28, 29.4, 30.1, 1.2, 4.8, 2.9, 2.0, 100]; // with wide opening
|
||||
|
||||
circlips = [circlip_12i, circlip_15i, circlip_19i, circlip_21i, circlip_28i];
|
||||
circlips = [circlip_12i, circlip_15i, circlip_19i, circlip_21i, circlip_28i, circlip_28iw];
|
||||
|
||||
use <circlip.scad>
|
||||
|
@@ -36,6 +36,10 @@ function bearing_groove_length(type) = type[4]; //! Groove length
|
||||
function bearing_groove_dia(type) = type[5]; //! Groove diameter
|
||||
function bearing_groove_spacing(type) = type[6]; //! Spacing between grooves, outer to outer, ie includes the grooves themselves
|
||||
|
||||
function open_bearing_theta(type) = type[7]; //! For open bearings, the angle of the opening
|
||||
function open_bearing_width(type) = type[8]; //! For open bearings, the width of the opening at the rod
|
||||
|
||||
|
||||
function bearing_radius(type) = bearing_dia(type) / 2; //! Outside radius
|
||||
|
||||
module linear_bearing(type) { //! Draw specified linear bearing
|
||||
@@ -50,21 +54,43 @@ module linear_bearing(type) { //! Draw specified linear bearing
|
||||
gs = bearing_groove_spacing(type);
|
||||
offset = (length-gs)/2;
|
||||
|
||||
if(gs==0) {
|
||||
color(bearing_colour) tube(or = or, ir = casing_ir, h = length);
|
||||
} else {
|
||||
translate_z(-length/2) {
|
||||
color(bearing_colour) tube(or = or, ir = casing_ir, h = offset, center = false);
|
||||
color(groove_colour) translate_z(offset) tube(or = gr, ir = casing_ir, h = gl,center = false);
|
||||
color(bearing_colour) translate_z(offset+gl) tube(or = or, ir = casing_ir, h = gs-2*gl, center = false);
|
||||
color(groove_colour) translate_z(offset+gs-gl) tube(or = gr, ir = casing_ir, h = gl, center = false);
|
||||
color(bearing_colour) translate_z(offset+gs) tube(or = or, ir = casing_ir, h = offset, center = false);
|
||||
difference() {
|
||||
union() {
|
||||
if(gs==0) {
|
||||
color(bearing_colour) tube(or = or, ir = casing_ir, h = length);
|
||||
} else {
|
||||
translate_z(-length/2) {
|
||||
color(bearing_colour) tube(or = or, ir = casing_ir, h = offset, center = false);
|
||||
color(groove_colour) translate_z(offset) tube(or = gr, ir = casing_ir, h = gl,center = false);
|
||||
color(bearing_colour) translate_z(offset+gl) tube(or = or, ir = casing_ir, h = gs-2*gl, center = false);
|
||||
color(groove_colour) translate_z(offset+gs-gl) tube(or = gr, ir = casing_ir, h = gl, center = false);
|
||||
color(bearing_colour) translate_z(offset+gs) tube(or = or, ir = casing_ir, h = offset, center = false);
|
||||
}
|
||||
}
|
||||
rod_r = bearing_rod_dia(type) / 2;
|
||||
color(seal_colour)
|
||||
tube(or = casing_ir, ir = rod_r + eps, h = length - 0.5);
|
||||
|
||||
color(seal_colour * 0.8)
|
||||
tube(or = rod_r * 1.12, ir = rod_r, h = length);
|
||||
|
||||
}
|
||||
|
||||
// Open bearing
|
||||
if (!is_undef(type[7])) {
|
||||
rod_r = bearing_rod_dia(type) / 2;
|
||||
theta = open_bearing_theta(type);
|
||||
w = open_bearing_width(type) / 2;
|
||||
h = (w / tan(theta/2));
|
||||
// calculate the midpoint of the width
|
||||
mp = w / tan(asin(w / rod_r));
|
||||
|
||||
color(groove_colour)
|
||||
translate([-(h*3) +(h-mp),0,0]) {
|
||||
mirror([0,1,0])
|
||||
right_triangle(h*3, w*3, length + 5);
|
||||
right_triangle(h*3, w*3, length + 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
rod_r = bearing_rod_dia(type) / 2;
|
||||
color(seal_colour)
|
||||
tube(or = casing_ir, ir = rod_r + eps, h = length - 0.5);
|
||||
|
||||
color(seal_colour * 0.8)
|
||||
tube(or = rod_r * 1.12, ir = rod_r, h = length);
|
||||
}
|
||||
|
@@ -20,25 +20,27 @@
|
||||
//
|
||||
// Linear bearings
|
||||
//
|
||||
// L od id gl gd gs
|
||||
LM16UU = ["LM16UU", 37, 28, 16, 1.6, 27.0, 26.5];
|
||||
LM16LUU = ["LM16LUU", 70, 28, 16, 1.6, 27.0, 53.0];
|
||||
LM12UU = ["LM12UU", 30, 21, 12, 1.3, 20.0, 23.0];
|
||||
LM12LUU = ["LM12LUU", 57, 21, 12, 1.3, 20.0, 46.0];
|
||||
LM10UU = ["LM10UU", 29, 19, 10, 1.3, 18.0, 22.0];
|
||||
LM10LUU = ["LM10LUU", 55, 19, 10, 1.3, 18.0, 44.0];
|
||||
LM8UU = ["LM8UU", 24, 15, 8, 1.1, 14.3, 17.5];
|
||||
LM8LUU = ["LM8LUU", 45, 15, 8, 1.1, 14.3, 35.0];
|
||||
LM6UU = ["LM6UU", 19, 12, 6, 1.1, 11.5, 13.5];
|
||||
LM6LUU = ["LM6LUU", 35, 12, 6, 1.1, 11.5, 27.0];
|
||||
LM5UU = ["LM5UU", 15, 10, 5, 1.1, 9.5, 10.2];
|
||||
LM5LUU = ["LM5LUU", 28, 10, 5, 1.1, 9.5, 20.4];
|
||||
LM4UU = ["LM4UU", 12, 8, 4, 0, 0, 0];
|
||||
LM4LUU = ["LM4LUU", 23, 8, 4, 0, 0, 0];
|
||||
LM3UU = ["LM3UU", 10, 7, 3, 0, 0, 0];
|
||||
LM3LUU = ["LM3LUU", 19, 7, 3, 0, 0, 0];
|
||||
// L od id gl gd gs theta, h1
|
||||
LM16UU = ["LM16UU", 37, 28, 16, 1.6, 27.0, 26.5];
|
||||
LM16LUU = ["LM16LUU", 70, 28, 16, 1.6, 27.0, 53.0];
|
||||
LM16UUOP = ["LM16UUOP", 37, 28, 16, 1.6, 27.0, 26.5, 80, 11];
|
||||
LM12UU = ["LM12UU", 30, 21, 12, 1.3, 20.0, 23.0];
|
||||
LM12LUU = ["LM12LUU", 57, 21, 12, 1.3, 20.0, 46.0];
|
||||
LM10UU = ["LM10UU", 29, 19, 10, 1.3, 18.0, 22.0];
|
||||
LM10LUU = ["LM10LUU", 55, 19, 10, 1.3, 18.0, 44.0];
|
||||
LM8UU = ["LM8UU", 24, 15, 8, 1.1, 14.3, 17.5];
|
||||
LM8LUU = ["LM8LUU", 45, 15, 8, 1.1, 14.3, 35.0];
|
||||
LM6UU = ["LM6UU", 19, 12, 6, 1.1, 11.5, 13.5];
|
||||
LM6LUU = ["LM6LUU", 35, 12, 6, 1.1, 11.5, 27.0];
|
||||
LM5UU = ["LM5UU", 15, 10, 5, 1.1, 9.5, 10.2];
|
||||
LM5LUU = ["LM5LUU", 28, 10, 5, 1.1, 9.5, 20.4];
|
||||
LM4UU = ["LM4UU", 12, 8, 4, 0, 0, 0];
|
||||
LM4LUU = ["LM4LUU", 23, 8, 4, 0, 0, 0];
|
||||
LM3UU = ["LM3UU", 10, 7, 3, 0, 0, 0];
|
||||
LM3LUU = ["LM3LUU", 19, 7, 3, 0, 0, 0];
|
||||
|
||||
linear_bearings = [LM3UU, LM4UU, LM5UU, LM6UU, LM8UU, LM10UU, LM12UU, LM16UU];
|
||||
long_linear_bearings = [LM3LUU, LM4LUU, LM5LUU, LM6LUU, LM8LUU, LM10LUU, LM12LUU, LM16LUU];
|
||||
open_linear_bearings = [LM16UUOP];
|
||||
|
||||
use <linear_bearing.scad>
|
||||
|
124
vitamins/sbr_rail.scad
Normal file
@@ -0,0 +1,124 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2018
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib 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 General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
//
|
||||
//! SBR rails
|
||||
//!
|
||||
//! The rails are drawn from the center of the rod.
|
||||
//! `sbr_rail_center_height(type)` can be used to determine where the bottom of the rail is.
|
||||
//
|
||||
include <../utils/core/core.scad>
|
||||
use <bearing_block.scad>
|
||||
use <linear_bearing.scad>
|
||||
use <rod.scad>
|
||||
use <screw.scad>
|
||||
|
||||
function sbr_rail_diameter(type) = type[1]; //! Diameter of the rod
|
||||
function sbr_rail_center_height(type) = type[2]; //! Height of the center above the bottom of the rail
|
||||
function sbr_rail_base_width(type) = type[3]; //! Width of the rail base
|
||||
function sbr_rail_carriage(type) = type[5]; //! Carriage to use with this rail
|
||||
function sbr_rail_screw(type) = type[7]; //! Screw to fasten this rail
|
||||
|
||||
module sbr_rail(type , l) { //! Draw an SBR rail
|
||||
base_colour = grey(70);
|
||||
screw_colour = grey(10);
|
||||
d = sbr_rail_diameter(type);
|
||||
h = sbr_rail_center_height(type);
|
||||
B = sbr_rail_base_width(type);
|
||||
T = type[4];
|
||||
C = type[8];
|
||||
S2 = sbr_rail_screw(type);
|
||||
|
||||
S3 = type[9]; // Screw that fastens the rod to the base
|
||||
S3L = type[10]; // length of that screw
|
||||
|
||||
h1 = open_bearing_width(sbr_bearing(sbr_rail_carriage(type)));
|
||||
theta = open_bearing_theta(sbr_bearing(sbr_rail_carriage(type)));
|
||||
|
||||
vitamin(str("sbr_rail(", d, ", ", l, "): SBR", d, " rail, length ", l, "mm"));
|
||||
|
||||
not_on_bom()
|
||||
no_explode()
|
||||
rod(d, l, center=true);
|
||||
|
||||
base = (h1/2 + C/2) /2; // guess, not clear from drawings
|
||||
|
||||
color(base_colour)
|
||||
difference() {
|
||||
linear_extrude(l - 5, center=true, convexity=2)
|
||||
translate([0,h-(T/2),0])
|
||||
polygon([
|
||||
[-h1/2, -T/2],
|
||||
[-h1/2 - T/2, T/2],
|
||||
[-B/2, T/2],
|
||||
[-B/2, -T/2],
|
||||
[-base, -T/2],
|
||||
[-d/4, -h+(d/2)],
|
||||
[d/4, -h+(d/2)],
|
||||
[base, -T/2],
|
||||
[B/2, -T/2],
|
||||
[B/2, T/2],
|
||||
[h1/2 + T/2, T/2],
|
||||
[h1/2, -T/2],
|
||||
]);
|
||||
sbr_screw_locations(type, l)
|
||||
translate([0,h-T+0.01,0])
|
||||
rotate([90,0,0])
|
||||
cylinder(r=screw_clearance_radius(S3), h=S3L, center=true);
|
||||
sbr_screw_positions(type, l)
|
||||
translate([0,T/2,0])
|
||||
rotate([90,0,0])
|
||||
cylinder(r=screw_clearance_radius(S2), h=T+0.1, center=true);
|
||||
|
||||
}
|
||||
|
||||
not_on_bom()
|
||||
no_explode()
|
||||
color(screw_colour)
|
||||
sbr_screw_locations(type, l)
|
||||
translate([0,h-T,0])
|
||||
rotate([270,0,0])
|
||||
screw(S3, S3L);
|
||||
}
|
||||
|
||||
module sbr_screw_locations(type, l) { //! Linear locations of screws
|
||||
P = type[6];
|
||||
|
||||
count = floor(l / P);
|
||||
first = (l - count * P)/2;
|
||||
N = first == 0 ? P/2 : first; // we don't want screws right on the edge
|
||||
|
||||
for (x = [N:P:l])
|
||||
translate([0,0,l/2 - x])
|
||||
children();
|
||||
}
|
||||
|
||||
module sbr_screw_positions(type, l) { //! Screw positions
|
||||
h = type[2];
|
||||
T = type[4];
|
||||
C = type[8];
|
||||
S2 = sbr_rail_screw(type);
|
||||
|
||||
for (x = [-C/2, C/2])
|
||||
translate([x,h-T, 0])
|
||||
sbr_screw_locations(type, l)
|
||||
children();
|
||||
|
||||
|
||||
}
|
31
vitamins/sbr_rails.scad
Normal file
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2020
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib 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 General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
include <../vitamins/bearing_blocks.scad>
|
||||
|
||||
//
|
||||
// SBR Rails
|
||||
//
|
||||
|
||||
// d h B T carriage P S2 C S3 S3L
|
||||
SBR16S = ["SBR16S", 16, 25, 40, 5, SBR16UU, 150, M5_cap_screw, 30, M5_cap_screw, 18 ];
|
||||
|
||||
sbr_rails = [SBR16S];
|
||||
|
||||
use <sbr_rail.scad>
|