Compare commits

..

26 commits

Author SHA1 Message Date
Serge Bazanski bd33434cf2 obi: update photo
All checks were successful
/ test (push) Successful in 11s
2025-05-11 00:58:42 +02:00
Serge Bazanski 8b09432513 obi: add external iface board design
All checks were successful
/ test (push) Successful in 11s
2025-05-11 00:56:59 +02:00
Serge Bazanski 4bc7409f4d obi: add microsope.toml
All checks were successful
/ test (push) Successful in 11s
2025-05-11 00:12:54 +02:00
Serge Bazanski b820746049 obi: add nix derivation 2025-05-11 00:12:10 +02:00
Serge Bazanski 756d6eb1ba beamer deprecated in favour of OBI
All checks were successful
/ test (push) Successful in 11s
2025-05-11 00:11:02 +02:00
Serge Bazanski 2cc5405891 beamer: init 2025-05-11 00:10:44 +02:00
Rahix 4110fb07cf obi: Add a README
All checks were successful
/ test (push) Successful in 11s
2025-05-10 23:07:32 +02:00
Rahix 6fcb23f9d0 obi: Add mounting bracket FreeCAD project 2025-05-10 23:02:10 +02:00
Rahix c7f94c7141 succbone: Update README
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 13s
2025-01-06 00:31:01 +00:00
hmelder 26d297dcd3 succd: Do not exit prematurely if modbus connections fails
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 11s
2025-01-06 00:28:52 +00:00
Rahix 4e271a01a9 succbone: Update panel drawings
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 10s
- Add MODBUS components
- Add network topology overview which shows addresses
2024-11-13 15:07:50 +01:00
hmelder 3b9c1ba912 succd: MODBUS library does not differentiate between TCP socket time outs and RTU time outs
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 10s
2024-11-10 07:06:56 +01:00
hmelder 9ec580c26f succd: implement auto-restarting of MODBUS connection in case of network loss
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
2024-11-10 06:51:21 +01:00
Rahix 152290f5a3 succd: Fix -KEC1 relay board updates
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
The accesses to -KEC1 always time out on the attempt to update the
output values.  We noticed that this is related to the timing between
the reading of the inputs and the following write to the outputs.

Fix -KEC1 accesses by waiting before sending the next request to the
board after receiving the reply for the previous one.
2024-11-10 06:36:43 +01:00
hmelder 6f93b96c39 succd: do not early return on error in modbusUpdate
When one device fails, this should not influence updates of the other
devices.  Thus, early return was the wrong strategy here.

Instead, when communication with a device fails, skip the process data
update and continue with the next device.
2024-11-10 06:35:50 +01:00
hmelder d8a467a0c4 succd: Split scope lock into multiple blocks
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
We noticed huge load spikes with the latest changes.  This was caused
by the modbus goroutine blocking the entire daemon for long periods of
time while doing its data transfer.

Fix this by only holding the lock while performing data accesses.
2024-11-10 05:45:58 +01:00
hmelder e7fd2dd7d7 succd: KFA{1,6,7} are normally closed
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
2024-11-10 05:20:24 +01:00
hmelder 606d470577 succd: Migrate to KEC1 MODBUS relay board
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
2024-11-10 05:11:48 +01:00
Rahix 0e45650972 succd: Render temperature unit in template as well
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 11s
2024-11-10 02:08:05 +01:00
Rahix edb9051708 succd: Export temperature values to prometheus
All checks were successful
/ test (push) Successful in 11s
/ test (pull_request) Successful in 10s
Also add metrics for all the temperature and humidity measurements.
2024-11-10 02:04:31 +01:00
Rahix 4ac1b5eb32 succd: Add highlight colors for temperatures
All checks were successful
/ test (push) Successful in 10s
/ test (pull_request) Successful in 10s
Highlight out-of-range temperatures for the user.  The limits are
currently by intuition and should be reconsidered.
2024-11-10 01:59:10 +01:00
Rahix c02d24414f succd: Improve styling of temperature values
HMI design goes brrrr...
2024-11-10 01:59:10 +01:00
hmelder 2e6a3be100 Add modbus integration 2024-11-10 01:59:09 +01:00
hmelder 4edabc5c56 Add temperature and humidity stuff 2024-11-10 01:59:09 +01:00
Rahix 52231a9e9c succbone: Add new mount
All checks were successful
/ test (push) Successful in 10s
This mount is a new iteration with the following improvements:

- 25% less DIN rail space required.  This allows installing 25% more
  Modbus-based technology!
- Designed for a clip that can be unlatched more easily.
- Fixed the BeagleBone hole pattern to match reality (why BeagleBone,
  why D:)
2024-11-09 22:21:45 +00:00
Rahix 0aba323779 succd: Export all process values as prometheus metrics
All checks were successful
/ test (pull_request) Successful in 10s
/ test (push) Successful in 9s
For more detailed monitoring, let's export all process values that are
exposed to the web API as prometheus metrics.
2024-10-07 07:42:42 +02:00
82 changed files with 49814 additions and 145 deletions

7
obi/README.md Normal file
View file

@ -0,0 +1,7 @@
Open Beam Interface for the JEOL T330A
--------------------------------------
Setup of [Open Beam Interface][0] for our scope.
![Current OBI setup for our JEOL T330A](./kenji-obi.jpg)
[0]: https://github.com/nanographs/Open-Beam-Interface

5
obi/external-iface/.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
pool/*.db
pool/*.db-*
*.imp_meta
*.autosave
*.bak

View file

@ -0,0 +1,5 @@
Adapter board from 'PC' DE9 connector to 4x SMA.
Designed using HorizonEDA.
![screenshot of board in HorizonEDA](design.png)

View file

@ -0,0 +1,11 @@
{
"blocks": {
"6590a349-edbb-4eb4-8a8e-db9dc800d507": {
"block_filename": "top_block.json",
"schematic_filename": "top_schematic.json",
"symbol_filename": ""
}
},
"top_block": "6590a349-edbb-4eb4-8a8e-db9dc800d507",
"type": "blocks"
}

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,22 @@
{
"blocks": [
{
"block_filename": "top_block.json",
"is_top": true,
"schematic_filename": "top_schematic.json"
}
],
"blocks_filename": "blocks.json",
"board_filename": "board.json",
"name": "",
"pictures_filename": "pictures",
"planes_filename": "planes.json",
"pool_cache_directory": "cache",
"pool_directory": "pool",
"pool_uuid": "6d752bc3-29b3-45df-8cf2-1e3aacefbcc6",
"title": "",
"type": "project",
"uuid": "b3d369d6-efea-4156-a11e-fc343d00f563",
"version": 3,
"vias_directory": ""
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
%FSLAX46Y46*%
%MOMM*%
G01*
%LPD*%
G01*
%LPD*%
G75*
M02*

View file

@ -0,0 +1,252 @@
%FSLAX46Y46*%
%MOMM*%
%AMPS14*
21,1,1.700000,5.200000,0.000000,0.000000,270.000000*
%
%ADD14PS14*%
%AMPS13*
1,1,1.900000,0.000000,0.000000*
%
%ADD13PS13*%
%AMPS15*
1,1,0.500000,0.000000,0.000000*
%
%ADD15PS15*%
%AMPS11*
4,1,8,
-5.942000,2.513000,
-5.942000,1.614500,
-5.230800,1.614500,
-5.230800,0.354000,
-5.942000,0.354000,
-5.942000,-0.100000,
0.100000,-0.100000,
0.100000,2.513000,
-5.942000,2.513000,
0*
%
%ADD11PS11*%
%AMPS10*
1,1,3.200000,0.000000,0.000000*
%
%ADD10PS10*%
%AMPS12*
4,1,8,
-5.942000,0.100000,
-5.942000,-0.354000,
-5.230800,-0.354000,
-5.230800,-1.614500,
-5.942000,-1.614500,
-5.942000,-2.513000,
0.100000,-2.513000,
0.100000,0.100000,
-5.942000,0.100000,
0*
%
%ADD12PS12*%
G01*
%LPD*%
G01*
%LPD*%
G75*
D10*
X34000000Y-5000000D03*
D10*
X34000000Y-60000000D03*
D11*
X6342000Y-21325000D03*
D12*
X6342000Y-27675000D03*
D11*
X6342000Y-5325000D03*
D12*
X6342000Y-11675000D03*
D13*
X12460000Y-60500000D03*
D13*
X15000000Y-60500000D03*
D13*
X17540000Y-60500000D03*
D14*
X36000000Y-30625000D03*
D14*
X36000000Y-27875000D03*
D14*
X36000000Y-33375000D03*
D14*
X36000000Y-36125000D03*
D11*
X6342000Y-37325000D03*
D12*
X6342000Y-43675000D03*
D11*
X6342000Y-53325000D03*
D12*
X6342000Y-59675000D03*
D13*
X12460000Y-44500000D03*
D13*
X15000000Y-44500000D03*
D13*
X17540000Y-44500000D03*
D13*
X12460000Y-28500000D03*
D13*
X15000000Y-28500000D03*
D13*
X17540000Y-28500000D03*
D13*
X12460000Y-12500000D03*
D13*
X15000000Y-12500000D03*
D13*
X17540000Y-12500000D03*
D15*
X14500000Y-10000000D03*
D15*
X8000000Y-39000000D03*
D15*
X22000000Y-8500000D03*
D15*
X28500000Y-1500000D03*
D15*
X37500000Y-23500000D03*
D15*
X30500000Y-26500000D03*
D15*
X2000000Y-63500000D03*
D15*
X22500000Y-38500000D03*
D15*
X35500000Y-1500000D03*
D15*
X10000000Y-63500000D03*
D15*
X5500000Y-16500000D03*
D15*
X27000000Y-38000000D03*
D15*
X25500000Y-43000000D03*
D15*
X7500000Y-7000000D03*
D15*
X30500000Y-35500000D03*
D15*
X14500000Y-1500000D03*
D15*
X8000000Y-42000000D03*
D15*
X8000000Y-58000000D03*
D15*
X13000000Y-39000000D03*
D15*
X23500000Y-28000000D03*
D15*
X8000000Y-55000000D03*
D15*
X23500000Y-63500000D03*
D15*
X19000000Y-55000000D03*
D15*
X21500000Y-1500000D03*
D15*
X16000000Y-58000000D03*
D15*
X37000000Y-63500000D03*
D15*
X21000000Y-42000000D03*
D15*
X26000000Y-12500000D03*
D15*
X32000000Y-37500000D03*
D15*
X15000000Y-26000000D03*
D15*
X22000000Y-12500000D03*
D15*
X15000000Y-42000000D03*
D15*
X37500000Y-18000000D03*
D15*
X1000000Y-48500000D03*
D15*
X14000000Y-55000000D03*
D15*
X28000000Y-50000000D03*
D15*
X32500000Y-20500000D03*
D15*
X1500000Y-16500000D03*
D15*
X31500000Y-29000000D03*
D15*
X12000000Y-23000000D03*
D15*
X37000000Y-58500000D03*
D15*
X30000000Y-30500000D03*
D15*
X25000000Y-53500000D03*
D15*
X11500000Y-7000000D03*
D15*
X37500000Y-6000000D03*
D15*
X37500000Y-12000000D03*
D15*
X23000000Y-55000000D03*
D15*
X25500000Y-58000000D03*
D15*
X8000000Y-26000000D03*
D15*
X18000000Y-23000000D03*
D15*
X8000000Y-1500000D03*
D15*
X23500000Y-24000000D03*
D15*
X30500000Y-63500000D03*
D15*
X17500000Y-7000000D03*
D15*
X32500000Y-24500000D03*
D15*
X18000000Y-39000000D03*
D15*
X27000000Y-34000000D03*
D15*
X1500000Y-1500000D03*
D15*
X25500000Y-48000000D03*
D15*
X28500000Y-40500000D03*
D15*
X17000000Y-63500000D03*
D15*
X28500000Y-45000000D03*
D15*
X21500000Y-58000000D03*
D15*
X5500000Y-32500000D03*
D15*
X5500000Y-48500000D03*
D15*
X29500000Y-20500000D03*
D15*
X37500000Y-41000000D03*
D15*
X30000000Y-16500000D03*
D15*
X7500000Y-10000000D03*
D15*
X27500000Y-31500000D03*
D15*
X26000000Y-16500000D03*
D15*
X27500000Y-28000000D03*
D15*
X8000000Y-23000000D03*
D15*
X1500000Y-32500000D03*
M02*

View file

@ -0,0 +1,21 @@
%FSLAX46Y46*%
%MOMM*%
%ADD10C,0.010000*%
G01*
%LPD*%
G01*
%LPD*%
D10*
X0Y-65000000D02*
X0Y0D01*
D10*
X0Y0D02*
X39000000Y0D01*
D10*
X39000000Y0D02*
X39000000Y-65000000D01*
D10*
X39000000Y-65000000D02*
X0Y-65000000D01*
G75*
M02*

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,940 @@
%FSLAX46Y46*%
%MOMM*%
%ADD10C,0.150000*%
%ADD11C,0.200000*%
G01*
%LPD*%
G01*
%LPD*%
D10*
X5199143Y-31342096D02*
X5199143Y-30580190D01*
D10*
X5151524Y-31484952D02*
X5199143Y-31342096D01*
D10*
X5103905Y-31532572D02*
X5151524Y-31484952D01*
D10*
X5008667Y-31580190D02*
X5103905Y-31532572D01*
D10*
X4913428Y-31580190D02*
X5008667Y-31580190D01*
D10*
X4818190Y-31532572D02*
X4913428Y-31580190D01*
D10*
X4770571Y-31484952D02*
X4818190Y-31532572D01*
D10*
X4722952Y-31342096D02*
X4770571Y-31484952D01*
D10*
X4722952Y-31246858D02*
X4722952Y-31342096D01*
D10*
X5580095Y-30770666D02*
X5580095Y-30818286D01*
D10*
X5627714Y-30675428D02*
X5580095Y-30770666D01*
D10*
X5675333Y-30627810D02*
X5627714Y-30675428D01*
D10*
X5770571Y-30580190D02*
X5675333Y-30627810D01*
D10*
X5961047Y-30580190D02*
X5770571Y-30580190D01*
D10*
X6056285Y-30627810D02*
X5961047Y-30580190D01*
D10*
X6103905Y-30675428D02*
X6056285Y-30627810D01*
D10*
X6151524Y-30770666D02*
X6103905Y-30675428D01*
D10*
X6151524Y-30865904D02*
X6151524Y-30770666D01*
D10*
X6103905Y-30961142D02*
X6151524Y-30865904D01*
D10*
X6008666Y-31104000D02*
X6103905Y-30961142D01*
D10*
X5532476Y-31580190D02*
X6008666Y-31104000D01*
D10*
X6199143Y-31580190D02*
X5532476Y-31580190D01*
D10*
X5199143Y-15342095D02*
X5199143Y-14580190D01*
D10*
X5151524Y-15484952D02*
X5199143Y-15342095D01*
D10*
X5103905Y-15532571D02*
X5151524Y-15484952D01*
D10*
X5008667Y-15580190D02*
X5103905Y-15532571D01*
D10*
X4913428Y-15580190D02*
X5008667Y-15580190D01*
D10*
X4818190Y-15532571D02*
X4913428Y-15580190D01*
D10*
X4770571Y-15484952D02*
X4818190Y-15532571D01*
D10*
X4722952Y-15342095D02*
X4770571Y-15484952D01*
D10*
X4722952Y-15246857D02*
X4722952Y-15342095D01*
D10*
X5627714Y-14580190D02*
X6103905Y-14580190D01*
D10*
X5580095Y-15008762D02*
X5627714Y-14580190D01*
D10*
X5627714Y-14961143D02*
X5580095Y-15008762D01*
D10*
X5770571Y-14913524D02*
X5627714Y-14961143D01*
D10*
X5913428Y-14913524D02*
X5770571Y-14913524D01*
D10*
X6056285Y-14961143D02*
X5913428Y-14913524D01*
D10*
X6151524Y-15056381D02*
X6056285Y-14961143D01*
D10*
X6199143Y-15199238D02*
X6151524Y-15056381D01*
D10*
X6199143Y-15294476D02*
X6199143Y-15199238D01*
D10*
X6151524Y-15437333D02*
X6199143Y-15294476D01*
D10*
X6056285Y-15532571D02*
X6151524Y-15437333D01*
D10*
X5913428Y-15580190D02*
X6056285Y-15532571D01*
D10*
X5770571Y-15580190D02*
X5913428Y-15580190D01*
D10*
X5627714Y-15532571D02*
X5770571Y-15580190D01*
D10*
X5580095Y-15484952D02*
X5627714Y-15532571D01*
D10*
X5532476Y-15389714D02*
X5580095Y-15484952D01*
D10*
X18810000Y-61770000D02*
X11190000Y-61770000D01*
D10*
X11190000Y-59230000D02*
X18810000Y-59230000D01*
D10*
X12085000Y-63020000D02*
X12460000Y-62270000D01*
D10*
X12460000Y-62270000D02*
X12835000Y-63020000D01*
D10*
X18810000Y-59230000D02*
X18810000Y-61770000D01*
D10*
X12835000Y-63020000D02*
X12085000Y-63020000D01*
D10*
X11190000Y-61770000D02*
X11190000Y-59230000D01*
D10*
X10158095Y-61198572D02*
X9396190Y-61198572D01*
D10*
X10300952Y-61246192D02*
X10158095Y-61198572D01*
D10*
X10348571Y-61293808D02*
X10300952Y-61246192D01*
D10*
X10396190Y-61389048D02*
X10348571Y-61293808D01*
D10*
X10396190Y-61484284D02*
X10396190Y-61389048D01*
D10*
X10348571Y-61579524D02*
X10396190Y-61484284D01*
D10*
X10300952Y-61627144D02*
X10348571Y-61579524D01*
D10*
X10158095Y-61674760D02*
X10300952Y-61627144D01*
D10*
X10062857Y-61674760D02*
X10158095Y-61674760D01*
D10*
X9443810Y-60293808D02*
X9539048Y-60246192D01*
D10*
X9396190Y-60436668D02*
X9443810Y-60293808D01*
D10*
X9396190Y-60531904D02*
X9396190Y-60436668D01*
D10*
X9443810Y-60674760D02*
X9396190Y-60531904D01*
D10*
X9586667Y-60770000D02*
X9443810Y-60674760D01*
D10*
X9824762Y-60817620D02*
X9586667Y-60770000D01*
D10*
X10062857Y-60817620D02*
X9824762Y-60817620D01*
D10*
X10253333Y-60770000D02*
X10062857Y-60817620D01*
D10*
X10348571Y-60674760D02*
X10253333Y-60770000D01*
D10*
X10396190Y-60531904D02*
X10348571Y-60674760D01*
D10*
X10396190Y-60484284D02*
X10396190Y-60531904D01*
D10*
X10348571Y-60341428D02*
X10396190Y-60484284D01*
D10*
X10253333Y-60246192D02*
X10348571Y-60341428D01*
D10*
X10110476Y-60198572D02*
X10253333Y-60246192D01*
D10*
X10062857Y-60198572D02*
X10110476Y-60198572D01*
D10*
X9920000Y-60246192D02*
X10062857Y-60198572D01*
D10*
X9824762Y-60341428D02*
X9920000Y-60246192D01*
D10*
X9777143Y-60484284D02*
X9824762Y-60341428D01*
D10*
X9777143Y-60531904D02*
X9777143Y-60484284D01*
D10*
X9824762Y-60674760D02*
X9777143Y-60531904D01*
D10*
X9920000Y-60770000D02*
X9824762Y-60674760D01*
D10*
X10062857Y-60817620D02*
X9920000Y-60770000D01*
D11*
X33000000Y-27250000D02*
X33000000Y-25750000D01*
D10*
X31988096Y-26892858D02*
X31226190Y-26892858D01*
D10*
X32130952Y-26940476D02*
X31988096Y-26892858D01*
D10*
X32178572Y-26988096D02*
X32130952Y-26940476D01*
D10*
X32226190Y-27083334D02*
X32178572Y-26988096D01*
D10*
X32226190Y-27178572D02*
X32226190Y-27083334D01*
D10*
X32178572Y-27273810D02*
X32226190Y-27178572D01*
D10*
X32130952Y-27321428D02*
X32178572Y-27273810D01*
D10*
X31988096Y-27369048D02*
X32130952Y-27321428D01*
D10*
X31892858Y-27369048D02*
X31988096Y-27369048D01*
D10*
X31226190Y-25940476D02*
X31226190Y-26464286D01*
D10*
X31607142Y-26226190D02*
X31226190Y-25940476D01*
D10*
X31607142Y-26083334D02*
X31607142Y-26226190D01*
D10*
X31654762Y-25988096D02*
X31607142Y-26083334D01*
D10*
X31702380Y-25940476D02*
X31654762Y-25988096D01*
D10*
X31845238Y-25892858D02*
X31702380Y-25940476D01*
D10*
X31940476Y-25892858D02*
X31845238Y-25892858D01*
D10*
X32083334Y-25940476D02*
X31940476Y-25892858D01*
D10*
X32178572Y-26035714D02*
X32083334Y-25940476D01*
D10*
X32226190Y-26178572D02*
X32178572Y-26035714D01*
D10*
X32226190Y-26321428D02*
X32226190Y-26178572D01*
D10*
X32178572Y-26464286D02*
X32226190Y-26321428D01*
D10*
X32130952Y-26511904D02*
X32178572Y-26464286D01*
D10*
X32035714Y-26559524D02*
X32130952Y-26511904D01*
D10*
X16438095Y-58476192D02*
X16438095Y-57476192D01*
D10*
X16866666Y-57476192D02*
X16438095Y-57476192D01*
D10*
X17009524Y-57523808D02*
X16866666Y-57476192D01*
D10*
X17057142Y-57571428D02*
X17009524Y-57523808D01*
D10*
X17104762Y-57666668D02*
X17057142Y-57571428D01*
D10*
X17104762Y-57761904D02*
X17104762Y-57666668D01*
D10*
X17057142Y-57857144D02*
X17104762Y-57761904D01*
D10*
X17009524Y-57904760D02*
X17057142Y-57857144D01*
D10*
X16866666Y-57952380D02*
X17009524Y-57904760D01*
D10*
X16438095Y-57952380D02*
X16866666Y-57952380D01*
D10*
X17104762Y-58476192D02*
X16771429Y-57952380D01*
D10*
X18009524Y-57476192D02*
X17485714Y-57476192D01*
D10*
X17723810Y-57857144D02*
X18009524Y-57476192D01*
D10*
X17866666Y-57857144D02*
X17723810Y-57857144D01*
D10*
X17961904Y-57904760D02*
X17866666Y-57857144D01*
D10*
X18009524Y-57952380D02*
X17961904Y-57904760D01*
D10*
X18057142Y-58095240D02*
X18009524Y-57952380D01*
D10*
X18057142Y-58190476D02*
X18057142Y-58095240D01*
D10*
X18009524Y-58333332D02*
X18057142Y-58190476D01*
D10*
X17914286Y-58428572D02*
X18009524Y-58333332D01*
D10*
X17771428Y-58476192D02*
X17914286Y-58428572D01*
D10*
X17628572Y-58476192D02*
X17771428Y-58476192D01*
D10*
X17485714Y-58428572D02*
X17628572Y-58476192D01*
D10*
X17438096Y-58380952D02*
X17485714Y-58428572D01*
D10*
X17390476Y-58285716D02*
X17438096Y-58380952D01*
D10*
X16438095Y-26476190D02*
X16438095Y-25476190D01*
D10*
X16866666Y-25476190D02*
X16438095Y-25476190D01*
D10*
X17009524Y-25523810D02*
X16866666Y-25476190D01*
D10*
X17057142Y-25571428D02*
X17009524Y-25523810D01*
D10*
X17104762Y-25666666D02*
X17057142Y-25571428D01*
D10*
X17104762Y-25761904D02*
X17104762Y-25666666D01*
D10*
X17057142Y-25857142D02*
X17104762Y-25761904D01*
D10*
X17009524Y-25904762D02*
X17057142Y-25857142D01*
D10*
X16866666Y-25952380D02*
X17009524Y-25904762D01*
D10*
X16438095Y-25952380D02*
X16866666Y-25952380D01*
D10*
X17104762Y-26476190D02*
X16771429Y-25952380D01*
D10*
X17628572Y-25619048D02*
X17533334Y-25666666D01*
D10*
X17771428Y-25476190D02*
X17628572Y-25619048D01*
D10*
X17771428Y-26476190D02*
X17771428Y-25476190D01*
D10*
X5199143Y-47342096D02*
X5199143Y-46580192D01*
D10*
X5151524Y-47484952D02*
X5199143Y-47342096D01*
D10*
X5103905Y-47532572D02*
X5151524Y-47484952D01*
D10*
X5008667Y-47580192D02*
X5103905Y-47532572D01*
D10*
X4913428Y-47580192D02*
X5008667Y-47580192D01*
D10*
X4818190Y-47532572D02*
X4913428Y-47580192D01*
D10*
X4770571Y-47484952D02*
X4818190Y-47532572D01*
D10*
X4722952Y-47342096D02*
X4770571Y-47484952D01*
D10*
X4722952Y-47246856D02*
X4722952Y-47342096D01*
D10*
X6103905Y-47056380D02*
X6151524Y-46913524D01*
D10*
X6008666Y-47151620D02*
X6103905Y-47056380D01*
D10*
X5865809Y-47199240D02*
X6008666Y-47151620D01*
D10*
X5818190Y-47199240D02*
X5865809Y-47199240D01*
D10*
X5675333Y-47151620D02*
X5818190Y-47199240D01*
D10*
X5580095Y-47056380D02*
X5675333Y-47151620D01*
D10*
X5532476Y-46913524D02*
X5580095Y-47056380D01*
D10*
X5532476Y-46865904D02*
X5532476Y-46913524D01*
D10*
X5580095Y-46723048D02*
X5532476Y-46865904D01*
D10*
X5675333Y-46627808D02*
X5580095Y-46723048D01*
D10*
X5818190Y-46580192D02*
X5675333Y-46627808D01*
D10*
X5865809Y-46580192D02*
X5818190Y-46580192D01*
D10*
X6008666Y-46627808D02*
X5865809Y-46580192D01*
D10*
X6103905Y-46723048D02*
X6008666Y-46627808D01*
D10*
X6151524Y-46913524D02*
X6103905Y-46723048D01*
D10*
X6151524Y-47151620D02*
X6151524Y-46913524D01*
D10*
X6103905Y-47389716D02*
X6151524Y-47151620D01*
D10*
X6008666Y-47532572D02*
X6103905Y-47389716D01*
D10*
X5865809Y-47580192D02*
X6008666Y-47532572D01*
D10*
X5770571Y-47580192D02*
X5865809Y-47580192D01*
D10*
X5627714Y-47532572D02*
X5770571Y-47580192D01*
D10*
X5580095Y-47437332D02*
X5627714Y-47532572D01*
D10*
X5199143Y-63342096D02*
X5199143Y-62580192D01*
D10*
X5151524Y-63484952D02*
X5199143Y-63342096D01*
D10*
X5103905Y-63532572D02*
X5151524Y-63484952D01*
D10*
X5008667Y-63580192D02*
X5103905Y-63532572D01*
D10*
X4913428Y-63580192D02*
X5008667Y-63580192D01*
D10*
X4818190Y-63532572D02*
X4913428Y-63580192D01*
D10*
X4770571Y-63484952D02*
X4818190Y-63532572D01*
D10*
X4722952Y-63342096D02*
X4770571Y-63484952D01*
D10*
X4722952Y-63246856D02*
X4722952Y-63342096D01*
D10*
X5722952Y-63580192D02*
X6199143Y-62580192D01*
D10*
X6199143Y-62580192D02*
X5532476Y-62580192D01*
D10*
X18810000Y-45770000D02*
X11190000Y-45770000D01*
D10*
X11190000Y-43230000D02*
X18810000Y-43230000D01*
D10*
X12085000Y-47020000D02*
X12460000Y-46270000D01*
D10*
X12460000Y-46270000D02*
X12835000Y-47020000D01*
D10*
X18810000Y-43230000D02*
X18810000Y-45770000D01*
D10*
X12835000Y-47020000D02*
X12085000Y-47020000D01*
D10*
X11190000Y-45770000D02*
X11190000Y-43230000D01*
D10*
X10158095Y-45198572D02*
X9396190Y-45198572D01*
D10*
X10300952Y-45246192D02*
X10158095Y-45198572D01*
D10*
X10348571Y-45293808D02*
X10300952Y-45246192D01*
D10*
X10396190Y-45389048D02*
X10348571Y-45293808D01*
D10*
X10396190Y-45484284D02*
X10396190Y-45389048D01*
D10*
X10348571Y-45579524D02*
X10396190Y-45484284D01*
D10*
X10300952Y-45627144D02*
X10348571Y-45579524D01*
D10*
X10158095Y-45674760D02*
X10300952Y-45627144D01*
D10*
X10062857Y-45674760D02*
X10158095Y-45674760D01*
D10*
X9443810Y-44770000D02*
X9396190Y-44627144D01*
D10*
X9539048Y-44817620D02*
X9443810Y-44770000D01*
D10*
X9634286Y-44817620D02*
X9539048Y-44817620D01*
D10*
X9729524Y-44770000D02*
X9634286Y-44817620D01*
D10*
X9777143Y-44674760D02*
X9729524Y-44770000D01*
D10*
X9824762Y-44484284D02*
X9777143Y-44674760D01*
D10*
X9872381Y-44341428D02*
X9824762Y-44484284D01*
D10*
X9967619Y-44246192D02*
X9872381Y-44341428D01*
D10*
X10062857Y-44198572D02*
X9967619Y-44246192D01*
D10*
X10205714Y-44198572D02*
X10062857Y-44198572D01*
D10*
X10300952Y-44246192D02*
X10205714Y-44198572D01*
D10*
X10348571Y-44293808D02*
X10300952Y-44246192D01*
D10*
X10396190Y-44436668D02*
X10348571Y-44293808D01*
D10*
X10396190Y-44627144D02*
X10396190Y-44436668D01*
D10*
X10348571Y-44770000D02*
X10396190Y-44627144D01*
D10*
X10300952Y-44817620D02*
X10348571Y-44770000D01*
D10*
X10205714Y-44865240D02*
X10300952Y-44817620D01*
D10*
X10062857Y-44865240D02*
X10205714Y-44865240D01*
D10*
X9967619Y-44817620D02*
X10062857Y-44865240D01*
D10*
X9872381Y-44722380D02*
X9967619Y-44817620D01*
D10*
X9824762Y-44579524D02*
X9872381Y-44722380D01*
D10*
X9777143Y-44389048D02*
X9824762Y-44579524D01*
D10*
X9729524Y-44293808D02*
X9777143Y-44389048D01*
D10*
X9634286Y-44246192D02*
X9729524Y-44293808D01*
D10*
X9539048Y-44246192D02*
X9634286Y-44246192D01*
D10*
X9443810Y-44293808D02*
X9539048Y-44246192D01*
D10*
X9396190Y-44436668D02*
X9443810Y-44293808D01*
D10*
X9396190Y-44627144D02*
X9396190Y-44436668D01*
D10*
X18810000Y-29770000D02*
X11190000Y-29770000D01*
D10*
X11190000Y-27230000D02*
X18810000Y-27230000D01*
D10*
X12085000Y-31020000D02*
X12460000Y-30270000D01*
D10*
X12460000Y-30270000D02*
X12835000Y-31020000D01*
D10*
X18810000Y-27230000D02*
X18810000Y-29770000D01*
D10*
X12835000Y-31020000D02*
X12085000Y-31020000D01*
D10*
X11190000Y-29770000D02*
X11190000Y-27230000D01*
D10*
X10158095Y-29198572D02*
X9396190Y-29198572D01*
D10*
X10300952Y-29246190D02*
X10158095Y-29198572D01*
D10*
X10348571Y-29293810D02*
X10300952Y-29246190D01*
D10*
X10396190Y-29389048D02*
X10348571Y-29293810D01*
D10*
X10396190Y-29484286D02*
X10396190Y-29389048D01*
D10*
X10348571Y-29579524D02*
X10396190Y-29484286D01*
D10*
X10300952Y-29627142D02*
X10348571Y-29579524D01*
D10*
X10158095Y-29674762D02*
X10300952Y-29627142D01*
D10*
X10062857Y-29674762D02*
X10158095Y-29674762D01*
D10*
X9539048Y-28627142D02*
X9586667Y-28722380D01*
D10*
X9396190Y-28484286D02*
X9539048Y-28627142D01*
D10*
X10396190Y-28484286D02*
X9396190Y-28484286D01*
D10*
X16438095Y-10476190D02*
X16438095Y-9476190D01*
D10*
X16866666Y-9476190D02*
X16438095Y-9476190D01*
D10*
X17009524Y-9523810D02*
X16866666Y-9476190D01*
D10*
X17057142Y-9571429D02*
X17009524Y-9523810D01*
D10*
X17104762Y-9666667D02*
X17057142Y-9571429D01*
D10*
X17104762Y-9761905D02*
X17104762Y-9666667D01*
D10*
X17057142Y-9857143D02*
X17104762Y-9761905D01*
D10*
X17009524Y-9904762D02*
X17057142Y-9857143D01*
D10*
X16866666Y-9952381D02*
X17009524Y-9904762D01*
D10*
X16438095Y-9952381D02*
X16866666Y-9952381D01*
D10*
X17104762Y-10476190D02*
X16771429Y-9952381D01*
D10*
X17438096Y-9666667D02*
X17438096Y-9714286D01*
D10*
X17485714Y-9571429D02*
X17438096Y-9666667D01*
D10*
X17533334Y-9523810D02*
X17485714Y-9571429D01*
D10*
X17628572Y-9476190D02*
X17533334Y-9523810D01*
D10*
X17819048Y-9476190D02*
X17628572Y-9476190D01*
D10*
X17914286Y-9523810D02*
X17819048Y-9476190D01*
D10*
X17961904Y-9571429D02*
X17914286Y-9523810D01*
D10*
X18009524Y-9666667D02*
X17961904Y-9571429D01*
D10*
X18009524Y-9761905D02*
X18009524Y-9666667D01*
D10*
X17961904Y-9857143D02*
X18009524Y-9761905D01*
D10*
X17866666Y-10000000D02*
X17961904Y-9857143D01*
D10*
X17390476Y-10476190D02*
X17866666Y-10000000D01*
D10*
X18057142Y-10476190D02*
X17390476Y-10476190D01*
D10*
X16438095Y-42476192D02*
X16438095Y-41476192D01*
D10*
X16866666Y-41476192D02*
X16438095Y-41476192D01*
D10*
X17009524Y-41523808D02*
X16866666Y-41476192D01*
D10*
X17057142Y-41571428D02*
X17009524Y-41523808D01*
D10*
X17104762Y-41666668D02*
X17057142Y-41571428D01*
D10*
X17104762Y-41761904D02*
X17104762Y-41666668D01*
D10*
X17057142Y-41857144D02*
X17104762Y-41761904D01*
D10*
X17009524Y-41904760D02*
X17057142Y-41857144D01*
D10*
X16866666Y-41952380D02*
X17009524Y-41904760D01*
D10*
X16438095Y-41952380D02*
X16866666Y-41952380D01*
D10*
X17104762Y-42476192D02*
X16771429Y-41952380D01*
D10*
X17390476Y-42142856D02*
X17866666Y-41476192D01*
D10*
X18104762Y-42142856D02*
X17390476Y-42142856D01*
D10*
X17866666Y-42476192D02*
X17866666Y-41476192D01*
D10*
X18810000Y-13770000D02*
X11190000Y-13770000D01*
D10*
X11190000Y-11230000D02*
X18810000Y-11230000D01*
D10*
X12085000Y-15020000D02*
X12460000Y-14270000D01*
D10*
X12460000Y-14270000D02*
X12835000Y-15020000D01*
D10*
X18810000Y-11230000D02*
X18810000Y-13770000D01*
D10*
X12835000Y-15020000D02*
X12085000Y-15020000D01*
D10*
X11190000Y-13770000D02*
X11190000Y-11230000D01*
D10*
X10158095Y-13198571D02*
X9396190Y-13198571D01*
D10*
X10300952Y-13246190D02*
X10158095Y-13198571D01*
D10*
X10348571Y-13293810D02*
X10300952Y-13246190D01*
D10*
X10396190Y-13389048D02*
X10348571Y-13293810D01*
D10*
X10396190Y-13484286D02*
X10396190Y-13389048D01*
D10*
X10348571Y-13579524D02*
X10396190Y-13484286D01*
D10*
X10300952Y-13627143D02*
X10348571Y-13579524D01*
D10*
X10158095Y-13674762D02*
X10300952Y-13627143D01*
D10*
X10062857Y-13674762D02*
X10158095Y-13674762D01*
D10*
X10062857Y-12865238D02*
X9396190Y-12389048D01*
D10*
X10062857Y-12150952D02*
X10062857Y-12865238D01*
D10*
X10396190Y-12389048D02*
X9396190Y-12389048D01*
G75*
M02*

View file

@ -0,0 +1,47 @@
%FSLAX46Y46*%
%MOMM*%
%AMPS10*
21,1,1.500000,5.000000,0.000000,0.000000,270.000000*
%
%ADD10PS10*%
%AMPS11*
1,1,0.240000,0.130000,0.330000*
1,1,0.240000,0.130000,-0.330000*
21,1,0.500000,0.660000,0.000000,0.000000,180.000000*
21,1,0.260000,0.900000,0.000000,0.000000,180.000000*
1,1,0.240000,-0.130000,0.330000*
1,1,0.240000,-0.130000,-0.330000*
%
%ADD11PS11*%
G01*
%LPD*%
G01*
%LPD*%
G75*
D10*
X36000000Y-32000000D03*
D10*
X36000000Y-29250000D03*
D10*
X36000000Y-34750000D03*
D10*
X36000000Y-37500000D03*
D10*
X36000000Y-26500000D03*
D11*
X17750000Y-56500000D03*
D11*
X16250000Y-56500000D03*
D11*
X17750000Y-24500000D03*
D11*
X16250000Y-24500000D03*
D11*
X17750000Y-8500000D03*
D11*
X16250000Y-8500000D03*
D11*
X17750000Y-40500000D03*
D11*
X16250000Y-40500000D03*
M02*

View file

@ -0,0 +1,303 @@
%FSLAX46Y46*%
%MOMM*%
%AMPS14*
1,1,1.900000,0.000000,0.000000*
%
%ADD14PS14*%
%AMPS15*
21,1,1.700000,5.200000,0.000000,0.000000,270.000000*
%
%ADD15PS15*%
%AMPS17*
1,1,0.500000,0.000000,0.000000*
%
%ADD17PS17*%
%AMPS11*
4,1,8,
-5.942000,2.513000,
-5.942000,1.614500,
-5.230800,1.614500,
-5.230800,0.354000,
-5.942000,0.354000,
-5.942000,-0.100000,
0.100000,-0.100000,
0.100000,2.513000,
-5.942000,2.513000,
0*
%
%ADD11PS11*%
%AMPS13*
21,1,2.490000,6.040000,0.000000,0.000000,90.000000*
%
%ADD13PS13*%
%AMPS10*
1,1,3.200000,0.000000,0.000000*
%
%ADD10PS10*%
%AMPS16*
1,1,0.440000,0.130000,-0.330000*
1,1,0.440000,-0.130000,0.330000*
1,1,0.440000,-0.130000,-0.330000*
1,1,0.440000,0.130000,0.330000*
21,1,0.700000,0.660000,0.000000,0.000000,180.000000*
21,1,0.260000,1.100000,0.000000,0.000000,180.000000*
%
%ADD16PS16*%
%AMPS12*
4,1,8,
-5.942000,0.100000,
-5.942000,-0.354000,
-5.230800,-0.354000,
-5.230800,-1.614500,
-5.942000,-1.614500,
-5.942000,-2.513000,
0.100000,-2.513000,
0.100000,0.100000,
-5.942000,0.100000,
0*
%
%ADD12PS12*%
G01*
%LPD*%
G36*
X0Y-1000000D02*
X0Y0D01*
X39000000Y0D01*
X39000000Y-65000000D01*
X0Y-65000000D01*
X0Y-64000000D01*
X38000000Y-64000000D01*
X38000000Y-1000000D01*
X0Y-1000000D01*
D02*
G37*
G01*
%LPD*%
G75*
D10*
X34000000Y-5000000D03*
D10*
X34000000Y-60000000D03*
D11*
X6342000Y-21325000D03*
D12*
X6342000Y-27675000D03*
D13*
X3420000Y-24500000D03*
D11*
X6342000Y-5325000D03*
D12*
X6342000Y-11675000D03*
D13*
X3420000Y-8500000D03*
D14*
X12460000Y-60500000D03*
D14*
X15000000Y-60500000D03*
D14*
X17540000Y-60500000D03*
D15*
X36000000Y-32000000D03*
D15*
X36000000Y-29250000D03*
D15*
X36000000Y-34750000D03*
D15*
X36000000Y-37500000D03*
D15*
X36000000Y-26500000D03*
D16*
X17750000Y-56500000D03*
D16*
X16250000Y-56500000D03*
D16*
X17750000Y-24500000D03*
D16*
X16250000Y-24500000D03*
D11*
X6342000Y-37325000D03*
D12*
X6342000Y-43675000D03*
D13*
X3420000Y-40500000D03*
D11*
X6342000Y-53325000D03*
D12*
X6342000Y-59675000D03*
D13*
X3420000Y-56500000D03*
D14*
X12460000Y-44500000D03*
D14*
X15000000Y-44500000D03*
D14*
X17540000Y-44500000D03*
D14*
X12460000Y-28500000D03*
D14*
X15000000Y-28500000D03*
D14*
X17540000Y-28500000D03*
D16*
X17750000Y-8500000D03*
D16*
X16250000Y-8500000D03*
D16*
X17750000Y-40500000D03*
D16*
X16250000Y-40500000D03*
D14*
X12460000Y-12500000D03*
D14*
X15000000Y-12500000D03*
D14*
X17540000Y-12500000D03*
D17*
X14500000Y-10000000D03*
D17*
X8000000Y-39000000D03*
D17*
X22000000Y-8500000D03*
D17*
X28500000Y-1500000D03*
D17*
X37500000Y-23500000D03*
D17*
X30500000Y-26500000D03*
D17*
X2000000Y-63500000D03*
D17*
X22500000Y-38500000D03*
D17*
X35500000Y-1500000D03*
D17*
X10000000Y-63500000D03*
D17*
X5500000Y-16500000D03*
D17*
X27000000Y-38000000D03*
D17*
X25500000Y-43000000D03*
D17*
X7500000Y-7000000D03*
D17*
X30500000Y-35500000D03*
D17*
X14500000Y-1500000D03*
D17*
X8000000Y-42000000D03*
D17*
X8000000Y-58000000D03*
D17*
X13000000Y-39000000D03*
D17*
X23500000Y-28000000D03*
D17*
X8000000Y-55000000D03*
D17*
X23500000Y-63500000D03*
D17*
X19000000Y-55000000D03*
D17*
X21500000Y-1500000D03*
D17*
X16000000Y-58000000D03*
D17*
X37000000Y-63500000D03*
D17*
X21000000Y-42000000D03*
D17*
X26000000Y-12500000D03*
D17*
X32000000Y-37500000D03*
D17*
X15000000Y-26000000D03*
D17*
X22000000Y-12500000D03*
D17*
X15000000Y-42000000D03*
D17*
X37500000Y-18000000D03*
D17*
X1000000Y-48500000D03*
D17*
X14000000Y-55000000D03*
D17*
X28000000Y-50000000D03*
D17*
X32500000Y-20500000D03*
D17*
X1500000Y-16500000D03*
D17*
X31500000Y-29000000D03*
D17*
X12000000Y-23000000D03*
D17*
X37000000Y-58500000D03*
D17*
X30000000Y-30500000D03*
D17*
X25000000Y-53500000D03*
D17*
X11500000Y-7000000D03*
D17*
X37500000Y-6000000D03*
D17*
X37500000Y-12000000D03*
D17*
X23000000Y-55000000D03*
D17*
X25500000Y-58000000D03*
D17*
X8000000Y-26000000D03*
D17*
X18000000Y-23000000D03*
D17*
X8000000Y-1500000D03*
D17*
X23500000Y-24000000D03*
D17*
X30500000Y-63500000D03*
D17*
X17500000Y-7000000D03*
D17*
X32500000Y-24500000D03*
D17*
X18000000Y-39000000D03*
D17*
X27000000Y-34000000D03*
D17*
X1500000Y-1500000D03*
D17*
X25500000Y-48000000D03*
D17*
X28500000Y-40500000D03*
D17*
X17000000Y-63500000D03*
D17*
X28500000Y-45000000D03*
D17*
X21500000Y-58000000D03*
D17*
X5500000Y-32500000D03*
D17*
X5500000Y-48500000D03*
D17*
X29500000Y-20500000D03*
D17*
X37500000Y-41000000D03*
D17*
X30000000Y-16500000D03*
D17*
X7500000Y-10000000D03*
D17*
X27500000Y-31500000D03*
D17*
X26000000Y-16500000D03*
D17*
X27500000Y-28000000D03*
D17*
X8000000Y-23000000D03*
D17*
X1500000Y-32500000D03*
M02*

View file

@ -0,0 +1,102 @@
M48
FMAT,2
METRIC,TZ
T3C0.300
T2C1.000
T1C3.000
%
G90
G05
M71
T3
X14.500Y-10.000
X8.000Y-39.000
X22.000Y-8.500
X28.500Y-1.500
X37.500Y-23.500
X30.500Y-26.500
X2.000Y-63.500
X22.500Y-38.500
X35.500Y-1.500
X10.000Y-63.500
X5.500Y-16.500
X27.000Y-38.000
X25.500Y-43.000
X7.500Y-7.000
X30.500Y-35.500
X14.500Y-1.500
X8.000Y-42.000
X8.000Y-58.000
X13.000Y-39.000
X23.500Y-28.000
X8.000Y-55.000
X23.500Y-63.500
X19.000Y-55.000
X21.500Y-1.500
X16.000Y-58.000
X37.000Y-63.500
X21.000Y-42.000
X26.000Y-12.500
X32.000Y-37.500
X15.000Y-26.000
X22.000Y-12.500
X15.000Y-42.000
X37.500Y-18.000
X1.000Y-48.500
X14.000Y-55.000
X28.000Y-50.000
X32.500Y-20.500
X1.500Y-16.500
X31.500Y-29.000
X12.000Y-23.000
X37.000Y-58.500
X30.000Y-30.500
X25.000Y-53.500
X11.500Y-7.000
X37.500Y-6.000
X37.500Y-12.000
X23.000Y-55.000
X25.500Y-58.000
X8.000Y-26.000
X18.000Y-23.000
X8.000Y-1.500
X23.500Y-24.000
X30.500Y-63.500
X17.500Y-7.000
X32.500Y-24.500
X18.000Y-39.000
X27.000Y-34.000
X1.500Y-1.500
X25.500Y-48.000
X28.500Y-40.500
X17.000Y-63.500
X28.500Y-45.000
X21.500Y-58.000
X5.500Y-32.500
X5.500Y-48.500
X29.500Y-20.500
X37.500Y-41.000
X30.000Y-16.500
X7.500Y-10.000
X27.500Y-31.500
X26.000Y-16.500
X27.500Y-28.000
X8.000Y-23.000
X1.500Y-32.500
T2
X12.460Y-60.500
X15.000Y-60.500
X17.540Y-60.500
X12.460Y-44.500
X15.000Y-44.500
X17.540Y-44.500
X12.460Y-28.500
X15.000Y-28.500
X17.540Y-28.500
X12.460Y-12.500
X15.000Y-12.500
X17.540Y-12.500
T1
X34.000Y-5.000
X34.000Y-60.000
M30

Binary file not shown.

17940
obi/external-iface/planes.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,431 @@
{
"arcs": {
"31331b42-c31d-49fb-a8c0-d087060cdeaf": {
"center": "8cad91c2-e816-4b60-bce8-dd2e93577136",
"from": "571d66fc-8cf4-4447-ad11-cfccd2569399",
"layer": 20,
"to": "1f2ea25f-9edd-41a9-8f7b-c88eea2784eb",
"width": 700000
},
"5c31d3fd-16cd-44b3-a28e-71ccb386a243": {
"center": "8cad91c2-e816-4b60-bce8-dd2e93577136",
"from": "1f2ea25f-9edd-41a9-8f7b-c88eea2784eb",
"layer": 20,
"to": "571d66fc-8cf4-4447-ad11-cfccd2569399",
"width": 700000
},
"80f683ed-51fc-498a-9916-a16628d602d9": {
"center": "a6666b50-1f63-43e4-8005-7961b9af4c49",
"from": "5a504432-e37a-431d-ba43-6f8b3f1fd2c6",
"layer": 20,
"to": "3234e80b-dfbe-4ac9-babf-e38d54e8b169",
"width": 2000000
},
"dbe5d70b-5e40-401d-ab3d-5826c9c702f5": {
"center": "a6666b50-1f63-43e4-8005-7961b9af4c49",
"from": "3234e80b-dfbe-4ac9-babf-e38d54e8b169",
"layer": 20,
"to": "5a504432-e37a-431d-ba43-6f8b3f1fd2c6",
"width": 2000000
}
},
"junctions": {
"1f2ea25f-9edd-41a9-8f7b-c88eea2784eb": {
"position": [
-8150000,
-1145750
]
},
"3234e80b-dfbe-4ac9-babf-e38d54e8b169": {
"position": [
950000,
1950000
]
},
"571d66fc-8cf4-4447-ad11-cfccd2569399": {
"position": [
8150000,
1950000
]
},
"5a504432-e37a-431d-ba43-6f8b3f1fd2c6": {
"position": [
-949750,
1902000
]
},
"8cad91c2-e816-4b60-bce8-dd2e93577136": {
"position": [
0,
402125
]
},
"a6666b50-1f63-43e4-8005-7961b9af4c49": {
"position": [
125,
1926000
]
}
},
"lines": {},
"name": "Horizon EDA (Silkscreen)",
"polygons": {
"4099f29e-0272-475d-b30a-8fdd82521475": {
"layer": 20,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6674750,
-1813250
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6441750,
-2420000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-6448750,
-2420000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-6681500,
-1813250
],
"type": "line"
}
]
},
"6255ef85-a205-4a5a-8a46-639ea282f196": {
"layer": 20,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
4579250,
-4939000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-4579000,
-4939000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-4101500,
-5315500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-3591500,
-5650000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-3052000,
-5939750
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2485250,
-6182500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1894000,
-6375500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1281000,
-6516500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-648750,
-6603000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
0,
-6632250
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
649000,
-6602500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1281000,
-6515500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1894250,
-6373750
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2485500,
-6179750
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
3052250,
-5936750
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
3591750,
-5647000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
4101750,
-5313500
],
"type": "line"
}
]
},
"e2d60933-4a37-4202-8379-c6c89b9fd5b8": {
"layer": 20,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6096000,
-3104500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6096000,
-3104500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-6096000,
-3104500
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-5771250,
-3617000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-5404500,
-4092250
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
5411750,
-4092250
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
5775000,
-3617000
],
"type": "line"
}
]
}
},
"texts": {},
"type": "decal",
"uuid": "43187eed-3a67-4629-a544-f980ea5a2683"
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,19 @@
{
"gates": {
"7fbb1da2-7777-4835-add3-612b96b30e91": {
"name": "Main",
"suffix": "",
"swap_group": 0,
"unit": "e74e03b1-a7b8-4ba0-aecd-432f6f494064"
}
},
"manufacturer": "",
"name": "Coaxial connector",
"prefix": "J",
"tags": [
"connector",
"generic"
],
"type": "entity",
"uuid": "1d1d771d-3f05-4639-ba89-48f54cee58c6"
}

View file

@ -0,0 +1 @@
{"type": "entity", "manufacturer": "", "prefix": "J", "name": "Generic 9 pin connector", "tags": ["connector", "generic"], "uuid": "218b8c98-a576-4e2c-bb43-b7b0dcfcedf8", "gates": {"672e1f10-0401-43ad-b266-e7b705e49202": {"name": "Main", "suffix": "", "swap_group": 0, "unit": "804f8c1a-9233-4f1d-8327-9793242cd931"}}}

View file

@ -0,0 +1 @@
{"type": "entity", "manufacturer": "", "prefix": "J", "name": "Generic 2 pin connector", "tags": ["connector", "generic"], "uuid": "29f544a1-a789-4fe6-a1ef-29da5ba3d371", "gates": {"eb7f68b1-6fba-4a35-a470-2cecb23fe087": {"name": "Main", "suffix": "", "swap_group": 0, "unit": "c6a7e13e-6c70-4a80-a0dd-335d7b16967f"}}}

View file

@ -0,0 +1,15 @@
{
"gates": {
"48af78e5-730e-44eb-977a-cf188e4fcb39": {
"name": "Main",
"suffix": "",
"swap_group": 0,
"unit": "9b22b899-e8eb-4ce8-b62d-79b7b2db035e"
}
},
"tags": ["passive", "resistor", "generic"],
"name": "Two-terminal resistor",
"prefix": "R",
"type": "entity",
"uuid": "3ce770af-7be0-4f72-b2af-2c8010911aaf"
}

View file

@ -0,0 +1 @@
{"type": "entity", "manufacturer": "", "prefix": "J", "name": "Generic 3 pin connector", "tags": ["connector", "generic"], "uuid": "dac08463-17e8-4eb3-b5b4-4d7be5775379", "gates": {"6cbea03f-31ec-49ea-9903-b9bf7b26e340": {"name": "Main", "suffix": "", "swap_group": 0, "unit": "f866fdef-b785-46aa-998b-da21e7d86e93"}}}

View file

@ -0,0 +1,288 @@
{
"arcs": {},
"default_model": "00000000-0000-0000-0000-000000000000",
"dimensions": {},
"grid_settings": {
"current": {
"mode": "square",
"name": "",
"origin": [
0,
0
],
"spacing_rect": [
1000000,
1000000
],
"spacing_square": 250000
},
"grids": {}
},
"junctions": {
"4b548a1f-82d5-42f1-b5a9-233020c66816": {
"position": [
4750000,
3000000
]
},
"514e9d38-4fde-4966-a894-2f0f7a27bd89": {
"position": [
6250000,
3000000
]
}
},
"keepouts": {},
"lines": {
"462dbd4c-be6e-444e-a94b-7ed4e6f980a3": {
"from": "4b548a1f-82d5-42f1-b5a9-233020c66816",
"layer": 20,
"to": "514e9d38-4fde-4966-a894-2f0f7a27bd89",
"width": 200000
}
},
"manufacturer": "Generic",
"models": {},
"name": "DE9 Edge Launch",
"pads": {
"2ce9090d-e907-40e7-bd24-711373251638": {
"name": "3",
"padstack": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
0,
0
]
}
},
"38694908-72f1-4e93-bf64-d8b662f1087f": {
"name": "7",
"padstack": "263ec020-0287-4960-bda2-bd4f5aa0a974",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
1375000,
0
]
}
},
"3df241d8-aeb4-439e-a9ac-22c7aaf48490": {
"name": "2",
"padstack": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
2750000,
0
]
}
},
"3e2d527c-2db6-4dc1-9226-59bcbda861d4": {
"name": "6",
"padstack": "263ec020-0287-4960-bda2-bd4f5aa0a974",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
4125000,
0
]
}
},
"8e656416-0602-411a-af02-9e498375fb2f": {
"name": "8",
"padstack": "263ec020-0287-4960-bda2-bd4f5aa0a974",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
-1375000,
0
]
}
},
"9da96202-0edd-4196-88ec-120aad459ec7": {
"name": "9",
"padstack": "263ec020-0287-4960-bda2-bd4f5aa0a974",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
-4125000,
0
]
}
},
"a3bb016b-1d92-4ed8-8119-6b5bce4de43f": {
"name": "4",
"padstack": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
-2750000,
0
]
}
},
"cdde280e-46d5-4eae-9b16-575da6b5adee": {
"name": "5",
"padstack": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
-5500000,
0
]
}
},
"fe4913ff-9bf2-4e00-a1c5-f04e05eebc43": {
"name": "1",
"padstack": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"parameter_set": {
"pad_height": 5000000,
"pad_width": 1500000
},
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
5500000,
0
]
}
}
},
"parameter_program": "",
"parameter_set": {},
"polygons": {
"aac874c5-6a5d-4f13-b3e5-8f43b4301e80": {
"layer": 60,
"parameter_class": "courtyard",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6250000,
2500000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
6250000,
-2500000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-6250000,
-2500000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-6250000,
2500000
],
"type": "line"
}
]
}
},
"rules": {
"clearance_package": {
"clearance_silkscreen_cu": 200000,
"clearance_silkscreen_pkg": 200000,
"enabled": true,
"order": -1
},
"package_checks": {
"enabled": true,
"order": -1
}
},
"tags": [
"connector",
"generic"
],
"texts": {
"8f5ea38d-8466-4480-9162-1bba31f49f2e": {
"font": "simplex",
"from_smash": false,
"layer": 20,
"origin": "center",
"placement": {
"angle": 32768,
"mirror": false,
"shift": [
6250000,
4250000
]
},
"size": 1000000,
"text": "$RD",
"width": 150000
}
},
"type": "package",
"uuid": "8a7c447c-9b38-4008-bb36-4963eb1707ea"
}

View file

@ -0,0 +1,363 @@
{
"arcs": {},
"default_model": "84ec8229-d872-42f8-bfcc-96938ff02bd1",
"dimensions": {},
"junctions": {
"0a740d64-5459-44e6-bdcc-a1efd331d807": {
"position": [
1270000,
-2540000
]
},
"80a43f22-0059-4ced-b4d8-ff1c36015780": {
"position": [
-1270000,
-2540000
]
},
"9b0bf198-8b0c-45ff-a14f-aa74d93facd4": {
"position": [
-1770000,
1270000
]
},
"9b10026b-58a7-43e4-953a-68a6935f3bab": {
"position": [
-2520000,
895000
]
},
"d69a70c8-e93e-4059-9ac3-709a743093ab": {
"position": [
-1270000,
2540000
]
},
"dff7942a-6556-4260-80b8-a09a91366b54": {
"position": [
1270000,
2540000
]
},
"eaff5280-c820-4c14-a432-97091dbfe4be": {
"position": [
-2520000,
1645000
]
}
},
"keepouts": {},
"lines": {
"235709dc-0c3e-42d0-89c4-e087c95fcba6": {
"from": "80a43f22-0059-4ced-b4d8-ff1c36015780",
"layer": 20,
"to": "d69a70c8-e93e-4059-9ac3-709a743093ab",
"width": 150000
},
"3f0d920f-2e18-4ad1-96f5-e31e863a69ee": {
"from": "dff7942a-6556-4260-80b8-a09a91366b54",
"layer": 20,
"to": "0a740d64-5459-44e6-bdcc-a1efd331d807",
"width": 150000
},
"3f165a62-2d8a-4472-b386-0f4701f0ca4c": {
"from": "eaff5280-c820-4c14-a432-97091dbfe4be",
"layer": 20,
"to": "9b0bf198-8b0c-45ff-a14f-aa74d93facd4",
"width": 150000
},
"61b2951c-0510-408b-a63e-73b3c3f8761b": {
"from": "9b0bf198-8b0c-45ff-a14f-aa74d93facd4",
"layer": 20,
"to": "9b10026b-58a7-43e4-953a-68a6935f3bab",
"width": 150000
},
"adac42c7-c996-4b71-a7b8-416675e8c859": {
"from": "0a740d64-5459-44e6-bdcc-a1efd331d807",
"layer": 20,
"to": "80a43f22-0059-4ced-b4d8-ff1c36015780",
"width": 150000
},
"bea06d61-6320-4083-ba8d-784febec8765": {
"from": "9b10026b-58a7-43e4-953a-68a6935f3bab",
"layer": 20,
"to": "eaff5280-c820-4c14-a432-97091dbfe4be",
"width": 150000
},
"e8cdf09f-2937-4d7c-aa87-6b5ebaa148aa": {
"from": "d69a70c8-e93e-4059-9ac3-709a743093ab",
"layer": 20,
"to": "dff7942a-6556-4260-80b8-a09a91366b54",
"width": 150000
}
},
"manufacturer": "",
"models": {
"84ec8229-d872-42f8-bfcc-96938ff02bd1": {
"filename": "3d_models/cache/6d752bc3-29b3-45df-8cf2-1e3aacefbcc6/3d_models/connector/header/2.54mm/PinHeader_1x02_P2.54mm_Vertical.step",
"pitch": 0,
"roll": 0,
"x": 0,
"y": 1270000,
"yaw": 0,
"z": 0
}
},
"name": "Pin header 1×2, 2.54mm pitch, vertical",
"pads": {
"7bc2147a-0234-41f6-ab65-444e57a43ce5": {
"name": "1",
"padstack": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"parameter_set": {
"hole_diameter": 1000000,
"pad_diameter": 1700000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
1270000
]
}
},
"7de8ad61-d839-4bad-85e8-5b3d093d4d6c": {
"name": "2",
"padstack": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"parameter_set": {
"hole_diameter": 1000000,
"pad_diameter": 1700000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
-1270000
]
}
}
},
"parameter_program": "2.540mm 5.080mm\nget-parameter [ courtyard_expansion ]\n2 * +xy\nset-polygon [ courtyard rectangle 0mm 0mm ]",
"parameter_set": {
"courtyard_expansion": 250000
},
"polygons": {
"3322ee2d-24ff-47df-9c67-0f9626dffd93": {
"layer": 40,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-2540000
],
"type": "line"
}
]
},
"45a233cb-e960-474c-95b5-01d39aa03eb7": {
"layer": 60,
"parameter_class": "courtyard",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-2540000
],
"type": "line"
}
]
},
"fa8bb976-c5ec-46a7-9da1-880aa4d5f94d": {
"layer": 50,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-2540000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
1540000
],
"type": "line"
}
]
}
},
"tags": [
"generic",
"header"
],
"texts": {
"913b4616-24ea-484f-bb29-d62f975cde42": {
"font": "simplex",
"from_smash": false,
"layer": 20,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-1270000,
3810000
]
},
"size": 1000000,
"text": "$RD",
"width": 150000
},
"de20a055-0c45-4a0e-adc5-a23e4b0a5e0e": {
"font": "simplex",
"from_smash": false,
"layer": 50,
"origin": "center",
"placement": {
"angle": 16384,
"mirror": false,
"shift": [
0,
-2540000
]
},
"size": 1500000,
"text": "$RD",
"width": 0
}
},
"type": "package",
"uuid": "84529497-31a1-4f8f-abac-c07d0782069f"
}

View file

@ -0,0 +1,379 @@
{
"arcs": {},
"default_model": "84ec8229-d872-42f8-bfcc-96938ff02bd1",
"dimensions": {},
"junctions": {
"0a740d64-5459-44e6-bdcc-a1efd331d807": {
"position": [
1270000,
-3810000
]
},
"80a43f22-0059-4ced-b4d8-ff1c36015780": {
"position": [
-1270000,
-3810000
]
},
"9b0bf198-8b0c-45ff-a14f-aa74d93facd4": {
"position": [
-1770000,
2540000
]
},
"9b10026b-58a7-43e4-953a-68a6935f3bab": {
"position": [
-2520000,
2165000
]
},
"d69a70c8-e93e-4059-9ac3-709a743093ab": {
"position": [
-1270000,
3810000
]
},
"dff7942a-6556-4260-80b8-a09a91366b54": {
"position": [
1270000,
3810000
]
},
"eaff5280-c820-4c14-a432-97091dbfe4be": {
"position": [
-2520000,
2915000
]
}
},
"keepouts": {},
"lines": {
"235709dc-0c3e-42d0-89c4-e087c95fcba6": {
"from": "80a43f22-0059-4ced-b4d8-ff1c36015780",
"layer": 20,
"to": "d69a70c8-e93e-4059-9ac3-709a743093ab",
"width": 150000
},
"3f0d920f-2e18-4ad1-96f5-e31e863a69ee": {
"from": "dff7942a-6556-4260-80b8-a09a91366b54",
"layer": 20,
"to": "0a740d64-5459-44e6-bdcc-a1efd331d807",
"width": 150000
},
"3f165a62-2d8a-4472-b386-0f4701f0ca4c": {
"from": "eaff5280-c820-4c14-a432-97091dbfe4be",
"layer": 20,
"to": "9b0bf198-8b0c-45ff-a14f-aa74d93facd4",
"width": 150000
},
"61b2951c-0510-408b-a63e-73b3c3f8761b": {
"from": "9b0bf198-8b0c-45ff-a14f-aa74d93facd4",
"layer": 20,
"to": "9b10026b-58a7-43e4-953a-68a6935f3bab",
"width": 150000
},
"adac42c7-c996-4b71-a7b8-416675e8c859": {
"from": "0a740d64-5459-44e6-bdcc-a1efd331d807",
"layer": 20,
"to": "80a43f22-0059-4ced-b4d8-ff1c36015780",
"width": 150000
},
"bea06d61-6320-4083-ba8d-784febec8765": {
"from": "9b10026b-58a7-43e4-953a-68a6935f3bab",
"layer": 20,
"to": "eaff5280-c820-4c14-a432-97091dbfe4be",
"width": 150000
},
"e8cdf09f-2937-4d7c-aa87-6b5ebaa148aa": {
"from": "d69a70c8-e93e-4059-9ac3-709a743093ab",
"layer": 20,
"to": "dff7942a-6556-4260-80b8-a09a91366b54",
"width": 150000
}
},
"manufacturer": "",
"models": {
"84ec8229-d872-42f8-bfcc-96938ff02bd1": {
"filename": "3d_models/cache/6d752bc3-29b3-45df-8cf2-1e3aacefbcc6/3d_models/connector/header/2.54mm/PinHeader_1x03_P2.54mm_Vertical.step",
"pitch": 0,
"roll": 0,
"x": 0,
"y": 2540000,
"yaw": 0,
"z": 0
}
},
"name": "Pin header 1×3, 2.54mm pitch, vertical",
"pads": {
"7bc2147a-0234-41f6-ab65-444e57a43ce5": {
"name": "1",
"padstack": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"parameter_set": {
"hole_diameter": 1000000,
"pad_diameter": 1700000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
2540000
]
}
},
"7de8ad61-d839-4bad-85e8-5b3d093d4d6c": {
"name": "2",
"padstack": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"parameter_set": {
"hole_diameter": 1000000,
"pad_diameter": 1700000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"f4f2991b-d46c-492e-b2b6-beacc3120e00": {
"name": "3",
"padstack": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"parameter_set": {
"hole_diameter": 1000000,
"pad_diameter": 1700000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
-2540000
]
}
}
},
"parameter_program": "2.540mm 7.620mm\nget-parameter [ courtyard_expansion ]\n2 * +xy\nset-polygon [ courtyard rectangle 0mm 0mm ]",
"parameter_set": {
"courtyard_expansion": 250000
},
"polygons": {
"3322ee2d-24ff-47df-9c67-0f9626dffd93": {
"layer": 40,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-3810000
],
"type": "line"
}
]
},
"45a233cb-e960-474c-95b5-01d39aa03eb7": {
"layer": 60,
"parameter_class": "courtyard",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-3810000
],
"type": "line"
}
]
},
"fa8bb976-c5ec-46a7-9da1-880aa4d5f94d": {
"layer": 50,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1270000,
-3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
-3810000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1270000,
2810000
],
"type": "line"
}
]
}
},
"tags": [
"generic",
"header"
],
"texts": {
"913b4616-24ea-484f-bb29-d62f975cde42": {
"font": "simplex",
"from_smash": false,
"layer": 20,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-1270000,
5080000
]
},
"size": 1000000,
"text": "$RD",
"width": 150000
},
"de20a055-0c45-4a0e-adc5-a23e4b0a5e0e": {
"font": "simplex",
"from_smash": false,
"layer": 50,
"origin": "center",
"placement": {
"angle": 16384,
"mirror": false,
"shift": [
0,
-3810000
]
},
"size": 1500000,
"text": "$RD",
"width": 0
}
},
"type": "package",
"uuid": "9103c334-3f16-47e9-ab2b-a9700763c47f"
}

View file

@ -0,0 +1,422 @@
{
"arcs": {},
"default_model": "00000000-0000-0000-0000-000000000000",
"dimensions": {},
"junctions": {},
"keepouts": {},
"lines": {},
"manufacturer": "Molex",
"models": {},
"name": "73251-1150",
"pads": {
"71d17bc9-8dcb-4d8d-85e1-7487fc9ae67c": {
"name": "GND2",
"padstack": "52e0c9cb-539a-4d70-af97-9b131d2dd86e",
"parameter_set": {},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
3175000,
-5842000
]
}
},
"c455703e-4ce6-4d3f-adbe-6f8179d36b75": {
"name": "GND1",
"padstack": "f42e8caa-d3f3-4afc-9580-45ee1bbdfab6",
"parameter_set": {},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-3175000,
-5842000
]
}
},
"d33a5d70-8af2-40e2-8567-e67653d1ac6b": {
"name": "SIG",
"padstack": "549ce255-6721-44db-9d47-ec07764772ca",
"parameter_set": {
"pad_height": 5840000,
"pad_width": 2290000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
-2920000
]
}
}
},
"parameter_program": "11.176mm 5.842mm\nget-parameter [ courtyard_expansion ]\n2 * +xy\nset-polygon [ courtyard rectangle 0.000mm -2.921mm ]",
"parameter_set": {
"courtyard_expansion": 250000
},
"polygons": {
"4de26164-014c-400f-9bb7-15537e80ca5c": {
"layer": 40,
"parameter_class": "",
"vertices": [
{
"arc_center": [
237500,
0
],
"arc_reverse": false,
"position": [
4762489,
1651000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2692400,
1651000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2692400,
9525000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2692400,
9525000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2692400,
1651000
],
"type": "line"
},
{
"arc_center": [
-237500,
0
],
"arc_reverse": false,
"position": [
-4762511,
1651000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-4762511,
-4749800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-3746511,
-4749800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-3746511,
508000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-381011,
508000
],
"type": "line"
},
{
"arc_center": [
-869000,
0
],
"arc_reverse": false,
"position": [
-381011,
-4749800
],
"type": "line"
},
{
"arc_center": [
869000,
0
],
"arc_reverse": false,
"position": [
380989,
-4749800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
380989,
508000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
3746489,
508000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
3746489,
-4749800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
4762489,
-4749800
],
"type": "line"
}
]
},
"764693ac-937c-412f-ac61-561f45649603": {
"layer": 60,
"parameter_class": "courtyard",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-5838000,
-6092000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-5838000,
250000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
5838000,
250000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
5838000,
-6092000
],
"type": "line"
}
]
},
"d7daa14c-5596-43b6-aa5e-a13873f751cb": {
"layer": 50,
"parameter_class": "",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-4762511,
-4749800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-4762500,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
4762500,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
4762489,
-4749800
],
"type": "line"
}
]
}
},
"rules": {
"clearance_package": {
"clearance_silkscreen_cu": 200000,
"clearance_silkscreen_pkg": 200000,
"enabled": true,
"order": -1
},
"package_checks": {
"enabled": true,
"order": -1
}
},
"tags": [
"coaxial",
"connector",
"sma"
],
"texts": {
"1d502916-9294-4bc7-98d1-18a9dd62d916": {
"font": "simplex",
"from_smash": false,
"layer": 20,
"origin": "center",
"placement": {
"angle": 16384,
"mirror": false,
"shift": [
-6604000,
-5842000
]
},
"size": 1000000,
"text": "$RD",
"width": 150000
},
"791cb769-9049-486a-b6cc-47e853831bf0": {
"font": "simplex",
"from_smash": false,
"layer": 50,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-3810000,
-2540000
]
},
"size": 1000000,
"text": "$RD",
"width": 0
}
},
"type": "package",
"uuid": "afcfb049-61c1-4439-8c6a-c30a8eb07ab3"
}

View file

@ -0,0 +1,424 @@
{
"holes": {},
"name": "Right",
"padstack_type": "top",
"parameter_program": "get-parameter [ solder_mask_expansion ]\nexpand-polygon [ mask 2413000 5842000 1714500 5842000 1714500 5130800 254000 5130800 254000 5842000 0 5842000 0 0 2413000 0 ]\n\n",
"parameter_set": {
"solder_mask_expansion": 100000
},
"parameters_required": [],
"polygons": {
"721722e3-84f4-4caa-ba2b-86ae64df2cb6": {
"layer": 10,
"parameter_class": "mask",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2513000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1614500,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1614500,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
354000,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
354000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-100000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-100000,
-100000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2513000,
-100000
],
"type": "line"
}
]
},
"ccb60b32-c98d-45cd-af20-bb7532c5b802": {
"layer": -100,
"parameter_class": "",
"vertices": [
{
"arc_center": [
498000,
0
],
"arc_reverse": false,
"position": [
0,
5842000
],
"type": "line"
},
{
"arc_center": [
-498000,
0
],
"arc_reverse": false,
"position": [
254000,
5842000
],
"type": "line"
},
{
"arc_center": [
-105000,
0
],
"arc_reverse": false,
"position": [
254000,
5130800
],
"type": "line"
},
{
"arc_center": [
105000,
0
],
"arc_reverse": false,
"position": [
1714500,
5130800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1714500,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2413000,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2413000,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
0,
0
],
"type": "line"
}
]
},
"e12104a1-58bc-456c-907a-a11ad9650bcb": {
"layer": 0,
"parameter_class": "",
"vertices": [
{
"arc_center": [
498000,
0
],
"arc_reverse": false,
"position": [
0,
5842000
],
"type": "line"
},
{
"arc_center": [
-498000,
0
],
"arc_reverse": false,
"position": [
254000,
5842000
],
"type": "line"
},
{
"arc_center": [
-105000,
0
],
"arc_reverse": false,
"position": [
254000,
5130800
],
"type": "line"
},
{
"arc_center": [
105000,
0
],
"arc_reverse": false,
"position": [
1714500,
5130800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1714500,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2413000,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2413000,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
0,
0
],
"type": "line"
}
]
},
"ec6ce035-05e5-45f6-84d9-4da81f973a80": {
"layer": -110,
"parameter_class": "mask",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2513000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1614500,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1614500,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
354000,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
354000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-100000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-100000,
-100000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
2513000,
-100000
],
"type": "line"
}
]
}
},
"shapes": {},
"type": "padstack",
"uuid": "52e0c9cb-539a-4d70-af97-9b131d2dd86e",
"well_known_name": ""
}

View file

@ -0,0 +1,424 @@
{
"holes": {},
"name": "Left",
"padstack_type": "top",
"parameter_program": "get-parameter [ solder_mask_expansion ]\nexpand-polygon [ mask 0 5842000 -254000 5842000 -254000 5130800 -1714500 5130800 -1714500 5842000 -2413000 5842000 -2413000 0 0 0 ]\n",
"parameter_set": {
"solder_mask_expansion": 100000
},
"parameters_required": [],
"polygons": {
"580de9e5-c615-49d7-a4bb-4b6bbd33681d": {
"layer": -110,
"parameter_class": "mask",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
100000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-354000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-354000,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1614500,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1614500,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2513000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2513000,
-100000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
100000,
-100000
],
"type": "line"
}
]
},
"997e0ec6-5a3f-45e4-a30d-a1d02af6aab3": {
"layer": 0,
"parameter_class": "",
"vertices": [
{
"arc_center": [
498000,
0
],
"arc_reverse": false,
"position": [
0,
5842000
],
"type": "line"
},
{
"arc_center": [
-498000,
0
],
"arc_reverse": false,
"position": [
-254000,
5842000
],
"type": "line"
},
{
"arc_center": [
-105000,
0
],
"arc_reverse": false,
"position": [
-254000,
5130800
],
"type": "line"
},
{
"arc_center": [
105000,
0
],
"arc_reverse": false,
"position": [
-1714500,
5130800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1714500,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2413000,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2413000,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
0,
0
],
"type": "line"
}
]
},
"c29699f4-f9ca-4e9b-9f29-c6aa128baaf8": {
"layer": -100,
"parameter_class": "",
"vertices": [
{
"arc_center": [
498000,
0
],
"arc_reverse": false,
"position": [
0,
5842000
],
"type": "line"
},
{
"arc_center": [
-498000,
0
],
"arc_reverse": false,
"position": [
-254000,
5842000
],
"type": "line"
},
{
"arc_center": [
-105000,
0
],
"arc_reverse": false,
"position": [
-254000,
5130800
],
"type": "line"
},
{
"arc_center": [
105000,
0
],
"arc_reverse": false,
"position": [
-1714500,
5130800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1714500,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2413000,
5842000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2413000,
0
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
0,
0
],
"type": "line"
}
]
},
"c9499d6f-9685-4236-9e16-ec6d23eeb3a0": {
"layer": 10,
"parameter_class": "mask",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
100000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-354000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-354000,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1614500,
5230800
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1614500,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2513000,
5942000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-2513000,
-100000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
100000,
-100000
],
"type": "line"
}
]
}
},
"shapes": {},
"type": "padstack",
"uuid": "f42e8caa-d3f3-4afc-9580-45ee1bbdfab6",
"well_known_name": ""
}

View file

@ -0,0 +1,279 @@
{
"arcs": {},
"default_model": "96c366ee-a963-41a0-9cc8-54c646979695",
"dimensions": {},
"junctions": {},
"keepouts": {},
"lines": {},
"manufacturer": "",
"models": {
"96c366ee-a963-41a0-9cc8-54c646979695": {
"filename": "3d_models/cache/6d752bc3-29b3-45df-8cf2-1e3aacefbcc6/3d_models/passive/resistor/R_0603_1608Metric.step",
"pitch": 0,
"roll": 0,
"x": 0,
"y": 0,
"yaw": 0,
"z": 0
}
},
"name": "R0603",
"pads": {
"63256dd2-2eab-46fe-9201-b2e553476e98": {
"name": "1",
"padstack": "8e762581-e1b1-4fb4-81d3-7f8a1cabb97f",
"parameter_set": {
"corner_radius": 120000,
"pad_height": 900000,
"pad_width": 500000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-750000,
0
]
}
},
"6dd73a26-6e83-43b6-8317-09836acef67d": {
"name": "2",
"padstack": "8e762581-e1b1-4fb4-81d3-7f8a1cabb97f",
"parameter_set": {
"corner_radius": 120000,
"pad_height": 900000,
"pad_width": 500000
},
"placement": {
"angle": 0,
"mirror": false,
"shift": [
750000,
0
]
}
}
},
"parameter_program": "2mm 0.9mm\nget-parameter [ courtyard_expansion ]\n2 * +xy\nset-polygon [ courtyard rectangle 0 0 ]",
"parameter_set": {
"courtyard_expansion": 250000
},
"polygons": {
"70304e41-42a9-420c-8df2-7f55e794790d": {
"layer": 60,
"parameter_class": "courtyard",
"vertices": [
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1250000,
-700000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
-1250000,
700000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1250000,
700000
],
"type": "line"
},
{
"arc_center": [
0,
0
],
"arc_reverse": false,
"position": [
1250000,
-700000
],
"type": "line"
}
]
},
"77bb0c60-8394-4c84-9618-7b8a18a38af1": {
"layer": 40,
"parameter_class": "",
"vertices": [
{
"arc_center": [
200000,
-100000
],
"arc_reverse": false,
"position": [
-800000,
400000
],
"type": "line"
},
{
"arc_center": [
200000,
100000
],
"arc_reverse": false,
"position": [
-800000,
-400000
],
"type": "line"
},
{
"arc_center": [
-200000,
100000
],
"arc_reverse": false,
"position": [
800000,
-400000
],
"type": "line"
},
{
"arc_center": [
-200000,
-100000
],
"arc_reverse": false,
"position": [
800000,
400000
],
"type": "line"
}
]
},
"963b656b-1f38-4212-bae8-58eeaf4bec3c": {
"layer": 50,
"parameter_class": "",
"vertices": [
{
"arc_center": [
200000,
-100000
],
"arc_reverse": false,
"position": [
-800000,
400000
],
"type": "line"
},
{
"arc_center": [
200000,
100000
],
"arc_reverse": false,
"position": [
-800000,
-400000
],
"type": "line"
},
{
"arc_center": [
-200000,
100000
],
"arc_reverse": false,
"position": [
800000,
-400000
],
"type": "line"
},
{
"arc_center": [
-200000,
-100000
],
"arc_reverse": false,
"position": [
800000,
400000
],
"type": "line"
}
]
}
},
"rules": {
"clearance_package": {
"clearance_silkscreen_cu": 200000,
"clearance_silkscreen_pkg": 200000,
"enabled": true,
"order": -1
},
"package_checks": {
"enabled": true,
"order": -1
}
},
"tags": [
"generic",
"smd"
],
"texts": {
"02fe2ab4-3e88-406e-9dd5-a01be9241517": {
"font": "simplex",
"from_smash": false,
"layer": 50,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-800000,
0
]
},
"size": 300000,
"text": "$RD",
"width": 0
},
"522e0b9a-7aee-4f56-9c9e-c9e48e62cea5": {
"font": "simplex",
"from_smash": false,
"layer": 20,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-1200000,
1500000
]
},
"size": 1000000,
"text": "$RD",
"width": 150000
}
},
"type": "package",
"uuid": "fe22ac1d-25b9-4a47-8414-51c990d7f94b"
}

View file

@ -0,0 +1,55 @@
{
"holes": {},
"name": "SMD rectangular (no paste, bottom)",
"padstack_type": "bottom",
"parameter_program": "get-parameter [ pad_width ]\nget-parameter [ pad_height ]\ndupc dupc\nset-shape [ pad rectangle ]\nget-parameter [ solder_mask_expansion ]\n2 *\n+xy\nset-shape [ mask rectangle ]",
"parameter_set": {
"pad_height": 900000,
"pad_width": 700000,
"solder_mask_expansion": 100000
},
"parameters_required": [
"pad_width",
"pad_height"
],
"polygons": {},
"shapes": {
"ddcf3d29-661b-41d1-ac1a-5e335f94e736": {
"form": "rectangle",
"layer": -100,
"parameter_class": "pad",
"params": [
700000,
900000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"e93f30d7-af52-4284-8af0-b2341ade6c5d": {
"form": "rectangle",
"layer": -110,
"parameter_class": "mask",
"params": [
900000,
1100000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "263ec020-0287-4960-bda2-bd4f5aa0a974",
"well_known_name": ""
}

View file

@ -0,0 +1,117 @@
{
"holes": {
"aad60944-b2c4-4a0c-88e0-b52cabcfa95b": {
"diameter": 400000,
"length": 500000,
"parameter_class": "hole",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
},
"plated": true,
"shape": "round"
}
},
"name": "TH round",
"padstack_type": "through",
"parameter_program": "get-parameter [ hole_diameter ]\ndup\nset-hole [ hole round ]\n\nget-parameter [ pad_diameter ] dup\nset-shape [ copper circle ]\n\nget-parameter [ solder_mask_expansion ] 2 * +\nset-shape [ mask circle ] ",
"parameter_set": {
"hole_diameter": 400000,
"pad_diameter": 600000,
"solder_mask_expansion": 100000
},
"parameters_required": [
"pad_diameter",
"hole_diameter"
],
"polygons": {},
"shapes": {
"35d48caf-d547-4382-b165-77cc9cc637d6": {
"form": "circle",
"layer": 0,
"parameter_class": "copper",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"57c576a3-1d92-43e7-8760-fe443a23f1af": {
"form": "circle",
"layer": 10,
"parameter_class": "mask",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"7ce79fc2-169e-44ce-b355-473cddadba0f": {
"form": "circle",
"layer": -110,
"parameter_class": "mask",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"bed217e6-2bf3-4ac3-bfe4-544dfa66c2e5": {
"form": "circle",
"layer": -1,
"parameter_class": "copper",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"d71acd28-ea4c-4a7a-b746-8f609baeb703": {
"form": "circle",
"layer": -100,
"parameter_class": "copper",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "296cf69b-9d53-45e4-aaab-4aedf4087d3a",
"well_known_name": "th circular"
}

View file

@ -0,0 +1,73 @@
{
"holes": {},
"name": "SMD rectangular",
"padstack_type": "top",
"parameter_program": "get-parameter [ pad_width ]\nget-parameter [ pad_height ]\ndupc dupc\nset-shape [ pad rectangle ]\nget-parameter [ solder_mask_expansion ]\n2 *\n+xy\nset-shape [ mask rectangle ]\n\nget-parameter [ paste_mask_contraction ]\n2 *\n-xy\nset-shape [ paste rectangle ]",
"parameter_set": {
"pad_height": 900000,
"pad_width": 700000,
"paste_mask_contraction": 0,
"solder_mask_expansion": 100000
},
"parameters_required": [
"pad_width",
"pad_height"
],
"polygons": {},
"shapes": {
"888ff92f-96e3-4658-a9cb-1e9626aafe07": {
"form": "rectangle",
"layer": 30,
"parameter_class": "paste",
"params": [
700000,
900000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"ddcf3d29-661b-41d1-ac1a-5e335f94e736": {
"form": "rectangle",
"layer": 0,
"parameter_class": "pad",
"params": [
700000,
900000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"e93f30d7-af52-4284-8af0-b2341ade6c5d": {
"form": "rectangle",
"layer": 10,
"parameter_class": "mask",
"params": [
900000,
1100000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "3846f4bf-7acf-403a-bc36-771ec675eac9",
"well_known_name": "smd rectangular"
}

View file

@ -0,0 +1,116 @@
{
"holes": {
"056fa8e5-8b21-454e-a805-467fd49763b6": {
"diameter": 400000,
"length": 500000,
"parameter_class": "hole",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
},
"plated": true,
"shape": "round"
}
},
"name": "Circular via",
"padstack_type": "via",
"parameter_program": "get-parameter [ via_diameter ]\nset-shape [ via circle ]\n\nget-parameter [ hole_diameter ]\ndup\nset-hole [ hole round ]\n\nget-parameter [ via_solder_mask_expansion ] 2 *\n+\nset-shape [ mask circle ]",
"parameter_set": {
"hole_diameter": 400000,
"via_diameter": 700000,
"via_solder_mask_expansion": 100000
},
"parameters_required": [
"hole_diameter",
"via_diameter"
],
"polygons": {},
"shapes": {
"0fcc5be3-fa35-464c-ac89-7bfaea0821da": {
"form": "circle",
"layer": -110,
"parameter_class": "mask",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"1919564e-4dfd-4afa-ae6b-b06ddcefb9e6": {
"form": "circle",
"layer": 10,
"parameter_class": "mask",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"3d4a1caa-13a9-4828-aee6-4ec776b4f007": {
"form": "circle",
"layer": -1,
"parameter_class": "via",
"params": [
700000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"587492a5-d20b-4258-b1a8-04da900ea393": {
"form": "circle",
"layer": -100,
"parameter_class": "via",
"params": [
700000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"c0afc6ea-f577-42ee-8860-16eaf52721bf": {
"form": "circle",
"layer": 0,
"parameter_class": "via",
"params": [
700000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "3c4a52fe-3ae0-4c3e-a108-824b53d6d6da"
}

View file

@ -0,0 +1,55 @@
{
"holes": {},
"name": "SMD rectangular (no paste)",
"padstack_type": "top",
"parameter_program": "get-parameter [ pad_width ]\nget-parameter [ pad_height ]\ndupc dupc\nset-shape [ pad rectangle ]\nget-parameter [ solder_mask_expansion ]\n2 *\n+xy\nset-shape [ mask rectangle ]",
"parameter_set": {
"pad_height": 900000,
"pad_width": 700000,
"solder_mask_expansion": 100000
},
"parameters_required": [
"pad_width",
"pad_height"
],
"polygons": {},
"shapes": {
"ddcf3d29-661b-41d1-ac1a-5e335f94e736": {
"form": "rectangle",
"layer": 0,
"parameter_class": "pad",
"params": [
700000,
900000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"e93f30d7-af52-4284-8af0-b2341ade6c5d": {
"form": "rectangle",
"layer": 10,
"parameter_class": "mask",
"params": [
900000,
1100000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "549ce255-6721-44db-9d47-ec07764772ca",
"well_known_name": ""
}

View file

@ -0,0 +1,67 @@
{
"holes": {
"9eaa7713-8b92-4be2-9e8e-843e955d3a16": {
"diameter": 600000,
"length": 500000,
"parameter_class": "hole",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
},
"plated": false,
"shape": "round"
}
},
"name": "Circular mechanical Hole",
"padstack_type": "mechanical",
"parameter_program": "get-parameter [ hole_diameter ]\ndup\nset-hole [ hole round ]\nget-parameter [ hole_solder_mask_expansion ] 2 *\n+\nset-shape [ mask circle ]",
"parameter_set": {
"hole_diameter": 600000,
"hole_solder_mask_expansion": 100000
},
"parameters_required": [
"hole_diameter"
],
"polygons": {},
"shapes": {
"e6921620-a07c-46c8-aef2-ffcb45896d08": {
"form": "circle",
"layer": 10,
"parameter_class": "mask",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"f9a0c921-ce49-43c6-bca3-7fa003da982d": {
"form": "circle",
"layer": -110,
"parameter_class": "mask",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "762c84c2-187d-454a-af81-d3381bec5257",
"well_known_name": "npth circular"
}

View file

@ -0,0 +1,318 @@
{
"holes": {},
"name": "SMD rectangular with rounded corners",
"padstack_type": "top",
"parameter_program": "get-parameter [ pad_width ]\nget-parameter [ corner_radius ] 2 * -\nget-parameter [ pad_height ]\ndupc dupc\nset-shape [ pad1 rectangle ]\nget-parameter [ solder_mask_expansion ]\n2 *\n+\nset-shape [ mask1 rectangle ]\nget-parameter [ paste_mask_contraction ]\n2 *\n-\nset-shape [ paste1 rectangle ]\n\nget-parameter [ pad_width ]\nget-parameter [ pad_height ]\nget-parameter [ corner_radius ] 2 * -\ndupc dupc\nset-shape [ pad2 rectangle ]\nswap\nget-parameter [ solder_mask_expansion ]\n2 * +\nswap\nset-shape [ mask2 rectangle ]\nswap\nget-parameter [ paste_mask_contraction ]\n2 * -\nswap\nset-shape [ paste2 rectangle ]\n\nget-parameter [ corner_radius ] dup dup 2 *\ndup dup dup\nset-shape [ pad_corner1 circle ]\nset-shape [ pad_corner2 circle ]\nset-shape [ pad_corner3 circle ]\nset-shape [ pad_corner4 circle ]\nget-parameter [ solder_mask_expansion ] + 2 *\ndup dup dup\nset-shape [ mask_corner1 circle ]\nset-shape [ mask_corner2 circle ]\nset-shape [ mask_corner3 circle ]\nset-shape [ mask_corner4 circle ]\nget-parameter [ paste_mask_contraction ] - 2 *\ndup dup dup\nset-shape [ paste_corner1 circle ]\nset-shape [ paste_corner2 circle ]\nset-shape [ paste_corner3 circle ]\nset-shape [ paste_corner4 circle ]\n\nget-parameter [ pad_width ]\nget-parameter [ corner_radius ] 2 * - 2 /\nget-parameter [ pad_height ]\nget-parameter [ corner_radius ] 2 * - 2 /\ndupc dupc dupc\nset-shape [ pad_corner1 position ]\nset-shape [ mask_corner1 position ]\nset-shape [ paste_corner1 position ]\nswap -1 * swap\ndupc dupc dupc\nset-shape [ pad_corner2 position ]\nset-shape [ mask_corner2 position ]\nset-shape [ paste_corner2 position ]\n-1 *\ndupc dupc dupc\nset-shape [ pad_corner3 position ]\nset-shape [ mask_corner3 position ]\nset-shape [ paste_corner3 position ]\nswap -1 * swap\ndupc dupc\nset-shape [ pad_corner4 position ]\nset-shape [ mask_corner4 position ]\nset-shape [ paste_corner4 position ]",
"parameter_set": {
"corner_radius": 100000,
"pad_height": 2000000,
"pad_width": 900000,
"paste_mask_contraction": 0,
"solder_mask_expansion": 100000
},
"parameters_required": [
"pad_width",
"pad_height",
"corner_radius"
],
"polygons": {},
"shapes": {
"19fd6834-7b1d-47e5-b6fb-6f1c1bb4802b": {
"form": "circle",
"layer": 0,
"parameter_class": "pad_corner4",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
-900000
]
}
},
"233425db-45b7-4291-9cd3-ce7bf9c5887c": {
"form": "circle",
"layer": 10,
"parameter_class": "mask_corner2",
"params": [
400000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
900000
]
}
},
"2480e5fa-a56b-4f75-a9ff-f9576ddfdf14": {
"form": "circle",
"layer": 30,
"parameter_class": "paste_corner3",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
-900000
]
}
},
"2d593908-a7e0-42d3-b447-6f5472e3f168": {
"form": "circle",
"layer": 10,
"parameter_class": "mask_corner4",
"params": [
400000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
-900000
]
}
},
"3fb8c7f4-16b4-4a69-9ae0-98d16faf11ed": {
"form": "circle",
"layer": 30,
"parameter_class": "paste_corner2",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
900000
]
}
},
"54aa005d-14d6-4daf-916d-8cc4f33d31eb": {
"form": "rectangle",
"layer": 30,
"parameter_class": "paste2",
"params": [
900000,
1800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"5d8313e0-987f-4f68-a70b-654058f75898": {
"form": "circle",
"layer": 10,
"parameter_class": "mask_corner1",
"params": [
400000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
900000
]
}
},
"64b6423d-c765-4997-8f04-5b230ace4abb": {
"form": "circle",
"layer": 0,
"parameter_class": "pad_corner2",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
900000
]
}
},
"8402a815-54b3-42d9-b96a-6f0631eb3579": {
"form": "circle",
"layer": 0,
"parameter_class": "pad_corner1",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
900000
]
}
},
"888ff92f-96e3-4658-a9cb-1e9626aafe07": {
"form": "rectangle",
"layer": 30,
"parameter_class": "paste1",
"params": [
700000,
2000000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"9c5dd306-043a-4190-8b16-6ab3d2dafaa3": {
"form": "circle",
"layer": 10,
"parameter_class": "mask_corner3",
"params": [
400000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
-900000
]
}
},
"a9154914-ba44-4f24-ab76-9132d8f2024f": {
"form": "rectangle",
"layer": 10,
"parameter_class": "mask2",
"params": [
1100000,
1800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"b85c63cf-3f4d-4b38-9968-22276d4ba5ec": {
"form": "circle",
"layer": 30,
"parameter_class": "paste_corner4",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
-900000
]
}
},
"b8b84b83-babb-47ef-b2c9-236209e7689e": {
"form": "rectangle",
"layer": 0,
"parameter_class": "pad2",
"params": [
900000,
1800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"ddcf3d29-661b-41d1-ac1a-5e335f94e736": {
"form": "rectangle",
"layer": 0,
"parameter_class": "pad1",
"params": [
700000,
2000000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"e900b87f-85f6-44a1-bc42-0af10cad7194": {
"form": "circle",
"layer": 0,
"parameter_class": "pad_corner3",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-350000,
-900000
]
}
},
"e93f30d7-af52-4284-8af0-b2341ade6c5d": {
"form": "rectangle",
"layer": 10,
"parameter_class": "mask1",
"params": [
700000,
2200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"fa7293d5-02e0-4a5b-868f-87f93d06729e": {
"form": "circle",
"layer": 30,
"parameter_class": "paste_corner1",
"params": [
200000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
350000,
900000
]
}
}
},
"type": "padstack",
"uuid": "8e762581-e1b1-4fb4-81d3-7f8a1cabb97f",
"well_known_name": "smd rectangular rounded"
}

View file

@ -0,0 +1,116 @@
{
"holes": {
"056fa8e5-8b21-454e-a805-467fd49763b6": {
"diameter": 400000,
"length": 500000,
"parameter_class": "hole",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
},
"plated": true,
"shape": "round"
}
},
"name": "Circular Hole",
"padstack_type": "hole",
"parameter_program": "get-parameter [ hole_diameter ]\ndup dup\nset-hole [ hole round ]\n\nget-parameter [ hole_solder_mask_expansion ] 2 *\n+\nset-shape [ mask circle ]\n\nget-parameter [ hole_annular_ring ] 2 *\n+\nset-shape [ pad circle ]",
"parameter_set": {
"hole_annular_ring": 200000,
"hole_diameter": 400000,
"hole_solder_mask_expansion": 100000
},
"parameters_required": [
"hole_diameter",
"hole_annular_ring"
],
"polygons": {},
"shapes": {
"0fcc5be3-fa35-464c-ac89-7bfaea0821da": {
"form": "circle",
"layer": -110,
"parameter_class": "mask",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"1919564e-4dfd-4afa-ae6b-b06ddcefb9e6": {
"form": "circle",
"layer": 10,
"parameter_class": "mask",
"params": [
600000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"3d4a1caa-13a9-4828-aee6-4ec776b4f007": {
"form": "circle",
"layer": -1,
"parameter_class": "pad",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"587492a5-d20b-4258-b1a8-04da900ea393": {
"form": "circle",
"layer": -100,
"parameter_class": "pad",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
},
"c0afc6ea-f577-42ee-8860-16eaf52721bf": {
"form": "circle",
"layer": 0,
"parameter_class": "pad",
"params": [
800000
],
"placement": {
"angle": 0,
"mirror": false,
"shift": [
0,
0
]
}
}
},
"type": "padstack",
"uuid": "ca1ef428-ac41-4e12-a7c3-a867e4588cec"
}

View file

@ -0,0 +1,72 @@
{
"MPN": [
false,
"DE9 Edge Launch"
],
"datasheet": [
false,
""
],
"description": [
false,
"A DE9 connector for cables, but mounted on a 1.6mm PCB"
],
"entity": "218b8c98-a576-4e2c-bb43-b7b0dcfcedf8",
"inherit_model": true,
"inherit_tags": false,
"manufacturer": [
false,
"Generic"
],
"model": "00000000-0000-0000-0000-000000000000",
"package": "8a7c447c-9b38-4008-bb36-4963eb1707ea",
"pad_map": {
"2ce9090d-e907-40e7-bd24-711373251638": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "9edba34d-c7d1-479b-96c3-0c1f1cec5dcf"
},
"38694908-72f1-4e93-bf64-d8b662f1087f": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "ec41bfae-7e85-4b98-9019-3bcb832399d9"
},
"3df241d8-aeb4-439e-a9ac-22c7aaf48490": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "b4e5d951-1240-41cb-b62b-e441cdfef97f"
},
"3e2d527c-2db6-4dc1-9226-59bcbda861d4": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "02b8636a-6aef-4c55-bee9-1ffa209e87ce"
},
"8e656416-0602-411a-af02-9e498375fb2f": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "a73991e8-aac8-4ee5-9fcd-63a3ba351fb6"
},
"9da96202-0edd-4196-88ec-120aad459ec7": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "6087a965-c809-456f-977b-db94fdc9d527"
},
"a3bb016b-1d92-4ed8-8119-6b5bce4de43f": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "cadba1a3-1c63-4137-a971-6e2baed3f636"
},
"cdde280e-46d5-4eae-9b16-575da6b5adee": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "d398172f-c518-4766-aa47-85d9978e8f57"
},
"fe4913ff-9bf2-4e00-a1c5-f04e05eebc43": {
"gate": "672e1f10-0401-43ad-b266-e7b705e49202",
"pin": "3187f32d-cf35-464a-aa68-9730eebaf2b1"
}
},
"parametric": {},
"tags": [
"connector",
"generic"
],
"type": "part",
"uuid": "6af66fe7-5f46-4d5a-906d-abb26e23e557",
"value": [
false,
""
]
}

View file

@ -0,0 +1,27 @@
{
"MPN": [
false,
"CPL-RES-0603-0-0.1W"
],
"base": "cbeda48c-7fb0-4cfb-a4de-d9672e8cc190",
"inherit_tags": true,
"manufacturer": [
false,
"CPL"
],
"parametric": {
"pmax": "0.1",
"table": "resistors",
"value": "0.0",
"tolerance": "1.0"
},
"tags": [
"cpl"
],
"type": "part",
"uuid": "6e276559-ece3-48fa-beda-7810b3b8af73",
"value": [
false,
"0 \u03a9"
]
}

View file

@ -0,0 +1,44 @@
{
"MPN": [
false,
"Generic Pin header 1×2, 2.54mm pitch, vertical"
],
"datasheet": [
false,
""
],
"description": [
false,
""
],
"entity": "29f544a1-a789-4fe6-a1ef-29da5ba3d371",
"inherit_model": true,
"inherit_tags": false,
"manufacturer": [
false,
""
],
"model": "00000000-0000-0000-0000-000000000000",
"package": "84529497-31a1-4f8f-abac-c07d0782069f",
"pad_map": {
"7bc2147a-0234-41f6-ab65-444e57a43ce5": {
"gate": "eb7f68b1-6fba-4a35-a470-2cecb23fe087",
"pin": "b3cef4f5-fe6c-45b5-b063-1618f997168f"
},
"7de8ad61-d839-4bad-85e8-5b3d093d4d6c": {
"gate": "eb7f68b1-6fba-4a35-a470-2cecb23fe087",
"pin": "588536f1-9e96-4500-bcbb-4ba48082b643"
}
},
"parametric": {},
"tags": [
"generic",
"header"
],
"type": "part",
"uuid": "84529497-31a1-4f8f-abac-c07d0782069f",
"value": [
false,
""
]
}

View file

@ -0,0 +1,48 @@
{
"MPN": [
false,
"Generic Pin header 1×3, 2.54mm pitch, vertical"
],
"datasheet": [
false,
""
],
"description": [
false,
""
],
"entity": "dac08463-17e8-4eb3-b5b4-4d7be5775379",
"inherit_model": true,
"inherit_tags": false,
"manufacturer": [
false,
""
],
"model": "00000000-0000-0000-0000-000000000000",
"package": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"pad_map": {
"7bc2147a-0234-41f6-ab65-444e57a43ce5": {
"gate": "6cbea03f-31ec-49ea-9903-b9bf7b26e340",
"pin": "b22250f7-9956-4ac8-ada1-725b7ba800c8"
},
"7de8ad61-d839-4bad-85e8-5b3d093d4d6c": {
"gate": "6cbea03f-31ec-49ea-9903-b9bf7b26e340",
"pin": "1803365d-f745-4921-a54f-c5df6afa6561"
},
"f4f2991b-d46c-492e-b2b6-beacc3120e00": {
"gate": "6cbea03f-31ec-49ea-9903-b9bf7b26e340",
"pin": "4c0e5d34-b007-432d-880b-3a3b8e963a14"
}
},
"parametric": {},
"tags": [
"generic",
"header"
],
"type": "part",
"uuid": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"value": [
false,
""
]
}

View file

@ -0,0 +1,49 @@
{
"MPN": [
false,
"73251-1150"
],
"datasheet": [
false,
"https://www.molex.com/pdm_docs/sd/732511150_sd.pdf"
],
"description": [
false,
"50 Ohms, SMA Jack Receptacle, Edge Mount, .25µm Gold (Au) Plating"
],
"entity": "1d1d771d-3f05-4639-ba89-48f54cee58c6",
"inherit_model": false,
"inherit_tags": false,
"manufacturer": [
false,
"Molex"
],
"model": "00000000-0000-0000-0000-000000000000",
"package": "afcfb049-61c1-4439-8c6a-c30a8eb07ab3",
"pad_map": {
"71d17bc9-8dcb-4d8d-85e1-7487fc9ae67c": {
"gate": "7fbb1da2-7777-4835-add3-612b96b30e91",
"pin": "207305c6-2559-44f9-b056-ec6cc1fec55c"
},
"c455703e-4ce6-4d3f-adbe-6f8179d36b75": {
"gate": "7fbb1da2-7777-4835-add3-612b96b30e91",
"pin": "207305c6-2559-44f9-b056-ec6cc1fec55c"
},
"d33a5d70-8af2-40e2-8567-e67653d1ac6b": {
"gate": "7fbb1da2-7777-4835-add3-612b96b30e91",
"pin": "a01e0362-c2b2-4565-9588-bc920e201988"
}
},
"parametric": {},
"tags": [
"coaxial",
"connector",
"sma"
],
"type": "part",
"uuid": "c4f817ca-686d-4aa5-b6a3-14eed41728e6",
"value": [
false,
""
]
}

View file

@ -0,0 +1,34 @@
{
"MPN": [
false,
"base 0603 resistor"
],
"entity": "3ce770af-7be0-4f72-b2af-2c8010911aaf",
"inherit_tags": false,
"manufacturer": [
false,
""
],
"package": "fe22ac1d-25b9-4a47-8414-51c990d7f94b",
"pad_map": {
"63256dd2-2eab-46fe-9201-b2e553476e98": {
"gate": "48af78e5-730e-44eb-977a-cf188e4fcb39",
"pin": "6a44037c-65e2-4876-9359-42890048841d"
},
"6dd73a26-6e83-43b6-8317-09836acef67d": {
"gate": "48af78e5-730e-44eb-977a-cf188e4fcb39",
"pin": "dda0ec99-5d70-4fbe-a8db-897542e7554e"
}
},
"parametric": {},
"tags": [
"passive",
"resistor"
],
"type": "part",
"uuid": "cbeda48c-7fb0-4cfb-a4de-d9672e8cc190",
"value": [
false,
""
]
}

View file

@ -0,0 +1,10 @@
{
"default_frame": "00000000-0000-0000-0000-000000000000",
"default_via": "3c4a52fe-3ae0-4c3e-a108-824b53d6d6da",
"name": "Project pool",
"pools_included": [
"6d752bc3-29b3-45df-8cf2-1e3aacefbcc6"
],
"type": "pool",
"uuid": "466088f9-3f15-420d-af8a-fff902537aed"
}

View file

@ -0,0 +1 @@
{"type": "symbol", "can_expand": true, "name": "Generic 2 pin connector (1\u00d72)", "unit": "c6a7e13e-6c70-4a80-a0dd-335d7b16967f", "uuid": "5b7a580f-fa81-4cde-84c2-9da30ebc9c5a", "junctions": {"2000b3bf-1ef3-4d37-981d-ff988d6bfa1d": {"position": [-3750000, -3750000]}, "6be74b9c-ec52-4273-a16a-ebdbf174c463": {"position": [-3750000, 3750000]}, "4243c36b-e666-4ed7-80f4-4f10d2a784b0": {"position": [3750000, 3750000]}, "87768599-8123-4766-995a-929089c70de1": {"position": [3750000, -3750000]}}, "lines": {"fd241dd4-4cd4-4da8-ac00-1e916b25a917": {"from": "2000b3bf-1ef3-4d37-981d-ff988d6bfa1d", "to": "6be74b9c-ec52-4273-a16a-ebdbf174c463"}, "6121b8b3-37f5-4169-8389-eb35d25acc71": {"from": "6be74b9c-ec52-4273-a16a-ebdbf174c463", "to": "4243c36b-e666-4ed7-80f4-4f10d2a784b0"}, "d4237b75-9db9-4178-9730-19512472acce": {"from": "4243c36b-e666-4ed7-80f4-4f10d2a784b0", "to": "87768599-8123-4766-995a-929089c70de1"}, "8859c990-c163-4006-9346-51ac2d87af07": {"from": "87768599-8123-4766-995a-929089c70de1", "to": "2000b3bf-1ef3-4d37-981d-ff988d6bfa1d"}}, "pins": {"b3cef4f5-fe6c-45b5-b063-1618f997168f": {"position": [6250000, 1250000], "length": 2500000, "orientation": "right"}, "588536f1-9e96-4500-bcbb-4ba48082b643": {"position": [6250000, -1250000], "length": 2500000, "orientation": "right"}}, "texts": {"46dd4d12-8d53-4bdf-a68e-c2c498fd01ad": {"placement": {"shift": [-3750000, 5000000], "mirror": false, "angle": 0}, "text": "$REFDES", "size": 1500000, "origin": "center"}, "caddaf4b-e90f-4702-92ea-245f70e33cba": {"placement": {"shift": [-3750000, -5000000], "mirror": false, "angle": 0}, "text": "$VALUE", "size": 1500000, "origin": "center"}}}

View file

@ -0,0 +1,158 @@
{
"arcs": {
"1c45b2d8-c6f2-4693-8a68-7b81861e4841": {
"center": "d4dfc279-3aae-4f12-8931-0d91f7fe94d3",
"from": "780cfc9f-779f-4410-a292-f5f1ae7a1c68",
"layer": 0,
"to": "ad140135-944d-44f8-9a3b-35d61c69ef9c",
"width": 0
},
"35a85551-fd5d-447f-9bed-92cc4dc2a667": {
"center": "d4dfc279-3aae-4f12-8931-0d91f7fe94d3",
"from": "ad140135-944d-44f8-9a3b-35d61c69ef9c",
"layer": 0,
"to": "780cfc9f-779f-4410-a292-f5f1ae7a1c68",
"width": 0
},
"97ede31e-f98e-438c-87f3-6f460c83aaee": {
"center": "d4dfc279-3aae-4f12-8931-0d91f7fe94d3",
"from": "f8624b54-469e-4cd4-aeb8-9157d3cac73a",
"layer": 0,
"to": "949d5efc-8de6-423b-8eb8-c66dbf6cca81",
"width": 0
},
"edfe5e33-67f0-4b14-9ac5-91ed8475e90b": {
"center": "d4dfc279-3aae-4f12-8931-0d91f7fe94d3",
"from": "949d5efc-8de6-423b-8eb8-c66dbf6cca81",
"layer": 0,
"to": "a13e8f2f-2af7-4035-a543-31f33f198f25",
"width": 0
}
},
"junctions": {
"780cfc9f-779f-4410-a292-f5f1ae7a1c68": {
"position": [
-375000,
0
]
},
"949d5efc-8de6-423b-8eb8-c66dbf6cca81": {
"position": [
1250000,
0
]
},
"a13e8f2f-2af7-4035-a543-31f33f198f25": {
"position": [
-1192000,
375000
]
},
"ad140135-944d-44f8-9a3b-35d61c69ef9c": {
"position": [
375000,
0
]
},
"b7fac46a-5685-46e4-a48a-5c9037a43ba2": {
"position": [
-1250000,
0
]
},
"d4dfc279-3aae-4f12-8931-0d91f7fe94d3": {
"position": [
0,
0
]
},
"f8624b54-469e-4cd4-aeb8-9157d3cac73a": {
"position": [
-1192000,
-375000
]
}
},
"lines": {
"0269c40d-34fd-4ac1-b1f6-c08658a73ac4": {
"from": "b7fac46a-5685-46e4-a48a-5c9037a43ba2",
"layer": 0,
"to": "780cfc9f-779f-4410-a292-f5f1ae7a1c68",
"width": 0
}
},
"name": "Coaxial connector",
"pins": {
"207305c6-2559-44f9-b056-ec6cc1fec55c": {
"decoration": {
"clock": false,
"dot": false,
"driver": "default",
"schmitt": false
},
"length": 2500000,
"name_visible": false,
"orientation": "down",
"pad_visible": true,
"position": [
0,
-3750000
]
},
"a01e0362-c2b2-4565-9588-bc920e201988": {
"decoration": {
"clock": false,
"dot": false,
"driver": "default",
"schmitt": false
},
"length": 2500000,
"name_visible": false,
"orientation": "left",
"pad_visible": true,
"position": [
-3750000,
0
]
}
},
"polygons": {},
"text_placements": {},
"texts": {
"b77bb995-0531-4df8-8b98-975394c28569": {
"from_smash": false,
"layer": 0,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
1250000,
2500000
]
},
"size": 1500000,
"text": "$REFDES",
"width": 0
},
"e3678e4c-906a-4c2b-ad17-ff8d9970f317": {
"from_smash": false,
"layer": 0,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
1250000,
-2500000
]
},
"size": 1500000,
"text": "$VALUE",
"width": 0
}
},
"type": "symbol",
"unit": "e74e03b1-a7b8-4ba0-aecd-432f6f494064",
"uuid": "773229dd-326f-4195-acf3-d138351784f9"
}

View file

@ -0,0 +1 @@
{"type": "symbol", "can_expand": true, "name": "Generic 3 pin connector (1\u00d73)", "unit": "f866fdef-b785-46aa-998b-da21e7d86e93", "uuid": "c06dffb6-8721-4b8e-a056-210974def620", "junctions": {"6525761b-ebb9-4a37-90b3-459838f0a877": {"position": [-3750000, -5000000]}, "4ce12afe-2210-4798-a54d-02bddd3b6903": {"position": [-3750000, 5000000]}, "570812e1-a515-48a5-a663-75f8a1fb2b65": {"position": [3750000, 5000000]}, "da4bbd86-9f0b-4b92-b3ff-dccf8796f1b1": {"position": [3750000, -5000000]}}, "lines": {"6d73235f-6e90-471d-9cd5-a5b70e9de780": {"from": "6525761b-ebb9-4a37-90b3-459838f0a877", "to": "4ce12afe-2210-4798-a54d-02bddd3b6903"}, "58e64bcb-749e-4545-8498-e3f00dd30d8b": {"from": "4ce12afe-2210-4798-a54d-02bddd3b6903", "to": "570812e1-a515-48a5-a663-75f8a1fb2b65"}, "212bb201-088b-494e-8617-c39154e52391": {"from": "570812e1-a515-48a5-a663-75f8a1fb2b65", "to": "da4bbd86-9f0b-4b92-b3ff-dccf8796f1b1"}, "cf06736c-f4e5-4de5-afc7-74019eaeebf0": {"from": "da4bbd86-9f0b-4b92-b3ff-dccf8796f1b1", "to": "6525761b-ebb9-4a37-90b3-459838f0a877"}}, "pins": {"b22250f7-9956-4ac8-ada1-725b7ba800c8": {"position": [6250000, 2500000], "length": 2500000, "orientation": "right"}, "1803365d-f745-4921-a54f-c5df6afa6561": {"position": [6250000, 0], "length": 2500000, "orientation": "right"}, "4c0e5d34-b007-432d-880b-3a3b8e963a14": {"position": [6250000, -2500000], "length": 2500000, "orientation": "right"}}, "texts": {"4470be59-9772-461d-bc9a-f950601338c8": {"placement": {"shift": [-3750000, 6250000], "mirror": false, "angle": 0}, "text": "$REFDES", "size": 1500000, "origin": "center"}, "25526db8-e8a5-480d-8e50-18f1e83b9bae": {"placement": {"shift": [-3750000, -6250000], "mirror": false, "angle": 0}, "text": "$VALUE", "size": 1500000, "origin": "center"}}}

View file

@ -0,0 +1,279 @@
{
"arcs": {},
"can_expand": false,
"junctions": {
"1d7c5e92-3631-44b3-9857-6011cfbd4683": {
"position": [
-2500000,
-1000000
]
},
"59446d3c-20fd-46a4-9ef6-bb1fdf2ad48b": {
"position": [
2500000,
-1000000
]
},
"a29dd91b-86ee-4499-ab34-458947a62158": {
"position": [
-2500000,
1000000
]
},
"d34607a3-f468-40ca-a895-6b36ec6e9100": {
"position": [
2500000,
1000000
]
}
},
"lines": {
"4fb24639-f88b-4c98-9886-2d1c120160b6": {
"from": "d34607a3-f468-40ca-a895-6b36ec6e9100",
"layer": 0,
"to": "59446d3c-20fd-46a4-9ef6-bb1fdf2ad48b",
"width": 0
},
"a3608f8b-4825-4443-ad18-7706413d96b2": {
"from": "59446d3c-20fd-46a4-9ef6-bb1fdf2ad48b",
"layer": 0,
"to": "1d7c5e92-3631-44b3-9857-6011cfbd4683",
"width": 0
},
"e0c0b8a3-a384-45a2-8366-825260417e07": {
"from": "a29dd91b-86ee-4499-ab34-458947a62158",
"layer": 0,
"to": "d34607a3-f468-40ca-a895-6b36ec6e9100",
"width": 0
},
"fb49239d-4f08-459c-95dd-7cd402831e33": {
"from": "1d7c5e92-3631-44b3-9857-6011cfbd4683",
"layer": 0,
"to": "a29dd91b-86ee-4499-ab34-458947a62158",
"width": 0
}
},
"name": "EU Resistor",
"pins": {
"6a44037c-65e2-4876-9359-42890048841d": {
"decoration": {
"clock": false,
"dot": false,
"driver": "default",
"schmitt": false
},
"length": 1250000,
"name_orientation": "in_line",
"name_visible": false,
"orientation": "left",
"pad_visible": false,
"position": [
-3750000,
0
]
},
"dda0ec99-5d70-4fbe-a8db-897542e7554e": {
"decoration": {
"clock": false,
"dot": false,
"driver": "default",
"schmitt": false
},
"length": 1250000,
"name_orientation": "in_line",
"name_visible": false,
"orientation": "right",
"pad_visible": false,
"position": [
3750000,
0
]
}
},
"polygons": {},
"text_placements": {
"0m": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 0,
"mirror": true,
"shift": [
2500000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 0,
"mirror": true,
"shift": [
2500000,
2500000
]
}
},
"0n": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 0,
"mirror": false,
"shift": [
-2500000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 0,
"mirror": false,
"shift": [
-2500000,
2500000
]
}
},
"180m": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 32768,
"mirror": true,
"shift": [
-2500000,
2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 32768,
"mirror": true,
"shift": [
-2500000,
-2500000
]
}
},
"180n": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 32768,
"mirror": false,
"shift": [
2500000,
2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 32768,
"mirror": false,
"shift": [
2500000,
-2500000
]
}
},
"270m": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 16384,
"mirror": true,
"shift": [
1250000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 16384,
"mirror": true,
"shift": [
-1250000,
-2500000
]
}
},
"270n": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 16384,
"mirror": true,
"shift": [
1250000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 16384,
"mirror": true,
"shift": [
-1250000,
-2500000
]
}
},
"90m": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 49152,
"mirror": false,
"shift": [
-1250000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 49152,
"mirror": false,
"shift": [
1250000,
-2500000
]
}
},
"90n": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"angle": 49152,
"mirror": false,
"shift": [
-1250000,
-2500000
]
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"angle": 49152,
"mirror": false,
"shift": [
1250000,
-2500000
]
}
}
},
"texts": {
"35099bf5-0e81-401a-aa96-d1112f12d918": {
"font": "simplex",
"from_smash": false,
"layer": 0,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-2500000,
-2500000
]
},
"size": 1500000,
"text": "$VALUE",
"width": 0
},
"fc82ac00-1f07-4009-9129-6e1827d3dc5c": {
"font": "simplex",
"from_smash": false,
"layer": 0,
"origin": "center",
"placement": {
"angle": 0,
"mirror": false,
"shift": [
-2500000,
2500000
]
},
"size": 1500000,
"text": "$REFDES",
"width": 0
}
},
"type": "symbol",
"unit": "9b22b899-e8eb-4ce8-b62d-79b7b2db035e",
"uuid": "e2cde69b-9fa7-4332-ba8f-7e5b3ee8ad73"
}

View file

@ -0,0 +1 @@
{"type": "symbol", "can_expand": true, "name": "Generic 9 pin connector (1\u00d79)", "unit": "804f8c1a-9233-4f1d-8327-9793242cd931", "uuid": "eee22dbf-401a-4edb-aca1-b187365e178f", "junctions": {"6cb4a208-ac8d-46b1-a1cd-bbfbbb2bd267": {"position": [-3750000, -12500000]}, "3a1cc8f9-1632-4f69-89e6-f92af6592bfe": {"position": [-3750000, 12500000]}, "eb89bab1-3253-46d4-9dfd-d49d758a1033": {"position": [3750000, 12500000]}, "fe9a6572-35e7-451f-a9b5-73df5fcd81ca": {"position": [3750000, -12500000]}}, "lines": {"dace1026-3cc5-4fe2-8fcd-19cfa7acbc32": {"from": "6cb4a208-ac8d-46b1-a1cd-bbfbbb2bd267", "to": "3a1cc8f9-1632-4f69-89e6-f92af6592bfe"}, "76f1e2be-4cff-406a-b50a-becff61100df": {"from": "3a1cc8f9-1632-4f69-89e6-f92af6592bfe", "to": "eb89bab1-3253-46d4-9dfd-d49d758a1033"}, "4a4ccae4-7234-4f33-bb80-c7902948e592": {"from": "eb89bab1-3253-46d4-9dfd-d49d758a1033", "to": "fe9a6572-35e7-451f-a9b5-73df5fcd81ca"}, "b5d8c6a7-f435-4dac-ac38-a20c6023006e": {"from": "fe9a6572-35e7-451f-a9b5-73df5fcd81ca", "to": "6cb4a208-ac8d-46b1-a1cd-bbfbbb2bd267"}}, "pins": {"3187f32d-cf35-464a-aa68-9730eebaf2b1": {"position": [6250000, 10000000], "length": 2500000, "orientation": "right"}, "b4e5d951-1240-41cb-b62b-e441cdfef97f": {"position": [6250000, 7500000], "length": 2500000, "orientation": "right"}, "9edba34d-c7d1-479b-96c3-0c1f1cec5dcf": {"position": [6250000, 5000000], "length": 2500000, "orientation": "right"}, "cadba1a3-1c63-4137-a971-6e2baed3f636": {"position": [6250000, 2500000], "length": 2500000, "orientation": "right"}, "d398172f-c518-4766-aa47-85d9978e8f57": {"position": [6250000, 0], "length": 2500000, "orientation": "right"}, "02b8636a-6aef-4c55-bee9-1ffa209e87ce": {"position": [6250000, -2500000], "length": 2500000, "orientation": "right"}, "ec41bfae-7e85-4b98-9019-3bcb832399d9": {"position": [6250000, -5000000], "length": 2500000, "orientation": "right"}, "a73991e8-aac8-4ee5-9fcd-63a3ba351fb6": {"position": [6250000, -7500000], "length": 2500000, "orientation": "right"}, "6087a965-c809-456f-977b-db94fdc9d527": {"position": [6250000, -10000000], "length": 2500000, "orientation": "right"}}, "texts": {"f3ef9b92-d012-4d26-9b1d-58ecdf7b2cce": {"placement": {"shift": [-3750000, 13750000], "mirror": false, "angle": 0}, "text": "$REFDES", "size": 1500000, "origin": "center"}, "c805aff5-a5c8-4cdc-9afc-09dfc5b62547": {"placement": {"shift": [-3750000, -13750000], "mirror": false, "angle": 0}, "text": "$VALUE", "size": 1500000, "origin": "center"}}}

View file

@ -0,0 +1 @@
{"name": "Generic 9 pin connector", "manufacturer": "", "uuid": "804f8c1a-9233-4f1d-8327-9793242cd931", "type": "unit", "pins": {"3187f32d-cf35-464a-aa68-9730eebaf2b1": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "1"}, "b4e5d951-1240-41cb-b62b-e441cdfef97f": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "2"}, "9edba34d-c7d1-479b-96c3-0c1f1cec5dcf": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "3"}, "cadba1a3-1c63-4137-a971-6e2baed3f636": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "4"}, "d398172f-c518-4766-aa47-85d9978e8f57": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "5"}, "02b8636a-6aef-4c55-bee9-1ffa209e87ce": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "6"}, "ec41bfae-7e85-4b98-9019-3bcb832399d9": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "7"}, "a73991e8-aac8-4ee5-9fcd-63a3ba351fb6": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "8"}, "6087a965-c809-456f-977b-db94fdc9d527": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "9"}}}

View file

@ -0,0 +1,19 @@
{
"type" : "unit",
"uuid" : "9b22b899-e8eb-4ce8-b62d-79b7b2db035e",
"name" : "Two-terminal resistor",
"tags" : ["generic", "resistor", "passive"],
"pins" : {
"6a44037c-65e2-4876-9359-42890048841d" : {
"primary_name" : "A",
"direction" : "passive",
"swap_group" : 1
},
"dda0ec99-5d70-4fbe-a8db-897542e7554e" : {
"primary_name" : "B",
"direction" : "passive",
"swap_group" : 1
}
}
}

View file

@ -0,0 +1 @@
{"name": "Generic 2 pin connector", "manufacturer": "", "uuid": "c6a7e13e-6c70-4a80-a0dd-335d7b16967f", "type": "unit", "pins": {"b3cef4f5-fe6c-45b5-b063-1618f997168f": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "1"}, "588536f1-9e96-4500-bcbb-4ba48082b643": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "2"}}}

View file

@ -0,0 +1,20 @@
{
"manufacturer": "",
"name": "Coaxial connector",
"pins": {
"207305c6-2559-44f9-b056-ec6cc1fec55c": {
"direction": "passive",
"names": [],
"primary_name": "GND",
"swap_group": 0
},
"a01e0362-c2b2-4565-9588-bc920e201988": {
"direction": "passive",
"names": [],
"primary_name": "SIG",
"swap_group": 0
}
},
"type": "unit",
"uuid": "e74e03b1-a7b8-4ba0-aecd-432f6f494064"
}

View file

@ -0,0 +1 @@
{"name": "Generic 3 pin connector", "manufacturer": "", "uuid": "f866fdef-b785-46aa-998b-da21e7d86e93", "type": "unit", "pins": {"b22250f7-9956-4ac8-ada1-725b7ba800c8": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "1"}, "1803365d-f745-4921-a54f-c5df6afa6561": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "2"}, "4c0e5d34-b007-432d-880b-3a3b8e963a14": {"direction": "passive", "names": [], "swap_group": 0, "primary_name": "3"}}}

View file

@ -0,0 +1,404 @@
{
"block_instance_mappings": {},
"block_instances": {},
"bom_export_settings": {
"concrete_parts": {},
"csv_settings": {
"columns": [
"QTY",
"MPN",
"value",
"manufacturer",
"refdes"
],
"order": "asc",
"sort_column": "refdes"
},
"orderable_MPNs": {},
"output_filename": ""
},
"buses": {},
"components": {
"0ba7fc84-22a7-485e-ab1f-3cbad7ccccf8": {
"alt_pins": {},
"connections": {
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/1803365d-f745-4921-a54f-c5df6afa6561": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/4c0e5d34-b007-432d-880b-3a3b8e963a14": {
"net": "8ff86bdf-504e-43a5-a8b3-c95eb9f1767b"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/b22250f7-9956-4ac8-ada1-725b7ba800c8": {
"net": "f42c22b7-4f1a-4804-a0f9-34241b9edbb7"
}
},
"entity": "dac08463-17e8-4eb3-b5b4-4d7be5775379",
"group": "00000000-0000-0000-0000-000000000000",
"part": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"pin_names": {},
"refdes": "J6",
"tag": "2f586684-fa38-4de8-90f4-e2db38455081",
"value": ""
},
"0ea1f9f5-c64a-4e4c-aa63-27c68f34e7bf": {
"alt_pins": {},
"connections": {
"48af78e5-730e-44eb-977a-cf188e4fcb39/6a44037c-65e2-4876-9359-42890048841d": {
"net": "8ff86bdf-504e-43a5-a8b3-c95eb9f1767b"
},
"48af78e5-730e-44eb-977a-cf188e4fcb39/dda0ec99-5d70-4fbe-a8db-897542e7554e": {
"net": "f42c22b7-4f1a-4804-a0f9-34241b9edbb7"
}
},
"entity": "3ce770af-7be0-4f72-b2af-2c8010911aaf",
"group": "00000000-0000-0000-0000-000000000000",
"part": "6e276559-ece3-48fa-beda-7810b3b8af73",
"pin_names": {},
"refdes": "R3",
"tag": "0b258362-88bd-4f0e-be4f-9b7557b394e5",
"value": ""
},
"189050e1-cdb6-4eda-b8a0-dd8491c09399": {
"alt_pins": {},
"connections": {
"7fbb1da2-7777-4835-add3-612b96b30e91/207305c6-2559-44f9-b056-ec6cc1fec55c": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"7fbb1da2-7777-4835-add3-612b96b30e91/a01e0362-c2b2-4565-9588-bc920e201988": {
"net": "694b82f3-b89c-45b4-88fb-314686994af5"
}
},
"entity": "1d1d771d-3f05-4639-ba89-48f54cee58c6",
"group": "00000000-0000-0000-0000-000000000000",
"part": "c4f817ca-686d-4aa5-b6a3-14eed41728e6",
"pin_names": {},
"refdes": "J2",
"tag": "7d9b58ba-cac2-41f3-99e0-1b33e04a56bd",
"value": ""
},
"1bf51fae-ec0f-4ae3-b4d2-90c5b47350db": {
"alt_pins": {},
"connections": {
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/1803365d-f745-4921-a54f-c5df6afa6561": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/4c0e5d34-b007-432d-880b-3a3b8e963a14": {
"net": "4264d421-02db-42fa-b328-0831ac5c242f"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/b22250f7-9956-4ac8-ada1-725b7ba800c8": {
"net": "39af0482-c723-46ea-8562-087306764020"
}
},
"entity": "dac08463-17e8-4eb3-b5b4-4d7be5775379",
"group": "00000000-0000-0000-0000-000000000000",
"part": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"pin_names": {},
"refdes": "J8",
"tag": "5758bc17-3551-46b0-b28d-151b3e0f5c5c",
"value": ""
},
"3c99490e-a4fa-40ef-8b8b-8744283ef4e3": {
"alt_pins": {},
"connections": {
"7fbb1da2-7777-4835-add3-612b96b30e91/207305c6-2559-44f9-b056-ec6cc1fec55c": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"7fbb1da2-7777-4835-add3-612b96b30e91/a01e0362-c2b2-4565-9588-bc920e201988": {
"net": "867a00b0-b837-43cf-83de-84694eb1ed71"
}
},
"entity": "1d1d771d-3f05-4639-ba89-48f54cee58c6",
"group": "00000000-0000-0000-0000-000000000000",
"part": "c4f817ca-686d-4aa5-b6a3-14eed41728e6",
"pin_names": {},
"refdes": "J5",
"tag": "d1f1eba0-4f5b-492a-9438-a33ed48ffc4a",
"value": ""
},
"43e804d2-6698-454b-a686-1ee0061dedd2": {
"alt_pins": {},
"connections": {
"7fbb1da2-7777-4835-add3-612b96b30e91/207305c6-2559-44f9-b056-ec6cc1fec55c": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"7fbb1da2-7777-4835-add3-612b96b30e91/a01e0362-c2b2-4565-9588-bc920e201988": {
"net": "39af0482-c723-46ea-8562-087306764020"
}
},
"entity": "1d1d771d-3f05-4639-ba89-48f54cee58c6",
"group": "00000000-0000-0000-0000-000000000000",
"part": "c4f817ca-686d-4aa5-b6a3-14eed41728e6",
"pin_names": {},
"refdes": "J9",
"tag": "2210462d-68d0-4432-95a9-a77fae73c797",
"value": ""
},
"44bb9153-d97a-49e9-936b-270700e2518e": {
"alt_pins": {},
"connections": {
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/1803365d-f745-4921-a54f-c5df6afa6561": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/4c0e5d34-b007-432d-880b-3a3b8e963a14": {
"net": "77c8d66b-e509-44f5-845c-05fff2d541a7"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/b22250f7-9956-4ac8-ada1-725b7ba800c8": {
"net": "867a00b0-b837-43cf-83de-84694eb1ed71"
}
},
"entity": "dac08463-17e8-4eb3-b5b4-4d7be5775379",
"group": "00000000-0000-0000-0000-000000000000",
"part": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"pin_names": {},
"refdes": "J4",
"tag": "660af710-503e-41f2-a9fb-e88616a4a90e",
"value": ""
},
"5512e641-e87f-4f18-9cf0-ee4cd1d3b8fe": {
"alt_pins": {},
"connections": {
"672e1f10-0401-43ad-b266-e7b705e49202/02b8636a-6aef-4c55-bee9-1ffa209e87ce": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"672e1f10-0401-43ad-b266-e7b705e49202/3187f32d-cf35-464a-aa68-9730eebaf2b1": {
"net": "77c8d66b-e509-44f5-845c-05fff2d541a7"
},
"672e1f10-0401-43ad-b266-e7b705e49202/6087a965-c809-456f-977b-db94fdc9d527": {
"net": null
},
"672e1f10-0401-43ad-b266-e7b705e49202/9edba34d-c7d1-479b-96c3-0c1f1cec5dcf": {
"net": "4264d421-02db-42fa-b328-0831ac5c242f"
},
"672e1f10-0401-43ad-b266-e7b705e49202/a73991e8-aac8-4ee5-9fcd-63a3ba351fb6": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"672e1f10-0401-43ad-b266-e7b705e49202/b4e5d951-1240-41cb-b62b-e441cdfef97f": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"672e1f10-0401-43ad-b266-e7b705e49202/cadba1a3-1c63-4137-a971-6e2baed3f636": {
"net": "8ff86bdf-504e-43a5-a8b3-c95eb9f1767b"
},
"672e1f10-0401-43ad-b266-e7b705e49202/d398172f-c518-4766-aa47-85d9978e8f57": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"672e1f10-0401-43ad-b266-e7b705e49202/ec41bfae-7e85-4b98-9019-3bcb832399d9": {
"net": "5e1ea12a-b67d-4a4a-a526-0f8d286afa6e"
}
},
"entity": "218b8c98-a576-4e2c-bb43-b7b0dcfcedf8",
"group": "00000000-0000-0000-0000-000000000000",
"part": "6af66fe7-5f46-4d5a-906d-abb26e23e557",
"pin_names": {},
"refdes": "J3",
"tag": "717b34d2-40a5-46b9-8cba-432bd9e1554d",
"value": ""
},
"55597817-6fe4-4f04-82f7-a6ee4529be73": {
"alt_pins": {},
"connections": {
"7fbb1da2-7777-4835-add3-612b96b30e91/207305c6-2559-44f9-b056-ec6cc1fec55c": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"7fbb1da2-7777-4835-add3-612b96b30e91/a01e0362-c2b2-4565-9588-bc920e201988": {
"net": "f42c22b7-4f1a-4804-a0f9-34241b9edbb7"
}
},
"entity": "1d1d771d-3f05-4639-ba89-48f54cee58c6",
"group": "00000000-0000-0000-0000-000000000000",
"part": "c4f817ca-686d-4aa5-b6a3-14eed41728e6",
"pin_names": {},
"refdes": "J7",
"tag": "7f9ffaf8-c00b-495a-88e4-599123b04177",
"value": ""
},
"7c4c0a48-f141-4028-ae64-c8b47a3c3640": {
"alt_pins": {},
"connections": {
"48af78e5-730e-44eb-977a-cf188e4fcb39/6a44037c-65e2-4876-9359-42890048841d": {
"net": "5e1ea12a-b67d-4a4a-a526-0f8d286afa6e"
},
"48af78e5-730e-44eb-977a-cf188e4fcb39/dda0ec99-5d70-4fbe-a8db-897542e7554e": {
"net": "694b82f3-b89c-45b4-88fb-314686994af5"
}
},
"entity": "3ce770af-7be0-4f72-b2af-2c8010911aaf",
"group": "00000000-0000-0000-0000-000000000000",
"part": "6e276559-ece3-48fa-beda-7810b3b8af73",
"pin_names": {},
"refdes": "R1",
"tag": "c2ac07a8-c692-40ee-9840-09935876d73d",
"value": ""
},
"92933ab2-d358-414c-ba0a-8832f8103f75": {
"alt_pins": {},
"connections": {
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/1803365d-f745-4921-a54f-c5df6afa6561": {
"net": "7bacb991-ae51-4e22-8450-bc48138b6dbb"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/4c0e5d34-b007-432d-880b-3a3b8e963a14": {
"net": "5e1ea12a-b67d-4a4a-a526-0f8d286afa6e"
},
"6cbea03f-31ec-49ea-9903-b9bf7b26e340/b22250f7-9956-4ac8-ada1-725b7ba800c8": {
"net": "694b82f3-b89c-45b4-88fb-314686994af5"
}
},
"entity": "dac08463-17e8-4eb3-b5b4-4d7be5775379",
"group": "00000000-0000-0000-0000-000000000000",
"part": "9103c334-3f16-47e9-ab2b-a9700763c47f",
"pin_names": {},
"refdes": "J1",
"tag": "cad52c54-f100-4950-9ce9-f9a540c2b785",
"value": ""
},
"9bac649d-2637-484d-afde-0638f66a88f4": {
"alt_pins": {},
"connections": {
"48af78e5-730e-44eb-977a-cf188e4fcb39/6a44037c-65e2-4876-9359-42890048841d": {
"net": "4264d421-02db-42fa-b328-0831ac5c242f"
},
"48af78e5-730e-44eb-977a-cf188e4fcb39/dda0ec99-5d70-4fbe-a8db-897542e7554e": {
"net": "39af0482-c723-46ea-8562-087306764020"
}
},
"entity": "3ce770af-7be0-4f72-b2af-2c8010911aaf",
"group": "00000000-0000-0000-0000-000000000000",
"part": "6e276559-ece3-48fa-beda-7810b3b8af73",
"pin_names": {},
"refdes": "R4",
"tag": "b3e73172-7994-4762-83a0-b183439635b4",
"value": ""
},
"ea638e0f-70b8-4c74-b866-114f2fa81e48": {
"alt_pins": {},
"connections": {
"48af78e5-730e-44eb-977a-cf188e4fcb39/6a44037c-65e2-4876-9359-42890048841d": {
"net": "77c8d66b-e509-44f5-845c-05fff2d541a7"
},
"48af78e5-730e-44eb-977a-cf188e4fcb39/dda0ec99-5d70-4fbe-a8db-897542e7554e": {
"net": "867a00b0-b837-43cf-83de-84694eb1ed71"
}
},
"entity": "3ce770af-7be0-4f72-b2af-2c8010911aaf",
"group": "00000000-0000-0000-0000-000000000000",
"part": "6e276559-ece3-48fa-beda-7810b3b8af73",
"pin_names": {},
"refdes": "R2",
"tag": "7ea0f8f0-3dcc-4e04-96e8-1e68a46afe30",
"value": ""
}
},
"group_names": {},
"name": "Top",
"net_class_default": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"net_classes": {
"bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab": {
"name": "default"
}
},
"nets": {
"39af0482-c723-46ea-8562-087306764020": {
"is_port": false,
"is_power": false,
"name": "",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"4264d421-02db-42fa-b328-0831ac5c242f": {
"is_port": false,
"is_power": false,
"name": "K_EXT",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"5e1ea12a-b67d-4a4a-a526-0f8d286afa6e": {
"is_port": false,
"is_power": false,
"name": "K_X",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"694b82f3-b89c-45b4-88fb-314686994af5": {
"is_port": false,
"is_power": false,
"name": "",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"77c8d66b-e509-44f5-845c-05fff2d541a7": {
"is_port": false,
"is_power": false,
"name": "K_Y",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"7bacb991-ae51-4e22-8450-bc48138b6dbb": {
"is_port": false,
"is_power": true,
"name": "GND",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"867a00b0-b837-43cf-83de-84694eb1ed71": {
"is_port": false,
"is_power": false,
"name": "",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"8ff86bdf-504e-43a5-a8b3-c95eb9f1767b": {
"is_port": false,
"is_power": false,
"name": "K_SIG",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
},
"f42c22b7-4f1a-4804-a0f9-34241b9edbb7": {
"is_port": false,
"is_power": false,
"name": "",
"net_class": "bca93fb2-a2b3-4be7-9ef9-b7dbcf1242ab",
"port_direction": "bidirectional",
"power_symbol_name_visible": true,
"power_symbol_style": "gnd"
}
},
"project_meta": {
"author": "q3k",
"date": "2025-03-18",
"project_name": "external-iface",
"project_title": "Kenji External Interface",
"rev": "1"
},
"tag_names": {
"0b258362-88bd-4f0e-be4f-9b7557b394e5": "5",
"2210462d-68d0-4432-95a9-a77fae73c797": "3",
"2f586684-fa38-4de8-90f4-e2db38455081": "11",
"5758bc17-3551-46b0-b28d-151b3e0f5c5c": "12",
"660af710-503e-41f2-a9fb-e88616a4a90e": "10",
"717b34d2-40a5-46b9-8cba-432bd9e1554d": "12",
"7d9b58ba-cac2-41f3-99e0-1b33e04a56bd": "0",
"7ea0f8f0-3dcc-4e04-96e8-1e68a46afe30": "6",
"7f9ffaf8-c00b-495a-88e4-599123b04177": "2",
"b3e73172-7994-4762-83a0-b183439635b4": "4",
"c2ac07a8-c692-40ee-9840-09935876d73d": "7",
"cad52c54-f100-4950-9ce9-f9a540c2b785": "9",
"d1f1eba0-4f5b-492a-9438-a33ed48ffc4a": "1"
},
"uuid": "6590a349-edbb-4eb4-8a8e-db9dc800d507"
}

File diff suppressed because it is too large Load diff

BIN
obi/kenji-obi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

16
obi/microscope.toml Normal file
View file

@ -0,0 +1,16 @@
[instrument_info]
manufacturer='JEOL'
model='T330A'
[beam.electron.pinout]
scan_enable = [-1]
blank = [2]
[transforms]
[timings]
ext_switch_delay_ms = 20
[server]
host = "10.250.240.1"
port = 1234

BIN
obi/obi-mounting.FCStd (Stored with Git LFS) Normal file

Binary file not shown.

50
obi/obi.nix Normal file
View file

@ -0,0 +1,50 @@
# nix-build obi.nix
# not callPackage because we need a very new nixpkgs for numpy2
with import (builtins.fetchTarball {
name = "nixos-unstable-2025-10-05";
url = "https://github.com/nixos/nixpkgs/archive/e06e469c8e2d893f1f0dcb55bbd9de8904ee0cf5.tar.gz";
sha256 = "sha256:174gj7nxcmj4l5dr1iqfr67cl14x1aw3hxqzg716pw0g1qrmjs4w";
}) {};
python3.pkgs.buildPythonApplication {
name = "open-beam-interface";
src = fetchFromGitHub {
owner = "q3k";
repo = "Open-Beam-Interface";
rev = "7076782325fe04f146e6c3d126a4a1fe1ff9da8f";
hash = "sha256-3Tu2nFx3V5XIgyRb0da/28CxkY7Lscln0F4T98PGyHY=";
};
pyproject = true;
nativeBuildInputs = [
python3.pkgs.pdm-backend
];
nativeCheckInput = [
python3.pkgs.unittestCheckHook
];
propagatedBuildInputs = [
glasgow
yosys
nextpnr
icestorm
] ++ (with python3.pkgs; [
numpy
tifffile
pillow
tomlkit
pyqtgraph
pyqt6
qasync
]);
check = false;
preBuild = ''
export PDM_BUILD_SCM_VERSION=1.0
cd software
'';
}

View file

@ -13,3 +13,24 @@ succbone is our "automation" system for the vacuum system of the SEM.
- Signal two different vacuum levels to the original evacuation controller - Signal two different vacuum levels to the original evacuation controller
* Rough vacuum reached * Rough vacuum reached
* High vacuum reached * High vacuum reached
- Diffusion pump temperature monitoring via three PT100 sensors
- Environmental temperature & humidity monitoring (external sensor)
### Device Overview
These are the main devices powering the succbone control system. For details,
please check the wiring diagrams in [`panel.pdf`](./panel.pdf).
- `-KEB1`: BeagleBone as main control system with addonboard for PSU & analog 0-10V readout
- `-KED1`: MikroTik RB450G router as gateway to the outside and network switch
- `-KED2`: MODBUS-TCP to MODBUS-RTU bridge
- `-KEC1`: MODBUS-RTU 8x relay output and 8x digital input board
- `-KEC2`: MODBUS-RTU 8x PT100 500°C transmitter
- `-BTA1`: MODBUS-RTU environmental temperature & humidity sensor
- `-QAA1`: Contactor for the roughing pump interlock
- `-QAA2`: Contactor for the diffusion pump interlock
### 3D-Printed Components
- [DIN-rail mount for the BeagleBone](https://www.printables.com/model/1058768-beaglebone-din-mount)
- [DIN-rail mount for the MikroTik RB450G]
- (legacy: [DIN-rail mount for relay board](https://www.printables.com/model/1019947-relay-board-din-rail-mount))
- [Cable Strain Relief Plates](https://www.printables.com/model/932070-parametric-cable-strain-relief-plate)

BIN
succbone/panel.pdf (Stored with Git LFS)

Binary file not shown.

BIN
succbone/panel.qet (Stored with Git LFS)

Binary file not shown.

BIN
succbone/succbone-control-panel.jpg (Stored with Git LFS)

Binary file not shown.

BIN
succbone/succbone-din-mount.FCStd (Stored with Git LFS)

Binary file not shown.

BIN
succbone/succbone-din-mount.stl (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -4,5 +4,8 @@ go 1.22.3
require ( require (
github.com/coder/websocket v1.8.12 github.com/coder/websocket v1.8.12
github.com/simonvetter/modbus v1.6.3
k8s.io/klog v1.0.0 k8s.io/klog v1.0.0
) )
require github.com/goburrow/serial v0.1.0 // indirect

View file

@ -1,5 +1,9 @@
github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
github.com/goburrow/serial v0.1.0 h1:v2T1SQa/dlUqQiYIT8+Cu7YolfqAi3K96UmhwYyuSrA=
github.com/goburrow/serial v0.1.0/go.mod h1:sAiqG0nRVswsm1C97xsttiYCzSLBmUZ/VSlVLZJ8haA=
github.com/simonvetter/modbus v1.6.3 h1:kDzwVfIPczsM4Iz09il/Dij/bqlT4XiJVa0GYaOVA9w=
github.com/simonvetter/modbus v1.6.3/go.mod h1:hh90ZaTaPLcK2REj6/fpTbiV0J6S7GWmd8q+GVRObPw=
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=

View file

@ -13,7 +13,6 @@ type gpio interface {
// set returns the GPIO value. The meaning of the logic level is // set returns the GPIO value. The meaning of the logic level is
// implementation-dependent. // implementation-dependent.
set(state bool) error set(state bool) error
get() bool
} }
// bbGPIO implements gpio using BeagleBone's built-in GPIO pins. // bbGPIO implements gpio using BeagleBone's built-in GPIO pins.
@ -73,12 +72,6 @@ func (b *bbGPIO) set(state bool) error {
return nil return nil
} }
func (b *bbGPIO) get() bool {
b.mu.Lock()
defer b.mu.Unlock()
return b.state
}
// fakeGPIO implements a GPIO that logs state changes. // fakeGPIO implements a GPIO that logs state changes.
type fakeGPIO struct { type fakeGPIO struct {
desc string desc string
@ -97,9 +90,3 @@ func (b *fakeGPIO) set(state bool) error {
b.state = state b.state = state
return nil return nil
} }
func (b *fakeGPIO) get() bool {
b.mu.Lock()
defer b.mu.Unlock()
return b.state
}

View file

@ -62,6 +62,17 @@ type apiData struct {
// DPOn means the diffusion pump is turned on. // DPOn means the diffusion pump is turned on.
DPOn bool DPOn bool
} }
// Temperature state.
Temperatures struct {
DPBottom float32
DPTop float32
DPInlet float32
SEM float32
}
// Humidity state.
Humidity struct {
SEM float32
}
// Pressure feedback into evacuation board. // Pressure feedback into evacuation board.
Feedback struct { Feedback struct {
// RoughReached is true when the system has reached a rough vacuum // RoughReached is true when the system has reached a rough vacuum
@ -115,6 +126,11 @@ func (s *webServer) apiData(skipSystem bool) *apiData {
ad.Pirani.MbarFloat = mbar ad.Pirani.MbarFloat = mbar
ad.Pumps.RPOn = state.rpOn ad.Pumps.RPOn = state.rpOn
ad.Pumps.DPOn = state.dpOn ad.Pumps.DPOn = state.dpOn
ad.Temperatures.DPBottom = state.tempDPBottom
ad.Temperatures.DPTop = state.tempDPTop
ad.Temperatures.DPInlet = state.tempDPInlet
ad.Temperatures.SEM = state.tempSEM
ad.Humidity.SEM = state.humiditySEM
ad.Feedback.RoughReached = rough ad.Feedback.RoughReached = rough
ad.Feedback.HighReached = high ad.Feedback.HighReached = high
ad.LoopLoad = s.d.loopLoad() ad.LoopLoad = s.d.loopLoad()
@ -163,35 +179,80 @@ func (s *webServer) viewStream(w http.ResponseWriter, r *http.Request) {
} }
} }
func boolToFloat(b bool) float32 {
if b {
return 1.0
} else {
return 0.0
}
}
// httpMetrics serves minimalistic Prometheus-compatible metrics. // httpMetrics serves minimalistic Prometheus-compatible metrics.
func (s *webServer) viewMetrics(w http.ResponseWriter, r *http.Request) { func (s *webServer) viewMetrics(w http.ResponseWriter, r *http.Request) {
// TODO(q3k): also serve Go stuff using the actual Prometheus metrics client // TODO(q3k): also serve Go stuff using the actual Prometheus metrics client
// library. // library.
// TODO(q3k): serve the rest of the data model // TODO(q3k): serve the rest of the data model
state := s.d.snapshot() state := s.d.snapshot()
mbar := state.piraniMbar100.mbar
rpOn := state.rpOn
dpOn := state.dpOn
pumpDownStatus := s.d.gpioPumpDownStatus()
ventStatus := s.d.gpioVentStatus()
belowRoughStatus := s.d.gpioBelowRoughStatus()
belowHighStatus := s.d.gpioBelowHighStatus()
// sem_pressure_mbar is meant to represent the fused pressure value
// from all data sources once we have more vacuum sensors in the
// system. sem_pirani_mbar is just the reading from the pirani gauge.
fmt.Fprintf(w, "# HELP sem_pressure_mbar Pressure in the SEM chamber, in millibar\n") fmt.Fprintf(w, "# HELP sem_pressure_mbar Pressure in the SEM chamber, in millibar\n")
fmt.Fprintf(w, "# TYPE sem_pressure_mbar gauge\n") fmt.Fprintf(w, "# TYPE sem_pressure_mbar gauge\n")
fmt.Fprintf(w, "sem_pressure_mbar %f\n", mbar) fmt.Fprintf(w, "sem_pressure_mbar %f\n", state.piraniMbar100.mbar)
fmt.Fprintf(w, "# TYPE sem_rp_on gauge\n")
fmt.Fprintf(w, "sem_rp_on %t\n", rpOn) fmt.Fprintf(w, "# HELP sem_pirani_mbar Pressure reading by the Pirani gauge, in millibar\n")
fmt.Fprintf(w, "# TYPE sem_dp_on gauge\n") fmt.Fprintf(w, "# TYPE sem_pirani_mbar gauge\n")
fmt.Fprintf(w, "sem_dp_on %t\n", dpOn) fmt.Fprintf(w, "sem_pirani_mbar %f\n", state.piraniMbar100.mbar)
fmt.Fprintf(w, "# TYPE sem_gpio_pump_down_status gauge\n")
fmt.Fprintf(w, "sem_gpio_pump_down_status %t\n", pumpDownStatus) fmt.Fprintf(w, "# HELP sem_pirani_volts Voltage output from the Pirani gauge, in volts\n")
fmt.Fprintf(w, "# TYPE sem_gpio_vent_status gauge\n") fmt.Fprintf(w, "# TYPE sem_pirani_volts gauge\n")
fmt.Fprintf(w, "sem_gpio_vent_status %t\n", ventStatus) fmt.Fprintf(w, "sem_pirani_volts %f\n", state.piraniVolts100.avg)
fmt.Fprintf(w, "# TYPE sem_gpio_below_rough_status gauge\n")
fmt.Fprintf(w, "sem_gpio_below_rough_status %t\n", belowRoughStatus) fmt.Fprintf(w, "# HELP sem_pirani_failsafe_active Whether pirani gauge failsafe mode is active (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_gpio_below_high_status gauge\n") fmt.Fprintf(w, "# TYPE sem_pirani_failsafe_active gauge\n")
fmt.Fprintf(w, "sem_gpio_below_high_status %t\n", belowHighStatus) fmt.Fprintf(w, "sem_pirani_failsafe_active %f\n", boolToFloat(state.safety.failsafe))
fmt.Fprintf(w, "# HELP sem_dp_lockout_active Whether diffusion pump lockout is active (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_dp_lockout_active gauge\n")
fmt.Fprintf(w, "sem_dp_lockout_active %f\n", boolToFloat(state.safety.highPressure))
fmt.Fprintf(w, "# HELP sem_pump_diffusion_running Whether the diffusion pump is running (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_pump_diffusion_running gauge\n")
fmt.Fprintf(w, "sem_pump_diffusion_running %f\n", boolToFloat(state.dpOn))
fmt.Fprintf(w, "# HELP sem_pump_roughing_running Whether the roughing pump is running (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_pump_roughing_running gauge\n")
fmt.Fprintf(w, "sem_pump_roughing_running %f\n", boolToFloat(state.rpOn))
rough, high := state.vacuumStatus()
fmt.Fprintf(w, "# HELP sem_vacuum_rough_reached Whether a rough vacuum has been reached (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_vacuum_rough_reached gauge\n")
fmt.Fprintf(w, "sem_vacuum_rough_reached %f\n", boolToFloat(rough))
fmt.Fprintf(w, "# HELP sem_vacuum_high_reached Whether a high vacuum has been reached (boolean)\n")
fmt.Fprintf(w, "# TYPE sem_vacuum_high_reached gauge\n")
fmt.Fprintf(w, "sem_vacuum_high_reached %f\n", boolToFloat(high))
fmt.Fprintf(w, "# HELP sem_environment_temperature_celsius Environmental temperature of the SEM, in degrees celsius\n")
fmt.Fprintf(w, "# TYPE sem_environment_temperature_celsius gauge\n")
fmt.Fprintf(w, "sem_environment_temperature_celsius %f\n", state.tempSEM)
fmt.Fprintf(w, "# HELP sem_environment_humidity_percent Environmental relative humidity of the SEM, in percent\n")
fmt.Fprintf(w, "# TYPE sem_environment_humidity_percent gauge\n")
fmt.Fprintf(w, "sem_environment_humidity_percent %f\n", state.humiditySEM)
fmt.Fprintf(w, "# HELP sem_dp_bottom_temperature_celsius Temperature of the DP bottom, in degrees celsius\n")
fmt.Fprintf(w, "# TYPE sem_dp_bottom_temperature_celsius gauge\n")
fmt.Fprintf(w, "sem_dp_bottom_temperature_celsius %f\n", state.tempDPBottom)
fmt.Fprintf(w, "# HELP sem_dp_top_temperature_celsius Temperature of the DP top, in degrees celsius\n")
fmt.Fprintf(w, "# TYPE sem_dp_top_temperature_celsius gauge\n")
fmt.Fprintf(w, "sem_dp_top_temperature_celsius %f\n", state.tempDPTop)
fmt.Fprintf(w, "# HELP sem_dp_inlet_temperature_celsius Temperature of the DP inlet flange, in degrees celsius\n")
fmt.Fprintf(w, "# TYPE sem_dp_inlet_temperature_celsius gauge\n")
fmt.Fprintf(w, "sem_dp_inlet_temperature_celsius %f\n", state.tempDPInlet)
} }
func (s *webServer) viewRoughingPumpEnable(w http.ResponseWriter, r *http.Request) { func (s *webServer) viewRoughingPumpEnable(w http.ResponseWriter, r *http.Request) {

View file

@ -9,19 +9,19 @@ body {
padding: 2em; padding: 2em;
} }
table { table {
font-size: 40px; font-size: 30px;
} }
table.status td { table.status td {
width: 2em; width: 2em;
} }
th, td { th, td {
background-color: #e8e8e8; background-color: #e8e8e8;
padding: 0.4em; padding: 0.3em;
} }
th { th {
font-weight: 100; font-weight: 100;
text-align: right; text-align: right;
font-size: 30px; font-size: 25px;
} }
td { td {
text-align: left; text-align: left;
@ -34,7 +34,7 @@ h2 {
font-weight: 100; font-weight: 100;
} }
button { button {
height: 4.5em; height: 3.3em;
padding-left: 1.5em; padding-left: 1.5em;
padding-right: 1.5em; padding-right: 1.5em;
} }
@ -76,6 +76,7 @@ td > span {
.has-hidden:hover .hidden-text { .has-hidden:hover .hidden-text {
display: block; display: block;
}
@media only screen and (max-width: 700px) { @media only screen and (max-width: 700px) {
body { body {
@ -120,19 +121,6 @@ td > span {
</tr> </tr>
</table> </table>
<table>
<tr>
<th>Pirani Pressure</th>
<td class="has-hidden">
<div id="mbar">{{ .Pirani.Mbar }}</div>
<div class="hidden-text" style="color: #606060;">
<span>Voltage: </span><span id="volts">{{ .Pirani.Volts }}</span>
</div>
</td>
</tr>
</table>
<table> <table>
<tr> <tr>
<th rowspan="3">Control</th> <th rowspan="3">Control</th>
@ -163,6 +151,41 @@ td > span {
</tr> </tr>
</table> </table>
<table>
<tr>
<th>Pirani Pressure</th>
<td colspan="2" class="has-hidden">
<div id="mbar">{{ .Pirani.Mbar }}</div>
<div class="hidden-text" style="color: #606060;">
<span>Voltage: </span><span id="volts">{{ .Pirani.Volts }}</span>
</div>
</td>
</tr>
<tr>
<th rowspan="4">Temperatures</th>
<th>DP Bottom</th>
<td id="temp-dp-bottom">{{ .Temperatures.DPBottom }}&nbsp;°C</td>
</tr>
<tr>
<th>DP Top</th>
<td id="temp-dp-top">{{ .Temperatures.DPTop }}&nbsp;°C</td>
</tr>
<tr>
<th>DP Inlet</th>
<td id="temp-dp-inlet">{{ .Temperatures.DPInlet }}&nbsp;°C</td>
</tr>
<tr>
<th>SEM Environment</th>
<td id="temp-sem">{{ .Temperatures.SEM }}&nbsp;°C</td>
</tr>
<tr>
<th>Humidity</th>
<th>SEM Environment</th>
<td id="humidity-sem">{{ .Humidity.SEM }}%</td>
</tr>
</table>
<div class="graph-container"> <div class="graph-container">
<canvas id="graph" width="1024" height="512" style="max-width: 100%;"></canvas> <canvas id="graph" width="1024" height="512" style="max-width: 100%;"></canvas>
</div> </div>
@ -316,6 +339,11 @@ window.addEventListener("load", (_) => {
let trough = document.querySelector("#trough"); let trough = document.querySelector("#trough");
let thigh = document.querySelector("#thigh"); let thigh = document.querySelector("#thigh");
let load = document.querySelector("#load"); let load = document.querySelector("#load");
let tempSEM = document.querySelector("#temp-sem");
let tempDPBottom = document.querySelector("#temp-dp-bottom");
let tempDPTop = document.querySelector("#temp-dp-top");
let tempDPInlet = document.querySelector("#temp-dp-inlet");
let humiditySEM = document.querySelector('#humidity-sem');
// Buttons // Buttons
let pd = document.querySelector("#pd"); let pd = document.querySelector("#pd");
@ -388,6 +416,30 @@ window.addEventListener("load", (_) => {
dp.style = colors.default; dp.style = colors.default;
} }
tempSEM.innerHTML = data.Temperatures.SEM + "&nbsp;°C";
tempSEM.style = (data.Temperatures.SEM > 30) ?
colors.highlightCaution : colors.default;
humiditySEM.innerHTML = data.Humidity.SEM + "%";
humiditySEM.style = (data.Humidity.SEM > 59) ?
colors.highlightCaution : colors.default;
tempDPTop.innerHTML = data.Temperatures.DPTop + "&nbsp;°C";
tempDPTop.style = (data.Temperatures.DPTop > 30) ?
colors.highlightCaution : colors.default;
tempDPInlet.innerHTML = data.Temperatures.DPInlet + "&nbsp;°C";
tempDPInlet.style = (data.Temperatures.DPInlet > 30) ?
colors.highlightCaution : colors.default;
tempDPBottom.innerHTML = data.Temperatures.DPBottom + "&nbsp;°C";
if (data.Temperatures.DPBottom > 200) {
tempDPBottom.style = colors.highlightFault;
} else if (data.Temperatures.DPBottom > 50) {
tempDPBottom.style = colors.highlightNeutral;
} else {
tempDPBottom.style = colors.default;
}
let t = []; let t = [];
if (data.Feedback.RoughReached) { if (data.Feedback.RoughReached) {
trough.innerHTML = "OK"; trough.innerHTML = "OK";
@ -413,7 +465,7 @@ window.addEventListener("load", (_) => {
// Indicate all process values as unknown // Indicate all process values as unknown
[failsafe, highpressure, rp, dp, trough, thigh, volts, mbar].forEach((el) => { [failsafe, highpressure, rp, dp, trough, thigh, volts, mbar, tempDPBottom, tempDPTop, tempDPInlet].forEach((el) => {
if (!el.innerHTML.includes("??")) { if (!el.innerHTML.includes("??")) {
el.innerHTML += "??"; el.innerHTML += "??";
} }

View file

@ -6,7 +6,9 @@ import (
"net/http" "net/http"
"os" "os"
"os/signal" "os/signal"
"time"
"github.com/simonvetter/modbus"
"k8s.io/klog" "k8s.io/klog"
) )
@ -35,6 +37,12 @@ func main() {
d.daemonState.piraniVolts3.limit = 3 d.daemonState.piraniVolts3.limit = 3
d.daemonState.piraniVolts100.limit = 100 d.daemonState.piraniVolts100.limit = 100
d.tempDPBottom = 420.6
d.tempDPTop = 69.0
d.tempDPInlet = 42.0
d.tempSEM = 42.5
d.humiditySEM = 66.6
d.aboveRough.threshold = float64(flagPressureThresholdRough) d.aboveRough.threshold = float64(flagPressureThresholdRough)
d.aboveRough.hysteresis = float64(flagPressureThresholdRoughHysteresis) d.aboveRough.hysteresis = float64(flagPressureThresholdRoughHysteresis)
d.aboveHigh.threshold = float64(flagPressureThresholdHigh) d.aboveHigh.threshold = float64(flagPressureThresholdHigh)
@ -42,12 +50,6 @@ func main() {
if flagFake { if flagFake {
klog.Infof("Starting with fake peripherals") klog.Infof("Starting with fake peripherals")
d.adcPirani = &fakeADC{} d.adcPirani = &fakeADC{}
d.gpioRoughingPump = &fakeGPIO{desc: "rp"}
d.gpioDiffusionPump = &fakeGPIO{desc: "~dp"}
d.gpioBtnPumpDown = &fakeGPIO{desc: "~pd"}
d.gpioBtnVent = &fakeGPIO{desc: "~vent"}
d.gpioBelowRough = &fakeGPIO{desc: "~rough"}
d.gpioBelowHigh = &fakeGPIO{desc: "~high"}
} else { } else {
adc, err := newBBADC(0) adc, err := newBBADC(0)
if err != nil { if err != nil {
@ -55,21 +57,19 @@ func main() {
} }
d.adcPirani = adc d.adcPirani = adc
for _, c := range []struct { // Setup modbus client
out *gpio d.modbusClient, err = modbus.NewClient(&modbus.ClientConfiguration{
num int URL: "tcp://10.250.241.20:8887",
}{ Timeout: 1 * time.Second,
{&d.gpioRoughingPump, 115}, })
{&d.gpioDiffusionPump, 49}, if err != nil {
{&d.gpioBtnPumpDown, 48}, klog.Exitf("Failed to setup modbus client %v", err)
{&d.gpioBtnVent, 60}, }
{&d.gpioBelowRough, 30},
{&d.gpioBelowHigh, 7}, // Connect to modbus client
} { err = d.modbusClient.Open()
*c.out, err = newBBGPIO(c.num, true) if err != nil {
if err != nil { klog.Warningf("Failed to connect to modbus TCP %v", err)
klog.Exitf("Failed to setup GPIO: %v", err)
}
} }
} }
@ -86,5 +86,9 @@ func main() {
}() }()
go d.process(ctx) go d.process(ctx)
if !flagFake {
go d.modbusProcess(ctx)
}
<-ctx.Done() <-ctx.Done()
} }

163
succbone/succd/modbus.go Normal file
View file

@ -0,0 +1,163 @@
package main
import (
"context"
"time"
"github.com/simonvetter/modbus"
"k8s.io/klog"
)
func modbusValuesToFloat(v uint16) float32 {
return float32(v) / 10.0
}
func (d *daemon) modbusRestart() error {
d.modbusClient.Close()
return d.modbusClient.Open()
}
// There are currently two devices connected to the modbus.
// The first one (slave 1) is a temperature/humidity sensor.
// The second one (slave 2) is a PTA8D08 transmitter
//
// Returns whether modbus should restart (only in case of an underlying network error)
func (d *daemon) modbusUpdate() bool {
var err error
var numDevicesNotResponding int
// Switch to slave 1 (BTA1)
d.modbusClient.SetUnitId(1)
// Read temperature and humidity
var registersBTA1 []uint16 // temperature, humidity
registersBTA1, err = d.modbusClient.ReadRegisters(1, 2, modbus.INPUT_REGISTER)
if err != nil {
numDevicesNotResponding += 1
klog.Warningf("error while reading registers from BTA1 %v", err)
} else if len(registersBTA1) != 2 {
klog.Warningf("expected two registers from modbus slave 1, but got %d", len(registersBTA1))
} else {
d.mu.Lock()
d.daemonState.tempSEM = modbusValuesToFloat(registersBTA1[0])
d.daemonState.humiditySEM = modbusValuesToFloat(registersBTA1[1])
d.mu.Unlock()
}
// Switch to slave 2 (KEC2)
d.modbusClient.SetUnitId(2)
// PT100 mapping
// Channel 0: Cable -WGA6, Sensor "dp bottom"
// Channel 1: Cable -WGA8, Sensor "dp inlet"
// Channel 2: Cable WGA7, Sensor "dp top"
var registersKEC2 []uint16 // temperatures dp
registersKEC2, err = d.modbusClient.ReadRegisters(0, 3, modbus.HOLDING_REGISTER)
if err != nil {
numDevicesNotResponding += 1
klog.Warningf("error while reading registers from KEC2 %v", err)
} else if len(registersKEC2) != 3 {
klog.Warningf("expected three registers from modbus slave 2, but got %d", len(registersKEC2))
} else {
d.mu.Lock()
d.daemonState.tempDPBottom = modbusValuesToFloat(registersKEC2[0])
d.daemonState.tempDPInlet = modbusValuesToFloat(registersKEC2[1])
d.daemonState.tempDPTop = modbusValuesToFloat(registersKEC2[2])
d.mu.Unlock()
}
// Switch to slave 3 (KEC1)
d.modbusClient.SetUnitId(3)
// Do a read first to avoid side-effects from the subsequent write to the relay states
var digitalInputs [8]bool
var digitalInputRegisters []uint16
digitalInputRegisters, err = d.modbusClient.ReadRegisters(0x81, 8, modbus.HOLDING_REGISTER)
if err != nil {
numDevicesNotResponding += 1
klog.Warningf("error while reading digital inputs from KEC1 %v", err)
} else {
// Convert MODBUS words into bools
for idx, value := range digitalInputRegisters {
if value != 0 {
digitalInputs[idx] = true
} else {
digitalInputs[idx] = false
}
}
// TODO: Input mapping goes here
}
// We must wait between reading and writing to the -KEC1 relay board
// because otherwise it chokes and times out the write registers
// command.
time.Sleep(time.Millisecond * 10)
// KFA1-KFA8
var relayState [8]bool
d.mu.Lock()
// -KFA1 Roughing Pump (normally closed contact)
relayState[0] = !d.daemonState.rpOn
// -KFA2 Diffusion Pump
relayState[1] = d.daemonState.dpOn
// -KFA4 Button Vent
relayState[3] = d.daemonState.vent.output
// -KFA5 Button Pump-Down
relayState[4] = d.daemonState.pumpdown.output
// -KFA6 Fake-Pirani Rough (normally closed contact)
relayState[5] = !d.aboveRough.output
// -KFA7 Fake-Pirani High (normally closed contact)
relayState[6] = !d.aboveHigh.output
d.mu.Unlock()
// The KEC1 module uses a non-standard MODBUS interface
// instead of coils
// 0x0100 is the open command
// 0x0200 is the close command
// We write 8 words (16-bit) to address 0x01 to update the relays
var registerValuesKEC1 [8]uint16
// Convert the boolean values to the commands
for idx, state := range relayState {
if state {
registerValuesKEC1[idx] = 0x0100
} else {
registerValuesKEC1[idx] = 0x0200
}
}
err = d.modbusClient.WriteRegisters(0x01, registerValuesKEC1[:])
if err != nil {
numDevicesNotResponding += 1
klog.Warningf("error while updating registers %v", err)
}
if numDevicesNotResponding >= 4 {
klog.Warningf("no device did respond to our request. Probably a network timeout.")
return true
}
return false
}
// Call modbusUpdate every 100 milliseconds
func (d *daemon) modbusProcess(ctx context.Context) {
for {
select {
case <-ctx.Done():
return
default:
shouldRestart := d.modbusUpdate()
// the modbus library does not reopen the tcp socket in case of
// a connection loss.
if shouldRestart {
klog.Infof("restarting modbus connection...")
err := d.modbusRestart()
if err != nil {
klog.Warningf("failed to restart modbus %v", err)
}
}
time.Sleep(time.Millisecond * 100)
}
}
}

View file

@ -8,22 +8,17 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
"github.com/simonvetter/modbus"
"k8s.io/klog" "k8s.io/klog"
) )
// daemon is the main service of the succdaemon. // daemon is the main service of the succdaemon.
type daemon struct { type daemon struct {
modbusClient *modbus.ModbusClient
// adcPirani is the adc implementation returning the voltage of the Pfeiffer // adcPirani is the adc implementation returning the voltage of the Pfeiffer
// Pirani gauge. // Pirani gauge.
adcPirani adc adcPirani adc
gpioDiffusionPump gpio
gpioRoughingPump gpio
gpioBtnPumpDown gpio
gpioBtnVent gpio
gpioBelowRough gpio
gpioBelowHigh gpio
load atomic.Int64 load atomic.Int64
// mu guards the state below. // mu guards the state below.
@ -55,6 +50,13 @@ type daemonState struct {
pumpdown momentaryOutput pumpdown momentaryOutput
aboveRough thresholdOutput aboveRough thresholdOutput
aboveHigh thresholdOutput aboveHigh thresholdOutput
tempDPBottom float32
tempDPTop float32
tempDPInlet float32
tempSEM float32
humiditySEM float32
} }
func (d *daemonState) vacuumStatus() (rough, high bool) { func (d *daemonState) vacuumStatus() (rough, high bool) {
@ -162,33 +164,5 @@ func (d *daemon) processOnce(_ context.Context) error {
d.dpOn = false d.dpOn = false
} }
// Update relay outputs.
for _, rel := range []struct {
name string
gpio gpio
// activeHigh means the relay is active high, ie. a true source will
// mean that NO/COM get connected, and a false source means that NC/COM
// get connected.
activeHigh bool
source bool
}{
{"rp", d.gpioRoughingPump, false, d.rpOn},
{"dp", d.gpioDiffusionPump, true, d.dpOn},
{"pumpdown", d.gpioBtnPumpDown, true, d.pumpdown.output},
{"vent", d.gpioBtnVent, true, d.vent.output},
{"rough", d.gpioBelowRough, false, d.aboveRough.output},
{"high", d.gpioBelowHigh, false, d.aboveHigh.output},
} {
val := rel.source
if rel.activeHigh {
// Invert because the relays go through logical inversion (ie. a
// GPIO false is a relay trigger).
val = !val
}
if err := rel.gpio.set(val); err != nil {
return fmt.Errorf("when outputting %s: %w", rel.name, err)
}
}
return nil return nil
} }

View file

@ -18,12 +18,6 @@ type daemonController interface {
pumpDownPress() pumpDownPress()
// ventPRess simulates a vent button press. // ventPRess simulates a vent button press.
ventPress() ventPress()
// returns the current gpio state of the pump down button
gpioPumpDownStatus() bool
// returns the current gpio state of the vent button
gpioVentStatus() bool
gpioBelowRoughStatus() bool
gpioBelowHighStatus() bool
} }
func (d *daemon) loopLoad() int64 { func (d *daemon) loopLoad() int64 {
@ -68,27 +62,3 @@ func (d *daemon) ventPress() {
defer d.mu.Unlock() defer d.mu.Unlock()
d.vent.trigger() d.vent.trigger()
} }
func (d *daemon) gpioPumpDownStatus() bool {
d.mu.Lock()
defer d.mu.Unlock()
return d.gpioBtnPumpDown.get()
}
func (d *daemon) gpioVentStatus() bool {
d.mu.Lock()
defer d.mu.Unlock()
return d.gpioBtnVent.get()
}
func (d *daemon) gpioBelowRoughStatus() bool {
d.mu.Lock()
defer d.mu.Unlock()
return d.gpioBelowRough.get()
}
func (d *daemon) gpioBelowHighStatus() bool {
d.mu.Lock()
defer d.mu.Unlock()
return d.gpioBelowHigh.get()
}