Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c71191c9b | ||
|
|
1cf5d753c3 | ||
|
|
b2d99a5fbc | ||
|
|
6c278a124f | ||
|
|
bc2bda4f30 | ||
|
|
f02d4ad76b | ||
|
|
4bec43341f | ||
|
|
0736420074 | ||
|
|
a7267b5d23 | ||
|
|
f496578c13 |
@@ -5,12 +5,7 @@
|
||||
//#define RESET_FACTORY_DEFAULTS
|
||||
|
||||
// Uncomment any of the lines below to enable debug messages for different parts of the code
|
||||
//#define DEBUG_FUNCTIONS
|
||||
//#define DEBUG_SPEED
|
||||
//#define DEBUG_PWM
|
||||
//#define DEBUG_DCC_ACK
|
||||
//#define DEBUG_DCC_MSG
|
||||
//#define DEBUG_STATE
|
||||
|
||||
#if defined(DEBUG_FUNCTIONS) or defined(DEBUG_SPEED) or defined(DEBUG_PWM) or defined(DEBUG_DCC_ACK) or defined(DEBUG_DCC_MSG) or defined(DEBUG_STATE)
|
||||
#define DEBUG_PRINT
|
||||
@@ -365,17 +360,6 @@ void notifyDccSpeed(uint16_t Addr, DCC_ADDR_TYPE AddrType, uint8_t Speed, DCC_DI
|
||||
* Returns:
|
||||
* None
|
||||
*/
|
||||
#ifdef DEBUG_SPEED
|
||||
Serial.print("notifyDccSpeed: Addr: ");
|
||||
Serial.print(Addr,DEC);
|
||||
Serial.print( (AddrType == DCC_ADDR_SHORT) ? "-S" : "-L" );
|
||||
Serial.print(" Speed: ");
|
||||
Serial.print(Speed,DEC);
|
||||
Serial.print(" Steps: ");
|
||||
Serial.print(SpeedSteps,DEC);
|
||||
Serial.print(" Dir: ");
|
||||
Serial.println( (Dir == DCC_DIR_FWD) ? "Forward" : "Reverse" );
|
||||
#endif
|
||||
newDirection = Dir;
|
||||
newSpeed = Speed;
|
||||
numSpeedSteps = SpeedSteps;
|
||||
@@ -402,14 +386,6 @@ void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint
|
||||
* Returns:
|
||||
* None
|
||||
*/
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print("notifyDccFunc: Addr: ");
|
||||
Serial.print(Addr,DEC);
|
||||
Serial.print( (AddrType == DCC_ADDR_SHORT) ? 'S' : 'L' );
|
||||
Serial.print(" Function Group: ");
|
||||
Serial.print(FuncGrp,DEC);
|
||||
#endif
|
||||
|
||||
switch(FuncGrp){
|
||||
case FN_0_4:
|
||||
bitWrite(newFunctionState, 0, FuncState & FN_BIT_00);
|
||||
@@ -417,30 +393,18 @@ void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint
|
||||
bitWrite(newFunctionState, 2, FuncState & FN_BIT_02);
|
||||
bitWrite(newFunctionState, 3, FuncState & FN_BIT_03);
|
||||
bitWrite(newFunctionState, 4, FuncState & FN_BIT_04);
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print(" FN 0-4: ");
|
||||
Serial.print(newFunctionState & 0x1F);
|
||||
#endif
|
||||
break;
|
||||
case FN_5_8:
|
||||
bitWrite(newFunctionState, 5, FuncState & FN_BIT_05);
|
||||
bitWrite(newFunctionState, 6, FuncState & FN_BIT_06);
|
||||
bitWrite(newFunctionState, 7, FuncState & FN_BIT_07);
|
||||
bitWrite(newFunctionState, 8, FuncState & FN_BIT_08);
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print(" FN 5-8: ");
|
||||
Serial.print((newFunctionState >> 5) & 0xF);
|
||||
#endif
|
||||
break;
|
||||
case FN_9_12:
|
||||
bitWrite(newFunctionState, 9, FuncState & FN_BIT_09);
|
||||
bitWrite(newFunctionState, 10, FuncState & FN_BIT_10);
|
||||
bitWrite(newFunctionState, 11, FuncState & FN_BIT_11);
|
||||
bitWrite(newFunctionState, 12, FuncState & FN_BIT_12);
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print(" FN 9-12: ");
|
||||
Serial.print((newFunctionState >> 9) & 0xF);
|
||||
#endif
|
||||
break;
|
||||
case FN_13_20:
|
||||
bitWrite(newFunctionState, 13, FuncState & FN_BIT_13);
|
||||
@@ -451,10 +415,6 @@ void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint
|
||||
bitWrite(newFunctionState, 18, FuncState & FN_BIT_18);
|
||||
bitWrite(newFunctionState, 19, FuncState & FN_BIT_19);
|
||||
bitWrite(newFunctionState, 20, FuncState & FN_BIT_20);
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print(" FN 13-20: ");
|
||||
Serial.print((newFunctionState >> 13) & 0xFF);
|
||||
#endif
|
||||
break;
|
||||
case FN_21_28:
|
||||
bitWrite(newFunctionState, 21, FuncState & FN_BIT_21);
|
||||
@@ -465,15 +425,8 @@ void notifyDccFunc(uint16_t Addr, DCC_ADDR_TYPE AddrType, FN_GROUP FuncGrp, uint
|
||||
bitWrite(newFunctionState, 26, FuncState & FN_BIT_26);
|
||||
bitWrite(newFunctionState, 27, FuncState & FN_BIT_27);
|
||||
bitWrite(newFunctionState, 28, FuncState & FN_BIT_28);
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.print(" FN 21-28: ");
|
||||
Serial.print((newFunctionState >> 21) & 0xFF);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#ifdef DEBUG_FUNCTIONS
|
||||
Serial.println();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef DEBUG_DCC_MSG
|
||||
@@ -512,16 +465,12 @@ void notifyCVAck(void){
|
||||
* Returns:
|
||||
* None
|
||||
*/
|
||||
static bool ackDir = true;
|
||||
#ifdef DEBUG_DCC_ACK
|
||||
Serial.println("notifyCVAck") ;
|
||||
#endif
|
||||
|
||||
digitalWrite(MOTOR_IN1_PIN, ackDir);
|
||||
digitalWrite(MOTOR_IN2_PIN, !ackDir);
|
||||
static bool ackDir = false;
|
||||
OCR1A = ackDir ? maxOCR : 0;
|
||||
OCR1B = ackDir ? 0 : maxOCR;
|
||||
delay(6);
|
||||
digitalWrite(MOTOR_IN1_PIN, 1);
|
||||
digitalWrite(MOTOR_IN2_PIN, 1);
|
||||
OCR1A = 0;
|
||||
OCR1B = 0;
|
||||
ackDir = !ackDir;
|
||||
}
|
||||
|
||||
@@ -579,7 +528,7 @@ void setup(){
|
||||
unlockNumber = dcc.getCV(CV_UNLOCK_NUMBER);
|
||||
lockingNumber = dcc.getCV(CV_LOCKING_NUMBER);
|
||||
// set up PWM timer
|
||||
maxOCR = 8000 / constrain(pwmFreq, 1, 40); // 1-40 kHz
|
||||
maxOCR = (F_CPU / 2000) / constrain(pwmFreq, 1, 40); // 1-40 kHz
|
||||
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(COM1B1) | _BV(COM1B0); // TIMER1 A and B invert PWM
|
||||
TCCR1B = _BV(WGM13) | _BV(CS10); // TIMER1 prescaler=1, phase and frequency correct mode PWM, TOP=ICR1
|
||||
ICR1 = maxOCR;
|
||||
@@ -633,14 +582,8 @@ void loop(){
|
||||
targetSpeed = actualSpeed = 0;
|
||||
OCR1A = 0;
|
||||
OCR1B = 0;
|
||||
#ifdef DEBUG_PWM
|
||||
Serial.println("Emergency stop");
|
||||
#endif
|
||||
}else if(newSpeed == 1){ // Stop if speed = 1
|
||||
targetSpeed = 0;
|
||||
#ifdef DEBUG_PWM
|
||||
Serial.println("Regular stop");
|
||||
#endif
|
||||
}else{ // Calculate PWM value in the range 1..255
|
||||
uint8_t vScF1; // start to mid
|
||||
uint8_t vScF2; // mid to high
|
||||
|
||||
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 62 KiB |
@@ -0,0 +1,24 @@
|
||||
### Footprint positions - created on 2026-09-29T16:15:05+0200 ###
|
||||
### Printed by KiCad version 9.0.3
|
||||
## Unit = mm, Angle = deg.
|
||||
## Side : bottom
|
||||
# Ref Val Package PosX PosY Rot Side
|
||||
C5 100nF C_0603_1608Metric 59.9186 -111.7093 -90.0000 bottom
|
||||
C6 4.7uF C_0603_1608Metric 58.3946 -111.7091 90.0000 bottom
|
||||
C7 4.7uF C_0603_1608Metric 57.3786 -105.6639 -90.0000 bottom
|
||||
D1 D_Bridge_+-AA TO-269AA 65.3304 -114.0206 0.0000 bottom
|
||||
D2 MM3Z4V7ST1G D_SOD-323 56.7182 -114.8842 90.0000 bottom
|
||||
D3 NSR0530HT1G D_SOD-323 62.6110 -107.1118 0.0000 bottom
|
||||
D4 NSR0530HT1G D_SOD-323 62.6110 -105.1306 0.0000 bottom
|
||||
R2 27k R_0603_1608Metric 59.9441 -114.0714 0.0000 bottom
|
||||
R3 27k R_0603_1608Metric 59.1819 -109.4486 0.0000 bottom
|
||||
R4 27k R_0603_1608Metric 59.1566 -107.9246 0.0000 bottom
|
||||
R5 4.7k R_0603_1608Metric 56.8706 -111.7091 -90.0000 bottom
|
||||
R6 4.7k R_0603_1608Metric 58.9534 -105.6641 90.0000 bottom
|
||||
R11 1k R_0603_1608Metric 63.4238 -109.8295 -90.0000 bottom
|
||||
T1 2N7002DWCT SOT-363_SC-70-6 57.2770 -117.9830 180.0000 bottom
|
||||
T2 2N7002DWCT SOT-363_SC-70-6 51.6890 -116.0526 -90.0000 bottom
|
||||
T3 2N7002DWCT SOT-363_SC-70-6 51.6890 -112.5982 -90.0000 bottom
|
||||
T4 2N7002DWCT SOT-363_SC-70-6 51.6786 -105.7402 -90.0000 bottom
|
||||
T5 2N7002DWCT SOT-363_SC-70-6 51.6786 -109.1438 -90.0000 bottom
|
||||
## End
|
||||
@@ -0,0 +1,25 @@
|
||||
### Footprint positions - created on 2026-09-29T16:15:05+0200 ###
|
||||
### Printed by KiCad version 9.0.3
|
||||
## Unit = mm, Angle = deg.
|
||||
## Side : top
|
||||
# Ref Val Package PosX PosY Rot Side
|
||||
C1 100nF C_0603_1608Metric 51.2318 -106.4514 0.0000 top
|
||||
C2 100nF C_0603_1608Metric 55.0925 -106.4260 180.0000 top
|
||||
C3 470pF C_0603_1608Metric 65.1002 -114.2491 -90.0000 top
|
||||
C4 2.2uF C_0805_2012Metric 67.8330 -118.9355 0.0000 top
|
||||
C8 10pF C_0603_1608Metric 59.7915 -119.1260 0.0000 top
|
||||
C9 10pF C_0603_1608Metric 63.5762 -114.2493 -90.0000 top
|
||||
C10 100nF C_0603_1608Metric 68.0721 -113.5126 0.0000 top
|
||||
D5 Ye_LED LED_0603_1608Metric 57.4040 -105.6895 -90.0000 top
|
||||
D6 Gr_LED LED_0603_1608Metric 65.2780 -105.6895 90.0000 top
|
||||
D7 Rd_LED LED_0603_1608Metric 62.0522 -114.2493 90.0000 top
|
||||
D8 Bl_LED LED_0603_1608Metric 52.1717 -118.8466 180.0000 top
|
||||
IC1 MIC5205-5.0YM5-TR SOT-23-5 67.7750 -116.1034 180.0000 top
|
||||
IC2 ATMEGA328P-AUR TQFP-32_7x7mm_P0.8mm 56.0000 -112.5410 90.0000 top
|
||||
IC3 DRV8872DDAR Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias 66.2480 -109.9820 0.0000 top
|
||||
R1 4.7k R_0603_1608Metric 48.7426 -109.6518 -90.0000 top
|
||||
R7 1k R_0603_1608Metric 55.3211 -118.8466 180.0000 top
|
||||
R9 1k R_0603_1608Metric 55.0925 -104.9020 0.0000 top
|
||||
R10 1k R_0603_1608Metric 66.9290 -105.6895 90.0000 top
|
||||
X1 16M Crystal_SMD_2520-2Pin_2.5x2.0mm_HandSoldering 62.8015 -117.8400 -90.0000 top
|
||||
## End
|
||||
@@ -0,0 +1,21 @@
|
||||
"Id";"Designator";"Footprint";"Quantity";"Designation";"Supplier and ref";
|
||||
1;"C1,C2,C10,C5";"C_0603_1608Metric";4;"100nF";;;
|
||||
2;"C3";"C_0603_1608Metric";1;"470pF";;;
|
||||
3;"C4";"C_0805_2012Metric";1;"2.2uF";;;
|
||||
4;"D7";"LED_0603_1608Metric";1;"Rd_LED";;;
|
||||
5;"IC3";"Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias";1;"DRV8872DDAR";;;
|
||||
6;"R1,R5,R6";"R_0603_1608Metric";3;"4.7k";;;
|
||||
7;"R10,R7,R9,R11";"R_0603_1608Metric";4;"1k";;;
|
||||
8;"C8,C9";"C_0603_1608Metric";2;"10pF";;;
|
||||
9;"D5";"LED_0603_1608Metric";1;"Ye_LED";;;
|
||||
10;"D6";"LED_0603_1608Metric";1;"Gr_LED";;;
|
||||
11;"IC1";"SOT-23-5";1;"MIC5205-5.0YM5-TR";;;
|
||||
12;"IC2";"TQFP-32_7x7mm_P0.8mm";1;"ATMEGA328P-AUR";;;
|
||||
13;"D8";"LED_0603_1608Metric";1;"Bl_LED";;;
|
||||
14;"X1";"Crystal_SMD_2520-2Pin_2.5x2.0mm_HandSoldering";1;"16M";;;
|
||||
15;"C6,C7";"C_0603_1608Metric";2;"4.7uF";;;
|
||||
16;"D3,D4";"D_SOD-323";2;"NSR0530HT1G";;;
|
||||
17;"R2,R3,R4";"R_0603_1608Metric";3;"27k";;;
|
||||
18;"T1,T2,T5,T3,T4";"SOT-363_SC-70-6";5;"2N7002DWCT";;;
|
||||
19;"D2";"D_SOD-323";1;"MM3Z4V7ST1G";;;
|
||||
20;"D1";"TO-269AA";1;"D_Bridge_+-AA";;;
|
||||
|
@@ -0,0 +1,12 @@
|
||||
M48
|
||||
; DRILL file {KiCad 9.0.3} date 2026-09-29T16:14:39+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2026-09-29T16:14:39+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.3
|
||||
; #@! TF.FileFunction,NonPlated,1,4,NPTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
%
|
||||
G90
|
||||
G05
|
||||
M30
|
||||
@@ -0,0 +1,54 @@
|
||||
M48
|
||||
; DRILL file {KiCad 9.0.3} date 2026-09-29T16:14:39+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2026-09-29T16:14:39+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.3
|
||||
; #@! TF.FileFunction,Plated,1,4,PTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T1C0.330
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T2C0.400
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X65.598Y-108.682
|
||||
X65.598Y-109.982
|
||||
X65.598Y-111.282
|
||||
X66.898Y-108.682
|
||||
X66.898Y-109.982
|
||||
X66.898Y-111.282
|
||||
T2
|
||||
X49.513Y-118.889
|
||||
X49.802Y-112.962
|
||||
X50.317Y-111.125
|
||||
X50.47Y-107.671
|
||||
X50.529Y-109.039
|
||||
X52.33Y-109.169
|
||||
X52.857Y-105.632
|
||||
X52.95Y-107.442
|
||||
X53.123Y-115.795
|
||||
X53.15Y-109.906
|
||||
X53.15Y-112.678
|
||||
X53.315Y-111.213
|
||||
X53.823Y-105.943
|
||||
X54.656Y-109.554
|
||||
X54.686Y-113.309
|
||||
X55.448Y-110.588
|
||||
X55.804Y-114.478
|
||||
X56.159Y-109.753
|
||||
X56.718Y-114.941
|
||||
X57.226Y-109.703
|
||||
X57.3Y-118.589
|
||||
X57.785Y-114.071
|
||||
X58.85Y-115.391
|
||||
X60.173Y-116.066
|
||||
X60.274Y-104.877
|
||||
X65.059Y-116.113
|
||||
X66.218Y-113.309
|
||||
X69.123Y-110.617
|
||||
X69.59Y-117.053
|
||||
X69.672Y-106.959
|
||||
M30
|
||||
@@ -0,0 +1,21 @@
|
||||
"Id";"Designator";"Footprint";"Quantity";"Designation";"Supplier and ref";
|
||||
1;"C1,C2,C10,C5";"C_0603_1608Metric";4;"100nF";;;
|
||||
2;"C3";"C_0603_1608Metric";1;"470pF";;;
|
||||
3;"C4";"C_0805_2012Metric";1;"2.2uF";;;
|
||||
4;"D7";"LED_0603_1608Metric";1;"Rd_LED";;;
|
||||
5;"IC3";"Texas_HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.95x4.9mm_Mask2.4x3.1mm_ThermalVias";1;"DRV8872DDAR";;;
|
||||
6;"R1,R5,R6";"R_0603_1608Metric";3;"4.7k";;;
|
||||
7;"R10,R7,R9,R11";"R_0603_1608Metric";4;"1k";;;
|
||||
8;"C8,C9";"C_0603_1608Metric";2;"10pF";;;
|
||||
9;"D5";"LED_0603_1608Metric";1;"Ye_LED";;;
|
||||
10;"D6";"LED_0603_1608Metric";1;"Gr_LED";;;
|
||||
11;"IC1";"SOT-23-5";1;"MIC5205-5.0YM5-TR";;;
|
||||
12;"IC2";"TQFP-32_7x7mm_P0.8mm";1;"ATMEGA328P-AUR";;;
|
||||
13;"D8";"LED_0603_1608Metric";1;"Bl_LED";;;
|
||||
14;"X1";"Crystal_SMD_2520-2Pin_2.5x2.0mm_HandSoldering";1;"16M";;;
|
||||
15;"C6,C7";"C_0603_1608Metric";2;"4.7uF";;;
|
||||
16;"D3,D4";"D_SOD-323";2;"NSR0530HT1G";;;
|
||||
17;"R2,R3,R4";"R_0603_1608Metric";3;"27k";;;
|
||||
18;"T1,T2,T5,T3,T4";"SOT-363_SC-70-6";5;"2N7002DWCT";;;
|
||||
19;"D2";"D_SOD-323";1;"MM3Z4V7ST1G";;;
|
||||
20;"D1";"TO-269AA";1;"D_Bridge_+-AA";;;
|
||||
|
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 1,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"grid",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes"
|
||||
],
|
||||
"visible_layers": "00000000_00000000_0000000a_aaaaaaff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Lokdecoder_TI_altQuartz.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11
|
||||
],
|
||||
"col_widths": [
|
||||
162,
|
||||
147,
|
||||
91,
|
||||
67,
|
||||
91,
|
||||
91,
|
||||
91,
|
||||
71,
|
||||
91,
|
||||
91,
|
||||
91,
|
||||
91
|
||||
],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": 0
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,844 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"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.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": true,
|
||||
"text_position": 0,
|
||||
"units_format": 0
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"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.1,
|
||||
"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.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.12,
|
||||
"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": {
|
||||
"min_clearance": 0.254
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"filename": "board_design_settings.json",
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "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": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"mirrored_text_on_front_layer": "warning",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"nonmirrored_text_on_back_layer": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_on_edge_cuts": "error",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.025,
|
||||
"min_groove_width": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.45,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.2,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.45,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onvia": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [
|
||||
0.0,
|
||||
0.3,
|
||||
0.5,
|
||||
1.0
|
||||
],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [
|
||||
{
|
||||
"diameter": 0.0,
|
||||
"drill": 0.0
|
||||
},
|
||||
{
|
||||
"diameter": 0.3,
|
||||
"drill": 0.2
|
||||
}
|
||||
],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"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_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Lokdecoder_TI_altQuartz.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.45,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.25,
|
||||
"via_diameter": 0.8,
|
||||
"via_drill": 0.4,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": [
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "+5V"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A0"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A3"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A4"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A5"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A6"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/A7"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX1_TTL"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX2_TTL"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX3"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX4"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX5"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX6"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX7"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/AUX8"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D0"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D10"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D12"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D13"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D4"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D5"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D6"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D7"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D8"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/D9"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/DCC1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/DCC2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/DTR"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/F0f"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/F0r"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/MOT1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/MOT2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/RESET"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "GND"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(C2-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(C3-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(C8-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(C9-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D3-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D4-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D5-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D6-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D7-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(D8-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "VCC"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "JLPCB/gerbers/",
|
||||
"pos_files": "JLPCB/",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from BOM",
|
||||
"name": "${EXCLUDE_FROM_BOM}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from Board",
|
||||
"name": "${EXCLUDE_FROM_BOARD}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": true,
|
||||
"name": "Default Editing",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.25,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 0.0,
|
||||
"text_offset_ratio": 0.08
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"space_save_all_events": true,
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"2f7e9111-b907-47ad-8ba9-e986630c4265",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
M48
|
||||
; DRILL file {KiCad (5.1.6)-1} date 01/08/21 10:09:46
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-01-08T10:09:46+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.6)-1
|
||||
; DRILL file {KiCad 9.0.3} date 2026-09-29T16:13:55+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2026-09-29T16:13:55+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.3
|
||||
; #@! TF.FileFunction,NonPlated,1,4,NPTH
|
||||
FMAT,2
|
||||
INCH
|
||||
METRIC
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T0
|
||||
M30
|
||||
|
||||
@@ -1,53 +1,54 @@
|
||||
M48
|
||||
; DRILL file {KiCad (5.1.6)-1} date 01/08/21 10:09:46
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-01-08T10:09:46+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.6)-1
|
||||
; DRILL file {KiCad 9.0.3} date 2026-09-29T16:13:55+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2026-09-29T16:13:55+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,9.0.3
|
||||
; #@! TF.FileFunction,Plated,1,4,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
T1C0.0130
|
||||
T2C0.0157
|
||||
METRIC
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T1C0.330
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T2C0.400
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X2.5826Y-4.2788
|
||||
X2.5826Y-4.33
|
||||
X2.5826Y-4.3812
|
||||
X2.6338Y-4.2788
|
||||
X2.6338Y-4.33
|
||||
X2.6338Y-4.3812
|
||||
X65.598Y-108.682
|
||||
X65.598Y-109.982
|
||||
X65.598Y-111.282
|
||||
X66.898Y-108.682
|
||||
X66.898Y-109.982
|
||||
X66.898Y-111.282
|
||||
T2
|
||||
X1.9493Y-4.6807
|
||||
X1.9607Y-4.4473
|
||||
X1.981Y-4.375
|
||||
X1.987Y-4.239
|
||||
X1.9893Y-4.2929
|
||||
X2.0602Y-4.298
|
||||
X2.081Y-4.1588
|
||||
X2.0847Y-4.23
|
||||
X2.0914Y-4.5589
|
||||
X2.0925Y-4.327
|
||||
X2.0925Y-4.4361
|
||||
X2.099Y-4.3785
|
||||
X2.119Y-4.171
|
||||
X2.1518Y-4.3132
|
||||
X2.153Y-4.461
|
||||
X2.183Y-4.3539
|
||||
X2.197Y-4.507
|
||||
X2.211Y-4.321
|
||||
X2.233Y-4.5252
|
||||
X2.253Y-4.319
|
||||
X2.2559Y-4.6688
|
||||
X2.275Y-4.491
|
||||
X2.3169Y-4.543
|
||||
X2.369Y-4.5695
|
||||
X2.373Y-4.129
|
||||
X2.5614Y-4.5714
|
||||
X2.607Y-4.461
|
||||
X2.7214Y-4.355
|
||||
X2.7398Y-4.6084
|
||||
X2.743Y-4.211
|
||||
T0
|
||||
X49.513Y-118.889
|
||||
X49.802Y-112.962
|
||||
X50.317Y-111.125
|
||||
X50.47Y-107.671
|
||||
X50.529Y-109.039
|
||||
X52.33Y-109.169
|
||||
X52.857Y-105.632
|
||||
X52.95Y-107.442
|
||||
X53.123Y-115.795
|
||||
X53.15Y-109.906
|
||||
X53.15Y-112.678
|
||||
X53.315Y-111.213
|
||||
X53.823Y-105.943
|
||||
X54.656Y-109.554
|
||||
X54.686Y-113.309
|
||||
X55.448Y-110.588
|
||||
X55.804Y-114.478
|
||||
X56.159Y-109.753
|
||||
X56.718Y-114.941
|
||||
X57.226Y-109.703
|
||||
X57.3Y-118.589
|
||||
X57.785Y-114.071
|
||||
X58.85Y-115.391
|
||||
X60.173Y-116.066
|
||||
X60.274Y-104.877
|
||||
X65.059Y-116.113
|
||||
X66.218Y-113.309
|
||||
X69.123Y-110.617
|
||||
X69.59Y-117.053
|
||||
X69.672Y-106.959
|
||||
M30
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
||||
@@ -25,10 +25,49 @@ DCC multifunction decoder for H0 locomotives
|
||||
|
||||
## Firmware
|
||||
- Arduino compatible programming (behaves like an UNO)
|
||||
- DCC decoding by [NMRADCC](https://github.com/mrrwa/NmraDcc) library
|
||||
- DCC decoding by [NmraDcc](https://github.com/mrrwa/NmraDcc) library
|
||||
|
||||
## JMRI integration
|
||||
|
||||
|  |  |  |  |  |  |
|
||||
| :---: | :---: | :---: | :---: | :---: | :---: |
|
||||
| Basic | Motor | Basic speed control | Speed table | Function map | Advanced |
|
||||
|
||||
## Install guide
|
||||
|
||||
1. Get the PCB (e.g. [JLCPCB](https://jlcpcb.com/)) and the components (e.g. [mouser](https://www.mouser.at/), [digikey](https://www.digikey.at/))
|
||||
2. Solder the components. The SOIC with exposed pad is a bit tricky, it can be soldered from the other side with a big tip and a lot of flux.
|
||||
3. Install the Arduino bootloader using the pads 5V, GND, SCK, MISO, MOSI, RST and an Arduino. [Arduino as ISP](https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP)
|
||||
4. Uncomment the line `#define RESET_FACTORY_DEFAULTS` to fill the EEPROM with the default CV values
|
||||
5. Upload the code using the pads 5V, GND, RX, TX, DTR and a USB TTL UART cable [like this](https://www.mouser.at/ProductDetail/FTDI/TTL-232R-5V-WE/?qs=OMDV80DKjRpCUAS6UR9QpQ%3D%3D)
|
||||
6. Re-comment the line `#define RESET_FACTORY_DEFAULTS` to avoid resetting to factory defaults every time.
|
||||
7. Upload the code again.
|
||||
8. Add the decoder XML file to JMRI. In DecoderPro select "File-> Import Decoder File..." and browse to the decoder [XML](JMRI_decoder_file/Public_Domain_GTI_green.xml). It will take some time, then adds the decoder definition to the database.
|
||||
9. Connect the T1 and T2 pads to the programming track of your DCC system.
|
||||
10. Add new locomotive with the "New Loco" button and then "Read type from decoder". It should detect the correct type:
|
||||

|
||||
11. If everything is fine, you can install the decoder into your locomotive!
|
||||
### Pinout
|
||||
| Pad | Function |
|
||||
| :-- | :-- |
|
||||
| M1 | Motor 1 |
|
||||
| M2 | Motor 2 |
|
||||
| T1 | Track 1 |
|
||||
| T2 | Track 2 |
|
||||
| V+ | Positive common for function outputs (keep-alive capacitor positive) |
|
||||
| F0f | F0 function output forward (open drain) |
|
||||
| F0r | F0 function output reverse (open drain) |
|
||||
| 1-8 | AUX function output n (open drain) |
|
||||
| 5V | internal microcontroller +5V supply |
|
||||
| GND | ground (keep alive capacitor negative) |
|
||||
| SCK | ISP programming clock (connect to ISP SCK) |
|
||||
| MISO | ISP programming read (connect to ISP MISO) |
|
||||
| MOSI | ISP programming write (connect to ISP MOSI) |
|
||||
| RST | ISP programming reset (connect to ISP reset output)
|
||||
| RX | serial programming receive (connect to TTL UART TX) |
|
||||
| TX | serial programming transmit (connect to TTL UART RX) |
|
||||
| DTR | serial programming reset through a 100 nF capacitor (connect to TTL UART DTR) |
|
||||
|
||||
## Todo list
|
||||
- [ ] CV15, CV16 decoder locking
|
||||
- [ ] CV65 kick start
|
||||
|
||||