rushabhcodes/desk-fidget-counter

A desk knob assembly combining a circuit board with PETG-printed mechanical parts and vendor CAD-modeled hardware.

Version
5.6.1
License
MIT
Stars
0

mechanical/parameters.json

{
  "base_diameter": 84.8,
  "pcb_diameter": 72,
  "pcb_bottom_z": 2.6,
  "pcb_thickness": 1.6,
  "mount_holes": [
    [
      -30,
      15
    ],
    [
      30,
      15
    ],
    [
      -30,
      -15
    ],
    [
      30,
      -15
    ]
  ],
  "lid_bottom_z": 9.2,
  "lid_top_z": 10.4,
  "bearing": {
    "part": "6712ZZ",
    "id": 60,
    "od": 75,
    "width": 7,
    "bottom_z": 12,
    "manufacturer": "Maysme",
    "source": "https://maysmeprecision.com/Show/?Cid=677",
    "race_dimensions_status": "60x75x7 boundary dimensions verified. Internal race, shield, ball and cage dimensions are best approximations authorized by the user, not manufacturer CAD.",
    "approximation": {
      "inner_race_od": 64.0,
      "outer_race_id": 71.0,
      "pitch_diameter": 67.5,
      "ball_diameter": 4.0,
      "ball_count": 44,
      "groove_radius": 2.05,
      "edge_chamfer": 0.3,
      "shield_thickness": 0.2,
      "shield_recess": 0.35,
      "shield_inner_diameter": 64.16,
      "shield_outer_diameter": 71.5,
      "basis": "Maysme 6712ZZ envelope; NSK NB712A 60x75x7 mounting analogue. Internal dimensions are engineering/visual estimates, not Maysme manufacturing data."
    }
  },
  "bearing_stem_od": 60.0,
  "bearing_pocket_id": 75.0,
  "knob_diameter": 84.8,
  "knob_top_z": 22.1,
  "usb_center": [
    0,
    37
  ],
  "programming_connector": [
    0,
    20.5
  ],
  "display_connector": [
    -21.5,
    -4.5
  ],
  "encoder": {
    "position": [
      -23,
      10
    ],
    "rotation_deg": 156.501434,
    "track_radius": 25.079872408,
    "track_thickness": 0.8,
    "slots": 48,
    "beam_z": 8.7,
    "skirt_bottom_z": 7.9,
    "bond_outer_radius": 25.9
  },
  "display": {
    "part": "Waveshare 19192",
    "active_diameter": 32.4,
    "pcb_diameter": 37.5,
    "pcb_bottom_z": 17.3,
    "pcb_thickness": 1,
    "front_z": 20.9,
    "bezel_top_z": 22.3,
    "bezel_diameter": 48,
    "module_rotation_deg": 270,
    "official_step": "vendor/step/Waveshare-19192.stp",
    "glass_relief_mm": 0.4
  },
  "header_tail_below_pcb_mm": 0.8,
  "lid_screw_length_mm": 6,
  "knob_bottom_z": 10.8,
  "pcb_window": {
    "xmin": -17.8,
    "xmax": 16.8,
    "ymin": -21.8,
    "ymax": 18.8,
    "corner_radius": 2
  },
  "pcb_outline": {
    "radius": 36,
    "clip_x": 34,
    "clip_y": 34,
    "usb_tab": {
      "replace_above_y": 33,
      "points": [
        [
          14.5,
          33
        ],
        [
          14.5,
          35.5
        ],
        [
          7,
          41.1
        ],
        [
          -7,
          41.1
        ],
        [
          -14.5,
          35.5
        ],
        [
          -14.5,
          33
        ]
      ]
    },
    "button_tab": {
      "replace_below_y": -33,
      "points": [
        [
          -14,
          -33
        ],
        [
          -14,
          -35.5
        ],
        [
          -5,
          -41.2
        ],
        [
          -3.5,
          -42.1
        ],
        [
          3.5,
          -42.1
        ],
        [
          5,
          -41.2
        ],
        [
          14,
          -35.5
        ],
        [
          14,
          -33
        ]
      ]
    }
  },
  "usb_plug_max_height_mm": 6.9,
  "chassis_screw_axes": [
    [
      27.6,
      27.6
    ],
    [
      -27.6,
      -27.6
    ]
  ],
  "screen_posts": [
    [
      -14.6,
      15.96
    ],
    [
      13.8,
      -16.65
    ]
  ],
  "usb_cable_part": "L-com CAU4CC-40M-1M",
  "front_button": {
    "part": "Omron B3U-3000P",
    "pcb_center": [
      0,
      -40.9
    ],
    "pcb_rotation_deg": 180,
    "axis_z": 4.8,
    "actuator_front_y": -42.85,
    "datasheet_pretravel_mm": {
      "min": 0.1,
      "typ": 0.2,
      "max": 0.4
    },
    "direct_actuation": false,
    "opening_width_mm": 8,
    "opening_bottom_z": 2.8,
    "opening_top_z": 6.8,
    "finger_check_radius_mm": 6,
    "fit_status": "Existing B3U-3000P, operated by the captive printed cap. Print and test the cap/guide fit and switch closure before final assembly.",
    "printed_cap": {
      "part": "button-cap",
      "face_width_mm": 8,
      "face_height_mm": 4,
      "face_front_y": -45.6,
      "rest_tip_y": -43.05,
      "nominal_rest_gap_mm": 0.2,
      "nominal_max_travel_mm": 0.6,
      "minimum_slide_clearance_mm": 0.4,
      "travel_stop": "Two side ears against base; lid captures cap without extra fasteners",
      "fit_status": "Nominal CAD travel only. Verify free return, no rest preload, closure before stop and safe overtravel with the actual switch; trim the contact boss to calibrate if required."
    }
  },
  "usb_access": {
    "axis_z": 5.85,
    "socket_face_y": 42.35003,
    "opening_width_mm": 22,
    "opening_center_y": 41,
    "opening_length_mm": 25,
    "opening_bottom_z": 1.55,
    "opening_top_z": 9.2,
    "plug_width_mm": 13.4,
    "plug_height_mm": 6.9,
    "plug_shoulder_y": 42.35003,
    "plug_check_length_mm": 35,
    "scope": "Socket face/axis from original C165948 STEP. Plug gauge uses L-com nominal 12.9x6.4 mm plus general +/-0.5 mm tolerance; its shoulder is conservatively placed flush with the socket face. Gauge length is a checking volume, not a claimed cable dimension. Undimensioned mating details require actual fit verification.",
    "plug_nominal_width_mm": 12.9,
    "plug_nominal_height_mm": 6.4,
    "plug_tolerance_mm": 0.5
  },
  "stock_display_cable": {
    "source": "https://www.waveshare.com/product/1.28inch-lcd-module.htm",
    "included": true,
    "description": "PH2.0 8-pin to eight individual 2.54mm female jumper sockets, nominal 20cm",
    "custom_harness_required": false,
    "nominal_length_mm": 200,
    "wire_od_check_mm": 1.5,
    "jumper_housing_check_mm": [
      2.54,
      2.54,
      14.5
    ],
    "dimensions_status": "Manufacturer confirms PH2.0 8-pin / 20cm lead. User authorized best approximations: 1.2mm model wire, 1.5mm clearance check, 3mm XZ projected bend (approximately 1.44mm minimum 3D curve radius), nominal PH housing. These are not supplier-qualified limits.",
    "assembly": "Shorten the included lead and keep its original display plug. Solder stripped board ends into the imported C5156616 eight-pad J6 footprint; no header is populated or purchased.",
    "trimmed_free_wire_target_mm": 37.0,
    "trimmed_free_wire_tolerance_mm": 1.0,
    "board_end_strip_mm": 2.55,
    "modeled_wire_od_mm": 1.2,
    "dressing_bend_radius_mm": 3.0,
    "insulation_start_above_pcb_mm": 0.15,
    "lead_y_shift_mm": 3.0
  },
  "mechanical_revision": "E4",
  "bearing_mount": {
    "inner_contact_od": 62.0,
    "outer_contact_id": 73.0,
    "basis": "Inner-race lower shoulder and outer-race upper shoulder locate the bearing axially. Calibrated bore/pocket push fits retain it; no separate clamps or lower retainer."
  },
  "pcb_capture": {
    "peg_diameter": 2.2,
    "pad_diameter": 4.0,
    "compressed_pad_height": 1.1,
    "uncompressed_pad_height": 1.57,
    "pad_thickness_tolerance_fraction": 0.1,
    "material": "Rogers PORON 4701-30-20062-04, 320 kg/m3, 1.57mm nominal; six discs (four diameter4mm, two diameter2.6mm), attach with 0.05mm 467MP",
    "adhesive_thickness": 0.05,
    "source": "https://www.rogerscorp.com/-/media/project/rogerscorp/documents/elastomeric-material-solutions/poron/english/data-sheets/17-006-poron-4701-30-very-soft.pdf"
  },
  "fit_budget": {
    "bearing_diameter_error": 0.02,
    "bearing_width_error": 0.2,
    "printed_fit_diameter_error": 0.1,
    "printed_surface_error": 0.1,
    "relative_print_z_error": 0.1,
    "pcb_thickness_error": 0.16,
    "pcb_hole_diameter_error": 0.05,
    "lid_alignment_error": 0.1,
    "smt_position_error": 0.1,
    "moving_xy_print_check": 0.62,
    "moving_xy_pcb_check": 0.945,
    "moving_z_check": 0.2,
    "status": "Conservative engineering approximation and required print calibration targets; not measured production capability.",
    "moving_z_print_check": 0.3,
    "moving_z_hardware_check": 0.46,
    "pcb_cutout_edge_error": 0.2
  },
  "bezel_screw_axes": [
    [
      -14.6,
      15.96
    ],
    [
      13.8,
      -16.65
    ]
  ],
  "assembly_simplification": {
    "revision": "E5",
    "product_print_count": 6,
    "fasteners": [
      {
        "part": "DIN 965 M2x6",
        "quantity": 2,
        "use": "base/lid"
      },
      {
        "part": "DIN 965 M2x10",
        "quantity": 2,
        "use": "bezel and screen carrier into base posts"
      }
    ],
    "bearing_retention": "Calibrated push fits on both races, following the Ploopy assembly approach. Nominal CAD mating dimensions are 60/75mm; qualify printer compensation with the coupons and physically check pull-off retention and free rotation.",
    "integral_encoder_skirt": true,
    "separate_bearing_retainers": false
  }
}