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
}
}
