Add KiCad PCB file

This commit is contained in:
Lexi / Zoe 2024-03-08 11:39:12 +01:00
parent 622ca02b08
commit 622dc6feff
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
4 changed files with 59268 additions and 0 deletions

12
.gitignore vendored
View File

@ -22,3 +22,15 @@ dist
# Ergogen
/ergogen/output
# Kicad temporary files
kicad/*-backups/
*.bak
*.kicad_pcb-bak
*.kicad_sch-bak
*.kicad_prl
*-save.pro
*-save.kicad_pcb
~*.lck
_autosave-*
fp-info-cache

View File

@ -7,6 +7,47 @@ Custom macro key pad with mechanical low-profile (Choc) switches.
- `/layouts`: Keyboard layouts created with the [Keyboard Layout Editor](http://www.keyboard-layout-editor.com)
- `/ergogen`: [Ergogen](https://docs.ergogen.xyz/) files to generate outlines, cases and PCBs
## How-to
### Generating the PCB
To generate the KiCad PCB file with Ergogen, first install Ergogen using npm: `npm install`.
Then, run `npm run ergogen`. You can find the KiCad file in `ergogen/output/pcbs/eepypad.kicad_pcb`.
Copy the file to `kicad/eepypad.kicad_pcb`.
Open the file in KiCad (create a project if non exists yet). Finalize the PCB in KiCad.
1. (Optional) Run the Design Rules Checker. Check the errors. Most of them can be ignored/excluded.
- All "Footprint not found in libraries" can be ignored completely. This is due to how Ergogen generates the PCB.
- The "Board edge clearance" violations are mostly about the cutout for the LED chips.
2. Add VCC and GND planes.
- Menu: `File -> Board Setup`
- On "Physical Stackup", change the copper layer number to 4.
- On "Board Editor Layers", change the type of `In1.Cu` and `In2.Cu` to "power plane".
- NOTE: `In1.Cu` will be the VCC plane, `In2.Cu` will be a GND plane.
3. Add filled zones to the VCC and GND planes.
- Select the `In1.Cu` layer.
- Use the "Add a filled zone" tool and draw a rectangle that contains the entire board. Assign the zone to VCC.
- Repeat the same process for the `In2.Cu` layer and assign the zone to GND.
- The zones don't need to be filled just yet.
4. Add another filled zone on the `B.Cu` layer and assign it to GND.
5. Route all signal traces (no VCC or GND yet). Recommended order:
- Matrix rows (on `B.Cu`)
- Matrix columns (with vias on `F.Cu`)
- NeoPixel data pins
- Connect everything to the MCU.
6. Route VCC traces.
- Connect the VCC traces between the NeoPixel chips and the capacitors with a 0.750 mm track.
- Place free-standing vias (Ctrl+Shift+V) in the middle of the just created VCC traces.
7. Route GND traces.
- Draw short GND traces with a 0.750 mm track and a via at the end next to the GND pads of the NeoPixel chips.
8. Fill all zones by pressing B. Make sure that all nets are routed.
9. Run the Design Rules Checker and make sure there are no (relevant) violations.
10. Add some fancy text on the `F.Silkscreen` layer.
TODO: How to export?
## Used software
- [Keyboard Layout Editor](http://www.keyboard-layout-editor.com)

58682
kicad/eepypad.kicad_pcb Normal file

File diff suppressed because it is too large Load Diff

533
kicad/eepypad.kicad_pro Normal file
View File

@ -0,0 +1,533 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"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.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"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.09999999999999999,
"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.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.12,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.508
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "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_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "ignore",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "ignore",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"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.075,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.39999999999999997,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.75
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "eepypad.kicad_pro",
"version": 1
},
"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)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.25,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": [
{
"netclass": "Default",
"pattern": ""
},
{
"netclass": "Default",
"pattern": "one_one"
},
{
"netclass": "Default",
"pattern": "P5"
},
{
"netclass": "Default",
"pattern": "one_two"
},
{
"netclass": "Default",
"pattern": "P6"
},
{
"netclass": "Default",
"pattern": "one_three"
},
{
"netclass": "Default",
"pattern": "P7"
},
{
"netclass": "Default",
"pattern": "one_four"
},
{
"netclass": "Default",
"pattern": "P8"
},
{
"netclass": "Default",
"pattern": "one_five"
},
{
"netclass": "Default",
"pattern": "P9"
},
{
"netclass": "Default",
"pattern": "two_one"
},
{
"netclass": "Default",
"pattern": "two_two"
},
{
"netclass": "Default",
"pattern": "two_three"
},
{
"netclass": "Default",
"pattern": "two_four"
},
{
"netclass": "Default",
"pattern": "two_five"
},
{
"netclass": "Default",
"pattern": "three_one"
},
{
"netclass": "Default",
"pattern": "three_two"
},
{
"netclass": "Default",
"pattern": "three_three"
},
{
"netclass": "Default",
"pattern": "three_four"
},
{
"netclass": "Default",
"pattern": "three_five"
},
{
"netclass": "Default",
"pattern": "four_one"
},
{
"netclass": "Default",
"pattern": "four_two"
},
{
"netclass": "Default",
"pattern": "four_three"
},
{
"netclass": "Default",
"pattern": "four_four"
},
{
"netclass": "Default",
"pattern": "four_five"
},
{
"netclass": "Default",
"pattern": "five_one"
},
{
"netclass": "Default",
"pattern": "five_two"
},
{
"netclass": "Default",
"pattern": "five_three"
},
{
"netclass": "Default",
"pattern": "five_four"
},
{
"netclass": "Default",
"pattern": "five_five"
},
{
"netclass": "Default",
"pattern": "P3"
},
{
"netclass": "Default",
"pattern": "P4"
},
{
"netclass": "Default",
"pattern": "GND"
},
{
"netclass": "Default",
"pattern": "P18"
},
{
"netclass": "Default",
"pattern": "P15"
},
{
"netclass": "Default",
"pattern": "P14"
},
{
"netclass": "Default",
"pattern": "P16"
},
{
"netclass": "Default",
"pattern": "P10"
},
{
"netclass": "Default",
"pattern": "led_dout_two_one"
},
{
"netclass": "Default",
"pattern": "led_dout_one_one"
},
{
"netclass": "Default",
"pattern": "VCC"
},
{
"netclass": "Default",
"pattern": "led_dout_two_three"
},
{
"netclass": "Default",
"pattern": "led_dout_one_three"
},
{
"netclass": "Default",
"pattern": "led_dout_two_five"
},
{
"netclass": "Default",
"pattern": "led_dout_one_five"
},
{
"netclass": "Default",
"pattern": "led_dout_three_one"
},
{
"netclass": "Default",
"pattern": "led_dout_three_three"
},
{
"netclass": "Default",
"pattern": "led_dout_three_five"
},
{
"netclass": "Default",
"pattern": "led_dout_four_one"
},
{
"netclass": "Default",
"pattern": "led_dout_four_three"
},
{
"netclass": "Default",
"pattern": "led_dout_four_five"
},
{
"netclass": "Default",
"pattern": "led_dout_five_one"
},
{
"netclass": "Default",
"pattern": "led_dout_five_three"
},
{
"netclass": "Default",
"pattern": "P19"
},
{
"netclass": "Default",
"pattern": "led_dout_five_two"
},
{
"netclass": "Default",
"pattern": "led_dout_five_four"
},
{
"netclass": "Default",
"pattern": "led_dout_one_two"
},
{
"netclass": "Default",
"pattern": "led_dout_one_four"
},
{
"netclass": "Default",
"pattern": "led_dout_two_two"
},
{
"netclass": "Default",
"pattern": "led_dout_two_four"
},
{
"netclass": "Default",
"pattern": "led_dout_three_two"
},
{
"netclass": "Default",
"pattern": "led_dout_three_four"
},
{
"netclass": "Default",
"pattern": "led_dout_four_two"
},
{
"netclass": "Default",
"pattern": "led_dout_four_four"
},
{
"netclass": "Default",
"pattern": "RAW"
},
{
"netclass": "Default",
"pattern": "RST"
},
{
"netclass": "Default",
"pattern": "P21"
},
{
"netclass": "Default",
"pattern": "P20"
},
{
"netclass": "Default",
"pattern": "P1"
},
{
"netclass": "Default",
"pattern": "P0"
},
{
"netclass": "Default",
"pattern": "P2"
}
]
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"legacy_lib_dir": "",
"legacy_lib_list": []
},
"sheets": [],
"text_variables": {}
}