Compare commits

...
Sign in to create a new pull request.

72 commits

Author SHA1 Message Date
7b2bf30394 Move retract value to hw config const 2026-08-02 19:50:00 +00:00
83a82542da Fix wiring of Motor 2 2026-08-02 13:30:52 +00:00
40deb27652 FA-FO hardware changes 2026-08-02 10:00:07 +00:00
0x23
63d960f8a5
Merge pull request #64 from SirEggNut/patch-2
Changed Buck converter from adjustable to 5V fixed to prevent accidental damage to the Pico
2026-07-12 08:32:05 +02:00
0x23
e136c6f1e0
Merge pull request #63 from SirEggNut/patch-1
Update BOM with connector components and images
2026-07-12 08:31:38 +02:00
SirEggNut
480effd89c
Updated image for fixed DC-DC Step Down Module
Updated image link for DC-DC Step Down Module.
2026-07-11 18:05:49 -04:00
SirEggNut
13a84c5e6b Added image for 5V fixed output converter 2026-07-11 17:49:05 -04:00
SirEggNut
dcd65c9a1a
Changed Buck converter from adjustable to 5V fixed to prevent accidental damage to Pico 2026-07-11 17:47:41 -04:00
SirEggNut
6f3faf936b
Revise BOM descriptions and consolidate connector entries
Updated descriptions for Crimp Beads and connectors, consolidating PH2.0 housing and header entries.
2026-06-28 17:54:30 -04:00
SirEggNut
87aaf46874 Delete images from root 2026-06-28 17:45:29 -04:00
SirEggNut
28ada60417
Add files to bom/images 2026-06-28 17:41:14 -04:00
SirEggNut
c68e465b90
Enhance BOM with images and updated descriptions
Updated connector descriptions and added images for clarity.
2026-06-28 17:21:17 -04:00
SirEggNut
427dad17b9
Images for connectors 2026-06-28 17:15:06 -04:00
SirEggNut
b713ff8960
Update BOM with additional electronic components
Added new components including connectors and headers to the BOM.
2026-06-28 17:07:14 -04:00
0x23
9d18a57584 added usb serial info 2026-05-20 20:15:55 +02:00
0x23
21d1a190a9 minor api improvements 2026-05-20 19:00:03 +02:00
0x23
677b1fea34
Merge pull request #59 from koalazak/latestStageAPI
Bring the latest stage API changes. Updated the test scripts to use i…
2026-05-20 18:55:36 +02:00
facu
e641dcf910 Bring the latest stage API changes. Updated the test scripts to use it without hardcoded ports. Small Readme for them. 2026-05-08 17:02:17 -03:00
0x23
2085853125
Merge pull request #58 from nicarq/patch-1
Update Neodym Cylinder Magnet link in BOM
2026-04-19 12:30:31 +02:00
0x23
2b442a5f7d
Merge pull request #56 from Sorsly/v4_stls
exported v4 stls and made some updates to BoM
2026-04-19 12:29:57 +02:00
0x23
ee1ad49fbc
Merge pull request #45 from pmonta/encoder-board
add a PCB to distribute the SPI bus to multiple encoders
2026-04-19 12:27:51 +02:00
Nico
31d12b5604
Update Neodym Cylinder Magnet link in BOM
Updated the suggested link for Neodym Cylinder Magnet to a specific supplier.
2026-04-19 01:28:33 -05:00
Alan Han
79ee7a67e9 added correct fasteners 2026-03-24 19:29:09 -04:00
Alan Han
067e7b6054 wip bom 3d print update, divided into machines and tools 2026-03-24 18:57:19 -04:00
Alan Han
20d18644cf added tool .stl's and reorganized folders 2026-03-24 18:40:26 -04:00
Alan Han
04a6e431ec added .stls from v4 2026-03-23 23:46:17 -04:00
0x23
74646de7d7
Update setup_guide.md 2026-03-19 18:05:13 +01:00
0x23
9c985f68cc homing dir image 2026-03-19 18:04:42 +01:00
0x23
06865e6a7d Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-03-18 17:31:53 +01:00
0x23
73fc46eb63 added optional CRC check for debugging Encoder SPI communication 2026-03-18 17:31:45 +01:00
0x23
17409827f5
Update setup_guide.md 2026-03-14 16:38:33 +01:00
0x23
78177195bc
Update README.md 2026-03-13 20:26:58 +01:00
0x23
49b1811241
Update setup_guide.md 2026-03-13 16:23:15 +01:00
0x23
fedcb42ddc
Update setup_guide.md 2026-03-13 16:16:48 +01:00
0x23
00f0e4828a
Update setup_guide.md 2026-03-13 16:15:01 +01:00
0x23
14a569bf81
Update README.md 2026-03-13 16:13:20 +01:00
0x23
29e285dc15 removed old file 2026-03-13 16:12:50 +01:00
0x23
c6a5f9d3e7 Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper
# Conflicts:
#	documentation/setup_guide.md
2026-03-13 16:12:11 +01:00
0x23
d6bb19fbcc setup guide 2026-03-13 16:11:52 +01:00
0x23
0da3a01062
Update setup_guide.md 2026-03-13 15:53:06 +01:00
0x23
6dd19ac28b
Update setup_guide.md 2026-03-13 15:51:33 +01:00
0x23
efd19f452d
Update README.md 2026-03-13 15:49:43 +01:00
0x23
4bd9fcaf5c
Update README.md 2026-03-13 15:49:24 +01:00
0x23
3d8d953325 Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-03-13 15:48:55 +01:00
0x23
12e048d791 added setup guide 2026-03-13 15:48:50 +01:00
0x23
d7af6fe704
Update README.md 2026-03-13 15:48:25 +01:00
0x23
e754a6b2d8 missing files 2026-03-13 15:33:09 +01:00
0x23
f6a42d9fb0 Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-03-13 15:29:51 +01:00
0x23
2f94074d6d added missing files 2026-03-13 15:29:27 +01:00
0x23
3425b0ba21
Update README.md 2026-03-13 13:35:55 +01:00
0x23
dfc510ea1c
Update README.md 2026-03-13 09:59:10 +01:00
0x23
5bea2c0f63
Update README.md 2026-03-13 09:58:53 +01:00
0x23
7e590c2cc3 Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-03-13 09:57:03 +01:00
0x23
4c975c0047 removed unimplemented parameter 2026-03-13 09:56:58 +01:00
0x23
eb7388af85
Update README.md 2026-03-13 09:53:48 +01:00
0x23
7d2f20ee8c
Update README.md 2026-03-13 09:49:46 +01:00
0x23
c3b59a9d49
Update README.md 2026-03-13 09:47:28 +01:00
0x23
4e15b2fa41
Update README.md 2026-03-13 09:28:06 +01:00
0x23
6f1cd22d89 removed old thumbnail 2026-03-13 09:26:25 +01:00
0x23
3450ac8d6a added thumbnails 2026-03-13 09:26:00 +01:00
0x23
c0bf264b16 added image 2026-03-13 09:16:51 +01:00
0x23
7c9afdc90b Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-03-13 09:10:56 +01:00
0x23
e13cbda4cc Firmware Version 1.0.4 2026-03-13 09:10:45 +01:00
0x23
adfb46bc5a
Update README.md 2026-02-25 21:49:10 +01:00
0x23
38e9bf4eb9
Update README.md 2026-02-25 20:40:01 +01:00
0x23
18313cc6ae updated CAD Image 2026-02-25 20:37:17 +01:00
0x23
7870521771 Merge branch 'main' of https://github.com/0x23/MicroManipulatorStepper 2026-02-25 20:31:15 +01:00
0x23
e0f470c5e6 added pcb production files 2026-02-25 20:31:07 +01:00
0x23
1f27ca4587
Update README.md 2026-02-25 19:05:20 +01:00
0x23
71e5cca9d7 added production files
added subfolders in electroncs
2026-02-25 18:42:21 +01:00
0x23
43e0ffe60c added CAD files for HW version 4 2026-02-22 18:56:55 +01:00
Peter Monta
97f5c8579b add a PCB to distribute the SPI bus to multiple encoders 2025-12-02 08:50:28 -05:00
145 changed files with 15066 additions and 351 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
__pycache__/
*.py[cod]
.DS_Store
._*

View file

@ -32,7 +32,28 @@ joint the projects community [Discord Server](https://discord.gg/maRvMVpa2Q).
5. Upload firmware using VSCode with PlattformIO plugin
6. Calibrate axis
## ✨NEW: Open Micro-Manipulator GUI
Also check out the setup guide for new devices: [Setup Guide](documentation/setup_guide/setup_guide.md)
## ✨NEW: Hardware Version 4.0
A new version of the hardware has been released, fixing several issues with the previous design:
- Self collision during homing fixed.
- Connection of ball joint block with screws only was not well constrained and could rotated a bit.
- No reliable way to ensure consistent linkage rod length
- Unnecessary ball joint friction
- Accurate ball position heavily dependet on print quality and corner rounding
- Rubber bands could not be changed or removed once glued in.
A video about the improved ball joint and linkage manufactoring process can be found on YouTube: [Better Ball Joints for the Open Micro-Manipulator](https://www.youtube.com/watch?v=NM2KXvRGmpg)
Also the FreeCAD model was restructured and improved and now includes all pins and fasteners. It now provides a reference for all required mechanical parts.
<div style="display: flex;">
<img src="images/Hardware-v4.0.jpg" alt="Open Micro-Manipulator GUI" width="50%">
</div>
WARNING: BOM is not updated yet...
## Open Micro-Manipulator GUI
To make testing and using the Open-Micro Manipulator easy and convenient a python control program with a graphical user interface is provided here: [Open Micro-Manipulator GUI](https://github.com/0x23/OpenMicroManipulatorGUI).
It has simple controlls to move the device around, while also displaying a live camera feed (e.g. from a microscope camera). Additional features, include a simple g-code runner and realtime mouse control (e.g. for Biology applications).
@ -78,6 +99,7 @@ get_workspace_transform()
home(axis_list=None)
calibrate_joint(joint_index, save_result)
move_to(x, y, z, f, move_immediately, blocking, timeout)
set_tool_output(tool_idx, output_value, immediate)
set_pose(x, y, z)
dwell(time_s, blocking, timeout)
enable_motors(enable)
@ -85,8 +107,27 @@ wait_for_stop(polling_interval_ms, disable_callbacks)
set_max_acceleration(linear_accel, angular_accel)
set_servo_parameter(pos_kp, pos_ki, vel_kp, vel_ki, vel_filter_tc)
```
## ✨ Firmware v1.0.4
## ✨ Firmware v1.0.1
Firmware 1.0.4 comes with many smaller improvements and bugfixes and a great new feature as well:
- **Tools**: Tool usage (for example for laser engraving) is now supported on the two GPIO pins of J5 on the pcb.
Tools are integrated into the planner and run fast and with correct timing when executing g-code.
The tools support PWM (using the PIO feature to squeeze out extra channels without relying on software PWM).
Example usage:
```
M3 T0 S0.7 // set pwm output of tool 0 to 70%
G4 S0.001 // dwell command (or any other motion command) - necessary to apply the tools output
```
- **Calibration**: Calibration has now some addition error checks to improve error reporting of potential problems like encoder alignment.
- **Kinematic Model Parameter**: Initialization code has been cleaned up and better comments where added to the parameters. Parameters are preset for HW v4.0 but you can toggle back to the old HW-v3.0 parameters if necessary.
- **Bugfixes**: smaller bugfixes
IMPORTANT: If you have **Hardware Version v3.0** you need to switch back to the old kinematic parameters in the [kinematic_model_delta3d.cpp](firmware/MotionControllerRP/src/kinematic_models/kinematic_model_delta3d.cpp) file (there is an #define for that at the top).
## Firmware v1.0.1
This update improves calibration, homing, logging, and adds several new G-Code commands.
@ -118,7 +159,7 @@ You can also 3D-Print the parts but have to live with thermal drift (carbon fill
<br>
The CAD files can be found here: [CAD Models](construction).
Please note that FreeCAD version **1.1.0dev** was used, and the files might not work with older versions.
Please note that FreeCAD version **1.2.0dev** was used, and the files might not work with older versions.
STL files for printing can be found here: [STL Files](construction/STL_3D_Printing/)
@ -139,6 +180,8 @@ For usual winding resistance of your motors, the device should be powered by $${
<img src="images/ControllerPCB.jpg" alt="Image 2" style="flex: 1; object-fit: contain; height: 10vw;">
</div>
The repository now also contains the fabrication files that can be directly uploaded to the PCB manufacturer.
## ⚙ Firmware
The firmware is written in C++ and takes some inspiration from the 'SimpleFOC' project. It aims to be streamlined and readable without any extra fuss, focusing on the hardware used in this project.
@ -170,6 +213,7 @@ The client must wait for an acknowledgment from the previous command before send
| `G4 S/P` | Dwell/pause for a specified time. <br>`S`: seconds <br>`P`: milliseconds |
| `G24 X Y Z A B C` | Directly set current pose for servo loops with optional rotation vector* `A`, `B`, `C`. |
| `G28 A-F` | Home one or more joints. <br>• Optional joint selection `A``F`. |
| `M3` | Set Tool output. <br>`T`: tool index <br>`S`: output value (0.0..1.0) <br> Note: new values is only applied on the next motion or dwell command |
| `M17` | Enable motors and read current pose as the start pose. |
| `M18` | Disable motors. |
| `M50` | Get current internal pose. (Encoders are not read here) |
@ -194,4 +238,6 @@ If you'd like to support this project, consider the following:
- **Support the project on Ko-fi** If you find this project valuable, you can support it financially via [Ko-fi](https://ko-fi.com/diffractionlimited) ☕.
## Youtube Video
[![Watch the video](images/thumbnail.jpg)](https://youtu.be/MgQbPdiuUTw)
[![Watch the video](images/video-thumbnails/01_MicroManipulator.jpg)](https://youtu.be/MgQbPdiuUTw)
[![Better Ball Joints for the Open Micro-Manipulator](images/video-thumbnails/02_BetterBallJoints.jpg)](https://youtu.be/MgQbPdiuUTw)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,618 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 0.8,
"width": 0.8
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.0
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.005,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "balljoint_plate_pcb.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"2e8012d9-ff9a-4144-ae87-c56d322b63ec",
"Root"
]
],
"text_variables": {}
}

View file

@ -0,0 +1,738 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "2e8012d9-ff9a-4144-ae87-c56d322b63ec")
(paper "A4")
(lib_symbols
(symbol "Mechanical:MountingHole"
(pin_names
(offset 1.016)
)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(property "Reference" "H"
(at 0 5.08 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "MountingHole"
(at 0 3.175 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_keywords" "mounting hole"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "MountingHole*"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "MountingHole_0_1"
(circle
(center 0 0)
(radius 1.27)
(stroke
(width 1.27)
(type default)
)
(fill
(type none)
)
)
)
(embedded_fonts no)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 119.38 66.04 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "22cd77c6-6419-49c9-a315-e5470917281d")
(property "Reference" "H7"
(at 121.92 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 121.92 67.3099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 119.38 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 119.38 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 119.38 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H7")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 96.52 66.04 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "35b726c5-8939-42dc-9c24-6937721b1381")
(property "Reference" "H1"
(at 99.06 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 99.06 67.3099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 96.52 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 96.52 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 96.52 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project ""
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H1")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 119.38 59.69 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "77599518-9e81-421c-a589-255563863e7d")
(property "Reference" "H6"
(at 121.92 58.4199 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 121.92 60.9599 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 119.38 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 119.38 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 119.38 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H6")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 119.38 53.34 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "bf678316-db0e-4397-9446-1c043850ee54")
(property "Reference" "H5"
(at 121.92 52.0699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 121.92 54.6099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 119.38 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 119.38 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 119.38 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H5")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 68.58 66.04 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "ce16cea6-101f-4ffc-a2f6-b65e2eb092ea")
(property "Reference" "H3"
(at 71.12 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 71.12 67.3099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 68.58 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 68.58 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 68.58 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H3")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 48.26 53.34 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "e2172f75-ac85-4747-8e3f-8bd8f214554d")
(property "Reference" "H8"
(at 50.8 52.0699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 50.8 54.6099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 48.26 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 48.26 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 48.26 53.34 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H8")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 68.58 72.39 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "ea0c2fa5-13e6-496d-a0ba-a48b9d6ec936")
(property "Reference" "H4"
(at 71.12 71.1199 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 71.12 73.6599 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 68.58 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 68.58 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 68.58 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H4")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 48.26 66.04 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "ef8cad87-32d9-4829-8ec4-9aba40945885")
(property "Reference" "H10"
(at 50.8 64.7699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 50.8 67.3099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 48.26 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 48.26 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 48.26 66.04 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H10")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 96.52 72.39 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "fb8c5c26-8db1-405b-b136-fb52772326a9")
(property "Reference" "H2"
(at 99.06 71.1199 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 99.06 73.6599 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 96.52 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 96.52 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 96.52 72.39 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H2")
(unit 1)
)
)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 48.26 59.69 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "fe98a2dd-c6f8-4781-ad26-1f0d6d940384")
(property "Reference" "H9"
(at 50.8 58.4199 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 50.8 60.9599 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2mm"
(at 48.26 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 48.26 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 48.26 59.69 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project "balljoint_plate_pcb"
(path "/2e8012d9-ff9a-4144-ae87-c56d322b63ec"
(reference "H9")
(unit 1)
)
)
)
)
(sheet_instances
(path "/"
(page "1")
)
)
(embedded_fonts no)
)

View file

@ -0,0 +1,183 @@
(kicad_pcb
(version 20241229)
(generator "pcbnew")
(generator_version "9.0")
(general
(thickness 1.6)
(legacy_teardrops no)
)
(paper "A4")
(layers
(0 "F.Cu" signal)
(2 "B.Cu" signal)
(9 "F.Adhes" user "F.Adhesive")
(11 "B.Adhes" user "B.Adhesive")
(13 "F.Paste" user)
(15 "B.Paste" user)
(5 "F.SilkS" user "F.Silkscreen")
(7 "B.SilkS" user "B.Silkscreen")
(1 "F.Mask" user)
(3 "B.Mask" user)
(17 "Dwgs.User" user "User.Drawings")
(19 "Cmts.User" user "User.Comments")
(21 "Eco1.User" user "User.Eco1")
(23 "Eco2.User" user "User.Eco2")
(25 "Edge.Cuts" user)
(27 "Margin" user)
(31 "F.CrtYd" user "F.Courtyard")
(29 "B.CrtYd" user "B.Courtyard")
(35 "F.Fab" user)
(33 "B.Fab" user)
(39 "User.1" user)
(41 "User.2" user)
(43 "User.3" user)
(45 "User.4" user)
)
(setup
(pad_to_mask_clearance 0)
(allow_soldermask_bridges_in_footprints no)
(tenting front back)
(pcbplotparams
(layerselection 0x00000000_00000000_55555555_5755f5ff)
(plot_on_all_layers_selection 0x00000000_00000000_00000000_00000000)
(disableapertmacros no)
(usegerberextensions no)
(usegerberattributes yes)
(usegerberadvancedattributes yes)
(creategerberjobfile yes)
(dashed_line_dash_ratio 12.000000)
(dashed_line_gap_ratio 3.000000)
(svgprecision 4)
(plotframeref no)
(mode 1)
(useauxorigin no)
(hpglpennumber 1)
(hpglpenspeed 20)
(hpglpendiameter 15.000000)
(pdf_front_fp_property_popups yes)
(pdf_back_fp_property_popups yes)
(pdf_metadata yes)
(pdf_single_document no)
(dxfpolygonmode yes)
(dxfimperialunits yes)
(dxfusepcbnewfont yes)
(psnegative no)
(psa4output no)
(plot_black_and_white yes)
(sketchpadsonfab no)
(plotpadnumbers no)
(hidednponfab no)
(sketchdnponfab yes)
(crossoutdnponfab yes)
(subtractmaskfromsilk no)
(outputformat 1)
(mirror no)
(drillshape 1)
(scaleselection 1)
(outputdirectory "")
)
)
(net 0 "")
(footprint "MountingHole:MountingHole_2.1mm"
(layer "F.Cu")
(uuid "ed2aaa6b-5540-4a25-b7e9-ac5d652620c5")
(at 200 100)
(descr "Mounting Hole 2.1mm, no annular, generated by kicad-footprint-generator mountinghole.py")
(tags "mountinghole")
(property "Reference" "H1"
(at 0 -3.05 0)
(layer "F.SilkS")
(hide yes)
(uuid "fbe2e5cd-8ff5-4647-939e-dd0ce550d54b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "MountingHole"
(at 0 3.05 0)
(layer "F.Fab")
(hide yes)
(uuid "efaf7238-551f-42f4-9d49-e8e793241c12")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "9905b809-f32a-45b5-8697-736e838bd016")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" "Mounting Hole without connection"
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "8f1f216c-eab1-4bba-acf3-9e9e03db4f0f")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property ki_fp_filters "MountingHole*")
(path "/e3431358-f109-41e1-8abd-e7609e5abada")
(sheetname "/")
(sheetfile "ball_alignment_disc_pcb.kicad_sch")
(attr exclude_from_pos_files exclude_from_bom)
(pad "" np_thru_hole circle
(at 0 0)
(size 1 1)
(drill 1)
(layers "*.Cu" "*.Mask")
(uuid "1f69a6ec-ea69-46af-a4f5-2440b716d18f")
)
(embedded_fonts no)
)
(gr_circle
(center 200 100)
(end 206 100)
(stroke
(width 0.1)
(type solid)
)
(fill yes)
(layer "F.Mask")
(uuid "dde5242d-1496-4d55-8821-ba405bdd666d")
)
(gr_circle
(center 200 100)
(end 206 100)
(stroke
(width 0.1)
(type solid)
)
(fill yes)
(layer "B.Mask")
(uuid "af62cc96-00a1-4ff1-84ee-660a587d88d7")
)
(gr_circle
(center 200 100)
(end 204 100)
(stroke
(width 0.05)
(type default)
)
(fill no)
(layer "Edge.Cuts")
(uuid "5abbc2ab-0559-4408-94b5-cf7e8005ef3e")
)
(embedded_fonts no)
)

View file

@ -0,0 +1,618 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 1.27,
"width": 2.54
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.005,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "ball_alignment_disc_pcb.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"fbd80f03-6df8-4a15-a16d-0e5ad187d22b",
"Root"
]
],
"text_variables": {}
}

View file

@ -0,0 +1,162 @@
(kicad_sch
(version 20250114)
(generator "eeschema")
(generator_version "9.0")
(uuid "fbd80f03-6df8-4a15-a16d-0e5ad187d22b")
(paper "A4")
(lib_symbols
(symbol "Mechanical:MountingHole"
(pin_names
(offset 1.016)
)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(property "Reference" "H"
(at 0 5.08 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Value" "MountingHole"
(at 0 3.175 0)
(effects
(font
(size 1.27 1.27)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_keywords" "mounting hole"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "ki_fp_filters" "MountingHole*"
(at 0 0 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(symbol "MountingHole_0_1"
(circle
(center 0 0)
(radius 1.27)
(stroke
(width 1.27)
(type default)
)
(fill
(type none)
)
)
)
(embedded_fonts no)
)
)
(symbol
(lib_id "Mechanical:MountingHole")
(at 133.35 91.44 0)
(unit 1)
(exclude_from_sim no)
(in_bom no)
(on_board yes)
(dnp no)
(fields_autoplaced yes)
(uuid "e3431358-f109-41e1-8abd-e7609e5abada")
(property "Reference" "H1"
(at 135.89 90.1699 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Value" "MountingHole"
(at 135.89 92.7099 0)
(effects
(font
(size 1.27 1.27)
)
(justify left)
)
)
(property "Footprint" "MountingHole:MountingHole_2.1mm"
(at 133.35 91.44 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Datasheet" "~"
(at 133.35 91.44 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(property "Description" "Mounting Hole without connection"
(at 133.35 91.44 0)
(effects
(font
(size 1.27 1.27)
)
(hide yes)
)
)
(instances
(project ""
(path "/fbd80f03-6df8-4a15-a16d-0e5ad187d22b"
(reference "H1")
(unit 1)
)
)
)
)
(sheet_instances
(path "/"
(page "1")
)
)
(embedded_fonts no)
)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,19 +1,25 @@
# Bill of Materials (BOM)
## Mechanics
| Name | Qty | Description | Comments | Suggested link | Image |
|------|-----|-------------|----------|----------------|-------|
| Steel ball | 12 | Ø1.25 mm (0.05") | Precision G10 or better. Can be sourced from small ball bearings | |
| PU stretch cord | 1 m | Ø1mm | e.g. "Stretch Magic" or "Magic String" | [Aliexpress](https://www.aliexpress.us/item/3256805953910514.html)| ![Pu strech cord](images/PU_StretchCord.png)|
| Neodym Cylinder Magnet | 70 | Ø3mm h=5 mm | N52 Grade | [Ebay Link]()|
| Brass Pipe | 1 m | OD=Ø2mm ID=Ø1 mm | | [Amazon](https://a.co/d/1pRFmtf)| ![Brass Pipe](images/BrassPipe.png)|
| M2 Screw | 12 | M2×12 mm, Countersunk | | |
| M3 Grub Screw | 6 | M3×4 | | |
## Electronics
| Name | Qty | Description | Comments | Suggested link | Image |
|------|-----|-------------|----------|----------------|-------|
| DC-DC Step Down Module | 1 | 4.7523 V Step-Down Buck Converter | | [Aliexpress](https://www.aliexpress.us/item/3256806752772875.html)| ![DC-DC Step Down](images/DC_DC-StepDown.png)|
| Steel ball | 12 | Ø1 mm (0.04") | Precision G10 or better. Can be sourced from small ball bearings | |
| PU stretch cord | 1 m | Ø1mm | e.g. "Stretch Magic" or "Magic String" | [Aliexpress](https://www.aliexpress.us/item/3256805953910514.html)| ![Pu strech cord](images/PU_StretchCord.png)|
| Neodym Cylinder Magnet | 70 | Ø3mm h=5 mm | N52 Grade | [NeoMagnets](https://www.buyneomagnets.com/p/3mm-dia-x-5mm-thick-n52-neodymium-rare-earth-disc-magnets-100-pack/)|
| Brass Pipe | 1 m | OD=Ø2mm ID=Ø1 mm | | [Amazon](https://a.co/d/1pRFmtf)| ![Brass Pipe](images/BrassPipe.png)|
| M2-8 dowel | 9 | | | | |
| SHCS M2-8 | 9 | | | | |
| Set Screw M3-6 | 3 | | | | |
| FHCS M3-6 | 3 | | | | |
| FHCS M3-10 | 9 | | | | |
| FHCS M3-20 | 12 | | | | |
| Crimp Beads | 12 | | Used to affix the ends of the PU cord | | |
## Electronics
| Name | Qty | Description | Comments | Suggested link | Image |
|------|-----|-------------|----------|----------------|-------|
| DC-DC Step Down Module | 1 | 5V Fixed Output Step-Down Buck Converter | | [Aliexpress](https://www.aliexpress.com/item/1005008257960729.html)| ![DC-DC Step Down](images/Fixed_DC_DC-StepDown.png)|
| (1N5819) OR (PMEG4010) | 1 | Diode (through-hole or SMD) | | |
| Raspberry Pi Pico 2 | 1 | Microcontroller board | | | ![Raspberry Pi Pico 2](images/RaspberryPiPico2.png)|
| MT6835 Magnetic Encoder Module | 3 | Magnetic encoder | | [Aliexpress](https://www.aliexpress.us/item/3256808005140674.html)| ![MT6835 Magnetic Encoder Module](images/MT6835.png)|
@ -21,17 +27,51 @@
| 470 µF Electrolytic Capacitor | 3 | > 100 µF | anything > 100µF will work well | |
| 10 µF Ceramic Capacitor 0603 | 3 | Optional | | |
| 4.7 k Resistor 0603 | 2 | Optional | | |
| 2 Pin Power Header | 1 | 7.5 mm pitch | | |
| 4 Pin Header | 4 | 2.5 mm pitch | | |
| 8 Pin Header | 1 | 2.0 mm pitch | | |
| NEMA 17 Stepper Motor | 3 | Body ≤ 38 mm | Body length <= 38mm | |
| JST XH2.54 4P connector | 3 | 4P Housing & Header 2.54mm pitch | J1, J2, J3 (motors) | [Aliexpress](https://www.aliexpress.com/item/1005007080333485.html?spm=a2g0o.order_list.order_list_main.53.3d5d1802JZg5Wb) | ![JST XH2.54 Connector](images/JST_XH2.54_Connector.png) |
| XT60H Connector | 1 | 2P Male & Female pair 7.5mm pitch | Power connector | [Aliexpress](https://www.aliexpress.com/item/1005007605928815.html?spm=a2g0o.order_list.order_list_main.409.3d5d1802JZg5Wb) | ![XT60H Connector](images/XT60H_Pairs.png) |
| PH2.0 4P Housing <br> PH2.0 8P Housing | 1 <br> 1 | 4P 2mm pitch Housing <br> 8P 2mm pitch Housing | J5 (tool/I2C)<br> J4 (encoders) | [Aliexpress](https://www.aliexpress.com/item/1005010491403413.html?spm=a2g0o.order_detail.order_detail_item.3.2b60126a5SMahl) | ![PH2.0 Housings](images/PH2_Housings.png) |
| PH2.0 4P Header <br> PH2.0 8P Header | 1 <br> 1 | 4P 2mm pitch Header <br> 8P 2mm pitch Header | J5 (tool/I2C) <br> J4 (encoders) | [Aliexpress](https://www.aliexpress.com/item/1005010491403413.html?spm=a2g0o.order_detail.order_detail_item.3.2b60126a5SMahl) | ![PH2.0 Headers](images/PH2_Headers.png) |
## PCBs
| Name | Qty | Description | Comments | Image |
| ------------------- | --- | ----------- | -------- | ----- |
| Control Board | 1 | | | |
| balljoint_plate_pcb | 6 | | | |
## 3D Printing
| Name | Qty | Description | Comments | Image |
|------|-----|-------------|----------|-------|
| Motor Horn | 3 | | 0.4 mm+ nozzle may require post-processing | ![Motor Horn](images/MotorHorn.png)|
| RubberBandCollet | 12 | | 0.4 mm nozzle, 0.1mm Layer height + may require post-processing | ![Rubber Band Collet](images/RubberBandCollet.png)|
| BallJointMount | 6 | | 0.4 mm nozzle, 0.1mm Layer height + may require post-processing | ![Ball Joint Mount](images/BallJointMount.png)|
| Motor Mount | 3 | | | ![Motor Mount](images/MotorMount.png)|
| End Effector | 1 | | | ![End Effector](images/EndEffector.png)|
| Base Block | 1 | | | ![Base Block](images/BaseBlock.png)|
| Name | Qty | Description | Comments | Image |
| ------------------- | --- | ----------- | --------------------------------------------------------------- | -------------------------------------------------- |
| Motor Horn | 3 | | 0.4 mm+ nozzle may require post-processing | ![Motor Horn](images/MotorHorn.png) |
| RubberBandCollet | 12 | | 0.4 mm nozzle, 0.1mm Layer height + may require post-processing | ![Rubber Band Collet](images/RubberBandCollet.png) |
| Motor Mount | 3 | | | ![Motor Mount](images/MotorMount.png) |
| End Effector | 1 | | | ![End Effector](images/EndEffector.png) |
| Base Block | 1 | | | ![Base Block](images/BaseBlock.png) |
# Tool - Rod Sharpener
## 3D Printing
| Name | Qty | Description | Comments | Image |
| ------------- | --- | ----------- | -------- | ----- |
| Rod Guide | 1 | | | |
| Blade Carrier | 1 | | | |
# Tool - Rod Length Setting Press
## PCBs
| Name | Qty | Description | Comments | Image |
| ----------------------- | --- | ----------- | -------- | ----- |
| ball_alignment_disc_pcb | 1 | | | |
## 3D Printing
| Name | Qty | Description | Comments | Image |
| ----------------------- | --- | ----------- | -------- | ----- |
| RodGrindingJigA | 1 | | | |
| RodGrindingJigB | 1 | | | |
| RodGuide | 1 | | | |
| RodCollet | 2 | | | |
| CaliperClamp | 2 | | | |

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View file

@ -0,0 +1,36 @@
# Setup Guide
This guide walks you through the setup of your new **Open Micro-Manipulator** device.
## Checklist for New Devices
1. **Was the mechanical limit pin added to the rotor?**
This pin is required for proper homing of the device.
<div style="display: flex;">
<img src="mechanical_limit_pin.jpg" alt="Mechanical Limit Pin" width="40%">
</div>
2. **Are the screws that secure the rotor to the motor shaft installed?**
If the rotor is not firmly attached, it may slip imperceptibly during homing or other movements, leading to problems during calibration and homing.
3. **Is the homing direction correct?**
During the homing command (`G28`), the end effector should move toward the base.
If it moves in the opposite direction, rewire the motor to reverse its direction.
<div style="display: flex;">
<img src="homing_direction.jpg" alt="Mechanical Limit Pin" width="40%">
</div>
## Calibration and Checking the Encoders
You can use the calibration plotter to check if your encoders are working as expected.
On the left you see a good calibration on the right a bad calibration.
| <img src="good_calibration.jpg"> | <img src="bad_calibration.jpg"> |
:--:|:--:
| **Good calibration** | **Bad calibration** |
THIS DOCUMENT IS UNFINISHED AND WORK IN PROGRESS...

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,632 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": true,
"text_position": 0,
"units_format": 0
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.8,
"height": 1.27,
"width": 2.54
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.25
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"creepage": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_filters_mismatch": "ignore",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_to_hole": "warning",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"mirrored_text_on_front_layer": "warning",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"nonmirrored_text_on_back_layer": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_on_edge_cuts": "error",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_angle": "error",
"track_dangling": "warning",
"track_segment_length": "error",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_groove_width": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpthpad": true,
"td_onroundshapesonly": false,
"td_onsmdpad": true,
"td_ontrackend": false,
"td_onvia": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_pairs": [],
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"footprint_filter": "ignore",
"footprint_link_issues": "warning",
"four_way_junction": "ignore",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"label_multiple_wires": "warning",
"lib_symbol_issues": "warning",
"lib_symbol_mismatch": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"same_local_global_label": "warning",
"similar_label_and_power": "warning",
"similar_labels": "warning",
"similar_power": "warning",
"simulation_model_issue": "ignore",
"single_global_label": "ignore",
"unannotated": "error",
"unconnected_wire_endpoint": "warning",
"undefined_netclass": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "EncoderBoard.kicad_pro",
"version": 3
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"priority": 2147483647,
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 4
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "encoder-gerber",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "${PROJECTNAME}.csv",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": true,
"label": "Exclude from BOM",
"name": "${EXCLUDE_FROM_BOM}",
"show": true
},
{
"group_by": true,
"label": "Exclude from Board",
"name": "${EXCLUDE_FROM_BOARD}",
"show": true
},
{
"group_by": true,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"include_excluded_from_bom": true,
"name": "Default Editing",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"space_save_all_events": true,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"76a3543d-18d5-494b-9749-b3ee4fa138fc",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load diff

View file

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more