├── image ├── h_bridge.png ├── sch_1v65ref.png ├── diagram_BW6101.png ├── img_controller.jpg ├── HRTim_ADCTrigger1.jpg ├── h_bridge_as_boost.png ├── h_bridge_as_buck.png ├── img_cap_array_top.jpg ├── sch_current_sense.png ├── Report │ ├── 1694548742767.png │ └── 1694549124560.png ├── img_boost_ripple_5A.jpg ├── img_buck_ripple_5A.jpeg ├── img_cap_array_bottom.jpg ├── img_controller_shell.jpg ├── sch_cap_array_unit.png ├── sch_current_sense_RC.png ├── sch_iso_mos_driver.png ├── img_cap_array_bottom_2.jpg ├── img_buck_boost_ripple_5A.jpeg ├── pcb_rendering_cap_array_top.png ├── boost_asynchronous_synchronous.png ├── buck_asynchronous_synchronous.png ├── img_best_converting_effiency.jpg ├── img_controller_upper_board_SMT.jpg ├── pcb_rendering_cap_array_bottom.png ├── img_controller_lower_with_shell.jpg ├── scrshot_best_converting_effiency.png ├── img_controller_interboard_connection.jpg └── scrshot_current_sense_noise_before_RC.png ├── .gitignore ├── cap_controller_hardware ├── lower │ ├── production │ │ ├── gerber.zip │ │ ├── designators.csv │ │ ├── bom.csv │ │ ├── positions.csv │ │ └── netlist.ipc │ ├── bom.csv │ ├── charger_JYC_RM2023_V1.2_power.kicad_prl │ ├── charger_JYC_RM2023_V1.2_power.kicad_pro │ └── fp-info-cache └── upper │ ├── production │ ├── gerber.zip │ ├── bom.csv │ ├── designators.csv │ └── positions.csv │ ├── charger_JYC_RM2023_V1.2_control.kicad_prl │ ├── bom.csv │ ├── charger_JYC_RM2023_V1.2_control.ioc │ ├── charger_JYC_RM2023_V1.2_control.kicad_pro │ └── fp-info-cache ├── cap_array_hardware ├── capArray_JYC_RM2023_V0.2.kicad_prl └── capArray_JYC_RM2023_V0.2.kicad_pro ├── readme.md └── LICENSE /image/h_bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/h_bridge.png -------------------------------------------------------------------------------- /image/sch_1v65ref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/sch_1v65ref.png -------------------------------------------------------------------------------- /image/diagram_BW6101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/diagram_BW6101.png -------------------------------------------------------------------------------- /image/img_controller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_controller.jpg -------------------------------------------------------------------------------- /image/HRTim_ADCTrigger1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/HRTim_ADCTrigger1.jpg -------------------------------------------------------------------------------- /image/h_bridge_as_boost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/h_bridge_as_boost.png -------------------------------------------------------------------------------- /image/h_bridge_as_buck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/h_bridge_as_buck.png -------------------------------------------------------------------------------- /image/img_cap_array_top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_cap_array_top.jpg -------------------------------------------------------------------------------- /image/sch_current_sense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/sch_current_sense.png -------------------------------------------------------------------------------- /image/Report/1694548742767.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/Report/1694548742767.png -------------------------------------------------------------------------------- /image/Report/1694549124560.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/Report/1694549124560.png -------------------------------------------------------------------------------- /image/img_boost_ripple_5A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_boost_ripple_5A.jpg -------------------------------------------------------------------------------- /image/img_buck_ripple_5A.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_buck_ripple_5A.jpeg -------------------------------------------------------------------------------- /image/img_cap_array_bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_cap_array_bottom.jpg -------------------------------------------------------------------------------- /image/img_controller_shell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_controller_shell.jpg -------------------------------------------------------------------------------- /image/sch_cap_array_unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/sch_cap_array_unit.png -------------------------------------------------------------------------------- /image/sch_current_sense_RC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/sch_current_sense_RC.png -------------------------------------------------------------------------------- /image/sch_iso_mos_driver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/sch_iso_mos_driver.png -------------------------------------------------------------------------------- /image/img_cap_array_bottom_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_cap_array_bottom_2.jpg -------------------------------------------------------------------------------- /image/img_buck_boost_ripple_5A.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_buck_boost_ripple_5A.jpeg -------------------------------------------------------------------------------- /image/pcb_rendering_cap_array_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/pcb_rendering_cap_array_top.png -------------------------------------------------------------------------------- /image/boost_asynchronous_synchronous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/boost_asynchronous_synchronous.png -------------------------------------------------------------------------------- /image/buck_asynchronous_synchronous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/buck_asynchronous_synchronous.png -------------------------------------------------------------------------------- /image/img_best_converting_effiency.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_best_converting_effiency.jpg -------------------------------------------------------------------------------- /image/img_controller_upper_board_SMT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_controller_upper_board_SMT.jpg -------------------------------------------------------------------------------- /image/pcb_rendering_cap_array_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/pcb_rendering_cap_array_bottom.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /cap_controller_hardware/upper/charger_JYC_RM2023_V1.2_control-backups 2 | /cap_controller_hardware/lower/charger_JYC_RM2023_V1.2_power-backups 3 | -------------------------------------------------------------------------------- /image/img_controller_lower_with_shell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_controller_lower_with_shell.jpg -------------------------------------------------------------------------------- /image/scrshot_best_converting_effiency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/scrshot_best_converting_effiency.png -------------------------------------------------------------------------------- /image/img_controller_interboard_connection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/img_controller_interboard_connection.jpg -------------------------------------------------------------------------------- /image/scrshot_current_sense_noise_before_RC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/image/scrshot_current_sense_noise_before_RC.png -------------------------------------------------------------------------------- /cap_controller_hardware/lower/production/gerber.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/cap_controller_hardware/lower/production/gerber.zip -------------------------------------------------------------------------------- /cap_controller_hardware/upper/production/gerber.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hkustenterprize/RM2023-SuperCapacitor/HEAD/cap_controller_hardware/upper/production/gerber.zip -------------------------------------------------------------------------------- /cap_controller_hardware/lower/production/designators.csv: -------------------------------------------------------------------------------- 1 | C1:1 2 | C10:1 3 | C11:1 4 | C12:1 5 | C13:1 6 | C14:1 7 | C15:1 8 | C16:1 9 | C2:1 10 | C3:1 11 | C4:1 12 | C7:1 13 | C8:1 14 | C9:1 15 | D1:1 16 | D2:1 17 | D3:1 18 | D4:1 19 | D5:1 20 | D6:1 21 | F1:1 22 | F2:1 23 | H1:1 24 | H10:1 25 | H2:1 26 | H3:1 27 | H4:1 28 | H9:1 29 | J3:1 30 | J4:1 31 | J5:1 32 | J6:1 33 | J7:1 34 | J8:1 35 | J9:1 36 | Q1:1 37 | Q2:1 38 | Q3:1 39 | Q4:1 40 | Q5:1 41 | Q6:1 42 | Q7:1 43 | Q8:1 44 | R1:1 45 | R2:1 46 | R3:1 47 | R4:1 48 | R5:1 49 | R6:1 50 | R7:1 51 | TH1:1 52 | U1:1 53 | kibuzzard-63825869:1 54 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/bom.csv: -------------------------------------------------------------------------------- 1 | Designator,Footprint,Quantity,Value,LCSC Part # 2 | "C1, C2, C3, C7, C8, C9",CP_Elec_10x14.3,6,220uF, 3 | "C10, C11, C12, C13, C14, C15, C16, C4",1210,8,10uF, 4 | "D1, D2, D3, D4",D_SMF,4,SMF10A, 5 | "D5, D6",D_SMC,2,SMCJ33A, 6 | "F1, F2",Fuseholder_Littelfuse_Nano2_157x,2,Fuse, 7 | "H1, H10, H2, H3, H4, H9",Pad_3,6,MountingHole_Pad, 8 | J3,PinHeader_2x03_P2.54mm_Vertical_SMD,1,Conn_02x03_Odd_Even, 9 | "J4, J5, J6, J7, J8, J9",PinHeader_2x02_P2.54mm_Vertical_SMD,6,Conn_02x02_Odd_Even, 10 | "Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8",TDSON-8-1,8,BSC070N10NS3G, 11 | "R1, R2, R3",2512,3,4mR, 12 | "R4, R5, R6, R7",0603,4,10k, 13 | TH1,1206,1,Thermistor, 14 | U1,PQ2617BHA,1,10uH, 15 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/production/bom.csv: -------------------------------------------------------------------------------- 1 | Designator,Footprint,Quantity,Value,LCSC Part # 2 | "C1, C2, C3, C7, C8, C9",CP_Elec_10x14.3,6,220uF, 3 | "C10, C11, C12, C13, C14, C15, C16, C4",1210,8,10uF, 4 | "D1, D2, D3, D4",D_SMF,4,SMF10A, 5 | "D5, D6",D_SMC,2,SMCJ33A, 6 | "F1, F2",Fuseholder_Littelfuse_Nano2_157x,2,Fuse, 7 | "H1, H10, H2, H3, H4, H9",Pad_3,6,MountingHole_Pad, 8 | J3,PinHeader_2x03_P2.54mm_Vertical_SMD,1,Conn_02x03_Odd_Even, 9 | "J4, J5, J6, J7, J8, J9",PinHeader_2x02_P2.54mm_Vertical_SMD,6,Conn_02x02_Odd_Even, 10 | "Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8",TDSON-8-1,8,BSC070N10NS3G, 11 | "R1, R2, R3",2512,3,4mR, 12 | "R4, R5, R6, R7",0603,4,10k, 13 | TH1,1206,1,Thermistor, 14 | U1,PQ2617BHA,1,10uH, 15 | -------------------------------------------------------------------------------- /cap_array_hardware/capArray_JYC_RM2023_V0.2.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 31, 4 | "active_layer_preset": "", 5 | "auto_track_width": true, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 0.6, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 0.6 16 | }, 17 | "ratsnest_display_mode": 0, 18 | "selection_filter": { 19 | "dimensions": true, 20 | "footprints": true, 21 | "graphics": true, 22 | "keepouts": true, 23 | "lockedItems": true, 24 | "otherItems": true, 25 | "pads": true, 26 | "text": true, 27 | "tracks": true, 28 | "vias": true, 29 | "zones": true 30 | }, 31 | "visible_items": [ 32 | 0, 33 | 1, 34 | 2, 35 | 3, 36 | 4, 37 | 5, 38 | 8, 39 | 9, 40 | 10, 41 | 11, 42 | 12, 43 | 13, 44 | 14, 45 | 15, 46 | 16, 47 | 17, 48 | 18, 49 | 19, 50 | 20, 51 | 21, 52 | 22, 53 | 23, 54 | 24, 55 | 25, 56 | 26, 57 | 27, 58 | 28, 59 | 29, 60 | 30, 61 | 32, 62 | 33, 63 | 34, 64 | 35, 65 | 36 66 | ], 67 | "visible_layers": "effffff_ffffffff", 68 | "zone_display_mode": 0 69 | }, 70 | "meta": { 71 | "filename": "capArray_JYC_RM2023_V0.1.kicad_prl", 72 | "version": 3 73 | }, 74 | "project": { 75 | "files": [] 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/charger_JYC_RM2023_V1.2_power.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "All Layers", 5 | "auto_track_width": false, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 1.0, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 1.0 16 | }, 17 | "ratsnest_display_mode": 0, 18 | "selection_filter": { 19 | "dimensions": true, 20 | "footprints": true, 21 | "graphics": true, 22 | "keepouts": true, 23 | "lockedItems": false, 24 | "otherItems": true, 25 | "pads": true, 26 | "text": true, 27 | "tracks": true, 28 | "vias": true, 29 | "zones": true 30 | }, 31 | "visible_items": [ 32 | 0, 33 | 1, 34 | 2, 35 | 3, 36 | 4, 37 | 5, 38 | 8, 39 | 9, 40 | 10, 41 | 11, 42 | 12, 43 | 13, 44 | 15, 45 | 16, 46 | 17, 47 | 18, 48 | 19, 49 | 20, 50 | 21, 51 | 22, 52 | 23, 53 | 24, 54 | 25, 55 | 26, 56 | 27, 57 | 28, 58 | 29, 59 | 30, 60 | 32, 61 | 33, 62 | 34, 63 | 35, 64 | 36, 65 | 39, 66 | 40 67 | ], 68 | "visible_layers": "fffffff_ffffffff", 69 | "zone_display_mode": 1 70 | }, 71 | "meta": { 72 | "filename": "charger_JYC_RM2023_V1.2_power.kicad_prl", 73 | "version": 3 74 | }, 75 | "project": { 76 | "files": [] 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/charger_JYC_RM2023_V1.2_control.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "", 5 | "auto_track_width": true, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 0.4000000059604645, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 0.47999998927116394 16 | }, 17 | "ratsnest_display_mode": 0, 18 | "selection_filter": { 19 | "dimensions": true, 20 | "footprints": true, 21 | "graphics": true, 22 | "keepouts": true, 23 | "lockedItems": false, 24 | "otherItems": true, 25 | "pads": true, 26 | "text": true, 27 | "tracks": true, 28 | "vias": true, 29 | "zones": true 30 | }, 31 | "visible_items": [ 32 | 0, 33 | 1, 34 | 2, 35 | 3, 36 | 4, 37 | 5, 38 | 8, 39 | 9, 40 | 10, 41 | 11, 42 | 12, 43 | 13, 44 | 15, 45 | 16, 46 | 17, 47 | 18, 48 | 19, 49 | 20, 50 | 21, 51 | 22, 52 | 23, 53 | 24, 54 | 25, 55 | 26, 56 | 27, 57 | 28, 58 | 29, 59 | 30, 60 | 32, 61 | 33, 62 | 34, 63 | 35, 64 | 36, 65 | 39, 66 | 40 67 | ], 68 | "visible_layers": "ffcffff_ffffffff", 69 | "zone_display_mode": 0 70 | }, 71 | "meta": { 72 | "filename": "charger_JYC_RM2023_V1.2_control.kicad_prl", 73 | "version": 3 74 | }, 75 | "project": { 76 | "files": [] 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/production/positions.csv: -------------------------------------------------------------------------------- 1 | Designator,Mid X,Mid Y,Rotation,Layer 2 | C1,179.0,-73.951,0.0,top 3 | C10,122.047,-82.0035,270.0,top 4 | C11,118.745,-82.0035,270.0,top 5 | C12,115.443,-82.0035,270.0,top 6 | C13,112.141,-82.0035,270.0,top 7 | C14,158.115,-82.042,270.0,top 8 | C15,154.813,-82.042,270.0,top 9 | C16,151.511,-82.042,270.0,top 10 | C2,179.0,-85.0,0.0,top 11 | C3,94.0,-74.0,180.0,top 12 | C4,161.417,-82.042,270.0,top 13 | C7,94.0,-85.0,180.0,top 14 | C8,94.0,-96.0,180.0,top 15 | C9,179.0,-96.0,0.0,top 16 | D1,120.666,-64.345,90.0,top 17 | D2,134.255,-86.443,180.0,top 18 | D3,152.924,-64.345,90.0,top 19 | D4,139.335,-86.443,0.0,top 20 | D5,107.188,-82.042,270.0,top 21 | D6,166.37,-82.042,270.0,top 22 | F1,98.806,-52.959,0.0,top 23 | F2,181.5,-55.118,270.0,top 24 | H1,91.5,-65.0,0.0,top 25 | H10,181.483,-61.214,0.0,top 26 | H2,91.5,-53.0,0.0,top 27 | H3,98.5,-104.0,180.0,top 28 | H4,91.5,-104.0,180.0,top 29 | H9,181.5,-104.0,180.0,top 30 | J3,136.795,-91.904,90.0,top 31 | J4,99.0,-59.0,180.0,top 32 | J5,166.0,-104.0,180.0,top 33 | J6,107.0,-104.0,180.0,top 34 | J7,174.0,-59.0,90.0,top 35 | J8,117.49,-59.13,0.0,top 36 | J9,156.1,-59.13,0.0,top 37 | Q1,118.253,-69.552,180.0,top 38 | Q2,126.508,-81.632,90.0,top 39 | Q3,118.253,-75.267,180.0,top 40 | Q4,132.223,-81.632,90.0,top 41 | Q5,155.337,-75.267,0.0,top 42 | Q6,141.367,-81.617,90.0,top 43 | Q7,155.337,-69.552,0.0,top 44 | Q8,147.082,-81.617,90.0,top 45 | R1,91.5,-59.0,270.0,top 46 | R2,106.426,-59.944,270.0,top 47 | R3,173.999991,-52.5,0.0,top 48 | R4,118.745,-63.5,90.0,top 49 | R5,132.08,-89.408,270.0,top 50 | R6,154.813,-63.5,90.0,top 51 | R7,132.08,-92.456,270.0,top 52 | TH1,141.875,-92.92,270.0,top 53 | U1,139.205,-63.252,0.0,top 54 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/bom.csv: -------------------------------------------------------------------------------- 1 | Designator,Footprint,Quantity,Value,LCSC Part # 2 | BZ1,MLT-9032,1,Buzzer, 3 | "C1, C102, C103, C104, C105, C106, C107, C16, C17, C18, C2, C21, C22, C23, C24, C25, C29, C30, C31, C35, C37, C40, C41, C42, C43, C45, C47, C49, C50, C51, C52, C54, C55, C58, C59, C62, C67, C70, C71, C72, C74, C76, C77, C78, C79, C81, C83, C87, C88, C91, C92, C94, C95, C97, C99",0603,55,100n, 4 | "C10, C5, C53, C57, C6, C7, C8, C9",1206,8,10u, 5 | "C100, C101, C14, C15, C19, C20, C32, C33, C36, C39, C44, C56, C63, C64, C66, C68, C69, C75, C80, C82, C84, C85, C86, C89, C90, C93, C96, C98",0603,28,10u, 6 | C12,CP_Radial_D6.3mm_P2.50mm,1,680u, 7 | "C13, C28, C48, C65, C73",CP_EIA-3216-18_Kemet-A,5,47u, 8 | C26,CP_Radial_D6.3mm_P2.50mm,1,220u, 9 | "C3, C4",0603,2,100p, 10 | "C34, C46",0603,2,10n, 11 | C38,0603,1,20p, 12 | "C60, C61",CP_Radial_D6.3mm_P2.50mm,2,47u, 13 | "D1, D10, D11, D18, D2, D21, D8, D9",D_SMF,8,K34, 14 | "D12, D13, D14, D15, D17, D23, D25, D27, D4, D5, D6",0603,11,LED, 15 | "D16, D19, D20, D22",D_SMF,4,SMF10A, 16 | D3,D_SMF,1,SMCJ28A, 17 | D7,D_SMF,1,SMF5V0A, 18 | F1,1210,1,Polyfuse, 19 | F2,1206,1,Polyfuse, 20 | "J1, J10, J12, J2, J4, J6",conn_2x02_2.54,6,Conn_02x02_Odd_Even, 21 | "J11, J8",JST_GH_BM03B-GHS-TBT_1x03-1MP_P1.25mm_Vertical,2,Conn_UART, 22 | J13,JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical,1,Conn_CAN, 23 | J3,conn_2x03_2.54,1,Conn_02x03_Odd_Even, 24 | J5,JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_Vertical,1,Conn_OLED, 25 | J9,Molex_PicoBlade_53261-0471_1x04-1MP_P1.25mm_Horizontal,1,Conn_SWD, 26 | "L1, L2",L_Bourns-SRN4018,2,6R8, 27 | "L3, L4, L5",0603,3,L_Ferrite, 28 | Q1,SOT-23,1,AO3400A, 29 | "R1, R23, R7, R8",0603,4,100k 25ppm, 30 | "R10, R11, R16",0603,3,200r, 31 | R12,0603,1,118k, 32 | "R13, R15, R28, R29, R3, R35, R4, R41, R42, R51, R58",0603,11,10k, 33 | R14,0603,1,53.6k, 34 | "R17, R19, R34, R36, R37, R46, R47",0603,7,120r, 35 | "R18, R2",0603,2,10k 25ppm, 36 | "R20, R25, R32, R33, R44, R45, R5, R57, R6, R64, R65",0603,11,33r, 37 | "R21, R22, R53, R63",1206,4,3.3r, 38 | "R24, R30, R31, R39, R43, R50, R52, R55, R61, R62",0603,10,1k, 39 | R26,0603,1,100k, 40 | R27,0603,1,51k, 41 | "R38, R40",0603,2,2.2k, 42 | "R48, R49",1206,2,68r, 43 | "R54, R56, R59, R60, R66, R67",0603,6,100r 25ppm, 44 | R9,0603,1,5k, 45 | U1,SOT-23,1,REF3033, 46 | U11,SOIC-8_3.9x4.9mm_P1.27mm,1,TJA1042T-3, 47 | "U12, U13",SOT-23-5,2,RS3236, 48 | "U14, U15",BxxxxS-1W,2,ISO_DC, 49 | "U16, U17",SOIC-8_3.9x4.9mm_P1.27mm,2,UCC27211D, 50 | "U19, U7, U8",SOT-363_SC-70-6,3,INA186, 51 | U2,LQFP-64_10x10mm_P0.5mm,1,STM32F334R8Tx, 52 | "U3, U4",SOT-23-6,2,RY8411, 53 | "U5, U9",SOIC-8_3.9x4.9mm_P1.27mm,2,GS8332-SR, 54 | Y1,Resonator_SMD_Murata_CSTxExxV-3Pin_3.0x1.1mm,1,8MHz, 55 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/production/bom.csv: -------------------------------------------------------------------------------- 1 | Designator,Footprint,Quantity,Value,LCSC Part # 2 | BZ1,MLT-9032,1,Buzzer, 3 | "C1, C102, C103, C104, C105, C106, C107, C16, C17, C18, C2, C21, C22, C23, C24, C25, C29, C30, C31, C35, C37, C40, C41, C42, C43, C45, C47, C49, C50, C51, C52, C54, C55, C58, C59, C62, C67, C70, C71, C72, C74, C76, C77, C78, C79, C81, C83, C87, C88, C91, C92, C94, C95, C97, C99",0603,55,100n, 4 | "C10, C5, C53, C57, C6, C7, C8, C9",1206,8,10u, 5 | "C100, C101, C14, C15, C19, C20, C32, C33, C36, C39, C44, C56, C63, C64, C66, C68, C69, C75, C80, C82, C84, C85, C86, C89, C90, C93, C96, C98",0603,28,10u, 6 | C12,CP_Radial_D6.3mm_P2.50mm,1,680u, 7 | "C13, C28, C48, C65, C73",CP_EIA-3216-18_Kemet-A,5,47u, 8 | C26,CP_Radial_D6.3mm_P2.50mm,1,220u, 9 | "C3, C4",0603,2,100p, 10 | "C34, C46",0603,2,10n, 11 | C38,0603,1,20p, 12 | "C60, C61",CP_Radial_D6.3mm_P2.50mm,2,47u, 13 | "D1, D10, D11, D18, D2, D21, D8, D9",D_SMF,8,K34, 14 | "D12, D13, D14, D15, D17, D23, D25, D27, D4, D5, D6",0603,11,LED, 15 | "D16, D19, D20, D22",D_SMF,4,SMF10A, 16 | D3,D_SMF,1,SMCJ28A, 17 | D7,D_SMF,1,SMF5V0A, 18 | F1,1210,1,Polyfuse, 19 | F2,1206,1,Polyfuse, 20 | "J1, J10, J12, J2, J4, J6",conn_2x02_2.54,6,Conn_02x02_Odd_Even, 21 | "J11, J8",JST_GH_BM03B-GHS-TBT_1x03-1MP_P1.25mm_Vertical,2,Conn_UART, 22 | J13,JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical,1,Conn_CAN, 23 | J3,conn_2x03_2.54,1,Conn_02x03_Odd_Even, 24 | J5,JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_Vertical,1,Conn_OLED, 25 | J9,Molex_PicoBlade_53261-0471_1x04-1MP_P1.25mm_Horizontal,1,Conn_SWD, 26 | "L1, L2",L_Bourns-SRN4018,2,6R8, 27 | "L3, L4, L5",0603,3,L_Ferrite, 28 | Q1,SOT-23,1,AO3400A, 29 | "R1, R23, R7, R8",0603,4,100k 25ppm, 30 | "R10, R11, R16",0603,3,200r, 31 | R12,0603,1,118k, 32 | "R13, R15, R28, R29, R3, R35, R4, R41, R42, R51, R58",0603,11,10k, 33 | R14,0603,1,53.6k, 34 | "R17, R19, R34, R36, R37, R46, R47",0603,7,120r, 35 | "R18, R2",0603,2,10k 25ppm, 36 | "R20, R25, R32, R33, R44, R45, R5, R57, R6, R64, R65",0603,11,33r, 37 | "R21, R22, R53, R63",1206,4,3.3r, 38 | "R24, R30, R31, R39, R43, R50, R52, R55, R61, R62",0603,10,1k, 39 | R26,0603,1,100k, 40 | R27,0603,1,51k, 41 | "R38, R40",0603,2,2.2k, 42 | "R48, R49",1206,2,68r, 43 | "R54, R56, R59, R60, R66, R67",0603,6,100r 25ppm, 44 | R9,0603,1,5k, 45 | U1,SOT-23,1,REF3033, 46 | U11,SOIC-8_3.9x4.9mm_P1.27mm,1,TJA1042T-3, 47 | "U12, U13",SOT-23-5,2,RS3236, 48 | "U14, U15",BxxxxS-1W,2,ISO_DC, 49 | "U16, U17",SOIC-8_3.9x4.9mm_P1.27mm,2,UCC27211D, 50 | "U19, U7, U8",SOT-363_SC-70-6,3,INA186, 51 | U2,LQFP-64_10x10mm_P0.5mm,1,STM32F334R8Tx, 52 | "U3, U4",SOT-23-6,2,RY8411, 53 | "U5, U9",SOIC-8_3.9x4.9mm_P1.27mm,2,GS8332-SR, 54 | Y1,Resonator_SMD_Murata_CSTxExxV-3Pin_3.0x1.1mm,1,8MHz, 55 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/production/designators.csv: -------------------------------------------------------------------------------- 1 | BZ1:1 2 | C1:1 3 | C10:1 4 | C100:1 5 | C101:1 6 | C102:1 7 | C103:1 8 | C104:1 9 | C105:1 10 | C106:1 11 | C107:1 12 | C12:1 13 | C13:1 14 | C14:1 15 | C15:1 16 | C16:1 17 | C17:1 18 | C18:1 19 | C19:1 20 | C2:1 21 | C20:1 22 | C21:1 23 | C22:1 24 | C23:1 25 | C24:1 26 | C25:1 27 | C26:1 28 | C28:1 29 | C29:1 30 | C3:1 31 | C30:1 32 | C31:1 33 | C32:1 34 | C33:1 35 | C34:1 36 | C35:1 37 | C36:1 38 | C37:1 39 | C38:1 40 | C39:1 41 | C4:1 42 | C40:1 43 | C41:1 44 | C42:1 45 | C43:1 46 | C44:1 47 | C45:1 48 | C46:1 49 | C47:1 50 | C48:1 51 | C49:1 52 | C5:1 53 | C50:1 54 | C51:1 55 | C52:1 56 | C53:1 57 | C54:1 58 | C55:1 59 | C56:1 60 | C57:1 61 | C58:1 62 | C59:1 63 | C6:1 64 | C60:1 65 | C61:1 66 | C62:1 67 | C63:1 68 | C64:1 69 | C65:1 70 | C66:1 71 | C67:1 72 | C68:1 73 | C69:1 74 | C7:1 75 | C70:1 76 | C71:1 77 | C72:1 78 | C73:1 79 | C74:1 80 | C75:1 81 | C76:1 82 | C77:1 83 | C78:1 84 | C79:1 85 | C8:1 86 | C80:1 87 | C81:1 88 | C82:1 89 | C83:1 90 | C84:1 91 | C85:1 92 | C86:1 93 | C87:1 94 | C88:1 95 | C89:1 96 | C9:1 97 | C90:1 98 | C91:1 99 | C92:1 100 | C93:1 101 | C94:1 102 | C95:1 103 | C96:1 104 | C97:1 105 | C98:1 106 | C99:1 107 | D1:1 108 | D10:1 109 | D11:1 110 | D12:1 111 | D13:1 112 | D14:1 113 | D15:1 114 | D16:1 115 | D17:1 116 | D18:1 117 | D19:1 118 | D2:1 119 | D20:1 120 | D21:1 121 | D22:1 122 | D23:1 123 | D25:1 124 | D27:1 125 | D3:1 126 | D4:1 127 | D5:1 128 | D6:1 129 | D7:1 130 | D8:1 131 | D9:1 132 | F1:1 133 | F2:1 134 | J1:1 135 | J10:1 136 | J11:1 137 | J12:1 138 | J13:1 139 | J2:1 140 | J3:1 141 | J4:1 142 | J5:1 143 | J6:1 144 | J8:1 145 | J9:1 146 | L1:1 147 | L2:1 148 | L3:1 149 | L4:1 150 | L5:1 151 | Q1:1 152 | R1:1 153 | R10:1 154 | R11:1 155 | R12:1 156 | R13:1 157 | R14:1 158 | R15:1 159 | R16:1 160 | R17:1 161 | R18:1 162 | R19:1 163 | R2:1 164 | R20:1 165 | R21:1 166 | R22:1 167 | R23:1 168 | R24:1 169 | R25:1 170 | R26:1 171 | R27:1 172 | R28:1 173 | R29:1 174 | R3:1 175 | R30:1 176 | R31:1 177 | R32:1 178 | R33:1 179 | R34:1 180 | R35:1 181 | R36:1 182 | R37:1 183 | R38:1 184 | R39:1 185 | R4:1 186 | R40:1 187 | R41:1 188 | R42:1 189 | R43:1 190 | R44:1 191 | R45:1 192 | R46:1 193 | R47:1 194 | R48:1 195 | R49:1 196 | R5:1 197 | R50:1 198 | R51:1 199 | R52:1 200 | R53:1 201 | R54:1 202 | R55:1 203 | R56:1 204 | R57:1 205 | R58:1 206 | R59:1 207 | R6:1 208 | R60:1 209 | R61:1 210 | R62:1 211 | R63:1 212 | R64:1 213 | R65:1 214 | R66:1 215 | R67:1 216 | R7:1 217 | R8:1 218 | R9:1 219 | U1:1 220 | U11:1 221 | U12:1 222 | U13:1 223 | U14:1 224 | U15:1 225 | U16:1 226 | U17:1 227 | U19:1 228 | U2:1 229 | U3:1 230 | U4:1 231 | U5:1 232 | U7:1 233 | U8:1 234 | U9:1 235 | Y1:1 236 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/production/positions.csv: -------------------------------------------------------------------------------- 1 | Designator,Mid X,Mid Y,Rotation,Layer 2 | C1,94.723,-119.378,180.0,top 3 | C10,100.244,-135.674,270.0,top 4 | C100,110.852,-115.989,90.0,top 5 | C101,112.376,-115.989,90.0,top 6 | C102,116.694,-118.783,0.0,top 7 | C103,152.2032,-88.684,90.0,top 8 | C104,120.504,-105.829,0.0,top 9 | C105,120.504,-107.734,180.0,top 10 | C106,120.504,-109.258,0.0,top 11 | C107,120.504,-111.163,180.0,top 12 | C13,114.281,-125.133,0.0,top 13 | C14,97.517,-88.951,270.0,top 14 | C15,108.439,-129.832,270.0,bottom 15 | C16,131.553,-114.465,0.0,top 16 | C17,131.553,-111.417,0.0,top 17 | C18,103.105,-110.655,180.0,top 18 | C19,101.962,-82.715,0.0,bottom 19 | C2,96.374,-131.147,180.0,top 20 | C20,90.151,-84.493,180.0,top 21 | C21,111.614,-113.576,0.0,top 22 | C22,122.79,-106.972,270.0,top 23 | C23,112.757,-108.877,270.0,top 24 | C24,97.898,-82.715,180.0,bottom 25 | C25,139.681,-82.715,180.0,bottom 26 | C28,126.092,-130.086,270.0,top 27 | C29,113.392,-132.626,0.0,top 28 | C3,97.801,-117.496,90.0,top 29 | C30,114.148,-135.039,270.0,top 30 | C31,114.148,-130.086,270.0,top 31 | C32,112.648,-130.086,270.0,top 32 | C33,112.648,-135.039,270.0,top 33 | C34,117.448,-132.586,180.0,top 34 | C35,120.504,-114.973,270.0,top 35 | C36,153.778,-129.197,90.0,bottom 36 | C37,120.504,-118.021,270.0,top 37 | C38,117.837,-129.705,120.0,bottom 38 | C39,106.915,-129.832,270.0,bottom 39 | C4,99.3712,-129.197,90.0,top 40 | C40,128.378,-111.29,0.0,top 41 | C41,152.127,-96.558,270.0,top 42 | C42,128.378,-109.766,0.0,top 43 | C43,153.651,-96.558,270.0,top 44 | C44,95.993,-88.938,270.0,top 45 | C45,127.489,-121.704,270.0,top 46 | C46,117.448,-137.539,180.0,top 47 | C47,121.248,-130.086,270.0,top 48 | C48,114.281,-127.267,0.0,top 49 | C49,119.748,-135.039,270.0,top 50 | C5,98.644,-123.101,270.0,top 51 | C50,146.92,-110.274,270.0,top 52 | C51,131.553,-120.561,0.0,top 53 | C52,131.553,-117.513,0.0,top 54 | C53,93.326,-129.578,270.0,top 55 | C54,132.569,-128.562,225.0,bottom 56 | C55,131.045,-136.182,135.0,bottom 57 | C56,121.266,-133.782,90.0,top 58 | C57,88.373,-117.386,180.0,top 59 | C58,128.378,-106.718,0.0,top 60 | C59,128.378,-108.242,0.0,top 61 | C6,102.597,-135.674,270.0,top 62 | C60,89.305677,-128.001117,225.0,top 63 | C61,89.68238,-122.085,180.0,top 64 | C62,155.302,-129.197,90.0,bottom 65 | C63,119.748,-130.086,270.0,top 66 | C64,121.266,-136.817,270.0,top 67 | C65,114.154,-115.1,90.0,top 68 | C66,145.269,-91.732,180.0,top 69 | C67,145.269,-90.208,180.0,top 70 | C68,149.46,-91.478,90.0,top 71 | C69,149.46,-94.513,270.0,top 72 | C7,100.946,-123.101,270.0,top 73 | C70,127.173,-112.941,180.0,top 74 | C71,147.682,-126.403,0.0,top 75 | C72,146.92,-113.322,90.0,top 76 | C73,136.549623,-110.854823,90.0,top 77 | C74,90.151,-86.017,180.0,top 78 | C75,101.962,-84.239,0.0,bottom 79 | C76,115.932,-114.973,270.0,top 80 | C77,134.22,-118.275,270.0,top 81 | C78,154.1336,-88.684,270.0,top 82 | C79,138.327623,-111.663823,270.0,top 83 | C8,104.883,-135.674,270.0,top 84 | C80,117.456,-114.973,270.0,top 85 | C81,134.855,-125.26,180.0,top 86 | C82,148.571,-114.338,90.0,top 87 | C83,150.222,-116.751,0.0,top 88 | C84,139.851623,-111.663823,270.0,top 89 | C85,97.898,-84.239,180.0,bottom 90 | C86,139.681,-84.239,180.0,bottom 91 | C87,142.094,-109.004,0.0,top 92 | C88,131.553,-123.609,0.0,top 93 | C89,143.745,-84.239,0.0,bottom 94 | C9,103.26,-123.101,270.0,top 95 | C90,114.408,-122.466,90.0,top 96 | C91,110.598,-123.228,180.0,top 97 | C92,153.143,-90.97,180.0,top 98 | C93,124.248,-130.086,270.0,top 99 | C94,122.748,-130.086,270.0,top 100 | C95,122.79,-110.147,270.0,top 101 | C96,143.745,-82.715,0.0,bottom 102 | C97,110.598,-121.704,0.0,top 103 | C98,113.646,-120.18,180.0,top 104 | C99,109.328,-115.989,90.0,top 105 | D1,98.406,-110.02,0.0,top 106 | D10,108.566,-135.928,300.0,bottom 107 | D11,135.109,-132.88,225.0,bottom 108 | D18,139.554,-94.907,180.0,top 109 | D2,98.406,-112.433,0.0,top 110 | D21,139.554,-99.479,180.0,top 111 | D3,89.516,-111.29,90.0,top 112 | D8,102.216,-94.907,0.0,top 113 | D9,96.374,-96.759,270.0,top 114 | L3,122.048,-127.786,0.0,top 115 | L4,112.884,-122.466,270.0,top 116 | L5,113.646,-118.275,0.0,top 117 | R10,131.553,-112.941,0.0,top 118 | R11,148.444,-110.274,270.0,top 119 | R12,99.325,-117.496,90.0,top 120 | R13,98.5885,-115.227,0.0,top 121 | R14,100.8742,-129.197,90.0,top 122 | R15,100.1332,-126.911,0.0,top 123 | R16,131.553,-109.893,0.0,top 124 | R17,154.54,-109.131,0.0,bottom 125 | R19,154.54,-110.655,0.0,bottom 126 | R20,119.742,-112.687,0.0,top 127 | R21,102.216,-97.193,0.0,top 128 | R22,98.66,-96.685,270.0,top 129 | R24,118.98,-114.973,270.0,top 130 | R25,119.107,-134.15,0.0,bottom 131 | R26,107.423,-121.704,270.0,top 132 | R27,109.074,-133.388,270.0,top 133 | R28,124.314,-133.769,270.0,top 134 | R29,122.79,-133.769,270.0,top 135 | R3,94.342,-114.465,180.0,top 136 | R30,92.80015,-98.971,270.0,top 137 | R31,97.4915,-107.988,180.0,top 138 | R32,131.553,-119.037,0.0,top 139 | R33,131.553,-115.989,0.0,top 140 | R34,128.759,-131.737,180.0,top 141 | R35,91.27615,-98.971,90.0,top 142 | R36,154.54,-125.387,0.0,bottom 143 | R37,154.54,-126.911,0.0,bottom 144 | R38,155.302,-123.101,90.0,bottom 145 | R39,94.32415,-98.971,270.0,top 146 | R4,94.596,-126.149,180.0,top 147 | R40,153.778,-123.101,90.0,bottom 148 | R41,89.75215,-98.971,90.0,top 149 | R42,145.142,-104.496,90.0,top 150 | R43,150.222,-118.402,180.0,top 151 | R44,131.553,-127.546,225.0,bottom 152 | R45,133.585,-129.578,225.0,bottom 153 | R46,140.443,-130.721,270.0,top 154 | R47,138.919,-130.721,270.0,top 155 | R48,92.818,-84.239,270.0,top 156 | R49,148.825,-86.779,270.0,top 157 | R5,89.75215,-95.923,90.0,top 158 | R50,146.666,-104.496,270.0,top 159 | R51,143.618,-104.496,90.0,top 160 | R52,148.19,-104.496,270.0,top 161 | R53,139.554,-97.193,180.0,top 162 | R55,142.094,-107.48,0.0,top 163 | R57,131.553,-125.103,0.0,top 164 | R58,119.869,-131.864,270.0,bottom 165 | R6,91.27615,-95.923,90.0,top 166 | R61,153.778,-117.132,90.0,bottom 167 | R62,155.302,-117.132,90.0,bottom 168 | R63,139.554,-101.765,180.0,top 169 | R64,143.618,-101.448,90.0,top 170 | R65,145.142,-101.448,90.0,top 171 | R9,125.965,-121.704,270.0,top 172 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/production/netlist.ipc: -------------------------------------------------------------------------------- 1 | P CODE 00 2 | P UNITS CUST 0 3 | P arrayDim N 4 | 327B_SW J9 -1 A01X+060463Y-022780X1240Y0394R000S2 5 | 327B_POWER J9 -2 A01X+062451Y-022780X1240Y0394R000S2 6 | 327B_HG J9 -3 A01X+060463Y-023780X1240Y0394R000S2 7 | 327B_POWER J9 -4 A01X+062451Y-023780X1240Y0394R000S2 8 | 327B_POWER C2 -1 A01X+068819Y-033465X1732Y0984R000S2 9 | 327GNDPWR C2 -2 A01X+072126Y-033465X1732Y0984R000S2 10 | 327NET-(J3-PIN_6) TH1 -1 A01X+055856Y-035972X0512Y0689R090S2 11 | 327GNDPWR TH1 -2 A01X+055856Y-037193X0512Y0689R090S2 12 | 327A_SW U1 -1 A01X+051858Y-029248X2098Y2201R000S2 13 | 327B_SW U1 -2 A01X+055854Y-029248X2098Y2201R000S2 14 | 327L_MP U1 -3 A01X+053856Y-020557X2079Y2500R270S2 15 | 327GNDPWR Q8 -1 A01X+057156Y-033274X0335Y0197R270S2 16 | 327GNDPWR Q8 -2 A01X+057656Y-033274X0335Y0197R270S2 17 | 327GNDPWR Q8 -3 A01X+058156Y-033274X0335Y0197R270S2 18 | 327B_LG Q8 -4 A01X+058656Y-033274X0335Y0197R270S2 19 | 327B_SW Q8 -5 A01X+057906Y-031719X1791Y1736R270S3 20 | 327B_SW Q5 -1 A01X+060015Y-028883X0335Y0197R000S2 21 | 327B_SW Q5 -2 A01X+060015Y-029383X0335Y0197R000S2 22 | 327B_SW Q5 -3 A01X+060015Y-029883X0335Y0197R000S2 23 | 327B_HG Q5 -4 A01X+060015Y-030383X0335Y0197R000S2 24 | 327B_POWER Q5 -5 A01X+061570Y-029633X1791Y1736R000S3 25 | 327A_LG R5 -1 A01X+052000Y-034875X0315Y0374R090S2 26 | 327GNDPWR R5 -2 A01X+052000Y-035525X0315Y0374R090S2 27 | 327A_POWER C13 -1 A01X+044150Y-031670X0522Y1063R090S2 28 | 327GNDPWR C13 -2 A01X+044150Y-032900X0522Y1063R090S2 29 | 327A_SW Q3 -1 A01X+047698Y-030383X0335Y0197R180S2 30 | 327A_SW Q3 -2 A01X+047698Y-029883X0335Y0197R180S2 31 | 327A_SW Q3 -3 A01X+047698Y-029383X0335Y0197R180S2 32 | 327A_HG Q3 -4 A01X+047698Y-028883X0335Y0197R180S2 33 | 327A_POWER Q3 -5 A01X+046143Y-029633X1791Y1736R180S3 34 | 327B_HG R6 -1 A01X+060950Y-025325X0315Y0374R270S2 35 | 327B_SW R6 -2 A01X+060950Y-024675X0315Y0374R270S2 36 | 327VCHASSIS R1 -1 A01X+036024Y-022028X0551Y1319R090S2 37 | 327VJUDGE R1 -2 A01X+036024Y-024429X0551Y1319R090S2 38 | 327B_SW Q7 -1 A01X+060015Y-026633X0335Y0197R000S2 39 | 327B_SW Q7 -2 A01X+060015Y-027133X0335Y0197R000S2 40 | 327B_SW Q7 -3 A01X+060015Y-027633X0335Y0197R000S2 41 | 327B_HG Q7 -4 A01X+060015Y-028133X0335Y0197R000S2 42 | 327B_POWER Q7 -5 A01X+061570Y-027383X1791Y1736R000S3 43 | 327B_POWER D6 -1 A01X+065500Y-030961X1299Y0984R000S2 44 | 327GNDPWR D6 -2 A01X+065500Y-033639X1299Y0984R000S2 45 | 327A_POWER J8 -1 A01X+045262Y-022780X1240Y0394R000S2 46 | 327A_SW J8 -2 A01X+047250Y-022780X1240Y0394R000S2 47 | 327A_POWER J8 -3 A01X+045262Y-023780X1240Y0394R000S2 48 | 327A_HG J8 -4 A01X+047250Y-023780X1240Y0394R000S2 49 | 327A_LG D2 -1 A01X+053427Y-034033X0512Y0551R180S2 50 | 327GNDPWR D2 -2 A01X+052285Y-034033X0512Y0551R180S2 51 | 327B_LG R7 -1 A01X+052000Y-036075X0315Y0374R090S2 52 | 327GNDPWR R7 -2 A01X+052000Y-036725X0315Y0374R090S2 53 | 327A_POWER C12 -1 A01X+045450Y-031670X0522Y1063R090S2 54 | 327GNDPWR C12 -2 A01X+045450Y-032900X0522Y1063R090S2 55 | 327VCAP H10 -1 A01X+071450Y-024100X2362Y1181R000S2 56 | 327A_POWER C3 -1 A01X+038661Y-029134X1732Y0984R180S2 57 | 327GNDPWR C3 -2 A01X+035354Y-029134X1732Y0984R180S2 58 | 327VCHASSIS H2 -1 A01X+036024Y-020866X2362Y1181R000S2 59 | 327B_POWER C16 -1 A01X+059650Y-031685X0522Y1063R090S2 60 | 327GNDPWR C16 -2 A01X+059650Y-032915X0522Y1063R090S2 61 | 327A_SW Q1 -1 A01X+047698Y-028133X0335Y0197R180S2 62 | 327A_SW Q1 -2 A01X+047698Y-027633X0335Y0197R180S2 63 | 327A_SW Q1 -3 A01X+047698Y-027133X0335Y0197R180S2 64 | 327A_HG Q1 -4 A01X+047698Y-026633X0335Y0197R180S2 65 | 327A_POWER Q1 -5 A01X+046143Y-027383X1791Y1736R180S3 66 | 327B_POWER C9 -1 A01X+068819Y-037795X1732Y0984R000S2 67 | 327GNDPWR C9 -2 A01X+072126Y-037795X1732Y0984R000S2 68 | 327B_POWER C4 -1 A01X+063550Y-031685X0522Y1063R090S2 69 | 327GNDPWR C4 -2 A01X+063550Y-032915X0522Y1063R090S2 70 | 327NET-(J7-PIN_4) F2 -1 A01X+071457Y-020743X0945Y1181R090S2 71 | 327VCAP F2 -2 A01X+071457Y-022657X0945Y1181R090S2 72 | 327B_POWER C1 -1 A01X+068819Y-029115X1732Y0984R000S2 73 | 327GNDPWR C1 -2 A01X+072126Y-029115X1732Y0984R000S2 74 | 327A_POWER C11 -1 A01X+046750Y-031670X0522Y1063R090S2 75 | 327GNDPWR C11 -2 A01X+046750Y-032900X0522Y1063R090S2 76 | 327B_POWER R3 -1 A01X+067303Y-020669X0551Y1319R000S2 77 | 327NET-(J7-PIN_4) R3 -2 A01X+069705Y-020669X0551Y1319R000S2 78 | 327A_POWER C10 -1 A01X+048050Y-031670X0522Y1063R090S2 79 | 327GNDPWR C10 -2 A01X+048050Y-032900X0522Y1063R090S2 80 | 327A_HG D1 -1 A01X+047506Y-025904X0512Y0551R270S2 81 | 327A_SW D1 -2 A01X+047506Y-024762X0512Y0551R270S2 82 | 327GNDPWR Q6 -1 A01X+054906Y-033274X0335Y0197R270S2 83 | 327GNDPWR Q6 -2 A01X+055406Y-033274X0335Y0197R270S2 84 | 327GNDPWR Q6 -3 A01X+055906Y-033274X0335Y0197R270S2 85 | 327B_LG Q6 -4 A01X+056406Y-033274X0335Y0197R270S2 86 | 327B_SW Q6 -5 A01X+055656Y-031719X1791Y1736R270S3 87 | 327GNDPWR H3 -1 A01X+038780Y-040945X2362Y1181R180S2 88 | 327B_LG D4 -1 A01X+054285Y-034033X0512Y0551R000S2 89 | 327GNDPWR D4 -2 A01X+055427Y-034033X0512Y0551R000S2 90 | 327GNDPWR H4 -1 A01X+036024Y-040945X2362Y1181R180S2 91 | 327GNDPWR Q4 -1 A01X+051306Y-033280X0335Y0197R270S2 92 | 327GNDPWR Q4 -2 A01X+051806Y-033280X0335Y0197R270S2 93 | 327GNDPWR Q4 -3 A01X+052306Y-033280X0335Y0197R270S2 94 | 327A_LG Q4 -4 A01X+052806Y-033280X0335Y0197R270S2 95 | 327A_SW Q4 -5 A01X+052056Y-031725X1791Y1736R270S3 96 | 327B_POWER C14 -1 A01X+062250Y-031685X0522Y1063R090S2 97 | 327GNDPWR C14 -2 A01X+062250Y-032915X0522Y1063R090S2 98 | 327A_POWER D5 -1 A01X+042200Y-030961X1299Y0984R000S2 99 | 327GNDPWR D5 -2 A01X+042200Y-033639X1299Y0984R000S2 100 | 327GNDPWR Q2 -1 A01X+049056Y-033280X0335Y0197R270S2 101 | 327GNDPWR Q2 -2 A01X+049556Y-033280X0335Y0197R270S2 102 | 327GNDPWR Q2 -3 A01X+050056Y-033280X0335Y0197R270S2 103 | 327A_LG Q2 -4 A01X+050556Y-033280X0335Y0197R270S2 104 | 327A_SW Q2 -5 A01X+049806Y-031725X1791Y1736R270S3 105 | 327A_POWER J4 -1 A01X+039970Y-023728X1240Y0394R180S2 106 | 327VJUDGE J4 -2 A01X+037982Y-023728X1240Y0394R180S2 107 | 327NET-(J4-PIN_3) J4 -3 A01X+039970Y-022728X1240Y0394R180S2 108 | 327VCHASSIS J4 -4 A01X+037982Y-022728X1240Y0394R180S2 109 | 327A_POWER C8 -1 A01X+038661Y-037795X1732Y0984R180S2 110 | 327GNDPWR C8 -2 A01X+035354Y-037795X1732Y0984R180S2 111 | 327GNDPWR J3 -1 A01X+052856Y-037177X1240Y0394R270S2 112 | 327A_LG J3 -2 A01X+052856Y-035189X1240Y0394R270S2 113 | 327GNDPWR J3 -3 A01X+053856Y-037177X1240Y0394R270S2 114 | 327B_LG J3 -4 A01X+053856Y-035189X1240Y0394R270S2 115 | 327GNDPWR J3 -5 A01X+054856Y-037177X1240Y0394R270S2 116 | 327NET-(J3-PIN_6) J3 -6 A01X+054856Y-035189X1240Y0394R270S2 117 | 327NET-(J7-PIN_1) J7 -1 A01X+068004Y-024222X1240Y0394R270S2 118 | 327B_POWER J7 -2 A01X+068004Y-022234X1240Y0394R270S2 119 | 327NET-(J7-PIN_1) J7 -3 A01X+069004Y-024222X1240Y0394R270S2 120 | 327NET-(J7-PIN_4) J7 -4 A01X+069004Y-022234X1240Y0394R270S2 121 | 327GNDPWR H9 -1 A01X+071457Y-040945X2362Y1181R180S2 122 | 327B_HG D3 -1 A01X+060206Y-025904X0512Y0551R270S2 123 | 327B_SW D3 -2 A01X+060206Y-024762X0512Y0551R270S2 124 | 327VCHASSIS F1 -1 A01X+037943Y-020850X0945Y1181R000S2 125 | 327NET-(J4-PIN_3) F1 -2 A01X+039857Y-020850X0945Y1181R000S2 126 | 327VJUDGE H1 -1 A01X+036024Y-025591X2362Y1181R000S2 127 | 327B_POWER C15 -1 A01X+060950Y-031685X0522Y1063R090S2 128 | 327GNDPWR C15 -2 A01X+060950Y-032915X0522Y1063R090S2 129 | 327NET-(J4-PIN_3) R2 -1 A01X+041900Y-022399X0551Y1319R090S2 130 | 327A_POWER R2 -2 A01X+041900Y-024801X0551Y1319R090S2 131 | 327A_HG R4 -1 A01X+046750Y-025325X0315Y0374R270S2 132 | 327A_SW R4 -2 A01X+046750Y-024675X0315Y0374R270S2 133 | 327A_POWER C7 -1 A01X+038661Y-033465X1732Y0984R180S2 134 | 327GNDPWR C7 -2 A01X+035354Y-033465X1732Y0984R180S2 135 | 327GNDPWR J6 -1 A01X+043120Y-041445X1240Y0394R180S2 136 | 327GNDPWR J6 -2 A01X+041132Y-041445X1240Y0394R180S2 137 | 327GNDPWR J6 -3 A01X+043120Y-040445X1240Y0394R180S2 138 | 327GNDPWR J6 -4 A01X+041132Y-040445X1240Y0394R180S2 139 | 327GNDPWR J5 -1 A01X+066348Y-041445X1240Y0394R180S2 140 | 327GNDPWR J5 -2 A01X+064360Y-041445X1240Y0394R180S2 141 | 327GNDPWR J5 -3 A01X+066348Y-040445X1240Y0394R180S2 142 | 327GNDPWR J5 -4 A01X+064360Y-040445X1240Y0394R180S2 143 | 999 144 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/charger_JYC_RM2023_V1.2_control.ioc: -------------------------------------------------------------------------------- 1 | #MicroXplorer Configuration settings - do not modify 2 | ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_1 3 | ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_1 4 | ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1 5 | ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV1 6 | ADC1.ContinuousConvMode=ENABLE 7 | ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONVHRTIM_TRG1 8 | ADC1.IPParameters=Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,Offset-1\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler,ContinuousConvMode,NbrOfConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,SamplingTimeOPAMP-2\#ChannelRegularConversion,OffsetNumber-2\#ChannelRegularConversion,Offset-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,SamplingTimeOPAMP-3\#ChannelRegularConversion,OffsetNumber-3\#ChannelRegularConversion,Offset-3\#ChannelRegularConversion,InjNumberOfConversion,ExternalTrigConv,InjectedRank-4\#ChannelInjectedConversion,InjectedChannel-4\#ChannelInjectedConversion,Rank1_Channel,InjectedSamplingTime-4\#ChannelInjectedConversion,InjectedSamplingTimeOPAMP-4\#ChannelInjectedConversion,InjectedOffsetNumber-4\#ChannelInjectedConversion,InjectedOffset-4\#ChannelInjectedConversion 9 | ADC1.InjNumberOfConversion=1 10 | ADC1.InjectedChannel-4\#ChannelInjectedConversion=ADC_CHANNEL_1 11 | ADC1.InjectedOffset-4\#ChannelInjectedConversion=0 12 | ADC1.InjectedOffsetNumber-4\#ChannelInjectedConversion=ADC_OFFSET_NONE 13 | ADC1.InjectedRank-4\#ChannelInjectedConversion=1 14 | ADC1.InjectedSamplingTime-4\#ChannelInjectedConversion=ADC_SAMPLETIME_1CYCLE_5 15 | ADC1.InjectedSamplingTimeOPAMP-4\#ChannelInjectedConversion=ADC_SAMPLETIME_61CYCLES_5 16 | ADC1.NbrOfConversion=3 17 | ADC1.NbrOfConversionFlag=1 18 | ADC1.Offset-1\#ChannelRegularConversion=0 19 | ADC1.Offset-2\#ChannelRegularConversion=0 20 | ADC1.Offset-3\#ChannelRegularConversion=0 21 | ADC1.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE 22 | ADC1.OffsetNumber-2\#ChannelRegularConversion=ADC_OFFSET_NONE 23 | ADC1.OffsetNumber-3\#ChannelRegularConversion=ADC_OFFSET_NONE 24 | ADC1.Rank-1\#ChannelRegularConversion=1 25 | ADC1.Rank-2\#ChannelRegularConversion=2 26 | ADC1.Rank-3\#ChannelRegularConversion=3 27 | ADC1.Rank1_Channel=ADC_CHANNEL_1 28 | ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 29 | ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 30 | ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 31 | ADC1.SamplingTimeOPAMP-2\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 32 | ADC1.SamplingTimeOPAMP-3\#ChannelRegularConversion=ADC_SAMPLETIME_61CYCLES_5 33 | ADC1.master=1 34 | CAN.BS1=CAN_BS1_4TQ 35 | CAN.BS2=CAN_BS2_4TQ 36 | CAN.CalculateBaudRate=1000000 37 | CAN.CalculateTimeBit=1000 38 | CAN.CalculateTimeQuantum=111.11111111111111 39 | CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,BS1,BS2 40 | CAN.Prescaler=4 41 | File.Version=6 42 | GPIO.groupedBy=Group By Peripherals 43 | HRTIM1.ADCTrigger_Id1=__NULL 44 | HRTIM1.CompareUnit1-MasterTimer=__NULL 45 | HRTIM1.CompareUnit1-Output_TA1TA2=__NULL 46 | HRTIM1.Deadtimeconfig-Output_TA1TA2=__NULL 47 | HRTIM1.Enable=HRTIM_BURSTMODECTL_DISABLED 48 | HRTIM1.EnableCalibration=DLLSimpleCalibration 49 | HRTIM1.FaultLevel2-Output_TA1TA2=HRTIM_OUTPUTFAULTLEVEL_INACTIVE 50 | HRTIM1.FaultLock-Output_TA1TA2=HRTIM_TIMFAULTLOCK_READWRITE 51 | HRTIM1.HRTIMInterruptResquests1=HRTIM_IT_SYSFLT 52 | HRTIM1.HRTIMInterruptResquests2=HRTIM_IT_NONE 53 | HRTIM1.HRTIMInterruptResquests3=HRTIM_IT_NONE 54 | HRTIM1.IPParameters=CompareUnit1-MasterTimer,Deadtimeconfig-Output_TA1TA2,HRTIMInterruptResquests1,HRTIMInterruptResquests2,HRTIMInterruptResquests3,Enable,PrescalerRatio_MASTER,EnableCalibration,Periode_MASTER,ADCTrigger_Id1,FaultLock-Output_TA1TA2,FaultLevel2-Output_TA1TA2,IdleMode2-Output_TA1TA2,CompareUnit1-Output_TA1TA2 55 | HRTIM1.IdleMode2-Output_TA1TA2=HRTIM_OUTPUTIDLEMODE_NONE 56 | HRTIM1.Periode_MASTER=16000 57 | HRTIM1.PrescalerRatio_MASTER=HRTIM_PRESCALERRATIO_MUL32 58 | KeepUserPlacement=false 59 | Mcu.CPN=STM32F334R8T7 60 | Mcu.Family=STM32F3 61 | Mcu.IP0=ADC1 62 | Mcu.IP1=CAN 63 | Mcu.IP2=HRTIM1 64 | Mcu.IP3=NVIC 65 | Mcu.IP4=RCC 66 | Mcu.IP5=SYS 67 | Mcu.IP6=USART2 68 | Mcu.IPNb=7 69 | Mcu.Name=STM32F334R(6-8)Tx 70 | Mcu.Package=LQFP64 71 | Mcu.Pin0=PF0 / OSC_IN 72 | Mcu.Pin1=PF1 / OSC_OUT 73 | Mcu.Pin10=PB11 74 | Mcu.Pin11=PB14 75 | Mcu.Pin12=PB15 76 | Mcu.Pin13=PC6 77 | Mcu.Pin14=PC7 78 | Mcu.Pin15=PC8 79 | Mcu.Pin16=PC9 80 | Mcu.Pin17=PA8 81 | Mcu.Pin18=PA9 82 | Mcu.Pin19=PA10 83 | Mcu.Pin2=PC1 84 | Mcu.Pin20=PA11 85 | Mcu.Pin21=PA13 86 | Mcu.Pin22=PA14 87 | Mcu.Pin23=PB3 88 | Mcu.Pin24=PB4 89 | Mcu.Pin25=PB8 90 | Mcu.Pin26=PB9 91 | Mcu.Pin27=VP_HRTIM1_VS_hrtimMasterTimerNoOutput 92 | Mcu.Pin28=VP_SYS_VS_Systick 93 | Mcu.Pin3=PC2 94 | Mcu.Pin4=PC3 95 | Mcu.Pin5=PA0 96 | Mcu.Pin6=PA1 97 | Mcu.Pin7=PA2 98 | Mcu.Pin8=PB0 99 | Mcu.Pin9=PB10 100 | Mcu.PinsNb=29 101 | Mcu.ThirdPartyNb=0 102 | Mcu.UserConstants= 103 | Mcu.UserName=STM32F334R8Tx 104 | MxCube.Version=6.6.1 105 | MxDb.Version=DB.6.0.60 106 | NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 107 | NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 108 | NVIC.ForceEnableDMAVector=true 109 | NVIC.HRTIM1_Master_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true 110 | NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 111 | NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 112 | NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 113 | NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 114 | NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 115 | NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 116 | NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false 117 | NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false 118 | PA0.Locked=true 119 | PA0.Mode=IN1-Single-Ended 120 | PA0.Signal=ADC1_IN1 121 | PA1.Locked=true 122 | PA1.Mode=IN2-Single-Ended 123 | PA1.Signal=ADC1_IN2 124 | PA10.Mode=Output_TB1TB2 125 | PA10.Signal=HRTIM1_CHB1 126 | PA11.Mode=Output_TB1TB2 127 | PA11.Signal=HRTIM1_CHB2 128 | PA13.Mode=Serial_Wire 129 | PA13.Signal=SYS_JTMS-SWDIO 130 | PA14.Mode=Serial_Wire 131 | PA14.Signal=SYS_JTCK-SWCLK 132 | PA2.Locked=true 133 | PA2.Mode=IN3-Single-Ended 134 | PA2.Signal=ADC1_IN3 135 | PA8.Locked=true 136 | PA8.Mode=Output_TA1TA2 137 | PA8.Signal=HRTIM1_CHA1 138 | PA9.Mode=Output_TA1TA2 139 | PA9.Signal=HRTIM1_CHA2 140 | PB0.Locked=true 141 | PB0.Signal=TIM1_CH2N 142 | PB10.Mode=Fault_Enable3 143 | PB10.Signal=HRTIM1_FLT3 144 | PB11.Mode=Fault_Enable4 145 | PB11.Signal=HRTIM1_FLT4 146 | PB14.Locked=true 147 | PB14.Signal=S_TIM15_CH1 148 | PB15.Locked=true 149 | PB15.Signal=S_TIM15_CH2 150 | PB3.Mode=Asynchronous 151 | PB3.Signal=USART2_TX 152 | PB4.Locked=true 153 | PB4.Mode=Asynchronous 154 | PB4.Signal=USART2_RX 155 | PB8.Mode=CAN_Activate 156 | PB8.Signal=CAN_RX 157 | PB9.Mode=CAN_Activate 158 | PB9.Signal=CAN_TX 159 | PC1.Locked=true 160 | PC1.Signal=ADCx_IN7 161 | PC2.Locked=true 162 | PC2.Signal=ADCx_IN8 163 | PC3.Locked=true 164 | PC3.Signal=ADCx_IN9 165 | PC6.Locked=true 166 | PC6.Signal=S_TIM3_CH1 167 | PC7.Locked=true 168 | PC7.Signal=S_TIM3_CH2 169 | PC8.Locked=true 170 | PC8.Signal=S_TIM3_CH3 171 | PC9.Locked=true 172 | PC9.Signal=S_TIM3_CH4 173 | PF0\ /\ OSC_IN.Mode=HSE-External-Oscillator 174 | PF0\ /\ OSC_IN.Signal=RCC_OSC_IN 175 | PF1\ /\ OSC_OUT.Mode=HSE-External-Oscillator 176 | PF1\ /\ OSC_OUT.Signal=RCC_OSC_OUT 177 | PinOutPanel.RotationAngle=0 178 | ProjectManager.AskForMigrate=true 179 | ProjectManager.BackupPrevious=false 180 | ProjectManager.CompilerOptimize=6 181 | ProjectManager.ComputerToolchain=false 182 | ProjectManager.CoupleFile=false 183 | ProjectManager.CustomerFirmwarePackage= 184 | ProjectManager.DefaultFWLocation=true 185 | ProjectManager.DeletePrevious=true 186 | ProjectManager.DeviceId=STM32F334R8Tx 187 | ProjectManager.FirmwarePackage=STM32Cube FW_F3 V1.11.3 188 | ProjectManager.FreePins=false 189 | ProjectManager.HalAssertFull=false 190 | ProjectManager.HeapSize=0x200 191 | ProjectManager.KeepUserCode=true 192 | ProjectManager.LastFirmware=true 193 | ProjectManager.LibraryCopy=0 194 | ProjectManager.MainLocation=Core/Src 195 | ProjectManager.NoMain=false 196 | ProjectManager.PreviousToolchain= 197 | ProjectManager.ProjectBuild=false 198 | ProjectManager.ProjectFileName=charger_JYC_RM2023_V0.1_control.ioc 199 | ProjectManager.ProjectName=charger_JYC_RM2023_V0.1_control 200 | ProjectManager.RegisterCallBack= 201 | ProjectManager.StackSize=0x400 202 | ProjectManager.TargetToolchain=EWARM V8.32 203 | ProjectManager.ToolChainLocation= 204 | ProjectManager.UnderRoot=false 205 | ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CAN_Init-CAN-false-HAL-true,4-MX_HRTIM1_Init-HRTIM1-false-HAL-true 206 | RCC.ADC12outputFreq_Value=72000000 207 | RCC.AHBFreq_Value=72000000 208 | RCC.APB1CLKDivider=RCC_HCLK_DIV2 209 | RCC.APB1Freq_Value=36000000 210 | RCC.APB1TimFreq_Value=72000000 211 | RCC.APB2Freq_Value=72000000 212 | RCC.APB2TimFreq_Value=72000000 213 | RCC.CortexFreq_Value=72000000 214 | RCC.FCLKCortexFreq_Value=72000000 215 | RCC.FamilyName=M 216 | RCC.HCLKFreq_Value=72000000 217 | RCC.HRTIM1Freq_Value=144000000 218 | RCC.HRTIMSelection=RCC_HRTIM1CLK_PLLCLK 219 | RCC.HSEPLLFreq_Value=8000000 220 | RCC.HSE_VALUE=8000000 221 | RCC.HSIPLLFreq_Value=4000000 222 | RCC.HSI_VALUE=8000000 223 | RCC.I2C1Freq_Value=8000000 224 | RCC.IPParameters=ADC12outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HRTIM1Freq_Value,HRTIMSelection,HSEPLLFreq_Value,HSE_VALUE,HSIPLLFreq_Value,HSI_VALUE,I2C1Freq_Value,LSE_VALUE,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM1Freq_Value,TIM2Freq_Value,USART1Freq_Value,VCOOutput2Freq_Value 225 | RCC.LSE_VALUE=32768 226 | RCC.LSI_VALUE=40000 227 | RCC.MCOFreq_Value=72000000 228 | RCC.PLLCLKFreq_Value=72000000 229 | RCC.PLLMCOFreq_Value=72000000 230 | RCC.PLLMUL=RCC_PLL_MUL9 231 | RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE 232 | RCC.RTCFreq_Value=40000 233 | RCC.RTCHSEDivFreq_Value=250000 234 | RCC.SYSCLKFreq_VALUE=72000000 235 | RCC.SYSCLKSourceVirtual=RCC_SYSCLKSOURCE_PLLCLK 236 | RCC.TIM1Freq_Value=72000000 237 | RCC.TIM2Freq_Value=72000000 238 | RCC.USART1Freq_Value=36000000 239 | RCC.VCOOutput2Freq_Value=8000000 240 | SH.ADCx_IN7.0=ADC2_IN7 241 | SH.ADCx_IN7.ConfNb=1 242 | SH.ADCx_IN8.0=ADC2_IN8 243 | SH.ADCx_IN8.ConfNb=1 244 | SH.ADCx_IN9.0=ADC2_IN9 245 | SH.ADCx_IN9.ConfNb=1 246 | SH.S_TIM15_CH1.0=TIM15_CH1 247 | SH.S_TIM15_CH1.ConfNb=1 248 | SH.S_TIM15_CH2.0=TIM15_CH2 249 | SH.S_TIM15_CH2.ConfNb=1 250 | SH.S_TIM3_CH1.0=TIM3_CH1 251 | SH.S_TIM3_CH1.ConfNb=1 252 | SH.S_TIM3_CH2.0=TIM3_CH2 253 | SH.S_TIM3_CH2.ConfNb=1 254 | SH.S_TIM3_CH3.0=TIM3_CH3 255 | SH.S_TIM3_CH3.ConfNb=1 256 | SH.S_TIM3_CH4.0=TIM3_CH4 257 | SH.S_TIM3_CH4.ConfNb=1 258 | USART2.IPParameters=VirtualMode-Asynchronous 259 | USART2.VirtualMode-Asynchronous=VM_ASYNC 260 | VP_HRTIM1_VS_hrtimMasterTimerNoOutput.Mode=MasterTimer 261 | VP_HRTIM1_VS_hrtimMasterTimerNoOutput.Signal=HRTIM1_VS_hrtimMasterTimerNoOutput 262 | VP_SYS_VS_Systick.Mode=SysTick 263 | VP_SYS_VS_Systick.Signal=SYS_VS_Systick 264 | board=custom 265 | -------------------------------------------------------------------------------- /cap_array_hardware/capArray_JYC_RM2023_V0.2.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "board_outline_line_width": 0.09999999999999999, 7 | "copper_line_width": 0.19999999999999998, 8 | "copper_text_italic": false, 9 | "copper_text_size_h": 1.5, 10 | "copper_text_size_v": 1.5, 11 | "copper_text_thickness": 0.3, 12 | "copper_text_upright": false, 13 | "courtyard_line_width": 0.049999999999999996, 14 | "dimension_precision": 4, 15 | "dimension_units": 3, 16 | "dimensions": { 17 | "arrow_length": 1270000, 18 | "extension_offset": 500000, 19 | "keep_text_aligned": true, 20 | "suppress_zeroes": false, 21 | "text_position": 0, 22 | "units_format": 1 23 | }, 24 | "fab_line_width": 0.09999999999999999, 25 | "fab_text_italic": false, 26 | "fab_text_size_h": 1.0, 27 | "fab_text_size_v": 1.0, 28 | "fab_text_thickness": 0.15, 29 | "fab_text_upright": false, 30 | "other_line_width": 0.15, 31 | "other_text_italic": false, 32 | "other_text_size_h": 1.0, 33 | "other_text_size_v": 1.0, 34 | "other_text_thickness": 0.15, 35 | "other_text_upright": false, 36 | "pads": { 37 | "drill": 0.762, 38 | "height": 1.524, 39 | "width": 1.524 40 | }, 41 | "silk_line_width": 0.15, 42 | "silk_text_italic": false, 43 | "silk_text_size_h": 1.0, 44 | "silk_text_size_v": 1.0, 45 | "silk_text_thickness": 0.15, 46 | "silk_text_upright": false, 47 | "zones": { 48 | "min_clearance": 0.5 49 | } 50 | }, 51 | "diff_pair_dimensions": [ 52 | { 53 | "gap": 0.0, 54 | "via_gap": 0.0, 55 | "width": 0.0 56 | } 57 | ], 58 | "drc_exclusions": [], 59 | "meta": { 60 | "version": 2 61 | }, 62 | "rule_severities": { 63 | "annular_width": "error", 64 | "clearance": "error", 65 | "connection_width": "warning", 66 | "copper_edge_clearance": "error", 67 | "copper_sliver": "warning", 68 | "courtyards_overlap": "warning", 69 | "diff_pair_gap_out_of_range": "error", 70 | "diff_pair_uncoupled_length_too_long": "error", 71 | "drill_out_of_range": "error", 72 | "duplicate_footprints": "warning", 73 | "extra_footprint": "warning", 74 | "footprint": "error", 75 | "footprint_type_mismatch": "ignore", 76 | "hole_clearance": "error", 77 | "hole_near_hole": "error", 78 | "invalid_outline": "error", 79 | "isolated_copper": "warning", 80 | "item_on_disabled_layer": "error", 81 | "items_not_allowed": "error", 82 | "length_out_of_range": "error", 83 | "lib_footprint_issues": "warning", 84 | "lib_footprint_mismatch": "warning", 85 | "malformed_courtyard": "error", 86 | "microvia_drill_out_of_range": "error", 87 | "missing_courtyard": "ignore", 88 | "missing_footprint": "warning", 89 | "net_conflict": "warning", 90 | "npth_inside_courtyard": "ignore", 91 | "padstack": "warning", 92 | "pth_inside_courtyard": "ignore", 93 | "shorting_items": "error", 94 | "silk_edge_clearance": "warning", 95 | "silk_over_copper": "warning", 96 | "silk_overlap": "warning", 97 | "skew_out_of_range": "error", 98 | "solder_mask_bridge": "error", 99 | "starved_thermal": "error", 100 | "text_height": "warning", 101 | "text_thickness": "warning", 102 | "through_hole_pad_without_hole": "error", 103 | "too_many_vias": "error", 104 | "track_dangling": "warning", 105 | "track_width": "error", 106 | "tracks_crossing": "error", 107 | "unconnected_items": "error", 108 | "unresolved_variable": "error", 109 | "via_dangling": "warning", 110 | "zones_intersect": "error" 111 | }, 112 | "rules": { 113 | "max_error": 0.005, 114 | "min_clearance": 0.0, 115 | "min_connection": 0.0, 116 | "min_copper_edge_clearance": 0.0, 117 | "min_hole_clearance": 0.25, 118 | "min_hole_to_hole": 0.25, 119 | "min_microvia_diameter": 0.19999999999999998, 120 | "min_microvia_drill": 0.09999999999999999, 121 | "min_resolved_spokes": 2, 122 | "min_silk_clearance": 0.0, 123 | "min_text_height": 0.7999999999999999, 124 | "min_text_thickness": 0.08, 125 | "min_through_hole_diameter": 0.3, 126 | "min_track_width": 0.0, 127 | "min_via_annular_width": 0.09999999999999999, 128 | "min_via_diameter": 0.5, 129 | "solder_mask_clearance": 0.0, 130 | "solder_mask_min_width": 0.0, 131 | "solder_mask_to_copper_clearance": 0.0, 132 | "use_height_for_length_calcs": true 133 | }, 134 | "teardrop_options": [ 135 | { 136 | "td_allow_use_two_tracks": true, 137 | "td_curve_segcount": 5, 138 | "td_on_pad_in_zone": false, 139 | "td_onpadsmd": true, 140 | "td_onroundshapesonly": false, 141 | "td_ontrackend": false, 142 | "td_onviapad": true 143 | } 144 | ], 145 | "teardrop_parameters": [ 146 | { 147 | "td_curve_segcount": 0, 148 | "td_height_ratio": 1.0, 149 | "td_length_ratio": 0.5, 150 | "td_maxheight": 2.0, 151 | "td_maxlen": 1.0, 152 | "td_target_name": "td_round_shape", 153 | "td_width_to_size_filter_ratio": 0.9 154 | }, 155 | { 156 | "td_curve_segcount": 0, 157 | "td_height_ratio": 1.0, 158 | "td_length_ratio": 0.5, 159 | "td_maxheight": 2.0, 160 | "td_maxlen": 1.0, 161 | "td_target_name": "td_rect_shape", 162 | "td_width_to_size_filter_ratio": 0.9 163 | }, 164 | { 165 | "td_curve_segcount": 0, 166 | "td_height_ratio": 1.0, 167 | "td_length_ratio": 0.5, 168 | "td_maxheight": 2.0, 169 | "td_maxlen": 1.0, 170 | "td_target_name": "td_track_end", 171 | "td_width_to_size_filter_ratio": 0.9 172 | } 173 | ], 174 | "track_widths": [ 175 | 0.0, 176 | 0.508, 177 | 2.0 178 | ], 179 | "via_dimensions": [ 180 | { 181 | "diameter": 0.0, 182 | "drill": 0.0 183 | } 184 | ], 185 | "zones_allow_external_fillets": true 186 | }, 187 | "layer_presets": [], 188 | "viewports": [] 189 | }, 190 | "boards": [], 191 | "cvpcb": { 192 | "equivalence_files": [] 193 | }, 194 | "erc": { 195 | "erc_exclusions": [], 196 | "meta": { 197 | "version": 0 198 | }, 199 | "pin_map": [ 200 | [ 201 | 0, 202 | 0, 203 | 0, 204 | 0, 205 | 0, 206 | 0, 207 | 1, 208 | 0, 209 | 0, 210 | 0, 211 | 0, 212 | 2 213 | ], 214 | [ 215 | 0, 216 | 2, 217 | 0, 218 | 1, 219 | 0, 220 | 0, 221 | 1, 222 | 0, 223 | 2, 224 | 2, 225 | 2, 226 | 2 227 | ], 228 | [ 229 | 0, 230 | 0, 231 | 0, 232 | 0, 233 | 0, 234 | 0, 235 | 1, 236 | 0, 237 | 1, 238 | 0, 239 | 1, 240 | 2 241 | ], 242 | [ 243 | 0, 244 | 1, 245 | 0, 246 | 0, 247 | 0, 248 | 0, 249 | 1, 250 | 1, 251 | 2, 252 | 1, 253 | 1, 254 | 2 255 | ], 256 | [ 257 | 0, 258 | 0, 259 | 0, 260 | 0, 261 | 0, 262 | 0, 263 | 1, 264 | 0, 265 | 0, 266 | 0, 267 | 0, 268 | 2 269 | ], 270 | [ 271 | 0, 272 | 0, 273 | 0, 274 | 0, 275 | 0, 276 | 0, 277 | 0, 278 | 0, 279 | 0, 280 | 0, 281 | 0, 282 | 2 283 | ], 284 | [ 285 | 1, 286 | 1, 287 | 1, 288 | 1, 289 | 1, 290 | 0, 291 | 1, 292 | 1, 293 | 1, 294 | 1, 295 | 1, 296 | 2 297 | ], 298 | [ 299 | 0, 300 | 0, 301 | 0, 302 | 1, 303 | 0, 304 | 0, 305 | 1, 306 | 0, 307 | 0, 308 | 0, 309 | 0, 310 | 2 311 | ], 312 | [ 313 | 0, 314 | 2, 315 | 1, 316 | 2, 317 | 0, 318 | 0, 319 | 1, 320 | 0, 321 | 2, 322 | 2, 323 | 2, 324 | 2 325 | ], 326 | [ 327 | 0, 328 | 2, 329 | 0, 330 | 1, 331 | 0, 332 | 0, 333 | 1, 334 | 0, 335 | 2, 336 | 0, 337 | 0, 338 | 2 339 | ], 340 | [ 341 | 0, 342 | 2, 343 | 1, 344 | 1, 345 | 0, 346 | 0, 347 | 1, 348 | 0, 349 | 2, 350 | 0, 351 | 0, 352 | 2 353 | ], 354 | [ 355 | 2, 356 | 2, 357 | 2, 358 | 2, 359 | 2, 360 | 2, 361 | 2, 362 | 2, 363 | 2, 364 | 2, 365 | 2, 366 | 2 367 | ] 368 | ], 369 | "rule_severities": { 370 | "bus_definition_conflict": "error", 371 | "bus_entry_needed": "error", 372 | "bus_to_bus_conflict": "error", 373 | "bus_to_net_conflict": "error", 374 | "conflicting_netclasses": "error", 375 | "different_unit_footprint": "error", 376 | "different_unit_net": "error", 377 | "duplicate_reference": "error", 378 | "duplicate_sheet_names": "error", 379 | "endpoint_off_grid": "warning", 380 | "extra_units": "error", 381 | "global_label_dangling": "warning", 382 | "hier_label_mismatch": "error", 383 | "label_dangling": "error", 384 | "lib_symbol_issues": "warning", 385 | "missing_bidi_pin": "warning", 386 | "missing_input_pin": "warning", 387 | "missing_power_pin": "error", 388 | "missing_unit": "warning", 389 | "multiple_net_names": "warning", 390 | "net_not_bus_member": "warning", 391 | "no_connect_connected": "warning", 392 | "no_connect_dangling": "warning", 393 | "pin_not_connected": "error", 394 | "pin_not_driven": "error", 395 | "pin_to_pin": "warning", 396 | "power_pin_not_driven": "error", 397 | "similar_labels": "warning", 398 | "simulation_model_issue": "error", 399 | "unannotated": "error", 400 | "unit_value_mismatch": "error", 401 | "unresolved_variable": "error", 402 | "wire_dangling": "error" 403 | } 404 | }, 405 | "libraries": { 406 | "pinned_footprint_libs": [], 407 | "pinned_symbol_libs": [] 408 | }, 409 | "meta": { 410 | "filename": "capArray_JYC_RM2023_V0.1.kicad_pro", 411 | "version": 1 412 | }, 413 | "net_settings": { 414 | "classes": [ 415 | { 416 | "bus_width": 12, 417 | "clearance": 0.2, 418 | "diff_pair_gap": 0.25, 419 | "diff_pair_via_gap": 0.25, 420 | "diff_pair_width": 0.2, 421 | "line_style": 0, 422 | "microvia_diameter": 0.3, 423 | "microvia_drill": 0.1, 424 | "name": "Default", 425 | "pcb_color": "rgba(0, 0, 0, 0.000)", 426 | "schematic_color": "rgba(0, 0, 0, 0.000)", 427 | "track_width": 0.25, 428 | "via_diameter": 0.8, 429 | "via_drill": 0.4, 430 | "wire_width": 6 431 | } 432 | ], 433 | "meta": { 434 | "version": 3 435 | }, 436 | "net_colors": null, 437 | "netclass_assignments": null, 438 | "netclass_patterns": [] 439 | }, 440 | "pcbnew": { 441 | "last_paths": { 442 | "gencad": "", 443 | "idf": "", 444 | "netlist": "", 445 | "specctra_dsn": "", 446 | "step": "", 447 | "vrml": "" 448 | }, 449 | "page_layout_descr_file": "" 450 | }, 451 | "schematic": { 452 | "annotate_start_num": 0, 453 | "drawing": { 454 | "dashed_lines_dash_length_ratio": 12.0, 455 | "dashed_lines_gap_length_ratio": 3.0, 456 | "default_line_thickness": 6.0, 457 | "default_text_size": 50.0, 458 | "field_names": [], 459 | "intersheets_ref_own_page": false, 460 | "intersheets_ref_prefix": "", 461 | "intersheets_ref_short": false, 462 | "intersheets_ref_show": false, 463 | "intersheets_ref_suffix": "", 464 | "junction_size_choice": 3, 465 | "label_size_ratio": 0.375, 466 | "pin_symbol_size": 25.0, 467 | "text_offset_ratio": 0.15 468 | }, 469 | "legacy_lib_dir": "", 470 | "legacy_lib_list": [], 471 | "meta": { 472 | "version": 1 473 | }, 474 | "net_format_name": "", 475 | "ngspice": { 476 | "fix_include_paths": true, 477 | "fix_passive_vals": false, 478 | "meta": { 479 | "version": 0 480 | }, 481 | "model_mode": 0, 482 | "workbook_filename": "" 483 | }, 484 | "page_layout_descr_file": "", 485 | "plot_directory": "", 486 | "spice_adjust_passive_values": false, 487 | "spice_current_sheet_as_root": false, 488 | "spice_external_command": "spice \"%I\"", 489 | "spice_model_current_sheet_as_root": true, 490 | "spice_save_all_currents": false, 491 | "spice_save_all_voltages": false, 492 | "subpart_first_id": 65, 493 | "subpart_id_separator": 0 494 | }, 495 | "sheets": [ 496 | [ 497 | "53defa58-71e4-450a-ae8f-b716d2733a95", 498 | "" 499 | ] 500 | ], 501 | "text_variables": {} 502 | } 503 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/charger_JYC_RM2023_V1.2_power.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "board_outline_line_width": 0.09999999999999999, 7 | "copper_line_width": 0.19999999999999998, 8 | "copper_text_italic": false, 9 | "copper_text_size_h": 1.5, 10 | "copper_text_size_v": 1.5, 11 | "copper_text_thickness": 0.3, 12 | "copper_text_upright": false, 13 | "courtyard_line_width": 0.049999999999999996, 14 | "dimension_precision": 4, 15 | "dimension_units": 3, 16 | "dimensions": { 17 | "arrow_length": 1270000, 18 | "extension_offset": 500000, 19 | "keep_text_aligned": true, 20 | "suppress_zeroes": false, 21 | "text_position": 0, 22 | "units_format": 1 23 | }, 24 | "fab_line_width": 0.09999999999999999, 25 | "fab_text_italic": false, 26 | "fab_text_size_h": 1.0, 27 | "fab_text_size_v": 1.0, 28 | "fab_text_thickness": 0.15, 29 | "fab_text_upright": false, 30 | "other_line_width": 0.15, 31 | "other_text_italic": false, 32 | "other_text_size_h": 1.0, 33 | "other_text_size_v": 1.0, 34 | "other_text_thickness": 0.15, 35 | "other_text_upright": false, 36 | "pads": { 37 | "drill": 0.0, 38 | "height": 3.0, 39 | "width": 6.0 40 | }, 41 | "silk_line_width": 0.15, 42 | "silk_text_italic": false, 43 | "silk_text_size_h": 1.0, 44 | "silk_text_size_v": 1.0, 45 | "silk_text_thickness": 0.15, 46 | "silk_text_upright": false, 47 | "zones": { 48 | "45_degree_only": false, 49 | "min_clearance": 0.254 50 | } 51 | }, 52 | "diff_pair_dimensions": [ 53 | { 54 | "gap": 0.0, 55 | "via_gap": 0.0, 56 | "width": 0.0 57 | } 58 | ], 59 | "drc_exclusions": [], 60 | "meta": { 61 | "version": 2 62 | }, 63 | "rule_severities": { 64 | "annular_width": "error", 65 | "clearance": "error", 66 | "connection_width": "warning", 67 | "copper_edge_clearance": "error", 68 | "copper_sliver": "warning", 69 | "courtyards_overlap": "error", 70 | "diff_pair_gap_out_of_range": "error", 71 | "diff_pair_uncoupled_length_too_long": "error", 72 | "drill_out_of_range": "error", 73 | "duplicate_footprints": "warning", 74 | "extra_footprint": "warning", 75 | "footprint": "error", 76 | "footprint_type_mismatch": "error", 77 | "hole_clearance": "error", 78 | "hole_near_hole": "error", 79 | "invalid_outline": "error", 80 | "isolated_copper": "warning", 81 | "item_on_disabled_layer": "error", 82 | "items_not_allowed": "error", 83 | "length_out_of_range": "error", 84 | "lib_footprint_issues": "warning", 85 | "lib_footprint_mismatch": "warning", 86 | "malformed_courtyard": "error", 87 | "microvia_drill_out_of_range": "error", 88 | "missing_courtyard": "ignore", 89 | "missing_footprint": "warning", 90 | "net_conflict": "warning", 91 | "npth_inside_courtyard": "ignore", 92 | "padstack": "error", 93 | "pth_inside_courtyard": "ignore", 94 | "shorting_items": "error", 95 | "silk_edge_clearance": "warning", 96 | "silk_over_copper": "warning", 97 | "silk_overlap": "warning", 98 | "skew_out_of_range": "error", 99 | "solder_mask_bridge": "error", 100 | "starved_thermal": "error", 101 | "text_height": "warning", 102 | "text_thickness": "warning", 103 | "through_hole_pad_without_hole": "error", 104 | "too_many_vias": "error", 105 | "track_dangling": "warning", 106 | "track_width": "error", 107 | "tracks_crossing": "error", 108 | "unconnected_items": "error", 109 | "unresolved_variable": "error", 110 | "via_dangling": "warning", 111 | "zones_intersect": "error" 112 | }, 113 | "rules": { 114 | "allow_blind_buried_vias": false, 115 | "allow_microvias": false, 116 | "max_error": 0.005, 117 | "min_clearance": 0.0, 118 | "min_connection": 0.0, 119 | "min_copper_edge_clearance": 0.508, 120 | "min_hole_clearance": 0.25, 121 | "min_hole_to_hole": 0.25, 122 | "min_microvia_diameter": 0.19999999999999998, 123 | "min_microvia_drill": 0.09999999999999999, 124 | "min_resolved_spokes": 2, 125 | "min_silk_clearance": 0.0, 126 | "min_text_height": 0.7999999999999999, 127 | "min_text_thickness": 0.12, 128 | "min_through_hole_diameter": 0.3, 129 | "min_track_width": 0.19999999999999998, 130 | "min_via_annular_width": 0.049999999999999996, 131 | "min_via_diameter": 0.39999999999999997, 132 | "solder_mask_clearance": 0.0, 133 | "solder_mask_min_width": 0.0, 134 | "solder_mask_to_copper_clearance": 0.0, 135 | "use_height_for_length_calcs": true 136 | }, 137 | "teardrop_options": [ 138 | { 139 | "td_allow_use_two_tracks": true, 140 | "td_curve_segcount": 5, 141 | "td_on_pad_in_zone": false, 142 | "td_onpadsmd": true, 143 | "td_onroundshapesonly": false, 144 | "td_ontrackend": false, 145 | "td_onviapad": true 146 | } 147 | ], 148 | "teardrop_parameters": [ 149 | { 150 | "td_curve_segcount": 0, 151 | "td_height_ratio": 1.0, 152 | "td_length_ratio": 0.5, 153 | "td_maxheight": 2.0, 154 | "td_maxlen": 1.0, 155 | "td_target_name": "td_round_shape", 156 | "td_width_to_size_filter_ratio": 0.9 157 | }, 158 | { 159 | "td_curve_segcount": 0, 160 | "td_height_ratio": 1.0, 161 | "td_length_ratio": 0.5, 162 | "td_maxheight": 2.0, 163 | "td_maxlen": 1.0, 164 | "td_target_name": "td_rect_shape", 165 | "td_width_to_size_filter_ratio": 0.9 166 | }, 167 | { 168 | "td_curve_segcount": 0, 169 | "td_height_ratio": 1.0, 170 | "td_length_ratio": 0.5, 171 | "td_maxheight": 2.0, 172 | "td_maxlen": 1.0, 173 | "td_target_name": "td_track_end", 174 | "td_width_to_size_filter_ratio": 0.9 175 | } 176 | ], 177 | "track_widths": [ 178 | 0.0, 179 | 0.1524, 180 | 0.2032, 181 | 0.508, 182 | 3.048 183 | ], 184 | "via_dimensions": [ 185 | { 186 | "diameter": 0.0, 187 | "drill": 0.0 188 | } 189 | ], 190 | "zones_allow_external_fillets": true, 191 | "zones_use_no_outline": true 192 | }, 193 | "layer_presets": [], 194 | "viewports": [] 195 | }, 196 | "boards": [], 197 | "cvpcb": { 198 | "equivalence_files": [] 199 | }, 200 | "erc": { 201 | "erc_exclusions": [], 202 | "meta": { 203 | "version": 0 204 | }, 205 | "pin_map": [ 206 | [ 207 | 0, 208 | 0, 209 | 0, 210 | 0, 211 | 0, 212 | 0, 213 | 1, 214 | 0, 215 | 0, 216 | 0, 217 | 0, 218 | 2 219 | ], 220 | [ 221 | 0, 222 | 2, 223 | 0, 224 | 1, 225 | 0, 226 | 0, 227 | 1, 228 | 0, 229 | 2, 230 | 2, 231 | 2, 232 | 2 233 | ], 234 | [ 235 | 0, 236 | 0, 237 | 0, 238 | 0, 239 | 0, 240 | 0, 241 | 1, 242 | 0, 243 | 1, 244 | 0, 245 | 1, 246 | 2 247 | ], 248 | [ 249 | 0, 250 | 1, 251 | 0, 252 | 0, 253 | 0, 254 | 0, 255 | 1, 256 | 1, 257 | 2, 258 | 1, 259 | 1, 260 | 2 261 | ], 262 | [ 263 | 0, 264 | 0, 265 | 0, 266 | 0, 267 | 0, 268 | 0, 269 | 1, 270 | 0, 271 | 0, 272 | 0, 273 | 0, 274 | 2 275 | ], 276 | [ 277 | 0, 278 | 0, 279 | 0, 280 | 0, 281 | 0, 282 | 0, 283 | 0, 284 | 0, 285 | 0, 286 | 0, 287 | 0, 288 | 2 289 | ], 290 | [ 291 | 1, 292 | 1, 293 | 1, 294 | 1, 295 | 1, 296 | 0, 297 | 1, 298 | 1, 299 | 1, 300 | 1, 301 | 1, 302 | 2 303 | ], 304 | [ 305 | 0, 306 | 0, 307 | 0, 308 | 1, 309 | 0, 310 | 0, 311 | 1, 312 | 0, 313 | 0, 314 | 0, 315 | 0, 316 | 2 317 | ], 318 | [ 319 | 0, 320 | 2, 321 | 1, 322 | 2, 323 | 0, 324 | 0, 325 | 1, 326 | 0, 327 | 2, 328 | 2, 329 | 2, 330 | 2 331 | ], 332 | [ 333 | 0, 334 | 2, 335 | 0, 336 | 1, 337 | 0, 338 | 0, 339 | 1, 340 | 0, 341 | 2, 342 | 0, 343 | 0, 344 | 2 345 | ], 346 | [ 347 | 0, 348 | 2, 349 | 1, 350 | 1, 351 | 0, 352 | 0, 353 | 1, 354 | 0, 355 | 2, 356 | 0, 357 | 0, 358 | 2 359 | ], 360 | [ 361 | 2, 362 | 2, 363 | 2, 364 | 2, 365 | 2, 366 | 2, 367 | 2, 368 | 2, 369 | 2, 370 | 2, 371 | 2, 372 | 2 373 | ] 374 | ], 375 | "rule_severities": { 376 | "bus_definition_conflict": "error", 377 | "bus_entry_needed": "error", 378 | "bus_to_bus_conflict": "error", 379 | "bus_to_net_conflict": "error", 380 | "conflicting_netclasses": "error", 381 | "different_unit_footprint": "error", 382 | "different_unit_net": "error", 383 | "duplicate_reference": "error", 384 | "duplicate_sheet_names": "error", 385 | "endpoint_off_grid": "warning", 386 | "extra_units": "error", 387 | "global_label_dangling": "warning", 388 | "hier_label_mismatch": "error", 389 | "label_dangling": "error", 390 | "lib_symbol_issues": "warning", 391 | "missing_bidi_pin": "warning", 392 | "missing_input_pin": "warning", 393 | "missing_power_pin": "error", 394 | "missing_unit": "warning", 395 | "multiple_net_names": "warning", 396 | "net_not_bus_member": "warning", 397 | "no_connect_connected": "warning", 398 | "no_connect_dangling": "warning", 399 | "pin_not_connected": "error", 400 | "pin_not_driven": "error", 401 | "pin_to_pin": "warning", 402 | "power_pin_not_driven": "error", 403 | "similar_labels": "warning", 404 | "simulation_model_issue": "error", 405 | "unannotated": "error", 406 | "unit_value_mismatch": "error", 407 | "unresolved_variable": "error", 408 | "wire_dangling": "error" 409 | } 410 | }, 411 | "libraries": { 412 | "pinned_footprint_libs": [], 413 | "pinned_symbol_libs": [] 414 | }, 415 | "meta": { 416 | "filename": "charger_JYC_RM2023_V1.1_power.kicad_pro", 417 | "version": 1 418 | }, 419 | "net_settings": { 420 | "classes": [ 421 | { 422 | "bus_width": 12, 423 | "clearance": 0.2, 424 | "diff_pair_gap": 0.25, 425 | "diff_pair_via_gap": 0.25, 426 | "diff_pair_width": 0.2, 427 | "line_style": 0, 428 | "microvia_diameter": 0.3, 429 | "microvia_drill": 0.1, 430 | "name": "Default", 431 | "pcb_color": "rgba(0, 0, 0, 0.000)", 432 | "schematic_color": "rgba(0, 0, 0, 0.000)", 433 | "track_width": 0.25, 434 | "via_diameter": 0.8, 435 | "via_drill": 0.4, 436 | "wire_width": 6 437 | } 438 | ], 439 | "meta": { 440 | "version": 3 441 | }, 442 | "net_colors": null, 443 | "netclass_assignments": null, 444 | "netclass_patterns": [] 445 | }, 446 | "pcbnew": { 447 | "last_paths": { 448 | "gencad": "", 449 | "idf": "", 450 | "netlist": "", 451 | "specctra_dsn": "", 452 | "step": "charger_JYC_RM2023_V1.0_power.step", 453 | "vrml": "" 454 | }, 455 | "page_layout_descr_file": "" 456 | }, 457 | "schematic": { 458 | "annotate_start_num": 0, 459 | "drawing": { 460 | "dashed_lines_dash_length_ratio": 12.0, 461 | "dashed_lines_gap_length_ratio": 3.0, 462 | "default_line_thickness": 6.0, 463 | "default_text_size": 50.0, 464 | "field_names": [], 465 | "intersheets_ref_own_page": false, 466 | "intersheets_ref_prefix": "", 467 | "intersheets_ref_short": false, 468 | "intersheets_ref_show": false, 469 | "intersheets_ref_suffix": "", 470 | "junction_size_choice": 3, 471 | "label_size_ratio": 0.375, 472 | "pin_symbol_size": 25.0, 473 | "text_offset_ratio": 0.15 474 | }, 475 | "legacy_lib_dir": "", 476 | "legacy_lib_list": [], 477 | "meta": { 478 | "version": 1 479 | }, 480 | "net_format_name": "", 481 | "ngspice": { 482 | "fix_include_paths": true, 483 | "fix_passive_vals": false, 484 | "meta": { 485 | "version": 0 486 | }, 487 | "model_mode": 0, 488 | "workbook_filename": "" 489 | }, 490 | "page_layout_descr_file": "", 491 | "plot_directory": "", 492 | "spice_adjust_passive_values": false, 493 | "spice_current_sheet_as_root": false, 494 | "spice_external_command": "spice \"%I\"", 495 | "spice_model_current_sheet_as_root": true, 496 | "spice_save_all_currents": false, 497 | "spice_save_all_voltages": false, 498 | "subpart_first_id": 65, 499 | "subpart_id_separator": 0 500 | }, 501 | "sheets": [ 502 | [ 503 | "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", 504 | "" 505 | ] 506 | ], 507 | "text_variables": {} 508 | } 509 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/charger_JYC_RM2023_V1.2_control.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "board_outline_line_width": 0.09999999999999999, 7 | "copper_line_width": 0.19999999999999998, 8 | "copper_text_italic": false, 9 | "copper_text_size_h": 1.5, 10 | "copper_text_size_v": 1.5, 11 | "copper_text_thickness": 0.3, 12 | "copper_text_upright": false, 13 | "courtyard_line_width": 0.049999999999999996, 14 | "dimension_precision": 4, 15 | "dimension_units": 3, 16 | "dimensions": { 17 | "arrow_length": 1270000, 18 | "extension_offset": 500000, 19 | "keep_text_aligned": true, 20 | "suppress_zeroes": false, 21 | "text_position": 0, 22 | "units_format": 1 23 | }, 24 | "fab_line_width": 0.09999999999999999, 25 | "fab_text_italic": false, 26 | "fab_text_size_h": 1.0, 27 | "fab_text_size_v": 1.0, 28 | "fab_text_thickness": 0.15, 29 | "fab_text_upright": false, 30 | "other_line_width": 0.15, 31 | "other_text_italic": false, 32 | "other_text_size_h": 1.0, 33 | "other_text_size_v": 1.0, 34 | "other_text_thickness": 0.15, 35 | "other_text_upright": false, 36 | "pads": { 37 | "drill": 0.0, 38 | "height": 4.600001, 39 | "width": 4.600001 40 | }, 41 | "silk_line_width": 0.15, 42 | "silk_text_italic": false, 43 | "silk_text_size_h": 1.0, 44 | "silk_text_size_v": 1.0, 45 | "silk_text_thickness": 0.15, 46 | "silk_text_upright": false, 47 | "zones": { 48 | "45_degree_only": false, 49 | "min_clearance": 0.254 50 | } 51 | }, 52 | "diff_pair_dimensions": [ 53 | { 54 | "gap": 0.0, 55 | "via_gap": 0.0, 56 | "width": 0.0 57 | } 58 | ], 59 | "drc_exclusions": [], 60 | "meta": { 61 | "version": 2 62 | }, 63 | "rule_severities": { 64 | "annular_width": "error", 65 | "clearance": "error", 66 | "connection_width": "warning", 67 | "copper_edge_clearance": "error", 68 | "copper_sliver": "warning", 69 | "courtyards_overlap": "ignore", 70 | "diff_pair_gap_out_of_range": "error", 71 | "diff_pair_uncoupled_length_too_long": "error", 72 | "drill_out_of_range": "error", 73 | "duplicate_footprints": "warning", 74 | "extra_footprint": "warning", 75 | "footprint": "error", 76 | "footprint_type_mismatch": "error", 77 | "hole_clearance": "error", 78 | "hole_near_hole": "error", 79 | "invalid_outline": "error", 80 | "isolated_copper": "warning", 81 | "item_on_disabled_layer": "error", 82 | "items_not_allowed": "error", 83 | "length_out_of_range": "error", 84 | "lib_footprint_issues": "warning", 85 | "lib_footprint_mismatch": "warning", 86 | "malformed_courtyard": "error", 87 | "microvia_drill_out_of_range": "error", 88 | "missing_courtyard": "ignore", 89 | "missing_footprint": "warning", 90 | "net_conflict": "warning", 91 | "npth_inside_courtyard": "ignore", 92 | "padstack": "error", 93 | "pth_inside_courtyard": "ignore", 94 | "shorting_items": "error", 95 | "silk_edge_clearance": "warning", 96 | "silk_over_copper": "warning", 97 | "silk_overlap": "warning", 98 | "skew_out_of_range": "error", 99 | "solder_mask_bridge": "error", 100 | "starved_thermal": "error", 101 | "text_height": "warning", 102 | "text_thickness": "warning", 103 | "through_hole_pad_without_hole": "error", 104 | "too_many_vias": "error", 105 | "track_dangling": "warning", 106 | "track_width": "error", 107 | "tracks_crossing": "error", 108 | "unconnected_items": "error", 109 | "unresolved_variable": "error", 110 | "via_dangling": "warning", 111 | "zones_intersect": "error" 112 | }, 113 | "rules": { 114 | "allow_blind_buried_vias": false, 115 | "allow_microvias": false, 116 | "max_error": 0.005, 117 | "min_clearance": 0.0, 118 | "min_connection": 0.0, 119 | "min_copper_edge_clearance": 0.254, 120 | "min_hole_clearance": 0.25, 121 | "min_hole_to_hole": 0.25, 122 | "min_microvia_diameter": 0.19999999999999998, 123 | "min_microvia_drill": 0.09999999999999999, 124 | "min_resolved_spokes": 2, 125 | "min_silk_clearance": 0.0, 126 | "min_text_height": 0.7999999999999999, 127 | "min_text_thickness": 0.12, 128 | "min_through_hole_diameter": 0.127, 129 | "min_track_width": 0.15239999999999998, 130 | "min_via_annular_width": 0.049999999999999996, 131 | "min_via_diameter": 0.39999999999999997, 132 | "solder_mask_clearance": 0.0, 133 | "solder_mask_min_width": 0.0, 134 | "solder_mask_to_copper_clearance": 0.0, 135 | "use_height_for_length_calcs": true 136 | }, 137 | "teardrop_options": [ 138 | { 139 | "td_allow_use_two_tracks": true, 140 | "td_curve_segcount": 5, 141 | "td_on_pad_in_zone": false, 142 | "td_onpadsmd": true, 143 | "td_onroundshapesonly": false, 144 | "td_ontrackend": false, 145 | "td_onviapad": true 146 | } 147 | ], 148 | "teardrop_parameters": [ 149 | { 150 | "td_curve_segcount": 0, 151 | "td_height_ratio": 1.0, 152 | "td_length_ratio": 0.5, 153 | "td_maxheight": 2.0, 154 | "td_maxlen": 1.0, 155 | "td_target_name": "td_round_shape", 156 | "td_width_to_size_filter_ratio": 0.9 157 | }, 158 | { 159 | "td_curve_segcount": 0, 160 | "td_height_ratio": 1.0, 161 | "td_length_ratio": 0.5, 162 | "td_maxheight": 2.0, 163 | "td_maxlen": 1.0, 164 | "td_target_name": "td_rect_shape", 165 | "td_width_to_size_filter_ratio": 0.9 166 | }, 167 | { 168 | "td_curve_segcount": 0, 169 | "td_height_ratio": 1.0, 170 | "td_length_ratio": 0.5, 171 | "td_maxheight": 2.0, 172 | "td_maxlen": 1.0, 173 | "td_target_name": "td_track_end", 174 | "td_width_to_size_filter_ratio": 0.9 175 | } 176 | ], 177 | "track_widths": [ 178 | 0.0, 179 | 0.1524, 180 | 0.2032, 181 | 0.254, 182 | 0.381, 183 | 0.508, 184 | 0.635, 185 | 0.762, 186 | 1.016, 187 | 1.524, 188 | 3.048, 189 | 3.81 190 | ], 191 | "via_dimensions": [ 192 | { 193 | "diameter": 0.0, 194 | "drill": 0.0 195 | }, 196 | { 197 | "diameter": 0.45, 198 | "drill": 0.2 199 | } 200 | ], 201 | "zones_allow_external_fillets": true, 202 | "zones_use_no_outline": true 203 | }, 204 | "layer_presets": [], 205 | "viewports": [] 206 | }, 207 | "boards": [], 208 | "cvpcb": { 209 | "equivalence_files": [] 210 | }, 211 | "erc": { 212 | "erc_exclusions": [], 213 | "meta": { 214 | "version": 0 215 | }, 216 | "pin_map": [ 217 | [ 218 | 0, 219 | 0, 220 | 0, 221 | 0, 222 | 0, 223 | 0, 224 | 1, 225 | 0, 226 | 0, 227 | 0, 228 | 0, 229 | 2 230 | ], 231 | [ 232 | 0, 233 | 2, 234 | 0, 235 | 1, 236 | 0, 237 | 0, 238 | 1, 239 | 0, 240 | 2, 241 | 2, 242 | 2, 243 | 2 244 | ], 245 | [ 246 | 0, 247 | 0, 248 | 0, 249 | 0, 250 | 0, 251 | 0, 252 | 1, 253 | 0, 254 | 1, 255 | 0, 256 | 1, 257 | 2 258 | ], 259 | [ 260 | 0, 261 | 1, 262 | 0, 263 | 0, 264 | 0, 265 | 0, 266 | 1, 267 | 1, 268 | 2, 269 | 1, 270 | 1, 271 | 2 272 | ], 273 | [ 274 | 0, 275 | 0, 276 | 0, 277 | 0, 278 | 0, 279 | 0, 280 | 1, 281 | 0, 282 | 0, 283 | 0, 284 | 0, 285 | 2 286 | ], 287 | [ 288 | 0, 289 | 0, 290 | 0, 291 | 0, 292 | 0, 293 | 0, 294 | 0, 295 | 0, 296 | 0, 297 | 0, 298 | 0, 299 | 2 300 | ], 301 | [ 302 | 1, 303 | 1, 304 | 1, 305 | 1, 306 | 1, 307 | 0, 308 | 1, 309 | 1, 310 | 1, 311 | 1, 312 | 1, 313 | 2 314 | ], 315 | [ 316 | 0, 317 | 0, 318 | 0, 319 | 1, 320 | 0, 321 | 0, 322 | 1, 323 | 0, 324 | 0, 325 | 0, 326 | 0, 327 | 2 328 | ], 329 | [ 330 | 0, 331 | 2, 332 | 1, 333 | 2, 334 | 0, 335 | 0, 336 | 1, 337 | 0, 338 | 2, 339 | 2, 340 | 2, 341 | 2 342 | ], 343 | [ 344 | 0, 345 | 2, 346 | 0, 347 | 1, 348 | 0, 349 | 0, 350 | 1, 351 | 0, 352 | 2, 353 | 0, 354 | 0, 355 | 2 356 | ], 357 | [ 358 | 0, 359 | 2, 360 | 1, 361 | 1, 362 | 0, 363 | 0, 364 | 1, 365 | 0, 366 | 2, 367 | 0, 368 | 0, 369 | 2 370 | ], 371 | [ 372 | 2, 373 | 2, 374 | 2, 375 | 2, 376 | 2, 377 | 2, 378 | 2, 379 | 2, 380 | 2, 381 | 2, 382 | 2, 383 | 2 384 | ] 385 | ], 386 | "rule_severities": { 387 | "bus_definition_conflict": "error", 388 | "bus_entry_needed": "error", 389 | "bus_to_bus_conflict": "error", 390 | "bus_to_net_conflict": "error", 391 | "conflicting_netclasses": "error", 392 | "different_unit_footprint": "error", 393 | "different_unit_net": "error", 394 | "duplicate_reference": "error", 395 | "duplicate_sheet_names": "error", 396 | "endpoint_off_grid": "warning", 397 | "extra_units": "error", 398 | "global_label_dangling": "warning", 399 | "hier_label_mismatch": "error", 400 | "label_dangling": "error", 401 | "lib_symbol_issues": "warning", 402 | "missing_bidi_pin": "warning", 403 | "missing_input_pin": "warning", 404 | "missing_power_pin": "error", 405 | "missing_unit": "warning", 406 | "multiple_net_names": "warning", 407 | "net_not_bus_member": "warning", 408 | "no_connect_connected": "warning", 409 | "no_connect_dangling": "warning", 410 | "pin_not_connected": "error", 411 | "pin_not_driven": "error", 412 | "pin_to_pin": "warning", 413 | "power_pin_not_driven": "error", 414 | "similar_labels": "warning", 415 | "simulation_model_issue": "error", 416 | "unannotated": "error", 417 | "unit_value_mismatch": "error", 418 | "unresolved_variable": "error", 419 | "wire_dangling": "error" 420 | } 421 | }, 422 | "libraries": { 423 | "pinned_footprint_libs": [], 424 | "pinned_symbol_libs": [] 425 | }, 426 | "meta": { 427 | "filename": "charger_JYC_RM2023_V1.2_control.kicad_pro", 428 | "version": 1 429 | }, 430 | "net_settings": { 431 | "classes": [ 432 | { 433 | "bus_width": 12, 434 | "clearance": 0.2, 435 | "diff_pair_gap": 0.25, 436 | "diff_pair_via_gap": 0.25, 437 | "diff_pair_width": 0.2, 438 | "line_style": 0, 439 | "microvia_diameter": 0.3, 440 | "microvia_drill": 0.1, 441 | "name": "Default", 442 | "pcb_color": "rgba(0, 0, 0, 0.000)", 443 | "schematic_color": "rgba(0, 0, 0, 0.000)", 444 | "track_width": 0.25, 445 | "via_diameter": 0.8, 446 | "via_drill": 0.4, 447 | "wire_width": 6 448 | } 449 | ], 450 | "meta": { 451 | "version": 3 452 | }, 453 | "net_colors": null, 454 | "netclass_assignments": null, 455 | "netclass_patterns": [] 456 | }, 457 | "pcbnew": { 458 | "last_paths": { 459 | "gencad": "", 460 | "idf": "", 461 | "netlist": "", 462 | "specctra_dsn": "", 463 | "step": "charger_JYC_RM2023_V1.0_control.step", 464 | "vrml": "" 465 | }, 466 | "page_layout_descr_file": "" 467 | }, 468 | "schematic": { 469 | "annotate_start_num": 0, 470 | "drawing": { 471 | "dashed_lines_dash_length_ratio": 12.0, 472 | "dashed_lines_gap_length_ratio": 3.0, 473 | "default_line_thickness": 6.0, 474 | "default_text_size": 50.0, 475 | "field_names": [], 476 | "intersheets_ref_own_page": false, 477 | "intersheets_ref_prefix": "", 478 | "intersheets_ref_short": false, 479 | "intersheets_ref_show": false, 480 | "intersheets_ref_suffix": "", 481 | "junction_size_choice": 3, 482 | "label_size_ratio": 0.375, 483 | "pin_symbol_size": 25.0, 484 | "text_offset_ratio": 0.15 485 | }, 486 | "legacy_lib_dir": "", 487 | "legacy_lib_list": [], 488 | "meta": { 489 | "version": 1 490 | }, 491 | "net_format_name": "", 492 | "ngspice": { 493 | "fix_include_paths": true, 494 | "fix_passive_vals": false, 495 | "meta": { 496 | "version": 0 497 | }, 498 | "model_mode": 0, 499 | "workbook_filename": "" 500 | }, 501 | "page_layout_descr_file": "", 502 | "plot_directory": "", 503 | "spice_adjust_passive_values": false, 504 | "spice_current_sheet_as_root": false, 505 | "spice_external_command": "spice \"%I\"", 506 | "spice_model_current_sheet_as_root": true, 507 | "spice_save_all_currents": false, 508 | "spice_save_all_voltages": false, 509 | "subpart_first_id": 65, 510 | "subpart_id_separator": 0 511 | }, 512 | "sheets": [ 513 | [ 514 | "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", 515 | "" 516 | ], 517 | [ 518 | "d4271065-c702-4247-9fc7-00b3053c14d0", 519 | "Power" 520 | ] 521 | ], 522 | "text_variables": {} 523 | } 524 | -------------------------------------------------------------------------------- /cap_controller_hardware/lower/fp-info-cache: -------------------------------------------------------------------------------- 1 | 127388278477070 2 | Diode_SMD 3 | D_0201_0603Metric 4 | Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator 5 | diode 6 | 0 7 | 4 8 | 2 9 | Diode_SMD 10 | D_0201_0603Metric_Pad0.64x0.40mm_HandSolder 11 | Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator 12 | diode handsolder 13 | 0 14 | 4 15 | 2 16 | Diode_SMD 17 | D_0402_1005Metric 18 | Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 19 | diode 20 | 0 21 | 2 22 | 2 23 | Diode_SMD 24 | D_0402_1005Metric_Pad0.77x0.64mm_HandSolder 25 | Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 26 | diode handsolder 27 | 0 28 | 2 29 | 2 30 | Diode_SMD 31 | D_0603_1608Metric 32 | Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 33 | diode 34 | 0 35 | 2 36 | 2 37 | Diode_SMD 38 | D_0603_1608Metric_Pad1.05x0.95mm_HandSolder 39 | Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 40 | diode handsolder 41 | 0 42 | 2 43 | 2 44 | Diode_SMD 45 | D_0805_2012Metric 46 | Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator 47 | diode 48 | 0 49 | 2 50 | 2 51 | Diode_SMD 52 | D_0805_2012Metric_Pad1.15x1.40mm_HandSolder 53 | Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator 54 | diode handsolder 55 | 0 56 | 2 57 | 2 58 | Diode_SMD 59 | D_01005_0402Metric 60 | Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator 61 | diode 62 | 0 63 | 4 64 | 2 65 | Diode_SMD 66 | D_01005_0402Metric_Pad0.57x0.30mm_HandSolder 67 | Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator 68 | diode handsolder 69 | 0 70 | 4 71 | 2 72 | Diode_SMD 73 | D_1206_3216Metric 74 | Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 75 | diode 76 | 0 77 | 2 78 | 2 79 | Diode_SMD 80 | D_1206_3216Metric_Pad1.42x1.75mm_HandSolder 81 | Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 82 | diode handsolder 83 | 0 84 | 2 85 | 2 86 | Diode_SMD 87 | D_1210_3225Metric 88 | Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 89 | diode 90 | 0 91 | 2 92 | 2 93 | Diode_SMD 94 | D_1210_3225Metric_Pad1.42x2.65mm_HandSolder 95 | Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 96 | diode handsolder 97 | 0 98 | 2 99 | 2 100 | Diode_SMD 101 | D_1812_4532Metric 102 | Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator 103 | diode 104 | 0 105 | 2 106 | 2 107 | Diode_SMD 108 | D_1812_4532Metric_Pad1.30x3.40mm_HandSolder 109 | Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator 110 | diode handsolder 111 | 0 112 | 2 113 | 2 114 | Diode_SMD 115 | D_2010_5025Metric 116 | Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 117 | diode 118 | 0 119 | 2 120 | 2 121 | Diode_SMD 122 | D_2010_5025Metric_Pad1.52x2.65mm_HandSolder 123 | Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 124 | diode handsolder 125 | 0 126 | 2 127 | 2 128 | Diode_SMD 129 | D_2114_3652Metric 130 | Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 131 | diode 132 | 0 133 | 2 134 | 2 135 | Diode_SMD 136 | D_2114_3652Metric_Pad1.85x3.75mm_HandSolder 137 | Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 138 | diode handsolder 139 | 0 140 | 2 141 | 2 142 | Diode_SMD 143 | D_2512_6332Metric 144 | Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 145 | diode 146 | 0 147 | 2 148 | 2 149 | Diode_SMD 150 | D_2512_6332Metric_Pad1.52x3.35mm_HandSolder 151 | Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 152 | diode handsolder 153 | 0 154 | 2 155 | 2 156 | Diode_SMD 157 | D_3220_8050Metric 158 | Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 159 | diode 160 | 0 161 | 2 162 | 2 163 | Diode_SMD 164 | D_3220_8050Metric_Pad2.65x5.15mm_HandSolder 165 | Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 166 | diode handsolder 167 | 0 168 | 2 169 | 2 170 | Diode_SMD 171 | D_MELF 172 | Diode, MELF,, 173 | Diode MELF 174 | 0 175 | 2 176 | 2 177 | Diode_SMD 178 | D_MELF-RM10_Universal_Handsoldering 179 | Diode, Universal, MELF, RM10, Handsoldering, SMD, Thruhole, 180 | Diode Universal MELF RM10 Handsoldering SMD Thruhole 181 | 0 182 | 2 183 | 2 184 | Diode_SMD 185 | D_MELF_Handsoldering 186 | Diode MELF Handsoldering 187 | Diode MELF Handsoldering 188 | 0 189 | 2 190 | 2 191 | Diode_SMD 192 | D_MicroMELF 193 | Diode, MicroMELF, Reflow Soldering, http://www.vishay.com/docs/85597/bzm55.pdf 194 | MicroMELF Diode 195 | 0 196 | 2 197 | 2 198 | Diode_SMD 199 | D_MicroMELF_Handsoldering 200 | Diode, MicroMELF, Hand Soldering, http://www.vishay.com/docs/85597/bzm55.pdf 201 | MicroMELF Diode 202 | 0 203 | 2 204 | 2 205 | Diode_SMD 206 | D_MicroSMP_AK 207 | Diode MicroSMP (DO-219AD), large-pad cathode, https://www.vishay.com/docs/89020/mss1p3l.pdf 208 | Diode MicroSMP (DO-219AD) 209 | 0 210 | 2 211 | 2 212 | Diode_SMD 213 | D_MicroSMP_KA 214 | Diode MicroSMP (DO-219AD), large-pad anode, https://www.vishay.com/docs/89457/msmp6a.pdf 215 | Diode MicroSMP (DO-219AD) 216 | 0 217 | 2 218 | 2 219 | Diode_SMD 220 | D_MiniMELF 221 | Diode Mini-MELF (SOD-80) 222 | Diode Mini-MELF (SOD-80) 223 | 0 224 | 2 225 | 2 226 | Diode_SMD 227 | D_MiniMELF_Handsoldering 228 | Diode Mini-MELF (SOD-80) Handsoldering 229 | Diode Mini-MELF (SOD-80) Handsoldering 230 | 0 231 | 2 232 | 2 233 | Diode_SMD 234 | D_PowerDI-5 235 | PowerDI,Diode,Vishay,https://www.diodes.com/assets/Package-Files/PowerDI5.pdf 236 | PowerDI diode vishay 237 | 0 238 | 3 239 | 2 240 | Diode_SMD 241 | D_PowerDI-123 242 | http://www.diodes.com/_files/datasheets/ds30497.pdf 243 | PowerDI diode vishay 244 | 0 245 | 2 246 | 2 247 | Diode_SMD 248 | D_Powermite2_AK 249 | Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) 250 | PowerMite2 251 | 0 252 | 2 253 | 2 254 | Diode_SMD 255 | D_Powermite2_KA 256 | Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) 257 | PowerMite2 258 | 0 259 | 2 260 | 2 261 | Diode_SMD 262 | D_Powermite3 263 | Microsemi Powermite 3 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5340) 264 | PowerMite3 265 | 0 266 | 3 267 | 3 268 | Diode_SMD 269 | D_Powermite_AK 270 | Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) 271 | Powermite 272 | 0 273 | 2 274 | 2 275 | Diode_SMD 276 | D_Powermite_KA 277 | Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) 278 | Powermite 279 | 0 280 | 2 281 | 2 282 | Diode_SMD 283 | D_QFN_3.3x3.3mm_P0.65mm 284 | QFN, diode, 3.3x3.3x1mm (https://www.wolfspeed.com/media/downloads/846/C3D1P7060Q.pdf) 285 | diode qfn 3.3 286 | 0 287 | 3 288 | 2 289 | Diode_SMD 290 | D_SC-80 291 | JEITA SC-80 292 | SC-80 293 | 0 294 | 2 295 | 2 296 | Diode_SMD 297 | D_SC-80_HandSoldering 298 | JEITA SC-80 299 | SC-80 300 | 0 301 | 2 302 | 2 303 | Diode_SMD 304 | D_SMA 305 | Diode SMA (DO-214AC) 306 | Diode SMA (DO-214AC) 307 | 0 308 | 2 309 | 2 310 | Diode_SMD 311 | D_SMA-SMB_Universal_Handsoldering 312 | Diode, Universal, SMA (DO-214AC) or SMB (DO-214AA), Handsoldering, 313 | Diode Universal SMA (DO-214AC) SMB (DO-214AA) Handsoldering 314 | 0 315 | 2 316 | 2 317 | Diode_SMD 318 | D_SMA_Handsoldering 319 | Diode SMA (DO-214AC) Handsoldering 320 | Diode SMA (DO-214AC) Handsoldering 321 | 0 322 | 2 323 | 2 324 | Diode_SMD 325 | D_SMB 326 | Diode SMB (DO-214AA) 327 | Diode SMB (DO-214AA) 328 | 0 329 | 2 330 | 2 331 | Diode_SMD 332 | D_SMB-SMC_Universal_Handsoldering 333 | Diode, Universal, SMB(DO-214AA) or SMC (DO-214AB), Handsoldering, 334 | Diode Universal SMB(DO-214AA) SMC (DO-214AB) Handsoldering 335 | 0 336 | 2 337 | 2 338 | Diode_SMD 339 | D_SMB_Handsoldering 340 | Diode SMB (DO-214AA) Handsoldering 341 | Diode SMB (DO-214AA) Handsoldering 342 | 0 343 | 2 344 | 2 345 | Diode_SMD 346 | D_SMB_Modified 347 | Diode SMB (DO-214AA) Modified (http://www.littelfuse.com/~/media/electronics/datasheets/sidactors/littelfuse_sidactor_battrax_positive_negative_modified_do_214_datasheet.pdf.pdf) 348 | Diode SMB (DO-214AA) 349 | 0 350 | 3 351 | 3 352 | Diode_SMD 353 | D_SMC 354 | Diode SMC (DO-214AB) 355 | Diode SMC (DO-214AB) 356 | 0 357 | 2 358 | 2 359 | Diode_SMD 360 | D_SMC-RM10_Universal_Handsoldering 361 | Diode, Universal, SMC (DO-214AB), RM10, Handsoldering, SMD, Thruhole 362 | Diode Universal SMC (DO-214AB) RM10 Handsoldering SMD Thruhole 363 | 0 364 | 2 365 | 2 366 | Diode_SMD 367 | D_SMC_Handsoldering 368 | Diode SMC (DO-214AB) Handsoldering 369 | Diode SMC (DO-214AB) Handsoldering 370 | 0 371 | 2 372 | 2 373 | Diode_SMD 374 | D_SMF 375 | Diode SMF (DO-219AB), http://www.vishay.com/docs/95572/smf_do-219ab.pdf 376 | Diode SMF (DO-214AB) 377 | 0 378 | 2 379 | 2 380 | Diode_SMD 381 | D_SOD-110 382 | SOD-110 383 | SOD-110 384 | 0 385 | 2 386 | 2 387 | Diode_SMD 388 | D_SOD-123 389 | SOD-123 390 | SOD-123 391 | 0 392 | 2 393 | 2 394 | Diode_SMD 395 | D_SOD-123F 396 | D_SOD-123F 397 | D_SOD-123F 398 | 0 399 | 2 400 | 2 401 | Diode_SMD 402 | D_SOD-128 403 | D_SOD-128 (CFP5 SlimSMAW), https://assets.nexperia.com/documents/outline-drawing/SOD128.pdf 404 | D_SOD-128 405 | 0 406 | 2 407 | 2 408 | Diode_SMD 409 | D_SOD-323 410 | SOD-323 411 | SOD-323 412 | 0 413 | 2 414 | 2 415 | Diode_SMD 416 | D_SOD-323F 417 | SOD-323F http://www.nxp.com/documents/outline_drawing/SOD323F.pdf 418 | SOD-323F 419 | 0 420 | 2 421 | 2 422 | Diode_SMD 423 | D_SOD-323_HandSoldering 424 | SOD-323 425 | SOD-323 426 | 0 427 | 2 428 | 2 429 | Diode_SMD 430 | D_SOD-523 431 | http://www.diodes.com/datasheets/ap02001.pdf p.144 432 | Diode SOD523 433 | 0 434 | 2 435 | 2 436 | Diode_SMD 437 | D_SOD-923 438 | https://www.onsemi.com/pub/Collateral/ESD9B-D.PDF#page=4 439 | Diode SOD923 440 | 0 441 | 2 442 | 2 443 | Diode_SMD 444 | D_TUMD2 445 | ROHM - TUMD2 446 | TUMD2 447 | 0 448 | 2 449 | 2 450 | Diode_SMD 451 | Diode_Bridge_Bourns_CD-DF4xxS 452 | 8.1x10.5mm, 4A, single phase bridge rectifier, https://www.bourns.com/docs/Product-Datasheets/CD-DF4xxSL.pdf 453 | Surface Mount Bridge Rectifier Diode 454 | 0 455 | 4 456 | 4 457 | Diode_SMD 458 | Diode_Bridge_Diotec_ABS 459 | SMD diode bridge ABS (Diotec), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/abs2.pdf 460 | ABS MBLS 461 | 0 462 | 4 463 | 4 464 | Diode_SMD 465 | Diode_Bridge_Diotec_MicroDil_3.0x3.0x1.8mm 466 | SMD package Diotec Diotec MicroDil, body 3.0x3.0x1.8mm (e.g. diode bridge), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/mys40.pdf 467 | Diotec MicroDil diode bridge 468 | 0 469 | 4 470 | 4 471 | Diode_SMD 472 | Diode_Bridge_Diotec_SO-DIL-Slim 473 | SMD diode bridge Diotec SO-DIL Slim, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/b40fs.pdf 474 | DFS SO-DIL Slim 475 | 0 476 | 4 477 | 4 478 | Diode_SMD 479 | Diode_Bridge_OnSemi_SDIP-4L 480 | SMD diode bridge OnSemi SDIP-4L, see https://www.onsemi.com/pdf/datasheet/df10s1-d.pdf 481 | OnSemi Diode Bridge SDIP-4L 482 | 0 483 | 4 484 | 4 485 | Diode_SMD 486 | Diode_Bridge_Vishay_DFS 487 | SMD diode bridge DFS, see http://www.vishay.com/docs/88854/padlayouts.pdf 488 | DFS 489 | 0 490 | 4 491 | 4 492 | Diode_SMD 493 | Diode_Bridge_Vishay_DFSFlat 494 | SMD diode bridge Low Profile DFS "Flat", see http://www.vishay.com/docs/88874/dfl15005.pdf 495 | DFS 496 | 0 497 | 4 498 | 4 499 | Diode_SMD 500 | Diode_Bridge_Vishay_MBLS 501 | SMD diode bridge MBLS, see http://www.vishay.com/docs/89959/mbl104s.pdf http://www.vishay.com/docs/88854/padlayouts.pdf 502 | DFS 503 | 0 504 | 4 505 | 4 506 | Diode_SMD 507 | Infineon_SG-WLL-2-3_0.58x0.28_P0.36mm 508 | Infineon SG-WLL-2-3, 0.58x0.28x0.15mm, https://www.infineon.com/dgdl/Infineon-SG-WLL-2-3_SPO_PDF-Package-v02_00-EN.pdf?fileId=5546d46271bf4f9201723159ce71239d 509 | Infineon WLL 510 | 0 511 | 4 512 | 2 513 | Diode_SMD 514 | Littelfuse_PolyZen-LS 515 | http://m.littelfuse.com/~/media/electronics/datasheets/polyzen_devices/littelfuse_polyzen_standard_polyzen_catalog_datasheet.pdf.pdf 516 | Diode Polymer Protected Zener Diode Littelfuse LS 517 | 0 518 | 3 519 | 3 520 | Diode_SMD 521 | Nexperia_CFP3_SOD-123W 522 | Nexperia CFP3 (SOD-123W), https://assets.nexperia.com/documents/outline-drawing/SOD123W.pdf 523 | CFP3 SOD-123W 524 | 0 525 | 2 526 | 2 527 | Diode_SMD 528 | Nexperia_DSN0603-2_0.6x0.3mm_P0.4mm 529 | SOD962-2 silicon, leadless ultra small package; 2 terminals; 0.4 mm pitch; 0.6 mm x 0.3 mm x 0.3 mm body (https://assets.nexperia.com/documents/package-information/SOD962-2.pdf https://www.nexperia.com/packages/SOD962-2.html) 530 | TVS protection diodes 531 | 0 532 | 2 533 | 2 534 | -------------------------------------------------------------------------------- /cap_controller_hardware/upper/fp-info-cache: -------------------------------------------------------------------------------- 1 | 127388278477070 2 | Diode_SMD 3 | D_0201_0603Metric 4 | Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator 5 | diode 6 | 0 7 | 4 8 | 2 9 | Diode_SMD 10 | D_0201_0603Metric_Pad0.64x0.40mm_HandSolder 11 | Diode SMD 0201 (0603 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.vishay.com/docs/20052/crcw0201e3.pdf), generated with kicad-footprint-generator 12 | diode handsolder 13 | 0 14 | 4 15 | 2 16 | Diode_SMD 17 | D_0402_1005Metric 18 | Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 19 | diode 20 | 0 21 | 2 22 | 2 23 | Diode_SMD 24 | D_0402_1005Metric_Pad0.77x0.64mm_HandSolder 25 | Diode SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 26 | diode handsolder 27 | 0 28 | 2 29 | 2 30 | Diode_SMD 31 | D_0603_1608Metric 32 | Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 33 | diode 34 | 0 35 | 2 36 | 2 37 | Diode_SMD 38 | D_0603_1608Metric_Pad1.05x0.95mm_HandSolder 39 | Diode SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 40 | diode handsolder 41 | 0 42 | 2 43 | 2 44 | Diode_SMD 45 | D_0805_2012Metric 46 | Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator 47 | diode 48 | 0 49 | 2 50 | 2 51 | Diode_SMD 52 | D_0805_2012Metric_Pad1.15x1.40mm_HandSolder 53 | Diode SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator 54 | diode handsolder 55 | 0 56 | 2 57 | 2 58 | Diode_SMD 59 | D_01005_0402Metric 60 | Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator 61 | diode 62 | 0 63 | 4 64 | 2 65 | Diode_SMD 66 | D_01005_0402Metric_Pad0.57x0.30mm_HandSolder 67 | Diode SMD 01005 (0402 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.vishay.com/docs/20056/crcw01005e3.pdf), generated with kicad-footprint-generator 68 | diode handsolder 69 | 0 70 | 4 71 | 2 72 | Diode_SMD 73 | D_1206_3216Metric 74 | Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 75 | diode 76 | 0 77 | 2 78 | 2 79 | Diode_SMD 80 | D_1206_3216Metric_Pad1.42x1.75mm_HandSolder 81 | Diode SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 82 | diode handsolder 83 | 0 84 | 2 85 | 2 86 | Diode_SMD 87 | D_1210_3225Metric 88 | Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 89 | diode 90 | 0 91 | 2 92 | 2 93 | Diode_SMD 94 | D_1210_3225Metric_Pad1.42x2.65mm_HandSolder 95 | Diode SMD 1210 (3225 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 96 | diode handsolder 97 | 0 98 | 2 99 | 2 100 | Diode_SMD 101 | D_1812_4532Metric 102 | Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator 103 | diode 104 | 0 105 | 2 106 | 2 107 | Diode_SMD 108 | D_1812_4532Metric_Pad1.30x3.40mm_HandSolder 109 | Diode SMD 1812 (4532 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://www.nikhef.nl/pub/departments/mt/projects/detectorR_D/dtddice/ERJ2G.pdf), generated with kicad-footprint-generator 110 | diode handsolder 111 | 0 112 | 2 113 | 2 114 | Diode_SMD 115 | D_2010_5025Metric 116 | Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 117 | diode 118 | 0 119 | 2 120 | 2 121 | Diode_SMD 122 | D_2010_5025Metric_Pad1.52x2.65mm_HandSolder 123 | Diode SMD 2010 (5025 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 124 | diode handsolder 125 | 0 126 | 2 127 | 2 128 | Diode_SMD 129 | D_2114_3652Metric 130 | Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 131 | diode 132 | 0 133 | 2 134 | 2 135 | Diode_SMD 136 | D_2114_3652Metric_Pad1.85x3.75mm_HandSolder 137 | Diode SMD 2114 (3652 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 138 | diode handsolder 139 | 0 140 | 2 141 | 2 142 | Diode_SMD 143 | D_2512_6332Metric 144 | Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 145 | diode 146 | 0 147 | 2 148 | 2 149 | Diode_SMD 150 | D_2512_6332Metric_Pad1.52x3.35mm_HandSolder 151 | Diode SMD 2512 (6332 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator 152 | diode handsolder 153 | 0 154 | 2 155 | 2 156 | Diode_SMD 157 | D_3220_8050Metric 158 | Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 159 | diode 160 | 0 161 | 2 162 | 2 163 | Diode_SMD 164 | D_3220_8050Metric_Pad2.65x5.15mm_HandSolder 165 | Diode SMD 3220 (8050 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size from: http://datasheets.avx.com/schottky.pdf), generated with kicad-footprint-generator 166 | diode handsolder 167 | 0 168 | 2 169 | 2 170 | Diode_SMD 171 | D_MELF 172 | Diode, MELF,, 173 | Diode MELF 174 | 0 175 | 2 176 | 2 177 | Diode_SMD 178 | D_MELF-RM10_Universal_Handsoldering 179 | Diode, Universal, MELF, RM10, Handsoldering, SMD, Thruhole, 180 | Diode Universal MELF RM10 Handsoldering SMD Thruhole 181 | 0 182 | 2 183 | 2 184 | Diode_SMD 185 | D_MELF_Handsoldering 186 | Diode MELF Handsoldering 187 | Diode MELF Handsoldering 188 | 0 189 | 2 190 | 2 191 | Diode_SMD 192 | D_MicroMELF 193 | Diode, MicroMELF, Reflow Soldering, http://www.vishay.com/docs/85597/bzm55.pdf 194 | MicroMELF Diode 195 | 0 196 | 2 197 | 2 198 | Diode_SMD 199 | D_MicroMELF_Handsoldering 200 | Diode, MicroMELF, Hand Soldering, http://www.vishay.com/docs/85597/bzm55.pdf 201 | MicroMELF Diode 202 | 0 203 | 2 204 | 2 205 | Diode_SMD 206 | D_MicroSMP_AK 207 | Diode MicroSMP (DO-219AD), large-pad cathode, https://www.vishay.com/docs/89020/mss1p3l.pdf 208 | Diode MicroSMP (DO-219AD) 209 | 0 210 | 2 211 | 2 212 | Diode_SMD 213 | D_MicroSMP_KA 214 | Diode MicroSMP (DO-219AD), large-pad anode, https://www.vishay.com/docs/89457/msmp6a.pdf 215 | Diode MicroSMP (DO-219AD) 216 | 0 217 | 2 218 | 2 219 | Diode_SMD 220 | D_MiniMELF 221 | Diode Mini-MELF (SOD-80) 222 | Diode Mini-MELF (SOD-80) 223 | 0 224 | 2 225 | 2 226 | Diode_SMD 227 | D_MiniMELF_Handsoldering 228 | Diode Mini-MELF (SOD-80) Handsoldering 229 | Diode Mini-MELF (SOD-80) Handsoldering 230 | 0 231 | 2 232 | 2 233 | Diode_SMD 234 | D_PowerDI-5 235 | PowerDI,Diode,Vishay,https://www.diodes.com/assets/Package-Files/PowerDI5.pdf 236 | PowerDI diode vishay 237 | 0 238 | 3 239 | 2 240 | Diode_SMD 241 | D_PowerDI-123 242 | http://www.diodes.com/_files/datasheets/ds30497.pdf 243 | PowerDI diode vishay 244 | 0 245 | 2 246 | 2 247 | Diode_SMD 248 | D_Powermite2_AK 249 | Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) 250 | PowerMite2 251 | 0 252 | 2 253 | 2 254 | Diode_SMD 255 | D_Powermite2_KA 256 | Microsemi Powermite 2 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5341) 257 | PowerMite2 258 | 0 259 | 2 260 | 2 261 | Diode_SMD 262 | D_Powermite3 263 | Microsemi Powermite 3 SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5340) 264 | PowerMite3 265 | 0 266 | 3 267 | 3 268 | Diode_SMD 269 | D_Powermite_AK 270 | Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) 271 | Powermite 272 | 0 273 | 2 274 | 2 275 | Diode_SMD 276 | D_Powermite_KA 277 | Microsemi Powermite SMD power package (https://www.microsemi.com/packaging-information/partpackage/details?pid=5339, https://www.onsemi.com/pub/Collateral/457-04.PDF) 278 | Powermite 279 | 0 280 | 2 281 | 2 282 | Diode_SMD 283 | D_QFN_3.3x3.3mm_P0.65mm 284 | QFN, diode, 3.3x3.3x1mm (https://www.wolfspeed.com/media/downloads/846/C3D1P7060Q.pdf) 285 | diode qfn 3.3 286 | 0 287 | 3 288 | 2 289 | Diode_SMD 290 | D_SC-80 291 | JEITA SC-80 292 | SC-80 293 | 0 294 | 2 295 | 2 296 | Diode_SMD 297 | D_SC-80_HandSoldering 298 | JEITA SC-80 299 | SC-80 300 | 0 301 | 2 302 | 2 303 | Diode_SMD 304 | D_SMA 305 | Diode SMA (DO-214AC) 306 | Diode SMA (DO-214AC) 307 | 0 308 | 2 309 | 2 310 | Diode_SMD 311 | D_SMA-SMB_Universal_Handsoldering 312 | Diode, Universal, SMA (DO-214AC) or SMB (DO-214AA), Handsoldering, 313 | Diode Universal SMA (DO-214AC) SMB (DO-214AA) Handsoldering 314 | 0 315 | 2 316 | 2 317 | Diode_SMD 318 | D_SMA_Handsoldering 319 | Diode SMA (DO-214AC) Handsoldering 320 | Diode SMA (DO-214AC) Handsoldering 321 | 0 322 | 2 323 | 2 324 | Diode_SMD 325 | D_SMB 326 | Diode SMB (DO-214AA) 327 | Diode SMB (DO-214AA) 328 | 0 329 | 2 330 | 2 331 | Diode_SMD 332 | D_SMB-SMC_Universal_Handsoldering 333 | Diode, Universal, SMB(DO-214AA) or SMC (DO-214AB), Handsoldering, 334 | Diode Universal SMB(DO-214AA) SMC (DO-214AB) Handsoldering 335 | 0 336 | 2 337 | 2 338 | Diode_SMD 339 | D_SMB_Handsoldering 340 | Diode SMB (DO-214AA) Handsoldering 341 | Diode SMB (DO-214AA) Handsoldering 342 | 0 343 | 2 344 | 2 345 | Diode_SMD 346 | D_SMB_Modified 347 | Diode SMB (DO-214AA) Modified (http://www.littelfuse.com/~/media/electronics/datasheets/sidactors/littelfuse_sidactor_battrax_positive_negative_modified_do_214_datasheet.pdf.pdf) 348 | Diode SMB (DO-214AA) 349 | 0 350 | 3 351 | 3 352 | Diode_SMD 353 | D_SMC 354 | Diode SMC (DO-214AB) 355 | Diode SMC (DO-214AB) 356 | 0 357 | 2 358 | 2 359 | Diode_SMD 360 | D_SMC-RM10_Universal_Handsoldering 361 | Diode, Universal, SMC (DO-214AB), RM10, Handsoldering, SMD, Thruhole 362 | Diode Universal SMC (DO-214AB) RM10 Handsoldering SMD Thruhole 363 | 0 364 | 2 365 | 2 366 | Diode_SMD 367 | D_SMC_Handsoldering 368 | Diode SMC (DO-214AB) Handsoldering 369 | Diode SMC (DO-214AB) Handsoldering 370 | 0 371 | 2 372 | 2 373 | Diode_SMD 374 | D_SMF 375 | Diode SMF (DO-219AB), http://www.vishay.com/docs/95572/smf_do-219ab.pdf 376 | Diode SMF (DO-214AB) 377 | 0 378 | 2 379 | 2 380 | Diode_SMD 381 | D_SOD-110 382 | SOD-110 383 | SOD-110 384 | 0 385 | 2 386 | 2 387 | Diode_SMD 388 | D_SOD-123 389 | SOD-123 390 | SOD-123 391 | 0 392 | 2 393 | 2 394 | Diode_SMD 395 | D_SOD-123F 396 | D_SOD-123F 397 | D_SOD-123F 398 | 0 399 | 2 400 | 2 401 | Diode_SMD 402 | D_SOD-128 403 | D_SOD-128 (CFP5 SlimSMAW), https://assets.nexperia.com/documents/outline-drawing/SOD128.pdf 404 | D_SOD-128 405 | 0 406 | 2 407 | 2 408 | Diode_SMD 409 | D_SOD-323 410 | SOD-323 411 | SOD-323 412 | 0 413 | 2 414 | 2 415 | Diode_SMD 416 | D_SOD-323F 417 | SOD-323F http://www.nxp.com/documents/outline_drawing/SOD323F.pdf 418 | SOD-323F 419 | 0 420 | 2 421 | 2 422 | Diode_SMD 423 | D_SOD-323_HandSoldering 424 | SOD-323 425 | SOD-323 426 | 0 427 | 2 428 | 2 429 | Diode_SMD 430 | D_SOD-523 431 | http://www.diodes.com/datasheets/ap02001.pdf p.144 432 | Diode SOD523 433 | 0 434 | 2 435 | 2 436 | Diode_SMD 437 | D_SOD-923 438 | https://www.onsemi.com/pub/Collateral/ESD9B-D.PDF#page=4 439 | Diode SOD923 440 | 0 441 | 2 442 | 2 443 | Diode_SMD 444 | D_TUMD2 445 | ROHM - TUMD2 446 | TUMD2 447 | 0 448 | 2 449 | 2 450 | Diode_SMD 451 | Diode_Bridge_Bourns_CD-DF4xxS 452 | 8.1x10.5mm, 4A, single phase bridge rectifier, https://www.bourns.com/docs/Product-Datasheets/CD-DF4xxSL.pdf 453 | Surface Mount Bridge Rectifier Diode 454 | 0 455 | 4 456 | 4 457 | Diode_SMD 458 | Diode_Bridge_Diotec_ABS 459 | SMD diode bridge ABS (Diotec), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/abs2.pdf 460 | ABS MBLS 461 | 0 462 | 4 463 | 4 464 | Diode_SMD 465 | Diode_Bridge_Diotec_MicroDil_3.0x3.0x1.8mm 466 | SMD package Diotec Diotec MicroDil, body 3.0x3.0x1.8mm (e.g. diode bridge), see https://diotec.com/tl_files/diotec/files/pdf/datasheets/mys40.pdf 467 | Diotec MicroDil diode bridge 468 | 0 469 | 4 470 | 4 471 | Diode_SMD 472 | Diode_Bridge_Diotec_SO-DIL-Slim 473 | SMD diode bridge Diotec SO-DIL Slim, see https://diotec.com/tl_files/diotec/files/pdf/datasheets/b40fs.pdf 474 | DFS SO-DIL Slim 475 | 0 476 | 4 477 | 4 478 | Diode_SMD 479 | Diode_Bridge_OnSemi_SDIP-4L 480 | SMD diode bridge OnSemi SDIP-4L, see https://www.onsemi.com/pdf/datasheet/df10s1-d.pdf 481 | OnSemi Diode Bridge SDIP-4L 482 | 0 483 | 4 484 | 4 485 | Diode_SMD 486 | Diode_Bridge_Vishay_DFS 487 | SMD diode bridge DFS, see http://www.vishay.com/docs/88854/padlayouts.pdf 488 | DFS 489 | 0 490 | 4 491 | 4 492 | Diode_SMD 493 | Diode_Bridge_Vishay_DFSFlat 494 | SMD diode bridge Low Profile DFS "Flat", see http://www.vishay.com/docs/88874/dfl15005.pdf 495 | DFS 496 | 0 497 | 4 498 | 4 499 | Diode_SMD 500 | Diode_Bridge_Vishay_MBLS 501 | SMD diode bridge MBLS, see http://www.vishay.com/docs/89959/mbl104s.pdf http://www.vishay.com/docs/88854/padlayouts.pdf 502 | DFS 503 | 0 504 | 4 505 | 4 506 | Diode_SMD 507 | Infineon_SG-WLL-2-3_0.58x0.28_P0.36mm 508 | Infineon SG-WLL-2-3, 0.58x0.28x0.15mm, https://www.infineon.com/dgdl/Infineon-SG-WLL-2-3_SPO_PDF-Package-v02_00-EN.pdf?fileId=5546d46271bf4f9201723159ce71239d 509 | Infineon WLL 510 | 0 511 | 4 512 | 2 513 | Diode_SMD 514 | Littelfuse_PolyZen-LS 515 | http://m.littelfuse.com/~/media/electronics/datasheets/polyzen_devices/littelfuse_polyzen_standard_polyzen_catalog_datasheet.pdf.pdf 516 | Diode Polymer Protected Zener Diode Littelfuse LS 517 | 0 518 | 3 519 | 3 520 | Diode_SMD 521 | Nexperia_CFP3_SOD-123W 522 | Nexperia CFP3 (SOD-123W), https://assets.nexperia.com/documents/outline-drawing/SOD123W.pdf 523 | CFP3 SOD-123W 524 | 0 525 | 2 526 | 2 527 | Diode_SMD 528 | Nexperia_DSN0603-2_0.6x0.3mm_P0.4mm 529 | SOD962-2 silicon, leadless ultra small package; 2 terminals; 0.4 mm pitch; 0.6 mm x 0.3 mm x 0.3 mm body (https://assets.nexperia.com/documents/package-information/SOD962-2.pdf https://www.nexperia.com/packages/SOD962-2.html) 530 | TVS protection diodes 531 | 0 532 | 2 533 | 2 534 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |
2 |

本项目续作已开源

3 |
4 | 5 | 请参考 6 | ||| 7 | |-|-| 8 | |论坛|[【RM2024超级电容控制器完全开源】 (史上最详细的开源!)香港科技大学ENTERPRIZE战队](https://bbs.robomaster.com/article/54127)| 9 | |GitHub|[hkustenterprize/RM2024-SuperCapacitorController](https://github.com/hkustenterprize/RM2024-SuperCapacitorController)| 10 | 11 |
12 |

廉价,可靠,高效

13 |
14 | 15 |
16 |

RM2023香港科技大学ENTERPRIZE

17 |
18 | 19 |
20 |

数控超级电容方案开源

21 |
22 | 23 |
24 | 25 | > 设计者:蒋益诚 26 | > 27 | > 文档撰写:蒋益诚 戎羿 28 | > 29 | > 香港科技大学ENTERPRIZE战队 30 | 31 | 32 | 33 | # 前言 34 | 35 | 在RoboMaster机甲大师赛事中,严苛的底盘功率限制规则迫使各参赛队伍从软件和硬件方面研究高效的底盘功率管理方案。早在2018年末,大连交通大学TOE战队,桂林电子科技大学Evolution战队与香港科技大学ENTERPRIZE战队等便相继开源了各具特色的超级电容方案。2020年,官方裁判系统超级电容管理模块与相关限制规则加入,超级电容的使用更加规范化,给各战队带来了不小的挑战。 36 | 37 | 2021赛季末大连理工凌_BUG战队开源了他们基于双向BUCK-BOOST电路构建的超级电容控制模块,引发广泛关注。我队取其精华,在其基础上进行数次迭代,历经一年时间,完成了低成本,稳定可靠,大功率,高效率的数控超级电容方案。本着技术交流和初心高于胜负的初衷我队现决定将此方案开源,欢迎大家交流学习。 38 | 39 |
40 | 41 | # 方案回顾 42 | 43 | 自2018年超级电容方案诞生以来,其大致电路方案可分为以下3种 44 | 45 | 1. 电源 $\Rightarrow$ 恒功率充电模块 $\Rightarrow$ 超级电容 $\Vert$ 底盘电机 46 | 2. 电源 $\Rightarrow$ 恒功率充电模块 $\Rightarrow$ 超级电容 $\Rightarrow$ 恒压放电模块 $\Leftrightarrow$ 底盘电机 47 | 3. 电源 $\Vert$ 底盘电机 $\Leftrightarrow$ 双向可控功率模块 $\Leftrightarrow$ 超级电容 48 | 49 | 笔者将基于自身理解对这些方案进行简单优缺点分析 50 | 51 | ## 电源 $\Rightarrow$ 恒功率充电模块 $\Rightarrow$ 超级电容 $\Vert$ 底盘电机 52 | 53 | 本方案直接明了,通过恒功率充电模块对整个底盘的输入功率进行控制,并通过超级电容对能量进行缓存。 54 | 55 | 该方案主要有以下几个优点: 56 | 57 | 1. 超级电容直接和底盘电机并联,相当于自带了高效的动能回收机制 58 | 2. 理想状态下能够保证在任何时候都无法超功率 59 | 60 | 在充放电的过程中,底盘电机母线电压是随超级电容电压的波动而波动的,因此该方案存在以下几个显著缺点 61 | 62 | 1. 如果电容电量过低,会导致底盘电机欠压保护,或工作不正常 63 | 2. 电压不稳定,会影响底盘电机的控制,具体可表现为相同参数下电机的输出力矩,转速等存在较大幅度波动。 64 | 3. 动能回收时,会有较大的倒灌电流涌入超级电容组,对电容组及其保护板的设计有一定的考验。 65 | 4. 在机器人阵亡后,若电容仍有余电,底盘电机可能仍有足够电压继续移动一段时间,若不做处理可能违反规则 66 | 5. 模块之间串联,若有模块损坏或异常断电,则机器人底盘直接掉电,无法继续移动 67 | 68 | ## 电源 $\Rightarrow$ 恒功率充电模块 $\Rightarrow$ 超级电容 $\Rightarrow$ 恒压放电模块 $\Leftrightarrow$ 底盘电机 69 | 70 | 该方案在上个方案的基础上增加了一个恒压放电模块,以稳定底盘电机母线电压。 71 | 72 | 因此,该方案有以下几个优点: 73 | 74 | 1. 与上个方案一样,理想状态下,底盘不会超功率 75 | 2. 在电容电量耗尽前,底盘电机的母线电压相对恒定,能够给电机提供良好的工作环境 76 | 77 | 由于恒压放电模块可能存在的一些特性,该方案可能存在以下几个缺点: 78 | 79 | 1. 若恒压放电模块为非同步boost/buckboost或者其控制策略不允许电流倒灌(例如其boost半桥上管采用理想二极管策略控制),则该方案完全无法进行动能回收,且在电机急减速时可能瞬间拉高母线电压,有较大风险烧毁电机 80 | 2. 在机器人阵亡后,若电容仍有余电,底盘电机可能仍有足够电压继续移动一段时间,若不做处理可能违反规则 81 | 3. 与上个方案一样,模块之间串联,若有模块损坏或异常断电,则机器人底盘直接掉电,无法继续移动。且由于恒压放电模块与底盘电机直接相连,工况较为恶劣,对该模块的设计有较大考验。 82 | 83 | ## 电源 $\Vert$ 底盘电机 $\Leftrightarrow$ 双向可控功率模块 $\Leftrightarrow$ 超级电容 84 | 85 | 该方案即为本战队本次开源的方案,灵感源自2021赛季大连理工大学凌BUG战队的开源。 86 | 87 | 在本方案中底盘电机直接连接到电源,超级电容和一个双向可控功率模块共同构成一个可控的功率补偿系统,凭借高速的功率闭环控制动态对底盘功率进行削峰填谷,从而实现超级电容的能量缓冲。 88 | 89 | 为便于理解,在此举例。 90 | 91 | 假设底盘功率限制为60W,电池电压为20V,超级电容处于半充满状态。 92 | 93 | 若此时底盘电机电流为2A,即底盘电机功率为40W,则双向可控功率模块将使用1A电流对超级电容充电,即充电功率为20W。将多余功率缓存在超级电容中。 94 | 95 | 若此时底盘电机电流为5A,即底盘电机功率为100W,则双向可控功率模块将使用2A电流对超级电容进行放电,此时放电功率为40W。利用超级电容中的能量补偿底盘功率。 96 | 97 | 若此时底盘电机电流为-2A,即底盘电机功率为-40W,则双向可控功率模块将使用5A电流对超级电容进行充电,此时充电功率为100W。即动能回收的过程。 98 | 99 | 该方案具有如下几个主要优点: 100 | 101 | 1. 并联接入底盘电机母线,即使系统工作异常,只需要及时切断电路(关断MOS管/保险丝熔断等),底盘任可继续正常工作。 102 | 2. 无论电容剩余能量如何,底盘电机的母线电压都能保持相对稳定,约等于电源电压,能够给电机提供良好的工作环境。 103 | 3. 可以主动限制动能回收的电流,允许部分浪涌电流倒灌回电池,防止损坏超级电容组。 104 | 4. 通过简单的代码逻辑,可在底盘电源切断时立即关断系统输出,在机器人阵亡后保存电容能量,同时避免违反规则。 105 | 106 | 该方案的显著缺点如下: 107 | 108 | 1. 采用数控方案,对嵌入式程序设计,控制系统设计要求较高,稍有不慎即可能损伤硬件。(我们调试时曾不慎将输出电压升至100V以上) 109 | 2. 采用并联方式被动补偿功率,若底盘电控不加以合理限制,仍有超功率风险。 110 | 111 | 显然,在参赛队伍硬件实力足够的前提下,第三种方案相较于前两种有极大优势。我们本次开源的方案即基于第三种。 112 | 113 |
114 | 115 | # 电学原理 116 | 117 | ## 升压与降压 118 | 119 | 首先回顾经典的升压电路与降压电路。为方便理解,假设此处所有DC-DC电路均工作在CCM(连续导通)模式下,MOSFET(场效应管)为理想MOSFET,忽略死区时间, $R_{DSon}$ 等。 120 | 121 | - Buck降压。下图左侧为非同步Buck电路,肖特基二极管起到为电感续流的作用。右侧为同步Buck电路,用MOSFET替代了二极管,带来了更低的压降与更灵活的控制。同步Buck电路中,CCM模式下,MOSFET经过**控制**,能够在电流正向的时候导通、反向的时候断开,实现了二极管的功能。 122 | 123 | ![buck_asynchronous_synchronous](https://github.com/hkustenterprize/RM2023-SuperCapacitor/blob/master/image/buck_asynchronous_synchronous.png)通过伏秒平衡定律可推导Buck电路在CCM模式下的输入输出电压关系 $\frac{V_{out}}{V_{in}}=D$ ,其中 ${V_{out}}$ 为输出电压, $V_{in}$ 为输入电压, $D$ 为上管导通时间占整个PWM周期的占空比。 124 | 125 | - Boost升压。下图左侧为非同步Boost电路,MOSFET对地导通时为电感充能,二极管在此处起到续流和防倒灌作用。右侧为同步Boost电路。用MOSFET替代二极管,在适当的控制下实现了二极管的功能。 126 | 127 | ![boost_asynchronous_synchronous](https://github.com/hkustenterprize/RM2023-SuperCapacitor/blob/master/image/boost_asynchronous_synchronous.png)通过伏秒平衡定律可推导Boost电路在CCM模式下的输入输出电压关系 $\frac{V_{out}}{V_{in}}=\frac{1}{D}$ ,其中 ${V_{out}}$ 为输出电压, $V_{in}$ 为输入电压, $D$ 为上管导通时间占整个PWM周期的占空比(注意是上管)。 128 | 129 | 受限于篇幅,在此省略伏秒平衡定律的具体推导过程。 130 | 131 | ## 双向升降压 132 | 133 | 同样的,假设一切条件全部理想,将Buck电路的前半段与Boost电路的后半段相连,我们可得到如下的四开关双向Buck-Boost电路。观察可见,此电路为对称结构。 134 | 135 | ![image-principle-1](image/h_bridge.png) 136 | 137 | ### 假设电流从左往右流动 138 | 139 | - 若将RIGHT_H常导通,RIGHT_L常断开,而LEFT_H和LEFT_L继续使用如上的Buck电路控制策略,则等效电路图如下图。这就是完全等效于Buck的拓扑,此时可将电路看作同步Buck,可实现将左侧电降压后提供给右侧。 140 | 141 | image-20230501021718554 142 | - 若将LEFT_H常导通,LEFT_L常断开,而RIGHT_H和RIGHT_L继续使用如上的Boost电路控制策略,则等效电路如下图。这就是Boost的拓扑,此时将电路看作同步Boost即可实现将左侧电升压后提供给右侧。 143 | 144 | image-20230501021718554 145 | - 第三种情况是需要的左电压与右电压相近。此时实际应用中由于最大占空比以及死区时间等限制,很难单独使用Buck或者Boost拓扑生成所需电压比。于是考虑用Buck控制策略控制左半桥,用Boost控制策略控制右半桥,此即为buck-boost电路。在任意时刻(瞬时),电路可视为Buck电路或Boost电路。(此处省略了一些细节,如为了防止两边的下管同时导通,左右两边的上管占空比应相互制约,同时相位也应错开)此时,无论是使用叠加原理还是通过伏秒平衡定律,我们都可以得到如下结果 $\frac{V_{left}}{V_{right}}=\frac{D_{right}}{D_{left}}$ ,其中, $D_{left}$ 为左侧上管占空比, $D_{right}$ 为右侧上管占空比。 146 | 147 | ### 假设电流从右往左流动 148 | 149 | 由于电路完全对称,显然,仅需将Buck与Boost颠倒过来,即可实现与上述完全相同的效果,在此不做过多赘述。 150 | 151 | 经过同样的推导,我们仍然得到此结果 $\frac{V_{left}}{V_{right}}=\frac{D_{right}}{D_{left}}$ 。 152 | 153 | ### 总结 154 | 155 | 在控制这个四开关双向Buck-Boost电路时,实际上**不需要区分电路到底是Buck还是Boost**,也不需要关注电流的流向等,只需给予两个半桥合适的占空比,即可获得想要的左右电压之比。 156 | 157 | 这种不对电流流向做限制,强制上下管交替导通的控制方式被称为FPWM(强制脉宽调制)模式。由于实现此控制模式的硬件较为简单,本设计采用此控制模式进行控制。 158 | 159 | 注意:Buck与Boost的互相转换只在 *同步Buck/同步Boost* 中起作用。 160 | 161 | ## 电流控制 162 | 163 | 通过以上分析,我们现可构建一个四开关Buck-Boost双向升降压电路。 164 | 165 | 在RoboMaster以及大多数其他应用场景中。电路中的负载更偏向于阻性,即电压差越大,电流越大,根据这一特点,我们通过控制左右两侧的电压之比进而对左右两侧的平均电流进行控制。 166 | 167 | 此处举一个例子便于理解。假设左侧为电源,右侧为负载,根据以上分析,我们可推导出右侧电压越大,输出电流越大,右侧电压越小,输出电流越小。此时若输出电流大于目标电流,则我们通过改变左右两侧占空比,控制左右两侧电压之比增大,则右侧电压降低,输出电流也相应减小。若输出电流小于目标电流,则控制占空比减小,右侧电压升高,输出电流增大。当右侧为电压源时,只需反转控制逻辑,即可实现一样的控制效果。在RoboMaster超级电容的应用中,左侧和右侧均可作为负载或电源,当给超级电容充电时,超级电容侧为负载,当超级电容放电时,超级电容侧为电源。 168 | 169 | 在上述例子中,基于电流反馈控制占空比变化的方式有很多种,在本方案中,我们使用ADC对转换后的电流进行读取,之后使用PID计算所需占空比进行输出,从而实现电流闭环控制。 170 | 171 | # 控制模块技术特点 172 | 173 | ## 实物图 174 | 175 | img_controller 176 | 177 | ## 硬件 178 | 179 | - 上下板组合 180 | 181 | img_controller_interboard_connection 182 | 183 | - 上板为FR4四层板,负责控制与驱动,带有MCU、信号调理电路、MOSFET栅极驱动、电流感应放大器电路、CAN通信电路,以及相应的辅助供电电路等。 184 | - 下板负责功率部分,为铝基板。带有保险丝、MOSFET、扁线功率电感、固态电容以及采样电阻等,利用铝基板加强散热,使得超级电容控制模块可以持续输出15A以上大电流而保持凉爽。 185 | - 上下板通过矮排针排母连接。模块化的设计方便快速更换组件,也方便维修上板或下板。 186 | - 功率线路从下板直接引出,导线直接焊接在焊盘上,大电流不需要经过上下板连接处,因此可以使用一般的排针排母进行简单的连接。 187 | 188 | img_controller_upper_board_SMT 189 | 190 | *嘉立创贴片+手焊后的电容控制器上板* 191 | 192 | - 电感值计算 193 | 194 | 本方案设计最大电流为15A,考虑3A的纹波电流,假设电路足够理想,忽略详细的电感取值计算公式推导过程。 195 | - Buck模式下工作时,电感取值应满足 $L_{Buck}>{(\frac{V_{out}}{\Delta{I}\cdot{f}} \cdot (1 - D))}_ {max}$ 。其中, $V_{out}$ 为输出电压, $\Delta{I}$ 为纹波电流, $f$ 为开关频率, $D$ 为上管占空比。 196 | 分析可得,当输入电压最大(此时超级电容组作为电源输出,最大电压29.15V),占空比为0.5时上式右侧取得最大值 ${\frac{29.15 \cdot 0.5}{3 \cdot 288000}} \cdot (1 - 0.5) = 8.434 uH$ 。因此,在Buck模式下,电感取值不应小于8.434uH。 197 | - Boost模式下工作时,电流流向反转,将上述公式中的 $V_{out}$ 输出电压换为 $V_{in}$ 输入电压,即得到 $L_{Boost}>{(\frac{V_{in}}{\Delta{I}\cdot{f}} \cdot (1 - D))}_ {max}$ 其中, $V_{in}$ 为输入电压, $\Delta{I}$ 为纹波电流, $f$ 为开关频率, $D$ 为上管占空比(注意是上管)。 198 | 分析可得,当输出电压最大(此时超级电容正好被充满电,最大电压29.15V),占空比为0.5时上式右侧取得最大值 ${\frac{29.15 \cdot 0.5}{3 \cdot 288000}} \cdot (1 - 0.5) = 8.434 uH$ 。因此,在Boost模式下,电感取值不应小于8.434uH。 199 | - 在不超过饱和电流的前提下,电感取值越大,纹波电流越小,留出一定余量,实际中使用饱和电流为21A,温升电流为30A的15uH的扁线电感。(实际上测试使用22uH饱和电流为14A,温升电流为30A的电感也可以工作,但出现了大电流下纹波明显增大的情况,保险起见最终选用了15uH电感,可考虑降低到10uH,选择更小的体积) 200 | 201 | - 电容值计算 202 | 203 | 考虑100mV的输出电压纹波,其余参数与计算电感时相同,假设电路足够理想,采用合适的近似方式,忽略详细的电容取值计算公式推导过程。 204 | - Buck模式下工作时,电容取值应满足 $C_{Buck}>\frac{\Delta{I}}{8\cdot{f}\cdot{\Delta{V_{out}}}}$ 。其中, $V_{out}$ 为输出电压, $\Delta{I}$ 为纹波电流, $f$ 为开关频率, ${\Delta{V_{out}}}$ 为输出电压纹波。 205 | 计算可得,Buck模式下电容取值应大于 $\frac{3}{8\cdot{288000}\cdot{0.1}} = 13.02 uF$ 。因此,在Buck模式下,电容取值不应小于13.02uF。 206 | - Boost模式下工作时,电容取值应满足 $C_{Boost}>{\frac{I_{out}\cdot{(1-D)}}{{f}\cdot{\Delta{V_{out}}}}}_ {max}$ 。 其中, $I_{out}$ 为输出电流, $D$ 为上管占空比, $f$ 为开关频率, ${\Delta{V_{out}}}$ 为输出电压纹波。 207 | 分析可得,当输出电流最大(15A),上管占空比最小(软件限制为0.1)时右侧取得最大值 $\frac{15\cdot{(1-0.1)}}{{288000}\cdot{0.1}} = 468.75uF$ 因此,在Boost模式下,电容取值不应小于468.75uF。 208 | - 理想情况下,电容取值越大,纹波电压越小,留出一定余量,并考虑到ESR影响,实际应用中,我们使用4个耐压为100V,额定容量为10uF的陶瓷电容与3个耐压50V,容量为220uF的固态电容并联,总电容值约为 $4 \cdot 6 + 3 \cdot 220 = 684 uF$ (考虑陶瓷电容的直流偏压特性)。 209 | 210 | - MOSFET驱动方案 211 | 212 | MOS驱动为UCC27211。采用隔离供电取代UCC27211的自举电容,从而能够实现100%占空比常开上管,显著提高单边Buck/单边Boost的转换效率![sch_iso_mos_driver](https://github.com/hkustenterprize/RM2023-SuperCapacitor/blob/master/image/sch_iso_mos_driver.png) 213 | 214 | - 通常,UCC27211使用一个自举电容串联在引脚HB(BootStrap)与HS(Switching)之间,芯片自带自举电路,通过浮空自举电容来打开上管。这种做法体积小,但是自举电容需要充电,需要定期导通下管为电容充电来弥补自举电路及栅极驱动等的漏电电流,做不到100%占空比。因此实际上总是工作在buck-boost模式下。由于两侧MOSFET都需要不断开关,损失了一些效率。 215 | - 此处使用12V->12V DCDC的隔离供电模块。因为此隔离供电模块为开环控制,输出电压极不稳定,且纹波极大,很容易炸毁栅极造成严重后果,所以此处使用RC滤波,并加入TVS(SMF10A)来钳位,保护上管不被高电压击穿。 216 | 217 | - 电流感应放大器所需的1.65V参考电压源由运放电路使用3.3V分压产生。使用阻容网络进行相位补偿,防止驱动容性负载时环路不稳定产生震荡。sch_1v65ref 218 | 219 | - 电流感应放大选择使用INA186差分放大器芯片 220 | 221 | 在一众开源方案中,较多使用 INA240 作为电流感应放大器。然而INA240的价格与供应不如人意,在此背景下相关开发人员使用了 INA282 进行替代。但是,INA282 的封装为 SOIC-8,体积大,layout 占用过多空间。其次INA282 最小增益倍数为 50 倍,增益带宽较低,实际测试过程中出现信号失真的问题。 因此经过反复比对选型,最终使用了另一款电流感应放大器 INA186,选择其最低增益倍数的版本INA186A1。这款放大器体积小,支持双向电流采样,带宽也能达到标准,耐压能够支持高位采样的需求。但在实际测试过程中发现其对于共模干扰的抑制能力非常差,极易受到开关信号干扰。 222 | 223 | scrshot_current_sense_noise_before_RC 224 | 225 | 为应对此干扰,在实际电路设计中加入了 RC 滤波电路,截止频率13kHz,实测能够有效过滤共模干扰和电源本身的噪音。 226 | 227 | sch_current_sense 228 | 229 | sch_current_sense_RC 230 | 231 | - INA186耐压高达42V,可以实现高位采样 232 | - 相比常用的INA240,INA186价格优势非常大,能显著节省整体成本 233 | - INA186的有效带宽20kHz,对于pwm频率约288khz的应用已经足够 234 | 235 | - 使用全包裹铝壳,兼顾散热与保护 236 | 237 | img_controller_lower_with_shell 238 | 239 | *下板用导热胶贴在铝壳上,提高散热效果* 240 | 241 | img_controller_shell 242 | 243 | *大小对比(与装甲板相比)* 244 | 245 | 246 | 247 | - 此超级电容控制模块效率最高约为97.8%。在处理大电流的情况下,不可避免地产生能量损耗,因而需要将热量导至铝制部件来散热。 248 | - 对于模块的外壳,我们采用工业化生产的全包裹铝壳。它既充当了散热组件,同时也能屏蔽电磁,防止超级电容控制板的EMI影响敏感部件例如RFID、UWB等。 249 | - 全包裹铝壳同样有很好的结构强度,在恶劣的使用情况例如翻车、剧烈冲撞时可以有效保护内部功率电路。密封的设计也可以防止异物进入,例如打磨产生的铝屑,碳粉,以及香港恶劣潮湿气候常见的水雾等。这对于超级电容这种大功率的模块的稳定性和安全性而言非常重要。 250 | 251 | ## MCU外设使用 252 | 253 | ### MCU选择 254 | 255 | - 四开关Buck-Boost电路中,开关频率越高,则需要的电感大小就越小,其体积也就越小。 256 | - 我们使用STM32芯片的Timer外设输出开关控制的PWM信号。为了实现精准的占空比控制,时钟周期不能太小;而普通Timer外设的频率一般仅有几十上百兆赫兹,开关频率高与时钟周期大无法同时实现。为实现精准控制,我们选用HRTim即高分辨率定时器外设,部分带有倍频功能,如STM32F334的HRTIM可以倍频至4.9GHz,实现288KHz的PWM频率同时,也有16000的分辨度。 257 | - 带有倍频功能HRTim的MCU中,能轻松买到的有STM32F334系列与STM32G474等。它们HRTim的功能几乎完全一样,而STM32G474比STM32F334有更高的主频与更先进的外设。然而,STM32G474在成本上有很大劣势,且大部分多出来的外设在超级电容上并不会有应用;同时,我们的代码在经过优化之后已经可以在STM32F334上以60%的内核占用实现36kHz频率的闭环,受限于电流采样带宽与开关频率,此闭环频率已足够应对RoboMaster赛场上复杂的工况。因而我们最终选择了简单实惠的STM32F334作为此项目的MCU。 258 | 259 | ### 外设配置 260 | 261 | #### HRTIM Master Clock 262 | 263 | - 调整倍频与周期,使PWM频率为288kHz 264 | 265 | #### HRTIM Timer A 266 | 267 | - 负责A半桥MOS的开关信号 268 | - 负责触发A侧的ADC采样 269 | 270 | #### HRTIM Timer B 271 | 272 | - 同理 273 | 274 | #### 死区控制 275 | 276 | * 同一边半桥的上下管绝对不能同时打开,否则电流回直接通过上下管对地短路,造成严重后果。同时,MOSFET导通时需要给栅极电容充电,需要一个几到几十纳秒的过程。因此,我们打开了HRTimer外设的Dead Time功能,从外设层面防止上下管对穿。本设计中我们为了防止MOSFET开关过快导致振铃,配置的上升下降时间较大,死区时间通过测试得出:8分频下Rising与Falling各约110(此值仅为参考,需根据实际情况微调)。 277 | * 若死区时间太大,则在死区时间的后半段,由于MOS管没有及时开启,会有较大电流从MOS管的寄生二极管流过,降低效率并增加过热烧毁的风险;若死区时间太小,则前一个MOS还没有完全关断的时后一个就已经正在打开了,此时容易发生上下管对穿的情况,会严重发热,烧毁MOS管。 278 | * 实际调节死区时间时,可使用具有恒压恒流功能的可调电源给数控超级电容模块进行供电,逐步调小死区,当可调电源突然出现CC(恒电流)模式时,代表死区时间过小,上下管之间已经短路,在此时的死区时间基础上添加一个安全冗余即为合适的死区时间。为了防止用户代码层面对死区进行错误修改导致灾难性后果,可配置死区相应寄存器进入只读模式,防止配置成功后在代码正常运行中被二次修改。 279 | 280 | ==== 281 | 282 | * *同时*,左侧与右侧半桥的下管也不能同时打开,否则就相当于电感两端经过GND短路,使其储存的电磁能瞬间转化成热能。在我们的实际应用中,我们通过错开TimerA与TimerB的相位180°,并限制Buck-Boost模式下TimerA与TimerB的上管占空比均不得小于50%来实现这一功能。 283 | 284 | #### HRTIM ADC Trigger 285 | 286 | HRTim_ADC_Trigger1 287 | 288 | 在电路实际工作过程中,MOSFET的开关会给电压带来纹波进而产生电流纹波。为防止MOSFET开关瞬间引入电流采样共模干扰,或产生的电流纹波影响采样,电流采样的时机应当正好处于对应侧上管PWM波形的中点,此时瞬时电流值等于平均电流值,瞬时电压值等于平均电压值。我们通过如下配置来实现这一功能。 289 | 290 | - TimA Compare2 -> ADC Trigger 1 291 | - TimB Compare2 -> ADC Trigger 3 292 | 293 | #### ADC1 294 | 295 | - CH1 -> V_SENSE_A(左侧电压采样) 296 | - CH2 -> I_SENSE_JUDGE(裁判系统电流采样) 297 | - CH3 -> I_SENSE_A(左侧电流采样) 298 | - 触发事件:HRTIM Trigger 1 Event 299 | 300 | #### ADC2 301 | 302 | - CH7 -> I_SENSE_B(右侧电流采样) 303 | - CH8 -> THERMAL_SENSE(温度采样) 304 | - CH9 -> V_SENSE_B(右侧电压采样) 305 | - 触发事件:HRTIM Trigger 3 Event 306 | 307 | #### ADC读数校准 308 | 309 | - 由于硬件上的误差如电阻阻值、运放芯片的体质、焊接工艺等区别,采得的ADC读数会有误差。我们对每一个焊接后的硬件都进行校准,并将校准数据写入宏,在编译期控制。 310 | - 将读数误差视为线性的,则每一个数据有对应的bias与gain。经过校准之后,不同控制板的电流电压读数几乎一致。 311 | - 将硬件ID写入Bytecode,防止烧错代码(编译时flag写错)。 312 | 313 | ## 软件 314 | 315 | ### 充放电控制策略 316 | 317 | - 采用多环串联PID:最外环为裁判系统功率闭环,而后功率闭环,最后同时闭环电压与电流。 318 | 319 | - 功率、电压和电流闭环速度为 36kHz,能量闭环速度为 10Hz,通讯频率为 1kHz。 320 | - 为了实现软启动与无扰切换,我们在电容关断输出不开关 MOS 管时,时刻保持内部 HRTIM 的 PWM 占空比等于两侧电压之比,这使得模块启动的瞬间不会产生巨大的冲击电流。 321 | - 在具体输出 PID 结果时,我们采用了电压前馈控制,PID 结果在两侧电压之比上进行补偿,有效提升了瞬态响应与控制的线性度。 322 | 323 | 324 | ### VBToVA -> 两半桥PWM占空比 325 | 326 | 经过PID运算后得出 $V_BToV_A$ ,既理想情况下两侧电压之比。 327 | 328 | 1. $V_BToV_A < 0.8$,则视作从**从左往右的Buck模式**。 此时右侧上管常开(100% Duty Cycle),左侧作为同步Buck,则左侧上管的占空比即 $V_BToV_A$ 。 329 | 2. $V_BToV_A > 1.25$,则视作**从左往右的Boost模式**。 此时左侧上管常开,右侧为同步Boost,右侧上管的占空比为 $\frac{1}{V_BToV_A}$ 。 330 | 3. $V_BToV_A\in[0.8, 1.25]$ ,则Buck或者Boost难以实现这样的升降压。于是采用**Buck-Boost模式**。 此时左侧上管占空比 $\frac{4}{9}\cdot(1+x)$ ,右侧上管占空比 $\frac{4}{9}\cdot(1 + \frac{1}{x}) $,这个值满足 $\frac{D_A}{D_B} = \frac{V_B}{V_A}$ ,且保证两边占空比的变化是连续的,可实现无缝衔接,防止占空比突变导致的控制不稳定。 331 | 332 | ### 通讯与底盘功率控制策略 333 | 334 | * 为保持通讯稳定性,使用CAN协议进行通讯,硬件上直接将CAN总线接入底盘电机所在的CAN总线,保证能读到电机即能读到电容反馈。 335 | * 每毫秒向底盘控制板反馈电容剩余能量、底盘瞬时功率、瞬间最大输出功率等信息,辅助底盘控制板上的功率控制代码进行底盘电机功率控制。 336 | * 每100毫秒接收一次来自底盘控制板的回报信息,包括来自裁判系统的剩余能量信息,来自裁判系统的功率限制信息,电容模式控制信息等。利用此信息对功率控制的误差进行修正(能量闭环),并在必要时刻提升瞬态响应(回家后功率瞬间翻倍)。 337 | 338 | ### 故障处理 339 | 340 | 该模块为了保障安全性,设计了数种故障模式,排查了几乎所有会导致灾难性后果的情况。此模块工作之稳定,在整个RoboMaster2023的赛季开发中,扛住了数次接错线、电容组极性接反、输出短路、信号调理部分电路短路等严重故障,至今未出现任何损坏烧毁的案例。 341 | 342 | - 过压保护 343 | 344 | - 模块会检测电容与底盘的电压,若电压过高,为防止模块本身工作异常导致毁灭性后果,会自动进入锁定状态。 345 | - 模块认为,任何时刻,AB 电压均不得大于 31V。若检测到超过 31V 的电压,模块会立即进入锁定状态。 346 | - 刹车制动时,底盘电机会将能量倒灌回裁判系统,这些能量的部分会被模块吸收,但当电容充满或倒灌能量过大,电容无力吸收这部分能量,会导致底盘电压升高。为保护底盘电机,防止因模块本身异常导致底盘电机烧毁,模块会检测超过 27V 的底盘电压,若符合一定逻辑,则进入锁定状态,任由能量倒灌回电池。 347 | 348 | 对于底盘输出电压有以下检测逻辑: 349 | 350 | 1. 若底盘电压持续大于 27V 但小于 28V 超过 300ms,则进入过压状态。 351 | 2. 若底盘电压持续大于 28V 但小于 29V 超过 60ms,则进入过压状态。 352 | 3. 若底盘电压持续大于 29V 但小于 30V 超过 12ms,则进入过压状态。 353 | 4. 若底盘电压持续大于 30V 但小于 31V 超过 3ms,则进入过压状态。 354 | 5. 当 A 相电压小于 27V,B 相电压小于 31V,过压锁定自动解除,模块自动尝试重新启动。 355 | - Buck-Boost 故障 356 | 357 | - 由于校准误差,代码跑飞或逻辑bug,局部短路等问题,模块可能会出现升降压部分工作异常的情况,当检测到此部分电路工作异常,模块进入锁定状态,关断输出,且不会自动尝试重新启动,需要用户手动重置。 358 | - 短路 359 | 360 | - 当模块检测到短路,会立即关断输出,短路状态立即解除,之后模块会尝试重新启动输出。 若短时间内连续检测到多次检测到短路故障,模块认为硬件损坏,不再尝试重新启动输出,需要用户手动重置。 361 | - 高温 362 | 363 | - 当模块检测到温度过高,会进入高温保护状态,关断输出。 待温度下降后自动恢复,重新启动输出。 364 | - 裁判系统供电丢失 365 | 366 | - 当模块检测到裁判系统供电丢失时(通常为机器人阵亡),自动关断输出。 待裁判系统供电恢复时,自动尝试重新启动。 367 | - 电容组故障 368 | 369 | - 当模块检测到超级电容故障,模块进入锁定状态,关断输出,且不会自动尝试重新启动,需要用户手动重置。 370 | - 检测超级电容故障的逻辑如下: 371 | - 1. 当超级电容电压变化达到一定阈值时,若充入超级电容的电荷量过低,认为与超级电容之间的连线断开。 (有效电容值过低) 372 | 2. 当充入超级电容的电荷量达到一定阈值时,若超级电容的电压变化过小,认为超级电容局部短路,过充,或漏电。 373 | 3. 为防止电荷量累计漂移误差,若未处于故障状态,每隔一段时间会重置故障检测。 374 | - 超级电容控制器配合新电容组可以判断正负极性错误 375 | 376 | - 如果正负极接反,电容处于空电状态,会判定为短路,发出短促的嘟嘟嘟提示音。 377 | - 如果电容正负极接反,且电容处于满电状态插入,将会剧烈打火并烧毁电容控制器下板上对应的TVS或保险丝,从而保护控制部分电路与MOS管。此后无论是否接电容,再次给超级电容控制器通电都会发出短促的嘟嘟嘟提示音,需要更换超级电容控制器上的TVS与保险丝 378 | 379 | 故障提示及处理 380 | 381 | 1. 当超级电容进入任何故障状态后,红灯处于闪烁状态,且同时切断输出,以 200Hz 持续时间 200ms 的低频提示音表示。若此时绿灯亮起,表明超级电容正尝试重新启动,若绿灯不亮,则需要用户手动重置 超级电容模块。重置方法如下: 382 | 2. 用户可手动断开所有电源连接线,之后再逐个插入,超级电容即重新启动,若顺利通过故障检测, 则故障状态解除。 383 | 3. 用户可通过 CAN 发送重启指令,超级电容重新启动,若顺利通过故障检测,则故障状态解除。 384 | 4. 用户可通过 CAN 发送关断输出指令,之后再次发送启动输出指令,超级电容会尝试重新启动输出, 若未再次发生故障,正常运行一段时间后故障状态自动解除。 385 | 386 | ### 附加功能 387 | 388 | - 监测裁判系统供电电压。若常低于某一值(约20V),则认为电池即将耗尽,蜂鸣器长鸣。用来提醒调试人员,防止出现调试代码未保存的情况。 389 | 390 | # 电容组硬件 391 | 392 | ## 原理与设计比较 393 | 394 | 储能元件采用超级电容,耐压2.7V。电容组先并联再串联,增大耐压至29.15V,最终储能能力1931J。为了防止充电过程中由于电容体质不同,使得:有些节点还没充满时,另一些电容已经超过耐压的情况,使用均衡电路。 395 | 396 | 均衡电路分为主动均衡与被动均衡。 397 | 398 | **被动均衡**一般通过电阻放电的方式,对电压较高的电容进行放电,以热形式释放电量。 399 | 400 | 此方案的优点是电路结构非常简单,研发成本也很低。先前可使用TL431电压基准模块进行简单搭建。后续随着BW6101超级电容保护芯片的推出,此方案更加简单廉价。 401 | 402 | 缺点较为显著,首先均衡时不存在电能转移,所有均衡的能量都通过电阻发热释放,理论上的均衡效率为0%。同时转移时会产生大量的热能,若不加处理,可能会烧毁电路。 403 | 404 | **主动均衡**是一种复杂的均衡技术,在充电和放电循环期间,使得电容单元内的电荷得到重新分配,从而缩短充电时间,延长放电使用时间。如: 405 | 406 | 1. Flying Capacitor 407 | 408 | 此电路实现了电荷泵,通过不断地控制开关,将电压较高的单元内电荷转移至中间电容器中,再转移至电压较低的单元。 409 | 410 | img 411 | 412 | 此方案的优势是具备主动均衡能力,理论上电容组可串联不同容量的超级电容。 413 | 414 | 缺点是均衡速度不够快,可能需要添加被动均衡电路防止大电流充电时均衡失败。同时,额外的MOS管驱动方案也对设计者提出了较高的要求,额外的器件也带来了更多的成本。效率上,相比被动均衡,部分能量得到了重复利用,但是驱动MOS管开关也会带来额外损耗,建议把控好启动均衡的阈值电压,在电压较低时不启动MOS管驱动,节省能量。 415 | 2. 电感转换器 416 | 417 | 使用电压较高的单元给电感充能,然后电感给电压较低的单元充电。 418 | 419 | img 420 | 421 | 此方案类似变形的buck电路,通过电感和电容组成的dcdc电路转移能量。其理论上能产生更大的均衡电流,但仍然存在上一个方案的一些缺点。同时如需更大的均衡电流,需要选择更大体积的功率电感,同样也会使总体体积增大。 422 | 3. 反激式电感转换器 423 | 424 | 使用变压器实现所有电容一起给一个或多个电压较低的电容充电,通过定期控制MOS管的开关,实现电感两侧横恒电压控制,进而逐渐均衡各电容单元电压。 425 | 426 | img 427 | 428 | 此方案优缺点与上述两个方案类似,但还存在一个额外的缺点,即很难找到这种多绕组的变压器成品,在设计时可能需要自行制作变压器,较为繁琐,对设计制作要求较高。 429 | 430 | 总而言之,主动均衡能达到比被动均衡更高的能量利用率,然而在体积、效率、成本、可靠性上难以平衡。因此,进行部分尝试后,我们最终在本赛季放弃了主动均衡,使用基于电阻泄放的被动均衡结构制作了电容组阵列。 431 | 432 | ## 原理图 433 | 434 | sch_cap_array_unit 435 | 436 | 图为一个电容单元。设计的电容组中共有11个该单元串联。 437 | 438 | diagram_BW6101 439 | 440 | 控制芯片为BW6101,该芯片在电容电压(VDD - GND)大于2.65V时,控制NMOS对GND导通,此时电流通过泄流电阻泄放,从而消耗电容中过多的能量。 441 | 442 | 此处使用3个电阻串联,而不是并联的原因是难以找到1Ohm左右的大功率电阻,此处使用的0.3Ohm电阻为电流采样电阻,功率较大(3W),能够承受更大的泄放电流。 443 | 444 | 由于电容组需要经过裁判系统超级电容管理模块,而管理模块额定电流为15A,为了裁判系统的稳定工作及排除电流超限带来的偷功率嫌疑,我们将电容组的充放电电流限制为14.5A。在此约束下,电压越高,电容放电功率越大。我们选择11个2.7V 50F的超级电容串联,能够带来更高的最大电压,从而最大化输出功率,但由于超级电容等效串联电阻的存在,这种方案会较大程度损失效率。同时,值得注意的是,BW6101在电容充电至2.65V时就已经开始均衡,为减少均衡损耗,提升系统综合稳定性,我们决定只将电容充电至2.65V。 445 | 446 | 实际使用过程中,为防止非硬件开发人员拆装及使用电容组时由于经验不足错误操作发生危险,我们在电容组的输入端加入一个大功率单向TVS,在严重过充时可烧毁短路,保护电容组,若电容组与数控超级电容控制模块的正负极接反,该设计可配合短路保护功能进行保护,防止对电容组进行反极性充电。同时我们还加入了一个LED灯,用来警告操作人员电容的带电情况。在RoboMaster2023的备赛中,我们发生了至少两次电容组极性接反的情况(XT30反着用力插也是可以插上的),均触发了过流保护,成功及时关断。提示灯也多次在拆装电容组时提示操作人员带电情况,对电容及时放电。我们在整个备赛期间未发生任何一起电容组过充、短路、起火等严重后果。 447 | 448 | ## PCB 449 | 450 | pcb_rendering_cap_array_top 451 | 452 | pcb_rendering_cap_array_bottom 453 | 454 | *Layout 参考* 455 | 456 | 457 | 458 | 该模块layout较为极限,所有电容紧贴排列。为了加强散热,使用四层板。其中内层1、2与顶层铺铜相同,起导热作用。底层放置MOS与芯片等元件,并利用开窗导线减小电阻。过充测试时,使用2.5A电流长时间对电容组进行充电,电容组未出现严重过热情况,电容未出现过充情况。 459 | 460 | ## 实物 461 | 462 | img_cap_array_bottom 463 | 464 | img_cap_array_top 465 | 466 | img_cap_array_bottom_2 467 | 468 | 超级电容组体积仅为60x76x45mm,在经费有限无法定制的情况下实现了较小的体积,机械设计更加自由。 469 | 470 | # 总结 471 | 472 | ## 技术总结 473 | 474 | 本模块通过数控Buck-Boost电路,接受裁判系统或开发板的指令并反馈,来实现裁判系统输入功率闭环。闲时为电容组充电、有需求时为底盘放电,削峰填谷。升降压的拓扑在实现电机母线电压稳定的同时也使得电容组的能量利用率提高,且通过软件控制,既可以弥补硬件恒功率控制上的繁琐与复杂,也可以实现更灵活的功率控制与故障处理操作,甚至裁判系统能量缓冲闭环。 475 | 476 | ## 使用方式 477 | 478 | ### 硬件连线 479 | 480 | 功率线有三组: 481 | 482 | - 左端有一根XT30公线,连接裁判系统电源模块Chassis接口 483 | - 左端XT30母线,连接到其他底盘功率器件(如底盘电机等) 484 | - 右端XT30公线,连接到超级电容组(经过CM01模块) 485 | 486 | 信号线 487 | 488 | - MX1.25x4pin插座可以连接SWD调试线 489 | - GH1.25x2pin插座连接CAN信号,与主板通信 490 | - 预留了GH1.25x4pin IIC接口,可以连接OLED屏幕用作调试 491 | 492 | ### 通信协议 493 | 494 | ```c++ 495 | struct CapacitorStatus 496 | { 497 | //本段结构体位于机器人控制代码与超级电容通信的Driver层中 498 | struct CapacitorRx 499 | { 500 | uint8_t errorCode; 501 | float chassisPower; 502 | uint16_t chassisPowerLimit; 503 | uint8_t capEnergy; 504 | } __attribute__((packed)) capacitorRx; 505 | 506 | struct CapacitorTx 507 | { 508 | uint8_t enableDCDC : 1; 509 | uint8_t systemRestart : 1; 510 | uint8_t resv0 : 6; 511 | uint16_t feedbackJudgePowerLimit; 512 | uint16_t feedbackJudgePowerBuffer; 513 | uint8_t resv1[3]; 514 | } __attribute__((packed)) capacitorTx; 515 | 516 | bool isConnected; 517 | }; 518 | ``` 519 | 520 | ## 测试结果 521 | 522 | ### 极限转换效率 523 | 524 | image-20230911224919920 525 | 526 | scrshot_best_converting_effiency 527 | 528 | *峰值效率0.978,一般效率约0.95* 529 | 530 | ### 输出纹波@5A 531 | 532 | img_buck_ripple_5A 533 | 534 | *Buck模式,占空比0.7:纹波25mV* 535 | 536 | img_buck_boost_ripple_5A 537 | 538 | *Buck-Boost模式,“占空比”为1.0:纹波约50mV* 539 | 540 | img_boost_ripple_5A 541 | 542 | *Boost模式,占空比0.75,纹波32mV* 543 | 544 | ## 发展方向 545 | 546 | ### 超级电容控制器 547 | 548 | 对于该版本控制器,大负载测试中发热极小,无需较大的散热面积与两MOS管并联的设计,体积可以很大程度的缩小;同时,有部分元件可以缩减,比如电压跟随运放可以利用MCU(STM32F334)内部的运放,从而减小复杂度、成本与体积。 549 | 550 | 为方便控制与简化硬件设计,本方案选用了理论效果不算出众的软件平均电流控制模式。可考虑略微修改硬件,以使用基于硬件比较器触发的电感峰值电流控制,实现逐周期电流闭环,提升系统响应。同时,本方案使用FPWM(强制脉宽调制)模式进行控制,这种控制方案在低负载情况下电感上会有电流反向流动,同时开关频率恒定,轻载时效率较低,瞬态响应一般。可考虑采用COT(恒定导通时间)提升瞬态响应,考虑加入PFM(脉冲频率调制)提升轻载效率。 551 | 552 | 考虑到软件控制电压电流等闭环确实存在不稳定因素,今后也考虑使用一些内置ARM内核和硬件反馈环路的数字电源控制芯片。它们一方面使用硬件环路补偿、开关控制等,更加稳定、集成度高,另一方面也可以烧入代码,实现功率、能量闭环、裁判系统通讯、底盘控制等操作,灵活性高。 553 | 554 | 而运用其他DC-DC拓扑的控制器也可以研究,例如Flyback(反驰)拓扑升降压,理论上可以用更少的MOS管与更简单的驱动电路(仅低位驱动)来实现给电容充电放电等功能。 555 | 556 | ![1694549124560](https://github.com/hkustenterprize/RM2023-SuperCapacitor/blob/master/image/Report/1694549124560.png) 557 | 558 | ## 后记与致谢 559 | 560 | 大约于2018年,大连交通大学TOE战队,桂林电子科技大学Evolution战队与香港科技大学ENTERPRIZE战队等便相继开源了各具特色的超级电容方案,推动了RoboMaster中各队对突破底盘功率限制的技术发展,也使得这一项目进入规则中。在此对各位拓荒的前辈们致以感谢。 561 | 562 | 2021年,大连理工大学凌_BUG战队首次开源了基于Buck-Boost的超级电容控制器。这种架构作为目前阶段(RM2023)中超级电容毋庸置疑的最优解,对本项目有极大的参考价值。 563 | 564 | 从时间线上看来,其实我们在2018年之后就拥有了稳定可用的超级电容,并且多年来一直实装,效果很好。然而经过漫长的四年,一方面老超级电容确实存在资料较少、难以传承的问题,导致维护困难(甚至老的设计上使用的元件都找不到了);另一方面,大连理工大学凌_BUG战队首发的Buck-Boost架构双向超级电容比起我们的老电容(电源 $\Rightarrow$ 恒功率充电模块 $\Rightarrow$ 超级电容 $\Rightarrow$ 恒压放电模块 $\Leftrightarrow$ 底盘电机)在各方面上都有着极大的提升。因而我们开启了这个新项目。 565 | 566 | 在超级电容的设计过程中,其他队伍的开源给予了我们莫大的帮助,在此感谢大连理工大学凌_BUG战队、西交利物浦GMaster战队与仲恺奇点战队等极为优秀的开源,以及在网上和七黄、光速翼等大佬的交流。也非常感谢嘉立创的低价打板与SMT服务(板子上元件很多,还好抽到了贴片券,节省了大量人力)。 567 | 568 | 2023赛季已经进入尾声,愿ENTERPRIZE战队在RM2024继续前进,再创新高! 569 | 570 | 最后,喊出那句口号,**初心高于胜负!** 571 | 572 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------