Add Voltage Selection Module

This commit is contained in:
Remy Starshade 2022-11-12 14:13:22 -05:00
parent be8ebee87f
commit aee632642d
28 changed files with 3685 additions and 5 deletions

View File

@ -93,6 +93,7 @@ void setup_COL() {
} }
void colMenu() { void colMenu() {
vselect(false);
convertPgm(menuOptionsCOL, 4); convertPgm(menuOptionsCOL, 4);
uint8_t mainMenu = question_box(F("COLECOVISION MENU"), menuOptions, 4, 0); uint8_t mainMenu = question_box(F("COLECOVISION MENU"), menuOptions, 4, 0);

View File

@ -63,7 +63,7 @@ char ver[5] = "11.2";
// !!! CHOOSE HARDWARE VERSION !!! // !!! CHOOSE HARDWARE VERSION !!!
//****************************************** //******************************************
// Remove // in front of the line with your hardware version // Remove // in front of the line with your hardware version
// #define HW5 #define HW5
// #define HW4 // #define HW4
// #define HW3 // #define HW3
// #define HW2 // #define HW2
@ -136,6 +136,7 @@ char ver[5] = "11.2";
// HW CONFIGS // HW CONFIGS
//****************************************** //******************************************
#if (defined(HW4) || defined(HW5)) #if (defined(HW4) || defined(HW5))
// #define enable_vselect
#define enable_LCD #define enable_LCD
#define enable_neopixel #define enable_neopixel
#define background_color 100, 0, 0 //Green, Red, Blue #define background_color 100, 0, 0 //Green, Red, Blue
@ -1790,11 +1791,13 @@ int32_t initializeClockOffset() {
void setup() { void setup() {
// Set Button Pin PG2 to Input // Set Button Pin PG2 to Input
DDRG &= ~(1 << 2); DDRG &= ~(1 << 2);
#ifdef HW5 #if defined(HW5) && !defined(enable_vselect)
// HW5 has status LED connected to PD7 // HW5 has status LED connected to PD7
// Set LED Pin PD7 to Output // Set LED Pin PD7 to Output
DDRD |= (1 << 7); DDRD |= (1 << 7);
PORTD |= (1 << 7); PORTD |= (1 << 7);
#elif defined(enable_vselect)
DDRD |= (1 << 7);
#else #else
// HW1/2/3 have button connected to PD7 // HW1/2/3 have button connected to PD7
// Set Button Pin PD7 to Input // Set Button Pin PD7 to Input
@ -1896,6 +1899,9 @@ void setup() {
// status LED ON // status LED ON
statusLED(true); statusLED(true);
// Set power to low to protect carts
vselect(true);
// Start menu system // Start menu system
startMenu(); startMenu();
} }
@ -2381,7 +2387,9 @@ void rgbLed(byte Color) {
} }
void blinkLED() { void blinkLED() {
#if defined(HW5) #if defined(enable_vselect)
// Nothing
#elif defined(HW5)
PORTD ^= (1 << 7); PORTD ^= (1 << 7);
#elif defined(enable_OLED) #elif defined(enable_OLED)
PORTB ^= (1 << 4); PORTB ^= (1 << 4);
@ -2393,7 +2401,7 @@ void blinkLED() {
#endif #endif
} }
#if defined(HW5) #if defined(HW5) && !defined(enable_vselect)
void statusLED(boolean on) { void statusLED(boolean on) {
if (!on) if (!on)
PORTD |= (1 << 7); PORTD |= (1 << 7);
@ -2423,9 +2431,22 @@ void statusLED(boolean on) {
} }
*/ */
} }
void vselect(boolean vlow __attribute__((unused))) {
}
#elif defined(enable_vselect)
void statusLED(boolean on __attribute__((unused))) {
}
void vselect(boolean vlow) {
if (vlow)
PORTD |= (1 << 7);
else
PORTD &= ~(1 << 7);
}
#else #else
void statusLED(boolean on __attribute__((unused))) { void statusLED(boolean on __attribute__((unused))) {
} }
void vselect(boolean vlow __attribute__((unused))) {
}
#endif #endif
/****************************************** /******************************************

View File

@ -41,6 +41,7 @@ static const char* const menuOptionsGBFlash[] PROGMEM = { GBFlashItem1, GBFlashI
// Start menu for both GB and GBA // Start menu for both GB and GBA
void gbxMenu() { void gbxMenu() {
vselect(true);
// create menu with title and 4 options to choose from // create menu with title and 4 options to choose from
unsigned char gbType; unsigned char gbType;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
@ -50,6 +51,7 @@ void gbxMenu() {
// wait for user choice to come back from the question box menu // wait for user choice to come back from the question box menu
switch (gbType) { switch (gbType) {
case 0: case 0:
vselect(false);
display_Clear(); display_Clear();
display_Update(); display_Update();
setup_GB(); setup_GB();
@ -66,6 +68,7 @@ void gbxMenu() {
case 2: case 2:
// create submenu with title and 7 options to choose from // create submenu with title and 7 options to choose from
unsigned char gbFlash; unsigned char gbFlash;
vselect(false);
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
convertPgm(menuOptionsGBFlash, 7); convertPgm(menuOptionsGBFlash, 7);
gbFlash = question_box(F("Select type"), menuOptions, 7, 0); gbFlash = question_box(F("Select type"), menuOptions, 7, 0);
@ -93,6 +96,7 @@ void gbxMenu() {
case 1: case 1:
//Flash MBC5 //Flash MBC5
vselect(false);
display_Clear(); display_Clear();
display_Update(); display_Update();
setup_GB(); setup_GB();

View File

@ -34,6 +34,7 @@ static const char GBASaveItem6[] PROGMEM = "1M FLASH";
static const char* const saveOptionsGBA[] PROGMEM = { GBASaveItem1, GBASaveItem2, GBASaveItem3, GBASaveItem4, GBASaveItem5, GBASaveItem6 }; static const char* const saveOptionsGBA[] PROGMEM = { GBASaveItem1, GBASaveItem2, GBASaveItem3, GBASaveItem4, GBASaveItem5, GBASaveItem6 };
void gbaMenu() { void gbaMenu() {
vselect(true);
// create menu with title and 4 options to choose from // create menu with title and 4 options to choose from
unsigned char mainMenu; unsigned char mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -17,6 +17,7 @@ static const char gbmMenuItem7[] PROGMEM = "Write Mapping";
static const char* const menuOptionsGBM[] PROGMEM = { gbmMenuItem1, gbmMenuItem2, gbmMenuItem3, gbmMenuItem4, gbmMenuItem5, gbmMenuItem6, gbmMenuItem7 }; static const char* const menuOptionsGBM[] PROGMEM = { gbmMenuItem1, gbmMenuItem2, gbmMenuItem3, gbmMenuItem4, gbmMenuItem5, gbmMenuItem6, gbmMenuItem7 };
void gbmMenu() { void gbmMenu() {
vselect(false);
// create menu with title and 7 options to choose from // create menu with title and 7 options to choose from
unsigned char mainMenu; unsigned char mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -145,6 +145,7 @@ void setup_GBSmart() {
} }
void gbSmartMenu() { void gbSmartMenu() {
vselect(false);
uint8_t mainMenu; uint8_t mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -135,6 +135,7 @@ void setup_INTV() {
} }
void intvMenu() { void intvMenu() {
vselect(false);
convertPgm(menuOptionsINTV, 4); convertPgm(menuOptionsINTV, 4);
uint8_t mainMenu = question_box(F("INTELLIVISION MENU"), menuOptions, 4, 0); uint8_t mainMenu = question_box(F("INTELLIVISION MENU"), menuOptions, 4, 0);

View File

@ -209,6 +209,7 @@ static const char* const menuOptionsSCD[] PROGMEM = { SCDMenuItem1, SCDMenuItem2
// Sega start menu // Sega start menu
void mdMenu() { void mdMenu() {
vselect(false);
// create menu with title and 4 options to choose from // create menu with title and 4 options to choose from
unsigned char mdDev; unsigned char mdDev;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -113,6 +113,7 @@ static const char* const sectorOptionsN64[] PROGMEM = { N64SectorItem1, N64Secto
// N64 start menu // N64 start menu
void n64Menu() { void n64Menu() {
vselect(true);
// create menu with title and 5 options to choose from // create menu with title and 5 options to choose from
unsigned char n64Dev; unsigned char n64Dev;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -233,6 +233,7 @@ static const char* const menuOptionsNESChips[] PROGMEM = { nesChipsMenuItem1, ne
// NES start menu // NES start menu
void nesMenu() { void nesMenu() {
vselect(false);
unsigned char answer; unsigned char answer;
// create menu with title "NES CART READER" and 7 options to choose from // create menu with title "NES CART READER" and 7 options to choose from

View File

@ -51,6 +51,7 @@ void setup_NGP() {
} }
void ngpMenu() { void ngpMenu() {
vselect(false);
uint8_t mainMenu; uint8_t mainMenu;
convertPgm(menuOptionsNGP, 3); convertPgm(menuOptionsNGP, 3);

View File

@ -73,6 +73,7 @@ static const char *const menuOptionspceTC[] PROGMEM = { pceTCMenuItem1, string_r
// PCE start menu // PCE start menu
void pcsMenu(void) { void pcsMenu(void) {
vselect(false);
// create menu with title and 3 options to choose from // create menu with title and 3 options to choose from
unsigned char pceDev; unsigned char pceDev;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -141,6 +141,7 @@ static const char pcwmenuItem3[] PROGMEM = "Write SRAM";
static const char* const menuOptionsPCW[] PROGMEM = { pcwmenuItem1, pcwmenuItem2, pcwmenuItem3, string_reset2 }; static const char* const menuOptionsPCW[] PROGMEM = { pcwmenuItem1, pcwmenuItem2, pcwmenuItem3, string_reset2 };
void pcwMenu() { void pcwMenu() {
vselect(false);
convertPgm(menuOptionsPCW, 4); convertPgm(menuOptionsPCW, 4);
uint8_t mainMenu = question_box(F(" POCKET CHALLENGE W"), menuOptions, 4, 0); uint8_t mainMenu = question_box(F(" POCKET CHALLENGE W"), menuOptions, 4, 0);

View File

@ -50,6 +50,7 @@ static const char sfmGameMenuItem4[] PROGMEM = "Switch Game";
static const char* const menuOptionsSFMGame[] PROGMEM = { sfmGameMenuItem1, sfmGameMenuItem2, sfmGameMenuItem3, sfmGameMenuItem4, string_reset2 }; static const char* const menuOptionsSFMGame[] PROGMEM = { sfmGameMenuItem1, sfmGameMenuItem2, sfmGameMenuItem3, sfmGameMenuItem4, string_reset2 };
void sfmMenu() { void sfmMenu() {
vselect(false);
// create menu with title and 3 options to choose from // create menu with title and 3 options to choose from
unsigned char mainMenu; unsigned char mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -40,6 +40,7 @@ static bool retron_mode = false;
void _smsMenu() { void _smsMenu() {
vselect(false);
// create menu with title and n options to choose from // create menu with title and n options to choose from
unsigned char mainMenu; unsigned char mainMenu;

View File

@ -70,6 +70,7 @@ static const char* const menuOptionsRepro[] PROGMEM = { reproMenuItem1, reproMen
// SNES repro menu // SNES repro menu
void reproMenu() { void reproMenu() {
vselect(false);
// create menu with title and 6 options to choose from // create menu with title and 6 options to choose from
unsigned char snsRepro; unsigned char snsRepro;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
@ -132,6 +133,7 @@ void reproMenu() {
// SNES start menu // SNES start menu
void snsMenu() { void snsMenu() {
vselect(false);
// create menu with title and 6 options to choose from // create menu with title and 6 options to choose from
unsigned char snsCart; unsigned char snsCart;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem
@ -190,6 +192,7 @@ void snsMenu() {
// SNES Menu // SNES Menu
void snesMenu() { void snesMenu() {
vselect(false);
// create menu with title and 7 options to choose from // create menu with title and 7 options to choose from
unsigned char mainMenu; unsigned char mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -42,6 +42,7 @@ static const char* const menuOptionsSVFlash[] PROGMEM = { svFlashMenuItem1, svFl
void svMenu() { void svMenu() {
vselect(false);
// create menu with title and 3 options to choose from // create menu with title and 3 options to choose from
unsigned char mainMenu; unsigned char mainMenu;
// Copy menuOptions out of progmem // Copy menuOptions out of progmem

View File

@ -101,6 +101,7 @@ static const char vboyMenuItem3[] PROGMEM = "Write SRAM";
static const char* const menuOptionsVBOY[] PROGMEM = { vboyMenuItem1, vboyMenuItem2, vboyMenuItem3, string_reset2 }; static const char* const menuOptionsVBOY[] PROGMEM = { vboyMenuItem1, vboyMenuItem2, vboyMenuItem3, string_reset2 };
void vboyMenu() { void vboyMenu() {
vselect(false);
convertPgm(menuOptionsVBOY, 4); convertPgm(menuOptionsVBOY, 4);
uint8_t mainMenu = question_box(F("VIRTUALBOY MENU"), menuOptions, 4, 0); uint8_t mainMenu = question_box(F("VIRTUALBOY MENU"), menuOptions, 4, 0);

View File

@ -119,6 +119,7 @@ boolean headerCheck() {
} }
void wsMenu() { void wsMenu() {
vselect(false);
uint8_t mainMenu = (wsWitch ? 5 : 4); uint8_t mainMenu = (wsWitch ? 5 : 4);
convertPgm(menuOptionsWS, mainMenu); convertPgm(menuOptionsWS, mainMenu);

View File

@ -106,6 +106,7 @@ static const char wsvMenuItem3[] PROGMEM = "Set Size";
static const char* const menuOptionsSV[] PROGMEM = { wsvMenuItem1, wsvMenuItem2, wsvMenuItem3, string_reset2 }; static const char* const menuOptionsSV[] PROGMEM = { wsvMenuItem1, wsvMenuItem2, wsvMenuItem3, string_reset2 };
void wsvMenu() { void wsvMenu() {
vselect(false);
convertPgm(menuOptionsSV, 4); convertPgm(menuOptionsSV, 4);
uint8_t mainMenu = question_box(F("SUPERVISION MENU"), menuOptions, 4, 0); uint8_t mainMenu = question_box(F("SUPERVISION MENU"), menuOptions, 4, 0);

View File

@ -0,0 +1,49 @@
### Important: The Vselect module PCB is currently untested and may require design revisions to function.
##
The Vselect module automates voltage selection on HW5. It is to be soldered in place of the voltage selection switch. You cannot use the Vselect module and a power LED at the same time.
## Ordering the PCB and Installing the components
The Vselect module requires SMD/SMC (surface-mounted devices/components) soldering. The pads have been extended slightly to aid in hand-soldering. However, because many people are uncomfortable with hand-soldering such small components automated assembly files suitable for use with JLCPCB have been included. This does significantly increase the cost of the module, however. To use assembly on JLCPCB, upload the gerber as normal and then select to include assembly. On the next page upload `VSelect_bom.csv` and `VSelect-top-pos.csv`. Ensure the part placement looks sane. You may need to manually rotate components. Make sure the dots line up on the chip as well. It should look like this:
![](https://i.imgur.com/SJk2NCl.png)
## Installation
To install the module place it over the voltage switch contacts with the component side facing up and solder it in place. You can use stripped wires or pins to bridge between the boards. Once soldered in place you must jump 2 wires off of the board. JP1 should go to pin D38 on the Arduino. The nearest point to jump to is where the resistor for the power LED normally would be installed. Use the rightmost pin next to the screw terminal. After that, you must connect JP2 to ground. There are many places you could tap into ground but the closest is the screw terminal, just be careful not to close the hole which would get in the way of installing a screw. If you want an easier location, the unused screw terminal under the Arduino is probably the easiest.
## Configuration
The module requires code to function properly. The OSCR should still power on even without the code changes but the voltage will not automatically toggle. To enable automatic toggling, locate this bit of code:
```
//******************************************
// HW CONFIGS
//******************************************
#if (defined(HW4) || defined(HW5))
// #define enable_vselect
#define enable_LCD
```
...and change it to:
```
//******************************************
// HW CONFIGS
//******************************************
#if (defined(HW4) || defined(HW5))
#define enable_vselect
#define enable_LCD
```
After that simply update/program/flash your Arduino/OSCR as normal. Make sure you enable this every time you update. You can test that voltage switching is occurring with a multimeter by checking between ground and VCC.
## Notes
The module starts in 5V mode and switches to 3V after the Arduino finishes booting. Because of this, you should not install 3V carts before powering the system on. Once on the main menu, the system should be running on 3V.
The flash function does not currently have a menu to select a voltage. One should be added at a later time.
## Troubleshooting
If the 3.3V rail is not powered (i.e. you forgot to solder the jumper on the LCD) then when the module tries to switch to that it will power off the VCC rail. This will appear as a reboot loop where you'll see it briefly power on and then immediately power off only to immediately power on again. This is because the module starts in 5V mode and switches to 3V after the system boots and tells it to do so.

View File

@ -0,0 +1,6 @@
Designator,Val,Package,Mid X,Mid Y,Rotation,Layer
"C1","0.1 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.750000,-19.490000,180.000000,top
"C2","0.1 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.717500,-21.490000,0.000000,top
"C3","10 uF","C_0402_1005Metric_Pad0.74x0.62mm_HandSolder",37.750000,-20.490000,0.000000,top
"R1","550","R_0402_1005Metric_Pad0.72x0.64mm_HandSolder",37.720000,-23.800000,180.000000,top
"U1","TPS2113PW","Texas_Instruments-TPS2113PW-Level_A",31.550000,-20.790000,0.000000,top
1 Designator Val Package Mid X Mid Y Rotation Layer
2 C1 0.1 uF C_0402_1005Metric_Pad0.74x0.62mm_HandSolder 37.750000 -19.490000 180.000000 top
3 C2 0.1 uF C_0402_1005Metric_Pad0.74x0.62mm_HandSolder 37.717500 -21.490000 0.000000 top
4 C3 10 uF C_0402_1005Metric_Pad0.74x0.62mm_HandSolder 37.750000 -20.490000 0.000000 top
5 R1 550 R_0402_1005Metric_Pad0.72x0.64mm_HandSolder 37.720000 -23.800000 180.000000 top
6 U1 TPS2113PW Texas_Instruments-TPS2113PW-Level_A 31.550000 -20.790000 0.000000 top

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,75 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": true,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"meta": {
"filename": "VSelect.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@ -0,0 +1,469 @@
{
"board": {
"design_settings": {
"defaults": {
"board_outline_line_width": 0.09999999999999999,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.15,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.9,
"height": 2.0,
"width": 1.5
},
"silk_line_width": 0.15,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.15,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"copper_edge_clearance": "error",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zone_has_empty_net": "error",
"zones_intersect": "error"
},
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.0,
"min_copper_edge_clearance": 0.0,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_silk_clearance": 0.0,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.049999999999999996,
"min_via_diameter": 0.39999999999999997,
"solder_mask_clearance": 0.0,
"solder_mask_min_width": 0.0,
"use_height_for_length_calcs": true
},
"track_widths": [
0.0
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_label_syntax": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [
"Personal"
],
"pinned_symbol_libs": []
},
"meta": {
"filename": "VSelect.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12.0,
"clearance": 0.15,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.25,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6.0
},
{
"bus_width": 12.0,
"clearance": 0.1,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Power",
"nets": [
"+3.3V",
"+5V",
"GND",
"VCC"
],
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.45,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6.0
}
],
"meta": {
"version": 2
},
"net_colors": null
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [
{
"name": "Description",
"url": false,
"visible": false
},
{
"name": "JLCPCB",
"url": false,
"visible": false
}
],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_external_command": "spice \"%I\"",
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"ec18acd3-6576-4c7e-a623-74d94852c1cc",
""
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Code JEDEC","Datasheet Version","Description","IN1 IN2 Input VoltageMaxV","IN1 IN2 Input VoltageMinV","IN1 Output CurrentMaxA","IN1 rDSonTypmOhm","IN2 Output CurrentMaxA","IN2 rDSonTypOhms","JLCPCB","Mounting Technology","Number of Inputs","Package Description","Package Version","Sub Family","category","ciiva ids","imported","library id","manufacturer","package","release date","rohs","vault revision"
"1","2","C1, C2","0.1 uF","Device:C","Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder","~","","","CL05B104KB54PNC","","","","","","","C307331","","","","","","","","","","","","","",""
"2","1","C3","10 uF","Device:C","Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder","~","","","CL05A106MQ5NUNC","","","","","","","C15525","","","","","","","","","","","","","",""
"3","2","JP1, TP1","VSELECT","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"4","2","JP2, TP2","GND","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"5","1","JP3","3.3V","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"6","1","JP4","5V","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"7","1","JP5","VCC","Connector:TestPoint","Personal:Vpower-Switch-Pad","~","","","","","","","","","","","","","","","","","","","","","","","",""
"8","1","R1","550","Device:R","Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder","~","","","RC0402JR-07560RL","","","","","","","C137858","","","","","","","","","","","","","",""
"9","1","TP3","3.3V","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"10","1","TP4","5V","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"11","1","TP5","VCC","Connector:TestPoint","TestPoint:TestPoint_Pad_2.0x2.0mm","~","","","","","","","","","","","","","","","","","","","","","","","",""
"12","1","U1","TPS2113PW","Added:TPS2113PW","Personal:Texas_Instruments-TPS2113PW-Level_A","http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS2113&fileType=pdf","MO-153","SLVS446","","5.5","2.8","1.25","84","1.25","0.084","","Surface Mount","2","8-Pin Plastic Thin Small Outline Package 3 x 4.4 mm Body ,0.65 mm Pitch","revG, Feb-2011","Power Multiplexer (MUX)","IC","1435368","yes","8d418d7fa91867a0","Texas Instruments","PW0008A","1464590589","Yes","9D6D1550-8F4D-4794-945B-26B7B47CC6E6"
1 Item Qty Reference(s) Value LibPart Footprint Datasheet Code JEDEC Datasheet Version Description IN1 IN2 Input VoltageMaxV IN1 IN2 Input VoltageMinV IN1 Output CurrentMaxA IN1 rDSonTypmOhm IN2 Output CurrentMaxA IN2 rDSonTypOhms JLCPCB Mounting Technology Number of Inputs Package Description Package Version Sub Family category ciiva ids imported library id manufacturer package release date rohs vault revision
2 1 2 C1, C2 0.1 uF Device:C Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder ~ CL05B104KB54PNC C307331
3 2 1 C3 10 uF Device:C Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder ~ CL05A106MQ5NUNC C15525
4 3 2 JP1, TP1 VSELECT Connector:TestPoint TestPoint:TestPoint_Pad_2.0x2.0mm ~
5 4 2 JP2, TP2 GND Connector:TestPoint TestPoint:TestPoint_Pad_2.0x2.0mm ~
6 5 1 JP3 3.3V Connector:TestPoint Personal:Vpower-Switch-Pad ~
7 6 1 JP4 5V Connector:TestPoint Personal:Vpower-Switch-Pad ~
8 7 1 JP5 VCC Connector:TestPoint Personal:Vpower-Switch-Pad ~
9 8 1 R1 550 Device:R Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder ~ RC0402JR-07560RL C137858
10 9 1 TP3 3.3V Connector:TestPoint TestPoint:TestPoint_Pad_2.0x2.0mm ~
11 10 1 TP4 5V Connector:TestPoint TestPoint:TestPoint_Pad_2.0x2.0mm ~
12 11 1 TP5 VCC Connector:TestPoint TestPoint:TestPoint_Pad_2.0x2.0mm ~
13 12 1 U1 TPS2113PW Added:TPS2113PW Personal:Texas_Instruments-TPS2113PW-Level_A http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS2113&fileType=pdf MO-153 SLVS446 5.5 2.8 1.25 84 1.25 0.084 Surface Mount 2 8-Pin Plastic Thin Small Outline Package 3 x 4.4 mm Body ,0.65 mm Pitch revG, Feb-2011 Power Multiplexer (MUX) IC 1435368 yes 8d418d7fa91867a0 Texas Instruments PW0008A 1464590589 Yes 9D6D1550-8F4D-4794-945B-26B7B47CC6E6

Binary file not shown.