Main > Everything Else
Online electronics parts store?
<< < (11/12) > >>
PL1:
Circle logo option added to handle top.

Related PNG, Inkscape, DXF, OpenSCAD, and STL files are in the attached zip.


Scott
EDIT: Just noticed that the circle logo has the "DE" slightly off-center compared to the other logo.  Will fix and repost.   :banghead:
Howard_Casto:
Also they make shaft extension add-ons for the sanwa sticks, or you could go to your local hardware store/tractor supply and see if they have a 9mm coupler.  I'm probably just going to top mount it myself. 
PL1:
Just noticed that the circle logo has the "DE" slightly off-center compared to the other logo.  Will fix and repost.   :banghead:


--- Quote from: Howard_Casto on July 12, 2019, 01:28:15 pm ---Also they make shaft extension add-ons for the sanwa sticks

--- End quote ---
Good call.   :cheers:

If someone wants to use those, blue (or red) Loctite is your friend.

Blue should hold during normal gameplay and is probably strong enough to hold if you have to replace the handle.


--- Quote from: Howard_Casto on July 12, 2019, 01:28:15 pm ---you could go to your local hardware store/tractor supply and see if they have a 9mm coupler.

--- End quote ---
A coupler would not be recommended for this application due to fit and leverage.

Something like that might work if you replace the shaft and remix the handle like the Happ Rotary stick here.


Scott
PL1:
Fixed circle logo by copy/pasting the "DE" and arrow points from Howard's cleaned-up logo.   ;D

Related files in zip.


Scott
PL1:
Updated comments in the handle code.   ;D

You might want to slightly adjust ShaftHeight on line 38, but the current value should work well with your joystick top-mounted.


--- Code: ---// Data East rotary joystick handle (balltop replacement) V0.03
// -- Handle

// Other prints needed:
// -- Test print
// -- Test print 2
// -- Handle top
// -- Eject pin (2 pins per handle)

// Required hardware:
// - M6 locknut (M6-1.0mm thread)

// This part will work with the Ultimarc Ikari 12-way Rotary Upgrade.

// Variable values are estimates.  Awaiting accurate measurements.

/////////////////////////////
//  Adjustable variables
/////////////////////////////

// Body
    BodyHeight = 39.89; // Default = 39.89
    // Height of the body

    BodyDiameter = 33.22; // Default = 33.22
    // Diameter of the body

    UpperRoundover = 1.2; // Default = 1.2
    // Radius of the cylinder upper edge roundover

    UpperRoundoverScale = 1.5; // Default = 1.5
    // Amount of horizontal stretch applied to the upper roundover radius of the handle

    LowerRoundover = 0.5; // Default = 0.5
    // Radius of the cylinder lower edge roundover

// Spaces to remove from body
    ShaftHeight = 14; // Default = Unthreaded Shaft - panel thickness - 15.6mm clearance (See diagram)
    // Height of the unthreaded shaft cavity
    // Default for Ultimarc Ikari 12-way Rotary Upgrade = 30.4mm - panel thickness. (This formula positions the bottom of the handle 15.6mm above the top of the panel, same as Ikari Warriors.)
    // 11.35 for a 3/4" wood panel (19.05mm)
    // 25.8 for a 1.6mm metal panel with 3mm spacers (4.6mm)
    // CRITICAL MEASUREMENT: BodyHeight - ShaftHeight - ThreadedHeight - TopHeight must be >= the thickness of the locknut (~5.9mm) to allow enough room under the top

    ShaftDiameter = 9.35; // Default = 9.35 for a 9mm shaft
    // Diameter of the joystick unthreaded shaft cavity.  This value needs to be *very slightly* larger than the actual joystick shaft diameter to allow for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder

    ThreadedHeight = 6; // Default = 6
    // CRITICAL MEASUREMENT: ShaftHeight + ThreadedHeight must be <= ??? to allow enough room for the locknut under the top
    // Height of the thread hole

    ThreadedDiameter = 6.2; // Default = 6.2
    // Outer diameter of the thread hole

    LocknutDiameter = 11.65;  // Default = 11.55 + wiggle room
    // An M6 nut is 10mm flat-to-flat = 11.55mm point-to-point
    // (Height is automatically calculated below.)

    PinDistance = 11; // Default =
    // Horizontal distance from handle center to eject pin center
   
    PinDiameter = 4; // Default = 4
    // Diameter of the eject pin body

    TopDiameter = 29.2; // Default = 29.2
    // Hole for removable top.
   
    TopHeight = 2; // Default = 2
    // Hole for removable top.
   
// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.


/////////////////////////////
//  Non-adjustable variables
/////////////////////////////

// Locknut cavity
    LocknutHeight = (BodyHeight - ShaftHeight - ThreadedHeight);
    // Height of the locknut cavity

/////////////////////////////
//  Make the part
/////////////////////////////

// Make the main body
difference(){ // Body minus holes
// Body
    union () // Upper roundover + Center cylinder + Lower roundover
    {
        // Upper roundover
        scale([UpperRoundoverScale,UpperRoundoverScale,1])
        minkowski()
        {
        cylinder(d=(BodyDiameter/UpperRoundoverScale)-(UpperRoundover*2),h=0.01);
        translate ([0, 0, BodyHeight-(UpperRoundover)-0.02])
        sphere(r=UpperRoundover);
        }
       
        // Center cylinder
        translate ([0, 0, LowerRoundover])
        cylinder (BodyHeight-UpperRoundover-LowerRoundover,d=BodyDiameter);

        // Lower roundover
        minkowski()
        {
        cylinder(d=BodyDiameter-(LowerRoundover*2),h=0.01);
        translate ([0, 0, LowerRoundover])
        sphere(r=LowerRoundover);
        }
       
    } // End body
//
// Holes
    color("limegreen") translate ([0, 0, ShaftHeight/2]) cylinder (ShaftHeight+.001, d = ShaftDiameter, center=true); // Hole for Shaft

    color("blue") translate ([0, 0, ShaftHeight+ThreadedHeight/2]) cylinder (ThreadedHeight + .001, d = ThreadedDiameter, center=true); // Hole for threaded

    color("white") hull() {  // Locknut hexagon hull
    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 0]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);

    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 60]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);

    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 120]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);

    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 180]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);

    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 240]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);

    translate ([0, 0, ShaftHeight + ThreadedHeight + LocknutHeight/2])
    rotate ([0, 0, 300]) translate ([LocknutDiameter/2, 0, 0]) cylinder (LocknutHeight + 0.01, d = 0.01, center=true);
    }
    // Hole for locknut

    color("red") translate ([0, 0, BodyHeight - TopHeight/2]) cylinder (TopHeight, d = TopDiameter, center=true);
    // Hole for removable top

    color("aqua") translate ([0, -PinDistance, 1]) cylinder (2.01, d1 = 3.5, d2 = 2, center=true);
    // Eject pin access hole 1

    color("aqua") translate ([0, PinDistance, 1]) cylinder (2.01, d1 = 3.5, d2 = 2, center=true);
    // Eject pin access hole 2

    color("purple") translate ([0, -PinDistance, BodyHeight/2 + 2]) cylinder (BodyHeight, d = PinDiameter, center=true);
    // Eject pin hole 1

    color("purple") translate ([0, PinDistance, BodyHeight/2 + 2]) cylinder (BodyHeight, d = PinDiameter, center=true);
    // Eject pin hole 2
} // End body minus holes
//

--- End code ---

It appears that there are only two things left to do for the OpenSCAD part of this project:

1. Confirm that the circle logo version of the top looks and fits right when installed.
- May need to reduce the TopWiggleRoom value  from 0.65 to 0.55.  (Circle removes the upper half of the taper.  TopTaper/2 = 0.1.)

2. Get accurate measurements from an original handle and control panel.


Scott
Navigation
Message Index
Next page
Previous page

Go to full version