From e9917837a85ca5a42df424da9084ad0e8dab1830 Mon Sep 17 00:00:00 2001 From: 0xWheatyz Date: Mon, 20 Apr 2026 17:49:23 -0400 Subject: [PATCH] feat(schematic): replace L7805 with TPS61088 boost converter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the L7805 linear regulator (12V→5V) and its input/output caps, replacing it with a TPS61088 boost converter circuit (5V→12V) for the A4988 stepper driver. The ESP32 is now powered directly from the 5V input rail. Includes integration script and project sym-lib-table for the custom TPS61088 symbol library. --- firstpcb.kicad_sch | 2970 ++++++++++++++++++++++++++++++++------------ integrate_boost.py | 772 ++++++++++++ sym-lib-table | 4 + 3 files changed, 2947 insertions(+), 799 deletions(-) create mode 100644 integrate_boost.py create mode 100644 sym-lib-table diff --git a/firstpcb.kicad_sch b/firstpcb.kicad_sch index 3c444b4..90ea3f8 100644 --- a/firstpcb.kicad_sch +++ b/firstpcb.kicad_sch @@ -1913,148 +1913,6 @@ ) (embedded_fonts no) ) - (symbol "Regulator_Linear:L7805" - (pin_names - (offset 0.254) - ) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (property "Reference" "U" - (at -3.81 3.175 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Value" "L7805" - (at 0 3.175 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "" - (at 0.635 -3.81 0) - (effects - (font - (size 1.27 1.27) - (italic yes) - ) - (justify left) - (hide yes) - ) - ) - (property "Datasheet" "http://www.st.com/content/ccc/resource/technical/document/datasheet/41/4f/b3/b0/12/d4/47/88/CD00000444.pdf/files/CD00000444.pdf/jcr:content/translations/en.CD00000444.pdf" - (at 0 -1.27 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Positive 1.5A 35V Linear Regulator, Fixed Output 5V, TO-220/TO-263/TO-252" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_keywords" "Voltage Regulator 1.5A Positive" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "ki_fp_filters" "TO?252* TO?263* TO?220*" - (at 0 0 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (symbol "L7805_0_1" - (rectangle - (start -5.08 1.905) - (end 5.08 -5.08) - (stroke - (width 0.254) - (type default) - ) - (fill - (type background) - ) - ) - ) - (symbol "L7805_1_1" - (pin power_in line - (at -7.62 0 0) - (length 2.54) - (name "IN" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "1" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin power_in line - (at 0 -7.62 90) - (length 2.54) - (name "GND" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "2" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - (pin power_out line - (at 7.62 0 180) - (length 2.54) - (name "OUT" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (number "3" - (effects - (font - (size 1.27 1.27) - ) - ) - ) - ) - ) - (embedded_fonts no) - ) (symbol "Switch:SW_DPDT_x2" (pin_names (offset 0) @@ -2774,6 +2632,260 @@ ) (embedded_fonts no) ) + + (symbol "TPS61088:TPS61088" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" + (at 0 16.51 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "TPS61088" + (at 0 13.97 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "Package_DFN_QFN:QFN-20-1EP_3.5x3.5mm_P0.5mm_EP2.1x2.1mm" + (at 0 -20.32 0) + (effects (font (size 1.27 1.27)) (hide yes)) + ) + (property "Datasheet" "https://www.ti.com/lit/ds/symlink/tps61088.pdf" + (at 0 -22.86 0) + (effects (font (size 1.27 1.27)) (hide yes)) + ) + (property "Description" "10A Fully-Integrated Synchronous Boost Converter" + (at 0 -25.4 0) + (effects (font (size 1.27 1.27)) (hide yes)) + ) + (symbol "TPS61088_0_1" + (rectangle + (start -10.16 12.7) + (end 10.16 -12.7) + (stroke (width 0.254) (type default)) + (fill (type background)) + ) + ) + (symbol "TPS61088_1_1" + (pin power_in line + (at -12.7 10.16 0) (length 2.54) + (name "VIN" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at -12.7 5.08 0) (length 2.54) + (name "EN" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -12.7 0 0) (length 2.54) + (name "SS/TR" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at -12.7 -5.08 0) (length 2.54) + (name "COMP" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line + (at -12.7 -10.16 0) (length 2.54) + (name "FB" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 12.7 10.16 180) (length 2.54) + (name "SW" (effects (font (size 1.27 1.27)))) + (number "12" (effects (font (size 1.27 1.27)))) + ) + (pin passive line + (at 12.7 5.08 180) (length 2.54) + (name "BST" (effects (font (size 1.27 1.27)))) + (number "11" (effects (font (size 1.27 1.27)))) + ) + (pin power_out line + (at 12.7 0 180) (length 2.54) + (name "VOUT" (effects (font (size 1.27 1.27)))) + (number "9" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line + (at 12.7 -5.08 180) (length 2.54) + (name "PGOOD" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line + (at 0 -15.24 90) (length 2.54) + (name "PGND" (effects (font (size 1.27 1.27)))) + (number "15" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line + (at -5.08 -15.24 90) (length 2.54) + (name "AGND" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (embedded_fonts no) + ) + (symbol "Device:L" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 1.016) + (hide yes) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "L" + (at -1.27 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "L" + (at 1.905 0 90) + (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" "Inductor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "inductor choke coil reactor magnetic" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "Choke_* *Coil* Inductor_* L_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "L_0_1" + (arc + (start 0 2.54) + (mid 0.6323 1.905) + (end 0 1.27) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 0 1.27) + (mid 0.6323 0.635) + (end 0 0) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 0 0) + (mid 0.6323 -0.635) + (end 0 -1.27) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (arc + (start 0 -1.27) + (mid 0.6323 -1.905) + (end 0 -2.54) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "L_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) ) (junction (at 80.01 39.37) @@ -2909,16 +3021,6 @@ ) (uuid "471b7ebc-243d-438e-8824-d1a98cd6145c") ) - (wire - (pts - (xy 62.23 100.33) (xy 62.23 97.79) - ) - (stroke - (width 0) - (type default) - ) - (uuid "48aefa74-f6f4-40ae-9135-90c2565ceadc") - ) (wire (pts (xy 130.81 29.21) (xy 139.7 29.21) @@ -3119,26 +3221,6 @@ ) (uuid "d8398031-e45b-4c08-9306-8ff1c93e8acd") ) - (wire - (pts - (xy 77.47 100.33) (xy 77.47 97.79) - ) - (stroke - (width 0) - (type default) - ) - (uuid "dba247d2-ddb5-46ff-a6bd-5fb718c4599e") - ) - (wire - (pts - (xy 46.99 100.33) (xy 46.99 97.79) - ) - (stroke - (width 0) - (type default) - ) - (uuid "e3772378-2aa5-420d-92e3-94a8234f86b5") - ) (wire (pts (xy 55.88 49.53) (xy 58.42 49.53) @@ -3189,16 +3271,6 @@ ) (uuid "ed1f242c-0611-4d1c-b894-6f349f334b9b") ) - (wire - (pts - (xy 88.9 100.33) (xy 88.9 97.79) - ) - (stroke - (width 0) - (type default) - ) - (uuid "ee45c424-04dc-4913-92e9-0eec7ac6b273") - ) (wire (pts (xy 35.56 31.75) (xy 35.56 29.21) @@ -4007,140 +4079,6 @@ ) ) ) - (symbol - (lib_id "power:GND") - (at 88.9 107.95 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "565f28b7-cc4b-427c-be9a-9e09337daabd") - (property "Reference" "#PWR18" - (at 88.9 111.76 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "GND" - (at 92.202 109.982 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 88.9 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 88.9 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 88.9 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "2216f5e7-43fd-471f-8098-9b5a67771fd5") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR18") - (unit 1) - ) - ) - ) - ) - (symbol - (lib_id "Device:C") - (at 77.47 104.14 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "58617ce4-1b01-4ae9-be22-0491e474e52d") - (property "Reference" "C2" - (at 78.105 101.6 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "0.1uF" - (at 78.105 106.68 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm" - (at 78.4352 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "~" - (at 77.47 104.14 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Unpolarized capacitor" - (at 77.47 104.14 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "5103830f-657b-4e0c-9e38-55d3dad4f695") - ) - (pin "2" - (uuid "7616a2df-8d62-4ea6-9475-2beb03ab8c3f") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "C2") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "power:+5V") (at 35.56 29.21 0) @@ -4406,71 +4344,6 @@ ) ) ) - (symbol - (lib_id "power:GND") - (at 54.61 107.95 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "940ddbc7-3e82-42b5-ad91-3df87e10ff89") - (property "Reference" "#PWR16" - (at 54.61 111.76 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "GND" - (at 51.11 110.49 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 54.61 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 54.61 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 54.61 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "9f38472b-a4a8-4c99-a3ec-2631511c6b4c") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR16") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "power:GND") (at 73.66 62.23 90) @@ -4604,149 +4477,6 @@ ) ) ) - (symbol - (lib_id "Regulator_Linear:L7805") - (at 54.61 100.33 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "b5b8c784-5cbd-46af-b962-5f07e5e5ce66") - (property "Reference" "L7805" - (at 55.626 95.25 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Value" "L7805" - (at 52.578 97.282 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "Package_TO_SOT_THT:TO-220-3_Vertical" - (at 55.245 104.14 0) - (effects - (font - (size 1.27 1.27) - (italic yes) - ) - (justify left) - (hide yes) - ) - ) - (property "Datasheet" "http://www.st.com/content/ccc/resource/technical/document/datasheet/41/4f/b3/b0/12/d4/47/88/CD00000444.pdf/files/CD00000444.pdf/jcr:content/translations/en.CD00000444.pdf" - (at 54.61 101.6 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Positive 1.5A 35V Linear Regulator, Fixed Output 5V, TO-220/TO-263/TO-252" - (at 54.61 100.33 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "53bd77bc-032d-46a4-b6f5-4c54096b5149") - ) - (pin "2" - (uuid "7fc20dff-8d8c-41c5-97d6-db602a0ee7f0") - ) - (pin "3" - (uuid "4348850f-08d4-4adc-91a0-cf4ff781c414") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "L7805") - (unit 1) - ) - ) - ) - ) - (symbol - (lib_id "Device:C") - (at 88.9 104.14 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (fields_autoplaced yes) - (uuid "be10cf51-2c79-49d9-968c-f16a919adeee") - (property "Reference" "C1" - (at 89.535 101.6 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Value" "0.33uF" - (at 89.535 106.68 0) - (effects - (font - (size 1.27 1.27) - ) - (justify left) - ) - ) - (property "Footprint" "Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm" - (at 89.8652 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "~" - (at 88.9 104.14 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "Unpolarized capacitor" - (at 88.9 104.14 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "f11b1455-b73d-4a5d-a9ba-b5699288422a") - ) - (pin "2" - (uuid "539ae756-170e-4ff5-9483-45266a94ab1d") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "C1") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "power:GND") (at 71.12 54.61 90) @@ -5014,72 +4744,6 @@ ) ) ) - (symbol - (lib_id "power:+5V") - (at 62.23 97.79 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (fields_autoplaced yes) - (uuid "dd887245-ee3f-48b0-ab57-caf2a8bdfdef") - (property "Reference" "#PWR15" - (at 62.23 93.98 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "+5V" - (at 62.23 92.71 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 62.23 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 62.23 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 62.23 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "e3f8dff8-2f49-4f3e-b318-c6af176bd902") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR15") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "Connector:Screw_Terminal_01x03") (at 144.78 31.75 0) @@ -5219,71 +4883,6 @@ ) ) ) - (symbol - (lib_id "power:GND") - (at 77.47 107.95 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "e7fe0926-923d-41aa-92e6-413304613139") - (property "Reference" "#PWR20" - (at 77.47 111.76 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "GND" - (at 80.77 109.8 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 77.47 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 77.47 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 77.47 107.95 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "e6326614-3f1c-4740-a98b-74a1595f7864") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR20") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "power:GND") (at 115.57 31.75 90) @@ -5351,137 +4950,6 @@ ) ) ) - (symbol - (lib_id "power:+12V") - (at 46.99 97.79 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (fields_autoplaced yes) - (uuid "ea5b2f5d-6233-46fc-93b4-4b52ebc256b5") - (property "Reference" "#PWR14" - (at 46.99 93.98 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "+12V" - (at 46.99 92.71 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 46.99 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 46.99 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 46.99 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "b02783e1-db2f-46ce-b3d2-886617eebcf5") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR14") - (unit 1) - ) - ) - ) - ) - (symbol - (lib_id "power:+12V") - (at 88.9 97.79 0) - (unit 1) - (exclude_from_sim no) - (in_bom yes) - (on_board yes) - (dnp no) - (uuid "ec47b49b-69a3-415f-b119-7b90e03df83a") - (property "Reference" "#PWR17" - (at 88.9 93.98 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Value" "+12V" - (at 91.44 96.012 0) - (effects - (font - (size 1.27 1.27) - ) - ) - ) - (property "Footprint" "" - (at 88.9 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Datasheet" "" - (at 88.9 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (property "Description" "" - (at 88.9 97.79 0) - (effects - (font - (size 1.27 1.27) - ) - (hide yes) - ) - ) - (pin "1" - (uuid "f3562352-b79e-4212-9f2d-8c7b10f47cc1") - ) - (instances - (project "" - (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR17") - (unit 1) - ) - ) - ) - ) (symbol (lib_id "Connector_Generic_MountingPin:Conn_01x04_MountingPin") (at 113.03 49.53 0) @@ -5624,34 +5092,499 @@ ) ) ) + (junction + (at 80.01 161.29) + (diameter 0) + (color 0 0 0 0) + (uuid "fd850586-e3d1-4555-8d7e-c29d5529e636") + ) + (junction + (at 97.79 130.81) + (diameter 0) + (color 0 0 0 0) + (uuid "e3a7e297-f734-44e5-b83d-1d85d5df0754") + ) + (junction + (at 128.27 130.81) + (diameter 0) + (color 0 0 0 0) + (uuid "54e22c96-1982-4afa-bfc3-09f912c4441e") + ) + (junction + (at 115.57 140.97) + (diameter 0) + (color 0 0 0 0) + (uuid "ed6d22c7-69a1-4ae0-ae1b-5374d381bdfd") + ) + (junction + (at 115.57 151.13) + (diameter 0) + (color 0 0 0 0) + (uuid "15bba0cb-cf77-42f8-b250-f14d6da23443") + ) + (no_connect + (at 92.71 146.05) + (uuid "928a7417-455c-4ff1-8979-3a042a87f55f") + ) + (wire + (pts + (xy 39.37 125.73) (xy 39.37 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f7e6ef92-b82d-47cd-904f-2dd7e4a3e32f") + ) + (wire + (pts + (xy 39.37 130.81) (xy 44.45 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2ae35a74-6e10-40a2-b9d8-20cd5fd020a0") + ) + (wire + (pts + (xy 44.45 130.81) (xy 52.07 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "3d57b33b-439f-4c48-b15d-8722ae622e3a") + ) + (wire + (pts + (xy 52.07 130.81) (xy 59.69 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8b450265-a90c-4b8b-bb70-39d98baa39cd") + ) + (wire + (pts + (xy 59.69 130.81) (xy 67.31 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "bb1a28f9-3979-4f72-8c8b-f5e1cd585085") + ) + (wire + (pts + (xy 44.45 133.35) (xy 44.45 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "45223971-730f-45a0-ace3-ad275d26be2d") + ) + (wire + (pts + (xy 44.45 140.97) (xy 44.45 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e863cd59-e97a-4806-b826-30cf881377fd") + ) + (wire + (pts + (xy 52.07 133.35) (xy 52.07 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "7120b115-0aa1-4bd2-9eb5-26471ecf674e") + ) + (wire + (pts + (xy 52.07 140.97) (xy 52.07 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f3de0291-8f3a-4d8d-8ae0-c17531e37cdd") + ) + (wire + (pts + (xy 67.31 135.89) (xy 59.69 135.89) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a89db2bb-facd-471e-90d3-56937903d6f0") + ) + (wire + (pts + (xy 59.69 135.89) (xy 59.69 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f1125062-e9a2-4b47-a405-7ce6d828a600") + ) + (wire + (pts + (xy 67.31 140.97) (xy 59.69 140.97) + ) + (stroke + (width 0) + (type default) + ) + (uuid "3091e582-c66d-467e-8bc0-13c173b4d89d") + ) + (wire + (pts + (xy 59.69 140.97) (xy 59.69 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "26d052ce-72ac-4806-8e5f-d34c9b27b095") + ) + (wire + (pts + (xy 59.69 151.13) (xy 59.69 153.67) + ) + (stroke + (width 0) + (type default) + ) + (uuid "809aa19d-d2c3-4129-97a8-ad06d4811471") + ) + (wire + (pts + (xy 67.31 146.05) (xy 52.07 146.05) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4e77cf92-f938-475b-a2a6-50324c4af044") + ) + (wire + (pts + (xy 52.07 146.05) (xy 52.07 148.59) + ) + (stroke + (width 0) + (type default) + ) + (uuid "3ce1b822-a092-4cf7-b650-0f96ed433317") + ) + (wire + (pts + (xy 52.07 156.21) (xy 52.07 158.75) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e6ff2a43-3729-4340-8a80-ccba33a4e90e") + ) + (wire + (pts + (xy 52.07 166.37) (xy 52.07 168.91) + ) + (stroke + (width 0) + (type default) + ) + (uuid "710c4a03-17e2-44ba-82f0-d350c9fe725a") + ) + (wire + (pts + (xy 80.01 156.21) (xy 80.01 161.29) + ) + (stroke + (width 0) + (type default) + ) + (uuid "721c5a69-9673-4fd1-a3d5-a99f017f0236") + ) + (wire + (pts + (xy 74.93 156.21) (xy 74.93 161.29) + ) + (stroke + (width 0) + (type default) + ) + (uuid "de170a2f-b7ec-4c40-babf-d764e07020a5") + ) + (wire + (pts + (xy 74.93 161.29) (xy 80.01 161.29) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a6108196-b12b-4b8e-bcf6-9e0718f5056f") + ) + (wire + (pts + (xy 92.71 130.81) (xy 97.79 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e898d91f-a587-4419-8b42-a3a77e7570f8") + ) + (wire + (pts + (xy 97.79 130.81) (xy 99.06 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9e292145-80dc-4e58-800a-1d5374458dcc") + ) + (wire + (pts + (xy 97.79 138.43) (xy 92.71 135.89) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ed5a8820-6baf-4cda-9d4e-910f6ba2120d") + ) + (wire + (pts + (xy 106.68 130.81) (xy 115.57 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9fa49831-0377-429d-98b2-99f8a1cd4391") + ) + (wire + (pts + (xy 92.71 140.97) (xy 115.57 140.97) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9ca854af-3813-4803-8448-4835931142d4") + ) + (wire + (pts + (xy 115.57 130.81) (xy 115.57 140.97) + ) + (stroke + (width 0) + (type default) + ) + (uuid "b6bef626-14a9-4f3c-9df5-7a78d28cd654") + ) + (wire + (pts + (xy 115.57 130.81) (xy 120.65 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "adbbbec8-2bb8-4ed0-b2d8-debc81dcba95") + ) + (wire + (pts + (xy 120.65 130.81) (xy 128.27 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "61cfb0c6-b302-4d1a-b2e6-ee345c1102b2") + ) + (wire + (pts + (xy 120.65 133.35) (xy 120.65 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "833cb4b5-c66f-4377-8355-ea62230d5ef2") + ) + (wire + (pts + (xy 120.65 140.97) (xy 120.65 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "7bcbe5a8-9c73-4e57-ac4f-c23149d928d5") + ) + (wire + (pts + (xy 128.27 133.35) (xy 128.27 130.81) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6a445890-a6ed-4f2a-9e60-de3cda5a7fad") + ) + (wire + (pts + (xy 128.27 140.97) (xy 128.27 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "ff9b419d-2197-4a0a-81e0-afd932bcbec4") + ) + (wire + (pts + (xy 128.27 130.81) (xy 128.27 125.73) + ) + (stroke + (width 0) + (type default) + ) + (uuid "99dd53ce-1871-45b9-9932-a502e6842ee7") + ) + (wire + (pts + (xy 115.57 140.97) (xy 115.57 143.51) + ) + (stroke + (width 0) + (type default) + ) + (uuid "7ae2f626-2651-49a0-af90-fa517497e87b") + ) + (wire + (pts + (xy 115.57 151.13) (xy 115.57 153.67) + ) + (stroke + (width 0) + (type default) + ) + (uuid "2406b2d1-d67f-4417-b39d-5a09f1a5cf6c") + ) + (wire + (pts + (xy 115.57 151.13) (xy 120.65 151.13) + ) + (stroke + (width 0) + (type default) + ) + (uuid "199a15bc-3702-4235-b66a-ea853298f458") + ) + (wire + (pts + (xy 67.31 151.13) (xy 62.23 151.13) + ) + (stroke + (width 0) + (type default) + ) + (uuid "caaadf6d-9ab2-4bb5-bc86-80b0e8c607e9") + ) + (wire + (pts + (xy 115.57 161.29) (xy 115.57 163.83) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1ff05551-2741-4352-9106-ef9472296fc1") + ) + (label "FB" + (at 120.65 151.13 0) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "9a666684-66e6-4305-8a9f-44f154796b86") + ) + (label "FB" + (at 62.23 151.13 180) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "e6506ddf-64aa-465c-ad24-99ea98c1dbd7") + ) + (text "TPS61088 Boost: 5V to 12V @ 2A" + (exclude_from_sim no) + (at 39.37 177.8 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + (uuid "4ff8ef89-8ea6-45ec-9491-0a02a42a74d5") + ) + (text "VOUT = 0.6V x (1 + 190k/10k) = 12.06V" + (exclude_from_sim no) + (at 39.37 181.61 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + (uuid "e6913e2e-fc8b-45d3-a5dc-89bf6eb26c75") + ) (symbol - (lib_id "power:+5V") - (at 77.47 97.79 0) + (lib_id "TPS61088:TPS61088") + (at 80.01 140.97 0) (unit 1) (exclude_from_sim no) (in_bom yes) (on_board yes) (dnp no) - (uuid "fd8b730d-5d7d-4216-98e6-0f769c039626") - (property "Reference" "#PWR19" - (at 77.47 93.98 0) + (uuid "a6781375-deda-43f7-ab7c-bf359446c068") + (property "Reference" "U1" + (at 82.55 138.43 0) (effects (font (size 1.27 1.27) ) - (hide yes) + (justify left) ) ) - (property "Value" "+5V" - (at 80.772 96.012 0) + (property "Value" "TPS61088" + (at 82.55 143.51 0) (effects (font (size 1.27 1.27) ) + (justify left) ) ) (property "Footprint" "" - (at 77.47 97.79 0) + (at 80.01 140.97 0) (effects (font (size 1.27 1.27) @@ -5660,7 +5593,7 @@ ) ) (property "Datasheet" "" - (at 77.47 97.79 0) + (at 80.01 140.97 0) (effects (font (size 1.27 1.27) @@ -5669,7 +5602,7 @@ ) ) (property "Description" "" - (at 77.47 97.79 0) + (at 80.01 140.97 0) (effects (font (size 1.27 1.27) @@ -5678,12 +5611,1451 @@ ) ) (pin "1" - (uuid "f693c846-0880-47a2-b4da-b79ca649dfae") + (uuid "d9ca42f6-ba44-45df-8e5c-059ed79627f5") + ) + (pin "3" + (uuid "eaa40fc6-c8f9-4791-96b6-4bd9b768fd28") + ) + (pin "4" + (uuid "72565b0a-2d42-44f1-b0cc-4611b696de27") + ) + (pin "5" + (uuid "cb604f71-3b7d-4553-bf5a-e63891c3784b") + ) + (pin "6" + (uuid "08cbcb9e-dc53-4a02-bc4b-a5a4ae751405") + ) + (pin "7" + (uuid "14dc537b-0a40-4585-9d10-9a116f7aff9a") + ) + (pin "8" + (uuid "5aca7cff-a104-4221-8ebb-e089ebae8513") + ) + (pin "9" + (uuid "81202028-d1a0-4446-a02c-2691f185d68d") + ) + (pin "11" + (uuid "eef9b991-5d6b-4d26-b621-95ab14483c22") + ) + (pin "12" + (uuid "fdfe28d9-8e8b-4712-92bc-886d50ad7d1e") + ) + (pin "15" + (uuid "fc740511-6393-4a01-8da7-3a718739e802") ) (instances (project "" (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" - (reference "#PWR19") + (reference "U1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+5V") + (at 39.37 125.73 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "2f2f17a2-6d2c-451c-b650-0352003a092d") + (property "Reference" "#PWR31" + (at 39.37 123.19 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+5V" + (at 39.37 129.54 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 39.37 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 39.37 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 39.37 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "15282811-d905-4282-8314-18f73adbff85") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR31") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 44.45 137.16 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "87792da3-6a69-44d7-b90b-aacb2a745f27") + (property "Reference" "C4" + (at 46.99 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "22uF" + (at 46.99 139.7 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 44.45 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 44.45 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 44.45 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "389a450e-4e10-47b2-8e23-77e1aab95df3") + ) + (pin "2" + (uuid "851b4e60-cd98-411c-a44e-66517d6b8cf8") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 44.45 143.51 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "21b3b660-ae40-4608-8818-01238028bc7d") + (property "Reference" "#PWR32" + (at 44.45 140.97 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 44.45 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 44.45 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 44.45 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 44.45 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "b0839d02-d51f-4ad3-b446-1edf2d9b8bcf") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR32") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 52.07 137.16 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "99bb1525-2a2f-4105-93a3-99147f3dbe02") + (property "Reference" "C5" + (at 54.61 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "22uF" + (at 54.61 139.7 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 52.07 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 52.07 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 52.07 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "be64c379-1d27-40b9-8bf7-bbb5bf71928a") + ) + (pin "2" + (uuid "cebe1da8-60bc-49a2-99db-ae7b54ccde9b") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 52.07 143.51 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "06377c50-0e76-4e9e-9252-88ea6a83c145") + (property "Reference" "#PWR33" + (at 52.07 140.97 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 52.07 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 52.07 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 52.07 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 52.07 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "51e0da7d-2955-4e15-b181-486e319d6117") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR33") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 59.69 147.32 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "a2c16dcf-0c35-4317-80f2-5e105639cc4d") + (property "Reference" "C6" + (at 62.23 144.78 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "22nF" + (at 62.23 149.86 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 59.69 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 59.69 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 59.69 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "5e80d5da-031b-42ab-b478-12aba608aedd") + ) + (pin "2" + (uuid "f659250b-0721-4041-94ea-a664361e46cf") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C6") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 59.69 153.67 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "2c1b1568-3f5b-4d2e-ba41-1d1d3dc91a1d") + (property "Reference" "#PWR34" + (at 59.69 151.13 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 59.69 157.48 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 59.69 153.67 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 59.69 153.67 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 59.69 153.67 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "e9c0140d-2fa1-43b7-93c3-096e9dc0fb0a") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR34") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 52.07 152.4 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "a047aa34-8685-450b-a153-e171f0117359") + (property "Reference" "R3" + (at 54.61 149.86 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "30.1k" + (at 54.61 154.94 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 52.07 152.4 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 52.07 152.4 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 52.07 152.4 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "3c651e99-ae54-40f0-b289-ed594cd28a0e") + ) + (pin "2" + (uuid "8b0facb6-d85c-4832-a4b9-31f053fa9f89") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "R3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 52.07 162.56 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "32a02782-3889-4391-bf2b-7d11c49f51a5") + (property "Reference" "C8" + (at 54.61 160.02 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "47pF" + (at 54.61 165.1 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 52.07 162.56 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 52.07 162.56 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 52.07 162.56 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "ad6f07d9-4dfc-41dc-88b6-e250e7c7d2fd") + ) + (pin "2" + (uuid "4da6f5de-2636-40ac-a1c7-58a02afe67e6") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C8") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 52.07 168.91 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "f41d1320-1cb7-4d4c-9eed-15452f8bfa78") + (property "Reference" "#PWR35" + (at 52.07 166.37 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 52.07 172.72 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 52.07 168.91 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 52.07 168.91 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 52.07 168.91 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "1d31fc6f-b800-49f1-8184-8039b0f7c570") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR35") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 80.01 161.29 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "29007694-a0a5-4a5a-9b7b-258682f6ebdf") + (property "Reference" "#PWR36" + (at 80.01 158.75 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 80.01 165.1 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 80.01 161.29 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 80.01 161.29 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 80.01 161.29 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "94326da5-6238-4810-8c2e-c868f2e050cb") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR36") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:L") + (at 102.87 130.81 90) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "b584fe4d-df14-43bf-9925-3d5cb9144220") + (property "Reference" "L1" + (at 105.41 128.27 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "2.2uH" + (at 105.41 133.35 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 102.87 130.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 102.87 130.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 102.87 130.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "55d9b25f-2495-432a-8c54-a9c7facef52d") + ) + (pin "2" + (uuid "0cc74ba2-002d-44ac-8aef-0c94a47b87f1") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "L1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 97.79 134.62 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "33d21ae6-8a98-49e4-bc5c-20f559bb36cd") + (property "Reference" "C9" + (at 100.33 132.08 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 100.33 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 97.79 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 97.79 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 97.79 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "8ebbe2fd-d757-4fd8-98ac-af642e61e0bc") + ) + (pin "2" + (uuid "5a7e5bd0-843e-4770-9bd5-c32ba5591cf8") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C9") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 120.65 137.16 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "854762a1-688f-47c3-b675-a33f38779116") + (property "Reference" "C10" + (at 123.19 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "22uF" + (at 123.19 139.7 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 120.65 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 120.65 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 120.65 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "01127cc0-ef07-4b4f-bfeb-ce97171547b0") + ) + (pin "2" + (uuid "d6494823-ace0-486c-a37e-247c8ce1075d") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C10") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 120.65 143.51 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "b1ab4879-8dee-43f4-8312-6656f02c8674") + (property "Reference" "#PWR37" + (at 120.65 140.97 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 120.65 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 120.65 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 120.65 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 120.65 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "04913c48-830a-4205-8952-9178f36ee799") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR37") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 128.27 137.16 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "057ef722-721a-43fd-bee3-e8aaf89ce150") + (property "Reference" "C11" + (at 130.81 134.62 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "22uF" + (at 130.81 139.7 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 128.27 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 128.27 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 128.27 137.16 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "6de37942-5ab6-4764-8e6d-ef2363912472") + ) + (pin "2" + (uuid "01ae21e8-02c0-4a42-99f4-ee01da052c58") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "C11") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 128.27 143.51 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "eb9412fe-3cd5-499f-ae1d-68a3ba1035c2") + (property "Reference" "#PWR38" + (at 128.27 140.97 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 128.27 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 128.27 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 128.27 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 128.27 143.51 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "a9359fde-5605-4fc8-b080-db707ab25f68") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR38") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+12V") + (at 128.27 125.73 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "d6db4ab1-f7a5-46a0-b3cd-cbf246ce6a72") + (property "Reference" "#PWR39" + (at 128.27 123.19 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+12V" + (at 128.27 129.54 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 128.27 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 128.27 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 128.27 125.73 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "cb39c16f-737d-4cd6-bfb0-87e617f57e12") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR39") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 115.57 147.32 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "90abceba-4091-49f3-a930-ec787de99df2") + (property "Reference" "R4" + (at 118.11 144.78 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "190k" + (at 118.11 149.86 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 115.57 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 115.57 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 115.57 147.32 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "1cc77b30-f074-4930-8969-4673775f5f24") + ) + (pin "2" + (uuid "29ddbef9-6bbe-4cd9-ad55-c8f4d577b748") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "R4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R") + (at 115.57 157.48 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "23c9aa51-884b-410e-9ad3-25ed4f26ebfd") + (property "Reference" "R5" + (at 118.11 154.94 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "10k" + (at 118.11 160.02 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 115.57 157.48 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 115.57 157.48 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 115.57 157.48 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "52f1daf4-e6cc-426b-a32e-e23f0bf9ca7c") + ) + (pin "2" + (uuid "961b25ed-8dce-42bf-9f74-c1cc6694e74b") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "R5") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 115.57 163.83 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "d0a73338-4698-4d0e-a882-ceed6e24b29b") + (property "Reference" "#PWR40" + (at 115.57 161.29 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 115.57 167.64 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 115.57 163.83 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 115.57 163.83 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "" + (at 115.57 163.83 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "83d8033f-a322-4840-886f-8ec6b7fd6433") + ) + (instances + (project "" + (path "/4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + (reference "#PWR40") (unit 1) ) ) diff --git a/integrate_boost.py b/integrate_boost.py new file mode 100644 index 0000000..b562e91 --- /dev/null +++ b/integrate_boost.py @@ -0,0 +1,772 @@ +#!/usr/bin/env python3 +""" +Transform firstpcb.kicad_sch: + 1. Remove the L7805 voltage regulator and associated components + 2. Insert the TPS61088 5V→12V boost converter circuit + 3. Keep all other components intact + +The +5V and +12V nets connect automatically via KiCad global power symbols. +""" + +import re +import uuid +import sys + + +def uid(): + return str(uuid.uuid4()) + + +ROOT_UUID = "4ce690e5-6d5b-4693-bd2e-f4090f26df1f" + + +# ── UUIDs of components to REMOVE (L7805 circuit) ── + +REMOVE_UUIDS = { + # L7805 regulator + "b5b8c784-5cbd-46af-b962-5f07e5e5ce66", + # C1 (0.33uF) - output cap + "be10cf51-2c79-49d9-968c-f16a919adeee", + # C2 (0.1uF) - input cap + "58617ce4-1b01-4ae9-be22-0491e474e52d", + # #PWR15 (+5V at L7805 output) + "dd887245-ee3f-48b0-ab57-caf2a8bdfdef", + # #PWR19 (+5V at C2) + "fd8b730d-5d7d-4216-98e6-0f769c039626", + # #PWR14 (+12V at L7805 input) + "ea5b2f5d-6233-46fc-93b4-4b52ebc256b5", + # #PWR17 (+12V at C1) + "ec47b49b-69a3-415f-b119-7b90e03df83a", + # #PWR16 (GND under L7805) + "940ddbc7-3e82-42b5-ad91-3df87e10ff89", + # #PWR18 (GND under C1) + "565f28b7-cc4b-427c-be9a-9e09337daabd", + # #PWR20 (GND under C2) + "e7fe0926-923d-41aa-92e6-413304613139", +} + +REMOVE_WIRE_UUIDS = { + # Wire: C2 top to L7805 output rail + "dba247d2-ddb5-46ff-a6bd-5fb718c4599e", + # Wire: L7805 input to +12V symbol + "e3772378-2aa5-420d-92e3-94a8234f86b5", + # Wire: C1 to +12V symbol + "ee45c424-04dc-4913-92e9-0eec7ac6b273", + # Wire: L7805 output to +5V symbol + "48aefa74-f6f4-40ae-9135-90c2565ceadc", +} + +# Also remove the L7805 lib_symbol definition +REMOVE_LIB_SYMBOL = "Regulator_Linear:L7805" + + +def find_block_end(text, start_pos): + """Find the end of a parenthesized block starting at start_pos. + start_pos should point to the opening '('.""" + depth = 0 + i = start_pos + while i < len(text): + if text[i] == '(': + depth += 1 + elif text[i] == ')': + depth -= 1 + if depth == 0: + return i + i += 1 + return -1 + + +def remove_blocks_by_uuid(text, uuids): + """Remove top-level blocks (symbol, wire, junction) containing matching UUIDs.""" + for u in uuids: + # Find the UUID in the text + pattern = f'(uuid "{u}")' + idx = text.find(pattern) + if idx == -1: + print(f" WARNING: UUID {u} not found, skipping", file=sys.stderr) + continue + + # Walk backward from UUID to find the containing block's opening + # Look for a tab-indented opening paren: \n\t(symbol, \n\t(wire, etc. + search_start = idx + block_start = -1 + while search_start > 0: + # Find the previous newline + nl = text.rfind('\n', 0, search_start) + if nl == -1: + break + line = text[nl+1:search_start] + # Check if this line starts a top-level block + stripped = line.lstrip() + if stripped.startswith('(symbol') or stripped.startswith('(wire') or \ + stripped.startswith('(junction') or stripped.startswith('(no_connect'): + block_start = nl + 1 + # Find the start of the actual paren + paren_pos = text.index('(', block_start) + block_start = paren_pos + break + search_start = nl + + if block_start == -1: + print(f" WARNING: Could not find block start for UUID {u}", file=sys.stderr) + continue + + block_end = find_block_end(text, block_start) + if block_end == -1: + print(f" WARNING: Could not find block end for UUID {u}", file=sys.stderr) + continue + + # Remove the block (including trailing newline) + end = block_end + 1 + if end < len(text) and text[end] == '\n': + end += 1 + + # Also remove leading whitespace/tabs on the same line + while block_start > 0 and text[block_start-1] in '\t ': + block_start -= 1 + + print(f" Removing block with UUID {u[:12]}... ({end - block_start} chars)") + text = text[:block_start] + text[end:] + + return text + + +def remove_lib_symbol(text, lib_id): + """Remove a lib_symbol definition from the lib_symbols section.""" + pattern = f'(symbol "{lib_id}"' + idx = text.find(pattern) + if idx == -1: + print(f" WARNING: lib_symbol {lib_id} not found", file=sys.stderr) + return text + + # Find the containing (symbol block - walk back to find the right indentation + # In lib_symbols, entries are indented with two tabs + search = idx + while search > 0 and text[search-1] != '\n': + search -= 1 + block_start = search + + block_paren = text.index('(', block_start) + block_end = find_block_end(text, block_paren) + + end = block_end + 1 + if end < len(text) and text[end] == '\n': + end += 1 + + print(f" Removing lib_symbol {lib_id}") + text = text[:block_start] + text[end:] + return text + + +# ── TPS61088 boost converter circuit to INSERT ── + +def gen_symbol(lib_id, ref, value, x, y, rot=0, pins=None, extra_props=""): + """Generate a symbol placement block.""" + u = uid() + if pins is None: + pins = {} + pin_str = "" + for pnum in sorted(pins.keys(), key=lambda k: int(k) if k.isdigit() else k): + pin_str += f'\t\t(pin "{pnum}"\n\t\t\t(uuid "{pins[pnum]}")\n\t\t)\n' + + return f"""\t(symbol +\t\t(lib_id "{lib_id}") +\t\t(at {round(x, 2)} {round(y, 2)} {rot}) +\t\t(unit 1) +\t\t(exclude_from_sim no) +\t\t(in_bom yes) +\t\t(on_board yes) +\t\t(dnp no) +\t\t(uuid "{u}") +\t\t(property "Reference" "{ref}" +\t\t\t(at {round(x + 2.54, 2)} {round(y - 2.54, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(justify left) +\t\t\t) +\t\t) +\t\t(property "Value" "{value}" +\t\t\t(at {round(x + 2.54, 2)} {round(y + 2.54, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(justify left) +\t\t\t) +\t\t) +\t\t(property "Footprint" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(property "Datasheet" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(property "Description" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t){extra_props} +{pin_str}\t\t(instances +\t\t\t(project "" +\t\t\t\t(path "/{ROOT_UUID}" +\t\t\t\t\t(reference "{ref}") +\t\t\t\t\t(unit 1) +\t\t\t\t) +\t\t\t) +\t\t) +\t)""" + + +def gen_pwr(lib_id, value, x, y, ref): + """Generate a power symbol block.""" + return f"""\t(symbol +\t\t(lib_id "{lib_id}") +\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t(unit 1) +\t\t(exclude_from_sim no) +\t\t(in_bom yes) +\t\t(on_board yes) +\t\t(dnp no) +\t\t(uuid "{uid()}") +\t\t(property "Reference" "{ref}" +\t\t\t(at {round(x, 2)} {round(y - 2.54, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(property "Value" "{value}" +\t\t\t(at {round(x, 2)} {round(y + 3.81, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t) +\t\t) +\t\t(property "Footprint" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(property "Datasheet" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(property "Description" "" +\t\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t\t(effects +\t\t\t\t(font +\t\t\t\t\t(size 1.27 1.27) +\t\t\t\t) +\t\t\t\t(hide yes) +\t\t\t) +\t\t) +\t\t(pin "1" +\t\t\t(uuid "{uid()}") +\t\t) +\t\t(instances +\t\t\t(project "" +\t\t\t\t(path "/{ROOT_UUID}" +\t\t\t\t\t(reference "{ref}") +\t\t\t\t\t(unit 1) +\t\t\t\t) +\t\t\t) +\t\t) +\t)""" + + +def gen_wire(x1, y1, x2, y2): + return f"""\t(wire +\t\t(pts +\t\t\t(xy {round(x1, 2)} {round(y1, 2)}) (xy {round(x2, 2)} {round(y2, 2)}) +\t\t) +\t\t(stroke +\t\t\t(width 0) +\t\t\t(type default) +\t\t) +\t\t(uuid "{uid()}") +\t)""" + + +def gen_junction(x, y): + return f"""\t(junction +\t\t(at {round(x, 2)} {round(y, 2)}) +\t\t(diameter 0) +\t\t(color 0 0 0 0) +\t\t(uuid "{uid()}") +\t)""" + + +def gen_label(x, y, name, rot=0): + return f"""\t(label "{name}" +\t\t(at {round(x, 2)} {round(y, 2)} {rot}) +\t\t(effects +\t\t\t(font +\t\t\t\t(size 1.27 1.27) +\t\t\t) +\t\t) +\t\t(uuid "{uid()}") +\t)""" + + +def gen_no_connect(x, y): + return f"""\t(no_connect +\t\t(at {round(x, 2)} {round(y, 2)}) +\t\t(uuid "{uid()}") +\t)""" + + +def gen_text(x, y, text): + return f"""\t(text "{text}" +\t\t(exclude_from_sim no) +\t\t(at {round(x, 2)} {round(y, 2)} 0) +\t\t(effects +\t\t\t(font +\t\t\t\t(size 1.27 1.27) +\t\t\t) +\t\t\t(justify left) +\t\t) +\t\t(uuid "{uid()}") +\t)""" + + +# ── TPS61088 lib_symbol definition ── + +TPS61088_LIB_SYMBOL = """\t\t(symbol "TPS61088:TPS61088" +\t\t\t(exclude_from_sim no) +\t\t\t(in_bom yes) +\t\t\t(on_board yes) +\t\t\t(property "Reference" "U" +\t\t\t\t(at 0 16.51 0) +\t\t\t\t(effects (font (size 1.27 1.27))) +\t\t\t) +\t\t\t(property "Value" "TPS61088" +\t\t\t\t(at 0 13.97 0) +\t\t\t\t(effects (font (size 1.27 1.27))) +\t\t\t) +\t\t\t(property "Footprint" "Package_DFN_QFN:QFN-20-1EP_3.5x3.5mm_P0.5mm_EP2.1x2.1mm" +\t\t\t\t(at 0 -20.32 0) +\t\t\t\t(effects (font (size 1.27 1.27)) (hide yes)) +\t\t\t) +\t\t\t(property "Datasheet" "https://www.ti.com/lit/ds/symlink/tps61088.pdf" +\t\t\t\t(at 0 -22.86 0) +\t\t\t\t(effects (font (size 1.27 1.27)) (hide yes)) +\t\t\t) +\t\t\t(property "Description" "10A Fully-Integrated Synchronous Boost Converter" +\t\t\t\t(at 0 -25.4 0) +\t\t\t\t(effects (font (size 1.27 1.27)) (hide yes)) +\t\t\t) +\t\t\t(symbol "TPS61088_0_1" +\t\t\t\t(rectangle +\t\t\t\t\t(start -10.16 12.7) +\t\t\t\t\t(end 10.16 -12.7) +\t\t\t\t\t(stroke (width 0.254) (type default)) +\t\t\t\t\t(fill (type background)) +\t\t\t\t) +\t\t\t) +\t\t\t(symbol "TPS61088_1_1" +\t\t\t\t(pin power_in line +\t\t\t\t\t(at -12.7 10.16 0) (length 2.54) +\t\t\t\t\t(name "VIN" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "1" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin input line +\t\t\t\t\t(at -12.7 5.08 0) (length 2.54) +\t\t\t\t\t(name "EN" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "3" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin passive line +\t\t\t\t\t(at -12.7 0 0) (length 2.54) +\t\t\t\t\t(name "SS/TR" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "4" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin passive line +\t\t\t\t\t(at -12.7 -5.08 0) (length 2.54) +\t\t\t\t\t(name "COMP" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "5" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin input line +\t\t\t\t\t(at -12.7 -10.16 0) (length 2.54) +\t\t\t\t\t(name "FB" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "6" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin passive line +\t\t\t\t\t(at 12.7 10.16 180) (length 2.54) +\t\t\t\t\t(name "SW" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "12" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin passive line +\t\t\t\t\t(at 12.7 5.08 180) (length 2.54) +\t\t\t\t\t(name "BST" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "11" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin power_out line +\t\t\t\t\t(at 12.7 0 180) (length 2.54) +\t\t\t\t\t(name "VOUT" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "9" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin open_collector line +\t\t\t\t\t(at 12.7 -5.08 180) (length 2.54) +\t\t\t\t\t(name "PGOOD" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "8" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin power_in line +\t\t\t\t\t(at 0 -15.24 90) (length 2.54) +\t\t\t\t\t(name "PGND" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "15" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t\t(pin power_in line +\t\t\t\t\t(at -5.08 -15.24 90) (length 2.54) +\t\t\t\t\t(name "AGND" (effects (font (size 1.27 1.27)))) +\t\t\t\t\t(number "7" (effects (font (size 1.27 1.27)))) +\t\t\t\t) +\t\t\t) +\t\t\t(embedded_fonts no) +\t\t)""" + + +def generate_boost_circuit(): + """Generate all the schematic elements for the TPS61088 boost converter. + Returns (junctions, wires, labels, no_connects, texts, symbols) as lists of strings. + + Placed below the main circuit, centered around (80, 140). + """ + junctions = [] + wires = [] + labels = [] + no_connects = [] + texts = [] + symbols = [] + + pwr_idx = [30] # start well after existing power refs (existing go up to #PWR23) + def next_pwr(): + pwr_idx[0] += 1 + return f"#PWR{pwr_idx[0]:02d}" + + # IC center + cx, cy = 80.01, 140.97 + + # Pin absolute positions + VIN = (cx - 12.7, cy - 10.16) + EN = (cx - 12.7, cy - 5.08) + SS = (cx - 12.7, cy) + COMP = (cx - 12.7, cy + 5.08) + FB = (cx - 12.7, cy + 10.16) + SW = (cx + 12.7, cy - 10.16) + BST = (cx + 12.7, cy - 5.08) + VOUT = (cx + 12.7, cy) + PG = (cx + 12.7, cy + 5.08) + PGND = (cx, cy + 15.24) + AGND = (cx - 5.08, cy + 15.24) + + # Place TPS61088 IC + ic_pins = {str(i): uid() for i in [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15]} + symbols.append(gen_symbol("TPS61088:TPS61088", "U1", "TPS61088", cx, cy, pins=ic_pins)) + + # ── INPUT SECTION ── + vin_rail_y = VIN[1] + pwr5v_x = 39.37 + c1_x = 44.45 + c2_x = 52.07 + en_tap_x = 59.69 + + # +5V source + ref = next_pwr() + symbols.append(gen_pwr("power:+5V", "+5V", pwr5v_x, vin_rail_y - 5.08, ref)) + wires.append(gen_wire(pwr5v_x, vin_rail_y - 5.08, pwr5v_x, vin_rail_y)) + + # VIN rail (segmented) + wires.append(gen_wire(pwr5v_x, vin_rail_y, c1_x, vin_rail_y)) + wires.append(gen_wire(c1_x, vin_rail_y, c2_x, vin_rail_y)) + wires.append(gen_wire(c2_x, vin_rail_y, en_tap_x, vin_rail_y)) + wires.append(gen_wire(en_tap_x, vin_rail_y, VIN[0], vin_rail_y)) + + # C1 input cap (22µF) — using Device:C (pins at ±3.81) + c1_cy = vin_rail_y + 6.35 + symbols.append(gen_symbol("Device:C", "C4", "22uF", c1_x, c1_cy, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(c1_x, c1_cy - 3.81, c1_x, vin_rail_y)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", c1_x, c1_cy + 6.35, ref)) + wires.append(gen_wire(c1_x, c1_cy + 3.81, c1_x, c1_cy + 6.35)) + + # C2 input cap (22µF) + c2_cy = vin_rail_y + 6.35 + symbols.append(gen_symbol("Device:C", "C5", "22uF", c2_x, c2_cy, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(c2_x, c2_cy - 3.81, c2_x, vin_rail_y)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", c2_x, c2_cy + 6.35, ref)) + wires.append(gen_wire(c2_x, c2_cy + 3.81, c2_x, c2_cy + 6.35)) + + # EN tied to VIN + wires.append(gen_wire(EN[0], EN[1], en_tap_x, EN[1])) + wires.append(gen_wire(en_tap_x, EN[1], en_tap_x, vin_rail_y)) + + # ── SOFT-START ── + ss_x = 59.69 + c3_cy = SS[1] + 6.35 + wires.append(gen_wire(SS[0], SS[1], ss_x, SS[1])) + symbols.append(gen_symbol("Device:C", "C6", "22nF", ss_x, c3_cy, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(ss_x, SS[1], ss_x, c3_cy - 3.81)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", ss_x, c3_cy + 6.35, ref)) + wires.append(gen_wire(ss_x, c3_cy + 3.81, ss_x, c3_cy + 6.35)) + + # ── COMPENSATION ── + comp_x = 52.07 + r1_y = COMP[1] + 6.35 + wires.append(gen_wire(COMP[0], COMP[1], comp_x, COMP[1])) + symbols.append(gen_symbol("Device:R", "R3", "30.1k", comp_x, r1_y, # COMP resistor + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(comp_x, COMP[1], comp_x, r1_y - 3.81)) + + c4_y = r1_y + 10.16 + symbols.append(gen_symbol("Device:C", "C8", "47pF", comp_x, c4_y, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(comp_x, r1_y + 3.81, comp_x, c4_y - 3.81)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", comp_x, c4_y + 6.35, ref)) + wires.append(gen_wire(comp_x, c4_y + 3.81, comp_x, c4_y + 6.35)) + + # ── IC GROUND ── + gnd_y = PGND[1] + 5.08 + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", PGND[0], gnd_y, ref)) + wires.append(gen_wire(PGND[0], PGND[1], PGND[0], gnd_y)) + wires.append(gen_wire(AGND[0], AGND[1], AGND[0], gnd_y)) + wires.append(gen_wire(AGND[0], gnd_y, PGND[0], gnd_y)) + junctions.append(gen_junction(PGND[0], gnd_y)) + + # ── OUTPUT SECTION ── + c5_x = 97.79 + l1_x = 102.87 + l1_y = SW[1] + l1_pin1 = (l1_x - 3.81, l1_y) + l1_pin2 = (l1_x + 3.81, l1_y) + + symbols.append(gen_symbol("Device:L", "L1", "2.2uH", l1_x, l1_y, rot=90, + pins={"1": uid(), "2": uid()})) + + # SW → C5 junction → L1 + wires.append(gen_wire(SW[0], SW[1], c5_x, SW[1])) + wires.append(gen_wire(c5_x, SW[1], l1_pin1[0], l1_pin1[1])) + + # Bootstrap cap C5 (100nF) + c5_cy = SW[1] + 3.81 + symbols.append(gen_symbol("Device:C", "C9", "100nF", c5_x, c5_cy, + pins={"1": uid(), "2": uid()})) + junctions.append(gen_junction(c5_x, SW[1])) + wires.append(gen_wire(c5_x, c5_cy + 3.81, BST[0], BST[1])) + + # VOUT rail + vout_rail_x = 115.57 + wires.append(gen_wire(l1_pin2[0], l1_pin2[1], vout_rail_x, l1_y)) + wires.append(gen_wire(VOUT[0], VOUT[1], vout_rail_x, VOUT[1])) + wires.append(gen_wire(vout_rail_x, l1_y, vout_rail_x, VOUT[1])) + + # Output caps + c6_x = 120.65 + c7_x = 128.27 + + wires.append(gen_wire(vout_rail_x, l1_y, c6_x, l1_y)) + wires.append(gen_wire(c6_x, l1_y, c7_x, l1_y)) + + c6_cy = l1_y + 6.35 + symbols.append(gen_symbol("Device:C", "C10", "22uF", c6_x, c6_cy, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(c6_x, c6_cy - 3.81, c6_x, l1_y)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", c6_x, c6_cy + 6.35, ref)) + wires.append(gen_wire(c6_x, c6_cy + 3.81, c6_x, c6_cy + 6.35)) + + c7_cy = l1_y + 6.35 + symbols.append(gen_symbol("Device:C", "C11", "22uF", c7_x, c7_cy, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(c7_x, c7_cy - 3.81, c7_x, l1_y)) + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", c7_x, c7_cy + 6.35, ref)) + wires.append(gen_wire(c7_x, c7_cy + 3.81, c7_x, c7_cy + 6.35)) + + # +12V output + ref = next_pwr() + symbols.append(gen_pwr("power:+12V", "+12V", c7_x, l1_y - 5.08, ref)) + wires.append(gen_wire(c7_x, l1_y, c7_x, l1_y - 5.08)) + junctions.append(gen_junction(c7_x, l1_y)) + + # ── FEEDBACK DIVIDER ── + fb_x = vout_rail_x + r2_y = VOUT[1] + 6.35 + symbols.append(gen_symbol("Device:R", "R4", "190k", fb_x, r2_y, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(fb_x, VOUT[1], fb_x, r2_y - 3.81)) + junctions.append(gen_junction(fb_x, VOUT[1])) + + r3_y = r2_y + 10.16 + symbols.append(gen_symbol("Device:R", "R5", "10k", fb_x, r3_y, + pins={"1": uid(), "2": uid()})) + wires.append(gen_wire(fb_x, r2_y + 3.81, fb_x, r3_y - 3.81)) + + # FB tap label + fb_tap_y = r2_y + 3.81 + wires.append(gen_wire(fb_x, fb_tap_y, fb_x + 5.08, fb_tap_y)) + labels.append(gen_label(fb_x + 5.08, fb_tap_y, "FB")) + junctions.append(gen_junction(fb_x, fb_tap_y)) + + # FB label at IC + wires.append(gen_wire(FB[0], FB[1], FB[0] - 5.08, FB[1])) + labels.append(gen_label(FB[0] - 5.08, FB[1], "FB", rot=180)) + + # R3 to GND + ref = next_pwr() + symbols.append(gen_pwr("power:GND", "GND", fb_x, r3_y + 6.35, ref)) + wires.append(gen_wire(fb_x, r3_y + 3.81, fb_x, r3_y + 6.35)) + + # PGOOD no connect + no_connects.append(gen_no_connect(PG[0], PG[1])) + + # ── NOTES ── + nx = 39.37 + ny = 177.8 + texts.append(gen_text(nx, ny, "TPS61088 Boost: 5V to 12V @ 2A")) + texts.append(gen_text(nx, ny + 3.81, "VOUT = 0.6V x (1 + 190k/10k) = 12.06V")) + + return junctions, wires, labels, no_connects, texts, symbols + + +def main(): + infile = "firstpcb.kicad_sch" + outfile = "firstpcb.kicad_sch" + + print(f"Reading {infile}...") + with open(infile, "r") as f: + text = f.read() + + # Step 1: Remove L7805 lib_symbol + print("\nRemoving L7805 lib_symbol...") + text = remove_lib_symbol(text, REMOVE_LIB_SYMBOL) + + # Step 2: Remove wires first (they reference removed components) + print("\nRemoving L7805 circuit wires...") + text = remove_blocks_by_uuid(text, REMOVE_WIRE_UUIDS) + + # Step 3: Remove components and power symbols + print("\nRemoving L7805 circuit components...") + text = remove_blocks_by_uuid(text, REMOVE_UUIDS) + + # Step 4: Add TPS61088 lib_symbol to lib_symbols section + print("\nAdding TPS61088 lib_symbol...") + # Find end of lib_symbols section (look for the closing paren before first junction/wire/label/symbol) + # The lib_symbols section ends with a line like "\t)" + # Find the pattern: a tab + ) that comes after all symbol definitions + lib_end_marker = "\n\t)\n" + # Find the FIRST occurrence of this pattern after "(lib_symbols" + lib_start = text.find("(lib_symbols") + if lib_start == -1: + print("ERROR: Could not find lib_symbols section", file=sys.stderr) + sys.exit(1) + + # Find the end of lib_symbols by tracking paren depth + lib_paren = text.index("(", lib_start) + lib_end = find_block_end(text, lib_paren) + # Insert before the closing paren + insert_pos = lib_end + # Read Device:L lib_symbol from KiCad library (not embedded in this schematic) + device_l_sym = "" + kicad_sym_paths = [ + "/nix/store/pbwczj1nsp823njj1kkw75a99jmkz958-kicad-symbols-884133df0a/share/kicad/symbols/Device.kicad_sym", + "/nix/store/6yiq36yhskjhga4mw63ypbw2wcb4f4m9-kicad-symbols-884133df0a/share/kicad/symbols/Device.kicad_sym", + ] + for path in kicad_sym_paths: + try: + with open(path) as lf: + ltext = lf.read() + ls = ltext.find('\n\t(symbol "L"') + if ls != -1: + ls += 1 + li = ls + while ltext[li] != '(': + li += 1 + ldepth = 0 + lpos = li + while lpos < len(ltext): + if ltext[lpos] == '(': + ldepth += 1 + elif ltext[lpos] == ')': + ldepth -= 1 + if ldepth == 0: + device_l_sym = ltext[ls:lpos+1] + device_l_sym = device_l_sym.replace('(symbol "L"', '(symbol "Device:L"', 1) + # Add extra tab for nesting inside lib_symbols + device_l_sym = '\n'.join('\t' + line for line in device_l_sym.split('\n')) + print(f" Loaded Device:L from {path}") + break + lpos += 1 + if device_l_sym: + break + except FileNotFoundError: + continue + + text = text[:insert_pos] + "\n" + TPS61088_LIB_SYMBOL + "\n" + device_l_sym + "\n\t" + text[insert_pos:] + + # Step 5: Generate and insert boost converter circuit + print("\nGenerating TPS61088 boost converter circuit...") + juncs, wires, lbls, ncs, txts, syms = generate_boost_circuit() + + # Insert before (sheet_instances + sheet_marker = "\t(sheet_instances" + sheet_pos = text.find(sheet_marker) + if sheet_pos == -1: + print("ERROR: Could not find sheet_instances", file=sys.stderr) + sys.exit(1) + + insert_blocks = [] + insert_blocks.extend(juncs) + insert_blocks.extend(ncs) + insert_blocks.extend(wires) + insert_blocks.extend(lbls) + insert_blocks.extend(txts) + insert_blocks.extend(syms) + + insert_text = "\n".join(insert_blocks) + "\n" + text = text[:sheet_pos] + insert_text + text[sheet_pos:] + + # Step 6: Write output + print(f"\nWriting {outfile}...") + with open(outfile, "w") as f: + f.write(text) + + print("Done! Open in KiCad to review.") + + +if __name__ == "__main__": + main() diff --git a/sym-lib-table b/sym-lib-table new file mode 100644 index 0000000..ec4fd55 --- /dev/null +++ b/sym-lib-table @@ -0,0 +1,4 @@ +(sym_lib_table + (version 7) + (lib (name "TPS61088")(type "KiCad")(uri "${KIPRJMOD}/../TPS61088.kicad_sym")(options "")(descr "TPS61088 Boost Converter")) +)