Compare commits

..

No commits in common. "a7206add7c116cce9820981cc8379e040ab628c3" and "b21cb75816517a6faa20e93a1de657376de0a545" have entirely different histories.

5 changed files with 100 additions and 17 deletions

View File

@ -5,32 +5,45 @@ Just some miscellaneous notes for any dear reader, or more likely, my own forget
## Putting a BSS Stick Together ## Putting a BSS Stick Together
Assembly of a stick is pretty straightforward, but there are some choices that can make it easier or harder. The Assembly of a stick is pretty straightforward, but there are some choices that can make it easier or harder. The
following is the most consistent way I've found to put one together. This is assuming a v4.2 or beyond stick, with two following is the most consistent way I've found to put one together. This is assuming a v4.1 or beyond stick, with two
panels to make a long standard stick, and the frame made of pieces. panels to make a long standard stick, and the frame made of pieces.
1. Prepare the frame top pieces --- `frame-piece-top-left-or-right`: this is your best shot to get auxillary buttons, 1. Prepare the frame top pieces --- `frame-piece-top-{left,right}`: this is your best shot to get auxillary buttons,
panel connectors, and the like installed, so do it now, and give them a good tighten. You shouldn't need to adjust panel connectors, and the like installed, so do it now, and give them a good tighten. You shouldn't need to adjust
these again, so finish their installation while the pieces are free. these again, so finish their installation while the pieces are free.
1. This of course includes decorative plates --- e.g. `misc-decorative-plate-aux-control-three-button-cluster` --- 1. This of course includes decorative plates --- e.g. `misc-decorative-plate-aux-control-three-button-cluster` ---
you may choose to use. These are held to the top pieces by the buttons or component mounting screws. you may choose to use. These are held to the top pieces by the buttons or component mounting screws.
2. Start the top panels --- `top-panel-(inset|overhang)-*`: you want both to get the components installed now 2. Start the top panels --- `top-panel-(inset|overhang)-*`: you want both to get the components installed now
when it's easy, and to make sure that the overall assembly works with your components, so again get your buttons, when it's easy, and to make sure that the overall assembly works with your components, so again get your buttons,
lever, etc., in place. You can secure them at this point. lever, etc., in place.
1. If you are using a button decorative plate that spans two panels --- e.g. 1. If you are using a button decorative plate that spans two panels --- e.g.
`src/misc-decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one` --- take care to align the two panels as `src/misc-decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one` --- don't tighten the buttons all the way,
tightly as possible, and accurately, as they will be hard to adjust once everything is secured and in the frame. as you may need some wiggle to align the panels to the frame in a later step.
2. If using a lever, don't forget the lever mount spacer --- `src/misc-lever-mount-sanwa-seimitsu` --- if you want 2. If the above isn't the case, you can tighten all your buttons now.
3. If using a lever, don't forget the lever mount spacer --- `src/misc-lever-mount-sanwa-seimitsu` --- if you want
it, and tighten those mounting bolts now as well. it, and tighten those mounting bolts now as well.
3. Create the frame box by combining your `frame-piece-*` parts together. This will be relatively stable just via 3. Create the frame box by combining your `frame-piece-*` parts together. This will be relatively stable just via
friction fit. friction fit.
4. Rest the frame top-up on a desk, and put the standoffs through the holes. This will probably be tight, and you may 4. Rest the frame top-up on a desk, and put the standoffs through the holes.
even need a rubber mallet or similar to drive the standoffs through the holes. 5. Insert the top panels into the frame. The friction on this will probably be tight, and you may not be able to muscle
5. Insert the top panels into the frame. it in on your own. Get the panel posts at least partially into the frame columns, in any event. If you get all the
6. Insert the bolts for the top panels, make any last adjustments, and tighten them. panels completely in, the next steps will be easier, but it's not imperative.
6. Start the bolts for the top panels. Get it so that the bolts catch the standoffs, but don't tighten them completely.
You will want some wiggle when connecting the bottom panels, which is maybe the hardest part. Depending on your bolts
and how deep into the frame you got the top panels, you might need to push the standoffs up the column in order to
catch them with the bolts.
7. At this point you have an open box with access to all your components. Do all of your wiring. 7. At this point you have an open box with access to all your components. Do all of your wiring.
1. Tighten the buttons and etc. if you didn't in step 2. 1. Tighten the buttons and etc. if you didn't in step 2.
8. Insert the bottom panels into the frame. 2. TEST YOUR BOARD AND COMPONENTS NOW! You don't want to have to undo the rest of the steps for something trivial,
9. Insert the bottom bolts for the bottom panels, and tighten them. trust me.
8. Insert the bottom panels into the frame. This may be difficult. If you got the top panels into the frame in step 4,
and left the bolts loose in step 5, you can make the standoffs rise outside of the frame column, which makes it
easier to line up the standoffs with the bottom panel posts.
9. Drive the bottom bolts into the standoffs. You probably don't have the panels all the way into the frame, but if you
can at least get the standoffs in the posts, you can catch them with the bottom bolts, and then let them guide the
panels into the frame.
10. Tighten all the bolts. If you didn't get the top panels flush in step 4, you can apply the same logic as in step 8
and tighten the bolts to guide the panels into the frame.
In the end, this should be extremely sturdy. None of the frame or panels should be loose at all, and you should be able In the end, this should be extremely sturdy. None of the frame or panels should be loose at all, and you should be able
to move, flip, gently toss, etc. the stick without anything moving or feeling loose. to move, flip, gently toss, etc. the stick without anything moving or feeling loose.

View File

@ -27,8 +27,17 @@ perfect pattern, making the long lines stand out even more.
seem to have issues with filling curves and you still want to try to maximize contact with walls. Concentric is great seem to have issues with filling curves and you still want to try to maximize contact with walls. Concentric is great
here if you dial it in. here if you dial it in.
The concentric pattern is a good default and prints awesome parts, with the only exception being the top panels, which Panels may have tiny gaps against the circular button cutouts; this is largely not a problem as buttom rims, decorative
benefit from using a Hilbert curve initial layer pattern instead of concentric. plates, etc. will cover it up. However, I've had some interesting results with:
* Initial layer line width: 0.42mm (down .08mm)
* Initial layer height: 0.25mm (up .05mm)
* Initial layer nozzle temperature: 230°C (up 10°C)
* Initial layer bed temperature: 70°C (up 5°C)
* Initial layer pattern: concentric
These are good defaults and print awesome parts, with the only exception being the top panels, which benefit from using
a Hilbert curve initial layer pattern instead of concentric.
## Materials ## Materials

View File

@ -164,7 +164,32 @@ module levermountcountersinks() {
} }
module base_panel() { module base_panel() {
cube([panel_x, panel_y, panel_z], center=true); difference() {
union() {
cube([panel_x, panel_y, panel_z], center=true);
// add posts that sink into the frame, just to give
// a somewhat more sturdy/tight connection
translate([panel_to_frame_point_x, panel_to_frame_point_y, -panel_z])
scale([1.5, 1.5, 0.1]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, panel_to_frame_point_y, -panel_z])
scale([1.5, 1.5, 0.1]) frame_hex_bolt_hole();
translate([panel_to_frame_point_x, -panel_to_frame_point_y, -panel_z])
scale([1.5, 1.5, 0.1]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, -panel_to_frame_point_y, -panel_z])
scale([1.5, 1.5, 0.1]) frame_hex_bolt_hole();
}
// the posts mentioned above need space for the actual hex bolts
// used in connecting to the frame
translate([panel_to_frame_point_x, panel_to_frame_point_y, -panel_z])
scale([1, 1, 0.1]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, panel_to_frame_point_y, -panel_z])
scale([1, 1, 0.1]) frame_hex_bolt_hole();
translate([panel_to_frame_point_x, -panel_to_frame_point_y, -panel_z])
scale([1, 1, 0.1]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, -panel_to_frame_point_y, -panel_z])
scale([1, 1, 0.1]) frame_hex_bolt_hole();
}
} }
module base_bottom_panel() { module base_bottom_panel() {
@ -335,6 +360,16 @@ module frame() {
translate([-panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([-panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([-panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
// slightly larger holes than the posts in the base_panel
translate([panel_to_frame_point_x, panel_to_frame_point_y, frame_z/2-panel_z-5])
scale([1.55, 1.55, 0.2]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, panel_to_frame_point_y, frame_z/2-panel_z-5])
scale([1.55, 1.55, 0.2]) frame_hex_bolt_hole();
translate([panel_to_frame_point_x, -panel_to_frame_point_y, frame_z/2-panel_z-5])
scale([1.55, 1.55, 0.2]) frame_hex_bolt_hole();
translate([-panel_to_frame_point_x, -panel_to_frame_point_y, frame_z/2-panel_z-5])
scale([1.55, 1.55, 0.2]) frame_hex_bolt_hole();
} }
} }

View File

@ -7,7 +7,7 @@ include <parameters.scad>
include <components.scad> include <components.scad>
use <frame-left.scad> use <frame-left.scad>
module top_left_or_right_frame_piece() { module top_left_frame_piece() {
piece_width = panel_support_width+frame_wall+frame_mount_column_width; piece_width = panel_support_width+frame_wall+frame_mount_column_width;
intersection() { intersection() {
left_frame(); left_frame();
@ -23,4 +23,4 @@ module top_left_or_right_frame_piece() {
} }
} }
top_left_or_right_frame_piece(); top_left_frame_piece();

View File

@ -0,0 +1,26 @@
/*
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <frame-right.scad>
module top_right_frame_piece() {
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
intersection() {
right_frame();
difference() {
// include the whole top wall (including mount columns)
translate([0, (frame_y/2)-(piece_width/2), 0]) cube([frame_x, piece_width, frame_z], center=true);
// ...minus the frame wall and lip on the right
translate([frame_x/2-frame_wall/2, 0, 0])
cube([frame_wall, frame_y, frame_z], center=true);
// ...minus a slot for the combining piece to go into
cube([frame_x, frame_y-(panel_support_width+frame_wall)*2, frame_z/4], center=true);
}
}
}
top_right_frame_piece();