Compare commits
3 Commits
f01077cf75
...
de5b4b52cb
| Author | SHA1 | Date |
|---|---|---|
|
|
de5b4b52cb | |
|
|
70aa121395 | |
|
|
561cbade1f |
|
|
@ -3,52 +3,16 @@
|
||||||
*.bak
|
*.bak
|
||||||
*.bck
|
*.bck
|
||||||
*~
|
*~
|
||||||
#*
|
\#*
|
||||||
.#*
|
.#*
|
||||||
*.kicad_pcb-bak
|
*.kicad_pcb-bak
|
||||||
*.kicad_pro.bak
|
*.kicad_pro.bak
|
||||||
*.kicad_sch.bak
|
*.kicad_sch.bak
|
||||||
|
*.lck
|
||||||
# Ignore automatically generated files
|
sym-lib-table
|
||||||
*.erc
|
fp-lib-table
|
||||||
*.net
|
fp-info-cache
|
||||||
*-cache.lib
|
*.cache
|
||||||
*-rescue.lib
|
*-backups
|
||||||
*.dcm
|
|
||||||
*.lib
|
|
||||||
*.mod
|
|
||||||
*.cmp
|
|
||||||
*.gbr
|
|
||||||
*.drl
|
|
||||||
*.pos
|
|
||||||
*.rpt
|
|
||||||
*.log
|
|
||||||
*.zip
|
|
||||||
*.pdf
|
|
||||||
*.svg
|
|
||||||
*.png
|
|
||||||
*.json
|
|
||||||
*.html
|
|
||||||
*.xml
|
|
||||||
*.csv
|
|
||||||
*.txt
|
|
||||||
*.bom
|
|
||||||
*.kicad_wks
|
|
||||||
*.kicad_dru
|
|
||||||
*.kicad_sym
|
|
||||||
*.kicad_mod
|
|
||||||
*.fpc
|
|
||||||
*.kicad_prl
|
*.kicad_prl
|
||||||
|
_autosave*
|
||||||
# Project local settings files and backups
|
|
||||||
*.kicad_prl
|
|
||||||
|
|
||||||
# macOS specific files
|
|
||||||
.DS_Store
|
|
||||||
._*
|
|
||||||
|
|
||||||
# Windows specific files
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
# Editor/OS fluff
|
|
||||||
*.swp
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,614 @@
|
||||||
|
{
|
||||||
|
"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.15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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.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": [],
|
||||||
|
"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",
|
||||||
|
"undefined_netclass": "error",
|
||||||
|
"unit_value_mismatch": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"wire_dangling": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"pinned_footprint_libs": [],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "PowerProfiler.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": "Referenz"
|
||||||
|
},
|
||||||
|
"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": [],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
(kicad_sch
|
||||||
|
(version 20250114)
|
||||||
|
(generator "eeschema")
|
||||||
|
(generator_version "9.0")
|
||||||
|
(uuid e4bfa966-4d19-41fd-8230-f213f4db5fbf)
|
||||||
|
(paper "A4")
|
||||||
|
(lib_symbols)
|
||||||
|
(sheet_instances
|
||||||
|
(path "/"
|
||||||
|
(page "1")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(embedded_fonts no)
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,139 @@
|
||||||
|
(footprint "ESN4"
|
||||||
|
(version 20241229)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "9.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -2.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7cfbc37f-4678-4ba3-8428-57b957a0fc94")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "ESN4"
|
||||||
|
(at 0 -0.8 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "b3f537d9-bc6a-4cb1-904b-cc97d6bd2b8b")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "../../../../doc/datasheets/LiIon Protection/XB4908.pdf"
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "57392a18-2d0d-4687-b2a9-bbcecb3e94fc")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "6bc6ac70-16dc-4f04-9243-faee36cd5070")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_poly
|
||||||
|
(pts
|
||||||
|
(xy -1.85 -1.65) (xy -1.45 -1.65) (xy -1.65 -1.35)
|
||||||
|
)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "084cce54-6d9b-4eab-978f-b183c22588cf")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -2.15 -1.675)
|
||||||
|
(end 2.15 1.675)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill no)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "ff77d0a4-c1cd-4cf7-a5e5-0eba6acb6670")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -1.15 -1.4)
|
||||||
|
(end 1.15 1.4)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill no)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "e375870b-9f7b-44e0-950c-a6f973fcd63a")
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}"
|
||||||
|
(at 0 0.7 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "75a216b8-c3e9-4c2e-a898-8ae4e80a6381")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at -1.632 -0.793)
|
||||||
|
(size 0.636 0.45)
|
||||||
|
(layers "F.Cu" "F.Mask" "F.Paste")
|
||||||
|
(uuid "ef4f3180-156b-4edd-8e8a-407b3d466b9e")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at -1.632 0.445)
|
||||||
|
(size 0.636 1.146)
|
||||||
|
(layers "F.Cu" "F.Mask" "F.Paste")
|
||||||
|
(uuid "ff8956fc-c762-47a6-a404-a45bb1832b93")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at 1.632 0.5365)
|
||||||
|
(size 0.663 0.873)
|
||||||
|
(layers "F.Cu" "F.Mask" "F.Paste")
|
||||||
|
(uuid "ef49f64d-beed-49be-aa46-87820fa9d145")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at 1.632 -0.5365)
|
||||||
|
(size 0.636 0.873)
|
||||||
|
(layers "F.Cu" "F.Mask" "F.Paste")
|
||||||
|
(uuid "af0dd650-7d84-4dff-ba2c-32a7398fd15a")
|
||||||
|
)
|
||||||
|
(embedded_fonts no)
|
||||||
|
(model "../3D/ESN4.step"
|
||||||
|
(offset
|
||||||
|
(xyz 0 0 0)
|
||||||
|
)
|
||||||
|
(scale
|
||||||
|
(xyz 1 1 1)
|
||||||
|
)
|
||||||
|
(rotate
|
||||||
|
(xyz -90 -0 -0)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
@ -15,6 +15,9 @@
|
||||||
- [Akkuschutz](#akkuschutz)
|
- [Akkuschutz](#akkuschutz)
|
||||||
- [Fuel Gauge](#fuel-gauge)
|
- [Fuel Gauge](#fuel-gauge)
|
||||||
- [CR1220](#cr1220)
|
- [CR1220](#cr1220)
|
||||||
|
- [Energiebilanz Li-Ion-Akku](#energiebilanz-li-ion-akku)
|
||||||
|
- [Ausgangsdaten](#ausgangsdaten)
|
||||||
|
- [Verbrauchsrechnung](#verbrauchsrechnung)
|
||||||
- [Energiewandlung](#energiewandlung)
|
- [Energiewandlung](#energiewandlung)
|
||||||
- [Lader](#lader)
|
- [Lader](#lader)
|
||||||
- [3.3V Buck-Boost-Wandler (DC/DC-Wandler)](#33v-buck-boost-wandler-dcdc-wandler)
|
- [3.3V Buck-Boost-Wandler (DC/DC-Wandler)](#33v-buck-boost-wandler-dcdc-wandler)
|
||||||
|
|
@ -94,13 +97,41 @@ Damit das Gerät auch bei ausschließlich gesteckter Debug-Verbindung funktionie
|
||||||
Als Akku sind zwei parallelgeschaltete 18650-Zellen vorgesehen. Diese werden mittels Nickelstreifen verschweißt, mit einem NTC-Temperatursensor versehen und eingeschrumpft. Die Verbindung zur Hauptplatine ist vierpolig (`BAT+`, `BAT-`, `NTC`, `GND`), da sich die [Akkuschutzschaltung](#akkuschutz) auf der Hauptplatine befindet. Diese trennt im Fehlerfall die `BAT-` Leitung vom Rest der Schaltung (`GND`). Wäre der NTC-Temperatursensor nur zwischen `BAT+` und `BAT-` angeschlossen, hätte er nach einer Trennung kein definiertes Potenzial mehr (floating). Ein an `GND` referenzierter Messeingang am [Lader](#lader) könnte die Temperatur nicht mehr korrekt erfassen. Durch die separate `GND`-Verbindung für den NTC wird dieses Problem umgangen.
|
Als Akku sind zwei parallelgeschaltete 18650-Zellen vorgesehen. Diese werden mittels Nickelstreifen verschweißt, mit einem NTC-Temperatursensor versehen und eingeschrumpft. Die Verbindung zur Hauptplatine ist vierpolig (`BAT+`, `BAT-`, `NTC`, `GND`), da sich die [Akkuschutzschaltung](#akkuschutz) auf der Hauptplatine befindet. Diese trennt im Fehlerfall die `BAT-` Leitung vom Rest der Schaltung (`GND`). Wäre der NTC-Temperatursensor nur zwischen `BAT+` und `BAT-` angeschlossen, hätte er nach einer Trennung kein definiertes Potenzial mehr (floating). Ein an `GND` referenzierter Messeingang am [Lader](#lader) könnte die Temperatur nicht mehr korrekt erfassen. Durch die separate `GND`-Verbindung für den NTC wird dieses Problem umgangen.
|
||||||
|
|
||||||
#### Akkuschutz
|
#### Akkuschutz
|
||||||
Als Akkuschutz kommt ein **FM2113** zum Einsatz. Dieser steuert zwei N-Kanal-MOSFETs (für Laden und Entladen), die in einer Common-Drain-Schaltung zwischen `BAT-` und `GND` platziert sind. Er schützt den Akku vor *Überladung*, *Tiefentladung* und *Überstrom*.
|
Als Akkuschutz habe ich zuerst an den *FM2113* gedacht. Bei der Auslegung der N-FETs wurde dann aber klar, dass er nicht geeignet ist. Das Problem dabei ist, dass er R<sub>DSON</sub> zur Strommessung benutzt. Um ein Auslösen der Überstromsicherung im Worts Case kommen bei 3A Standardkandidaten wie der *AO3400A* oder de *MDD2302* nicht in Frage, sie sind leider nicht genügend Niederohmig. Der *AO3400A* kann die Wärme bei 3A nicht abführen. Der *MDD2302* würde thermisch passen. Bei 2.5V hat er einen maximalen R<sub>DSON</sub> von 35mΩ, die Verlustleistung bei 3A beträgt also
|
||||||
|
$$
|
||||||
|
P=R \cdot I^2 = 35\text{mΩ} \cdot (3\text{A})^2 = 315\text{mW}
|
||||||
|
$$
|
||||||
|
was bei 100K/W thermischen Widerstand kein Problem darstellt. Allerdings beträgt der Spannungsabfall
|
||||||
|
$$
|
||||||
|
\Delta U=R \cdot I = 35\text{mΩ} \cdot 3 \text{A} = 105\text{mV}
|
||||||
|
$$
|
||||||
|
Da in der Schutzschaltung 2 FETs in Common-Drain-Schaltung vorhanden sind ergibt das total 210mV. Laut Datenblatt kann der *FM2113* bereits bei 120mV einen Überstrom erkennen.
|
||||||
|
Bessere FETs sind selten, grösser und/oder teuerer. Bei meiner Suche bin ich dann über den **XB4908A** von XySemi gestossen, eine LiPo-Protection-IC mit integrierten FETs. Der Baustein schützt vor *Überladung*, *Tiefentladung* und *Überstrom*. Die wichtigsten Daten will ich hier aufführen, da der Chip wohl nicht sehr bekannt sein dürfte:
|
||||||
|
|Parameter|Symbol|Wert|
|
||||||
|
|---|---|---|
|
||||||
|
|Überladespannungsauslösung|OCV|4.30V|
|
||||||
|
|Überladespannungsauflösung|OCRV|4.10V|
|
||||||
|
|Tiefentladeauslösung|ODV|2.4V|
|
||||||
|
|Tiefentladeauflösung|ODRV|3V|
|
||||||
|
|Strombedarf im Betrieb|I<sub>OPE</sub>|typ. 3.3μA|
|
||||||
|
|Strombedarf im Powerdown|I<sub>PD</sub>|typ. 1.8μA|
|
||||||
|
|Widerstand|R<sub>SS(on)</sub>|typ. 13.5mΩ|
|
||||||
|
|Überstromabschaltung entladen|I<sub>IOV1</sub>|min. 6A|
|
||||||
|
|Überstromabschaltung laden|I<sub>ROV1</sub>|min. 4A|
|
||||||
|
|Thermischer Widerstand zur Umgebung|θ<sub>JC</sub>|100K/W|
|
||||||
|
|
||||||
|
Dieser IC ist also passend für diese Anwendung. Der R<sub>SS(on)</sub> (SS, da da zwei nFETs in Common-Drain-Schaltung drin sind, also der Widerstand zwischen den beiden Sourcen) ist leider nur als typischer Wert angegeben. Für die thermische Abschätzung gehe ich also daher von 20mΩ aus. Damit erhalte ich
|
||||||
|
$$
|
||||||
|
P=R \cdot I^2 = 20\text{mΩ} \cdot (3\text{A})^2 = 180\text{mW} \\
|
||||||
|
\Delta T = P \cdot \Theta_{JC} = 180\text{mW} \cdot 100\text{K/W} = 18\text{K}
|
||||||
|
$$
|
||||||
|
Eine Erwärmung um 18K bei maximalem Ladestrom sollte absolut kein Problem sein.
|
||||||
|
|
||||||
#### Fuel Gauge
|
#### Fuel Gauge
|
||||||
Als Fuel Gauge wird der **BQ27441-G1** von Texas Instruments eingesetzt. Der ursprünglich vorgesehene **BQ27427** ist nur für einen Dauerstrom von 2A ausgelegt, wodurch das Potenzial des [Laders](#lader) und des [Li-Ion-Akkus](#li-ion-akku) nicht ausgenutzt werden könnte.
|
Als Fuel Gauge wird der **BQ27441-G1** von Texas Instruments eingesetzt. Der ursprünglich vorgesehene *BQ27427* ist nur für einen Dauerstrom von 2A ausgelegt, womit die vollen Möglichkeiten des [Laders](#lader) und des [Li-Ion-Akkus](#li-ion-akku) nicht ausgenutzt werden könnten.
|
||||||
Zur Strommessung ist ein `0.01Ω` Shunt-Widerstand vorgesehen. Hierbei ist die Temperaturstabilität des Widerstands wichtiger als sein exakter Wert, da dieser in der Fuel Gauge kalibriert werden kann.
|
Zur Strommessung ist ein `0.01Ω` Shunt-Widerstand vorgesehen. Hierbei ist vor allem die Temperaturstabilität maßgeblich, da der genaue Widerstandswert im BQ27221 konfiguriert/kalibriert werden kann.
|
||||||
Die Verlustleistung am Widerstand ist mit 90mW bei 3A gering:
|
Die Verlustleistung am Widerstand ist relativ gering:
|
||||||
$$
|
$$
|
||||||
\begin{align}
|
\begin{align}
|
||||||
P &= R \cdot I^2 \\
|
P &= R \cdot I^2 \\
|
||||||
&= 0.01\text{Ω} \cdot (3\text{A})^2 \\
|
&= 0.01\text{Ω} \cdot (3\text{A})^2 \\
|
||||||
|
|
@ -119,13 +150,49 @@ stateDiagram-v2
|
||||||
note right of Nachlauf
|
note right of Nachlauf
|
||||||
DC/DC wird von der RTC regelmässig gestartet um die Temperatur zu übermitteln.
|
DC/DC wird von der RTC regelmässig gestartet um die Temperatur zu übermitteln.
|
||||||
end note
|
end note
|
||||||
note right of Tiefschlaf
|
note left of Tiefschlaf
|
||||||
DC/DC ausgeschaltet
|
DC/DC ausgeschaltet
|
||||||
end note
|
end note
|
||||||
```
|
```
|
||||||
#### CR1220
|
#### CR1220
|
||||||
Eine CR1220-Knopfzelle dient als Backup-Versorgung für die RTC. Die Batterie wird im Normalfall für sehr lange Zeit (>10 Jahre) ausreichen, da die RTC primär vom [Li-Ion-Akku](#li-ion-akku) versorgt wird, solange die Schutzschaltung nicht ausgelöst hat.
|
Eine CR1220-Knopfzelle dient als Backup-Versorgung für die RTC. Die Batterie wird im Normalfall für sehr lange Zeit (>10 Jahre) ausreichen, da die RTC primär vom [Li-Ion-Akku](#li-ion-akku) versorgt wird, solange die Schutzschaltung nicht ausgelöst hat.
|
||||||
|
|
||||||
|
### Energiebilanz Li-Ion-Akku
|
||||||
|
Die Energiebilanz im Betrieb kann erst wirklich bestimmt werden, wenn die Schaltung aufgebaut ist. Um die Auslegung zu prüfen habe ich aber überschlagen, wie viel die Schaltung in einem Deep-Power-Down-Modus verbraucht. Die Strategie ist, bei unter 3V in einen sicheren Deep-Power-Down-Modus zu gehen, um eine Tiefentladung des Akkus möglichst lange zu verhindern.
|
||||||
|
Sollte Entladung des Akkus erkannt werden, so wird der Lader in den Ship-Zustand geschaltet und die Fuel Gauge in den Shutdown. Der Lader wird durch das Einstecken einer externen Versorgung automatisch wieder geweckt. Die Fuel Gauge muss über den GP-Pin vom Mikrocontroller geweckt werden.
|
||||||
|
```mermaid
|
||||||
|
stateDiagram-v2
|
||||||
|
[*] --> Betrieb
|
||||||
|
Betrieb --> DeepPowerDown: Akkuspannung < 3V
|
||||||
|
DeepPowerDown --> Aufwachen: Stecken einer externen Energiequelle
|
||||||
|
Aufwachen --> Betrieb: Übergang durch Mikrocontroller
|
||||||
|
note right of DeepPowerDown
|
||||||
|
Microcontroller schaltet Fuel Gauge und Lader in niedrigen Verbrauch, dadurch wird Speisung gekappt
|
||||||
|
end note
|
||||||
|
note left of Aufwachen
|
||||||
|
Mikrocontroller muss Fuel Gauge wecken
|
||||||
|
end note
|
||||||
|
```
|
||||||
|
|
||||||
|
Vorgesehen sind 2x3200mAh-18650-Zellen parallel. Zur Sicherheit rechne ich mit 2x2600Ah, falls doch einmal kleinere Zellen eingesetzt werden.
|
||||||
|
|
||||||
|
#### Ausgangsdaten
|
||||||
|
|Wert|Kapazität|
|
||||||
|
|---|---:|
|
||||||
|
|Nennkapazität|5'200mAh|
|
||||||
|
|Alterung, Rest 80%|4'106mAh|
|
||||||
|
|Restkapazität unter 3V bis zur kritischen Spannung von 2.5V: 10%|**41mAh**|
|
||||||
|
#### Verbrauchsrechnung
|
||||||
|
Beim Verbrauch fliessen die Worst-Case (höchsten) Angaben ein:
|
||||||
|
|Verbraucher|Verbrauch|
|
||||||
|
|---|---:|
|
||||||
|
|Schutzschaltung XB4908A|6μA|
|
||||||
|
|Fuel Gauge BQ27441-G1 (im Datenblatt steht nur der typische Verbrauch von 0.6μA, Worst-Case geschätzt)|1μA|
|
||||||
|
|Lader BQ25672(0.7μA laut Datenblatt, aufgerunden|1μA|
|
||||||
|
|**total**|**8μA**|
|
||||||
|
|
||||||
|
In der Worst-Case-Betrachtung haben wir also 41mAh zur Verfügung bei einem Verbrauch von 8uA, die Restkapazität reicht folglich für $\frac{41\text{mAh}}{8\text{uA}}=5125\text{h}$, bis der Akku in einen chemisch kritischen Zustand kommt. Das entspricht 213 Tagen oder fast sieben Monate. Die Selbstentladung ist hierbei nicht eingerechnet, trotzdem ist dies ein Wert, er mir absolut keine Bauchschmerzen bereitet, vor allem, da dies ja eine absolute Worst-Case-Berechnung ist.
|
||||||
|
|
||||||
### Energiewandlung
|
### Energiewandlung
|
||||||
#### Lader
|
#### Lader
|
||||||
Als Ladechip ist der **BQ25672** vorgesehen. Dieser bietet einige für das Projekt interessante Funktionen:
|
Als Ladechip ist der **BQ25672** vorgesehen. Dieser bietet einige für das Projekt interessante Funktionen:
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue