mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-27 15:04:15 +01:00
Add Voltage Selection Module
This commit is contained in:
parent
be8ebee87f
commit
aee632642d
@ -93,6 +93,7 @@ void setup_COL() {
|
||||
}
|
||||
|
||||
void colMenu() {
|
||||
vselect(false);
|
||||
convertPgm(menuOptionsCOL, 4);
|
||||
uint8_t mainMenu = question_box(F("COLECOVISION MENU"), menuOptions, 4, 0);
|
||||
|
||||
|
@ -63,7 +63,7 @@ char ver[5] = "11.2";
|
||||
// !!! CHOOSE HARDWARE VERSION !!!
|
||||
//******************************************
|
||||
// Remove // in front of the line with your hardware version
|
||||
// #define HW5
|
||||
#define HW5
|
||||
// #define HW4
|
||||
// #define HW3
|
||||
// #define HW2
|
||||
@ -136,6 +136,7 @@ char ver[5] = "11.2";
|
||||
// HW CONFIGS
|
||||
//******************************************
|
||||
#if (defined(HW4) || defined(HW5))
|
||||
// #define enable_vselect
|
||||
#define enable_LCD
|
||||
#define enable_neopixel
|
||||
#define background_color 100, 0, 0 //Green, Red, Blue
|
||||
@ -1790,11 +1791,13 @@ int32_t initializeClockOffset() {
|
||||
void setup() {
|
||||
// Set Button Pin PG2 to Input
|
||||
DDRG &= ~(1 << 2);
|
||||
#ifdef HW5
|
||||
#if defined(HW5) && !defined(enable_vselect)
|
||||
// HW5 has status LED connected to PD7
|
||||
// Set LED Pin PD7 to Output
|
||||
DDRD |= (1 << 7);
|
||||
PORTD |= (1 << 7);
|
||||
#elif defined(enable_vselect)
|
||||
DDRD |= (1 << 7);
|
||||
#else
|
||||
// HW1/2/3 have button connected to PD7
|
||||
// Set Button Pin PD7 to Input
|
||||
@ -1896,6 +1899,9 @@ void setup() {
|
||||
// status LED ON
|
||||
statusLED(true);
|
||||
|
||||
// Set power to low to protect carts
|
||||
vselect(true);
|
||||
|
||||
// Start menu system
|
||||
startMenu();
|
||||
}
|
||||
@ -2381,7 +2387,9 @@ void rgbLed(byte Color) {
|
||||
}
|
||||
|
||||
void blinkLED() {
|
||||
#if defined(HW5)
|
||||
#if defined(enable_vselect)
|
||||
// Nothing
|
||||
#elif defined(HW5)
|
||||
PORTD ^= (1 << 7);
|
||||
#elif defined(enable_OLED)
|
||||
PORTB ^= (1 << 4);
|
||||
@ -2393,7 +2401,7 @@ void blinkLED() {
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(HW5)
|
||||
#if defined(HW5) && !defined(enable_vselect)
|
||||
void statusLED(boolean on) {
|
||||
if (!on)
|
||||
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
|
||||
void statusLED(boolean on __attribute__((unused))) {
|
||||
}
|
||||
void vselect(boolean vlow __attribute__((unused))) {
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************
|
||||
|
@ -41,6 +41,7 @@ static const char* const menuOptionsGBFlash[] PROGMEM = { GBFlashItem1, GBFlashI
|
||||
|
||||
// Start menu for both GB and GBA
|
||||
void gbxMenu() {
|
||||
vselect(true);
|
||||
// create menu with title and 4 options to choose from
|
||||
unsigned char gbType;
|
||||
// Copy menuOptions out of progmem
|
||||
@ -50,6 +51,7 @@ void gbxMenu() {
|
||||
// wait for user choice to come back from the question box menu
|
||||
switch (gbType) {
|
||||
case 0:
|
||||
vselect(false);
|
||||
display_Clear();
|
||||
display_Update();
|
||||
setup_GB();
|
||||
@ -66,6 +68,7 @@ void gbxMenu() {
|
||||
case 2:
|
||||
// create submenu with title and 7 options to choose from
|
||||
unsigned char gbFlash;
|
||||
vselect(false);
|
||||
// Copy menuOptions out of progmem
|
||||
convertPgm(menuOptionsGBFlash, 7);
|
||||
gbFlash = question_box(F("Select type"), menuOptions, 7, 0);
|
||||
@ -93,6 +96,7 @@ void gbxMenu() {
|
||||
|
||||
case 1:
|
||||
//Flash MBC5
|
||||
vselect(false);
|
||||
display_Clear();
|
||||
display_Update();
|
||||
setup_GB();
|
||||
|
@ -34,6 +34,7 @@ static const char GBASaveItem6[] PROGMEM = "1M FLASH";
|
||||
static const char* const saveOptionsGBA[] PROGMEM = { GBASaveItem1, GBASaveItem2, GBASaveItem3, GBASaveItem4, GBASaveItem5, GBASaveItem6 };
|
||||
|
||||
void gbaMenu() {
|
||||
vselect(true);
|
||||
// create menu with title and 4 options to choose from
|
||||
unsigned char mainMenu;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -17,6 +17,7 @@ static const char gbmMenuItem7[] PROGMEM = "Write Mapping";
|
||||
static const char* const menuOptionsGBM[] PROGMEM = { gbmMenuItem1, gbmMenuItem2, gbmMenuItem3, gbmMenuItem4, gbmMenuItem5, gbmMenuItem6, gbmMenuItem7 };
|
||||
|
||||
void gbmMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 7 options to choose from
|
||||
unsigned char mainMenu;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -145,6 +145,7 @@ void setup_GBSmart() {
|
||||
}
|
||||
|
||||
void gbSmartMenu() {
|
||||
vselect(false);
|
||||
uint8_t mainMenu;
|
||||
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -135,6 +135,7 @@ void setup_INTV() {
|
||||
}
|
||||
|
||||
void intvMenu() {
|
||||
vselect(false);
|
||||
convertPgm(menuOptionsINTV, 4);
|
||||
uint8_t mainMenu = question_box(F("INTELLIVISION MENU"), menuOptions, 4, 0);
|
||||
|
||||
|
@ -209,6 +209,7 @@ static const char* const menuOptionsSCD[] PROGMEM = { SCDMenuItem1, SCDMenuItem2
|
||||
|
||||
// Sega start menu
|
||||
void mdMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 4 options to choose from
|
||||
unsigned char mdDev;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -113,6 +113,7 @@ static const char* const sectorOptionsN64[] PROGMEM = { N64SectorItem1, N64Secto
|
||||
|
||||
// N64 start menu
|
||||
void n64Menu() {
|
||||
vselect(true);
|
||||
// create menu with title and 5 options to choose from
|
||||
unsigned char n64Dev;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -233,6 +233,7 @@ static const char* const menuOptionsNESChips[] PROGMEM = { nesChipsMenuItem1, ne
|
||||
|
||||
// NES start menu
|
||||
void nesMenu() {
|
||||
vselect(false);
|
||||
unsigned char answer;
|
||||
|
||||
// create menu with title "NES CART READER" and 7 options to choose from
|
||||
|
@ -51,6 +51,7 @@ void setup_NGP() {
|
||||
}
|
||||
|
||||
void ngpMenu() {
|
||||
vselect(false);
|
||||
uint8_t mainMenu;
|
||||
|
||||
convertPgm(menuOptionsNGP, 3);
|
||||
|
@ -73,6 +73,7 @@ static const char *const menuOptionspceTC[] PROGMEM = { pceTCMenuItem1, string_r
|
||||
|
||||
// PCE start menu
|
||||
void pcsMenu(void) {
|
||||
vselect(false);
|
||||
// create menu with title and 3 options to choose from
|
||||
unsigned char pceDev;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -141,6 +141,7 @@ static const char pcwmenuItem3[] PROGMEM = "Write SRAM";
|
||||
static const char* const menuOptionsPCW[] PROGMEM = { pcwmenuItem1, pcwmenuItem2, pcwmenuItem3, string_reset2 };
|
||||
|
||||
void pcwMenu() {
|
||||
vselect(false);
|
||||
convertPgm(menuOptionsPCW, 4);
|
||||
uint8_t mainMenu = question_box(F(" POCKET CHALLENGE W"), menuOptions, 4, 0);
|
||||
|
||||
|
@ -50,6 +50,7 @@ static const char sfmGameMenuItem4[] PROGMEM = "Switch Game";
|
||||
static const char* const menuOptionsSFMGame[] PROGMEM = { sfmGameMenuItem1, sfmGameMenuItem2, sfmGameMenuItem3, sfmGameMenuItem4, string_reset2 };
|
||||
|
||||
void sfmMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 3 options to choose from
|
||||
unsigned char mainMenu;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -40,6 +40,7 @@ static bool retron_mode = false;
|
||||
|
||||
|
||||
void _smsMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and n options to choose from
|
||||
unsigned char mainMenu;
|
||||
|
||||
|
@ -70,6 +70,7 @@ static const char* const menuOptionsRepro[] PROGMEM = { reproMenuItem1, reproMen
|
||||
|
||||
// SNES repro menu
|
||||
void reproMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 6 options to choose from
|
||||
unsigned char snsRepro;
|
||||
// Copy menuOptions out of progmem
|
||||
@ -132,6 +133,7 @@ void reproMenu() {
|
||||
|
||||
// SNES start menu
|
||||
void snsMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 6 options to choose from
|
||||
unsigned char snsCart;
|
||||
// Copy menuOptions out of progmem
|
||||
@ -190,6 +192,7 @@ void snsMenu() {
|
||||
|
||||
// SNES Menu
|
||||
void snesMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 7 options to choose from
|
||||
unsigned char mainMenu;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -42,6 +42,7 @@ static const char* const menuOptionsSVFlash[] PROGMEM = { svFlashMenuItem1, svFl
|
||||
|
||||
|
||||
void svMenu() {
|
||||
vselect(false);
|
||||
// create menu with title and 3 options to choose from
|
||||
unsigned char mainMenu;
|
||||
// Copy menuOptions out of progmem
|
||||
|
@ -101,6 +101,7 @@ static const char vboyMenuItem3[] PROGMEM = "Write SRAM";
|
||||
static const char* const menuOptionsVBOY[] PROGMEM = { vboyMenuItem1, vboyMenuItem2, vboyMenuItem3, string_reset2 };
|
||||
|
||||
void vboyMenu() {
|
||||
vselect(false);
|
||||
convertPgm(menuOptionsVBOY, 4);
|
||||
uint8_t mainMenu = question_box(F("VIRTUALBOY MENU"), menuOptions, 4, 0);
|
||||
|
||||
|
@ -119,6 +119,7 @@ boolean headerCheck() {
|
||||
}
|
||||
|
||||
void wsMenu() {
|
||||
vselect(false);
|
||||
uint8_t mainMenu = (wsWitch ? 5 : 4);
|
||||
|
||||
convertPgm(menuOptionsWS, mainMenu);
|
||||
|
@ -106,6 +106,7 @@ static const char wsvMenuItem3[] PROGMEM = "Set Size";
|
||||
static const char* const menuOptionsSV[] PROGMEM = { wsvMenuItem1, wsvMenuItem2, wsvMenuItem3, string_reset2 };
|
||||
|
||||
void wsvMenu() {
|
||||
vselect(false);
|
||||
convertPgm(menuOptionsSV, 4);
|
||||
uint8_t mainMenu = question_box(F("SUPERVISION MENU"), menuOptions, 4, 0);
|
||||
|
||||
|
49
hardware/vselect/README.md
Normal file
49
hardware/vselect/README.md
Normal 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.
|
6
hardware/vselect/VSelect-top-pos.csv
Normal file
6
hardware/vselect/VSelect-top-pos.csv
Normal 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
|
|
1583
hardware/vselect/VSelect.kicad_pcb
Normal file
1583
hardware/vselect/VSelect.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
75
hardware/vselect/VSelect.kicad_prl
Normal file
75
hardware/vselect/VSelect.kicad_prl
Normal 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": []
|
||||
}
|
||||
}
|
469
hardware/vselect/VSelect.kicad_pro
Normal file
469
hardware/vselect/VSelect.kicad_pro
Normal 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": {}
|
||||
}
|
1440
hardware/vselect/VSelect.kicad_sch
Normal file
1440
hardware/vselect/VSelect.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
13
hardware/vselect/VSelect_bom.csv
Normal file
13
hardware/vselect/VSelect_bom.csv
Normal 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"
|
|
BIN
hardware/vselect/VSelect_gerber.zip
Normal file
BIN
hardware/vselect/VSelect_gerber.zip
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user