Added snapshot of current hardware design
This commit is contained in:
63
firmware/docs/implementation-notes.adoc
Normal file
63
firmware/docs/implementation-notes.adoc
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
Motion control in an interrupt.
|
||||||
|
|
||||||
|
= Parts
|
||||||
|
This consists of two parts, the planner and the executor.
|
||||||
|
|
||||||
|
The planner receives target positions. Each time it receives a target
|
||||||
|
position, it replans so as to reach that position as soon as possible;
|
||||||
|
the output of a plan consists of a set of motion segments, each
|
||||||
|
following a 3rd order polynomial.
|
||||||
|
|
||||||
|
The executor processes the current state and decides whether to toggle
|
||||||
|
the step lines of the MCU.
|
||||||
|
|
||||||
|
These two processes communicate by means of a command queue.
|
||||||
|
|
||||||
|
== Executor
|
||||||
|
1. Update a cycle counter
|
||||||
|
2. Evaluates the next output of the position polynomial (3 adds)
|
||||||
|
3. determine whether to toggle a stepper, and do so.
|
||||||
|
4. Determine whether to start the next segment; if so, advance in the command queue.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
== Command queue
|
||||||
|
|
||||||
|
The command queue takes the form of a ring buffer, with each item
|
||||||
|
containing a motion segment. The ring buffer must be large enough to
|
||||||
|
contain a complete motion profile plus a terminating "stop" segment.
|
||||||
|
|
||||||
|
A motion profile segment consists of the following values:
|
||||||
|
|
||||||
|
* For step computation
|
||||||
|
* Δx1..Δx3 (initial values)
|
||||||
|
* start time (in ticks)
|
||||||
|
* For use by the planner
|
||||||
|
* v₀, vₑ: Initial and terminal velocities
|
||||||
|
* a₀, aₑ: Initial and terminal acceleration
|
||||||
|
* The actual position at the start time (written by executor)
|
||||||
|
|
||||||
|
The following invariants hold for the command queue:
|
||||||
|
|
||||||
|
|
||||||
|
== Planner
|
||||||
|
|
||||||
|
=== Aborting
|
||||||
|
|
||||||
|
In case of an abort, the fastest stop profile will consist of at most
|
||||||
|
3 segments: const -jerk to max -a, const -a to to lead-out, const +j
|
||||||
|
to a=v=0.
|
||||||
|
|
||||||
|
If we're already in the last three segments, we're already in
|
||||||
|
a race to a stop, so there's no need to handle an abort specially.
|
||||||
|
|
||||||
|
In the cv segment, we can simply advance the start times of each leadout segment.
|
||||||
|
In the lead-in, we need to replan; this is, however, easy enough:
|
||||||
|
|
||||||
|
1. Predict state in $t_plan$ cycles
|
||||||
|
2. Identify how to reach a=0; prepare a segment accordingly
|
||||||
|
3. Feed the end values from said segment to the leadout calculator
|
||||||
|
4. replace the next N commands with this leadout.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
(footprint "SilentStepStick_Breakout-18_15.2x20.3mm" (version 20211014) (generator pcbnew)
|
||||||
|
(layer "F.Cu")
|
||||||
|
(tedit 6230AFF9)
|
||||||
|
(descr "SilentStepStick 18-pin 15.2x20.3mm 0.6x0.8")
|
||||||
|
(tags "SilentStepStick breakout stepper driver trinamic")
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_text reference "REF**" (at 6.35 -2.54) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 05ccdf2f-c4f0-4475-bcd9-f1ec554057f0)
|
||||||
|
)
|
||||||
|
(fp_text value "Pololu_Breakout-16_15.2x20.3mm" (at 6.35 20.17) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 2e390c47-779d-4587-8c70-b24269f1c29f)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}" (at 6.35 0) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 82866c8a-11ec-4480-b5f2-9f133ec9ac4c)
|
||||||
|
)
|
||||||
|
(fp_line (start 14.1 19.18) (end 14.1 -1.4) (layer "F.SilkS") (width 0.12) (tstamp 15be6a81-38cd-48c0-a658-95ca1cf860cf))
|
||||||
|
(fp_line (start -1.4 19.18) (end 14.1 19.18) (layer "F.SilkS") (width 0.12) (tstamp 1f01e891-6f4f-4dbc-a764-ed5fd2883408))
|
||||||
|
(fp_line (start 11.43 -1.4) (end 11.43 19.18) (layer "F.SilkS") (width 0.12) (tstamp 721011f6-9bad-4233-8e51-f343d657ca00))
|
||||||
|
(fp_line (start 14.1 -1.4) (end 1.27 -1.4) (layer "F.SilkS") (width 0.12) (tstamp 759b5851-f0dc-4bf5-b98e-4fd9c1b2c87b))
|
||||||
|
(fp_line (start 1.27 1.27) (end -1.4 1.27) (layer "F.SilkS") (width 0.12) (tstamp 7cd939fe-f239-48b0-84b0-db4c73b495b0))
|
||||||
|
(fp_line (start 1.27 -1.4) (end 1.27 1.27) (layer "F.SilkS") (width 0.12) (tstamp 84170ae6-30b0-4c7a-a047-8ffd9eac9d74))
|
||||||
|
(fp_line (start 1.27 1.27) (end 1.27 19.18) (layer "F.SilkS") (width 0.12) (tstamp 878a80d1-cd31-4ad5-b401-47da6eede999))
|
||||||
|
(fp_line (start 0 -1.4) (end -1.4 -1.4) (layer "F.SilkS") (width 0.12) (tstamp 888e952f-fd10-49c1-b504-52c23dad5a2e))
|
||||||
|
(fp_line (start -1.4 -1.4) (end -1.4 0) (layer "F.SilkS") (width 0.12) (tstamp 9fd8924e-59be-4220-a4f0-8826996718c3))
|
||||||
|
(fp_line (start -1.4 1.27) (end -1.4 19.18) (layer "F.SilkS") (width 0.12) (tstamp ebba8f54-4f64-4ee3-83f7-542a3b4ce9ff))
|
||||||
|
(fp_line (start 14.21 19.3) (end 14.21 -1.52) (layer "F.CrtYd") (width 0.05) (tstamp 1bfa112d-e2a6-4dd2-9ed5-a9eeda41f009))
|
||||||
|
(fp_line (start -1.53 -1.52) (end -1.53 19.3) (layer "F.CrtYd") (width 0.05) (tstamp 71197baa-69d8-4f8f-9ffd-241132fcf73a))
|
||||||
|
(fp_line (start -1.53 -1.52) (end 14.21 -1.52) (layer "F.CrtYd") (width 0.05) (tstamp b74ddb9a-007d-4b73-9c0a-645308fec65a))
|
||||||
|
(fp_line (start 14.21 19.3) (end -1.53 19.3) (layer "F.CrtYd") (width 0.05) (tstamp d37b421c-1844-4dc2-ae83-79c1411d8c89))
|
||||||
|
(fp_line (start -1.27 0) (end 0 -1.27) (layer "F.Fab") (width 0.1) (tstamp 29499d72-54e9-40d1-8791-5581662227be))
|
||||||
|
(fp_line (start 0 -1.27) (end 13.97 -1.27) (layer "F.Fab") (width 0.1) (tstamp 3065d307-d27b-4459-a59d-4b98af61841d))
|
||||||
|
(fp_line (start -1.27 19.05) (end -1.27 0) (layer "F.Fab") (width 0.1) (tstamp 35af0296-2cb7-431b-8543-e8d68c22ab11))
|
||||||
|
(fp_line (start 13.97 -1.27) (end 13.97 19.05) (layer "F.Fab") (width 0.1) (tstamp 41f5b452-4e42-4293-8e21-149fa3213f1c))
|
||||||
|
(fp_line (start 13.97 19.05) (end -1.27 19.05) (layer "F.Fab") (width 0.1) (tstamp b9869771-847d-40cc-8a79-af275c85fb38))
|
||||||
|
(pad "1" thru_hole rect (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp a5bf6fea-baf2-47b3-a4de-8b32482d1fec))
|
||||||
|
(pad "2" thru_hole oval (at 0 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 5fa27605-9535-40c5-8d2d-0036dbfbd977))
|
||||||
|
(pad "3" thru_hole oval (at 0 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 567c6f9a-ceba-4996-baf1-d518b7cfc1b8))
|
||||||
|
(pad "4" thru_hole oval (at 0 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 6ce49674-00e7-4943-a7d1-ce6de8f047bb))
|
||||||
|
(pad "5" thru_hole oval (at 0 10.16) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp e6577bf3-114f-40f7-9ba0-e5a48d073d09))
|
||||||
|
(pad "6" thru_hole oval (at 0 12.7) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp ea59663c-dd2b-49a4-aceb-928cd2103174))
|
||||||
|
(pad "7" thru_hole oval (at 0 15.24) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 8c37b18a-4212-47fc-9def-1e1911f29a8f))
|
||||||
|
(pad "8" thru_hole oval (at 0 17.78) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp af5e149d-65b5-47d1-93a1-6f0bcce1e672))
|
||||||
|
(pad "9" thru_hole oval (at 12.7 17.78) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 27a7cd1a-78f1-4fbd-ae91-3389acd852e1))
|
||||||
|
(pad "10" thru_hole oval (at 12.7 15.24) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp f2c14cae-1d8f-41be-b78b-5954bdddae1b))
|
||||||
|
(pad "11" thru_hole oval (at 12.7 12.7) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 10776c48-2eaa-431b-8de2-6a3291f4f0f7))
|
||||||
|
(pad "12" thru_hole oval (at 12.7 10.16) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 51b86555-2619-45da-af9c-4c0e580657fc))
|
||||||
|
(pad "13" thru_hole oval (at 12.7 7.62) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 0fced33b-9b6c-410b-b200-84a860f57f4a))
|
||||||
|
(pad "14" thru_hole oval (at 12.7 5.08) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp c95ddd35-51ec-4578-826e-0e9625e86489))
|
||||||
|
(pad "15" thru_hole oval (at 12.7 2.54) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 1cef4470-7a63-4408-bfdd-2738afea9d7d))
|
||||||
|
(pad "16" thru_hole oval (at 12.7 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp de170945-c365-417e-bd94-f8aafba2aa2a))
|
||||||
|
(pad "17" thru_hole circle (at 2.54 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp 6388a65a-6286-4ac6-8b76-f8fc989a8510))
|
||||||
|
(pad "18" thru_hole circle (at 5.08 0) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask) (tstamp afce776e-6051-4d39-82a5-677baeca182a))
|
||||||
|
(model "${KICAD6_3DMODEL_DIR}/Module.3dshapes/Pololu_Breakout-16_15.2x20.3mm.wrl"
|
||||||
|
(offset (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
96
hardware/film-scanner-lib.kicad_sym
Normal file
96
hardware/film-scanner-lib.kicad_sym
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
|
||||||
|
(symbol "SilentStepStick-TMC2209" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "U" (id 0) (at 0 -6.35 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "SilentStepStick-TMC2209" (id 1) (at 0 -8.89 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (id 2) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (id 3) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "SilentStepStick-TMC2209_0_1"
|
||||||
|
(rectangle (start -12.7 25.4) (end 12.7 -2.54)
|
||||||
|
(stroke (width 0) (type default) (color 0 0 0 0))
|
||||||
|
(fill (type background))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "SilentStepStick-TMC2209_1_1"
|
||||||
|
(pin input line (at -15.24 22.86 0) (length 2.54)
|
||||||
|
(name "EN" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 15.24 7.62 180) (length 2.54)
|
||||||
|
(name "VIO" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "10" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at 15.24 10.16 180) (length 2.54)
|
||||||
|
(name "M1B" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "11" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at 15.24 12.7 180) (length 2.54)
|
||||||
|
(name "M1A" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "12" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at 15.24 15.24 180) (length 2.54)
|
||||||
|
(name "M2A" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "13" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at 15.24 17.78 180) (length 2.54)
|
||||||
|
(name "M2B" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "14" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 15.24 20.32 180) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "15" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 15.24 22.86 180) (length 2.54)
|
||||||
|
(name "VM" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "16" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -15.24 2.54 0) (length 2.54)
|
||||||
|
(name "DIAG" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "17" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -15.24 0 0) (length 2.54)
|
||||||
|
(name "INDEX" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "18" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 20.32 0) (length 2.54)
|
||||||
|
(name "MS1" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 17.78 0) (length 2.54)
|
||||||
|
(name "MS2" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 15.24 0) (length 2.54)
|
||||||
|
(name "SPREAD" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -15.24 12.7 0) (length 2.54)
|
||||||
|
(name "PDN_UART0" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "5" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 10.16 0) (length 2.54)
|
||||||
|
(name "PDN_UART1" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "6" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 7.62 0) (length 2.54)
|
||||||
|
(name "STEP" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "7" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -15.24 5.08 0) (length 2.54)
|
||||||
|
(name "DIR" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "8" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 15.24 5.08 180) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "9" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
10851
hardware/film-scanner.kicad_pcb
Normal file
10851
hardware/film-scanner.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
75
hardware/film-scanner.kicad_prl
Normal file
75
hardware/film-scanner.kicad_prl
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"active_layer": 0,
|
||||||
|
"active_layer_preset": "",
|
||||||
|
"auto_track_width": true,
|
||||||
|
"hidden_nets": [],
|
||||||
|
"high_contrast_mode": 1,
|
||||||
|
"net_color_mode": 1,
|
||||||
|
"opacity": {
|
||||||
|
"pads": 1.0,
|
||||||
|
"tracks": 1.0,
|
||||||
|
"vias": 1.0,
|
||||||
|
"zones": 0.6
|
||||||
|
},
|
||||||
|
"ratsnest_display_mode": 0,
|
||||||
|
"selection_filter": {
|
||||||
|
"dimensions": true,
|
||||||
|
"footprints": true,
|
||||||
|
"graphics": true,
|
||||||
|
"keepouts": true,
|
||||||
|
"lockedItems": true,
|
||||||
|
"otherItems": true,
|
||||||
|
"pads": true,
|
||||||
|
"text": true,
|
||||||
|
"tracks": true,
|
||||||
|
"vias": true,
|
||||||
|
"zones": true
|
||||||
|
},
|
||||||
|
"visible_items": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
17,
|
||||||
|
18,
|
||||||
|
19,
|
||||||
|
20,
|
||||||
|
21,
|
||||||
|
22,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
32,
|
||||||
|
33,
|
||||||
|
34,
|
||||||
|
35,
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"visible_layers": "7ffffff_80000001",
|
||||||
|
"zone_display_mode": 0
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "film-scanner.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
454
hardware/film-scanner.kicad_pro
Normal file
454
hardware/film-scanner.kicad_pro
Normal file
@@ -0,0 +1,454 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"design_settings": {
|
||||||
|
"defaults": {
|
||||||
|
"board_outline_line_width": 0.09999999999999999,
|
||||||
|
"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.15,
|
||||||
|
"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.6,
|
||||||
|
"width": 1.6
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.15,
|
||||||
|
"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": {
|
||||||
|
"45_degree_only": false,
|
||||||
|
"min_clearance": 0.508
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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",
|
||||||
|
"copper_edge_clearance": "error",
|
||||||
|
"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_type_mismatch": "error",
|
||||||
|
"hole_clearance": "error",
|
||||||
|
"hole_near_hole": "error",
|
||||||
|
"invalid_outline": "error",
|
||||||
|
"item_on_disabled_layer": "error",
|
||||||
|
"items_not_allowed": "error",
|
||||||
|
"length_out_of_range": "error",
|
||||||
|
"malformed_courtyard": "error",
|
||||||
|
"microvia_drill_out_of_range": "error",
|
||||||
|
"missing_courtyard": "ignore",
|
||||||
|
"missing_footprint": "warning",
|
||||||
|
"net_conflict": "warning",
|
||||||
|
"npth_inside_courtyard": "ignore",
|
||||||
|
"padstack": "error",
|
||||||
|
"pth_inside_courtyard": "ignore",
|
||||||
|
"shorting_items": "error",
|
||||||
|
"silk_over_copper": "warning",
|
||||||
|
"silk_overlap": "warning",
|
||||||
|
"skew_out_of_range": "error",
|
||||||
|
"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",
|
||||||
|
"zone_has_empty_net": "error",
|
||||||
|
"zones_intersect": "error"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"allow_blind_buried_vias": false,
|
||||||
|
"allow_microvias": false,
|
||||||
|
"max_error": 0.005,
|
||||||
|
"min_clearance": 0.0,
|
||||||
|
"min_copper_edge_clearance": 0.0,
|
||||||
|
"min_hole_clearance": 0.25,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.19999999999999998,
|
||||||
|
"min_microvia_drill": 0.09999999999999999,
|
||||||
|
"min_silk_clearance": 0.0,
|
||||||
|
"min_through_hole_diameter": 0.3,
|
||||||
|
"min_track_width": 0.19999999999999998,
|
||||||
|
"min_via_annular_width": 0.049999999999999996,
|
||||||
|
"min_via_diameter": 0.39999999999999997,
|
||||||
|
"solder_mask_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"use_height_for_length_calcs": true
|
||||||
|
},
|
||||||
|
"track_widths": [
|
||||||
|
0.0,
|
||||||
|
1.27
|
||||||
|
],
|
||||||
|
"via_dimensions": [
|
||||||
|
{
|
||||||
|
"diameter": 0.0,
|
||||||
|
"drill": 0.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zones_allow_external_fillets": false,
|
||||||
|
"zones_use_no_outline": true
|
||||||
|
},
|
||||||
|
"layer_presets": []
|
||||||
|
},
|
||||||
|
"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_label_syntax": "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",
|
||||||
|
"extra_units": "error",
|
||||||
|
"global_label_dangling": "warning",
|
||||||
|
"hier_label_mismatch": "error",
|
||||||
|
"label_dangling": "error",
|
||||||
|
"lib_symbol_issues": "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",
|
||||||
|
"similar_labels": "warning",
|
||||||
|
"unannotated": "error",
|
||||||
|
"unit_value_mismatch": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"wire_dangling": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"pinned_footprint_libs": [],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "film-scanner.kicad_pro",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_settings": {
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"bus_width": 12.0,
|
||||||
|
"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.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bus_width": 12.0,
|
||||||
|
"clearance": 0.508,
|
||||||
|
"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": "Power",
|
||||||
|
"nets": [
|
||||||
|
"+15V"
|
||||||
|
],
|
||||||
|
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"track_width": 1.27,
|
||||||
|
"via_diameter": 1.8,
|
||||||
|
"via_drill": 1.27,
|
||||||
|
"wire_width": 6.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"net_colors": null
|
||||||
|
},
|
||||||
|
"pcbnew": {
|
||||||
|
"last_paths": {
|
||||||
|
"gencad": "",
|
||||||
|
"idf": "",
|
||||||
|
"netlist": "",
|
||||||
|
"specctra_dsn": "",
|
||||||
|
"step": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": ""
|
||||||
|
},
|
||||||
|
"schematic": {
|
||||||
|
"annotate_start_num": 0,
|
||||||
|
"drawing": {
|
||||||
|
"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,
|
||||||
|
"pin_symbol_size": 25.0,
|
||||||
|
"text_offset_ratio": 0.15
|
||||||
|
},
|
||||||
|
"legacy_lib_dir": "",
|
||||||
|
"legacy_lib_list": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_format_name": "",
|
||||||
|
"ngspice": {
|
||||||
|
"fix_include_paths": true,
|
||||||
|
"fix_passive_vals": false,
|
||||||
|
"meta": {
|
||||||
|
"version": 0
|
||||||
|
},
|
||||||
|
"model_mode": 0,
|
||||||
|
"workbook_filename": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": "",
|
||||||
|
"plot_directory": "",
|
||||||
|
"spice_adjust_passive_values": false,
|
||||||
|
"spice_external_command": "spice \"%I\"",
|
||||||
|
"subpart_first_id": 65,
|
||||||
|
"subpart_id_separator": 0
|
||||||
|
},
|
||||||
|
"sheets": [
|
||||||
|
[
|
||||||
|
"9538e4ed-27e6-4c37-b989-9859dc0d49e8",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
2834
hardware/film-scanner.kicad_sch
Normal file
2834
hardware/film-scanner.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user