Compare commits
36 commits
Author | SHA1 | Date | |
---|---|---|---|
d81eb5ca4c | |||
6b2e074d46 | |||
bdce0530e2 | |||
8249bfb79f | |||
14134f1e32 | |||
70b0b0f1a8 | |||
111758b4ae | |||
0bbe791430 | |||
852d11bf7b | |||
4e48df4017 | |||
3541a04777 | |||
18032c7f1a | |||
bc42c530f0 | |||
eb24fe3d23 | |||
629a8940e7 | |||
bd74d4bbe0 | |||
5c840fc5c2 | |||
0badd25d6e | |||
435cb714e1 | |||
25fb036215 | |||
bb63a0780b | |||
a505fb471d | |||
cf583e8117 | |||
cf4e949089 | |||
792733527d | |||
38d9a4374b | |||
d2b73982ac | |||
c2d28b5b39 | |||
2e337e85e7 | |||
7436739acb | |||
5eccedef46 | |||
393b1df8cf | |||
63ebefe686 | |||
76c1562245 | |||
e1e71ef353 | |||
33e4deb0f1 |
48 changed files with 92337 additions and 4099 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -7,3 +7,5 @@
|
|||
.piolibdeps
|
||||
.clang_complete
|
||||
.gcc-flags.json
|
||||
messung/*
|
||||
include/wifi_settings.h
|
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
@ -1,3 +1,6 @@
|
|||
{
|
||||
"cmake.configureOnOpen": false
|
||||
"cmake.configureOnOpen": false,
|
||||
"files.associations": {
|
||||
"vl53l1x.h": "c"
|
||||
}
|
||||
}
|
16
README.md
16
README.md
|
@ -1,8 +1,8 @@
|
|||
# ESP32 for reading Hydroponic sensors
|
||||
|
||||
- EC: https://git.ctdo.de/interfisch/conductivity-sensor
|
||||
- Temperature: DS18B20
|
||||
- Waterlevel: Ultrasonic HC-SR04
|
||||
- Flow
|
||||
- etc.
|
||||
|
||||
# ESP32 for reading Hydroponic sensors
|
||||
|
||||
- EC
|
||||
- Temperature
|
||||
- Waterlevel
|
||||
- Flow
|
||||
- etc.
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 205 KiB |
Binary file not shown.
|
@ -0,0 +1,39 @@
|
|||
"Reference","Value","Footprint","Qty","Description"
|
||||
"C1,C2","2.2uF","Capacitor_THT:CP_Radial_Tantal_D4.5mm_P2.50mm","2",""
|
||||
"C3","100uF","Capacitor_THT:CP_Radial_D10.0mm_P5.00mm","1",""
|
||||
"C4,C5","100nF","Capacitor_THT:C_Disc_D3.4mm_W2.1mm_P2.50mm","2",""
|
||||
"C6","220uF","Capacitor_THT:CP_Radial_D8.0mm_P2.50mm","1",""
|
||||
"C7","100uF","Capacitor_THT:CP_Radial_D8.0mm_P3.80mm","1",""
|
||||
"C8,C9","1u","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","2","Unpolarized capacitor from ADS1115 PCB"
|
||||
"D1,D2,D3","1N4148","Diode_THT:D_DO-35_SOD27_P12.70mm_Horizontal","3",""
|
||||
"D4","LED Relay","LED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder","1",""
|
||||
"F1","Polyfuse","Fuse:Fuse_1812_4532Metric_Pad1.30x3.40mm_HandSolder","1",""
|
||||
"FB1,FB2","FerriteBead","Inductor_SMD:L_0805_2012Metric_Pad1.15x1.40mm_HandSolder","2","Ferrite bead from ADS1115 PCB"
|
||||
"J1","probe","TerminalBlock:TerminalBlock_bornier-2_P5.08mm","1",""
|
||||
"J3","Waterlevel","TerminalBlock:TerminalBlock_bornier-4_P5.08mm","1",""
|
||||
"J6","Vin","TerminalBlock:TerminalBlock_bornier-2_P5.08mm","1",""
|
||||
"J7","Temperature","TerminalBlock:TerminalBlock_bornier-3_P5.08mm","1",""
|
||||
"J8","Display","Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical","1",""
|
||||
"J9","Flow","TerminalBlock:TerminalBlock_bornier-3_P5.08mm","1",""
|
||||
"J10","SW_Push","Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical","1",""
|
||||
"J11","Analog In","TerminalBlock:TerminalBlock_bornier-5_P5.08mm","1",""
|
||||
"K1","Zettler AZ822-2C5DSE","Relay_THT:Relay_DPDT_Omron_G5V-2","1",""
|
||||
"Q1","BC547","Package_TO_SOT_THT:TO-92_HandSolder","1",""
|
||||
"R1,R2,R27,R28,R29","10k","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","5",""
|
||||
"R3,R10,R11,R12,R14,R15,R17","1k","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","7",""
|
||||
"R4,R5,Rcal1","1k2","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal","3",""
|
||||
"R6,R7","NC","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal","2",""
|
||||
"R8,R9","1M","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","2",""
|
||||
"R18","4k7","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","1",""
|
||||
"R19","820","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","1",""
|
||||
"R20","270","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","1",""
|
||||
"R21","10R","Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal","1",""
|
||||
"R22,R23,R24,R25","10k","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","4","Resistor from ADS1115 PCB"
|
||||
"R26","220","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","1",""
|
||||
"SW1","SW_Push","Button_Switch_SMD:SW_SPST_B3SL-1002P","1",""
|
||||
"U1,U2","MCP604","Package_SO:SOIC-14_3.9x8.7mm_P1.27mm","2",""
|
||||
"U3","ESP32-S3-DevKitC","PCM_Espressif:ESP32-S3-DevKitC","1","ESP32-S3-DevKitC-1 (N16R8)"
|
||||
"U4","LM317_TO-220","Package_TO_SOT_THT:TO-220-3_Vertical","1",""
|
||||
"U5","L78L33_TO92","Package_TO_SOT_THT:TO-92_Inline","1",""
|
||||
"U6","DS18B20","Package_TO_SOT_THT:TO-92_Inline","1","Programmable Resolution 1-Wire Digital Thermometer TO-92"
|
||||
"U7","ADS1115IDGS","Package_SO:TSSOP-10_3x3mm_P0.5mm","1","ADS1115 from ADS1115 PCB"
|
|
1
hydrocontroller_schematic/README.md
Normal file
1
hydrocontroller_schematic/README.md
Normal file
|
@ -0,0 +1 @@
|
|||
For ESP32-S3-DevKitM-1 footprint install espressif library zip file via kicad plugin and content manager from here https://github.com/espressif/kicad-libraries
|
8429
hydrocontroller_schematic/conductivity_sensor.kicad_sch
Normal file
8429
hydrocontroller_schematic/conductivity_sensor.kicad_sch
Normal file
File diff suppressed because it is too large
Load diff
BIN
hydrocontroller_schematic/gerbers/20240713_hydrocontroller.zip
Normal file
BIN
hydrocontroller_schematic/gerbers/20240713_hydrocontroller.zip
Normal file
Binary file not shown.
BIN
hydrocontroller_schematic/gerbers/20240820_hydrocontroller.zip
Normal file
BIN
hydrocontroller_schematic/gerbers/20240820_hydrocontroller.zip
Normal file
Binary file not shown.
10928
hydrocontroller_schematic/gerbers/hydrocontroller_schematic-B_Cu.gbl
Normal file
10928
hydrocontroller_schematic/gerbers/hydrocontroller_schematic-B_Cu.gbl
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,278 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
%AMFreePoly0*
|
||||
4,1,19,0.550000,-0.750000,0.000000,-0.750000,0.000000,-0.744911,-0.071157,-0.744911,-0.207708,-0.704816,-0.327430,-0.627875,-0.420627,-0.520320,-0.479746,-0.390866,-0.500000,-0.250000,-0.500000,0.250000,-0.479746,0.390866,-0.420627,0.520320,-0.327430,0.627875,-0.207708,0.704816,-0.071157,0.744911,0.000000,0.744911,0.000000,0.750000,0.550000,0.750000,0.550000,-0.750000,0.550000,-0.750000,
|
||||
$1*%
|
||||
%AMFreePoly1*
|
||||
4,1,19,0.000000,0.744911,0.071157,0.744911,0.207708,0.704816,0.327430,0.627875,0.420627,0.520320,0.479746,0.390866,0.500000,0.250000,0.500000,-0.250000,0.479746,-0.390866,0.420627,-0.520320,0.327430,-0.627875,0.207708,-0.704816,0.071157,-0.744911,0.000000,-0.744911,0.000000,-0.750000,-0.550000,-0.750000,-0.550000,0.750000,0.000000,0.750000,0.000000,0.744911,0.000000,0.744911,
|
||||
$1*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10C,1.600000*%
|
||||
%ADD11R,1.700000X1.700000*%
|
||||
%ADD12O,1.700000X1.700000*%
|
||||
%ADD13R,1.400000X1.400000*%
|
||||
%ADD14C,1.400000*%
|
||||
%ADD15O,1.600000X1.600000*%
|
||||
%ADD16R,3.000000X3.000000*%
|
||||
%ADD17C,3.000000*%
|
||||
%ADD18R,1.600000X1.600000*%
|
||||
%ADD19C,3.200000*%
|
||||
%ADD20R,2.000000X2.000000*%
|
||||
%ADD21C,2.000000*%
|
||||
%ADD22R,2.000000X1.905000*%
|
||||
%ADD23O,2.000000X1.905000*%
|
||||
%ADD24R,1.100000X1.800000*%
|
||||
%ADD25RoundRect,0.275000X-0.275000X-0.625000X0.275000X-0.625000X0.275000X0.625000X-0.275000X0.625000X0*%
|
||||
%ADD26R,1.500000X1.050000*%
|
||||
%ADD27O,1.500000X1.050000*%
|
||||
%ADD28R,2.000000X1.200000*%
|
||||
%ADD29O,2.000000X1.200000*%
|
||||
%ADD30R,1.050000X1.500000*%
|
||||
%ADD31O,1.050000X1.500000*%
|
||||
%ADD32FreePoly0,270.000000*%
|
||||
%ADD33R,1.500000X1.000000*%
|
||||
%ADD34FreePoly1,270.000000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X78105000Y-66363674D03*
|
||||
X78105000Y-63863674D03*
|
||||
D11*
|
||||
X117475000Y-66403674D03*
|
||||
D12*
|
||||
X117475000Y-63863674D03*
|
||||
X117475000Y-61323674D03*
|
||||
X117475000Y-58783674D03*
|
||||
D13*
|
||||
X69215000Y-74978674D03*
|
||||
D14*
|
||||
X69215000Y-67358674D03*
|
||||
X69215000Y-62278674D03*
|
||||
X69215000Y-57198674D03*
|
||||
X61595000Y-57198674D03*
|
||||
X61595000Y-62278674D03*
|
||||
X61595000Y-67358674D03*
|
||||
X61595000Y-74978674D03*
|
||||
D10*
|
||||
X67310000Y-80373674D03*
|
||||
D15*
|
||||
X67310000Y-90533674D03*
|
||||
D16*
|
||||
X86026000Y-38735000D03*
|
||||
D17*
|
||||
X80946000Y-38735000D03*
|
||||
D18*
|
||||
X83185000Y-96883674D03*
|
||||
D10*
|
||||
X85685000Y-96883674D03*
|
||||
X88265000Y-78468674D03*
|
||||
X90765000Y-78468674D03*
|
||||
D19*
|
||||
X60960000Y-119380000D03*
|
||||
D16*
|
||||
X86995000Y-114663674D03*
|
||||
D17*
|
||||
X92075000Y-114663674D03*
|
||||
X97155000Y-114663674D03*
|
||||
X102235000Y-114663674D03*
|
||||
D10*
|
||||
X70485000Y-52118674D03*
|
||||
D15*
|
||||
X60325000Y-52118674D03*
|
||||
D16*
|
||||
X74295000Y-114663674D03*
|
||||
D17*
|
||||
X79375000Y-114663674D03*
|
||||
D16*
|
||||
X132715000Y-114663674D03*
|
||||
D17*
|
||||
X137795000Y-114663674D03*
|
||||
X142875000Y-114663674D03*
|
||||
D18*
|
||||
X83185000Y-60053674D03*
|
||||
D10*
|
||||
X80685000Y-60053674D03*
|
||||
D18*
|
||||
X83185000Y-72753674D03*
|
||||
D10*
|
||||
X80685000Y-72753674D03*
|
||||
D20*
|
||||
X104775000Y-52433674D03*
|
||||
D21*
|
||||
X104775000Y-57433674D03*
|
||||
D19*
|
||||
X158960000Y-119380000D03*
|
||||
D18*
|
||||
X81915000Y-77833674D03*
|
||||
D15*
|
||||
X81915000Y-90533674D03*
|
||||
D10*
|
||||
X70485000Y-80373674D03*
|
||||
D15*
|
||||
X70485000Y-90533674D03*
|
||||
D18*
|
||||
X95885000Y-52433674D03*
|
||||
D15*
|
||||
X83185000Y-52433674D03*
|
||||
D22*
|
||||
X74295000Y-104503674D03*
|
||||
D23*
|
||||
X74295000Y-101963674D03*
|
||||
X74295000Y-99423674D03*
|
||||
D18*
|
||||
X95250000Y-106306325D03*
|
||||
D10*
|
||||
X95250000Y-102506325D03*
|
||||
D24*
|
||||
X74930000Y-58868674D03*
|
||||
D25*
|
||||
X76200000Y-56798674D03*
|
||||
X77470000Y-58868674D03*
|
||||
D18*
|
||||
X100965000Y-77833674D03*
|
||||
D15*
|
||||
X100965000Y-90533674D03*
|
||||
D16*
|
||||
X112395000Y-114663674D03*
|
||||
D17*
|
||||
X117475000Y-114663674D03*
|
||||
X122555000Y-114663674D03*
|
||||
D10*
|
||||
X73660000Y-80373674D03*
|
||||
D15*
|
||||
X73660000Y-90533674D03*
|
||||
D19*
|
||||
X158960000Y-35980000D03*
|
||||
D11*
|
||||
X158115000Y-64818674D03*
|
||||
D12*
|
||||
X160655000Y-64818674D03*
|
||||
D16*
|
||||
X116125000Y-38862000D03*
|
||||
D17*
|
||||
X111045000Y-38862000D03*
|
||||
X105965000Y-38862000D03*
|
||||
X100885000Y-38862000D03*
|
||||
X95805000Y-38862000D03*
|
||||
D10*
|
||||
X73025000Y-75613674D03*
|
||||
D15*
|
||||
X73025000Y-65453674D03*
|
||||
D26*
|
||||
X86995000Y-106408674D03*
|
||||
D27*
|
||||
X86995000Y-105138674D03*
|
||||
X86995000Y-103868674D03*
|
||||
D10*
|
||||
X76835000Y-80373674D03*
|
||||
D15*
|
||||
X76835000Y-90533674D03*
|
||||
D19*
|
||||
X60960000Y-35980000D03*
|
||||
D28*
|
||||
X151765000Y-99423674D03*
|
||||
X149265000Y-99423674D03*
|
||||
D29*
|
||||
X151765000Y-96883674D03*
|
||||
X149265000Y-96883674D03*
|
||||
X151765000Y-94343674D03*
|
||||
X149265000Y-94343674D03*
|
||||
X151765000Y-91803674D03*
|
||||
X149265000Y-91803674D03*
|
||||
X151765000Y-89263674D03*
|
||||
X149265000Y-89263674D03*
|
||||
X151765000Y-86723674D03*
|
||||
X149265000Y-86723674D03*
|
||||
X151765000Y-84183674D03*
|
||||
X149265000Y-84183674D03*
|
||||
X151765000Y-81643674D03*
|
||||
X149265000Y-81643674D03*
|
||||
X151765000Y-79103674D03*
|
||||
X149265000Y-79103674D03*
|
||||
X151765000Y-76563674D03*
|
||||
X149265000Y-76563674D03*
|
||||
X151765000Y-74023674D03*
|
||||
X149265000Y-74023674D03*
|
||||
X151765000Y-71483674D03*
|
||||
X149265000Y-71483674D03*
|
||||
X151765000Y-68943674D03*
|
||||
X149265000Y-68943674D03*
|
||||
X151765000Y-66403674D03*
|
||||
X149265000Y-66403674D03*
|
||||
X151765000Y-63863674D03*
|
||||
X149265000Y-63863674D03*
|
||||
X151765000Y-61323674D03*
|
||||
X149265000Y-61323674D03*
|
||||
X151765000Y-58783674D03*
|
||||
X149265000Y-58783674D03*
|
||||
X151765000Y-56243674D03*
|
||||
X149265000Y-56243674D03*
|
||||
X151765000Y-53703674D03*
|
||||
X149265000Y-53703674D03*
|
||||
X151768680Y-51166394D03*
|
||||
X149268680Y-51166394D03*
|
||||
X151768680Y-48626394D03*
|
||||
X149268680Y-48626394D03*
|
||||
X151768680Y-46086394D03*
|
||||
X149268680Y-46086394D03*
|
||||
X126365000Y-46083674D03*
|
||||
X126365000Y-48623674D03*
|
||||
X126365000Y-51163674D03*
|
||||
X126365000Y-53703674D03*
|
||||
X126365000Y-56243674D03*
|
||||
X126365000Y-58783674D03*
|
||||
X126365000Y-61323674D03*
|
||||
X126365000Y-63863674D03*
|
||||
X126365000Y-66403674D03*
|
||||
X126365000Y-68943674D03*
|
||||
X126365000Y-71483674D03*
|
||||
X126365000Y-74023674D03*
|
||||
X126365000Y-76563674D03*
|
||||
X126365000Y-79103674D03*
|
||||
X126365000Y-81643674D03*
|
||||
X126365000Y-84183674D03*
|
||||
X126365000Y-86723674D03*
|
||||
X126365000Y-89263674D03*
|
||||
X126365000Y-91803674D03*
|
||||
X126365000Y-94343674D03*
|
||||
X126365000Y-96883674D03*
|
||||
X126365000Y-99423674D03*
|
||||
D30*
|
||||
X139065000Y-94343674D03*
|
||||
D31*
|
||||
X137795000Y-94343674D03*
|
||||
X136525000Y-94343674D03*
|
||||
D32*
|
||||
X133985000Y-66264000D03*
|
||||
D33*
|
||||
X133985000Y-67564000D03*
|
||||
D34*
|
||||
X133985000Y-68864000D03*
|
||||
M02*
|
|
@ -0,0 +1,15 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 APERTURE END LIST*
|
||||
M02*
|
|
@ -0,0 +1,448 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Legend,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
%AMFreePoly0*
|
||||
4,1,19,0.550000,-0.750000,0.000000,-0.750000,0.000000,-0.744911,-0.071157,-0.744911,-0.207708,-0.704816,-0.327430,-0.627875,-0.420627,-0.520320,-0.479746,-0.390866,-0.500000,-0.250000,-0.500000,0.250000,-0.479746,0.390866,-0.420627,0.520320,-0.327430,0.627875,-0.207708,0.704816,-0.071157,0.744911,0.000000,0.744911,0.000000,0.750000,0.550000,0.750000,0.550000,-0.750000,0.550000,-0.750000,
|
||||
$1*%
|
||||
%AMFreePoly1*
|
||||
4,1,19,0.000000,0.744911,0.071157,0.744911,0.207708,0.704816,0.327430,0.627875,0.420627,0.520320,0.479746,0.390866,0.500000,0.250000,0.500000,-0.250000,0.479746,-0.390866,0.420627,-0.520320,0.327430,-0.627875,0.207708,-0.704816,0.071157,-0.744911,0.000000,-0.744911,0.000000,-0.750000,-0.550000,-0.750000,-0.550000,0.750000,0.000000,0.750000,0.000000,0.744911,0.000000,0.744911,
|
||||
$1*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.120000*%
|
||||
%ADD12C,1.600000*%
|
||||
%ADD13R,1.700000X1.700000*%
|
||||
%ADD14O,1.700000X1.700000*%
|
||||
%ADD15R,1.400000X1.400000*%
|
||||
%ADD16C,1.400000*%
|
||||
%ADD17O,1.600000X1.600000*%
|
||||
%ADD18R,3.000000X3.000000*%
|
||||
%ADD19C,3.000000*%
|
||||
%ADD20R,1.600000X1.600000*%
|
||||
%ADD21C,3.200000*%
|
||||
%ADD22R,2.000000X2.000000*%
|
||||
%ADD23C,2.000000*%
|
||||
%ADD24R,2.000000X1.905000*%
|
||||
%ADD25O,2.000000X1.905000*%
|
||||
%ADD26R,1.100000X1.800000*%
|
||||
%ADD27RoundRect,0.275000X-0.275000X-0.625000X0.275000X-0.625000X0.275000X0.625000X-0.275000X0.625000X0*%
|
||||
%ADD28R,1.500000X1.050000*%
|
||||
%ADD29O,1.500000X1.050000*%
|
||||
%ADD30R,2.000000X1.200000*%
|
||||
%ADD31O,2.000000X1.200000*%
|
||||
%ADD32R,1.050000X1.500000*%
|
||||
%ADD33O,1.050000X1.500000*%
|
||||
%ADD34FreePoly0,270.000000*%
|
||||
%ADD35R,1.500000X1.000000*%
|
||||
%ADD36FreePoly1,270.000000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X137363030Y-65417819D02*
|
||||
X137839220Y-65417819D01*
|
||||
X137839220Y-65417819D02*
|
||||
X137886839Y-65894009D01*
|
||||
X137886839Y-65894009D02*
|
||||
X137839220Y-65846390D01*
|
||||
X137839220Y-65846390D02*
|
||||
X137743982Y-65798771D01*
|
||||
X137743982Y-65798771D02*
|
||||
X137505887Y-65798771D01*
|
||||
X137505887Y-65798771D02*
|
||||
X137410649Y-65846390D01*
|
||||
X137410649Y-65846390D02*
|
||||
X137363030Y-65894009D01*
|
||||
X137363030Y-65894009D02*
|
||||
X137315411Y-65989247D01*
|
||||
X137315411Y-65989247D02*
|
||||
X137315411Y-66227342D01*
|
||||
X137315411Y-66227342D02*
|
||||
X137363030Y-66322580D01*
|
||||
X137363030Y-66322580D02*
|
||||
X137410649Y-66370200D01*
|
||||
X137410649Y-66370200D02*
|
||||
X137505887Y-66417819D01*
|
||||
X137505887Y-66417819D02*
|
||||
X137743982Y-66417819D01*
|
||||
X137743982Y-66417819D02*
|
||||
X137839220Y-66370200D01*
|
||||
X137839220Y-66370200D02*
|
||||
X137886839Y-66322580D01*
|
||||
X136982077Y-65751152D02*
|
||||
X136743982Y-66417819D01*
|
||||
X136743982Y-66417819D02*
|
||||
X136505887Y-65751152D01*
|
||||
X137934458Y-68465819D02*
|
||||
X137315411Y-68465819D01*
|
||||
X137315411Y-68465819D02*
|
||||
X137648744Y-68846771D01*
|
||||
X137648744Y-68846771D02*
|
||||
X137505887Y-68846771D01*
|
||||
X137505887Y-68846771D02*
|
||||
X137410649Y-68894390D01*
|
||||
X137410649Y-68894390D02*
|
||||
X137363030Y-68942009D01*
|
||||
X137363030Y-68942009D02*
|
||||
X137315411Y-69037247D01*
|
||||
X137315411Y-69037247D02*
|
||||
X137315411Y-69275342D01*
|
||||
X137315411Y-69275342D02*
|
||||
X137363030Y-69370580D01*
|
||||
X137363030Y-69370580D02*
|
||||
X137410649Y-69418200D01*
|
||||
X137410649Y-69418200D02*
|
||||
X137505887Y-69465819D01*
|
||||
X137505887Y-69465819D02*
|
||||
X137791601Y-69465819D01*
|
||||
X137791601Y-69465819D02*
|
||||
X137886839Y-69418200D01*
|
||||
X137886839Y-69418200D02*
|
||||
X137934458Y-69370580D01*
|
||||
X136982077Y-68799152D02*
|
||||
X136743982Y-69465819D01*
|
||||
X136743982Y-69465819D02*
|
||||
X136505887Y-68799152D01*
|
||||
X136220172Y-68465819D02*
|
||||
X135601125Y-68465819D01*
|
||||
X135601125Y-68465819D02*
|
||||
X135934458Y-68846771D01*
|
||||
X135934458Y-68846771D02*
|
||||
X135791601Y-68846771D01*
|
||||
X135791601Y-68846771D02*
|
||||
X135696363Y-68894390D01*
|
||||
X135696363Y-68894390D02*
|
||||
X135648744Y-68942009D01*
|
||||
X135648744Y-68942009D02*
|
||||
X135601125Y-69037247D01*
|
||||
X135601125Y-69037247D02*
|
||||
X135601125Y-69275342D01*
|
||||
X135601125Y-69275342D02*
|
||||
X135648744Y-69370580D01*
|
||||
X135648744Y-69370580D02*
|
||||
X135696363Y-69418200D01*
|
||||
X135696363Y-69418200D02*
|
||||
X135791601Y-69465819D01*
|
||||
X135791601Y-69465819D02*
|
||||
X136077315Y-69465819D01*
|
||||
X136077315Y-69465819D02*
|
||||
X136172553Y-69418200D01*
|
||||
X136172553Y-69418200D02*
|
||||
X136220172Y-69370580D01*
|
||||
X131639819Y-66730666D02*
|
||||
X132354104Y-66730666D01*
|
||||
X132354104Y-66730666D02*
|
||||
X132496961Y-66683047D01*
|
||||
X132496961Y-66683047D02*
|
||||
X132592200Y-66587809D01*
|
||||
X132592200Y-66587809D02*
|
||||
X132639819Y-66444952D01*
|
||||
X132639819Y-66444952D02*
|
||||
X132639819Y-66349714D01*
|
||||
X132639819Y-67206857D02*
|
||||
X131639819Y-67206857D01*
|
||||
X131639819Y-67206857D02*
|
||||
X131639819Y-67587809D01*
|
||||
X131639819Y-67587809D02*
|
||||
X131687438Y-67683047D01*
|
||||
X131687438Y-67683047D02*
|
||||
X131735057Y-67730666D01*
|
||||
X131735057Y-67730666D02*
|
||||
X131830295Y-67778285D01*
|
||||
X131830295Y-67778285D02*
|
||||
X131973152Y-67778285D01*
|
||||
X131973152Y-67778285D02*
|
||||
X132068390Y-67730666D01*
|
||||
X132068390Y-67730666D02*
|
||||
X132116009Y-67683047D01*
|
||||
X132116009Y-67683047D02*
|
||||
X132163628Y-67587809D01*
|
||||
X132163628Y-67587809D02*
|
||||
X132163628Y-67206857D01*
|
||||
X132639819Y-68730666D02*
|
||||
X132639819Y-68159238D01*
|
||||
X132639819Y-68444952D02*
|
||||
X131639819Y-68444952D01*
|
||||
X131639819Y-68444952D02*
|
||||
X131782676Y-68349714D01*
|
||||
X131782676Y-68349714D02*
|
||||
X131877914Y-68254476D01*
|
||||
X131877914Y-68254476D02*
|
||||
X131925533Y-68159238D01*
|
||||
D11*
|
||||
X132985000Y-68964000D02*
|
||||
X132985000Y-66164000D01*
|
||||
X133685000Y-65514000D02*
|
||||
X134285000Y-65514000D01*
|
||||
X134285000Y-69614000D02*
|
||||
X133685000Y-69614000D01*
|
||||
X134985000Y-66164000D02*
|
||||
X134985000Y-68964000D01*
|
||||
X135485000Y-66064000D02*
|
||||
X135185000Y-66364000D01*
|
||||
X135485000Y-66664000D02*
|
||||
X135185000Y-66364000D01*
|
||||
X135485000Y-66664000D02*
|
||||
X135485000Y-66064000D01*
|
||||
X132985000Y-66214000D02*
|
||||
G75*
|
||||
G02*
|
||||
X133685000Y-65514000I699999J1D01*
|
||||
G01*
|
||||
X133685000Y-69614000D02*
|
||||
G75*
|
||||
G02*
|
||||
X132985000Y-68914000I0J700000D01*
|
||||
G01*
|
||||
X134285000Y-65514000D02*
|
||||
G75*
|
||||
G02*
|
||||
X134985000Y-66214000I1J-699999D01*
|
||||
G01*
|
||||
X134985000Y-68914000D02*
|
||||
G75*
|
||||
G02*
|
||||
X134285000Y-69614000I-700000J0D01*
|
||||
G01*
|
||||
%LPC*%
|
||||
D12*
|
||||
X78105000Y-66363674D03*
|
||||
X78105000Y-63863674D03*
|
||||
D13*
|
||||
X117475000Y-66403674D03*
|
||||
D14*
|
||||
X117475000Y-63863674D03*
|
||||
X117475000Y-61323674D03*
|
||||
X117475000Y-58783674D03*
|
||||
D15*
|
||||
X69215000Y-74978674D03*
|
||||
D16*
|
||||
X69215000Y-67358674D03*
|
||||
X69215000Y-62278674D03*
|
||||
X69215000Y-57198674D03*
|
||||
X61595000Y-57198674D03*
|
||||
X61595000Y-62278674D03*
|
||||
X61595000Y-67358674D03*
|
||||
X61595000Y-74978674D03*
|
||||
D12*
|
||||
X67310000Y-80373674D03*
|
||||
D17*
|
||||
X67310000Y-90533674D03*
|
||||
D18*
|
||||
X86026000Y-38735000D03*
|
||||
D19*
|
||||
X80946000Y-38735000D03*
|
||||
D20*
|
||||
X83185000Y-96883674D03*
|
||||
D12*
|
||||
X85685000Y-96883674D03*
|
||||
X88265000Y-78468674D03*
|
||||
X90765000Y-78468674D03*
|
||||
D21*
|
||||
X60960000Y-119380000D03*
|
||||
D18*
|
||||
X86995000Y-114663674D03*
|
||||
D19*
|
||||
X92075000Y-114663674D03*
|
||||
X97155000Y-114663674D03*
|
||||
X102235000Y-114663674D03*
|
||||
D12*
|
||||
X70485000Y-52118674D03*
|
||||
D17*
|
||||
X60325000Y-52118674D03*
|
||||
D18*
|
||||
X74295000Y-114663674D03*
|
||||
D19*
|
||||
X79375000Y-114663674D03*
|
||||
D18*
|
||||
X132715000Y-114663674D03*
|
||||
D19*
|
||||
X137795000Y-114663674D03*
|
||||
X142875000Y-114663674D03*
|
||||
D20*
|
||||
X83185000Y-60053674D03*
|
||||
D12*
|
||||
X80685000Y-60053674D03*
|
||||
D20*
|
||||
X83185000Y-72753674D03*
|
||||
D12*
|
||||
X80685000Y-72753674D03*
|
||||
D22*
|
||||
X104775000Y-52433674D03*
|
||||
D23*
|
||||
X104775000Y-57433674D03*
|
||||
D21*
|
||||
X158960000Y-119380000D03*
|
||||
D20*
|
||||
X81915000Y-77833674D03*
|
||||
D17*
|
||||
X81915000Y-90533674D03*
|
||||
D12*
|
||||
X70485000Y-80373674D03*
|
||||
D17*
|
||||
X70485000Y-90533674D03*
|
||||
D20*
|
||||
X95885000Y-52433674D03*
|
||||
D17*
|
||||
X83185000Y-52433674D03*
|
||||
D24*
|
||||
X74295000Y-104503674D03*
|
||||
D25*
|
||||
X74295000Y-101963674D03*
|
||||
X74295000Y-99423674D03*
|
||||
D20*
|
||||
X95250000Y-106306325D03*
|
||||
D12*
|
||||
X95250000Y-102506325D03*
|
||||
D26*
|
||||
X74930000Y-58868674D03*
|
||||
D27*
|
||||
X76200000Y-56798674D03*
|
||||
X77470000Y-58868674D03*
|
||||
D20*
|
||||
X100965000Y-77833674D03*
|
||||
D17*
|
||||
X100965000Y-90533674D03*
|
||||
D18*
|
||||
X112395000Y-114663674D03*
|
||||
D19*
|
||||
X117475000Y-114663674D03*
|
||||
X122555000Y-114663674D03*
|
||||
D12*
|
||||
X73660000Y-80373674D03*
|
||||
D17*
|
||||
X73660000Y-90533674D03*
|
||||
D21*
|
||||
X158960000Y-35980000D03*
|
||||
D13*
|
||||
X158115000Y-64818674D03*
|
||||
D14*
|
||||
X160655000Y-64818674D03*
|
||||
D18*
|
||||
X116125000Y-38862000D03*
|
||||
D19*
|
||||
X111045000Y-38862000D03*
|
||||
X105965000Y-38862000D03*
|
||||
X100885000Y-38862000D03*
|
||||
X95805000Y-38862000D03*
|
||||
D12*
|
||||
X73025000Y-75613674D03*
|
||||
D17*
|
||||
X73025000Y-65453674D03*
|
||||
D28*
|
||||
X86995000Y-106408674D03*
|
||||
D29*
|
||||
X86995000Y-105138674D03*
|
||||
X86995000Y-103868674D03*
|
||||
D12*
|
||||
X76835000Y-80373674D03*
|
||||
D17*
|
||||
X76835000Y-90533674D03*
|
||||
D21*
|
||||
X60960000Y-35980000D03*
|
||||
D30*
|
||||
X151765000Y-99423674D03*
|
||||
X149265000Y-99423674D03*
|
||||
D31*
|
||||
X151765000Y-96883674D03*
|
||||
X149265000Y-96883674D03*
|
||||
X151765000Y-94343674D03*
|
||||
X149265000Y-94343674D03*
|
||||
X151765000Y-91803674D03*
|
||||
X149265000Y-91803674D03*
|
||||
X151765000Y-89263674D03*
|
||||
X149265000Y-89263674D03*
|
||||
X151765000Y-86723674D03*
|
||||
X149265000Y-86723674D03*
|
||||
X151765000Y-84183674D03*
|
||||
X149265000Y-84183674D03*
|
||||
X151765000Y-81643674D03*
|
||||
X149265000Y-81643674D03*
|
||||
X151765000Y-79103674D03*
|
||||
X149265000Y-79103674D03*
|
||||
X151765000Y-76563674D03*
|
||||
X149265000Y-76563674D03*
|
||||
X151765000Y-74023674D03*
|
||||
X149265000Y-74023674D03*
|
||||
X151765000Y-71483674D03*
|
||||
X149265000Y-71483674D03*
|
||||
X151765000Y-68943674D03*
|
||||
X149265000Y-68943674D03*
|
||||
X151765000Y-66403674D03*
|
||||
X149265000Y-66403674D03*
|
||||
X151765000Y-63863674D03*
|
||||
X149265000Y-63863674D03*
|
||||
X151765000Y-61323674D03*
|
||||
X149265000Y-61323674D03*
|
||||
X151765000Y-58783674D03*
|
||||
X149265000Y-58783674D03*
|
||||
X151765000Y-56243674D03*
|
||||
X149265000Y-56243674D03*
|
||||
X151765000Y-53703674D03*
|
||||
X149265000Y-53703674D03*
|
||||
X151768680Y-51166394D03*
|
||||
X149268680Y-51166394D03*
|
||||
X151768680Y-48626394D03*
|
||||
X149268680Y-48626394D03*
|
||||
X151768680Y-46086394D03*
|
||||
X149268680Y-46086394D03*
|
||||
X126365000Y-46083674D03*
|
||||
X126365000Y-48623674D03*
|
||||
X126365000Y-51163674D03*
|
||||
X126365000Y-53703674D03*
|
||||
X126365000Y-56243674D03*
|
||||
X126365000Y-58783674D03*
|
||||
X126365000Y-61323674D03*
|
||||
X126365000Y-63863674D03*
|
||||
X126365000Y-66403674D03*
|
||||
X126365000Y-68943674D03*
|
||||
X126365000Y-71483674D03*
|
||||
X126365000Y-74023674D03*
|
||||
X126365000Y-76563674D03*
|
||||
X126365000Y-79103674D03*
|
||||
X126365000Y-81643674D03*
|
||||
X126365000Y-84183674D03*
|
||||
X126365000Y-86723674D03*
|
||||
X126365000Y-89263674D03*
|
||||
X126365000Y-91803674D03*
|
||||
X126365000Y-94343674D03*
|
||||
X126365000Y-96883674D03*
|
||||
X126365000Y-99423674D03*
|
||||
D32*
|
||||
X139065000Y-94343674D03*
|
||||
D33*
|
||||
X137795000Y-94343674D03*
|
||||
X136525000Y-94343674D03*
|
||||
D34*
|
||||
X133985000Y-66264000D03*
|
||||
D35*
|
||||
X133985000Y-67564000D03*
|
||||
D36*
|
||||
X133985000Y-68864000D03*
|
||||
%LPD*%
|
||||
M02*
|
|
@ -0,0 +1,23 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Profile,NP*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 #@! TA.AperFunction,Profile*
|
||||
%ADD10C,0.200000*%
|
||||
G04 #@! TD*
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X55880000Y-30480000D02*
|
||||
X165100000Y-30480000D01*
|
||||
X165100000Y-124460000D01*
|
||||
X55880000Y-124460000D01*
|
||||
X55880000Y-30480000D01*
|
||||
M02*
|
13954
hydrocontroller_schematic/gerbers/hydrocontroller_schematic-F_Cu.gtl
Normal file
13954
hydrocontroller_schematic/gerbers/hydrocontroller_schematic-F_Cu.gtl
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,399 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10RoundRect,0.250001X0.462499X0.624999X-0.462499X0.624999X-0.462499X-0.624999X0.462499X-0.624999X0*%
|
||||
%ADD11RoundRect,0.237500X-0.250000X-0.237500X0.250000X-0.237500X0.250000X0.237500X-0.250000X0.237500X0*%
|
||||
%ADD12RoundRect,0.237500X-0.237500X0.250000X-0.237500X-0.250000X0.237500X-0.250000X0.237500X0.250000X0*%
|
||||
%ADD13R,1.100000X0.250000*%
|
||||
%ADD14C,1.600000*%
|
||||
%ADD15RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD16R,1.700000X1.700000*%
|
||||
%ADD17O,1.700000X1.700000*%
|
||||
%ADD18R,1.400000X1.400000*%
|
||||
%ADD19C,1.400000*%
|
||||
%ADD20O,1.600000X1.600000*%
|
||||
%ADD21RoundRect,0.237500X0.250000X0.237500X-0.250000X0.237500X-0.250000X-0.237500X0.250000X-0.237500X0*%
|
||||
%ADD22R,3.000000X3.000000*%
|
||||
%ADD23C,3.000000*%
|
||||
%ADD24R,1.600000X1.600000*%
|
||||
%ADD25R,1.000000X2.750000*%
|
||||
%ADD26C,3.200000*%
|
||||
%ADD27RoundRect,0.150000X-0.825000X-0.150000X0.825000X-0.150000X0.825000X0.150000X-0.825000X0.150000X0*%
|
||||
%ADD28R,2.000000X2.000000*%
|
||||
%ADD29C,2.000000*%
|
||||
%ADD30RoundRect,0.250000X0.337500X0.475000X-0.337500X0.475000X-0.337500X-0.475000X0.337500X-0.475000X0*%
|
||||
%ADD31R,2.000000X1.905000*%
|
||||
%ADD32O,2.000000X1.905000*%
|
||||
%ADD33R,1.100000X1.800000*%
|
||||
%ADD34RoundRect,0.275000X-0.275000X-0.625000X0.275000X-0.625000X0.275000X0.625000X-0.275000X0.625000X0*%
|
||||
%ADD35RoundRect,0.250000X-0.450000X0.325000X-0.450000X-0.325000X0.450000X-0.325000X0.450000X0.325000X0*%
|
||||
%ADD36RoundRect,0.250000X1.450000X-0.400000X1.450000X0.400000X-1.450000X0.400000X-1.450000X-0.400000X0*%
|
||||
%ADD37R,1.500000X1.050000*%
|
||||
%ADD38O,1.500000X1.050000*%
|
||||
%ADD39R,2.000000X1.200000*%
|
||||
%ADD40O,2.000000X1.200000*%
|
||||
%ADD41R,1.050000X1.500000*%
|
||||
%ADD42O,1.050000X1.500000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X93780000Y-57198674D03*
|
||||
X90805000Y-57198674D03*
|
||||
D11*
|
||||
X90805000Y-60053674D03*
|
||||
X92630000Y-60053674D03*
|
||||
D12*
|
||||
X78105000Y-104503674D03*
|
||||
X78105000Y-106328674D03*
|
||||
D13*
|
||||
X108095000Y-91303674D03*
|
||||
X108095000Y-91803674D03*
|
||||
X108095000Y-92303674D03*
|
||||
X108095000Y-92803674D03*
|
||||
X108095000Y-93303674D03*
|
||||
X112395000Y-93303674D03*
|
||||
X112395000Y-92803674D03*
|
||||
X112395000Y-92303674D03*
|
||||
X112395000Y-91803674D03*
|
||||
X112395000Y-91303674D03*
|
||||
D14*
|
||||
X78105000Y-66363674D03*
|
||||
X78105000Y-63863674D03*
|
||||
D15*
|
||||
X95885000Y-87278674D03*
|
||||
X95885000Y-85453674D03*
|
||||
D16*
|
||||
X117475000Y-66403674D03*
|
||||
D17*
|
||||
X117475000Y-63863674D03*
|
||||
X117475000Y-61323674D03*
|
||||
X117475000Y-58783674D03*
|
||||
D18*
|
||||
X69215000Y-74978674D03*
|
||||
D19*
|
||||
X69215000Y-67358674D03*
|
||||
X69215000Y-62278674D03*
|
||||
X69215000Y-57198674D03*
|
||||
X61595000Y-57198674D03*
|
||||
X61595000Y-62278674D03*
|
||||
X61595000Y-67358674D03*
|
||||
X61595000Y-74978674D03*
|
||||
D14*
|
||||
X67310000Y-80373674D03*
|
||||
D20*
|
||||
X67310000Y-90533674D03*
|
||||
D21*
|
||||
X82470000Y-56243674D03*
|
||||
X80645000Y-56243674D03*
|
||||
D11*
|
||||
X86995000Y-74023674D03*
|
||||
X88820000Y-74023674D03*
|
||||
D22*
|
||||
X86026000Y-38735000D03*
|
||||
D23*
|
||||
X80946000Y-38735000D03*
|
||||
D24*
|
||||
X83185000Y-96883674D03*
|
||||
D14*
|
||||
X85685000Y-96883674D03*
|
||||
X88265000Y-78468674D03*
|
||||
X90765000Y-78468674D03*
|
||||
D25*
|
||||
X161480000Y-50213674D03*
|
||||
X161480000Y-55963674D03*
|
||||
X157480000Y-50213674D03*
|
||||
X157480000Y-55963674D03*
|
||||
D26*
|
||||
X60960000Y-119380000D03*
|
||||
D22*
|
||||
X86995000Y-114663674D03*
|
||||
D23*
|
||||
X92075000Y-114663674D03*
|
||||
X97155000Y-114663674D03*
|
||||
X102235000Y-114663674D03*
|
||||
D11*
|
||||
X135970000Y-98153674D03*
|
||||
X137795000Y-98153674D03*
|
||||
X111045000Y-46124500D03*
|
||||
X112870000Y-46124500D03*
|
||||
D14*
|
||||
X70485000Y-52118674D03*
|
||||
D20*
|
||||
X60325000Y-52118674D03*
|
||||
D22*
|
||||
X74295000Y-114663674D03*
|
||||
D23*
|
||||
X79375000Y-114663674D03*
|
||||
D22*
|
||||
X132715000Y-114663674D03*
|
||||
D23*
|
||||
X137795000Y-114663674D03*
|
||||
X142875000Y-114663674D03*
|
||||
D15*
|
||||
X98425000Y-65688674D03*
|
||||
X98425000Y-63863674D03*
|
||||
D27*
|
||||
X87060000Y-82913674D03*
|
||||
X87060000Y-84183674D03*
|
||||
X87060000Y-85453674D03*
|
||||
X87060000Y-86723674D03*
|
||||
X87060000Y-87993674D03*
|
||||
X87060000Y-89263674D03*
|
||||
X87060000Y-90533674D03*
|
||||
X92010000Y-90533674D03*
|
||||
X92010000Y-89263674D03*
|
||||
X92010000Y-87993674D03*
|
||||
X92010000Y-86723674D03*
|
||||
X92010000Y-85453674D03*
|
||||
X92010000Y-84183674D03*
|
||||
X92010000Y-82913674D03*
|
||||
D24*
|
||||
X83185000Y-60053674D03*
|
||||
D14*
|
||||
X80685000Y-60053674D03*
|
||||
D24*
|
||||
X83185000Y-72753674D03*
|
||||
D14*
|
||||
X80685000Y-72753674D03*
|
||||
D28*
|
||||
X104775000Y-52433674D03*
|
||||
D29*
|
||||
X104775000Y-57433674D03*
|
||||
D15*
|
||||
X120015000Y-93628674D03*
|
||||
X120015000Y-91803674D03*
|
||||
X95885000Y-63863674D03*
|
||||
X95885000Y-62038674D03*
|
||||
D11*
|
||||
X81915000Y-65133674D03*
|
||||
X83740000Y-65133674D03*
|
||||
X99060000Y-45847000D03*
|
||||
X100885000Y-45847000D03*
|
||||
D26*
|
||||
X158960000Y-119380000D03*
|
||||
D24*
|
||||
X81915000Y-77833674D03*
|
||||
D20*
|
||||
X81915000Y-90533674D03*
|
||||
D14*
|
||||
X70485000Y-80373674D03*
|
||||
D20*
|
||||
X70485000Y-90533674D03*
|
||||
D11*
|
||||
X81915000Y-67673674D03*
|
||||
X83740000Y-67673674D03*
|
||||
D30*
|
||||
X112395000Y-99423674D03*
|
||||
X110320000Y-99423674D03*
|
||||
D24*
|
||||
X95885000Y-52433674D03*
|
||||
D20*
|
||||
X83185000Y-52433674D03*
|
||||
D31*
|
||||
X74295000Y-104503674D03*
|
||||
D32*
|
||||
X74295000Y-101963674D03*
|
||||
X74295000Y-99423674D03*
|
||||
D24*
|
||||
X95250000Y-106306325D03*
|
||||
D14*
|
||||
X95250000Y-102506325D03*
|
||||
D12*
|
||||
X80645000Y-102678674D03*
|
||||
X80645000Y-104503674D03*
|
||||
D21*
|
||||
X105965000Y-45847000D03*
|
||||
X104140000Y-45847000D03*
|
||||
D30*
|
||||
X112395000Y-107043674D03*
|
||||
X110320000Y-107043674D03*
|
||||
D33*
|
||||
X74930000Y-58868674D03*
|
||||
D34*
|
||||
X76200000Y-56798674D03*
|
||||
X77470000Y-58868674D03*
|
||||
D24*
|
||||
X100965000Y-77833674D03*
|
||||
D20*
|
||||
X100965000Y-90533674D03*
|
||||
D35*
|
||||
X109855000Y-101963674D03*
|
||||
X109855000Y-104013674D03*
|
||||
D22*
|
||||
X112395000Y-114663674D03*
|
||||
D23*
|
||||
X117475000Y-114663674D03*
|
||||
X122555000Y-114663674D03*
|
||||
D36*
|
||||
X66675000Y-106728674D03*
|
||||
X66675000Y-102278674D03*
|
||||
D14*
|
||||
X73660000Y-80373674D03*
|
||||
D20*
|
||||
X73660000Y-90533674D03*
|
||||
D26*
|
||||
X158960000Y-35980000D03*
|
||||
D16*
|
||||
X158115000Y-64818674D03*
|
||||
D17*
|
||||
X160655000Y-64818674D03*
|
||||
D22*
|
||||
X116125000Y-38862000D03*
|
||||
D23*
|
||||
X111045000Y-38862000D03*
|
||||
X105965000Y-38862000D03*
|
||||
X100885000Y-38862000D03*
|
||||
X95805000Y-38862000D03*
|
||||
D12*
|
||||
X104775000Y-90533674D03*
|
||||
X104775000Y-92358674D03*
|
||||
X86995000Y-55016174D03*
|
||||
X86995000Y-56841174D03*
|
||||
D15*
|
||||
X117475000Y-93628674D03*
|
||||
X117475000Y-91803674D03*
|
||||
X98425000Y-85453674D03*
|
||||
X98425000Y-83628674D03*
|
||||
D14*
|
||||
X73025000Y-75613674D03*
|
||||
D20*
|
||||
X73025000Y-65453674D03*
|
||||
D11*
|
||||
X86995000Y-60053674D03*
|
||||
X88820000Y-60053674D03*
|
||||
D35*
|
||||
X112395000Y-101963674D03*
|
||||
X112395000Y-104013674D03*
|
||||
D37*
|
||||
X86995000Y-106408674D03*
|
||||
D38*
|
||||
X86995000Y-105138674D03*
|
||||
X86995000Y-103868674D03*
|
||||
D27*
|
||||
X87060000Y-62593674D03*
|
||||
X87060000Y-63863674D03*
|
||||
X87060000Y-65133674D03*
|
||||
X87060000Y-66403674D03*
|
||||
X87060000Y-67673674D03*
|
||||
X87060000Y-68943674D03*
|
||||
X87060000Y-70213674D03*
|
||||
X92010000Y-70213674D03*
|
||||
X92010000Y-68943674D03*
|
||||
X92010000Y-67673674D03*
|
||||
X92010000Y-66403674D03*
|
||||
X92010000Y-65133674D03*
|
||||
X92010000Y-63863674D03*
|
||||
X92010000Y-62593674D03*
|
||||
D14*
|
||||
X76835000Y-80373674D03*
|
||||
D20*
|
||||
X76835000Y-90533674D03*
|
||||
D21*
|
||||
X105687500Y-96883674D03*
|
||||
X103862500Y-96883674D03*
|
||||
D26*
|
||||
X60960000Y-35980000D03*
|
||||
D39*
|
||||
X151765000Y-99423674D03*
|
||||
X149265000Y-99423674D03*
|
||||
D40*
|
||||
X151765000Y-96883674D03*
|
||||
X149265000Y-96883674D03*
|
||||
X151765000Y-94343674D03*
|
||||
X149265000Y-94343674D03*
|
||||
X151765000Y-91803674D03*
|
||||
X149265000Y-91803674D03*
|
||||
X151765000Y-89263674D03*
|
||||
X149265000Y-89263674D03*
|
||||
X151765000Y-86723674D03*
|
||||
X149265000Y-86723674D03*
|
||||
X151765000Y-84183674D03*
|
||||
X149265000Y-84183674D03*
|
||||
X151765000Y-81643674D03*
|
||||
X149265000Y-81643674D03*
|
||||
X151765000Y-79103674D03*
|
||||
X149265000Y-79103674D03*
|
||||
X151765000Y-76563674D03*
|
||||
X149265000Y-76563674D03*
|
||||
X151765000Y-74023674D03*
|
||||
X149265000Y-74023674D03*
|
||||
X151765000Y-71483674D03*
|
||||
X149265000Y-71483674D03*
|
||||
X151765000Y-68943674D03*
|
||||
X149265000Y-68943674D03*
|
||||
X151765000Y-66403674D03*
|
||||
X149265000Y-66403674D03*
|
||||
X151765000Y-63863674D03*
|
||||
X149265000Y-63863674D03*
|
||||
X151765000Y-61323674D03*
|
||||
X149265000Y-61323674D03*
|
||||
X151765000Y-58783674D03*
|
||||
X149265000Y-58783674D03*
|
||||
X151765000Y-56243674D03*
|
||||
X149265000Y-56243674D03*
|
||||
X151765000Y-53703674D03*
|
||||
X149265000Y-53703674D03*
|
||||
X151768680Y-51166394D03*
|
||||
X149268680Y-51166394D03*
|
||||
X151768680Y-48626394D03*
|
||||
X149268680Y-48626394D03*
|
||||
X151768680Y-46086394D03*
|
||||
X149268680Y-46086394D03*
|
||||
X126365000Y-46083674D03*
|
||||
X126365000Y-48623674D03*
|
||||
X126365000Y-51163674D03*
|
||||
X126365000Y-53703674D03*
|
||||
X126365000Y-56243674D03*
|
||||
X126365000Y-58783674D03*
|
||||
X126365000Y-61323674D03*
|
||||
X126365000Y-63863674D03*
|
||||
X126365000Y-66403674D03*
|
||||
X126365000Y-68943674D03*
|
||||
X126365000Y-71483674D03*
|
||||
X126365000Y-74023674D03*
|
||||
X126365000Y-76563674D03*
|
||||
X126365000Y-79103674D03*
|
||||
X126365000Y-81643674D03*
|
||||
X126365000Y-84183674D03*
|
||||
X126365000Y-86723674D03*
|
||||
X126365000Y-89263674D03*
|
||||
X126365000Y-91803674D03*
|
||||
X126365000Y-94343674D03*
|
||||
X126365000Y-96883674D03*
|
||||
X126365000Y-99423674D03*
|
||||
D12*
|
||||
X95885000Y-70213674D03*
|
||||
X95885000Y-72038674D03*
|
||||
D41*
|
||||
X139065000Y-94343674D03*
|
||||
D42*
|
||||
X137795000Y-94343674D03*
|
||||
X136525000Y-94343674D03*
|
||||
M02*
|
|
@ -0,0 +1,168 @@
|
|||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*
|
||||
G04 #@! TF.CreationDate,2024-08-20T11:31:22+02:00*
|
||||
G04 #@! TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Top*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:22*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 Aperture macros list*
|
||||
%AMRoundRect*
|
||||
0 Rectangle with rounded corners*
|
||||
0 $1 Rounding radius*
|
||||
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
|
||||
0 Add a 4 corners polygon primitive as box body*
|
||||
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
|
||||
0 Add four circle primitives for the rounded corners*
|
||||
1,1,$1+$1,$2,$3*
|
||||
1,1,$1+$1,$4,$5*
|
||||
1,1,$1+$1,$6,$7*
|
||||
1,1,$1+$1,$8,$9*
|
||||
0 Add four rect primitives between the rounded corners*
|
||||
20,1,$1+$1,$2,$3,$4,$5,0*
|
||||
20,1,$1+$1,$4,$5,$6,$7,0*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10RoundRect,0.250001X0.462499X0.624999X-0.462499X0.624999X-0.462499X-0.624999X0.462499X-0.624999X0*%
|
||||
%ADD11RoundRect,0.237500X-0.250000X-0.237500X0.250000X-0.237500X0.250000X0.237500X-0.250000X0.237500X0*%
|
||||
%ADD12RoundRect,0.237500X-0.237500X0.250000X-0.237500X-0.250000X0.237500X-0.250000X0.237500X0.250000X0*%
|
||||
%ADD13R,1.100000X0.250000*%
|
||||
%ADD14RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
|
||||
%ADD15RoundRect,0.237500X0.250000X0.237500X-0.250000X0.237500X-0.250000X-0.237500X0.250000X-0.237500X0*%
|
||||
%ADD16R,1.000000X2.750000*%
|
||||
%ADD17RoundRect,0.150000X-0.825000X-0.150000X0.825000X-0.150000X0.825000X0.150000X-0.825000X0.150000X0*%
|
||||
%ADD18RoundRect,0.250000X0.337500X0.475000X-0.337500X0.475000X-0.337500X-0.475000X0.337500X-0.475000X0*%
|
||||
%ADD19RoundRect,0.250000X-0.450000X0.325000X-0.450000X-0.325000X0.450000X-0.325000X0.450000X0.325000X0*%
|
||||
%ADD20RoundRect,0.250000X1.450000X-0.400000X1.450000X0.400000X-1.450000X0.400000X-1.450000X-0.400000X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X93780000Y-57198674D03*
|
||||
X90805000Y-57198674D03*
|
||||
D11*
|
||||
X90805000Y-60053674D03*
|
||||
X92630000Y-60053674D03*
|
||||
D12*
|
||||
X78105000Y-104503674D03*
|
||||
X78105000Y-106328674D03*
|
||||
D13*
|
||||
X108095000Y-91303674D03*
|
||||
X108095000Y-91803674D03*
|
||||
X108095000Y-92303674D03*
|
||||
X108095000Y-92803674D03*
|
||||
X108095000Y-93303674D03*
|
||||
X112395000Y-93303674D03*
|
||||
X112395000Y-92803674D03*
|
||||
X112395000Y-92303674D03*
|
||||
X112395000Y-91803674D03*
|
||||
X112395000Y-91303674D03*
|
||||
D14*
|
||||
X95885000Y-87278674D03*
|
||||
X95885000Y-85453674D03*
|
||||
D15*
|
||||
X82470000Y-56243674D03*
|
||||
X80645000Y-56243674D03*
|
||||
D11*
|
||||
X86995000Y-74023674D03*
|
||||
X88820000Y-74023674D03*
|
||||
D16*
|
||||
X161480000Y-50213674D03*
|
||||
X161480000Y-55963674D03*
|
||||
X157480000Y-50213674D03*
|
||||
X157480000Y-55963674D03*
|
||||
D11*
|
||||
X135970000Y-98153674D03*
|
||||
X137795000Y-98153674D03*
|
||||
X111045000Y-46124500D03*
|
||||
X112870000Y-46124500D03*
|
||||
D14*
|
||||
X98425000Y-65688674D03*
|
||||
X98425000Y-63863674D03*
|
||||
D17*
|
||||
X87060000Y-82913674D03*
|
||||
X87060000Y-84183674D03*
|
||||
X87060000Y-85453674D03*
|
||||
X87060000Y-86723674D03*
|
||||
X87060000Y-87993674D03*
|
||||
X87060000Y-89263674D03*
|
||||
X87060000Y-90533674D03*
|
||||
X92010000Y-90533674D03*
|
||||
X92010000Y-89263674D03*
|
||||
X92010000Y-87993674D03*
|
||||
X92010000Y-86723674D03*
|
||||
X92010000Y-85453674D03*
|
||||
X92010000Y-84183674D03*
|
||||
X92010000Y-82913674D03*
|
||||
D14*
|
||||
X120015000Y-93628674D03*
|
||||
X120015000Y-91803674D03*
|
||||
X95885000Y-63863674D03*
|
||||
X95885000Y-62038674D03*
|
||||
D11*
|
||||
X81915000Y-65133674D03*
|
||||
X83740000Y-65133674D03*
|
||||
X99060000Y-45847000D03*
|
||||
X100885000Y-45847000D03*
|
||||
X81915000Y-67673674D03*
|
||||
X83740000Y-67673674D03*
|
||||
D18*
|
||||
X112395000Y-99423674D03*
|
||||
X110320000Y-99423674D03*
|
||||
D12*
|
||||
X80645000Y-102678674D03*
|
||||
X80645000Y-104503674D03*
|
||||
D15*
|
||||
X105965000Y-45847000D03*
|
||||
X104140000Y-45847000D03*
|
||||
D18*
|
||||
X112395000Y-107043674D03*
|
||||
X110320000Y-107043674D03*
|
||||
D19*
|
||||
X109855000Y-101963674D03*
|
||||
X109855000Y-104013674D03*
|
||||
D20*
|
||||
X66675000Y-106728674D03*
|
||||
X66675000Y-102278674D03*
|
||||
D12*
|
||||
X104775000Y-90533674D03*
|
||||
X104775000Y-92358674D03*
|
||||
X86995000Y-55016174D03*
|
||||
X86995000Y-56841174D03*
|
||||
D14*
|
||||
X117475000Y-93628674D03*
|
||||
X117475000Y-91803674D03*
|
||||
X98425000Y-85453674D03*
|
||||
X98425000Y-83628674D03*
|
||||
D11*
|
||||
X86995000Y-60053674D03*
|
||||
X88820000Y-60053674D03*
|
||||
D19*
|
||||
X112395000Y-101963674D03*
|
||||
X112395000Y-104013674D03*
|
||||
D17*
|
||||
X87060000Y-62593674D03*
|
||||
X87060000Y-63863674D03*
|
||||
X87060000Y-65133674D03*
|
||||
X87060000Y-66403674D03*
|
||||
X87060000Y-67673674D03*
|
||||
X87060000Y-68943674D03*
|
||||
X87060000Y-70213674D03*
|
||||
X92010000Y-70213674D03*
|
||||
X92010000Y-68943674D03*
|
||||
X92010000Y-67673674D03*
|
||||
X92010000Y-66403674D03*
|
||||
X92010000Y-65133674D03*
|
||||
X92010000Y-63863674D03*
|
||||
X92010000Y-62593674D03*
|
||||
D15*
|
||||
X105687500Y-96883674D03*
|
||||
X103862500Y-96883674D03*
|
||||
D12*
|
||||
X95885000Y-70213674D03*
|
||||
X95885000Y-72038674D03*
|
||||
M02*
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,911 @@
|
|||
%TF.GenerationSoftware,KiCad,Pcbnew,8.0.3*%
|
||||
%TF.CreationDate,2024-08-20T11:31:27+02:00*%
|
||||
%TF.ProjectId,hydrocontroller_schematic,68796472-6f63-46f6-9e74-726f6c6c6572,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Drillmap*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX45Y45*%
|
||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 8.0.3) date 2024-08-20 11:31:27*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10C,0.200000*%
|
||||
%ADD11C,0.320000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X5588000Y-3048000D02*
|
||||
X16510000Y-3048000D01*
|
||||
X16510000Y-12446000D01*
|
||||
X5588000Y-12446000D01*
|
||||
X5588000Y-3048000D01*
|
||||
D11*
|
||||
X5936000Y-3438000D02*
|
||||
X6256000Y-3758000D01*
|
||||
X6256000Y-3438000D02*
|
||||
X5936000Y-3758000D01*
|
||||
X5936000Y-11778000D02*
|
||||
X6256000Y-12098000D01*
|
||||
X6256000Y-11778000D02*
|
||||
X5936000Y-12098000D01*
|
||||
X15736000Y-3438000D02*
|
||||
X16056000Y-3758000D01*
|
||||
X16056000Y-3438000D02*
|
||||
X15736000Y-3758000D01*
|
||||
X15736000Y-11778000D02*
|
||||
X16056000Y-12098000D01*
|
||||
X16056000Y-11778000D02*
|
||||
X15736000Y-12098000D01*
|
||||
D10*
|
||||
X5838777Y-12767484D02*
|
||||
X5838777Y-12567484D01*
|
||||
X5838777Y-12567484D02*
|
||||
X5886396Y-12567484D01*
|
||||
X5886396Y-12567484D02*
|
||||
X5914967Y-12577008D01*
|
||||
X5914967Y-12577008D02*
|
||||
X5934015Y-12596055D01*
|
||||
X5934015Y-12596055D02*
|
||||
X5943539Y-12615103D01*
|
||||
X5943539Y-12615103D02*
|
||||
X5953062Y-12653198D01*
|
||||
X5953062Y-12653198D02*
|
||||
X5953062Y-12681769D01*
|
||||
X5953062Y-12681769D02*
|
||||
X5943539Y-12719865D01*
|
||||
X5943539Y-12719865D02*
|
||||
X5934015Y-12738912D01*
|
||||
X5934015Y-12738912D02*
|
||||
X5914967Y-12757960D01*
|
||||
X5914967Y-12757960D02*
|
||||
X5886396Y-12767484D01*
|
||||
X5886396Y-12767484D02*
|
||||
X5838777Y-12767484D01*
|
||||
X6038777Y-12767484D02*
|
||||
X6038777Y-12634150D01*
|
||||
X6038777Y-12672246D02*
|
||||
X6048301Y-12653198D01*
|
||||
X6048301Y-12653198D02*
|
||||
X6057824Y-12643674D01*
|
||||
X6057824Y-12643674D02*
|
||||
X6076872Y-12634150D01*
|
||||
X6076872Y-12634150D02*
|
||||
X6095920Y-12634150D01*
|
||||
X6162586Y-12767484D02*
|
||||
X6162586Y-12634150D01*
|
||||
X6162586Y-12567484D02*
|
||||
X6153062Y-12577008D01*
|
||||
X6153062Y-12577008D02*
|
||||
X6162586Y-12586531D01*
|
||||
X6162586Y-12586531D02*
|
||||
X6172110Y-12577008D01*
|
||||
X6172110Y-12577008D02*
|
||||
X6162586Y-12567484D01*
|
||||
X6162586Y-12567484D02*
|
||||
X6162586Y-12586531D01*
|
||||
X6286396Y-12767484D02*
|
||||
X6267348Y-12757960D01*
|
||||
X6267348Y-12757960D02*
|
||||
X6257824Y-12738912D01*
|
||||
X6257824Y-12738912D02*
|
||||
X6257824Y-12567484D01*
|
||||
X6391158Y-12767484D02*
|
||||
X6372110Y-12757960D01*
|
||||
X6372110Y-12757960D02*
|
||||
X6362586Y-12738912D01*
|
||||
X6362586Y-12738912D02*
|
||||
X6362586Y-12567484D01*
|
||||
X6619729Y-12767484D02*
|
||||
X6619729Y-12567484D01*
|
||||
X6619729Y-12567484D02*
|
||||
X6686396Y-12710341D01*
|
||||
X6686396Y-12710341D02*
|
||||
X6753062Y-12567484D01*
|
||||
X6753062Y-12567484D02*
|
||||
X6753062Y-12767484D01*
|
||||
X6934015Y-12767484D02*
|
||||
X6934015Y-12662722D01*
|
||||
X6934015Y-12662722D02*
|
||||
X6924491Y-12643674D01*
|
||||
X6924491Y-12643674D02*
|
||||
X6905443Y-12634150D01*
|
||||
X6905443Y-12634150D02*
|
||||
X6867348Y-12634150D01*
|
||||
X6867348Y-12634150D02*
|
||||
X6848301Y-12643674D01*
|
||||
X6934015Y-12757960D02*
|
||||
X6914967Y-12767484D01*
|
||||
X6914967Y-12767484D02*
|
||||
X6867348Y-12767484D01*
|
||||
X6867348Y-12767484D02*
|
||||
X6848301Y-12757960D01*
|
||||
X6848301Y-12757960D02*
|
||||
X6838777Y-12738912D01*
|
||||
X6838777Y-12738912D02*
|
||||
X6838777Y-12719865D01*
|
||||
X6838777Y-12719865D02*
|
||||
X6848301Y-12700817D01*
|
||||
X6848301Y-12700817D02*
|
||||
X6867348Y-12691293D01*
|
||||
X6867348Y-12691293D02*
|
||||
X6914967Y-12691293D01*
|
||||
X6914967Y-12691293D02*
|
||||
X6934015Y-12681769D01*
|
||||
X7029253Y-12634150D02*
|
||||
X7029253Y-12834150D01*
|
||||
X7029253Y-12643674D02*
|
||||
X7048301Y-12634150D01*
|
||||
X7048301Y-12634150D02*
|
||||
X7086396Y-12634150D01*
|
||||
X7086396Y-12634150D02*
|
||||
X7105443Y-12643674D01*
|
||||
X7105443Y-12643674D02*
|
||||
X7114967Y-12653198D01*
|
||||
X7114967Y-12653198D02*
|
||||
X7124491Y-12672246D01*
|
||||
X7124491Y-12672246D02*
|
||||
X7124491Y-12729388D01*
|
||||
X7124491Y-12729388D02*
|
||||
X7114967Y-12748436D01*
|
||||
X7114967Y-12748436D02*
|
||||
X7105443Y-12757960D01*
|
||||
X7105443Y-12757960D02*
|
||||
X7086396Y-12767484D01*
|
||||
X7086396Y-12767484D02*
|
||||
X7048301Y-12767484D01*
|
||||
X7048301Y-12767484D02*
|
||||
X7029253Y-12757960D01*
|
||||
X7210205Y-12748436D02*
|
||||
X7219729Y-12757960D01*
|
||||
X7219729Y-12757960D02*
|
||||
X7210205Y-12767484D01*
|
||||
X7210205Y-12767484D02*
|
||||
X7200682Y-12757960D01*
|
||||
X7200682Y-12757960D02*
|
||||
X7210205Y-12748436D01*
|
||||
X7210205Y-12748436D02*
|
||||
X7210205Y-12767484D01*
|
||||
X7210205Y-12643674D02*
|
||||
X7219729Y-12653198D01*
|
||||
X7219729Y-12653198D02*
|
||||
X7210205Y-12662722D01*
|
||||
X7210205Y-12662722D02*
|
||||
X7200682Y-12653198D01*
|
||||
X7200682Y-12653198D02*
|
||||
X7210205Y-12643674D01*
|
||||
X7210205Y-12643674D02*
|
||||
X7210205Y-12662722D01*
|
||||
X5378000Y-12996000D02*
|
||||
X5578000Y-13196000D01*
|
||||
X5578000Y-12996000D02*
|
||||
X5378000Y-13196000D01*
|
||||
X5819729Y-12987484D02*
|
||||
X5943539Y-12987484D01*
|
||||
X5943539Y-12987484D02*
|
||||
X5876872Y-13063674D01*
|
||||
X5876872Y-13063674D02*
|
||||
X5905443Y-13063674D01*
|
||||
X5905443Y-13063674D02*
|
||||
X5924491Y-13073198D01*
|
||||
X5924491Y-13073198D02*
|
||||
X5934015Y-13082722D01*
|
||||
X5934015Y-13082722D02*
|
||||
X5943539Y-13101769D01*
|
||||
X5943539Y-13101769D02*
|
||||
X5943539Y-13149388D01*
|
||||
X5943539Y-13149388D02*
|
||||
X5934015Y-13168436D01*
|
||||
X5934015Y-13168436D02*
|
||||
X5924491Y-13177960D01*
|
||||
X5924491Y-13177960D02*
|
||||
X5905443Y-13187484D01*
|
||||
X5905443Y-13187484D02*
|
||||
X5848301Y-13187484D01*
|
||||
X5848301Y-13187484D02*
|
||||
X5829253Y-13177960D01*
|
||||
X5829253Y-13177960D02*
|
||||
X5819729Y-13168436D01*
|
||||
X6029253Y-13168436D02*
|
||||
X6038777Y-13177960D01*
|
||||
X6038777Y-13177960D02*
|
||||
X6029253Y-13187484D01*
|
||||
X6029253Y-13187484D02*
|
||||
X6019729Y-13177960D01*
|
||||
X6019729Y-13177960D02*
|
||||
X6029253Y-13168436D01*
|
||||
X6029253Y-13168436D02*
|
||||
X6029253Y-13187484D01*
|
||||
X6114967Y-13006531D02*
|
||||
X6124491Y-12997008D01*
|
||||
X6124491Y-12997008D02*
|
||||
X6143539Y-12987484D01*
|
||||
X6143539Y-12987484D02*
|
||||
X6191158Y-12987484D01*
|
||||
X6191158Y-12987484D02*
|
||||
X6210205Y-12997008D01*
|
||||
X6210205Y-12997008D02*
|
||||
X6219729Y-13006531D01*
|
||||
X6219729Y-13006531D02*
|
||||
X6229253Y-13025579D01*
|
||||
X6229253Y-13025579D02*
|
||||
X6229253Y-13044627D01*
|
||||
X6229253Y-13044627D02*
|
||||
X6219729Y-13073198D01*
|
||||
X6219729Y-13073198D02*
|
||||
X6105443Y-13187484D01*
|
||||
X6105443Y-13187484D02*
|
||||
X6229253Y-13187484D01*
|
||||
X6353062Y-12987484D02*
|
||||
X6372110Y-12987484D01*
|
||||
X6372110Y-12987484D02*
|
||||
X6391158Y-12997008D01*
|
||||
X6391158Y-12997008D02*
|
||||
X6400682Y-13006531D01*
|
||||
X6400682Y-13006531D02*
|
||||
X6410205Y-13025579D01*
|
||||
X6410205Y-13025579D02*
|
||||
X6419729Y-13063674D01*
|
||||
X6419729Y-13063674D02*
|
||||
X6419729Y-13111293D01*
|
||||
X6419729Y-13111293D02*
|
||||
X6410205Y-13149388D01*
|
||||
X6410205Y-13149388D02*
|
||||
X6400682Y-13168436D01*
|
||||
X6400682Y-13168436D02*
|
||||
X6391158Y-13177960D01*
|
||||
X6391158Y-13177960D02*
|
||||
X6372110Y-13187484D01*
|
||||
X6372110Y-13187484D02*
|
||||
X6353062Y-13187484D01*
|
||||
X6353062Y-13187484D02*
|
||||
X6334015Y-13177960D01*
|
||||
X6334015Y-13177960D02*
|
||||
X6324491Y-13168436D01*
|
||||
X6324491Y-13168436D02*
|
||||
X6314967Y-13149388D01*
|
||||
X6314967Y-13149388D02*
|
||||
X6305443Y-13111293D01*
|
||||
X6305443Y-13111293D02*
|
||||
X6305443Y-13063674D01*
|
||||
X6305443Y-13063674D02*
|
||||
X6314967Y-13025579D01*
|
||||
X6314967Y-13025579D02*
|
||||
X6324491Y-13006531D01*
|
||||
X6324491Y-13006531D02*
|
||||
X6334015Y-12997008D01*
|
||||
X6334015Y-12997008D02*
|
||||
X6353062Y-12987484D01*
|
||||
X6543539Y-12987484D02*
|
||||
X6562586Y-12987484D01*
|
||||
X6562586Y-12987484D02*
|
||||
X6581634Y-12997008D01*
|
||||
X6581634Y-12997008D02*
|
||||
X6591158Y-13006531D01*
|
||||
X6591158Y-13006531D02*
|
||||
X6600682Y-13025579D01*
|
||||
X6600682Y-13025579D02*
|
||||
X6610205Y-13063674D01*
|
||||
X6610205Y-13063674D02*
|
||||
X6610205Y-13111293D01*
|
||||
X6610205Y-13111293D02*
|
||||
X6600682Y-13149388D01*
|
||||
X6600682Y-13149388D02*
|
||||
X6591158Y-13168436D01*
|
||||
X6591158Y-13168436D02*
|
||||
X6581634Y-13177960D01*
|
||||
X6581634Y-13177960D02*
|
||||
X6562586Y-13187484D01*
|
||||
X6562586Y-13187484D02*
|
||||
X6543539Y-13187484D01*
|
||||
X6543539Y-13187484D02*
|
||||
X6524491Y-13177960D01*
|
||||
X6524491Y-13177960D02*
|
||||
X6514967Y-13168436D01*
|
||||
X6514967Y-13168436D02*
|
||||
X6505443Y-13149388D01*
|
||||
X6505443Y-13149388D02*
|
||||
X6495920Y-13111293D01*
|
||||
X6495920Y-13111293D02*
|
||||
X6495920Y-13063674D01*
|
||||
X6495920Y-13063674D02*
|
||||
X6505443Y-13025579D01*
|
||||
X6505443Y-13025579D02*
|
||||
X6514967Y-13006531D01*
|
||||
X6514967Y-13006531D02*
|
||||
X6524491Y-12997008D01*
|
||||
X6524491Y-12997008D02*
|
||||
X6543539Y-12987484D01*
|
||||
X6695920Y-13187484D02*
|
||||
X6695920Y-13054150D01*
|
||||
X6695920Y-13073198D02*
|
||||
X6705443Y-13063674D01*
|
||||
X6705443Y-13063674D02*
|
||||
X6724491Y-13054150D01*
|
||||
X6724491Y-13054150D02*
|
||||
X6753063Y-13054150D01*
|
||||
X6753063Y-13054150D02*
|
||||
X6772110Y-13063674D01*
|
||||
X6772110Y-13063674D02*
|
||||
X6781634Y-13082722D01*
|
||||
X6781634Y-13082722D02*
|
||||
X6781634Y-13187484D01*
|
||||
X6781634Y-13082722D02*
|
||||
X6791158Y-13063674D01*
|
||||
X6791158Y-13063674D02*
|
||||
X6810205Y-13054150D01*
|
||||
X6810205Y-13054150D02*
|
||||
X6838777Y-13054150D01*
|
||||
X6838777Y-13054150D02*
|
||||
X6857824Y-13063674D01*
|
||||
X6857824Y-13063674D02*
|
||||
X6867348Y-13082722D01*
|
||||
X6867348Y-13082722D02*
|
||||
X6867348Y-13187484D01*
|
||||
X6962586Y-13187484D02*
|
||||
X6962586Y-13054150D01*
|
||||
X6962586Y-13073198D02*
|
||||
X6972110Y-13063674D01*
|
||||
X6972110Y-13063674D02*
|
||||
X6991158Y-13054150D01*
|
||||
X6991158Y-13054150D02*
|
||||
X7019729Y-13054150D01*
|
||||
X7019729Y-13054150D02*
|
||||
X7038777Y-13063674D01*
|
||||
X7038777Y-13063674D02*
|
||||
X7048301Y-13082722D01*
|
||||
X7048301Y-13082722D02*
|
||||
X7048301Y-13187484D01*
|
||||
X7048301Y-13082722D02*
|
||||
X7057824Y-13063674D01*
|
||||
X7057824Y-13063674D02*
|
||||
X7076872Y-13054150D01*
|
||||
X7076872Y-13054150D02*
|
||||
X7105443Y-13054150D01*
|
||||
X7105443Y-13054150D02*
|
||||
X7124491Y-13063674D01*
|
||||
X7124491Y-13063674D02*
|
||||
X7134015Y-13082722D01*
|
||||
X7134015Y-13082722D02*
|
||||
X7134015Y-13187484D01*
|
||||
X7524491Y-12977960D02*
|
||||
X7353063Y-13235103D01*
|
||||
X7781634Y-12987484D02*
|
||||
X7800682Y-12987484D01*
|
||||
X7800682Y-12987484D02*
|
||||
X7819729Y-12997008D01*
|
||||
X7819729Y-12997008D02*
|
||||
X7829253Y-13006531D01*
|
||||
X7829253Y-13006531D02*
|
||||
X7838777Y-13025579D01*
|
||||
X7838777Y-13025579D02*
|
||||
X7848301Y-13063674D01*
|
||||
X7848301Y-13063674D02*
|
||||
X7848301Y-13111293D01*
|
||||
X7848301Y-13111293D02*
|
||||
X7838777Y-13149388D01*
|
||||
X7838777Y-13149388D02*
|
||||
X7829253Y-13168436D01*
|
||||
X7829253Y-13168436D02*
|
||||
X7819729Y-13177960D01*
|
||||
X7819729Y-13177960D02*
|
||||
X7800682Y-13187484D01*
|
||||
X7800682Y-13187484D02*
|
||||
X7781634Y-13187484D01*
|
||||
X7781634Y-13187484D02*
|
||||
X7762586Y-13177960D01*
|
||||
X7762586Y-13177960D02*
|
||||
X7753063Y-13168436D01*
|
||||
X7753063Y-13168436D02*
|
||||
X7743539Y-13149388D01*
|
||||
X7743539Y-13149388D02*
|
||||
X7734015Y-13111293D01*
|
||||
X7734015Y-13111293D02*
|
||||
X7734015Y-13063674D01*
|
||||
X7734015Y-13063674D02*
|
||||
X7743539Y-13025579D01*
|
||||
X7743539Y-13025579D02*
|
||||
X7753063Y-13006531D01*
|
||||
X7753063Y-13006531D02*
|
||||
X7762586Y-12997008D01*
|
||||
X7762586Y-12997008D02*
|
||||
X7781634Y-12987484D01*
|
||||
X7934015Y-13168436D02*
|
||||
X7943539Y-13177960D01*
|
||||
X7943539Y-13177960D02*
|
||||
X7934015Y-13187484D01*
|
||||
X7934015Y-13187484D02*
|
||||
X7924491Y-13177960D01*
|
||||
X7924491Y-13177960D02*
|
||||
X7934015Y-13168436D01*
|
||||
X7934015Y-13168436D02*
|
||||
X7934015Y-13187484D01*
|
||||
X8134015Y-13187484D02*
|
||||
X8019729Y-13187484D01*
|
||||
X8076872Y-13187484D02*
|
||||
X8076872Y-12987484D01*
|
||||
X8076872Y-12987484D02*
|
||||
X8057825Y-13016055D01*
|
||||
X8057825Y-13016055D02*
|
||||
X8038777Y-13035103D01*
|
||||
X8038777Y-13035103D02*
|
||||
X8019729Y-13044627D01*
|
||||
X8210206Y-13006531D02*
|
||||
X8219729Y-12997008D01*
|
||||
X8219729Y-12997008D02*
|
||||
X8238777Y-12987484D01*
|
||||
X8238777Y-12987484D02*
|
||||
X8286396Y-12987484D01*
|
||||
X8286396Y-12987484D02*
|
||||
X8305444Y-12997008D01*
|
||||
X8305444Y-12997008D02*
|
||||
X8314967Y-13006531D01*
|
||||
X8314967Y-13006531D02*
|
||||
X8324491Y-13025579D01*
|
||||
X8324491Y-13025579D02*
|
||||
X8324491Y-13044627D01*
|
||||
X8324491Y-13044627D02*
|
||||
X8314967Y-13073198D01*
|
||||
X8314967Y-13073198D02*
|
||||
X8200682Y-13187484D01*
|
||||
X8200682Y-13187484D02*
|
||||
X8324491Y-13187484D01*
|
||||
X8495920Y-12987484D02*
|
||||
X8457825Y-12987484D01*
|
||||
X8457825Y-12987484D02*
|
||||
X8438777Y-12997008D01*
|
||||
X8438777Y-12997008D02*
|
||||
X8429253Y-13006531D01*
|
||||
X8429253Y-13006531D02*
|
||||
X8410206Y-13035103D01*
|
||||
X8410206Y-13035103D02*
|
||||
X8400682Y-13073198D01*
|
||||
X8400682Y-13073198D02*
|
||||
X8400682Y-13149388D01*
|
||||
X8400682Y-13149388D02*
|
||||
X8410206Y-13168436D01*
|
||||
X8410206Y-13168436D02*
|
||||
X8419729Y-13177960D01*
|
||||
X8419729Y-13177960D02*
|
||||
X8438777Y-13187484D01*
|
||||
X8438777Y-13187484D02*
|
||||
X8476872Y-13187484D01*
|
||||
X8476872Y-13187484D02*
|
||||
X8495920Y-13177960D01*
|
||||
X8495920Y-13177960D02*
|
||||
X8505444Y-13168436D01*
|
||||
X8505444Y-13168436D02*
|
||||
X8514968Y-13149388D01*
|
||||
X8514968Y-13149388D02*
|
||||
X8514968Y-13101769D01*
|
||||
X8514968Y-13101769D02*
|
||||
X8505444Y-13082722D01*
|
||||
X8505444Y-13082722D02*
|
||||
X8495920Y-13073198D01*
|
||||
X8495920Y-13073198D02*
|
||||
X8476872Y-13063674D01*
|
||||
X8476872Y-13063674D02*
|
||||
X8438777Y-13063674D01*
|
||||
X8438777Y-13063674D02*
|
||||
X8419729Y-13073198D01*
|
||||
X8419729Y-13073198D02*
|
||||
X8410206Y-13082722D01*
|
||||
X8410206Y-13082722D02*
|
||||
X8400682Y-13101769D01*
|
||||
X8638777Y-12987484D02*
|
||||
X8657825Y-12987484D01*
|
||||
X8657825Y-12987484D02*
|
||||
X8676872Y-12997008D01*
|
||||
X8676872Y-12997008D02*
|
||||
X8686396Y-13006531D01*
|
||||
X8686396Y-13006531D02*
|
||||
X8695920Y-13025579D01*
|
||||
X8695920Y-13025579D02*
|
||||
X8705444Y-13063674D01*
|
||||
X8705444Y-13063674D02*
|
||||
X8705444Y-13111293D01*
|
||||
X8705444Y-13111293D02*
|
||||
X8695920Y-13149388D01*
|
||||
X8695920Y-13149388D02*
|
||||
X8686396Y-13168436D01*
|
||||
X8686396Y-13168436D02*
|
||||
X8676872Y-13177960D01*
|
||||
X8676872Y-13177960D02*
|
||||
X8657825Y-13187484D01*
|
||||
X8657825Y-13187484D02*
|
||||
X8638777Y-13187484D01*
|
||||
X8638777Y-13187484D02*
|
||||
X8619729Y-13177960D01*
|
||||
X8619729Y-13177960D02*
|
||||
X8610206Y-13168436D01*
|
||||
X8610206Y-13168436D02*
|
||||
X8600682Y-13149388D01*
|
||||
X8600682Y-13149388D02*
|
||||
X8591158Y-13111293D01*
|
||||
X8591158Y-13111293D02*
|
||||
X8591158Y-13063674D01*
|
||||
X8591158Y-13063674D02*
|
||||
X8600682Y-13025579D01*
|
||||
X8600682Y-13025579D02*
|
||||
X8610206Y-13006531D01*
|
||||
X8610206Y-13006531D02*
|
||||
X8619729Y-12997008D01*
|
||||
X8619729Y-12997008D02*
|
||||
X8638777Y-12987484D01*
|
||||
X8781634Y-12987484D02*
|
||||
X8781634Y-13025579D01*
|
||||
X8857825Y-12987484D02*
|
||||
X8857825Y-13025579D01*
|
||||
X9153063Y-13263674D02*
|
||||
X9143539Y-13254150D01*
|
||||
X9143539Y-13254150D02*
|
||||
X9124491Y-13225579D01*
|
||||
X9124491Y-13225579D02*
|
||||
X9114968Y-13206531D01*
|
||||
X9114968Y-13206531D02*
|
||||
X9105444Y-13177960D01*
|
||||
X9105444Y-13177960D02*
|
||||
X9095920Y-13130341D01*
|
||||
X9095920Y-13130341D02*
|
||||
X9095920Y-13092246D01*
|
||||
X9095920Y-13092246D02*
|
||||
X9105444Y-13044627D01*
|
||||
X9105444Y-13044627D02*
|
||||
X9114968Y-13016055D01*
|
||||
X9114968Y-13016055D02*
|
||||
X9124491Y-12997008D01*
|
||||
X9124491Y-12997008D02*
|
||||
X9143539Y-12968436D01*
|
||||
X9143539Y-12968436D02*
|
||||
X9153063Y-12958912D01*
|
||||
X9314968Y-13054150D02*
|
||||
X9314968Y-13187484D01*
|
||||
X9267349Y-12977960D02*
|
||||
X9219730Y-13120817D01*
|
||||
X9219730Y-13120817D02*
|
||||
X9343539Y-13120817D01*
|
||||
X9572111Y-13187484D02*
|
||||
X9572111Y-12987484D01*
|
||||
X9657825Y-13187484D02*
|
||||
X9657825Y-13082722D01*
|
||||
X9657825Y-13082722D02*
|
||||
X9648301Y-13063674D01*
|
||||
X9648301Y-13063674D02*
|
||||
X9629253Y-13054150D01*
|
||||
X9629253Y-13054150D02*
|
||||
X9600682Y-13054150D01*
|
||||
X9600682Y-13054150D02*
|
||||
X9581634Y-13063674D01*
|
||||
X9581634Y-13063674D02*
|
||||
X9572111Y-13073198D01*
|
||||
X9781634Y-13187484D02*
|
||||
X9762587Y-13177960D01*
|
||||
X9762587Y-13177960D02*
|
||||
X9753063Y-13168436D01*
|
||||
X9753063Y-13168436D02*
|
||||
X9743539Y-13149388D01*
|
||||
X9743539Y-13149388D02*
|
||||
X9743539Y-13092246D01*
|
||||
X9743539Y-13092246D02*
|
||||
X9753063Y-13073198D01*
|
||||
X9753063Y-13073198D02*
|
||||
X9762587Y-13063674D01*
|
||||
X9762587Y-13063674D02*
|
||||
X9781634Y-13054150D01*
|
||||
X9781634Y-13054150D02*
|
||||
X9810206Y-13054150D01*
|
||||
X9810206Y-13054150D02*
|
||||
X9829253Y-13063674D01*
|
||||
X9829253Y-13063674D02*
|
||||
X9838777Y-13073198D01*
|
||||
X9838777Y-13073198D02*
|
||||
X9848301Y-13092246D01*
|
||||
X9848301Y-13092246D02*
|
||||
X9848301Y-13149388D01*
|
||||
X9848301Y-13149388D02*
|
||||
X9838777Y-13168436D01*
|
||||
X9838777Y-13168436D02*
|
||||
X9829253Y-13177960D01*
|
||||
X9829253Y-13177960D02*
|
||||
X9810206Y-13187484D01*
|
||||
X9810206Y-13187484D02*
|
||||
X9781634Y-13187484D01*
|
||||
X9962587Y-13187484D02*
|
||||
X9943539Y-13177960D01*
|
||||
X9943539Y-13177960D02*
|
||||
X9934015Y-13158912D01*
|
||||
X9934015Y-13158912D02*
|
||||
X9934015Y-12987484D01*
|
||||
X10114968Y-13177960D02*
|
||||
X10095920Y-13187484D01*
|
||||
X10095920Y-13187484D02*
|
||||
X10057825Y-13187484D01*
|
||||
X10057825Y-13187484D02*
|
||||
X10038777Y-13177960D01*
|
||||
X10038777Y-13177960D02*
|
||||
X10029253Y-13158912D01*
|
||||
X10029253Y-13158912D02*
|
||||
X10029253Y-13082722D01*
|
||||
X10029253Y-13082722D02*
|
||||
X10038777Y-13063674D01*
|
||||
X10038777Y-13063674D02*
|
||||
X10057825Y-13054150D01*
|
||||
X10057825Y-13054150D02*
|
||||
X10095920Y-13054150D01*
|
||||
X10095920Y-13054150D02*
|
||||
X10114968Y-13063674D01*
|
||||
X10114968Y-13063674D02*
|
||||
X10124492Y-13082722D01*
|
||||
X10124492Y-13082722D02*
|
||||
X10124492Y-13101769D01*
|
||||
X10124492Y-13101769D02*
|
||||
X10029253Y-13120817D01*
|
||||
X10200682Y-13177960D02*
|
||||
X10219730Y-13187484D01*
|
||||
X10219730Y-13187484D02*
|
||||
X10257825Y-13187484D01*
|
||||
X10257825Y-13187484D02*
|
||||
X10276873Y-13177960D01*
|
||||
X10276873Y-13177960D02*
|
||||
X10286396Y-13158912D01*
|
||||
X10286396Y-13158912D02*
|
||||
X10286396Y-13149388D01*
|
||||
X10286396Y-13149388D02*
|
||||
X10276873Y-13130341D01*
|
||||
X10276873Y-13130341D02*
|
||||
X10257825Y-13120817D01*
|
||||
X10257825Y-13120817D02*
|
||||
X10229253Y-13120817D01*
|
||||
X10229253Y-13120817D02*
|
||||
X10210206Y-13111293D01*
|
||||
X10210206Y-13111293D02*
|
||||
X10200682Y-13092246D01*
|
||||
X10200682Y-13092246D02*
|
||||
X10200682Y-13082722D01*
|
||||
X10200682Y-13082722D02*
|
||||
X10210206Y-13063674D01*
|
||||
X10210206Y-13063674D02*
|
||||
X10229253Y-13054150D01*
|
||||
X10229253Y-13054150D02*
|
||||
X10257825Y-13054150D01*
|
||||
X10257825Y-13054150D02*
|
||||
X10276873Y-13063674D01*
|
||||
X10353063Y-13263674D02*
|
||||
X10362587Y-13254150D01*
|
||||
X10362587Y-13254150D02*
|
||||
X10381634Y-13225579D01*
|
||||
X10381634Y-13225579D02*
|
||||
X10391158Y-13206531D01*
|
||||
X10391158Y-13206531D02*
|
||||
X10400682Y-13177960D01*
|
||||
X10400682Y-13177960D02*
|
||||
X10410206Y-13130341D01*
|
||||
X10410206Y-13130341D02*
|
||||
X10410206Y-13092246D01*
|
||||
X10410206Y-13092246D02*
|
||||
X10400682Y-13044627D01*
|
||||
X10400682Y-13044627D02*
|
||||
X10391158Y-13016055D01*
|
||||
X10391158Y-13016055D02*
|
||||
X10381634Y-12997008D01*
|
||||
X10381634Y-12997008D02*
|
||||
X10362587Y-12968436D01*
|
||||
X10362587Y-12968436D02*
|
||||
X10353063Y-12958912D01*
|
||||
X10714968Y-13263674D02*
|
||||
X10705444Y-13254150D01*
|
||||
X10705444Y-13254150D02*
|
||||
X10686396Y-13225579D01*
|
||||
X10686396Y-13225579D02*
|
||||
X10676873Y-13206531D01*
|
||||
X10676873Y-13206531D02*
|
||||
X10667349Y-13177960D01*
|
||||
X10667349Y-13177960D02*
|
||||
X10657825Y-13130341D01*
|
||||
X10657825Y-13130341D02*
|
||||
X10657825Y-13092246D01*
|
||||
X10657825Y-13092246D02*
|
||||
X10667349Y-13044627D01*
|
||||
X10667349Y-13044627D02*
|
||||
X10676873Y-13016055D01*
|
||||
X10676873Y-13016055D02*
|
||||
X10686396Y-12997008D01*
|
||||
X10686396Y-12997008D02*
|
||||
X10705444Y-12968436D01*
|
||||
X10705444Y-12968436D02*
|
||||
X10714968Y-12958912D01*
|
||||
X10791158Y-13054150D02*
|
||||
X10791158Y-13187484D01*
|
||||
X10791158Y-13073198D02*
|
||||
X10800682Y-13063674D01*
|
||||
X10800682Y-13063674D02*
|
||||
X10819730Y-13054150D01*
|
||||
X10819730Y-13054150D02*
|
||||
X10848301Y-13054150D01*
|
||||
X10848301Y-13054150D02*
|
||||
X10867349Y-13063674D01*
|
||||
X10867349Y-13063674D02*
|
||||
X10876873Y-13082722D01*
|
||||
X10876873Y-13082722D02*
|
||||
X10876873Y-13187484D01*
|
||||
X11000682Y-13187484D02*
|
||||
X10981634Y-13177960D01*
|
||||
X10981634Y-13177960D02*
|
||||
X10972111Y-13168436D01*
|
||||
X10972111Y-13168436D02*
|
||||
X10962587Y-13149388D01*
|
||||
X10962587Y-13149388D02*
|
||||
X10962587Y-13092246D01*
|
||||
X10962587Y-13092246D02*
|
||||
X10972111Y-13073198D01*
|
||||
X10972111Y-13073198D02*
|
||||
X10981634Y-13063674D01*
|
||||
X10981634Y-13063674D02*
|
||||
X11000682Y-13054150D01*
|
||||
X11000682Y-13054150D02*
|
||||
X11029254Y-13054150D01*
|
||||
X11029254Y-13054150D02*
|
||||
X11048301Y-13063674D01*
|
||||
X11048301Y-13063674D02*
|
||||
X11057825Y-13073198D01*
|
||||
X11057825Y-13073198D02*
|
||||
X11067349Y-13092246D01*
|
||||
X11067349Y-13092246D02*
|
||||
X11067349Y-13149388D01*
|
||||
X11067349Y-13149388D02*
|
||||
X11057825Y-13168436D01*
|
||||
X11057825Y-13168436D02*
|
||||
X11048301Y-13177960D01*
|
||||
X11048301Y-13177960D02*
|
||||
X11029254Y-13187484D01*
|
||||
X11029254Y-13187484D02*
|
||||
X11000682Y-13187484D01*
|
||||
X11124492Y-13054150D02*
|
||||
X11200682Y-13054150D01*
|
||||
X11153063Y-12987484D02*
|
||||
X11153063Y-13158912D01*
|
||||
X11153063Y-13158912D02*
|
||||
X11162587Y-13177960D01*
|
||||
X11162587Y-13177960D02*
|
||||
X11181634Y-13187484D01*
|
||||
X11181634Y-13187484D02*
|
||||
X11200682Y-13187484D01*
|
||||
X11419730Y-13054150D02*
|
||||
X11419730Y-13254150D01*
|
||||
X11419730Y-13063674D02*
|
||||
X11438777Y-13054150D01*
|
||||
X11438777Y-13054150D02*
|
||||
X11476873Y-13054150D01*
|
||||
X11476873Y-13054150D02*
|
||||
X11495920Y-13063674D01*
|
||||
X11495920Y-13063674D02*
|
||||
X11505444Y-13073198D01*
|
||||
X11505444Y-13073198D02*
|
||||
X11514968Y-13092246D01*
|
||||
X11514968Y-13092246D02*
|
||||
X11514968Y-13149388D01*
|
||||
X11514968Y-13149388D02*
|
||||
X11505444Y-13168436D01*
|
||||
X11505444Y-13168436D02*
|
||||
X11495920Y-13177960D01*
|
||||
X11495920Y-13177960D02*
|
||||
X11476873Y-13187484D01*
|
||||
X11476873Y-13187484D02*
|
||||
X11438777Y-13187484D01*
|
||||
X11438777Y-13187484D02*
|
||||
X11419730Y-13177960D01*
|
||||
X11629253Y-13187484D02*
|
||||
X11610206Y-13177960D01*
|
||||
X11610206Y-13177960D02*
|
||||
X11600682Y-13158912D01*
|
||||
X11600682Y-13158912D02*
|
||||
X11600682Y-12987484D01*
|
||||
X11791158Y-13187484D02*
|
||||
X11791158Y-13082722D01*
|
||||
X11791158Y-13082722D02*
|
||||
X11781634Y-13063674D01*
|
||||
X11781634Y-13063674D02*
|
||||
X11762587Y-13054150D01*
|
||||
X11762587Y-13054150D02*
|
||||
X11724492Y-13054150D01*
|
||||
X11724492Y-13054150D02*
|
||||
X11705444Y-13063674D01*
|
||||
X11791158Y-13177960D02*
|
||||
X11772111Y-13187484D01*
|
||||
X11772111Y-13187484D02*
|
||||
X11724492Y-13187484D01*
|
||||
X11724492Y-13187484D02*
|
||||
X11705444Y-13177960D01*
|
||||
X11705444Y-13177960D02*
|
||||
X11695920Y-13158912D01*
|
||||
X11695920Y-13158912D02*
|
||||
X11695920Y-13139865D01*
|
||||
X11695920Y-13139865D02*
|
||||
X11705444Y-13120817D01*
|
||||
X11705444Y-13120817D02*
|
||||
X11724492Y-13111293D01*
|
||||
X11724492Y-13111293D02*
|
||||
X11772111Y-13111293D01*
|
||||
X11772111Y-13111293D02*
|
||||
X11791158Y-13101769D01*
|
||||
X11857825Y-13054150D02*
|
||||
X11934015Y-13054150D01*
|
||||
X11886396Y-12987484D02*
|
||||
X11886396Y-13158912D01*
|
||||
X11886396Y-13158912D02*
|
||||
X11895920Y-13177960D01*
|
||||
X11895920Y-13177960D02*
|
||||
X11914968Y-13187484D01*
|
||||
X11914968Y-13187484D02*
|
||||
X11934015Y-13187484D01*
|
||||
X12076873Y-13177960D02*
|
||||
X12057825Y-13187484D01*
|
||||
X12057825Y-13187484D02*
|
||||
X12019730Y-13187484D01*
|
||||
X12019730Y-13187484D02*
|
||||
X12000682Y-13177960D01*
|
||||
X12000682Y-13177960D02*
|
||||
X11991158Y-13158912D01*
|
||||
X11991158Y-13158912D02*
|
||||
X11991158Y-13082722D01*
|
||||
X11991158Y-13082722D02*
|
||||
X12000682Y-13063674D01*
|
||||
X12000682Y-13063674D02*
|
||||
X12019730Y-13054150D01*
|
||||
X12019730Y-13054150D02*
|
||||
X12057825Y-13054150D01*
|
||||
X12057825Y-13054150D02*
|
||||
X12076873Y-13063674D01*
|
||||
X12076873Y-13063674D02*
|
||||
X12086396Y-13082722D01*
|
||||
X12086396Y-13082722D02*
|
||||
X12086396Y-13101769D01*
|
||||
X12086396Y-13101769D02*
|
||||
X11991158Y-13120817D01*
|
||||
X12257825Y-13187484D02*
|
||||
X12257825Y-12987484D01*
|
||||
X12257825Y-13177960D02*
|
||||
X12238777Y-13187484D01*
|
||||
X12238777Y-13187484D02*
|
||||
X12200682Y-13187484D01*
|
||||
X12200682Y-13187484D02*
|
||||
X12181634Y-13177960D01*
|
||||
X12181634Y-13177960D02*
|
||||
X12172111Y-13168436D01*
|
||||
X12172111Y-13168436D02*
|
||||
X12162587Y-13149388D01*
|
||||
X12162587Y-13149388D02*
|
||||
X12162587Y-13092246D01*
|
||||
X12162587Y-13092246D02*
|
||||
X12172111Y-13073198D01*
|
||||
X12172111Y-13073198D02*
|
||||
X12181634Y-13063674D01*
|
||||
X12181634Y-13063674D02*
|
||||
X12200682Y-13054150D01*
|
||||
X12200682Y-13054150D02*
|
||||
X12238777Y-13054150D01*
|
||||
X12238777Y-13054150D02*
|
||||
X12257825Y-13063674D01*
|
||||
X12334015Y-13263674D02*
|
||||
X12343539Y-13254150D01*
|
||||
X12343539Y-13254150D02*
|
||||
X12362587Y-13225579D01*
|
||||
X12362587Y-13225579D02*
|
||||
X12372111Y-13206531D01*
|
||||
X12372111Y-13206531D02*
|
||||
X12381634Y-13177960D01*
|
||||
X12381634Y-13177960D02*
|
||||
X12391158Y-13130341D01*
|
||||
X12391158Y-13130341D02*
|
||||
X12391158Y-13092246D01*
|
||||
X12391158Y-13092246D02*
|
||||
X12381634Y-13044627D01*
|
||||
X12381634Y-13044627D02*
|
||||
X12372111Y-13016055D01*
|
||||
X12372111Y-13016055D02*
|
||||
X12362587Y-12997008D01*
|
||||
X12362587Y-12997008D02*
|
||||
X12343539Y-12968436D01*
|
||||
X12343539Y-12968436D02*
|
||||
X12334015Y-12958912D01*
|
||||
M02*
|
|
@ -0,0 +1,19 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.3} date 2024-08-20T11:31:25+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2024-08-20T11:31:25+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T1C3.200
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X60.96Y-35.98
|
||||
X60.96Y-119.38
|
||||
X158.96Y-35.98
|
||||
X158.96Y-119.38
|
||||
M30
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,203 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.3} date 2024-08-20T11:31:25+0200
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2024-08-20T11:31:25+02:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.3
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
METRIC
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T1C0.700
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.750
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T3C0.800
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T4C0.800
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T5C1.000
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T6C1.100
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T7C1.520
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X61.595Y-57.199
|
||||
X61.595Y-62.279
|
||||
X61.595Y-67.359
|
||||
X61.595Y-74.979
|
||||
X69.215Y-57.199
|
||||
X69.215Y-62.279
|
||||
X69.215Y-67.359
|
||||
X69.215Y-74.979
|
||||
T2
|
||||
X74.93Y-58.469
|
||||
X76.2Y-57.199
|
||||
X77.47Y-58.469
|
||||
X86.995Y-103.869
|
||||
X86.995Y-105.139
|
||||
X86.995Y-106.409
|
||||
X136.525Y-94.344
|
||||
X137.795Y-94.344
|
||||
X139.065Y-94.344
|
||||
T3
|
||||
X75.311Y-94.344
|
||||
X84.455Y-80.374
|
||||
X84.455Y-84.184
|
||||
X84.455Y-87.994
|
||||
X85.725Y-76.249
|
||||
X94.615Y-74.93
|
||||
X95.885Y-89.264
|
||||
X98.425Y-81.644
|
||||
X99.06Y-48.26
|
||||
X100.965Y-94.344
|
||||
X102.235Y-69.899
|
||||
X104.775Y-77.834
|
||||
X104.775Y-86.724
|
||||
X104.775Y-103.234
|
||||
X106.045Y-110.854
|
||||
X107.95Y-45.72
|
||||
X109.855Y-67.994
|
||||
X111.76Y-67.994
|
||||
X113.665Y-49.53
|
||||
X113.665Y-67.994
|
||||
X113.665Y-88.949
|
||||
X113.665Y-96.569
|
||||
X114.935Y-61.324
|
||||
X116.205Y-88.949
|
||||
X116.205Y-96.569
|
||||
X157.48Y-60.374
|
||||
X157.48Y-103.234
|
||||
T4
|
||||
X60.325Y-52.119
|
||||
X67.31Y-80.374
|
||||
X67.31Y-90.534
|
||||
X70.485Y-52.119
|
||||
X70.485Y-80.374
|
||||
X70.485Y-90.534
|
||||
X73.025Y-65.454
|
||||
X73.025Y-75.614
|
||||
X73.66Y-80.374
|
||||
X73.66Y-90.534
|
||||
X76.835Y-80.374
|
||||
X76.835Y-90.534
|
||||
X78.105Y-63.864
|
||||
X78.105Y-66.364
|
||||
X80.685Y-60.054
|
||||
X80.685Y-72.754
|
||||
X81.915Y-77.834
|
||||
X81.915Y-90.534
|
||||
X83.185Y-52.434
|
||||
X83.185Y-60.054
|
||||
X83.185Y-72.754
|
||||
X83.185Y-96.884
|
||||
X85.685Y-96.884
|
||||
X88.265Y-78.469
|
||||
X90.765Y-78.469
|
||||
X95.25Y-102.506
|
||||
X95.25Y-106.306
|
||||
X95.885Y-52.434
|
||||
X100.965Y-77.834
|
||||
X100.965Y-90.534
|
||||
X126.365Y-46.084
|
||||
X126.365Y-48.624
|
||||
X126.365Y-51.164
|
||||
X126.365Y-53.704
|
||||
X126.365Y-56.244
|
||||
X126.365Y-58.784
|
||||
X126.365Y-61.324
|
||||
X126.365Y-63.864
|
||||
X126.365Y-66.404
|
||||
X126.365Y-68.944
|
||||
X126.365Y-71.484
|
||||
X126.365Y-74.024
|
||||
X126.365Y-76.564
|
||||
X126.365Y-79.104
|
||||
X126.365Y-81.644
|
||||
X126.365Y-84.184
|
||||
X126.365Y-86.724
|
||||
X126.365Y-89.264
|
||||
X126.365Y-91.804
|
||||
X126.365Y-94.344
|
||||
X126.365Y-96.884
|
||||
X126.365Y-99.424
|
||||
X149.265Y-53.704
|
||||
X149.265Y-56.244
|
||||
X149.265Y-58.784
|
||||
X149.265Y-61.324
|
||||
X149.265Y-63.864
|
||||
X149.265Y-66.404
|
||||
X149.265Y-68.944
|
||||
X149.265Y-71.484
|
||||
X149.265Y-74.024
|
||||
X149.265Y-76.564
|
||||
X149.265Y-79.104
|
||||
X149.265Y-81.644
|
||||
X149.265Y-84.184
|
||||
X149.265Y-86.724
|
||||
X149.265Y-89.264
|
||||
X149.265Y-91.804
|
||||
X149.265Y-94.344
|
||||
X149.265Y-96.884
|
||||
X149.265Y-99.424
|
||||
X149.269Y-46.086
|
||||
X149.269Y-48.626
|
||||
X149.269Y-51.166
|
||||
X151.765Y-53.704
|
||||
X151.765Y-56.244
|
||||
X151.765Y-58.784
|
||||
X151.765Y-61.324
|
||||
X151.765Y-63.864
|
||||
X151.765Y-66.404
|
||||
X151.765Y-68.944
|
||||
X151.765Y-71.484
|
||||
X151.765Y-74.024
|
||||
X151.765Y-76.564
|
||||
X151.765Y-79.104
|
||||
X151.765Y-81.644
|
||||
X151.765Y-84.184
|
||||
X151.765Y-86.724
|
||||
X151.765Y-89.264
|
||||
X151.765Y-91.804
|
||||
X151.765Y-94.344
|
||||
X151.765Y-96.884
|
||||
X151.765Y-99.424
|
||||
X151.769Y-46.086
|
||||
X151.769Y-48.626
|
||||
X151.769Y-51.166
|
||||
T5
|
||||
X104.775Y-52.434
|
||||
X104.775Y-57.434
|
||||
X117.475Y-58.784
|
||||
X117.475Y-61.324
|
||||
X117.475Y-63.864
|
||||
X117.475Y-66.404
|
||||
X158.115Y-64.819
|
||||
X160.655Y-64.819
|
||||
T6
|
||||
X74.295Y-99.424
|
||||
X74.295Y-101.964
|
||||
X74.295Y-104.504
|
||||
T7
|
||||
X74.295Y-114.664
|
||||
X79.375Y-114.664
|
||||
X80.946Y-38.735
|
||||
X86.026Y-38.735
|
||||
X86.995Y-114.664
|
||||
X92.075Y-114.664
|
||||
X95.805Y-38.862
|
||||
X97.155Y-114.664
|
||||
X100.885Y-38.862
|
||||
X102.235Y-114.664
|
||||
X105.965Y-38.862
|
||||
X111.045Y-38.862
|
||||
X112.395Y-114.664
|
||||
X116.125Y-38.862
|
||||
X117.475Y-114.664
|
||||
X122.555Y-114.664
|
||||
X132.715Y-114.664
|
||||
X137.795Y-114.664
|
||||
X142.875Y-114.664
|
||||
M30
|
File diff suppressed because it is too large
Load diff
|
@ -1,12 +1,14 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer": 37,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
|
@ -65,6 +67,12 @@
|
|||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "hydrocontroller_schematic.kicad_prl",
|
||||
"version": 3
|
||||
|
|
|
@ -1,29 +1,245 @@
|
|||
{
|
||||
"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.1,
|
||||
"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": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"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.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.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"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_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [
|
||||
"courtyards_overlap|135065001|92333675|f06e700e-6430-4fd6-ba47-6e1007a58652|f44ab942-fdc3-4f16-8326-7879207cdaca",
|
||||
"courtyards_overlap|135232501|97423675|f06e700e-6430-4fd6-ba47-6e1007a58652|3dc6a7fc-a9a2-43fd-862b-c8bd3b2ace25",
|
||||
"lib_footprint_mismatch|139065000|71531594|f06e700e-6430-4fd6-ba47-6e1007a58652|00000000-0000-0000-0000-000000000000"
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"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": "error",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"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",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "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_thickness": "warning",
|
||||
"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",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"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.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_clearance": 0.0,
|
||||
"solder_mask_min_width": 0.0
|
||||
"solder_mask_min_width": 0.0,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"track_widths": [],
|
||||
"via_dimensions": []
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": 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.25,
|
||||
0.5,
|
||||
1.5
|
||||
],
|
||||
"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.8,
|
||||
"drill": 0.5
|
||||
},
|
||||
{
|
||||
"diameter": 1.2,
|
||||
"drill": 0.8
|
||||
}
|
||||
],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"layer_presets": []
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
|
@ -210,15 +426,21 @@
|
|||
"bus_label_syntax": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "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",
|
||||
|
@ -228,6 +450,7 @@
|
|||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
|
@ -245,42 +468,154 @@
|
|||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_gap": 0.5,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"diff_pair_width": 0.25,
|
||||
"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
|
||||
"track_width": 1.0,
|
||||
"via_diameter": 1.2,
|
||||
"via_drill": 0.8,
|
||||
"wire_width": 6
|
||||
},
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.5,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.25,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Power",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 1.5,
|
||||
"via_diameter": 1.2,
|
||||
"via_drill": 0.8,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": [
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "+5V"
|
||||
},
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "GND"
|
||||
},
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "+3V3"
|
||||
},
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "VCC"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "gerbers/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "20240921_hydrocontroller_schematic_BOM.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": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "#",
|
||||
"name": "${ITEM_NUMBER}",
|
||||
"show": false
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Description",
|
||||
"name": "Description",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "",
|
||||
"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": [],
|
||||
|
@ -291,6 +626,11 @@
|
|||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"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": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
|
@ -306,20 +646,29 @@
|
|||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 0,
|
||||
"model_mode": 4,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"plot_directory": "plot/",
|
||||
"spice_adjust_passive_values": false,
|
||||
"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": [
|
||||
[
|
||||
"754364af-53ba-432d-8f40-e098124c9685",
|
||||
""
|
||||
"Root"
|
||||
],
|
||||
[
|
||||
"7a00f13c-a700-45ca-9974-48b050769647",
|
||||
"conductivity_sensor"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
|
|
File diff suppressed because it is too large
Load diff
95
include/_waterlevel_vl6180x.h
Normal file
95
include/_waterlevel_vl6180x.h
Normal file
|
@ -0,0 +1,95 @@
|
|||
#ifndef _WATERLEVEL_H_
|
||||
#define _WATERLEVEL_H_
|
||||
|
||||
#include <Wire.h>
|
||||
#include <VL6180X.h> //https://github.com/pololu/vl6180x-arduino
|
||||
|
||||
|
||||
VL6180X sensor;
|
||||
// To try different scaling factors, change the following define.
|
||||
// Valid scaling factors are 1, 2, or 3.
|
||||
#define SCALING 1
|
||||
|
||||
|
||||
#define READINTERVAL_WATERLEVEL 200
|
||||
|
||||
#define WATERLEVELMEAN_SIZE 32
|
||||
#define WATERLEVELMEAN_FILTER_CUTOFF 8 //max value is around WATERLEVELMEAN_SIZE/2
|
||||
float waterlevelMean_array[WATERLEVELMEAN_SIZE];
|
||||
uint16_t waterlevelMean_array_pos=0;
|
||||
#define WATERLEVEL_UNAVAILABLE -1
|
||||
float waterlevel=WATERLEVEL_UNAVAILABLE; //distance from floor to water surface [mm]
|
||||
float watervolume=WATERLEVEL_UNAVAILABLE; //calculated Volume in Reservoir
|
||||
|
||||
|
||||
//Calibration
|
||||
float waterlevel_calib_offset_measured=86; //Sollwert
|
||||
float waterlevel_calib_offset_sensor=78; //Istwert
|
||||
//raw reading is 78mm, ruler reads 86mm. VL8160 sensor is 169mm above bottom of reservoir.
|
||||
|
||||
float waterlevel_calib_reservoirArea=27*36.5; //area in cm^2
|
||||
|
||||
|
||||
float waterlevel_heightToVolume(float distance);
|
||||
|
||||
|
||||
mqttValueTiming timing_waterlevel;
|
||||
|
||||
void waterlevel_setup() {
|
||||
|
||||
timing_waterlevel.minchange=0.0;
|
||||
timing_waterlevel.maxchange=3.0;
|
||||
timing_waterlevel.mintime=30*000;
|
||||
timing_waterlevel.maxtime=60*60*1000;
|
||||
|
||||
Wire.begin();
|
||||
|
||||
sensor.init();
|
||||
sensor.configureDefault();
|
||||
sensor.setScaling(SCALING);
|
||||
sensor.setTimeout(500);
|
||||
|
||||
for (uint16_t i=0;i<WATERLEVELMEAN_SIZE;i++) {
|
||||
waterlevelMean_array[i]=-1; //-1 is also timeout value
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void waterlevel_loop(unsigned long loopmillis) {
|
||||
|
||||
static unsigned long last_read_waterlevel;
|
||||
if (loopmillis>=last_read_waterlevel+READINTERVAL_WATERLEVEL) {
|
||||
last_read_waterlevel=loopmillis;
|
||||
|
||||
|
||||
uint16_t distance=sensor.readRangeSingleMillimeters();
|
||||
|
||||
Serial.print("Distance reading:"); Serial.println(distance);
|
||||
|
||||
if (distance!=WATERLEVEL_UNAVAILABLE) { //successful
|
||||
waterlevelMean_array[waterlevelMean_array_pos]=distance;
|
||||
waterlevelMean_array_pos++;
|
||||
waterlevelMean_array_pos%=WATERLEVELMEAN_SIZE;
|
||||
}
|
||||
|
||||
if (isValueArrayOKf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVEL_UNAVAILABLE)){
|
||||
float _filteredDistance=getFilteredf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVELMEAN_FILTER_CUTOFF);
|
||||
|
||||
|
||||
//Invert distance and offset
|
||||
waterlevel=(waterlevel_calib_offset_sensor+waterlevel_calib_offset_measured)-_filteredDistance;
|
||||
watervolume=waterlevel_heightToVolume(waterlevel);
|
||||
|
||||
//float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE);
|
||||
//Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE)-getMinf(waterlevelMean,WATERLEVELMEAN_SIZE))/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
float waterlevel_heightToVolume(float distance){
|
||||
return waterlevel_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L
|
||||
}
|
||||
|
||||
#endif
|
102
include/ec.h
102
include/ec.h
|
@ -2,11 +2,15 @@
|
|||
#define _EC_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
extern bool eccalibrationoutput;
|
||||
/*
|
||||
mqttValueTiming timing_ec_adc;
|
||||
mqttValueTiming timing_ec_calibadc;
|
||||
mqttValueTiming timing_ec_adcadjusted;
|
||||
mqttValueTiming timing_ec_ec;
|
||||
mqttValueTiming timing_ec_sc;
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
@ -16,12 +20,12 @@ bool ec_flag_measurement_available=false;
|
|||
#define EC_UNAVAILABLE -1
|
||||
|
||||
|
||||
#define EC_PIN_RELAY_PROBE 27
|
||||
//#define EC_PIN_RELAY_PROBE 27 //moved to platformio.ini
|
||||
|
||||
|
||||
//#define EC_PIN_ADC 4
|
||||
#define EC_ADS_CHANNEL 0
|
||||
#define EC_PIN_FREQ 5
|
||||
//#define EC_PIN_FREQ 5 //move to platformio.ini
|
||||
#define EC_PWM_CH 0
|
||||
#define EC_RESOLUTION 8
|
||||
#define EC_FREQUENCY 5000
|
||||
|
@ -31,13 +35,13 @@ uint16_t ec_calib_array[EC_CALIB_ARRAY_SIZE];
|
|||
uint16_t ec_calib_array_pos=0;
|
||||
#define EC_CALIB_READ_INTERVAL 250 //interval of reading adc value inside a measurement
|
||||
|
||||
#define EC_ARRAY_SIZE 256
|
||||
#define EC_ARRAY_SIZE 64
|
||||
uint16_t ec_array[EC_ARRAY_SIZE];
|
||||
uint16_t ec_array_pos=EC_ARRAY_SIZE;
|
||||
unsigned long last_measurement_ec=0;
|
||||
#define EC_MEASUREMENT_INTERVAL 10*60*1000 //complete filtered measurement every x ms
|
||||
#define EC_MEASUREMENT_INTERVAL 10*60*1000 //complete filtered measurement every x ms
|
||||
//One filtered measurement takes EC_READ_INTERVAL*EC_ARRAY_SIZE*4
|
||||
#define EC_READ_INTERVAL 10 //interval of reading adc value inside a measurement. one reading takes about 9-10ms
|
||||
#define EC_READ_INTERVAL 50 //interval of reading adc value inside a measurement. one reading takes about 9-10ms
|
||||
|
||||
#define EC_RELAY_SWITCH_SETTLETIME 500 //time until voltage of ec circuit has settled
|
||||
|
||||
|
@ -48,16 +52,20 @@ unsigned long ec_last_change_relay=0; //millis of last relay change
|
|||
|
||||
enum ECState{IDLE,MEASURE};
|
||||
|
||||
|
||||
|
||||
ECState ecstate=IDLE;
|
||||
|
||||
float ec_calib_adc;
|
||||
|
||||
float ec_adc;
|
||||
float ec_adc_adjusted; //adjusted for reference resistor
|
||||
float ec_calib_adc;
|
||||
float ec; //ec value after adjustment for reference (at current temperature)
|
||||
float ec25; //ec value but temperature adjusted for 25 degC
|
||||
|
||||
float ec_tempadjust_alpa=0.02;
|
||||
float ec_reference_adc=6016.88; //adc reference value for the calibration resistor measurement.
|
||||
float ec_reference_adc=EC_REFERENCE_ADC; //adc reference value for the calibration resistor measurement.
|
||||
|
||||
//EC short circuit adc value: 17497, 17861.4 (for connection resistance testing)
|
||||
//EC open circuit adc value: 738, 730, 737.27
|
||||
|
||||
|
@ -66,21 +74,35 @@ float ec_reference_adc=6016.88; //adc reference value for the calibration resist
|
|||
//float ec_calibration_polynom[]={1033.928052655456,-3.8909104921922895,0.005627541436014758,-4.103988840997024e-06,1.7231981870816133e-09,-4.433707707721975e-13,7.203892111369395e-17,-7.406549810844244e-21,4.667420606439905e-25,-1.6439457516812463e-29,2.477292190335455e-34}; //20220505
|
||||
//float ec_calibration_polynom[]={-323.68589929771457,0.5836096440900665,-0.000279737392438965,5.98673062873e-08,-5.4460235093798435e-12,1.8535134644431135e-16}; //20230509
|
||||
//float ec_calibration_polynom[]={212.6826331524675,-0.6043878865263305,0.000571551634082491,-1.827897106718841e-07,2.682337041246909e-11,-1.8368511021965982e-15,4.8269168538877025e-20}; //20230509 manuell
|
||||
float ec_calibration_polynom[]={-202.42892340068445,0.3775267988688599,-0.0001603031198536654,3.398964768344757e-08,-3.0277753798278316e-12,1.0137804308289433e-16}; //20230620, graphite electrodes
|
||||
float ec_calibration_linearize_below_adc=4000; //use linear approximation below this adc value. 0=disable
|
||||
float ec_calibration_linear_lowADC=746; //x0
|
||||
float ec_calibration_linear_lowEC=0; //y0
|
||||
//float ec_calibration_polynom[]={8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13}; //20240423, graphite electrodes
|
||||
|
||||
// 20240423, graphite electrodes DB {8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13}
|
||||
// 20240423, graphite electrodes NFT {18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13}
|
||||
float ec_calibration_polynom[]=EC_CALIBRATION_POLYNOM;
|
||||
|
||||
float ec_calibration_linearize_below_adc=EC_CALIBRATION_LINEARIZE_BELOW_ADC; //use linear approximation below this adc value. 0=disable
|
||||
float ec_calibration_linear_lowADC=EC_CALIBRATION_LINEAR_LOWADC; //x0
|
||||
float ec_calibration_linear_lowEC=EC_CALIBRATION_LINEAR_LOWEC; //y0
|
||||
|
||||
/*
|
||||
float ec_calibration_polynom_B[]={18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13}; //20240423, graphite electrodes
|
||||
float ec_calibration_linearize_below_adc_B=2000; //use linear approximation below this adc value. 0=disable
|
||||
float ec_calibration_linear_lowADC_B=728; //x0
|
||||
float ec_calibration_linear_lowEC_B=0; //y0
|
||||
*/
|
||||
|
||||
|
||||
bool ec_measurementReady();
|
||||
void ec_startMeasurement();
|
||||
void ec_setRange(uint8_t range);
|
||||
void ec_connectProbe(bool);
|
||||
void ec_releaseRelay();
|
||||
float ec_getECfromADC(float adc);
|
||||
float ec_getECfromADC(float adc, float ec_calibration_polynom[], size_t len_ec_calibration_polynom, float ec_calibration_linearize_below_adc, float ec_calibration_linear_lowADC, float ec_calibration_linear_lowEC);
|
||||
float ec_calculateEC25(float pEC,float pTemp);
|
||||
bool ec_measurementRunning();
|
||||
|
||||
void ec_setup() {
|
||||
|
||||
/*
|
||||
timing_ec_adc.minchange=0.0;
|
||||
timing_ec_adc.maxchange=250;
|
||||
timing_ec_adc.mintime=10*000;
|
||||
|
@ -105,18 +127,27 @@ void ec_setup() {
|
|||
timing_ec_sc.maxchange=50;
|
||||
timing_ec_sc.mintime=10*000;
|
||||
timing_ec_sc.maxtime=60*60*1000;
|
||||
|
||||
*/
|
||||
|
||||
ledcSetup(EC_PWM_CH, EC_FREQUENCY, EC_RESOLUTION);
|
||||
ledcAttachPin(EC_PIN_FREQ, EC_PWM_CH);
|
||||
ledcWrite(EC_PWM_CH, 127); //50% duty cycle
|
||||
|
||||
pinMode(EC_PIN_RELAY_PROBE,OUTPUT); //LOW=Calibration/idle, HIGH=Probe connected
|
||||
|
||||
//Test Relay
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,HIGH);
|
||||
delay(500);
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,LOW);
|
||||
|
||||
ec_releaseRelay();
|
||||
|
||||
}
|
||||
|
||||
void ec_loop(unsigned long loopmillis) {
|
||||
if (!adsenabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
static unsigned long last_read_ec=0;
|
||||
|
||||
|
@ -124,11 +155,13 @@ void ec_loop(unsigned long loopmillis) {
|
|||
switch (ecstate) {
|
||||
case IDLE:
|
||||
|
||||
if (loopmillis>last_measurement_ec+EC_MEASUREMENT_INTERVAL || force_ec_measurement) { //start measurement if idle
|
||||
if ( (loopmillis>last_measurement_ec+EC_MEASUREMENT_INTERVAL) || force_ec_measurement) { //start measurement if idle
|
||||
//Serial.println("DEBUG: Start measurement");
|
||||
last_measurement_ec=loopmillis;
|
||||
force_ec_measurement=false;
|
||||
ec_startMeasurement();
|
||||
ec_connectProbe(true);
|
||||
|
||||
|
||||
ecstate=MEASURE;
|
||||
}
|
||||
|
@ -136,23 +169,35 @@ void ec_loop(unsigned long loopmillis) {
|
|||
|
||||
case MEASURE:
|
||||
if (ec_measurementReady()) {
|
||||
//Serial.println("DEBUG: Measurement Ready");
|
||||
|
||||
ec_releaseRelay();
|
||||
ec_adc=getMean(ec_array,EC_ARRAY_SIZE);
|
||||
//Serial.print("ec_adc="); Serial.println(ec_adc);
|
||||
if (isValueArrayOK(ec_calib_array,EC_CALIB_ARRAY_SIZE,EC_ADC_UNAVAILABLE)){
|
||||
ec_calib_adc=getMean(ec_calib_array,EC_CALIB_ARRAY_SIZE);
|
||||
//Serial.print("ec_calib_adc="); Serial.println(ec_calib_adc);
|
||||
ec_adc_adjusted=mapf(ec_adc,0,ec_calib_adc,0,ec_reference_adc);
|
||||
ec=ec_getECfromADC(ec_adc_adjusted);
|
||||
//Serial.print("ec_adc_adjusted="); Serial.println(ec_adc_adjusted);
|
||||
|
||||
ec=ec_getECfromADC(ec_adc_adjusted, ec_calibration_polynom, sizeof(ec_calibration_polynom), ec_calibration_linearize_below_adc, ec_calibration_linear_lowADC, ec_calibration_linear_lowEC);
|
||||
//Serial.print("ec="); Serial.println(ec);
|
||||
ec25=ec_calculateEC25(ec,tempC_reservoir);
|
||||
|
||||
|
||||
//Serial.println("DEBUG: EC OK");
|
||||
}else{
|
||||
ec_calib_adc=EC_ADC_UNAVAILABLE;
|
||||
ec_adc_adjusted=EC_ADC_UNAVAILABLE;
|
||||
ec=EC_UNAVAILABLE;
|
||||
ec25=EC_UNAVAILABLE;
|
||||
//Serial.println("DEBUG: EC unavailable");
|
||||
}
|
||||
|
||||
|
||||
ec_flag_measurement_available=true;
|
||||
|
||||
ecstate=IDLE;
|
||||
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -160,12 +205,19 @@ void ec_loop(unsigned long loopmillis) {
|
|||
}
|
||||
|
||||
|
||||
if (ec_array_pos<EC_ARRAY_SIZE) { //measurement running
|
||||
if (ec_measurementRunning()) { //measurement running
|
||||
if (loopmillis>last_read_ec+EC_READ_INTERVAL) { //take reading into array
|
||||
last_read_ec=loopmillis;
|
||||
|
||||
if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled
|
||||
if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled
|
||||
//Serial.print("Get ADC Reading");
|
||||
uint16_t value = ADS.readADC(EC_ADS_CHANNEL);
|
||||
//Serial.print(". Write to pos ");
|
||||
//Serial.print(ec_array_pos);
|
||||
//Serial.print(" = ");
|
||||
//Serial.println(value);
|
||||
|
||||
|
||||
|
||||
ec_array[ec_array_pos]=value;
|
||||
|
||||
|
@ -213,17 +265,20 @@ void ec_connectProbe(bool relay) {
|
|||
bool val=digitalRead(EC_PIN_RELAY_PROBE);
|
||||
if (val!=relay) { //write only if different
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,relay);
|
||||
//Serial.print("DEBUG: Set Relay to "); Serial.println(relay);
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
}
|
||||
|
||||
void ec_releaseRelay() {
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,LOW);
|
||||
//Serial.println("DEBUG: Released Relays");
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
|
||||
float ec_getECfromADC(float adc) {
|
||||
uint8_t polynom_order=sizeof(ec_calibration_polynom) / sizeof(ec_calibration_polynom[0]);
|
||||
float ec_getECfromADC(float adc, float ec_calibration_polynom[], size_t len_ec_calibration_polynom, float ec_calibration_linearize_below_adc, float ec_calibration_linear_lowADC, float ec_calibration_linear_lowEC) {
|
||||
//uint8_t polynom_order=sizeof(ec_calibration_polynom) / sizeof(ec_calibration_polynom[0]);
|
||||
uint8_t polynom_order=len_ec_calibration_polynom / sizeof(ec_calibration_polynom[0]);
|
||||
double _ec=0;
|
||||
if (adc>=ec_calibration_linearize_below_adc) { //adc is in range where polynomial approximation fits well
|
||||
for (uint8_t i=0;i<polynom_order;i++) {
|
||||
|
@ -253,5 +308,8 @@ float ec_calculateEC25(float pEC,float pTemp)
|
|||
return pEC/(1.0+ec_tempadjust_alpa*(pTemp-25.0));
|
||||
}
|
||||
|
||||
bool ec_measurementRunning() {
|
||||
return (ec_array_pos<EC_ARRAY_SIZE);
|
||||
}
|
||||
|
||||
#endif
|
312
include/ec_old_with_calibration.h
Normal file
312
include/ec_old_with_calibration.h
Normal file
|
@ -0,0 +1,312 @@
|
|||
#ifndef _EC_H_
|
||||
#define _EC_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#define EC_PIN_RELAY_PROBE 27
|
||||
#define EC_PIN_RELAY_CALIBRATION 26
|
||||
#define EC_PIN_RELAY_RANGE 25
|
||||
|
||||
|
||||
#define EC_PIN_ADC 4
|
||||
#define EC_PIN_FREQ 5
|
||||
#define EC_PWM_CH 0
|
||||
#define EC_RESOLUTION 8
|
||||
#define EC_FREQUENCY 5000
|
||||
|
||||
#define EC_ARRAY_SIZE 128
|
||||
uint16_t ec_array_rangeLow[EC_ARRAY_SIZE];
|
||||
uint16_t ec_array_rangeHigh[EC_ARRAY_SIZE];
|
||||
uint16_t ec_array_pos=EC_ARRAY_SIZE*2;
|
||||
#define EC_MEASUREMENT_INTERVAL 10000 //complete filtered measurement every x ms
|
||||
//One filtered measurement takes EC_READ_INTERVAL*EC_ARRAY_SIZE*2
|
||||
#define EC_READ_INTERVAL 5 //interval of reading adc value inside a measurement
|
||||
|
||||
|
||||
|
||||
float ec_calib_rangeLow_Rlow=0; //adc value for low value resistor on low resistor value range
|
||||
float ec_calib_rangeLow_Rhigh=0; //adc value for high value resistor on low resistor value range
|
||||
float ec_calib_rangeHigh_Rlow=0; //adc value for low value resistor on high resistor value range
|
||||
float ec_calib_rangeHigh_Rhigh=0; //adc value for high value resistor on high resistor value range
|
||||
const float ec_calibresistor_low=990; //value of low value calibration resistor. Low is Relay NO
|
||||
const float ec_calibresistor_high=9943; //value of high value calibration resistor. HIGH is Relay NC
|
||||
|
||||
unsigned long ec_last_calibration=0; //millis of last calibration
|
||||
#define EC_CALIBRATION_VALID_TIME 120000 //time in ms a calibration is valid for
|
||||
#define EC_RELAY_SWITCH_SETTLETIME 500 //time until voltage of ec circuit has settled
|
||||
|
||||
unsigned long ec_last_change_relay=0; //millis of last relay change
|
||||
|
||||
enum ECState{IDLE,CALIBRATELOW,CALIBRATEHIGH,MEASURE};
|
||||
|
||||
ECState ecstate=CALIBRATELOW;
|
||||
|
||||
|
||||
bool ec_measurementReady();
|
||||
void ec_startMeasurement();
|
||||
void ec_setRange(bool);
|
||||
void ec_connectProbe(bool);
|
||||
void ec_setCalibration(bool calib);
|
||||
void ec_releaseRelay();
|
||||
void ec_startCalibration();
|
||||
void ec_checkIfSettleTimeOK();
|
||||
float ec_getResistance(float adc,float caliblow,float resistorlow,float calibhigh,float resistorhigh);
|
||||
|
||||
void ec_setup() {
|
||||
pinMode(EC_PIN_ADC,INPUT);
|
||||
|
||||
ledcSetup(EC_PWM_CH, EC_FREQUENCY, EC_RESOLUTION);
|
||||
ledcAttachPin(EC_PIN_FREQ, EC_PWM_CH);
|
||||
ledcWrite(EC_PWM_CH, 127); //50% duty cycle
|
||||
|
||||
pinMode(EC_PIN_RELAY_PROBE,OUTPUT); //LOW=Calibration/idle, HIGH=Probe connected
|
||||
pinMode(EC_PIN_RELAY_CALIBRATION,OUTPUT); //LOW=NC Calibration Resistor, HIGH=NO Calib. Res.
|
||||
pinMode(EC_PIN_RELAY_RANGE,OUTPUT); //LOW=NC Range Resistor, HIGH=NO Range Resistor
|
||||
ec_releaseRelay();
|
||||
|
||||
|
||||
ec_startCalibration();
|
||||
}
|
||||
|
||||
void ec_loop(unsigned long loopmillis) {
|
||||
static unsigned long last_measurement_ec=0;
|
||||
static unsigned long last_read_ec=0;
|
||||
|
||||
switch (ecstate) {
|
||||
case IDLE:
|
||||
|
||||
if (loopmillis>ec_last_calibration+EC_CALIBRATION_VALID_TIME) { //calibration needed
|
||||
ec_last_calibration=loopmillis;
|
||||
ecstate=CALIBRATELOW;
|
||||
|
||||
ec_startCalibration();
|
||||
}
|
||||
|
||||
|
||||
if (loopmillis>last_measurement_ec+EC_MEASUREMENT_INTERVAL && ecstate==IDLE) { //start measurement if idle
|
||||
last_measurement_ec=loopmillis;
|
||||
ec_startMeasurement();
|
||||
ec_connectProbe(true);
|
||||
ecstate=MEASURE;
|
||||
Serial.println("EC Take Measurement");
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case CALIBRATELOW:
|
||||
if (ec_measurementReady()) {
|
||||
//Serial.println("EC CALIBRATELOW measurement ready");
|
||||
//save measurement
|
||||
ec_calib_rangeLow_Rlow=getMean(ec_array_rangeLow,EC_ARRAY_SIZE);
|
||||
ec_calib_rangeHigh_Rlow=getMean(ec_array_rangeHigh,EC_ARRAY_SIZE);
|
||||
|
||||
//ec_checkIfSettleTimeOK();
|
||||
|
||||
//Switch to High calibration
|
||||
ecstate=CALIBRATEHIGH;
|
||||
|
||||
ec_setCalibration(HIGH);
|
||||
ec_setRange(LOW);
|
||||
ec_startMeasurement();
|
||||
//Serial.println("EC Start calibration high");
|
||||
}
|
||||
break;
|
||||
|
||||
case CALIBRATEHIGH:
|
||||
if (ec_measurementReady()) {
|
||||
//Serial.println("EC CALIBRATEHIGH measurement ready");
|
||||
//save measurement
|
||||
ec_calib_rangeLow_Rhigh=getMean(ec_array_rangeLow,EC_ARRAY_SIZE);
|
||||
ec_calib_rangeHigh_Rhigh=getMean(ec_array_rangeHigh,EC_ARRAY_SIZE);
|
||||
|
||||
//ec_checkIfSettleTimeOK();
|
||||
|
||||
//Serial.println("EC Release Relay");
|
||||
ec_releaseRelay();
|
||||
|
||||
ecstate=IDLE;
|
||||
|
||||
/*
|
||||
Serial.println("EC Calibration done");
|
||||
Serial.print("ec_calib_rangeLow_Rlow="); Serial.println(ec_calib_rangeLow_Rlow);
|
||||
Serial.print("ec_calib_rangeHigh_Rlow="); Serial.println(ec_calib_rangeHigh_Rlow);
|
||||
Serial.print("ec_calib_rangeLow_Rhigh="); Serial.println(ec_calib_rangeLow_Rhigh);
|
||||
Serial.print("ec_calib_rangeHigh_Rhigh="); Serial.println(ec_calib_rangeHigh_Rhigh);
|
||||
*/
|
||||
Serial.println("EC Calibration Result: ");
|
||||
Serial.print(ec_calib_rangeLow_Rlow);
|
||||
Serial.print(", "); Serial.print(ec_calib_rangeHigh_Rlow);
|
||||
Serial.print(", "); Serial.print(ec_calib_rangeLow_Rhigh);
|
||||
Serial.print(", "); Serial.println(ec_calib_rangeHigh_Rhigh);
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case MEASURE:
|
||||
if (ec_measurementReady()) {
|
||||
ec_releaseRelay();
|
||||
float adc_rangelow=getMean(ec_array_rangeLow,EC_ARRAY_SIZE);
|
||||
float adc_rangehigh=getMean(ec_array_rangeHigh,EC_ARRAY_SIZE);
|
||||
|
||||
Serial.println();
|
||||
float resistance_rangelow=ec_getResistance(adc_rangelow,ec_calib_rangeLow_Rlow,ec_calibresistor_low,ec_calib_rangeLow_Rhigh,ec_calibresistor_high);
|
||||
Serial.print("Range Low: ADC="); Serial.print(adc_rangelow); Serial.print(", resistance="); Serial.println(resistance_rangelow);
|
||||
Serial.println();
|
||||
float resistance_rangehigh=ec_getResistance(adc_rangehigh,ec_calib_rangeHigh_Rlow,ec_calibresistor_low,ec_calib_rangeHigh_Rhigh,ec_calibresistor_high);
|
||||
Serial.print("Range High: ADC="); Serial.print(adc_rangehigh); Serial.print(", resistance="); Serial.println(resistance_rangehigh);
|
||||
ecstate=IDLE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (loopmillis>last_read_ec+EC_READ_INTERVAL && ec_array_pos/2<EC_ARRAY_SIZE) { //take reading into array if measurement running
|
||||
last_read_ec=loopmillis;
|
||||
|
||||
//flag_print= ec_array_pos==EC_ARRAY_SIZE;
|
||||
//ec_array_pos%=EC_ARRAY_SIZE;
|
||||
|
||||
if (ec_array_pos<EC_ARRAY_SIZE){ //low range
|
||||
ec_setRange(LOW);
|
||||
}else{ //high range
|
||||
ec_setRange(HIGH);
|
||||
}
|
||||
|
||||
if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled
|
||||
uint16_t value=analogRead(EC_PIN_ADC);
|
||||
if (ec_array_pos<EC_ARRAY_SIZE){ //low range
|
||||
ec_array_rangeLow[ec_array_pos%EC_ARRAY_SIZE]=value;
|
||||
|
||||
}else{ //high range
|
||||
ec_array_rangeHigh[ec_array_pos%EC_ARRAY_SIZE]=value;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if (ec_array_pos==0) {
|
||||
Serial.println(""); Serial.print("Lowrange:");
|
||||
}
|
||||
if (ec_array_pos==EC_ARRAY_SIZE) {
|
||||
Serial.println(""); Serial.print("Highrange:");
|
||||
}
|
||||
Serial.print(value); Serial.print(" ");
|
||||
if (ec_array_pos==EC_ARRAY_SIZE*2-1) {
|
||||
Serial.println("");
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
ec_array_pos++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ec_startCalibration() {
|
||||
//Switch to Low calibration
|
||||
ec_setCalibration(LOW);
|
||||
ec_setRange(LOW);
|
||||
ec_startMeasurement();
|
||||
Serial.println("EC Started Calibration");
|
||||
}
|
||||
|
||||
void ec_startMeasurement() {
|
||||
ec_array_pos=0;
|
||||
}
|
||||
|
||||
bool ec_measurementReady(){
|
||||
if (ec_array_pos>=EC_ARRAY_SIZE*2) { //reached end of both arrays
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void ec_setRange(bool range) {
|
||||
//range low means low resistor value -> NO -> relay High
|
||||
bool val=digitalRead(EC_PIN_RELAY_RANGE);
|
||||
if (val!=!range) { //write only if different
|
||||
digitalWrite(EC_PIN_RELAY_RANGE,!range);
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
}
|
||||
|
||||
void ec_connectProbe(bool relay) {
|
||||
bool val=digitalRead(EC_PIN_RELAY_PROBE);
|
||||
if (val!=relay) { //write only if different
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,relay);
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
}
|
||||
|
||||
void ec_setCalibration(bool calib) {
|
||||
//calib low means low resistor value -> NO -> relay high
|
||||
ec_connectProbe(false);
|
||||
bool val=digitalRead(EC_PIN_RELAY_CALIBRATION);
|
||||
if (val!=!calib) { //write only if different
|
||||
digitalWrite(EC_PIN_RELAY_CALIBRATION,!calib);
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
}
|
||||
|
||||
void ec_releaseRelay() {
|
||||
digitalWrite(EC_PIN_RELAY_PROBE,LOW);
|
||||
digitalWrite(EC_PIN_RELAY_CALIBRATION,LOW);
|
||||
digitalWrite(EC_PIN_RELAY_RANGE,LOW);
|
||||
ec_last_change_relay=millis();
|
||||
}
|
||||
|
||||
void ec_checkIfSettleTimeOK() {
|
||||
/*
|
||||
Serial.print("ec_array_rangeLow[0]="); Serial.println(ec_array_rangeLow[0]);
|
||||
Serial.print("rangeLow min="); Serial.println(getMin(ec_array_rangeLow,EC_ARRAY_SIZE));
|
||||
Serial.print("rangeLow max="); Serial.println(getMax(ec_array_rangeLow,EC_ARRAY_SIZE));
|
||||
*/
|
||||
if (ec_array_rangeLow[0]<=getMin(ec_array_rangeLow,EC_ARRAY_SIZE) || ec_array_rangeLow[0]>=getMax(ec_array_rangeLow,EC_ARRAY_SIZE)){
|
||||
//is first value the highest or lowest?
|
||||
Serial.println("Warning: EC_RELAY_SWITCH_SETTLETIME might be too low! (ec_calib_rangeLow_Rlow)");
|
||||
}
|
||||
|
||||
/*
|
||||
Serial.print("ec_array_rangeHigh[0]="); Serial.println(ec_array_rangeHigh[0]);
|
||||
Serial.print("rangeHigh min="); Serial.println(getMin(ec_array_rangeHigh,EC_ARRAY_SIZE));
|
||||
Serial.print("rangeHigh max="); Serial.println(getMax(ec_array_rangeHigh,EC_ARRAY_SIZE));
|
||||
*/
|
||||
if (ec_array_rangeHigh[0]<=getMin(ec_array_rangeHigh,EC_ARRAY_SIZE) || ec_array_rangeHigh[0]>=getMax(ec_array_rangeHigh,EC_ARRAY_SIZE)){
|
||||
//is first value the highest or lowest?
|
||||
Serial.println("Warning: EC_RELAY_SWITCH_SETTLETIME might be too low! (ec_array_rangeHigh)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float ec_getResistance(float adc,float caliblow,float resistorlow,float calibhigh,float resistorhigh)
|
||||
{
|
||||
//adc = adc reading to calculate resistance for
|
||||
//caliblow = adc value from calibration. Low resistance
|
||||
//resistorlow = actual resistor value. Low resistance
|
||||
//calibhjgh = adc value from calibration. High resistance
|
||||
//resistorhigh = actual resistor value. High resistance
|
||||
|
||||
//y=mx+a;
|
||||
//resistorlow=m*caliblow+a;
|
||||
//resistorhigh=m*calibhigh+a;
|
||||
|
||||
//linear interpolation interpolate
|
||||
double m=(resistorhigh-resistorlow)/(calibhigh-caliblow);
|
||||
float a=resistorlow-m*caliblow;
|
||||
|
||||
Serial.print("m="); Serial.println(m);
|
||||
Serial.print("a="); Serial.println(a);
|
||||
|
||||
return m*adc+a;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -3,9 +3,11 @@
|
|||
|
||||
mqttValueTiming timing_flow;
|
||||
|
||||
#define FLOW_PIN 19
|
||||
//#define FLOW_PIN 16 //move to platformio.ini
|
||||
uint16_t flow_counter=0; //maximum counts/s measured with Eden 128 Pump was 171
|
||||
|
||||
void IRAM_ATTR isr_flow();
|
||||
|
||||
unsigned long last_read_flow=0;
|
||||
#define READINTERVAL_FLOW 10000
|
||||
float flow_factor=7.5; //F=7.5*flowrate[L/min]
|
||||
|
@ -15,14 +17,18 @@ uint32_t flow_counter_sum=0;
|
|||
|
||||
|
||||
|
||||
|
||||
void flow_setup() {
|
||||
|
||||
timing_flow.minchange=0.0;
|
||||
timing_flow.maxchange=0.3;
|
||||
timing_flow.mintime=10*000;
|
||||
timing_flow.mintime=10*1000;
|
||||
timing_flow.maxtime=30*60*1000;
|
||||
|
||||
|
||||
|
||||
pinMode(FLOW_PIN, INPUT_PULLUP);
|
||||
|
||||
attachInterrupt(FLOW_PIN, isr_flow, CHANGE);
|
||||
}
|
||||
|
||||
|
@ -34,6 +40,7 @@ void flow_loop(unsigned long loopmillis) {
|
|||
flow_counter=0;
|
||||
last_read_flow=loopmillis;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void IRAM_ATTR isr_flow() {
|
||||
|
@ -42,4 +49,5 @@ void IRAM_ATTR isr_flow() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -120,4 +120,43 @@ float mapf(float x, float in_min, float in_max, float out_min, float out_max)
|
|||
}
|
||||
|
||||
|
||||
|
||||
void i2cscan()
|
||||
{
|
||||
byte error, address;
|
||||
int nDevices;
|
||||
|
||||
delay(500);
|
||||
Serial.println("Scanning...");
|
||||
|
||||
nDevices = 0;
|
||||
for(address = 1; address < 127; address++ )
|
||||
{
|
||||
// The i2c_scanner uses the return value of
|
||||
// the Write.endTransmisstion to see if
|
||||
// a device did acknowledge to the address.
|
||||
Wire.beginTransmission(address);
|
||||
error = Wire.endTransmission();
|
||||
|
||||
if (error == 0)
|
||||
{
|
||||
Serial.print("I2C device found at address 0x");
|
||||
if (address<16)
|
||||
Serial.print("0");
|
||||
Serial.print(address,HEX);
|
||||
Serial.println(" !");
|
||||
|
||||
nDevices++;
|
||||
}
|
||||
else if (error==4)
|
||||
{
|
||||
Serial.print("Unknown error at address 0x");
|
||||
if (address<16)
|
||||
Serial.print("0");
|
||||
Serial.println(address,HEX);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
|
||||
mqttValueTiming timing_temperature_reservoir;
|
||||
mqttValueTiming timing_temperature_air;
|
||||
mqttValueTiming timing_temperature_case;
|
||||
|
||||
#include <OneWire.h>
|
||||
|
@ -14,12 +13,12 @@ void printAddress(DeviceAddress deviceAddress);
|
|||
//first address: 28FF6C1C7216058B
|
||||
//second address:
|
||||
|
||||
#define ONE_WIRE_BUS 18 //GPIO pin
|
||||
//#define ONE_WIRE_BUS_PIN 18 //GPIO pin moved to platformio.ini
|
||||
#define TEMPERATURE_PRECISION 12 //max is 12
|
||||
#define READINTERVAL_DS18B20 1000 //ms
|
||||
|
||||
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
|
||||
OneWire oneWire(ONE_WIRE_BUS);
|
||||
OneWire oneWire(ONE_WIRE_BUS_PIN);
|
||||
|
||||
// Pass our oneWire reference to Dallas Temperature.
|
||||
DallasTemperature sensors(&oneWire);
|
||||
|
@ -28,19 +27,17 @@ DallasTemperature sensors(&oneWire);
|
|||
#define TEMPMEAN_SIZE 16
|
||||
uint16_t tempCmean_pos=0;
|
||||
// arrays to hold device addresses
|
||||
DeviceAddress thermometerReservoir={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5};
|
||||
|
||||
//DeviceAddress thermometerAir={0x28,0xFF,0x6C,0x1C,0x72,0x16,0x05,0x8B};
|
||||
//DeviceAddress thermometerReservoirA={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44}; //NFT
|
||||
//DeviceAddress thermometerReservoirB={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5}; //DB
|
||||
DeviceAddress thermometerReservoir=THERMOMETER_ADDR_RESERVOIR;
|
||||
float tempC_reservoir; //last reading
|
||||
float tempCmean_reservoir_array[TEMPMEAN_SIZE];
|
||||
float tempCmean_reservoir=DEVICE_DISCONNECTED_C;
|
||||
|
||||
|
||||
|
||||
DeviceAddress thermometerAir={0x28,0xFF,0x6C,0x1C,0x72,0x16,0x05,0x8B};
|
||||
float tempC_air; //last reading
|
||||
float tempCmean_air_array[TEMPMEAN_SIZE];
|
||||
float tempCmean_air=DEVICE_DISCONNECTED_C;
|
||||
|
||||
DeviceAddress thermometerCase={0x10,0x7E,0x22,0x99,0x01,0x08,0x00,0xA4};
|
||||
DeviceAddress thermometerCase=THERMOMETER_ADDR_CASE;
|
||||
float tempC_case; //last reading
|
||||
float tempCmean_case_array[TEMPMEAN_SIZE];
|
||||
float tempCmean_case=DEVICE_DISCONNECTED_C;
|
||||
|
@ -54,10 +51,6 @@ void temperature_setup() {
|
|||
timing_temperature_reservoir.mintime=2*1000;
|
||||
timing_temperature_reservoir.maxtime=60*60*1000;
|
||||
|
||||
timing_temperature_air.minchange=0.0;
|
||||
timing_temperature_air.maxchange=0.5;
|
||||
timing_temperature_air.mintime=2*1000;
|
||||
timing_temperature_air.maxtime=60*60*1000;
|
||||
|
||||
timing_temperature_case.minchange=0.0;
|
||||
timing_temperature_case.maxchange=0.5;
|
||||
|
@ -67,7 +60,6 @@ void temperature_setup() {
|
|||
//initialize mean array
|
||||
for (uint16_t i=0;i<TEMPMEAN_SIZE;i++) {
|
||||
tempCmean_reservoir_array[i]=-127;
|
||||
tempCmean_air_array[i]=-127;
|
||||
tempCmean_case_array[i]=-127;
|
||||
}
|
||||
|
||||
|
@ -96,6 +88,9 @@ void temperature_setup() {
|
|||
DeviceAddress _addr;
|
||||
if (!oneWire.search(_addr)) {
|
||||
Serial.print("Error: Device not found");
|
||||
String _text="Error: Device not found. id=";
|
||||
_text.concat(i);
|
||||
publishInfo("error/temperature",_text);
|
||||
}else{
|
||||
Serial.print("Found device. Address:");
|
||||
printAddress(_addr);
|
||||
|
@ -105,22 +100,27 @@ void temperature_setup() {
|
|||
}
|
||||
|
||||
sensors.setResolution(thermometerReservoir, TEMPERATURE_PRECISION);
|
||||
sensors.setResolution(thermometerAir, TEMPERATURE_PRECISION);
|
||||
sensors.setResolution(thermometerCase, TEMPERATURE_PRECISION);
|
||||
}
|
||||
|
||||
|
||||
void temperature_loop(unsigned long loopmillis) {
|
||||
|
||||
static unsigned long last_read_ds18b20;
|
||||
static unsigned long last_read_ds18b20=0;
|
||||
static bool flag_requestTemperatures=false;
|
||||
if (loopmillis>last_read_ds18b20+READINTERVAL_DS18B20) {
|
||||
if (loopmillis>last_read_ds18b20+READINTERVAL_DS18B20*10) { //timeout
|
||||
Serial.println("Warn: Request Temperatures Timeout!");
|
||||
if (mqtt) {
|
||||
publishInfo("error/temperature","Warn: Request Temperatures Timeout!");
|
||||
}
|
||||
flag_requestTemperatures=false;
|
||||
last_read_ds18b20=loopmillis;
|
||||
}
|
||||
if (!flag_requestTemperatures) {
|
||||
sensors.requestTemperatures(); //this takes ~600ms
|
||||
sensors.setWaitForConversion(false); //make async
|
||||
sensors.requestTemperatures(); //this takes ~600ms in non async mode. about 2ms in async mode
|
||||
sensors.setWaitForConversion(true);
|
||||
flag_requestTemperatures=true;
|
||||
}
|
||||
if (sensors.isConversionComplete()) {
|
||||
|
@ -130,7 +130,8 @@ void temperature_loop(unsigned long loopmillis) {
|
|||
tempC_reservoir = sensors.getTempC(thermometerReservoir);
|
||||
if (tempC_reservoir == DEVICE_DISCONNECTED_C)
|
||||
{
|
||||
Serial.print(" Error reading: "); printAddress(thermometerReservoir);
|
||||
Serial.print(" Error reading: "); printAddress(thermometerReservoir); Serial.println();
|
||||
publishInfo("error/temperature","Error reading thermometerReservoir");
|
||||
}else{
|
||||
tempCmean_reservoir_array[tempCmean_pos]=tempC_reservoir;
|
||||
if (isValueArrayOKf(tempCmean_reservoir_array,TEMPMEAN_SIZE,DEVICE_DISCONNECTED_C)) {
|
||||
|
@ -140,23 +141,12 @@ void temperature_loop(unsigned long loopmillis) {
|
|||
}
|
||||
}
|
||||
|
||||
tempC_air = sensors.getTempC(thermometerAir);
|
||||
if (tempC_air == DEVICE_DISCONNECTED_C)
|
||||
{
|
||||
Serial.print(" Error reading: "); printAddress(thermometerAir);
|
||||
}else{
|
||||
tempCmean_air_array[tempCmean_pos]=tempC_air;
|
||||
if (isValueArrayOKf(tempCmean_air_array,TEMPMEAN_SIZE,DEVICE_DISCONNECTED_C)) {
|
||||
tempCmean_air=getMeanf(tempCmean_air_array,TEMPMEAN_SIZE);
|
||||
}else{
|
||||
tempCmean_air=DEVICE_DISCONNECTED_C;
|
||||
}
|
||||
}
|
||||
|
||||
tempC_case = sensors.getTempC(thermometerCase);
|
||||
if (tempC_case == DEVICE_DISCONNECTED_C)
|
||||
{
|
||||
Serial.print(" Error reading: "); printAddress(thermometerCase);
|
||||
publishInfo("error/temperature","Error reading thermometerCase");
|
||||
}else{
|
||||
tempCmean_case_array[tempCmean_pos]=tempC_case;
|
||||
if (isValueArrayOKf(tempCmean_case_array,TEMPMEAN_SIZE,DEVICE_DISCONNECTED_C)) {
|
||||
|
|
|
@ -2,32 +2,74 @@
|
|||
#define _WATERLEVEL_H_
|
||||
|
||||
#include <Wire.h>
|
||||
#include <VL6180X.h>
|
||||
#ifdef WATERLEVELSENSOR_VL53L0X
|
||||
//#include <VL53L0X.h> //pololu/VL53L0X@^1.3.1
|
||||
#endif
|
||||
#ifdef WATERLEVELSENSOR_VL53L1X
|
||||
#include <VL53L1X.h> //pololu/VL53L1X@^1.3.1
|
||||
#endif
|
||||
|
||||
|
||||
VL6180X sensor;
|
||||
// To try different scaling factors, change the following define.
|
||||
// Valid scaling factors are 1, 2, or 3.
|
||||
#define SCALING 1
|
||||
|
||||
|
||||
#define READINTERVAL_WATERLEVEL 200
|
||||
|
||||
#define WATERLEVELMEAN_SIZE 32
|
||||
#define WATERLEVELMEAN_FILTER_CUTOFF 8 //max value is around WATERLEVELMEAN_SIZE/2
|
||||
// +++++++++++++++ Common Parameters ++++++++++
|
||||
|
||||
#define READINTERVAL_WATERLEVEL 500
|
||||
#define WATERLEVELMEAN_SIZE 16
|
||||
#define WATERLEVELMEAN_FILTER_CUTOFF 4 //max value is around WATERLEVELMEAN_SIZE/2
|
||||
|
||||
|
||||
#define WATERLEVEL_UNAVAILABLE -1 //-1 is also timeout value
|
||||
|
||||
|
||||
// +++++++++++++++ VL53L0X +++++++++++++++
|
||||
#ifdef WATERLEVELSENSOR_VL53L0X
|
||||
VL53L0X tofsensor;
|
||||
#endif
|
||||
#ifdef WATERLEVELSENSOR_VL53L1X
|
||||
VL53L1X tofsensor;
|
||||
#endif
|
||||
|
||||
|
||||
// Uncomment this line to use long range mode. This
|
||||
// increases the sensitivity of the sensor and extends its
|
||||
// potential range, but increases the likelihood of getting
|
||||
// an inaccurate reading because of reflections from objects
|
||||
// other than the intended target. It works best in dark
|
||||
// conditions.
|
||||
|
||||
//#define LONG_RANGE
|
||||
|
||||
// Uncomment ONE of these two lines to get
|
||||
// - higher speed at the cost of lower accuracy OR
|
||||
// - higher accuracy at the cost of lower speed
|
||||
|
||||
//#define HIGH_SPEED
|
||||
#define HIGH_ACCURACY
|
||||
|
||||
|
||||
|
||||
|
||||
float waterlevelMean_array[WATERLEVELMEAN_SIZE];
|
||||
uint16_t waterlevelMean_array_pos=0;
|
||||
#define WATERLEVEL_UNAVAILABLE -1
|
||||
float waterlevel=WATERLEVEL_UNAVAILABLE; //distance from floor to water surface [mm]
|
||||
float watervolume=WATERLEVEL_UNAVAILABLE; //calculated Volume in Reservoir
|
||||
float waterlevel=WATERLEVEL_UNAVAILABLE;
|
||||
float watervolume=WATERLEVEL_UNAVAILABLE;
|
||||
#define DISTANCE_UNAVAILABLE 65535
|
||||
uint16_t distance=DISTANCE_UNAVAILABLE;
|
||||
|
||||
|
||||
|
||||
//Calibration
|
||||
float waterlevel_calib_offset_measured=86; //Sollwert
|
||||
float waterlevel_calib_offset_sensor=78; //Istwert
|
||||
//raw reading is 78mm, ruler reads 86mm. VL8160 sensor is 169mm above bottom of reservoir.
|
||||
float waterlevel_calib_offset=WATERLEVEL_OFFSET; //c
|
||||
float waterlevel_calib_factor=WATERLEVEL_FACTOR; //m
|
||||
|
||||
float waterlevel_calib_reservoirArea=27*36.5; //area in cm^2
|
||||
|
||||
float waterlevel_calib_reservoirArea=RES_AREA; //area in cm^2
|
||||
|
||||
uint16_t distance_unsuccessful_count=0;
|
||||
|
||||
bool tofenabled=true;
|
||||
|
||||
|
||||
float waterlevel_heightToVolume(float distance);
|
||||
|
@ -37,59 +79,154 @@ mqttValueTiming timing_waterlevel;
|
|||
|
||||
void waterlevel_setup() {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Wire.begin();
|
||||
|
||||
byte error, address;
|
||||
int nDevices;
|
||||
|
||||
delay(500);
|
||||
Serial.println("Scanning...");
|
||||
|
||||
nDevices = 0;
|
||||
for(address = 1; address < 127; address++ )
|
||||
{
|
||||
// The i2c_scanner uses the return value of
|
||||
// the Write.endTransmisstion to see if
|
||||
// a device did acknowledge to the address.
|
||||
Wire.beginTransmission(address);
|
||||
error = Wire.endTransmission();
|
||||
|
||||
if (error == 0)
|
||||
{
|
||||
Serial.print("I2C device found at address 0x");
|
||||
if (address<16)
|
||||
Serial.print("0");
|
||||
Serial.print(address,HEX);
|
||||
Serial.println(" !");
|
||||
|
||||
nDevices++;
|
||||
}
|
||||
else if (error==4)
|
||||
{
|
||||
Serial.print("Unknown error at address 0x");
|
||||
if (address<16)
|
||||
Serial.print("0");
|
||||
Serial.println(address,HEX);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
timing_waterlevel.minchange=0.0;
|
||||
timing_waterlevel.maxchange=3.0;
|
||||
timing_waterlevel.maxchange=7.0;
|
||||
timing_waterlevel.mintime=30*000;
|
||||
timing_waterlevel.maxtime=60*60*1000;
|
||||
|
||||
Wire.begin();
|
||||
|
||||
sensor.init();
|
||||
sensor.configureDefault();
|
||||
sensor.setScaling(SCALING);
|
||||
sensor.setTimeout(500);
|
||||
|
||||
for (uint16_t i=0;i<WATERLEVELMEAN_SIZE;i++) {
|
||||
waterlevelMean_array[i]=-1; //-1 is also timeout value
|
||||
|
||||
waterlevelMean_array[i]=WATERLEVEL_UNAVAILABLE; //-1 is also timeout value
|
||||
}
|
||||
|
||||
delay(50);
|
||||
|
||||
|
||||
tofsensor.setTimeout(2000);
|
||||
if (!tofsensor.init())
|
||||
{
|
||||
Serial.println("Failed to detect and initialize tofsensor!");
|
||||
publishInfo("error/waterlevel","Failed to detect and initialize tofsensor");
|
||||
delay(1000);
|
||||
tofenabled=false;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if defined LONG_RANGE
|
||||
// lower the return signal rate limit (default is 0.25 MCPS)
|
||||
tofsensor.setSignalRateLimit(0.1);
|
||||
// increase laser pulse periods (defaults are 14 and 10 PCLKs)
|
||||
tofsensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
|
||||
tofsensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
|
||||
#endif
|
||||
|
||||
#if defined HIGH_SPEED
|
||||
// reduce timing budget to 20 ms (default is about 33 ms)
|
||||
tofsensor.setMeasurementTimingBudget(20000);
|
||||
#elif defined HIGH_ACCURACY
|
||||
// increase timing budget to 200 ms
|
||||
tofsensor.setMeasurementTimingBudget(200000);
|
||||
#endif
|
||||
|
||||
#if defined ROISIZE_WIDTH
|
||||
tofsensor.setROISize(ROISIZE_WIDTH,ROISIZE_HEIGHT); //default/maximum is 16x16
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
void waterlevel_loop(unsigned long loopmillis) {
|
||||
if (!tofenabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
static unsigned long last_read_waterlevel;
|
||||
if (loopmillis>=last_read_waterlevel+READINTERVAL_WATERLEVEL) {
|
||||
last_read_waterlevel=loopmillis;
|
||||
static unsigned long last_read_waterlevelB;
|
||||
if (loopmillis>=last_read_waterlevelB+READINTERVAL_WATERLEVEL) {
|
||||
last_read_waterlevelB=loopmillis;
|
||||
|
||||
|
||||
uint16_t distance=sensor.readRangeSingleMillimeters();
|
||||
distance=tofsensor.readRangeSingleMillimeters(); //out of range =255
|
||||
|
||||
//Serial.print("Distance reading:"); Serial.println(distance);
|
||||
//Serial.print("Distance reading B="); Serial.print(distance);Serial.println();
|
||||
|
||||
if (distance!=WATERLEVEL_UNAVAILABLE) { //successful
|
||||
|
||||
if (distance!=DISTANCE_UNAVAILABLE) { //successful
|
||||
waterlevelMean_array[waterlevelMean_array_pos]=distance;
|
||||
waterlevelMean_array_pos++;
|
||||
waterlevelMean_array_pos%=WATERLEVELMEAN_SIZE;
|
||||
distance_unsuccessful_count=0;
|
||||
}else{
|
||||
distance_unsuccessful_count++;
|
||||
if (distance_unsuccessful_count%20==0) {
|
||||
String _text="Distance unsuccessful count=";
|
||||
_text.concat(distance_unsuccessful_count);
|
||||
_text.concat(" distance=");
|
||||
_text.concat(distance);
|
||||
publishInfo("error/waterlevel",_text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isValueArrayOKf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVEL_UNAVAILABLE)){
|
||||
float _filteredDistance=getFilteredf(waterlevelMean_array,WATERLEVELMEAN_SIZE,WATERLEVELMEAN_FILTER_CUTOFF);
|
||||
|
||||
|
||||
|
||||
//Invert distance and offset
|
||||
waterlevel=(waterlevel_calib_offset_sensor+waterlevel_calib_offset_measured)-_filteredDistance;
|
||||
waterlevel=constrain(waterlevel_calib_offset+waterlevel_calib_factor*_filteredDistance,0,1000);
|
||||
watervolume=waterlevel_heightToVolume(waterlevel);
|
||||
|
||||
//Serial.print("Filtered reading B="); Serial.print(_filteredDistance); Serial.print(" fixed="); Serial.println(waterlevelB); Serial.println();
|
||||
|
||||
|
||||
//float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE);
|
||||
//Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE)-getMinf(waterlevelMean,WATERLEVELMEAN_SIZE))/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]");
|
||||
}else{
|
||||
waterlevel=WATERLEVEL_UNAVAILABLE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
float waterlevel_heightToVolume(float distance){
|
||||
return waterlevel_calib_reservoirArea/100 * distance/100; //area[cm^2] in dm^2 * height in dm = dm^3= L
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -31,6 +31,7 @@ bool enableTiming=true;
|
|||
|
||||
bool publishValueTimed(String topic,float value,uint8_t decimals,mqttValueTiming &mqttvt,unsigned long loopmillis);
|
||||
void publishValue(String topic,float value,uint8_t decimals);
|
||||
void publishInfo(String topic,String text);
|
||||
|
||||
void connect() {
|
||||
Serial.print("checking wifi...");
|
||||
|
@ -57,7 +58,8 @@ void connect() {
|
|||
Serial.println("\nconnected!");
|
||||
client.subscribe((String)client_id+"/sendall");
|
||||
client.subscribe((String)client_id+"/ec/trigger");
|
||||
// client.unsubscribe("/hello");
|
||||
client.subscribe((String)client_id+"/errorack");
|
||||
client.subscribe((String)client_id+"/reboot");
|
||||
}
|
||||
|
||||
|
||||
|
@ -75,6 +77,15 @@ void messageReceived(String &topic, String &payload) {
|
|||
force_ec_measurement=true;
|
||||
Serial.println("Forced EC Measurement");
|
||||
}
|
||||
if (topic==((String)client_id+"/errorack") && payload=="true") { //error acknowledge
|
||||
valueError=false;
|
||||
Serial.println("Reset value error flag");
|
||||
}
|
||||
if (topic==((String)client_id+"/reboot") && payload=="true") { //error acknowledge
|
||||
Serial.println("Reboot by mqtt");
|
||||
delay(100);
|
||||
ESP.restart();
|
||||
}
|
||||
}
|
||||
|
||||
bool mqtt_loop(unsigned long loopmillis) {
|
||||
|
@ -97,6 +108,13 @@ bool mqtt_loop(unsigned long loopmillis) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool publishValueTimedOverride(String topic,float value,uint8_t decimals,mqttValueTiming &mqttvt,unsigned long loopmillis) {
|
||||
mqttvt.lasttime=loopmillis;
|
||||
mqttvt.lastvalue=value;
|
||||
publishValue(topic,value,decimals);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool publishValueTimed(String topic,float value,uint8_t decimals,mqttValueTiming &mqttvt,unsigned long loopmillis) {
|
||||
unsigned long timediff=loopmillis-mqttvt.lasttime;
|
||||
float valuediff=abs(value-mqttvt.lastvalue);
|
||||
|
@ -122,4 +140,9 @@ void publishValue(String topic,float value,uint8_t decimals) {
|
|||
Serial.print("Publish Topic="); Serial.print((String)client_id+"/"+topic); Serial.print(" Message="); Serial.println(buffer);
|
||||
}
|
||||
|
||||
void publishInfo(String topic,String text) {
|
||||
client.publish((String)client_id+"/"+topic, text);
|
||||
Serial.print("Publish Topic="); Serial.print((String)client_id+"/"+topic); Serial.print(" Message="); Serial.println(text);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,6 +0,0 @@
|
|||
|
||||
const char ssid[] = "";
|
||||
const char pass[] = "";
|
||||
const char mqtt_host[] = "10.0.0.1";
|
||||
|
||||
const char client_id[] = "hydroponic";
|
6
include/wifi_settings.h.template
Normal file
6
include/wifi_settings.h.template
Normal file
|
@ -0,0 +1,6 @@
|
|||
|
||||
const char ssid[] = "network";
|
||||
const char pass[] = "password";
|
||||
const char mqtt_host[] = "10.0.0.1";
|
||||
|
||||
const char client_id[] = CLIENT_ID;
|
Binary file not shown.
BIN
messung/20240423_A.png
Normal file
BIN
messung/20240423_A.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
BIN
messung/20240423_B.png
Normal file
BIN
messung/20240423_B.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
61
messung/20240423_EC_Calibration.csv
Normal file
61
messung/20240423_EC_Calibration.csv
Normal file
|
@ -0,0 +1,61 @@
|
|||
time,tempReservoir,ECadcCalib,ECadc_A,ECadcAdjusted_A,ECadc_B,ECadcAdjusted_B,solutionAdded
|
||||
4198570,24.05,6021.19,736.05,735.52,736.82,736.30,0.0
|
||||
4296735,24.28,6021.19,741.08,740.55,743.13,742.60,0.1
|
||||
4347858,24.37,6022.41,756.32,755.63,761.81,761.11,0.2
|
||||
4393976,24.44,6022.34,769.87,769.17,779.88,779.17,0.3
|
||||
4441095,24.51,6021.16,787.24,786.68,804.25,803.68,0.4
|
||||
4481207,24.56,6021.78,807.27,806.62,836.09,835.41,0.5
|
||||
4525323,24.62,6020.94,832.99,832.43,890.25,889.65,0.6
|
||||
4567437,24.65,6021.25,867.22,866.59,980.75,980.04,0.7
|
||||
4615552,24.69,6021.44,928.14,927.44,1076.18,1075.36,0.8
|
||||
4654663,24.69,6022.38,1015.45,1014.52,1176.16,1175.09,0.9
|
||||
4729805,24.75,6022.47,1108.50,1107.47,1280.05,1278.87,1.0
|
||||
4768916,24.75,6022.19,1180.36,1179.32,1358.77,1357.58,1.1
|
||||
4800019,24.75,6022.63,1245.61,1244.42,1431.78,1430.41,1.2
|
||||
4832123,24.75,6022.34,1314.57,1313.38,1507.76,1506.39,1.3
|
||||
4865228,24.78,6022.13,1380.22,1379.02,1577.54,1576.17,1.4
|
||||
4899334,24.79,6022.41,1437.05,1435.73,1639.54,1638.03,1.5
|
||||
4938445,24.81,6022.66,1488.52,1487.10,1695.89,1694.27,1.6
|
||||
4984563,24.79,6022.13,1539.55,1538.21,1750.91,1749.39,1.7
|
||||
5024670,24.80,6021.88,1585.69,1584.37,1802.22,1800.73,1.8
|
||||
5065778,24.79,6022.00,1615.91,1614.54,1839.94,1838.38,1.9
|
||||
5098883,24.76,6022.16,1642.89,1641.46,1867.62,1865.98,2.0
|
||||
5204060,24.75,6022.28,1759.43,1757.86,1994.89,1993.10,2.5
|
||||
5243166,24.75,6021.84,1892.17,1890.61,2136.23,2134.47,3.0
|
||||
5283273,24.75,6021.16,2019.71,2018.27,2272.46,2270.84,3.5
|
||||
5331393,24.69,6022.75,2117.66,2115.60,2378.03,2375.71,4.0
|
||||
5378115,24.69,6023.34,2240.07,2237.67,2507.23,2504.54,4.5
|
||||
5420229,24.69,6022.56,2347.43,2345.22,2621.71,2619.24,5.0
|
||||
5482363,24.69,6022.81,2451.96,2449.55,2730.02,2727.33,5.5
|
||||
5537490,24.63,6021.94,2581.04,2578.87,2865.74,2863.33,6.1
|
||||
5683703,24.62,6021.72,2754.81,2752.59,3045.83,3043.38,7.0
|
||||
5731823,24.62,6023.03,2963.67,2960.64,3264.57,3261.24,8.0
|
||||
5819983,24.75,6021.56,3148.24,3145.79,3461.06,3458.37,9.0
|
||||
5860095,24.81,6021.47,3340.23,3337.69,3656.93,3654.15,10.0
|
||||
5907214,24.81,6022.00,3531.55,3528.54,3854.92,3851.64,11
|
||||
5938317,24.81,6021.56,3706.43,3703.55,4031.33,4028.19,12
|
||||
5968419,24.82,6021.97,3872.51,3869.24,4199.72,4196.17,13
|
||||
6068591,24.87,6021.47,4027.79,4024.72,4352.64,4349.32,14
|
||||
6113708,24.87,6021.94,4156.05,4152.56,4540.04,4536.23,15
|
||||
6151818,24.87,6021.00,4305.14,4302.19,4698.46,4695.25,16
|
||||
6227961,24.92,6021.72,4451.08,4447.51,4835.06,4831.18,17
|
||||
6282087,24.94,6021.19,4579.90,4576.63,4965.65,4962.10,18
|
||||
6332209,24.94,6022.09,4716.77,4712.69,5108.17,5103.75,19
|
||||
6380324,24.94,6021.75,4856.32,4852.39,5241.48,5237.24,20
|
||||
6465481,24.87,6021.75,5461.44,5457.02,5854.96,5850.23,25
|
||||
6528616,24.81,6021.94,5972.65,5967.63,6362.16,6356.81,30
|
||||
6654814,24.73,6021.22,6429.49,6424.86,6808.07,6803.16,35
|
||||
6743975,24.69,6020.84,6836.34,6831.84,7210.02,7205.27,40
|
||||
6837140,24.61,6021.56,7199.32,7193.73,7570.69,7564.80,45
|
||||
6886256,24.67,6022.13,7523.59,7517.03,7883.69,7876.82,50
|
||||
6952394,24.73,6021.84,8102.05,8095.37,8436.61,8429.66,60
|
||||
6999513,24.70,6021.25,8563.79,8557.57,8887.04,8880.58,70
|
||||
7051637,24.71,6022.16,8969.54,8961.68,9269.24,9261.12,80
|
||||
7098756,24.78,6022.19,9320.85,9312.63,9606.04,9597.58,90
|
||||
7138863,24.82,6021.66,9614.32,9606.70,9888.67,9880.82,100
|
||||
7270066,24.91,6021.84,10148.45,10140.08,10395.20,10386.63,120
|
||||
7328196,24.80,6021.75,10538.89,10530.37,10766.18,10757.47,140
|
||||
7392327,24.69,6020.97,10848.27,10840.90,11058.58,11051.07,160
|
||||
7449451,24.56,6023.06,11121.81,11110.40,11312.32,11300.70,180
|
||||
7505579,24.44,6021.81,11314.32,11305.06,11513.90,11504.47,200
|
||||
|
|
118
messung/20240423_EC_Calibration_Raw.txt
Normal file
118
messung/20240423_EC_Calibration_Raw.txt
Normal file
|
@ -0,0 +1,118 @@
|
|||
4198570,24.05,6021.19,736.05,735.52,736.82,736.30
|
||||
|
||||
4296735,24.28,6021.19,741.08,740.55,743.13,742.60
|
||||
|
||||
4347858,24.37,6022.41,756.32,755.63,761.81,761.11
|
||||
|
||||
4393976,24.44,6022.34,769.87,769.17,779.88,779.17
|
||||
|
||||
4441095,24.51,6021.16,787.24,786.68,804.25,803.68
|
||||
|
||||
4481207,24.56,6021.78,807.27,806.62,836.09,835.41
|
||||
|
||||
4525323,24.62,6020.94,832.99,832.43,890.25,889.65
|
||||
|
||||
4567437,24.65,6021.25,867.22,866.59,980.75,980.04
|
||||
|
||||
4615552,24.69,6021.44,928.14,927.44,1076.18,1075.36
|
||||
|
||||
4654663,24.69,6022.38,1015.45,1014.52,1176.16,1175.09
|
||||
|
||||
4729805,24.75,6022.47,1108.50,1107.47,1280.05,1278.87
|
||||
|
||||
4768916,24.75,6022.19,1180.36,1179.32,1358.77,1357.58
|
||||
|
||||
4800019,24.75,6022.63,1245.61,1244.42,1431.78,1430.41
|
||||
|
||||
4832123,24.75,6022.34,1314.57,1313.38,1507.76,1506.39
|
||||
|
||||
4865228,24.78,6022.13,1380.22,1379.02,1577.54,1576.17
|
||||
|
||||
4899334,24.79,6022.41,1437.05,1435.73,1639.54,1638.03
|
||||
|
||||
4938445,24.81,6022.66,1488.52,1487.10,1695.89,1694.27
|
||||
|
||||
4984563,24.79,6022.13,1539.55,1538.21,1750.91,1749.39
|
||||
|
||||
5024670,24.80,6021.88,1585.69,1584.37,1802.22,1800.73
|
||||
|
||||
5065778,24.79,6022.00,1615.91,1614.54,1839.94,1838.38
|
||||
|
||||
5098883,24.76,6022.16,1642.89,1641.46,1867.62,1865.98
|
||||
|
||||
5204060,24.75,6022.28,1759.43,1757.86,1994.89,1993.10
|
||||
|
||||
5243166,24.75,6021.84,1892.17,1890.61,2136.23,2134.47
|
||||
|
||||
5283273,24.75,6021.16,2019.71,2018.27,2272.46,2270.84
|
||||
|
||||
5331393,24.69,6022.75,2117.66,2115.60,2378.03,2375.71
|
||||
|
||||
5378115,24.69,6023.34,2240.07,2237.67,2507.23,2504.54
|
||||
|
||||
5420229,24.69,6022.56,2347.43,2345.22,2621.71,2619.24
|
||||
|
||||
5482363,24.69,6022.81,2451.96,2449.55,2730.02,2727.33
|
||||
|
||||
5537490,24.63,6021.94,2581.04,2578.87,2865.74,2863.33
|
||||
|
||||
5683703,24.62,6021.72,2754.81,2752.59,3045.83,3043.38
|
||||
|
||||
5731823,24.62,6023.03,2963.67,2960.64,3264.57,3261.24
|
||||
|
||||
5819983,24.75,6021.56,3148.24,3145.79,3461.06,3458.37
|
||||
|
||||
5860095,24.81,6021.47,3340.23,3337.69,3656.93,3654.15
|
||||
|
||||
5907214,24.81,6022.00,3531.55,3528.54,3854.92,3851.64
|
||||
|
||||
5938317,24.81,6021.56,3706.43,3703.55,4031.33,4028.19
|
||||
|
||||
5968419,24.82,6021.97,3872.51,3869.24,4199.72,4196.17
|
||||
|
||||
6068591,24.87,6021.47,4027.79,4024.72,4352.64,4349.32
|
||||
|
||||
6113708,24.87,6021.94,4156.05,4152.56,4540.04,4536.23
|
||||
|
||||
6151818,24.87,6021.00,4305.14,4302.19,4698.46,4695.25
|
||||
|
||||
6227961,24.92,6021.72,4451.08,4447.51,4835.06,4831.18
|
||||
|
||||
6282087,24.94,6021.19,4579.90,4576.63,4965.65,4962.10
|
||||
|
||||
6332209,24.94,6022.09,4716.77,4712.69,5108.17,5103.75
|
||||
|
||||
6380324,24.94,6021.75,4856.32,4852.39,5241.48,5237.24
|
||||
|
||||
6465481,24.87,6021.75,5461.44,5457.02,5854.96,5850.23
|
||||
|
||||
6528616,24.81,6021.94,5972.65,5967.63,6362.16,6356.81
|
||||
|
||||
6654814,24.73,6021.22,6429.49,6424.86,6808.07,6803.16
|
||||
|
||||
6743975,24.69,6020.84,6836.34,6831.84,7210.02,7205.27
|
||||
|
||||
6837140,24.61,6021.56,7199.32,7193.73,7570.69,7564.80
|
||||
|
||||
6886256,24.67,6022.13,7523.59,7517.03,7883.69,7876.82
|
||||
|
||||
6952394,24.73,6021.84,8102.05,8095.37,8436.61,8429.66
|
||||
|
||||
6999513,24.70,6021.25,8563.79,8557.57,8887.04,8880.58
|
||||
|
||||
7051637,24.71,6022.16,8969.54,8961.68,9269.24,9261.12
|
||||
|
||||
7098756,24.78,6022.19,9320.85,9312.63,9606.04,9597.58
|
||||
|
||||
7138863,24.82,6021.66,9614.32,9606.70,9888.67,9880.82
|
||||
|
||||
7270066,24.91,6021.84,10148.45,10140.08,10395.20,10386.63
|
||||
|
||||
7328196,24.80,6021.75,10538.89,10530.37,10766.18,10757.47
|
||||
|
||||
7392327,24.69,6020.97,10848.27,10840.90,11058.58,11051.07
|
||||
|
||||
7449451,24.56,6023.06,11121.81,11110.40,11312.32,11300.70
|
||||
|
||||
7505579,24.44,6021.81,11314.32,11305.06,11513.90,11504.47
|
||||
|
156
messung/20240423_EC_Calibration_Versuchsablauf.txt
Normal file
156
messung/20240423_EC_Calibration_Versuchsablauf.txt
Normal file
|
@ -0,0 +1,156 @@
|
|||
Kalibrierung der zwei neuen EC Probes für NFT und Dutch Bucket 2024.
|
||||
|
||||
Probe A: Die Längere
|
||||
Probe B: Die etwas kürzere
|
||||
|
||||
Lösung laut https://www.researchgate.net/profile/Sameer-Sayyad-2/post/How-is-it-possible-to-convert-conductivity-of-NaCl-solution-in-uS-to-its-salinity-NaCl-concentration-in-ppm/attachment/5abdeaedb53d2f63c3c2e08c/AS%3A609786693443585%401522395885345/download/conductivity+vs+concentration+NaCl+25+degress.pdf
|
||||
3g NaCl auf 1L H2O sind 5690 uS/cm @ 25°C
|
||||
Also 7,5g auf 0,25L H2O (für die 10 fache konzentration)
|
||||
Dann 50mL davon mit 450mL H2O auf 1L auffüllen (wieder 10fach runterverdünnen)
|
||||
|
||||
|
||||
Einige Messwerte genommen, ohne dass die EC Sensoren in Flüssigkeit sind.
|
||||
|
||||
time,tempReservoir,ECadcCalib,ECadc_A,ECadcAdjusted_A,ECadc_B,ECadcAdjusted_B
|
||||
1524060,14.73,6021.09,729.21,728.70,729.16,728.65
|
||||
1555158,14.69,6021.75,729.20,728.61,729.05,728.46
|
||||
1577247,14.63,6021.88,728.94,728.33,728.96,728.35
|
||||
1620362,14.56,6021.88,728.95,728.34,728.87,728.27
|
||||
minimum adc rawA= 728.87
|
||||
|
||||
|
||||
ca. 300mL dest. Wasser in 500mL Becherglas auf Magnetrührer
|
||||
Wasser temperiert auf 25°C und durchgehend temperatur gehalten
|
||||
Temperatursensor und DIY EC-Probe in Flüssigkeit platziert
|
||||
Magnetrührer auf langsamer Stufe (keine Strudelbildung)
|
||||
Messwert per Tastendruck erfasst (time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted)
|
||||
zeit
|
||||
temperatur d. flüssigkeit
|
||||
referenz adc wert (geschalteter fester widerstand statt probe)
|
||||
Roher ADC Messwert (Probe A)
|
||||
angepasster ADC Messwert (linear gemappt nach abweichung vom referenz adc wert, referenz adc wert vorher ermittelt und eingegeben in code) (Probe A)
|
||||
Roher ADC Messwert (Probe B)
|
||||
angepasster ADC Messwert (Probe B)
|
||||
|
||||
manuell notiert und später der csv angefügt: "solutionAdded"
|
||||
|
||||
|
||||
|
||||
Erster Messwert nur dest. Wasser.
|
||||
Weitere Messwerte jew. nach hinzufügen erst wenigen tropfen NaCl Lösung. Später mehr bis zu 10mL pro Messung.
|
||||
|
||||
|
||||
time,mL added
|
||||
4198000,0
|
||||
4296000,0.1
|
||||
4347000,0.2
|
||||
4393000,0.3
|
||||
4441000,0.4
|
||||
4481000,0.5
|
||||
4525000,0.6
|
||||
4567000,0.7
|
||||
4615000,0.8
|
||||
4654000,0.9
|
||||
4729000,1.0
|
||||
4768000,1.1
|
||||
4800000,1.2
|
||||
4832000,1.3
|
||||
4865000,1.4
|
||||
4899000,1.5
|
||||
4938000,1.6
|
||||
4984000,1.7
|
||||
5024000,1.8
|
||||
5065000,1.9
|
||||
5098000,2.0
|
||||
5204000,2.5
|
||||
5243000,3.0
|
||||
5283000,3.5
|
||||
5331000,4.0
|
||||
5378000,4.5
|
||||
5420000,5.0
|
||||
5482000,5.5
|
||||
5537000,6.1
|
||||
5683000,7.0
|
||||
5731000,8.0
|
||||
5819000,9.0
|
||||
5860000,10.0
|
||||
5907000,11
|
||||
5938000,12
|
||||
5968000,13
|
||||
6068000,14
|
||||
6113000,15
|
||||
6151000,16
|
||||
6227000,17
|
||||
6282000,18
|
||||
6332000,19
|
||||
6380000,20
|
||||
6465000,25
|
||||
6528000,30
|
||||
6654000,35
|
||||
6743000,40
|
||||
6837000,45
|
||||
6886000,50
|
||||
6952000,60
|
||||
6999000,70
|
||||
7051000,80
|
||||
7098000,90
|
||||
7138000,100
|
||||
7270000,120
|
||||
7328000,140
|
||||
7392000,160
|
||||
7449000,180
|
||||
7505000,200
|
||||
|
||||
|
||||
|
||||
|
||||
Werte in 20240423_EC_Calibration_Raw.txt
|
||||
Zusammengeführt in 20240423_EC_Calibration.csv
|
||||
|
||||
Auswertung in 20240423_EC_Calibration_with_graph.ods
|
||||
|
||||
Polynom x. Grades erstellt mit python approximate.py
|
||||
für approximate.py numpy==1.22 notwendig. venv benutzen.
|
||||
|
||||
Probe A:
|
||||
model order=4
|
||||
+2.478900495960682e-13*x^4 -4.069826379094172e-09*x^3 +3.425216464107108e-05*x^2 -0.026463423062356713*x^1 +8.718380956513695*x^0
|
||||
Excel:
|
||||
2.478900495960682e-13
|
||||
-4.069826379094172e-09
|
||||
3.425216464107108e-05
|
||||
-0.026463423062356713
|
||||
8.718380956513695
|
||||
Array:
|
||||
{8.718380956513695,-0.026463423062356713,3.425216464107108e-05,-4.069826379094172e-09,2.478900495960682e-13}
|
||||
|
||||
Probe B:
|
||||
model order=4
|
||||
+2.543662736303669e-13*x^4 -4.214254847500995e-09*x^3 +3.528797358514823e-05*x^2 -0.04069178351449846*x^1 +18.785904241636743*x^0
|
||||
Excel:
|
||||
2.543662736303669e-13
|
||||
-4.214254847500995e-09
|
||||
3.528797358514823e-05
|
||||
-0.04069178351449846
|
||||
18.785904241636743
|
||||
Array:
|
||||
{18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13}
|
||||
|
||||
|
||||
polynom in c++ code übernommen und punktuelle ergebnisse aus adc zu ec funktion ausgegeben und geplottet zur kontrolle, ob rechnung funktioniert.
|
||||
bei lowADC den niedrigsten adc wert genommen in luft (siehe erste messungen).
|
||||
|
||||
float ec_calibration_polynom_A[]={18.953002079376887,-0.057529180570340156,7.44612274805891e-05,-8.847448650204697e-09,5.388914121653647e-13}; //20240423, graphite electrodes
|
||||
float ec_calibration_linearize_below_adc_A=2000; //use linear approximation below this adc value. 0=disable
|
||||
float ec_calibration_linear_lowADC_A=728; //x0
|
||||
float ec_calibration_linear_lowEC_A=0; //y0
|
||||
|
||||
|
||||
float ec_calibration_polynom_B[]={40.838922264426685,-0.08846039894456156,7.671298605466989e-05,-9.161423581523883e-09,5.529701600660142e-13}; //20240423, graphite electrodes
|
||||
float ec_calibration_linearize_below_adc_B=2000; //use linear approximation below this adc value. 0=disable
|
||||
float ec_calibration_linear_lowADC_B=728; //x0
|
||||
float ec_calibration_linear_lowEC_B=0; //y0
|
||||
|
||||
Funktion getestet. Ergebnis in 20240423_FunctionTest.ods
|
||||
|
||||
|
BIN
messung/20240423_EC_Calibration_with_graph.ods
Normal file
BIN
messung/20240423_EC_Calibration_with_graph.ods
Normal file
Binary file not shown.
|
@ -1,3 +1,5 @@
|
|||
#Use venv
|
||||
|
||||
import numpy as np
|
||||
|
||||
from scipy.optimize import curve_fit
|
||||
|
@ -8,32 +10,46 @@ import matplotlib.pyplot as plt
|
|||
from pandas import *
|
||||
|
||||
# reading CSV file
|
||||
data = read_csv("20230620_NaCl_raw.csv")
|
||||
|
||||
# converting column data to list
|
||||
#solutionAdded = data['solutionAdded'].tolist() #in ml
|
||||
tempReservoir = data['tempReservoir'].tolist() #in C
|
||||
adc = data['ECadcAdjusted'].tolist() #adc reading
|
||||
data = read_csv("2025/20250415_db_2025_B.csv")
|
||||
|
||||
solutionConcentration=5924.8 #mg/L NaCl
|
||||
startWaterAmount=0.3 #L
|
||||
# converting column data to list
|
||||
solutionAdded = data['solutionAdded'].tolist() #in ml
|
||||
tempReservoir = data['tempReservoir'].tolist() #in C
|
||||
adc = data['ECadcAdjusted_A'].tolist() #adc reading
|
||||
|
||||
|
||||
|
||||
#solutionEC=5924.8 #mg/L NaCl
|
||||
solutionEC=5690 #mg/L NaCl
|
||||
startWaterAmount=300 #mL (same unit as solutionAded)
|
||||
|
||||
ppmToECfactor=1/0.46
|
||||
|
||||
#concentration = [x*solutionConcentration/(startWaterAmount+x) for x in solutionAdded]
|
||||
#ECcalculated = [x*ppmToECfactor for x in concentration] #uS/cm
|
||||
|
||||
ECmeasured = data['ecMeasured'].tolist() #in C
|
||||
## EC Calutation
|
||||
'''
|
||||
concentration = [x*solutionConcentration/(startWaterAmount+x) for x in solutionAdded]
|
||||
ECcalculated = [x*ppmToECfactor for x in concentration] #uS/cm
|
||||
'''
|
||||
### OR
|
||||
## EC of solution given
|
||||
ECcalculated = [x*solutionEC/(startWaterAmount+x) for x in solutionAdded] #uS/cm
|
||||
|
||||
|
||||
#ECmeasured = data['ecMeasured'].tolist() #in C
|
||||
|
||||
#print("Concentration")
|
||||
#print(concentration)
|
||||
#print(ECcalculated)
|
||||
print("")
|
||||
print("ECcalculated")
|
||||
print(ECcalculated)
|
||||
|
||||
|
||||
|
||||
x = adc
|
||||
|
||||
#y = ECcalculated
|
||||
y = ECmeasured
|
||||
y = ECcalculated
|
||||
#y = ECmeasured
|
||||
|
||||
|
||||
|
||||
|
|
4
messung/requirements.txt
Normal file
4
messung/requirements.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
numpy==1.22
|
||||
scipy
|
||||
matplotlib
|
||||
pandas
|
130
platformio.ini
130
platformio.ini
|
@ -8,16 +8,140 @@
|
|||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[env:esp32doit-devkit-v1]
|
||||
[env:esp32doit-devkit-v1_NFT_2024]
|
||||
platform = espressif32
|
||||
board = esp32doit-devkit-v1
|
||||
framework = arduino
|
||||
|
||||
monitor_speed = 115200
|
||||
monitor_port = /dev/ttyUSB0
|
||||
|
||||
build_flags=
|
||||
'-D CLIENT_ID="hydroponic-NFT"'
|
||||
-D PIN_BUTTON=12
|
||||
-D PIN_LED=13
|
||||
-D EC_PIN_RELAY_PROBE=27
|
||||
-D EC_PIN_FREQ=5
|
||||
-D EC_CALIBRATION_POLYNOM={18.785904241636743,-0.04069178351449846,3.528797358514823e-05,-4.214254847500995e-09,2.543662736303669e-13}
|
||||
-D EC_CALIBRATION_LINEARIZE_BELOW_ADC=2000
|
||||
-D EC_CALIBRATION_LINEAR_LOWADC=728
|
||||
-D EC_CALIBRATION_LINEAR_LOWEC=0
|
||||
-D EC_REFERENCE_ADC=6016.88
|
||||
|
||||
-D FLOW_PIN=16
|
||||
-D ONE_WIRE_BUS_PIN=18
|
||||
-D THERMOMETER_ADDR_RESERVOIR={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44}
|
||||
-D THERMOMETER_ADDR_CASE={0x10,0x7E,0x22,0x99,0x01,0x08,0x00,0xA4}
|
||||
-D PIN_SDA=21
|
||||
-D PIN_SCL=22
|
||||
-D WATERLEVEL_OFFSET=500.0
|
||||
-D WATERLEVEL_FACTOR=-1.0
|
||||
-D RES_AREA=20*20*3.1416
|
||||
|
||||
-D WATERLEVELSENSOR_VL53L0X
|
||||
|
||||
lib_deps =
|
||||
https://github.com/milesburton/Arduino-Temperature-Control-Library/
|
||||
https://github.com/emilv/ArduinoSort/
|
||||
robtillaart/ADS1X15@^0.3.9
|
||||
256dpi/MQTT@^2.5.1
|
||||
https://github.com/pololu/vl6180x-arduino
|
||||
256dpi/MQTT@^2.5.1
|
||||
pololu/VL53L0X@^1.3.1
|
||||
|
||||
|
||||
|
||||
[env:esp32-s3-devkitm-1_DB]
|
||||
platform = platformio/espressif32@^6.7
|
||||
board = esp32-s3-devkitm-1
|
||||
;Devboard is ESP32-S3-DevKitC-1 (N16R8). board=esp32-s3-devkitm-1 works fine
|
||||
framework = arduino
|
||||
monitor_port = /dev/ttyACM0
|
||||
|
||||
monitor_speed = 115200
|
||||
|
||||
|
||||
|
||||
build_flags=
|
||||
'-D CLIENT_ID="hydroponic-DB"'
|
||||
-D PIN_BUTTON=12
|
||||
|
||||
-D EC_PIN_RELAY_PROBE=35
|
||||
-D EC_PIN_FREQ=38
|
||||
|
||||
-D EC_CALIBRATION_POLYNOM={66.39669240599893,-0.09954956470655674,5.934040501689804e-05,-8.587883382454424e-09,4.448631030971983e-13}
|
||||
-D EC_CALIBRATION_LINEARIZE_BELOW_ADC=3600
|
||||
-D EC_CALIBRATION_LINEAR_LOWADC=465.97
|
||||
-D EC_CALIBRATION_LINEAR_LOWEC=0
|
||||
-D EC_REFERENCE_ADC=5908
|
||||
|
||||
-D FLOW_PIN=17
|
||||
-D ONE_WIRE_BUS_PIN=18
|
||||
-D THERMOMETER_ADDR_RESERVOIR={0x28,0xFF,0x30,0xBA,0x85,0x16,0x03,0xB5}
|
||||
-D THERMOMETER_ADDR_CASE={0x28,0xFF,0x64,0x0E,0x75,0x83,0x09,0x6F}
|
||||
|
||||
-D PIN_SDA=1
|
||||
-D PIN_SCL=2
|
||||
|
||||
-D WATERLEVEL_OFFSET=252.0
|
||||
-D WATERLEVEL_FACTOR=-1.0
|
||||
-D RES_AREA=37*56
|
||||
-D WATERLEVELSENSOR_VL53L1X
|
||||
-D ROISIZE_WIDTH=8
|
||||
-D ROISIZE_HEIGHT=8
|
||||
|
||||
lib_deps =
|
||||
https://github.com/milesburton/Arduino-Temperature-Control-Library/
|
||||
https://github.com/emilv/ArduinoSort/
|
||||
robtillaart/ADS1X15@^0.3.9
|
||||
256dpi/MQTT@^2.5.2
|
||||
pololu/VL53L1X@^1.3.1
|
||||
adafruit/Adafruit NeoPixel
|
||||
|
||||
|
||||
|
||||
|
||||
[env:esp32-s3-devkitm-1_NFT]
|
||||
platform = platformio/espressif32@^6.7
|
||||
board = esp32-s3-devkitm-1
|
||||
;Devboard is ESP32-S3-DevKitC-1 (N16R8). board=esp32-s3-devkitm-1 works fine
|
||||
framework = arduino
|
||||
|
||||
monitor_speed = 115200
|
||||
monitor_port = /dev/ttyACM0
|
||||
|
||||
|
||||
|
||||
build_flags=
|
||||
'-D CLIENT_ID="hydroponic-NFT"'
|
||||
-D PIN_BUTTON=12
|
||||
|
||||
-D EC_PIN_RELAY_PROBE=35
|
||||
-D EC_PIN_FREQ=38
|
||||
|
||||
-D EC_CALIBRATION_POLYNOM={93.96528045244023,-0.1442265098262804,8.016698711210758e-05,-1.1609651235703859e-08,5.945632995842434e-13}
|
||||
-D EC_CALIBRATION_LINEARIZE_BELOW_ADC=3600
|
||||
-D EC_CALIBRATION_LINEAR_LOWADC=452.71
|
||||
-D EC_CALIBRATION_LINEAR_LOWEC=0
|
||||
-D EC_REFERENCE_ADC=5782.9
|
||||
|
||||
-D FLOW_PIN=17
|
||||
-D ONE_WIRE_BUS_PIN=18
|
||||
-D THERMOMETER_ADDR_RESERVOIR={0x28,0xFF,0x6F,0x19,0x72,0x16,0x05,0x44}
|
||||
-D THERMOMETER_ADDR_CASE={0x28,0xFF,0x64,0x0E,0x75,0x90,0xDE,0x02}
|
||||
|
||||
-D PIN_SDA=1
|
||||
-D PIN_SCL=2
|
||||
|
||||
-D WATERLEVEL_OFFSET=470.0
|
||||
-D WATERLEVEL_FACTOR=-1.0
|
||||
-D RES_AREA=20*20*3.1416
|
||||
-D WATERLEVELSENSOR_VL53L1X
|
||||
-D ROISIZE_WIDTH=8
|
||||
-D ROISIZE_HEIGHT=8
|
||||
|
||||
lib_deps =
|
||||
https://github.com/milesburton/Arduino-Temperature-Control-Library/
|
||||
https://github.com/emilv/ArduinoSort/
|
||||
robtillaart/ADS1X15@^0.3.9
|
||||
256dpi/MQTT@^2.5.2
|
||||
pololu/VL53L1X@^1.3.1
|
||||
adafruit/Adafruit NeoPixel
|
325
src/main.cpp
325
src/main.cpp
|
@ -1,62 +1,100 @@
|
|||
#include <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
bool valueError=false;
|
||||
|
||||
unsigned long last_check=0;
|
||||
|
||||
|
||||
#include "wifi_functions.h"
|
||||
|
||||
bool debug=true; //print Serial information
|
||||
bool debug=false; //print Serial information
|
||||
bool mqtt=true;
|
||||
bool eccalibrationoutput=false; //serial output for ec calibration
|
||||
/* Write to file with:
|
||||
sudo stty -F /dev/ttyUSB0 115200
|
||||
cat /dev/ttyUSB0 | tee received.txt
|
||||
|
||||
falls nicht geht, vorher einmal kurz per screen verbinden
|
||||
*/
|
||||
|
||||
bool valuesStabilized=false; //gets set true when values are stable (avaeraging arrays filled)
|
||||
|
||||
|
||||
|
||||
#include "helpfunctions.h"
|
||||
#include "ADS1X15.h"
|
||||
|
||||
ADS1115 ADS(0x48);
|
||||
|
||||
|
||||
// ######## Temperature
|
||||
#include "temperature.h"
|
||||
|
||||
|
||||
// ######## Water Level
|
||||
#include "waterlevel.h"
|
||||
|
||||
|
||||
// ######## EC
|
||||
ADS1115 ADS(0x48);
|
||||
bool adsenabled=true;
|
||||
#include "ec.h"
|
||||
|
||||
|
||||
|
||||
// ######## Water Level
|
||||
#include "waterlevel.h"
|
||||
|
||||
|
||||
// ######## Flow Rate
|
||||
#include "flow.h"
|
||||
|
||||
// ######## Soilmoisture
|
||||
#include "soilmoisture.h"
|
||||
//#include "soilmoisture.h"
|
||||
|
||||
|
||||
#ifdef PIN_NEOPIXEL
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
Adafruit_NeoPixel pixels(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
|
||||
#endif
|
||||
|
||||
|
||||
unsigned long last_check=0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool valueError=false;
|
||||
|
||||
#define PIN_BUTTON 12
|
||||
#define PIN_LED 13
|
||||
|
||||
|
||||
void setup() {
|
||||
pinMode(PIN_BUTTON,INPUT_PULLUP);
|
||||
#ifdef PIN_LED
|
||||
pinMode(PIN_LED,OUTPUT);
|
||||
digitalWrite(PIN_LED,LOW);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(NEOPIXEL_POWER)
|
||||
// If this board has a power control pin, we must set it to output and high
|
||||
// in order to enable the NeoPixels. We put this in an #if defined so it can
|
||||
// be reused for other boards without compilation errors
|
||||
pinMode(NEOPIXEL_POWER, OUTPUT);
|
||||
digitalWrite(NEOPIXEL_POWER, HIGH);
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.begin();
|
||||
pixels.setBrightness(100); // not so bright
|
||||
pixels.clear();
|
||||
|
||||
//Flash colors for debug
|
||||
pixels.setPixelColor(0, pixels.Color(255, 0,0));
|
||||
pixels.show();
|
||||
delay(250);
|
||||
pixels.setPixelColor(0, pixels.Color(0, 255,0));
|
||||
pixels.show();
|
||||
delay(250);
|
||||
pixels.setPixelColor(0, pixels.Color(0, 0,255));
|
||||
pixels.show();
|
||||
delay(250);
|
||||
pixels.clear();
|
||||
pixels.show();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Serial.begin(115200);
|
||||
if (mqtt) {
|
||||
WiFi.begin(ssid, pass);
|
||||
|
@ -65,18 +103,34 @@ void setup() {
|
|||
connect();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Wire.begin(PIN_SDA,PIN_SCL);
|
||||
Serial.print("I2C Clock Speed=");
|
||||
Serial.println(Wire.getClock());
|
||||
|
||||
i2cscan();
|
||||
|
||||
Serial.println("Setup Waterlevel");
|
||||
waterlevel_setup();
|
||||
|
||||
|
||||
//init ADS1115
|
||||
if (!ADS.begin()) {
|
||||
Serial.println("Error:"); delay(2000); Serial.println("ADS1115 Init Error!");
|
||||
if (mqtt){
|
||||
publishInfo("error/general","ADS1115 Init Error");
|
||||
}
|
||||
adsenabled=false;
|
||||
}
|
||||
if (adsenabled){
|
||||
ADS.setGain(0);
|
||||
}
|
||||
ADS.setGain(0);
|
||||
|
||||
|
||||
Serial.println("Setup EC");
|
||||
ec_setup();
|
||||
|
||||
Serial.println("Setup Waterlevel");
|
||||
waterlevel_setup();
|
||||
|
||||
Serial.println("Setup Temperature");
|
||||
temperature_setup();
|
||||
|
@ -84,22 +138,28 @@ void setup() {
|
|||
Serial.println("Setup Flow");
|
||||
flow_setup();
|
||||
|
||||
/*
|
||||
Serial.println("Setup Soilmoisture");
|
||||
sm_setup();
|
||||
*/
|
||||
|
||||
Serial.println("Finished Setup");
|
||||
delay(200);
|
||||
|
||||
//Test adc to ec function output
|
||||
/*
|
||||
Serial.println();
|
||||
for (int i=750;i<14183;i+=100) {
|
||||
float _ec=ec_getECfromADC(i);
|
||||
Serial.print(i); Serial.print(","); Serial.print(_ec); Serial.println();
|
||||
if (eccalibrationoutput) {
|
||||
Serial.println();
|
||||
Serial.print("adc"); Serial.print(","); Serial.print("ec"); Serial.println();
|
||||
for (int i=728;i<14000;i+=100) {
|
||||
//float _ec=ec_getECfromADC(i);
|
||||
float _ec=ec_getECfromADC(i, ec_calibration_polynom, sizeof(ec_calibration_polynom), ec_calibration_linearize_below_adc, ec_calibration_linear_lowADC, ec_calibration_linear_lowEC);
|
||||
|
||||
Serial.print(i); Serial.print(","); Serial.print(_ec); Serial.println();
|
||||
}
|
||||
Serial.println("Waiting 10 seconds because eccalibrationoutput is enabled");
|
||||
delay(10000);
|
||||
}
|
||||
|
||||
delay(100000);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
//Serial.println("time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted,EC,EC25");
|
||||
|
@ -110,41 +170,108 @@ void setup() {
|
|||
void loop() {
|
||||
unsigned long loopmillis=millis();
|
||||
enableTiming=true; //reactivate
|
||||
|
||||
|
||||
|
||||
ec_loop(loopmillis);
|
||||
|
||||
|
||||
temperature_loop(loopmillis);
|
||||
|
||||
waterlevel_loop(loopmillis);
|
||||
|
||||
if (!ec_measurementRunning()){ //skip tof read when ec measurement running, because vlxx sensor reading takes quite long per cycle
|
||||
waterlevel_loop(loopmillis);
|
||||
}
|
||||
|
||||
flow_loop(loopmillis);
|
||||
|
||||
sm_loop(loopmillis);
|
||||
//sm_loop(loopmillis);
|
||||
|
||||
|
||||
static bool getReading=false;
|
||||
|
||||
if (!eccalibrationoutput && !digitalRead(PIN_BUTTON)) {
|
||||
valueError=false;
|
||||
Serial.println("Reset ValueError flag by user");
|
||||
digitalWrite(PIN_LED,valueError);
|
||||
delay(100);
|
||||
if (!eccalibrationoutput) { //Is in normal operation mode
|
||||
if (!digitalRead(PIN_BUTTON)) { //button pressed
|
||||
valueError=false;
|
||||
Serial.println("Reset ValueError flag by user");
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,valueError); //set led before delay to blink if error persists
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color(255*valueError, 0,0));
|
||||
pixels.show();
|
||||
#endif
|
||||
delay(100);
|
||||
}
|
||||
|
||||
static bool last_valueError=true;
|
||||
if (!valuesStabilized) { //if values are not okay since boot
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,(loopmillis/250)%2==0); //blink led
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color(((loopmillis/250)%2==0)*255,((loopmillis/250)%2==0)*255,0));
|
||||
pixels.show();
|
||||
#endif
|
||||
}else{ //LED shows valueError flag status when values were okay once
|
||||
if (last_valueError!=valueError) { //update led if valueerror flag changed
|
||||
last_valueError=valueError;
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,valueError);
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color((loopmillis/250)%2==0,(loopmillis/250)%2==0,0));
|
||||
pixels.show();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (eccalibrationoutput && !digitalRead(PIN_BUTTON) && !getReading) {
|
||||
getReading=true;
|
||||
force_ec_measurement=true;
|
||||
ec_flag_measurement_available=false;
|
||||
digitalWrite(PIN_LED,HIGH);
|
||||
|
||||
|
||||
|
||||
if (eccalibrationoutput && !digitalRead(PIN_BUTTON) && !getReading) { //Calibration UI . Button Pressed
|
||||
if (!isValueArrayOK(ec_calib_array,EC_CALIB_ARRAY_SIZE,EC_ADC_UNAVAILABLE)) { //Calibration Array filled?
|
||||
for (uint8_t blink=0;blink<5;blink++) { //Error Blink
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,HIGH);
|
||||
delay(100);
|
||||
digitalWrite(PIN_LED,LOW);
|
||||
delay(100);
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color(0,0,255));
|
||||
pixels.show();
|
||||
delay(100);
|
||||
pixels.setPixelColor(0, pixels.Color(0,0,0));
|
||||
pixels.show();
|
||||
delay(100);
|
||||
#endif
|
||||
}
|
||||
}else{ //Calibration Array is ok, initiate ec reading
|
||||
getReading=true;
|
||||
force_ec_measurement=true;
|
||||
ec_flag_measurement_available=false;
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,HIGH);
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color(0,255,0));
|
||||
pixels.show();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (eccalibrationoutput && ec_flag_measurement_available && getReading) {
|
||||
if (eccalibrationoutput && ec_flag_measurement_available && getReading) { //Calibration UI
|
||||
|
||||
ec_flag_measurement_available=false;
|
||||
getReading=false;
|
||||
#ifdef PIN_LED
|
||||
digitalWrite(PIN_LED,LOW);
|
||||
#endif
|
||||
#ifdef PIN_NEOPIXEL
|
||||
pixels.setPixelColor(0, pixels.Color(0,0,0));
|
||||
pixels.show();
|
||||
#endif
|
||||
Serial.print(CLIENT_ID); Serial.print(",");
|
||||
Serial.print(loopmillis); Serial.print(",");
|
||||
Serial.print(tempCmean_reservoir); Serial.print(",");
|
||||
Serial.print(ec_calib_adc); Serial.print(",");
|
||||
|
@ -156,40 +283,91 @@ void loop() {
|
|||
if (loopmillis>last_check+2000) { //check values
|
||||
|
||||
last_check=loopmillis;
|
||||
|
||||
|
||||
if (tempCmean_air==DEVICE_DISCONNECTED_C || tempCmean_reservoir==DEVICE_DISCONNECTED_C || tempCmean_case==DEVICE_DISCONNECTED_C) {
|
||||
bool _noErrorsDuringLoop=true;
|
||||
|
||||
if (tempCmean_reservoir==DEVICE_DISCONNECTED_C || tempCmean_case==DEVICE_DISCONNECTED_C) {
|
||||
if (!valueError && valuesStabilized) { //error just appeared
|
||||
if (tempCmean_reservoir==DEVICE_DISCONNECTED_C) {
|
||||
Serial.println("valueError tempCmean_reservoir");
|
||||
if (mqtt){
|
||||
publishInfo("error/temperature","valueError tempCmean_reservoir");
|
||||
}
|
||||
}
|
||||
if (tempCmean_case==DEVICE_DISCONNECTED_C) {
|
||||
Serial.println("valueError tempCmean_case");
|
||||
if (mqtt){
|
||||
publishInfo("error/temperature","valueError tempCmean_case");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
valueError=true;
|
||||
_noErrorsDuringLoop=false;
|
||||
}
|
||||
|
||||
/*
|
||||
if (sm_mean1==SM_DISCONNECTED || sm_mean2==SM_DISCONNECTED) {
|
||||
valueError=true;
|
||||
}
|
||||
}*/
|
||||
if (ec==EC_UNAVAILABLE){
|
||||
if (!valueError && valuesStabilized) { //error just appeared
|
||||
if (ec==EC_UNAVAILABLE){
|
||||
Serial.println("valueError ec");
|
||||
if (mqtt){
|
||||
publishInfo("error/ec","valueError ec");
|
||||
}
|
||||
}
|
||||
}
|
||||
valueError=true;
|
||||
_noErrorsDuringLoop=false;
|
||||
}
|
||||
|
||||
|
||||
if (!eccalibrationoutput) {
|
||||
digitalWrite(PIN_LED,valueError);
|
||||
|
||||
|
||||
if (distance_unsuccessful_count>20) {
|
||||
if (!valueError && valuesStabilized) { //error just appeared
|
||||
Serial.println("valueError distance");
|
||||
if (mqtt){
|
||||
publishInfo("error/waterlevel","valueError distance");
|
||||
}
|
||||
}
|
||||
valueError=true;
|
||||
_noErrorsDuringLoop=false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (_noErrorsDuringLoop && !valuesStabilized) {
|
||||
valuesStabilized=true; //gets only set to true once
|
||||
valueError=false; //clear error flag once after boot
|
||||
Serial.println("Values Stable, clear error flag");
|
||||
}
|
||||
|
||||
if (debug) {
|
||||
Serial.println("_______________________");
|
||||
Serial.print(millis()/1000.0,2); Serial.println(":");
|
||||
|
||||
Serial.print("temperature reservoir,air = ");
|
||||
Serial.print(tempCmean_reservoir); Serial.print(","); Serial.print(tempCmean_air);
|
||||
Serial.print("temperature reservoir = ");
|
||||
Serial.print(tempCmean_reservoir);
|
||||
Serial.println();
|
||||
Serial.print("temperature case = ");
|
||||
Serial.print(tempCmean_case);
|
||||
Serial.println();
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Serial.print("sm_mean 1,2,3 = ");
|
||||
Serial.print(sm_mean1); Serial.print(",");
|
||||
Serial.print(sm_mean2); Serial.print(",");
|
||||
Serial.print(sm_mean3);
|
||||
Serial.println();
|
||||
*/
|
||||
|
||||
/*
|
||||
Serial.print("sm_mean 1,2,3 = ");
|
||||
|
@ -223,16 +401,17 @@ void loop() {
|
|||
Serial.print(ec25);
|
||||
Serial.println();
|
||||
|
||||
Serial.print("Waterlevel,Volume = ");
|
||||
|
||||
|
||||
Serial.print("distance,Waterlevel,Volume = ");
|
||||
Serial.print(distance); Serial.print(",");
|
||||
Serial.print(waterlevel); Serial.print(",");
|
||||
Serial.print(watervolume);
|
||||
Serial.print(watervolume); Serial.println();
|
||||
|
||||
Serial.println();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -245,12 +424,10 @@ void loop() {
|
|||
if (tempCmean_reservoir!=DEVICE_DISCONNECTED_C) {
|
||||
publishValueTimed("temperature/reservoir",tempCmean_reservoir,2,timing_temperature_reservoir,loopmillis);
|
||||
}
|
||||
if (tempCmean_air!=DEVICE_DISCONNECTED_C) {
|
||||
publishValueTimed("temperature/air",tempCmean_air,2,timing_temperature_air,loopmillis);
|
||||
}
|
||||
if (tempCmean_case!=DEVICE_DISCONNECTED_C) {
|
||||
publishValueTimed("temperature/case",tempCmean_case,2,timing_temperature_case,loopmillis);
|
||||
publishValueTimed("case/temperature",tempCmean_case,2,timing_temperature_case,loopmillis);
|
||||
}
|
||||
/*
|
||||
if (sm_mean1!=SM_DISCONNECTED) {
|
||||
publishValueTimed("soilmoisture/sm1",sm_mean1,3,timing_soilmoisture_sm1,loopmillis);
|
||||
}
|
||||
|
@ -260,9 +437,22 @@ void loop() {
|
|||
if (sm_mean3!=SM_DISCONNECTED) {
|
||||
publishValueTimed("soilmoisture/sm3",sm_mean3,3,timing_soilmoisture_sm3,loopmillis);
|
||||
}
|
||||
*/
|
||||
|
||||
publishValueTimed("flow/flow",flow,2,timing_flow,loopmillis);
|
||||
|
||||
|
||||
static float last_flow=0;
|
||||
if (valuesStabilized){
|
||||
if (flow==0.0 && last_flow!=flow) {
|
||||
publishValueTimedOverride("flow",flow,2,timing_flow,loopmillis); //publish without waiting if flow is 0
|
||||
}else{
|
||||
publishValueTimed("flow",flow,2,timing_flow,loopmillis);
|
||||
}
|
||||
last_flow=flow;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (waterlevel!=WATERLEVEL_UNAVAILABLE) {
|
||||
bool _published=publishValueTimed("waterlevel/height",waterlevel,2,timing_waterlevel,loopmillis);
|
||||
if (_published) { //use height for timing. send calculated volume with it
|
||||
|
@ -271,14 +461,19 @@ void loop() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
if (ec_flag_measurement_available){
|
||||
ec_flag_measurement_available=false;
|
||||
if (ec_adc!=0) {
|
||||
publishValue("ec/adc",ec_adc,0);
|
||||
}
|
||||
|
||||
if (ec_calib_adc!=0) {
|
||||
publishValue("ec/eccalibadc",ec_calib_adc,0);
|
||||
}
|
||||
|
||||
//Probe A
|
||||
if (ec_adc!=0) {
|
||||
publishValue("ec/adc",ec_adc,0);
|
||||
}
|
||||
|
||||
if (ec_adc_adjusted!=0) {
|
||||
publishValue("ec/adcadjusted",ec_adc_adjusted,0);
|
||||
}
|
||||
|
@ -287,6 +482,7 @@ void loop() {
|
|||
publishValue("ec/sc",ec25,0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -305,13 +501,6 @@ void loop() {
|
|||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue