Compare commits
100 Commits
Author | SHA1 | Date | |
---|---|---|---|
15af0c7e9a | |||
2bb280c208 | |||
|
6218a4a4c7 | ||
|
370b284bb6 | ||
|
8da220cbdb | ||
|
97aacae7b9 | ||
|
052c350dad | ||
|
d11fda9a71 | ||
|
51b7789311 | ||
|
458dfd2621 | ||
|
30578560cc | ||
|
96f890588d | ||
|
7594f5396e | ||
|
789c5f230f | ||
|
e5b5a36a06 | ||
|
8a2ef9be32 | ||
|
cc60e10a33 | ||
|
c8da085c22 | ||
|
6422fa3a8a | ||
|
d815054215 | ||
|
4de79a9d6c | ||
|
f00cb821e3 | ||
|
f508e869ed | ||
|
485fa38021 | ||
|
0689ea7e9e | ||
|
17062e17cc | ||
|
c1e12c7286 | ||
|
4be02dca3f | ||
|
7a265978f1 | ||
|
15da3e7dc8 | ||
|
17aa9f611e | ||
|
f5e0bcc72b | ||
|
a19d1dfe54 | ||
|
4feb32a702 | ||
|
76f390897f | ||
|
b5c6b0741d | ||
|
69865a06e6 | ||
|
0e67219478 | ||
|
5c78d839ef | ||
|
6eb004d420 | ||
|
b1316d8d9d | ||
|
2ebf823f32 | ||
|
160219215e | ||
|
1094ada372 | ||
|
f4968c0b66 | ||
|
0c1d20ce5c | ||
|
dbfc10a358 | ||
|
fbd399f310 | ||
|
5606de2e30 | ||
|
38af1654af | ||
|
c651235a54 | ||
|
c07685d07a | ||
|
b17f299211 | ||
|
4f355add20 | ||
|
01d921ff10 | ||
|
f4f173d22d | ||
|
09d9733046 | ||
|
d316f6c884 | ||
|
a11d33d0d3 | ||
|
80242b3031 | ||
|
7f1b6089db | ||
|
ec2b571047 | ||
|
7466d161ef | ||
|
1e036907a9 | ||
|
096e6a47ac | ||
|
b50ab170ce | ||
|
92eea55eaa | ||
|
1481348f3d | ||
|
f63c52ebf5 | ||
|
22ada2c9e0 | ||
|
d74bacde6b | ||
|
5c1021abfd | ||
|
03c484f1c6 | ||
|
f4704f57ce | ||
|
55b1e7559a | ||
|
5368b67f95 | ||
|
58794502cf | ||
|
57899c5600 | ||
|
0496e468aa | ||
|
8443725f70 | ||
|
e3b308aad7 | ||
|
659ae261b1 | ||
|
b8a657de73 | ||
|
71bce7ad0f | ||
|
0ac4d63b19 | ||
|
079cb51254 | ||
|
024910542d | ||
|
8f5c637d7a | ||
|
ffd85f2a06 | ||
|
c86e82bedf | ||
|
05c9c3bad0 | ||
|
8a8a586ce4 | ||
|
353ef24b1e | ||
|
d8b2997a65 | ||
|
e4f7aa7e51 | ||
|
c54269b217 | ||
|
54e8b1c60b | ||
|
34da83cb91 | ||
|
6e3c0a41ce | ||
|
d77e56a5d5 |
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
*.hex
|
||||
*.elf
|
||||
.DS_Store
|
||||
|
BIN
Gerber_Stir V2.zip
Normal file
177
README.md
@ -1,14 +1,61 @@
|
||||
# Dual magnetic stir controller
|
||||
# Dual magnetic stir controller V2
|
||||
|
||||
|
||||
## Overview
|
||||
|
||||
This is the Arduino sketch to build a double magnetic stirrer based on 2 fans, a 1602 LCD display, a KY-040 encoder and an Arduino (e.g. Uno, Leonardo, Pro Micro).
|
||||
This is the Arduino project to build a double magnetic stirrer based on 2 fans, a 1602 LCD display, a KY-040 encoder and an Arduino Nano and a special PCB designed in the Hobbybrauer-Forum.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/stir.jpg" width=500>
|
||||
<img src="https://git.fhi.mpg.de/mike/stir/raw/branch/master/images/stir+pcb.jpg" width=700>
|
||||
</p>
|
||||
|
||||
In order to put the stirrer into operation you have to change the settings in stir.ino according to your setup.
|
||||
V2 supports dual voltage for the fans which increases the speed range.
|
||||
|
||||
In order to put the stirrer into operation you have to change the settings in stir.ino according to your setup (see below).
|
||||
|
||||
The stir V2 software is compatible with V1 hardware if you have used neither the RS232 Api nor the OFF0 and OFF1 relais pins.
|
||||
|
||||
|
||||
## Part List
|
||||
|
||||
* 1x PCB "Stir V2.0"
|
||||
* 1x Arduino Nano V3
|
||||
* 1x [Voltage regulator TE818 5-24V to 5V 3A step down buck converter](https://www.ebay.de/itm/5x-Voltage-Regulator-5-24V-to-5V-3A-Step-Down-Buck-Converter-Power-Module-TE818/133109140535?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649)
|
||||
* 2x [Relais Omron G5Q-1-EU 5DC switching printrelais 5 V/DC 5A](https://www.conrad.de/de/p/omron-g5q-1-eu-5dc-printrelais-5-v-dc-5-a-1-wechsler-1-st-503930.html)
|
||||
* 2x [Diode 1N4148 Diotec](https://www.conrad.de/de/p/stmicroelectronics-schottky-diode-gleichrichter-1n5822-do-201ad-40-v-einzeln-168275.html)
|
||||
* 1x [Electrolytic capacitor 1000µF/16V Yageo SE016M1000B5S-1015](https://www.conrad.de/de/p/yageo-se016m1000b5s-1015-elektrolyt-kondensator-radial-bedrahtet-5-mm-1000-f-16-v-20-x-h-10-mm-x-15-mm-1-st-445386.html)
|
||||
* 2x [Diode 1N5822 STMicroelectronics Schottky-Diode](https://www.conrad.de/de/p/diotec-ultraschnelle-si-diode-1n4148-sod-27-75-v-150-ma-162280.html)
|
||||
* 4x [Metal film resistor 10 KOhm 0,6 W](https://www.conrad.de/de/p/rs-pro-metallschichtwiderstand-10k-0-5-0-6w-807200469.html)
|
||||
* 2x Fan BeQuiet SilentWings 3 120mm PWM Highspeed or Noctua NF-R8 Redux-1800 80mm PWM
|
||||
* 1x Power supply 12V-16V DC / 2A
|
||||
* 1x Built-in socket for plug-in power supply unit
|
||||
* 1x I2C 16x2 Arduino LCD Display Module
|
||||
* 1x [Rotary encoder KY-040](https://www.conrad.de/de/p/joy-it-kodierter-drehschalter-rotary-encoder-1695709.html)
|
||||
* 2x Magnet mount (3D printed)
|
||||
* 4x Neodymium magnet 20x10 mm (N52, 1 oder 2 mm dick)
|
||||
|
||||
In addition, a housing is required that can be individually designed according to possibilities and capabilities.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://git.fhi.mpg.de/mike/stir/raw/branch/master/images/v2_board.jpg" width=350>
|
||||
</p>
|
||||
|
||||
|
||||
## Reference
|
||||
|
||||
This project was created based on an idea from the german Hobbybrauer-Forum and would not be possible without the ideas from there.
|
||||
|
||||
The forum: https://hobbybrauer.de/
|
||||
|
||||
The thread: https://hobbybrauer.de/forum/viewtopic.php?f=21&t=1456
|
||||
|
||||
Special thanks for development and testing:
|
||||
|
||||
* Herbert Schmid
|
||||
* Adrian Sigel
|
||||
* Jens Warkentin
|
||||
* Bastian Werner
|
||||
|
||||
|
||||
## Overview of Functions
|
||||
|
||||
@ -25,6 +72,15 @@ All functions are controlled by the KY-040 encoder:
|
||||
* **CTIME**: turn changes the interval in minutes for the fish catching function
|
||||
* **RTIME**: turn changes speed rise time in seconds (applies to power on, stirrer on, boost on and fish catching)
|
||||
* **OTIME**: turn changes switch off time in hours (the timer activates immediately, 0 = switch off disabled)
|
||||
* **RNVAL**: random value range (a random values in this range will be added to speed)
|
||||
* **Other menu options**:
|
||||
* **CFG**: Configuration menu
|
||||
|
||||
Functions in the congirutation sub menu
|
||||
* **Short Press**: switch between config option and and value.
|
||||
* **Long press**: exit configuration menu.
|
||||
* **Turn**: select configuration option or change value.
|
||||
|
||||
|
||||
## Display Indicators:
|
||||
|
||||
@ -35,82 +91,39 @@ All functions are controlled by the KY-040 encoder:
|
||||
|
||||
## Settings (in stir.ino)
|
||||
|
||||
|Value|Description|
|
||||
|:----|:----------|
|
||||
|`SPEEDINC`|increment of speed values when turning the encoder|
|
||||
|`FANMIN`|fan minimum speed (should be a value at which the fan runs safely) (rpm)|
|
||||
|`FANMAX`|maximum speed of the fan (it is important that this is the real maximum value of the fan) (rpm)|
|
||||
|`CATCHSTOP`|stop interval for stir fish catch function (ms)|
|
||||
|`PWM0`, `PWN1`|PWM output pins|
|
||||
|`I0`, `I1`|interrupts for rpm measurement (2 and 3 for Leonardo and ProMicro / 0 and 1 for Uno)|
|
||||
|`CLK`, `DT`, `SW`|pins for KY-040 encoder|
|
||||
|`RINTERVAL`|regulation interval (ms)|
|
||||
|`RDELAY`|extra regulation delay when value changes (ms)|
|
||||
|`RTOL`|regulation tolerance (rpm)|
|
||||
|`SINTERVAL`|speed measurement interval (ms)|
|
||||
|`SAVERAGE`|speed measurement average|
|
||||
|`SAVETAG`|parameter save identifier|
|
||||
|`SAVEDELAY`|delay in seconds before parameter will be saved to EEPROM|
|
||||
|Value|Config|Description|
|
||||
|:----------------|:-----|:----------|
|
||||
|`LGHT` |`LGHT`|LCD display brightness|
|
||||
|`SPEEDINC1` |`SPI1`|increment of speed values when turning the encoder (1. range)|
|
||||
|`SPEEDINC2` |`SPI2`|increment of speed values when turning the encoder (2. range)|
|
||||
|`SPEEDINC3` |`SPI3`|increment of speed values when turning the encoder (3. range)|
|
||||
|`SPEEDSTEP1` |`SPS1`|speed increment steps (increment changes at these values, separates range 1 and 2)|
|
||||
|`SPEEDSTEP2` |`SPS2`|speed increment steps (increment changes at these values, separates range 2 and 3))|
|
||||
|`FANMIN` |`FMIN`|fan minimum speed (should be a value at which the fan runs safely) (rpm)|
|
||||
|`FANMAX` |`FMAX`|fan maximum speed (it's important that this is the real maximum value of the fan) (rpm)|
|
||||
|`FANINIT` |`FINI`|set fans to high voltage for 3 sec at boot (0/1)|
|
||||
|`BOFF` |`BOFF`|if set boost off will also turn the normal mode off (0/1)|
|
||||
|`BINC` |`BINC`|boost time increment (min)|
|
||||
|`CINC` |`CINC`|catch time increment (min)|
|
||||
|`RINC` |`RINC`|rise time increment (sec)|
|
||||
|`OINC` |`OINC`|off timer increment (hour)|
|
||||
|`RNDINC` |`RINC`|randon value increment (rpm)|
|
||||
|`CATCHSTOP` |`CSTP`|stop interval for stir fish catch function (ms)|
|
||||
|`PWM0`, `PWM1` | |PWM output pins for fan speed|
|
||||
|`PWM2` | |PWM output pin for LCD brightness control|
|
||||
|`I0`, `I1` | |interrupts for rpm measurement (0/1 for Uno/Nano, 2/3 for Leonardo/ProMicro)|
|
||||
|`SWAPENC` |`SWEN`|switch KY-040 encoder direxction (0/1)|
|
||||
|`CLK`, `DT`, `SW`| |pins for KY-040 encoder|
|
||||
|`R0`, `R0` | |voltage select relais pin|
|
||||
|`RTHRES` |`RTHR`|voltage switch threshold (rpm)|
|
||||
|`RINTERVAL` |`XINT`|regulation interval (ms)|
|
||||
|`RDELAY` |`XDEL`|extra regulation delay when value changes (ms)|
|
||||
|`RTOL` |`XTOL`|regulation tolerance (rpm)|
|
||||
|`RNDINTERVL` |`RINT`|randon value range change interval (ms)|
|
||||
|`SINTERVAL` |`SINT`|speed measurement interval (ms)|
|
||||
|`SAVERAGE` |`SAVG`|speed measurement average|
|
||||
|`SAVETAG` | |parameter save identifier|
|
||||
|`SAVEDELAY` | |delay in seconds before parameter will be saved to EEPROM|
|
||||
|`LCDB` | |LCD brightness steps (10 values, 0=off, 255=max)|
|
||||
|`RESET` |`RSET`|change this value in configuration menu to 1 for factory reset|
|
||||
|
||||
## API commands
|
||||
|
||||
Commands are colon separated an can be send via USB/Serial
|
||||
|
||||
|Command|Description|
|
||||
|:------|:----------|
|
||||
|`info`|returns a colon separated string with all parameters (see below)|
|
||||
|`version`|returns the software version|
|
||||
|`on:<0/1>`|switch stirren on|
|
||||
|`off:<0/1>`|switch stirren off|
|
||||
|`bon:<0/1>`|switch boost mode on|
|
||||
|`boff:<0/1>`|switch boost mode off|
|
||||
|`speed:<0/1>:<rpm>`|set stirrer speed (FANMIN-FANMAX rpm)|
|
||||
|`bspeed:<0/1>:<rpm>`|set stirrer boost speed (speed-FANMAX rpm)|
|
||||
|`btime:<0/1>:<min>`|set boost time (0-60)|
|
||||
|`con:<0/1>`|switch catch mode on|
|
||||
|`coff:<0/1>`|switch catch mode off|
|
||||
|`ctime:<0/1>:<min>`|set catch mode interval (60-240 min)|
|
||||
|`rtime:<0/1>:<sec>`|set speed rise time (0-240 sec)|
|
||||
|`otime:<0/1>:<hour>`|switch stirrer off after time in hours (1-99 hour, 0 deactivates switch off)|
|
||||
|
||||
All commands return a colon separated string with all current parameters:
|
||||
|
||||
|Element|Stirrer|Variable in stir.ino|Description|
|
||||
|:------|:------|:-------------------|:----------|
|
||||
| 0|0|`F[0]` |state (0=on, 1=off)|
|
||||
| 1|0|`v[0]` |speed (rpm)|
|
||||
| 2|0|`b[0]` |boost speed (rpm)|
|
||||
| 3|0|`rpm[0]` |rpm|
|
||||
| 4|0|`xpm[0]` |averaged rpm|
|
||||
| 5|0|`r[0]` |regulation value|
|
||||
| 6|0|`bstate[0]`|boost state (0=on, 1=off)|
|
||||
| 7|0|`btime[0]` |boost time (min)|
|
||||
| 8|0|`cat[0]` |fish catch mode state (0=on, 1=off)|
|
||||
| 9|0|`ctime[0]` |fish catch time interval (min)|
|
||||
|10|0|`rtime[0]` |speed rise time (sec)|
|
||||
|11|0|`otime[0]` |switch off time (hour)|
|
||||
|12|0| |boost remain (sec)|
|
||||
|13|0| |off timer remain (sec)|
|
||||
|14|1|`F[1]` |state (0=on, 1=off)|
|
||||
|15|1|`v[1]` |speed (rpm)|
|
||||
|16|1|`b[1]` |boost speed (rpm)|
|
||||
|17|1|`rpm[1]` |rpm|
|
||||
|18|1|`xpm[1]` |averaged rpm|
|
||||
|19|1|`r[1]` |regulation value|
|
||||
|20|1|`bstate[1]`|boost state (0=on, 1=off)|
|
||||
|21|1|`btime[1]` |boost time (min)|
|
||||
|22|1|`cat[1]` |fish catch mode state (0=on, 1=off)|
|
||||
|23|1|`ctime[1]` |fish catch time interval (min)|
|
||||
|24|1|`rtime[1]` |speed rise time (sec)|
|
||||
|25|1|`otime[1]` |switch off time (hour)|
|
||||
|26|1| |boost remain (sec)|
|
||||
|27|1| |off timer remain (sec)|
|
||||
|28| | |0=ok, 1=error|
|
||||
|29| | |software version|
|
||||
|
||||
## Schematics
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/schematic_leonardo.png" width=500>
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/schematic_uno.png" width=500>
|
||||
</p>
|
||||
|
143
V1 (old)/README.md
Normal file
@ -0,0 +1,143 @@
|
||||
# Dual magnetic stir controller V1
|
||||
|
||||
## Overview
|
||||
|
||||
This is the Arduino sketch to build a double magnetic stirrer based on 2 fans, a 1602 LCD display, a KY-040 encoder and an Arduino (e.g. Uno, Nano, Leonardo, Pro Micro).
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/stir.jpg" width=500>
|
||||
</p>
|
||||
|
||||
In order to put the stirrer into operation you have to change the settings in stir.ino according to your setup.
|
||||
|
||||
## Reference
|
||||
|
||||
This project was created based on an idea from the Hobbybrauer-Forum and would not be possible without the ideas from there.
|
||||
|
||||
The forum: https://hobbybrauer.de/
|
||||
|
||||
The thread: https://hobbybrauer.de/forum/viewtopic.php?f=21&t=1456
|
||||
|
||||
## Overview of Functions
|
||||
|
||||
All functions are controlled by the KY-040 encoder:
|
||||
|
||||
* **Short Press:** change between menu, stirrer 1 and stirrer 2
|
||||
* **Turn when menu is selected**: change between menu items (SPEED, BOOST, BTIME, CATCH, CTIME)
|
||||
* **Long press when menu is selected**: lock all functions (unlock also by long press)
|
||||
* **When a stirrer is selected**:
|
||||
* **SPEED**: turn sets speed, long press switches stirrer on or off.
|
||||
* **BOOST**: turn sets boost speed, long press activates/deactivates the boost function (running time is shown in the display).
|
||||
* **BTIME**: turn changes the boost time in minutes.
|
||||
* **CATCH**: turn activates/deactivates the fishing function
|
||||
* **CTIME**: turn changes the interval in minutes for the fish catching function
|
||||
* **RTIME**: turn changes speed rise time in seconds (applies to power on, stirrer on, boost on and fish catching)
|
||||
* **OTIME**: turn changes switch off time in hours (the timer activates immediately, 0 = switch off disabled)
|
||||
* **RNVAL**: random value range (a random values in this range will be added to speed)
|
||||
* **Other menu options**:
|
||||
* **BRGHT**: LCD brightness
|
||||
|
||||
## Display Indicators:
|
||||
|
||||
* **Bottom Left**: Menu
|
||||
* **Bottom Center/Right**: displays the set values for the stirrers depending on the selected menu item.
|
||||
* **Top Center/Right**: displays the current stirrer speed (or 'OFF' or 'CAT' (Fishing)).
|
||||
* **Top Left**: shows the remaining time of the boost or switch off function.
|
||||
|
||||
## Settings (in stir.ino)
|
||||
|
||||
|Value|Description|
|
||||
|:----|:----------|
|
||||
|`SPEEDINC`|increment of speed values when turning the encoder|
|
||||
|`FANMIN`|fan minimum speed (should be a value at which the fan runs safely) (rpm)|
|
||||
|`FANMAX`|maximum speed of the fan (it is important that this is the real maximum value of the fan) (rpm)|
|
||||
|`BOFF`|if set boost off will also turn the normal mode off|
|
||||
|`BINC`|boost time increment (min)|
|
||||
|`CINC`|catch time increment (min)|
|
||||
|`RINC`|rise time increment (sec)|
|
||||
|`OINC`|off timer increment (hour)|
|
||||
|`CATCHSTOP`|stop interval for stir fish catch function (ms)|
|
||||
|`PWM0`, `PWM1`|PWM output pins for fan speed|
|
||||
|`PWM2`|PWM output pin for LCD brightness control|
|
||||
|`I0`, `I1`|interrupts for rpm measurement (2 and 3 for Leonardo and ProMicro / 0 and 1 for Uno)|
|
||||
|`CLK`, `DT`, `SW`|pins for KY-040 encoder|
|
||||
|`OFF0`, `OFF1`|these pins will be set if the fan is off|
|
||||
|`OFFSTATE`|off state (LOW/HIGH)|
|
||||
|`RINTERVAL`|regulation interval (ms)|
|
||||
|`RDELAY`|extra regulation delay when value changes (ms)|
|
||||
|`RTOL`|regulation tolerance (rpm)|
|
||||
|`RNDINTERVL`|randon value range change interval (ms)|
|
||||
|`SINTERVAL`|speed measurement interval (ms)|
|
||||
|`SAVERAGE`|speed measurement average|
|
||||
|`SAVETAG`|parameter save identifier|
|
||||
|`SAVEDELAY`|delay in seconds before parameter will be saved to EEPROM|
|
||||
|`LCDB`|LCD brightness steps (10 values, 0=off, 255=max)|
|
||||
|
||||
## API commands
|
||||
|
||||
Commands are colon separated an can be send via USB/Serial
|
||||
|
||||
|Command|Description|
|
||||
|:------|:----------|
|
||||
|`info`|returns a colon separated string with all parameters (see below)|
|
||||
|`version`|returns the software version|
|
||||
|`on:<0/1>`|switch stirren on|
|
||||
|`off:<0/1>`|switch stirren off|
|
||||
|`bon:<0/1>`|switch boost mode on|
|
||||
|`boff:<0/1>`|switch boost mode off|
|
||||
|`speed:<0/1>:<rpm>`|set stirrer speed (FANMIN-FANMAX rpm)|
|
||||
|`bspeed:<0/1>:<rpm>`|set stirrer boost speed (speed-FANMAX rpm)|
|
||||
|`btime:<0/1>:<min>`|set boost time (0-60)|
|
||||
|`con:<0/1>`|switch catch mode on|
|
||||
|`coff:<0/1>`|switch catch mode off|
|
||||
|`ctime:<0/1>:<min>`|set catch mode interval (60-240 min)|
|
||||
|`rtime:<0/1>:<sec>`|set speed rise time (0-240 sec)|
|
||||
|`rnval:<0/1>:<rpm>`|set randon value range (0-1000 rpm)|
|
||||
|`otime:<0/1>:<hour>`|switch stirrer off after time in hours (1-99 hour, 0 deactivates switch off)|
|
||||
|
||||
All commands return a colon separated string with all current parameters:
|
||||
|
||||
|Element|Stirrer|Variable in stir.ino|Description|
|
||||
|:------|:------|:-------------------|:----------|
|
||||
| 0|0|`F[0]` |state (0=on, 1=off)|
|
||||
| 1|0|`v[0]` |speed (rpm)|
|
||||
| 2|0|`b[0]` |boost speed (rpm)|
|
||||
| 3|0|`rpm[0]` |rpm|
|
||||
| 4|0|`xpm[0]` |averaged rpm|
|
||||
| 5|0|`r[0]` |regulation value|
|
||||
| 6|0|`bstate[0]`|boost state (0=on, 1=off)|
|
||||
| 7|0|`btime[0]` |boost time (min)|
|
||||
| 8|0|`cat[0]` |fish catch mode state (0=on, 1=off)|
|
||||
| 9|0|`ctime[0]` |fish catch time interval (min)|
|
||||
|10|0|`rtime[0]` |speed rise time (sec)|
|
||||
|11|0|`otime[0]` |switch off time (hour)|
|
||||
|12|0|`rnval[0]` |random value range (rpm)|
|
||||
|13|0|`rnd[0]` |current random value (rpm)|
|
||||
|14|0| |boost remain (sec)|
|
||||
|15|0| |off timer remain (sec)|
|
||||
|16|1|`F[1]` |state (0=on, 1=off)|
|
||||
|17|1|`v[1]` |speed (rpm)|
|
||||
|18|1|`b[1]` |boost speed (rpm)|
|
||||
|19|1|`rpm[1]` |rpm|
|
||||
|20|1|`xpm[1]` |averaged rpm|
|
||||
|21|1|`r[1]` |regulation value|
|
||||
|22|1|`bstate[1]`|boost state (0=on, 1=off)|
|
||||
|23|1|`btime[1]` |boost time (min)|
|
||||
|24|1|`cat[1]` |fish catch mode state (0=on, 1=off)|
|
||||
|25|1|`ctime[1]` |fish catch time interval (min)|
|
||||
|26|1|`rtime[1]` |speed rise time (sec)|
|
||||
|27|1|`otime[1]` |switch off time (hour)|
|
||||
|28|1|`rnval[1]` |random value range (rpm)|
|
||||
|29|1|`rnd[1]` |current random value (rpm)|
|
||||
|30|1| |boost remain (sec)|
|
||||
|31|1| |off timer remain (sec)|
|
||||
|32| | |software version|
|
||||
|33| | |uptime (ms)|
|
||||
|34| | |0=ok, 1=error|
|
||||
|
||||
## Schematics
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/schematic_leonardo.png" width=500>
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/schematic_uno.png" width=500>
|
||||
</p>
|
BIN
V1 (old)/shields/nano/Gerber_Stir.Nano+StepDown.V3_.zip
Normal file
BIN
V1 (old)/shields/nano/Gerber_Stir_Arduino_Nano.zip
Normal file
15
V1 (old)/shields/nano/README.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Stir Shield
|
||||
|
||||
Stir shields for Arduino NANO from Jens Warkentin.
|
||||
|
||||
<p align="center">
|
||||
<B>Gerber_Stir.Nano+StepDown.V3_.zip<B><BR>
|
||||
<img src="https://github.com/micworg/stir/blob/master/shields/nano/images/topv3.png" width=300>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<B>Gerber_Stir_Arduino_Nano.zip<B><BR>
|
||||
<img src="https://github.com/micworg/stir/blob/master/shields/nano/images/top.png" width=300>
|
||||
</p>
|
||||
|
||||
|
BIN
V1 (old)/shields/nano/images/top.png
Normal file
After Width: | Height: | Size: 343 KiB |
BIN
V1 (old)/shields/nano/images/topv3.png
Normal file
After Width: | Height: | Size: 228 KiB |
23
V1 (old)/shields/uno/BOM.txt
Executable file
@ -0,0 +1,23 @@
|
||||
Power Input:
|
||||
|
||||
1x KF301-2P screw terminal => https://de.aliexpress.com/item/20-teile-los-KF301-2P-KF301-5-0-2P-KF301-Schraube-2Pin-5-0mm-Gerade-Pin/32867190033.html?spm=a2g0x.search0104.3.1.2c912b5fntkTJD&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=18c869a1-9cc5-4b81-88bd-10d4c096c0ee&algo_expid=18c869a1-9cc5-4b81-88bd-10d4c096c0ee-0
|
||||
|
||||
Fan:
|
||||
|
||||
2x 2,54mm KF2510 3 + 1 P Straight => https://de.aliexpress.com/item/50-teile-los-2-54mm-KF2510-3-1-P-KF2510-4AW-m-nnlich-weibliche-geh-use/32961935772.html?spm=a2g0x.search0104.3.1.5d447ae1Nki8jb&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=cbe6ff59-92a1-432d-8c5c-8c9c7732600b&algo_expid=cbe6ff59-92a1-432d-8c5c-8c9c7732600b-0
|
||||
2x 2.54mm Pin header male => https://de.aliexpress.com/item/10-st-cke-40Pin-2-54mm-Gerade-Einreihige-M-nnlichen-Pin-Header-Stecker-Streifen-PBC-DIY/32878749052.html?spm=a2g0x.search0104.3.85.48754ae7pld96U&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=6d1373ff-487b-4174-b289-f2b8f8d6dcd0&algo_expid=6d1373ff-487b-4174-b289-f2b8f8d6dcd0-12
|
||||
|
||||
Reset:
|
||||
|
||||
1x Micro pressure switch => https://de.aliexpress.com/item/100-teile-los-Mini-Micro-Momentary-Taktile-Druckschalter-6-6-5mm-4-pin-ON-OFF-tasten/32858344336.html?spm=a2g0x.search0104.3.43.3aa022bdWBlQ8n&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=2cb51b61-71a9-4cec-b3bf-494134fa318e&algo_expid=2cb51b61-71a9-4cec-b3bf-494134fa318e-6
|
||||
|
||||
Output's:
|
||||
|
||||
2x XH2.54 square male 5P => https://de.aliexpress.com/item/50PCS-Lot-XH2-54-Right-Angle-Pin-Header-Connector-2P-3P-4P-5P-6P-7P-8P/32822859426.html?spm=a2g0x.search0104.3.8.d58e3f185YK9t8&ws_ab_test=searchweb0_0,searchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134,searchweb201603_52,ppcSwitch_0&algo_expid=9f565a80-ffcb-40ff-a45a-78ad388fbc3b-1&algo_pvid=9f565a80-ffcb-40ff-a45a-78ad388fbc3b
|
||||
2x XH2.54 female 5P => https://de.aliexpress.com/item/10PCS-XH2-54-2P-3P-3P-4P-5P-6P-7P-8P-9P-10P-11P-12P-Pitch/32771742483.html?spm=a2g0x.search0104.3.304.643773f2xd0Fnr&ws_ab_test=searchweb0_0,searchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134,searchweb201603_52,ppcSwitch_0&algo_expid=ff250363-7f23-4460-b86f-a25e39925240-43&algo_pvid=ff250363-7f23-4460-b86f-a25e39925240
|
||||
|
||||
Resistors:
|
||||
|
||||
4x 10 kOhm SMD or THT Resistors =>
|
||||
https://de.aliexpress.com/item/100-st-cke-0805-5-1-8-watt-SMD-chip-widerstand-0R-10-mt-0-1R/32865947306.html?spm=a2g0x.search0104.3.2.3e337801L8ie9i&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=771d229c-6332-4f9b-86f8-d9c456937ff3&algo_expid=771d229c-6332-4f9b-86f8-d9c456937ff3-0
|
||||
https://de.aliexpress.com/item/100-st-cke-1-4-watt-Metall-Film-Widerstand-0-25-watt-1-0-2-2/32952777282.html?spm=a2g0x.search0104.3.16.5e9c112fwd3FS3&ws_ab_test=searchweb0_0%2Csearchweb201602_10_10065_10068_319_10059_10884_317_10887_10696_321_322_10084_453_10083_454_10103_10618_10307_537_536_10134%2Csearchweb201603_52%2CppcSwitch_0&algo_pvid=9573d819-3d0b-4108-9ac4-c8d4065f59a4&algo_expid=9573d819-3d0b-4108-9ac4-c8d4065f59a4-2
|
13
V1 (old)/shields/uno/README.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Stir Shield
|
||||
|
||||
Stir shield for Arduino UNO from Adrian Sigel.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/shields/uno/images/pcb_top.png" width=500>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/shields/uno/images/pcb_bottom.png" width=500>
|
||||
</p>
|
||||
|
||||
|
467
V1 (old)/shields/uno/files/EAGLE_library/stir_shield.lbr
Executable file
@ -0,0 +1,467 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE eagle SYSTEM "eagle.dtd">
|
||||
<eagle version="9.3.0">
|
||||
<drawing>
|
||||
<settings>
|
||||
<setting alwaysvectorfont="no"/>
|
||||
<setting verticaltext="up"/>
|
||||
</settings>
|
||||
<grid distance="50" unitdist="mil" unit="mm" style="lines" multiple="1" display="yes" altdistance="5" altunitdist="mil" altunit="mil"/>
|
||||
<layers>
|
||||
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
|
||||
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
|
||||
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
|
||||
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
|
||||
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
|
||||
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
|
||||
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
|
||||
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
|
||||
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
|
||||
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
|
||||
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
|
||||
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
|
||||
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
|
||||
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="88" name="SimResults" color="9" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="89" name="SimProbes" color="9" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="90" name="Modules" color="5" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="93" name="Pins" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
|
||||
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="113" name="IDFDebug" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="114" name="Badge_Outline" color="11" fill="1" visible="no" active="no"/>
|
||||
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
|
||||
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="153" name="FabDoc1" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="154" name="FabDoc2" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="155" name="FabDoc3" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
|
||||
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
|
||||
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
|
||||
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
|
||||
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
|
||||
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
|
||||
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
|
||||
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
|
||||
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="231" name="231bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
|
||||
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
|
||||
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
|
||||
</layers>
|
||||
<library>
|
||||
<packages>
|
||||
<package name="5PIN_KY-04">
|
||||
<pad name="P$2" x="2.54" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$5" x="10.16" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-1.27" x2="12.7" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-1.27" x2="12.7" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-7.62" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-7.62" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-7.62" x2="-1.27" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-2.54" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-2.54" y1="-7.62" x2="-2.54" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="-2.54" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-10.16" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="11.43" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-3.81" x2="10.16" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-3.81" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="0" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-3.81" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<text x="0.635" y="1.27" size="1.27" layer="25" rot="R90">GND</text>
|
||||
<text x="3.175" y="1.27" size="1.27" layer="25" rot="R90">VCC</text>
|
||||
<text x="-1.905" y="-12.065" size="1.27" layer="25">>NAME</text>
|
||||
<text x="5.715" y="1.27" size="1.27" layer="21" rot="R90">SW</text>
|
||||
<text x="8.255" y="1.27" size="1.27" layer="21" rot="R90">DT</text>
|
||||
<text x="10.795" y="1.27" size="1.27" layer="21" rot="R90">CLK</text>
|
||||
</package>
|
||||
<package name="4PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$2" x="2.54" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="-1.27" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="8.89" y1="3.81" x2="8.89" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="5.08" y1="-1.27" x2="0" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0" y1="-2.54" x2="0" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="5.08" y1="-1.27" x2="5.08" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="-1.27" y="-5.08" size="1.27" layer="21">>NAME</text>
|
||||
<wire x1="0" y1="-2.54" x2="5.08" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="8.89" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="0.635" y="3.81" size="1.27" layer="21" rot="R90">GND</text>
|
||||
<text x="3.175" y="3.81" size="1.27" layer="21" rot="R90">VCC</text>
|
||||
<text x="5.715" y="3.81" size="1.27" layer="21" rot="R90">SEN</text>
|
||||
<text x="8.255" y="3.81" size="1.27" layer="21" rot="R90">CON</text>
|
||||
<wire x1="-1.27" y1="3.81" x2="8.89" y2="3.81" width="0.127" layer="21"/>
|
||||
</package>
|
||||
<package name="2PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$2" x="5.08" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-3.81" x2="-2.54" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="-2.54" x2="-2.54" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.27" x2="-2.54" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.905" x2="-2.54" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.175" x2="-2.54" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.81" x2="7.62" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.81" x2="7.62" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.175" x2="7.62" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="1.905" x2="7.62" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="1.27" x2="7.62" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="-2.54" x2="7.62" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="-3.81" x2="6.35" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-3.81" x2="1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-3.81" x2="-1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="-2.54" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.175" x2="-3.175" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="-3.175" y1="3.175" x2="-3.175" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-3.175" y1="1.905" x2="-2.54" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.175" x2="6.985" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="6.985" y1="3.175" x2="6.985" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="6.985" y1="1.905" x2="7.62" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.27" x2="7.62" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="2.54" y1="0.635" x2="2.54" y2="-1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="-2.54" x2="-1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-2.54" x2="3.81" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-2.54" x2="6.35" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="6.35" y1="-2.54" x2="7.62" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="-1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-2.54" x2="1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-2.54" x2="3.81" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-3.81" x2="6.35" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="6.35" y1="-3.81" x2="6.35" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="5.08" y="-6.35" size="1.778" layer="21">+</text>
|
||||
<text x="-1.27" y="-6.35" size="1.778" layer="21">-</text>
|
||||
<text x="-5.08" y="-3.81" size="1.778" layer="21" rot="R90">>NAME</text>
|
||||
</package>
|
||||
<package name="1PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="-0.635" y1="-1.27" x2="-1.27" y2="-0.635" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="0.635" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="0.635" x2="-0.635" y2="1.27" width="0.127" layer="21"/>
|
||||
</package>
|
||||
<package name="BUTTON">
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$2" x="4.2" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$3" x="0" y="-6" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$4" x="4.2" y="-6" drill="1" diameter="1.9304" rot="R180"/>
|
||||
<wire x1="-0.5" y1="0" x2="4.7" y2="0" width="0.127" layer="21"/>
|
||||
<wire x1="4.7" y1="0" x2="4.7" y2="-6" width="0.127" layer="21"/>
|
||||
<wire x1="4.7" y1="-6" x2="-0.5" y2="-6" width="0.127" layer="21"/>
|
||||
<wire x1="-0.5" y1="-6" x2="-0.5" y2="0" width="0.127" layer="21"/>
|
||||
<circle x="2.1" y="-3" radius="2" width="0.127" layer="21"/>
|
||||
<text x="-2.21" y="-6.25" size="1.016" layer="25" rot="R90">>NAME</text>
|
||||
</package>
|
||||
<package name="5PIN_LCD">
|
||||
<pad name="P$2" x="2.54" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="1" diameter="1.9304"/>
|
||||
<pad name="P$5" x="10.16" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-1.27" x2="12.7" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-1.27" x2="12.7" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-7.62" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-7.62" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-7.62" x2="-1.27" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-2.54" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-2.54" y1="-7.62" x2="-2.54" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="-2.54" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-10.16" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="11.43" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-3.81" x2="10.16" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-3.81" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="0" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-3.81" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<text x="0.635" y="1.27" size="1.27" layer="25" rot="R90">GND</text>
|
||||
<text x="3.175" y="1.27" size="1.27" layer="25" rot="R90">VCC</text>
|
||||
<text x="-1.905" y="-12.065" size="1.27" layer="25">>NAME</text>
|
||||
<text x="5.715" y="1.27" size="1.27" layer="21" rot="R90">SDA</text>
|
||||
<text x="8.255" y="1.27" size="1.27" layer="21" rot="R90">SCL</text>
|
||||
<text x="10.795" y="1.27" size="1.27" layer="21" rot="R90">LCD</text>
|
||||
</package>
|
||||
</packages>
|
||||
<symbols>
|
||||
<symbol name="5PIN_KY-04">
|
||||
<pin name="GND" x="0" y="0" length="middle"/>
|
||||
<pin name="VCC" x="0" y="-2.54" length="middle"/>
|
||||
<pin name="SW" x="0" y="-5.08" length="middle"/>
|
||||
<pin name="DT" x="0" y="-7.62" length="middle"/>
|
||||
<pin name="CLK" x="0" y="-10.16" length="middle"/>
|
||||
<wire x1="5.08" y1="2.54" x2="17.78" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="2.54" x2="17.78" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="-12.7" x2="5.08" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-12.7" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
<text x="5.08" y="5.08" size="1.27" layer="95">>NAME</text>
|
||||
</symbol>
|
||||
<symbol name="4PIN">
|
||||
<pin name="GND" x="0" y="0" length="middle"/>
|
||||
<pin name="VCC" x="0" y="-2.54" length="middle"/>
|
||||
<pin name="SENCE" x="0" y="-5.08" length="middle"/>
|
||||
<pin name="CONTROL" x="0" y="-7.62" length="middle"/>
|
||||
<wire x1="5.08" y1="0" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="2.54" x2="17.78" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="2.54" x2="17.78" y2="-10.16" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="-10.16" x2="5.08" y2="-10.16" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-10.16" x2="5.08" y2="0" width="0.254" layer="94"/>
|
||||
<text x="5.08" y="5.08" size="1.778" layer="95">>NAME</text>
|
||||
</symbol>
|
||||
<symbol name="2PIN">
|
||||
<pin name="GND" x="0" y="0" length="middle"/>
|
||||
<pin name="VCC" x="0" y="-2.54" length="middle"/>
|
||||
<text x="0" y="5.08" size="1.778" layer="95">>NAME</text>
|
||||
<wire x1="5.08" y1="2.54" x2="12.7" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="12.7" y1="2.54" x2="12.7" y2="-5.08" width="0.254" layer="94"/>
|
||||
<wire x1="12.7" y1="-5.08" x2="5.08" y2="-5.08" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-5.08" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
</symbol>
|
||||
<symbol name="1PIN">
|
||||
<pin name="P$1" x="0" y="0" length="middle"/>
|
||||
<wire x1="5.08" y1="2.54" x2="12.7" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="12.7" y1="2.54" x2="12.7" y2="-2.54" width="0.254" layer="94"/>
|
||||
<wire x1="12.7" y1="-2.54" x2="5.08" y2="-2.54" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-2.54" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
<text x="5.08" y="5.08" size="1.778" layer="95">>NAME</text>
|
||||
</symbol>
|
||||
<symbol name="BUTTON">
|
||||
<pin name="IN1" x="0" y="0" length="middle"/>
|
||||
<pin name="OUT1" x="0" y="-2.54" length="middle"/>
|
||||
<pin name="IN2" x="0" y="-7.62" length="middle"/>
|
||||
<pin name="OUT2" x="0" y="-10.16" length="middle"/>
|
||||
<wire x1="5.08" y1="2.54" x2="15.24" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="15.24" y1="2.54" x2="15.24" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="15.24" y1="-12.7" x2="5.08" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-12.7" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
<text x="5.08" y="5.08" size="1.778" layer="95">>NAME</text>
|
||||
</symbol>
|
||||
<symbol name="5PIN_LCD">
|
||||
<pin name="GND" x="0" y="0" length="middle"/>
|
||||
<pin name="VCC" x="0" y="-2.54" length="middle"/>
|
||||
<pin name="SDA" x="0" y="-5.08" length="middle"/>
|
||||
<pin name="SCL" x="0" y="-7.62" length="middle"/>
|
||||
<pin name="LED" x="0" y="-10.16" length="middle"/>
|
||||
<wire x1="5.08" y1="2.54" x2="17.78" y2="2.54" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="2.54" x2="17.78" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="17.78" y1="-12.7" x2="5.08" y2="-12.7" width="0.254" layer="94"/>
|
||||
<wire x1="5.08" y1="-12.7" x2="5.08" y2="2.54" width="0.254" layer="94"/>
|
||||
<text x="5.08" y="5.08" size="1.27" layer="95">>NAME</text>
|
||||
</symbol>
|
||||
</symbols>
|
||||
<devicesets>
|
||||
<deviceset name="5PIN_KY-04">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="5PIN_KY-04" x="5.08" y="2.54"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="5PIN_KY-04">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="CLK" pad="P$5"/>
|
||||
<connect gate="G$1" pin="DT" pad="P$4"/>
|
||||
<connect gate="G$1" pin="GND" pad="P$1"/>
|
||||
<connect gate="G$1" pin="SW" pad="P$3"/>
|
||||
<connect gate="G$1" pin="VCC" pad="P$2"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
<deviceset name="4PIN">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="4PIN" x="10.16" y="5.08"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="4PIN">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="CONTROL" pad="P$4"/>
|
||||
<connect gate="G$1" pin="GND" pad="P$1"/>
|
||||
<connect gate="G$1" pin="SENCE" pad="P$3"/>
|
||||
<connect gate="G$1" pin="VCC" pad="P$2"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
<deviceset name="2PIN">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="2PIN" x="2.54" y="0"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="2PIN">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="GND" pad="P$1"/>
|
||||
<connect gate="G$1" pin="VCC" pad="P$2"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
<deviceset name="1PIN">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="1PIN" x="0" y="0"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="1PIN">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="P$1" pad="P$1"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
<deviceset name="BUTTON">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="BUTTON" x="0" y="0"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="BUTTON">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="IN1" pad="P$1"/>
|
||||
<connect gate="G$1" pin="IN2" pad="P$3"/>
|
||||
<connect gate="G$1" pin="OUT1" pad="P$2"/>
|
||||
<connect gate="G$1" pin="OUT2" pad="P$4"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
<deviceset name="5PIN_LCD">
|
||||
<gates>
|
||||
<gate name="G$1" symbol="5PIN_LCD" x="5.08" y="5.08"/>
|
||||
</gates>
|
||||
<devices>
|
||||
<device name="" package="5PIN_LCD">
|
||||
<connects>
|
||||
<connect gate="G$1" pin="GND" pad="P$1"/>
|
||||
<connect gate="G$1" pin="LED" pad="P$5"/>
|
||||
<connect gate="G$1" pin="SCL" pad="P$4"/>
|
||||
<connect gate="G$1" pin="SDA" pad="P$3"/>
|
||||
<connect gate="G$1" pin="VCC" pad="P$2"/>
|
||||
</connects>
|
||||
<technologies>
|
||||
<technology name=""/>
|
||||
</technologies>
|
||||
</device>
|
||||
</devices>
|
||||
</deviceset>
|
||||
</devicesets>
|
||||
</library>
|
||||
</drawing>
|
||||
</eagle>
|
334
V1 (old)/shields/uno/files/EAGLE_project/eagle.epf
Executable file
@ -0,0 +1,334 @@
|
||||
[Eagle]
|
||||
Version="09 03 00"
|
||||
Platform="Windows"
|
||||
Globals="Globals"
|
||||
Desktop="Desktop"
|
||||
|
||||
[Globals]
|
||||
AutoSaveProject=1
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:79"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:88"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:201"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:202"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:203"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:204"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:206"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:208"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:210"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:211"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:212"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:213"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:89"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:214"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:215"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:218"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:220"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:221"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:222"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:224"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:226"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:229"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:230"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:90"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:231"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:233"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:234"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:235"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:236"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:237"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:238"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:239"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:240"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:241"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:93"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:242"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:243"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:244"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:245"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:248"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:250"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:251"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:252"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:255"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:256"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:94"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:258"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:259"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:260"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:261"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:262"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:263"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:264"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:265"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:266"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:267"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:96"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:269"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:270"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:272"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:273"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:274"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:275"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:276"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:278"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:279"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:281"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:97"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:283"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:284"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:285"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:287"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:288"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:289"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:290"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:291"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:293"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:294"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:98"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:296"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:297"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:298"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:300"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:302"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:303"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:304"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:307"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:312"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:313"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:99"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:314"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:315"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:317"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:318"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:319"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:320"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:322"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:323"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:324"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:325"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:102"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:327"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:328"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:331"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:332"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:334"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:335"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:336"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:337"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:338"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:339"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:80"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:105"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:341"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:342"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:343"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:344"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:346"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:347"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:350"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:351"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:353"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:358"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:107"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:360"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:361"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:362"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:364"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:366"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:367"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:368"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:369"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:371"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:372"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:109"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:373"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:374"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:375"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:376"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:377"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:378"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:379"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:380"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:382"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:383"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:111"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:385"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:386"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:387"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:388"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:389"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:391"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:392"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:393"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:394"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:396"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:112"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:397"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:398"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:399"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:400"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:401"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:402"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:403"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:404"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:407"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:408"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:113"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:409"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:410"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:411"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:412"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:417"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:418"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:419"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:527439"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:420"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:509"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:116"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:117"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:118"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:119"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:81"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:121"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:122"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:123"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:124"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:125"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:126"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:127"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:128"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:129"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:130"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:82"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:132"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:133"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:134"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:135"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:136"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:138"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:139"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:140"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:141"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:143"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:83"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:144"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:145"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:147"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:148"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:149"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:150"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:151"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:152"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:153"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:154"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:84"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:155"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:156"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:157"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:158"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:159"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:160"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:161"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:162"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:163"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:164"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:85"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:165"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:166"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:167"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:169"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:170"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:171"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:172"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:173"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:174"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:175"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:86"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:176"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:177"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:179"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:180"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:181"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:182"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:183"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:184"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:188"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:189"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:87"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:190"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:191"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:192"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:193"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:194"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:195"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:196"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:197"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:198"
|
||||
UsedLibraryUrn="urn:adsk.eagle:library:199"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/433MHz.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/DUAL20PINCON.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/ESP8266.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/HEATSINK.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/L298N.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/MOLEX-SELF.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/RJ45FOOT.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/SparkFun-Boards.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/TINYRTC.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/c.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/iSpindel.lbr"
|
||||
UsedLibrary="C:/Users/sigel/Documents/EAGLE/libraries/stir_shield.lbr"
|
||||
|
||||
[Win_1]
|
||||
Type="Schematic Editor"
|
||||
Number=2
|
||||
File="stir-shield.sch"
|
||||
View="-11.6227 -79.9277 187.93 105.328"
|
||||
WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
|
||||
PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
|
||||
PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
|
||||
ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
|
||||
ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
|
||||
HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
|
||||
TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
|
||||
PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
|
||||
PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
|
||||
MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
|
||||
DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13"
|
||||
DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
|
||||
DimensionExtLengths=" 1.27 2.54 1 2 3 0"
|
||||
DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
|
||||
SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
|
||||
WireBend=0
|
||||
WireBendSet=31
|
||||
WireCap=1
|
||||
MiterStyle=1
|
||||
PadShape=0
|
||||
ViaShape=1
|
||||
PolygonPour=0
|
||||
PolygonRank=0
|
||||
PolygonThermals=1
|
||||
PolygonOrphans=0
|
||||
TextRatio=8
|
||||
DimensionUnit=1
|
||||
DimensionPrecision=2
|
||||
DimensionShowUnit=0
|
||||
PinDirection=3
|
||||
PinFunction=0
|
||||
PinLength=2
|
||||
PinVisible=3
|
||||
SwapLevel=0
|
||||
ArcDirection=0
|
||||
AddLevel=2
|
||||
PadsSameType=0
|
||||
Layer=91
|
||||
Views=" 1: -11.6227 -79.9277 187.93 105.328"
|
||||
Sheet="1"
|
||||
|
||||
[Win_2]
|
||||
Type="Control Panel"
|
||||
Number=0
|
||||
|
||||
[Desktop]
|
||||
Screen="3600 1080"
|
||||
Window="Win_1"
|
||||
Window="Win_2"
|
992
V1 (old)/shields/uno/files/EAGLE_project/stir-shield.brd
Executable file
@ -0,0 +1,992 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE eagle SYSTEM "eagle.dtd">
|
||||
<eagle version="9.3.0">
|
||||
<drawing>
|
||||
<settings>
|
||||
<setting alwaysvectorfont="no"/>
|
||||
<setting verticaltext="up"/>
|
||||
</settings>
|
||||
<grid distance="12.5" unitdist="mil" unit="mil" style="lines" multiple="1" display="no" altdistance="5" altunitdist="mil" altunit="mil"/>
|
||||
<layers>
|
||||
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="20" name="Dimension" color="24" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
|
||||
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
|
||||
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
|
||||
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
|
||||
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
|
||||
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
|
||||
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
|
||||
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
|
||||
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
|
||||
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
|
||||
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
|
||||
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
|
||||
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
|
||||
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
|
||||
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="59" name="tCarbon" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="60" name="bCarbon" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="88" name="SimResults" color="9" fill="1" visible="no" active="no"/>
|
||||
<layer number="89" name="SimProbes" color="9" fill="1" visible="no" active="no"/>
|
||||
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
|
||||
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
|
||||
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
|
||||
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
|
||||
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
|
||||
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
|
||||
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
|
||||
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="104" name="Name" color="16" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="108" name="tplace-old" color="10" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="109" name="ref-old" color="11" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="110" name="fp0" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="113" name="IDFDebug" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="114" name="Badge_Outline" color="11" fill="1" visible="no" active="no"/>
|
||||
<layer number="115" name="ReferenceISLANDS" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
|
||||
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="123" name="tTestmark" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="124" name="bTestmark" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="131" name="tAdjust" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="132" name="bAdjust" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="153" name="FabDoc1" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="154" name="FabDoc2" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="155" name="FabDoc3" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="202" name="202bmp" color="3" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
|
||||
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
|
||||
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
|
||||
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
|
||||
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
|
||||
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
|
||||
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
|
||||
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
|
||||
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
|
||||
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="231" name="231bmp" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
|
||||
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
|
||||
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
|
||||
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
|
||||
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
|
||||
</layers>
|
||||
<board>
|
||||
<plain>
|
||||
<wire x1="0" y1="50.83" x2="0" y2="2.5" width="0" layer="20"/>
|
||||
<wire x1="0" y1="2.5" x2="2.5" y2="0" width="0" layer="20"/>
|
||||
<wire x1="2.5" y1="0" x2="57.368" y2="-0.254" width="0" layer="20"/>
|
||||
<wire x1="57.368" y1="-0.254" x2="57.321953125" y2="2.404778125" width="0" layer="20"/>
|
||||
<wire x1="57.321953125" y1="2.404778125" x2="59.912146875" y2="5.0109375" width="0" layer="20"/>
|
||||
<wire x1="59.912146875" y1="5.0109375" x2="59.809484375" y2="37.7148375" width="0" layer="20"/>
|
||||
<wire x1="59.809484375" y1="37.7148375" x2="57.283425" y2="40.4506" width="0" layer="20"/>
|
||||
<wire x1="57.283425" y1="40.4506" x2="57.12" y2="51.74" width="0" layer="20"/>
|
||||
<wire x1="57.12" y1="51.74" x2="55.59" y2="53.33" width="0" layer="20"/>
|
||||
<wire x1="55.59" y1="53.33" x2="2.5" y2="53.33" width="0" layer="20"/>
|
||||
<wire x1="2.5" y1="53.33" x2="0" y2="50.83" width="0" layer="20"/>
|
||||
<text x="13.97" y="13.97" size="1.4224" layer="25" rot="R90">F1 Power Control</text>
|
||||
<text x="19.05" y="13.97" size="1.4224" layer="25" rot="R90">F2 Power Control</text>
|
||||
<text x="5.08" y="34.29" size="2.1844" layer="25" rot="R90">Stir Shield</text>
|
||||
<text x="57.15" y="8.89" size="1.27" layer="25" rot="R90">https://github.com/micworg/stir</text>
|
||||
</plain>
|
||||
<libraries>
|
||||
<library name="stir_shield">
|
||||
<packages>
|
||||
<package name="4PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="0.8" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$2" x="2.54" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="-1.27" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="8.89" y1="3.81" x2="8.89" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="5.08" y1="-1.27" x2="0" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0" y1="-2.54" x2="0" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="5.08" y1="-1.27" x2="5.08" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="-1.27" y="-5.08" size="1.27" layer="21">>NAME</text>
|
||||
<wire x1="0" y1="-2.54" x2="5.08" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="8.89" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="0.635" y="3.81" size="1.27" layer="21" rot="R90">GND</text>
|
||||
<text x="3.175" y="3.81" size="1.27" layer="21" rot="R90">VCC</text>
|
||||
<text x="5.715" y="3.81" size="1.27" layer="21" rot="R90">SEN</text>
|
||||
<text x="8.255" y="3.81" size="1.27" layer="21" rot="R90">CON</text>
|
||||
<wire x1="-1.27" y1="3.81" x2="8.89" y2="3.81" width="0.127" layer="21"/>
|
||||
</package>
|
||||
<package name="1PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.127" layer="21"/>
|
||||
<wire x1="-0.635" y1="-1.27" x2="-1.27" y2="-0.635" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="0.635" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="0.635" x2="-0.635" y2="1.27" width="0.127" layer="21"/>
|
||||
</package>
|
||||
<package name="2PIN">
|
||||
<pad name="P$1" x="0" y="0" drill="1" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$2" x="5.08" y="0" drill="1" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-3.81" x2="-2.54" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="-2.54" x2="-2.54" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.27" x2="-2.54" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.905" x2="-2.54" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.175" x2="-2.54" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.81" x2="7.62" y2="3.81" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.81" x2="7.62" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.175" x2="7.62" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="1.905" x2="7.62" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="1.27" x2="7.62" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="-2.54" x2="7.62" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="-3.81" x2="6.35" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-3.81" x2="1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-3.81" x2="-1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="-2.54" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="3.175" x2="-3.175" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="-3.175" y1="3.175" x2="-3.175" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-3.175" y1="1.905" x2="-2.54" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="7.62" y1="3.175" x2="6.985" y2="3.175" width="0.127" layer="21"/>
|
||||
<wire x1="6.985" y1="3.175" x2="6.985" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="6.985" y1="1.905" x2="7.62" y2="1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="1.27" x2="7.62" y2="1.27" width="0.127" layer="21"/>
|
||||
<wire x1="2.54" y1="0.635" x2="2.54" y2="-1.905" width="0.127" layer="21"/>
|
||||
<wire x1="-2.54" y1="-2.54" x2="-1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-2.54" x2="1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-2.54" x2="3.81" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-2.54" x2="6.35" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="6.35" y1="-2.54" x2="7.62" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="-1.27" y2="-2.54" width="0.127" layer="21"/>
|
||||
<wire x1="1.27" y1="-2.54" x2="1.27" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-2.54" x2="3.81" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="3.81" y1="-3.81" x2="6.35" y2="-3.81" width="0.127" layer="21"/>
|
||||
<wire x1="6.35" y1="-3.81" x2="6.35" y2="-2.54" width="0.127" layer="21"/>
|
||||
<text x="5.08" y="-6.35" size="1.778" layer="21">+</text>
|
||||
<text x="-1.27" y="-6.35" size="1.778" layer="21">-</text>
|
||||
<text x="-5.08" y="-3.81" size="1.778" layer="21" rot="R90">>NAME</text>
|
||||
</package>
|
||||
<package name="BUTTON">
|
||||
<pad name="P$1" x="0" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$2" x="4.2" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$3" x="0" y="-6" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$4" x="4.2" y="-6" drill="0.8" diameter="1.9304" rot="R180"/>
|
||||
<wire x1="-0.5" y1="0" x2="4.7" y2="0" width="0.127" layer="21"/>
|
||||
<wire x1="4.7" y1="0" x2="4.7" y2="-6" width="0.127" layer="21"/>
|
||||
<wire x1="4.7" y1="-6" x2="-0.5" y2="-6" width="0.127" layer="21"/>
|
||||
<wire x1="-0.5" y1="-6" x2="-0.5" y2="0" width="0.127" layer="21"/>
|
||||
<circle x="2.1" y="-3" radius="2" width="0.127" layer="21"/>
|
||||
<text x="-2.21" y="-6.25" size="1.016" layer="25" rot="R90">>NAME</text>
|
||||
</package>
|
||||
<package name="5PIN_KY-04">
|
||||
<pad name="P$2" x="2.54" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$1" x="0" y="0" drill="0.8" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$5" x="10.16" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-1.27" x2="12.7" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-1.27" x2="12.7" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-7.62" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-7.62" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-7.62" x2="-1.27" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-2.54" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-2.54" y1="-7.62" x2="-2.54" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="-2.54" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-10.16" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="11.43" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-3.81" x2="10.16" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-3.81" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="0" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-3.81" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<text x="0.635" y="1.27" size="1.27" layer="25" rot="R90">GND</text>
|
||||
<text x="3.175" y="1.27" size="1.27" layer="25" rot="R90">VCC</text>
|
||||
<text x="-1.905" y="-12.065" size="1.27" layer="25">>NAME</text>
|
||||
<text x="5.715" y="1.27" size="1.27" layer="21" rot="R90">SW</text>
|
||||
<text x="8.255" y="1.27" size="1.27" layer="21" rot="R90">DT</text>
|
||||
<text x="10.795" y="1.27" size="1.27" layer="21" rot="R90">CLK</text>
|
||||
</package>
|
||||
<package name="5PIN_LCD">
|
||||
<pad name="P$2" x="2.54" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$1" x="0" y="0" drill="0.8" diameter="1.9304" shape="square"/>
|
||||
<pad name="P$3" x="5.08" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$4" x="7.62" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<pad name="P$5" x="10.16" y="0" drill="0.8" diameter="1.9304"/>
|
||||
<wire x1="-2.54" y1="-1.27" x2="12.7" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-1.27" x2="12.7" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-7.62" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-7.62" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-7.62" x2="-1.27" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-2.54" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-2.54" y1="-7.62" x2="-2.54" y2="-1.27" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="-2.54" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="12.7" y1="-10.16" x2="11.43" y2="-10.16" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-10.16" x2="11.43" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-7.62" x2="11.43" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="11.43" y1="-3.81" x2="10.16" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="10.16" y1="-3.81" x2="10.16" y2="-7.62" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-7.62" x2="-1.27" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="-1.27" y1="-3.81" x2="0" y2="-3.81" width="0.2" layer="21"/>
|
||||
<wire x1="0" y1="-3.81" x2="0" y2="-7.62" width="0.2" layer="21"/>
|
||||
<text x="0.635" y="1.27" size="1.27" layer="25" rot="R90">GND</text>
|
||||
<text x="3.175" y="1.27" size="1.27" layer="25" rot="R90">VCC</text>
|
||||
<text x="-1.905" y="-12.065" size="1.27" layer="25">>NAME</text>
|
||||
<text x="5.715" y="1.27" size="1.27" layer="21" rot="R90">SDA</text>
|
||||
<text x="8.255" y="1.27" size="1.27" layer="21" rot="R90">SCL</text>
|
||||
<text x="10.795" y="1.27" size="1.27" layer="21" rot="R90">LCD</text>
|
||||
</package>
|
||||
</packages>
|
||||
</library>
|
||||
<library name="adafruit" urn="urn:adsk.eagle:library:420">
|
||||
<packages>
|
||||
<package name="0805-THM" urn="urn:adsk.eagle:footprint:6240080/1" library_version="2">
|
||||
<wire x1="5.08" y1="0" x2="4.064" y2="0" width="0.6096" layer="51"/>
|
||||
<wire x1="-5.08" y1="0" x2="-4.064" y2="0" width="0.6096" layer="51"/>
|
||||
<wire x1="-3.175" y1="0.889" x2="-2.921" y2="1.143" width="0.1524" layer="21" curve="-90"/>
|
||||
<wire x1="-3.175" y1="-0.889" x2="-2.921" y2="-1.143" width="0.1524" layer="21" curve="90"/>
|
||||
<wire x1="2.921" y1="-1.143" x2="3.175" y2="-0.889" width="0.1524" layer="21" curve="90"/>
|
||||
<wire x1="2.921" y1="1.143" x2="3.175" y2="0.889" width="0.1524" layer="21" curve="-90"/>
|
||||
<wire x1="-3.175" y1="-0.889" x2="-3.175" y2="0.889" width="0.1524" layer="21"/>
|
||||
<wire x1="-2.921" y1="1.143" x2="-2.54" y2="1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="-2.413" y1="1.016" x2="-2.54" y2="1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="-2.921" y1="-1.143" x2="-2.54" y2="-1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="-2.413" y1="-1.016" x2="-2.54" y2="-1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="2.413" y1="1.016" x2="2.54" y2="1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="2.413" y1="1.016" x2="-2.413" y2="1.016" width="0.1524" layer="21"/>
|
||||
<wire x1="2.413" y1="-1.016" x2="2.54" y2="-1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="2.413" y1="-1.016" x2="-2.413" y2="-1.016" width="0.1524" layer="21"/>
|
||||
<wire x1="2.921" y1="1.143" x2="2.54" y2="1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="2.921" y1="-1.143" x2="2.54" y2="-1.143" width="0.1524" layer="21"/>
|
||||
<wire x1="3.175" y1="-0.889" x2="3.175" y2="0.889" width="0.1524" layer="21"/>
|
||||
<wire x1="-0.41" y1="0.635" x2="0.41" y2="0.635" width="0.1524" layer="51"/>
|
||||
<wire x1="-0.41" y1="-0.635" x2="0.41" y2="-0.635" width="0.1524" layer="51"/>
|
||||
<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
|
||||
<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
|
||||
<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
|
||||
<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
|
||||
<wire x1="-4.5" y1="0" x2="-1.1" y2="0" width="0.3048" layer="1"/>
|
||||
<wire x1="1" y1="0" x2="5.1" y2="0" width="0.3048" layer="1"/>
|
||||
<pad name="1" x="-5.08" y="0" drill="0.8128" diameter="1.6764" shape="octagon"/>
|
||||
<pad name="2" x="5.08" y="0" drill="0.8128" diameter="1.6764" shape="octagon"/>
|
||||
<text x="-3.048" y="1.524" size="1.27" layer="25" ratio="10">>NAME</text>
|
||||
<text x="-3.1306" y="-2.775" size="1.27" layer="27" ratio="10">>VALUE</text>
|
||||
<rectangle x1="3.175" y1="-0.3048" x2="4.0386" y2="0.3048" layer="21"/>
|
||||
<rectangle x1="-4.0386" y1="-0.3048" x2="-3.175" y2="0.3048" layer="21"/>
|
||||
<rectangle x1="0.4064" y1="-0.6985" x2="1.0564" y2="0.7015" layer="21"/>
|
||||
<rectangle x1="-1.0668" y1="-0.6985" x2="-0.4168" y2="0.7015" layer="21"/>
|
||||
<rectangle x1="-1.6254" y1="-0.7" x2="-0.4254" y2="0.7" layer="1"/>
|
||||
<rectangle x1="0.4254" y1="-0.7" x2="1.6254" y2="0.7" layer="1"/>
|
||||
<rectangle x1="-1.7254" y1="-0.8" x2="-0.3254" y2="0.8" layer="29"/>
|
||||
<rectangle x1="0.3254" y1="-0.8" x2="1.7254" y2="0.8" layer="29"/>
|
||||
<rectangle x1="-1.6254" y1="-0.7" x2="-0.4254" y2="0.7" layer="31"/>
|
||||
<rectangle x1="0.4254" y1="-0.7" x2="1.6254" y2="0.7" layer="31"/>
|
||||
</package>
|
||||
</packages>
|
||||
<packages3d>
|
||||
<package3d name="0805-THM" urn="urn:adsk.eagle:package:6240726/1" type="box" library_version="2">
|
||||
<packageinstances>
|
||||
<packageinstance name="0805-THM"/>
|
||||
</packageinstances>
|
||||
</package3d>
|
||||
</packages3d>
|
||||
</library>
|
||||
<library name="SparkFun-Boards">
|
||||
<description><h3>SparkFun Electronics' preferred foot prints</h3>
|
||||
This library contains footprints for SparkFun breakout boards, microcontrollers (Arduino, Particle, Teensy, etc.), breadboards, non-RF modules, etc.
|
||||
<br>
|
||||
<br>
|
||||
We've spent an enormous amount of time creating and checking these footprints and parts, but it is <b> the end user's responsibility</b> to ensure correctness and suitablity for a given componet or application.
|
||||
<br>
|
||||
<br>If you enjoy using this library, please buy one of our products at <a href=" www.sparkfun.com">SparkFun.com</a>.
|
||||
<br>
|
||||
<br>
|
||||
<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
|
||||
<br>
|
||||
<br>
|
||||
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
|
||||
<packages>
|
||||
<package name="UNO_R3_SHIELD_NOLABELS" urn="urn:adsk.eagle:footprint:37254/1" locally_modified="yes">
|
||||
<description><h3>Arduino Uno-Compatible Footprint</h3>
|
||||
No holes, no ICSP connections, no silk labels.
|
||||
<p>Specifications:
|
||||
<ul><li>Pin count: 32</li>
|
||||
<li>Pin pitch: 0.1"</li>
|
||||
<li>Area:2.1x2.35"</li>
|
||||
</ul></p>
|
||||
<p>Example device(s):
|
||||
<ul><li>Arduino Uno R3 Shield</li>
|
||||
</ul></p></description>
|
||||
<wire x1="-24.13" y1="-30.48" x2="-17.17" y2="-30.48" width="0.254" layer="51"/>
|
||||
<wire x1="-17.17" y1="-30.48" x2="-4.97" y2="-30.48" width="0.254" layer="51"/>
|
||||
<wire x1="-4.97" y1="-30.48" x2="24.13" y2="-30.48" width="0.254" layer="51"/>
|
||||
<wire x1="24.13" y1="-30.48" x2="26.67" y2="-27.94" width="0.254" layer="51"/>
|
||||
<wire x1="26.67" y1="26.67" x2="24.13" y2="26.67" width="0.254" layer="51"/>
|
||||
<wire x1="24.13" y1="26.67" x2="21.59" y2="29.21" width="0.254" layer="51"/>
|
||||
<wire x1="-26.67" y1="25.4" x2="-26.67" y2="-27.94" width="0.254" layer="51"/>
|
||||
<wire x1="-26.67" y1="-27.94" x2="-24.13" y2="-30.48" width="0.254" layer="51"/>
|
||||
<wire x1="21.59" y1="29.21" x2="-11.43" y2="29.21" width="0.254" layer="51"/>
|
||||
<wire x1="-11.43" y1="29.21" x2="-13.97" y2="26.67" width="0.254" layer="51"/>
|
||||
<wire x1="-13.97" y1="26.67" x2="-25.4" y2="26.67" width="0.254" layer="51"/>
|
||||
<wire x1="-25.4" y1="26.67" x2="-26.67" y2="25.4" width="0.254" layer="51"/>
|
||||
<wire x1="26.67" y1="-27.94" x2="26.67" y2="26.67" width="0.254" layer="51"/>
|
||||
<wire x1="-25.4" y1="25.4" x2="-22.86" y2="25.4" width="0.127" layer="51"/>
|
||||
<wire x1="-22.86" y1="25.4" x2="-22.86" y2="5.08" width="0.127" layer="51"/>
|
||||
<wire x1="-22.86" y1="5.08" x2="-25.4" y2="5.08" width="0.127" layer="51"/>
|
||||
<wire x1="-25.4" y1="5.08" x2="-25.4" y2="25.4" width="0.127" layer="51"/>
|
||||
<wire x1="-25.4" y1="3.81" x2="-22.86" y2="3.81" width="0.127" layer="51"/>
|
||||
<wire x1="-22.86" y1="3.81" x2="-22.86" y2="-21.59" width="0.127" layer="51"/>
|
||||
<wire x1="-22.86" y1="-21.59" x2="-25.4" y2="-21.59" width="0.127" layer="51"/>
|
||||
<wire x1="-25.4" y1="-21.59" x2="-25.4" y2="3.81" width="0.127" layer="51"/>
|
||||
<wire x1="22.86" y1="-12.7" x2="25.4" y2="-12.7" width="0.127" layer="51"/>
|
||||
<wire x1="25.4" y1="-12.7" x2="25.4" y2="7.62" width="0.127" layer="51"/>
|
||||
<wire x1="25.4" y1="7.62" x2="22.86" y2="7.62" width="0.127" layer="51"/>
|
||||
<wire x1="25.4" y1="10.16" x2="22.86" y2="10.16" width="0.127" layer="51"/>
|
||||
<wire x1="22.86" y1="10.16" x2="22.86" y2="25.4" width="0.127" layer="51"/>
|
||||
<wire x1="22.86" y1="25.4" x2="25.4" y2="25.4" width="0.127" layer="51"/>
|
||||
<wire x1="25.4" y1="25.4" x2="25.4" y2="10.16" width="0.127" layer="51"/>
|
||||
<wire x1="22.86" y1="7.62" x2="22.86" y2="-12.7" width="0.127" layer="51"/>
|
||||
<pad name="RES" x="24.13" y="-6.35" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="3.3V" x="24.13" y="-3.81" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="5V" x="24.13" y="-1.27" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="GND@0" x="24.13" y="1.27" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="GND@1" x="24.13" y="3.81" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="VIN" x="24.13" y="6.35" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A0" x="24.13" y="11.43" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A1" x="24.13" y="13.97" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A2" x="24.13" y="16.51" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A3" x="24.13" y="19.05" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A4" x="24.13" y="21.59" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="A5" x="24.13" y="24.13" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="RX" x="-24.13" y="24.13" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="TX" x="-24.13" y="21.59" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D2" x="-24.13" y="19.05" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D3" x="-24.13" y="16.51" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D4" x="-24.13" y="13.97" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D5" x="-24.13" y="11.43" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D6" x="-24.13" y="8.89" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D7" x="-24.13" y="6.35" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D8" x="-24.13" y="2.54" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D9" x="-24.13" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D10" x="-24.13" y="-2.54" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D11" x="-24.13" y="-5.08" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D12" x="-24.13" y="-7.62" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="D13" x="-24.13" y="-10.16" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="GND@2" x="-24.13" y="-12.7" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="AREF" x="-24.13" y="-15.24" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="SDA" x="-24.13" y="-17.78" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="SCL" x="-24.13" y="-20.32" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="IOREF" x="24.13" y="-8.89" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
<pad name="NC" x="24.13" y="-11.43" drill="1.016" diameter="1.8796" rot="R90"/>
|
||||
</package>
|
||||
</packages>
|
||||
<packages3d>
|
||||
<package3d name="UNO_R3_SHIELD_NOLABELS" urn="urn:adsk.eagle:package:37324/1" locally_modified="yes" type="box">
|
||||
<description>Arduino Uno-Compatible Footprint
|
||||
No holes, no ICSP connections, no silk labels.
|
||||
Specifications:
|
||||
Pin count: 32
|
||||
Pin pitch: 0.1"
|
||||
Area:2.1x2.35"
|
||||
|
||||
Example device(s):
|
||||
Arduino Uno R3 Shield
|
||||
</description>
|
||||
<packageinstances>
|
||||
<packageinstance name="UNO_R3_SHIELD_NOLABELS"/>
|
||||
</packageinstances>
|
||||
</package3d>
|
||||
</packages3d>
|
||||
</library>
|
||||
</libraries>
|
||||
<attributes>
|
||||
</attributes>
|
||||
<variantdefs>
|
||||
</variantdefs>
|
||||
<classes>
|
||||
<class number="0" name="default" width="0.4" drill="0">
|
||||
<clearance class="0" value="0.25"/>
|
||||
</class>
|
||||
</classes>
|
||||
<designrules name="default">
|
||||
<description language="de"><b>EAGLE Design Rules</b>
|
||||
<p>
|
||||
Die Standard-Design-Rules sind so gewählt, dass sie für
|
||||
die meisten Anwendungen passen. Sollte ihre Platine
|
||||
besondere Anforderungen haben, treffen Sie die erforderlichen
|
||||
Einstellungen hier und speichern die Design Rules unter
|
||||
einem neuen Namen ab.</description>
|
||||
<description language="en"><b>EAGLE Design Rules</b>
|
||||
<p>
|
||||
The default Design Rules have been set to cover
|
||||
a wide range of applications. Your particular design
|
||||
may have different requirements, so please make the
|
||||
necessary adjustments and save your customized
|
||||
design rules under a new name.</description>
|
||||
<param name="layerSetup" value="(1*16)"/>
|
||||
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
|
||||
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
|
||||
<param name="mdWireWire" value="6mil"/>
|
||||
<param name="mdWirePad" value="6mil"/>
|
||||
<param name="mdWireVia" value="6mil"/>
|
||||
<param name="mdPadPad" value="6mil"/>
|
||||
<param name="mdPadVia" value="6mil"/>
|
||||
<param name="mdViaVia" value="6mil"/>
|
||||
<param name="mdSmdPad" value="6mil"/>
|
||||
<param name="mdSmdVia" value="6mil"/>
|
||||
<param name="mdSmdSmd" value="6mil"/>
|
||||
<param name="mdViaViaSameLayer" value="6mil"/>
|
||||
<param name="mnLayersViaInSmd" value="2"/>
|
||||
<param name="mdCopperDimension" value="40mil"/>
|
||||
<param name="mdDrill" value="6mil"/>
|
||||
<param name="mdSmdStop" value="0mil"/>
|
||||
<param name="msWidth" value="6mil"/>
|
||||
<param name="msDrill" value="0.35mm"/>
|
||||
<param name="msMicroVia" value="9.99mm"/>
|
||||
<param name="msBlindViaRatio" value="0.5"/>
|
||||
<param name="rvPadTop" value="0.25"/>
|
||||
<param name="rvPadInner" value="0.25"/>
|
||||
<param name="rvPadBottom" value="0.25"/>
|
||||
<param name="rvViaOuter" value="0.25"/>
|
||||
<param name="rvViaInner" value="0.25"/>
|
||||
<param name="rvMicroViaOuter" value="0.25"/>
|
||||
<param name="rvMicroViaInner" value="0.25"/>
|
||||
<param name="rlMinPadTop" value="10mil"/>
|
||||
<param name="rlMaxPadTop" value="20mil"/>
|
||||
<param name="rlMinPadInner" value="10mil"/>
|
||||
<param name="rlMaxPadInner" value="20mil"/>
|
||||
<param name="rlMinPadBottom" value="10mil"/>
|
||||
<param name="rlMaxPadBottom" value="20mil"/>
|
||||
<param name="rlMinViaOuter" value="8mil"/>
|
||||
<param name="rlMaxViaOuter" value="20mil"/>
|
||||
<param name="rlMinViaInner" value="8mil"/>
|
||||
<param name="rlMaxViaInner" value="20mil"/>
|
||||
<param name="rlMinMicroViaOuter" value="4mil"/>
|
||||
<param name="rlMaxMicroViaOuter" value="20mil"/>
|
||||
<param name="rlMinMicroViaInner" value="4mil"/>
|
||||
<param name="rlMaxMicroViaInner" value="20mil"/>
|
||||
<param name="psTop" value="-1"/>
|
||||
<param name="psBottom" value="-1"/>
|
||||
<param name="psFirst" value="-1"/>
|
||||
<param name="psElongationLong" value="100"/>
|
||||
<param name="psElongationOffset" value="100"/>
|
||||
<param name="mvStopFrame" value="1"/>
|
||||
<param name="mvCreamFrame" value="0"/>
|
||||
<param name="mlMinStopFrame" value="4mil"/>
|
||||
<param name="mlMaxStopFrame" value="4mil"/>
|
||||
<param name="mlMinCreamFrame" value="0mil"/>
|
||||
<param name="mlMaxCreamFrame" value="0mil"/>
|
||||
<param name="mlViaStopLimit" value="0mil"/>
|
||||
<param name="srRoundness" value="0"/>
|
||||
<param name="srMinRoundness" value="0mil"/>
|
||||
<param name="srMaxRoundness" value="0mil"/>
|
||||
<param name="slThermalIsolate" value="10mil"/>
|
||||
<param name="slThermalsForVias" value="0"/>
|
||||
<param name="dpMaxLengthDifference" value="10mm"/>
|
||||
<param name="dpGapFactor" value="2.5"/>
|
||||
<param name="checkAngle" value="0"/>
|
||||
<param name="checkFont" value="1"/>
|
||||
<param name="checkRestrict" value="1"/>
|
||||
<param name="checkStop" value="0"/>
|
||||
<param name="checkValues" value="0"/>
|
||||
<param name="checkNames" value="1"/>
|
||||
<param name="checkWireStubs" value="1"/>
|
||||
<param name="checkPolygonWidth" value="0"/>
|
||||
<param name="useDiameter" value="13"/>
|
||||
<param name="maxErrors" value="50"/>
|
||||
</designrules>
|
||||
<autorouter>
|
||||
<pass name="Default">
|
||||
<param name="RoutingGrid" value="50mil"/>
|
||||
<param name="AutoGrid" value="1"/>
|
||||
<param name="Efforts" value="2"/>
|
||||
<param name="TopRouterVariant" value="1"/>
|
||||
<param name="tpViaShape" value="round"/>
|
||||
<param name="PrefDir.1" value="a"/>
|
||||
<param name="PrefDir.2" value="0"/>
|
||||
<param name="PrefDir.3" value="0"/>
|
||||
<param name="PrefDir.4" value="0"/>
|
||||
<param name="PrefDir.5" value="0"/>
|
||||
<param name="PrefDir.6" value="0"/>
|
||||
<param name="PrefDir.7" value="0"/>
|
||||
<param name="PrefDir.8" value="0"/>
|
||||
<param name="PrefDir.9" value="0"/>
|
||||
<param name="PrefDir.10" value="0"/>
|
||||
<param name="PrefDir.11" value="0"/>
|
||||
<param name="PrefDir.12" value="0"/>
|
||||
<param name="PrefDir.13" value="0"/>
|
||||
<param name="PrefDir.14" value="0"/>
|
||||
<param name="PrefDir.15" value="0"/>
|
||||
<param name="PrefDir.16" value="a"/>
|
||||
<param name="cfVia" value="8"/>
|
||||
<param name="cfNonPref" value="5"/>
|
||||
<param name="cfChangeDir" value="2"/>
|
||||
<param name="cfOrthStep" value="2"/>
|
||||
<param name="cfDiagStep" value="3"/>
|
||||
<param name="cfExtdStep" value="0"/>
|
||||
<param name="cfBonusStep" value="1"/>
|
||||
<param name="cfMalusStep" value="1"/>
|
||||
<param name="cfPadImpact" value="4"/>
|
||||
<param name="cfSmdImpact" value="4"/>
|
||||
<param name="cfBusImpact" value="0"/>
|
||||
<param name="cfHugging" value="3"/>
|
||||
<param name="cfAvoid" value="4"/>
|
||||
<param name="cfPolygon" value="10"/>
|
||||
<param name="cfBase.1" value="0"/>
|
||||
<param name="cfBase.2" value="1"/>
|
||||
<param name="cfBase.3" value="1"/>
|
||||
<param name="cfBase.4" value="1"/>
|
||||
<param name="cfBase.5" value="1"/>
|
||||
<param name="cfBase.6" value="1"/>
|
||||
<param name="cfBase.7" value="1"/>
|
||||
<param name="cfBase.8" value="1"/>
|
||||
<param name="cfBase.9" value="1"/>
|
||||
<param name="cfBase.10" value="1"/>
|
||||
<param name="cfBase.11" value="1"/>
|
||||
<param name="cfBase.12" value="1"/>
|
||||
<param name="cfBase.13" value="1"/>
|
||||
<param name="cfBase.14" value="1"/>
|
||||
<param name="cfBase.15" value="1"/>
|
||||
<param name="cfBase.16" value="0"/>
|
||||
<param name="mnVias" value="20"/>
|
||||
<param name="mnSegments" value="9999"/>
|
||||
<param name="mnExtdSteps" value="9999"/>
|
||||
<param name="mnRipupLevel" value="10"/>
|
||||
<param name="mnRipupSteps" value="100"/>
|
||||
<param name="mnRipupTotal" value="100"/>
|
||||
</pass>
|
||||
<pass name="Follow-me" refer="Default" active="yes">
|
||||
</pass>
|
||||
<pass name="Busses" refer="Default" active="yes">
|
||||
<param name="cfNonPref" value="4"/>
|
||||
<param name="cfBusImpact" value="4"/>
|
||||
<param name="cfHugging" value="0"/>
|
||||
<param name="mnVias" value="0"/>
|
||||
</pass>
|
||||
<pass name="Route" refer="Default" active="yes">
|
||||
</pass>
|
||||
<pass name="Optimize1" refer="Default" active="yes">
|
||||
<param name="cfVia" value="99"/>
|
||||
<param name="cfExtdStep" value="10"/>
|
||||
<param name="cfHugging" value="1"/>
|
||||
<param name="mnExtdSteps" value="1"/>
|
||||
<param name="mnRipupLevel" value="0"/>
|
||||
</pass>
|
||||
<pass name="Optimize2" refer="Optimize1" active="yes">
|
||||
<param name="cfNonPref" value="0"/>
|
||||
<param name="cfChangeDir" value="6"/>
|
||||
<param name="cfExtdStep" value="0"/>
|
||||
<param name="cfBonusStep" value="2"/>
|
||||
<param name="cfMalusStep" value="2"/>
|
||||
<param name="cfPadImpact" value="2"/>
|
||||
<param name="cfSmdImpact" value="2"/>
|
||||
<param name="cfHugging" value="0"/>
|
||||
</pass>
|
||||
<pass name="Optimize3" refer="Optimize2" active="yes">
|
||||
<param name="cfChangeDir" value="8"/>
|
||||
<param name="cfPadImpact" value="0"/>
|
||||
<param name="cfSmdImpact" value="0"/>
|
||||
</pass>
|
||||
<pass name="Optimize4" refer="Optimize3" active="yes">
|
||||
<param name="cfChangeDir" value="25"/>
|
||||
</pass>
|
||||
</autorouter>
|
||||
<elements>
|
||||
<element name="FAN1" library="stir_shield" package="4PIN" value="4PIN" x="24.13" y="36.83" smashed="yes">
|
||||
<attribute name="NAME" x="22.86" y="31.75" size="1.27" layer="21"/>
|
||||
</element>
|
||||
<element name="FAN1-POW-CON" library="stir_shield" package="1PIN" value="1PIN" x="13.97" y="11.43" smashed="yes"/>
|
||||
<element name="FAN2" library="stir_shield" package="4PIN" value="4PIN" x="11.43" y="36.83" smashed="yes">
|
||||
<attribute name="NAME" x="11.43" y="31.75" size="1.27" layer="21"/>
|
||||
</element>
|
||||
<element name="FAN2_POW_CON" library="stir_shield" package="1PIN" value="1PIN" x="19.05" y="11.43" smashed="yes"/>
|
||||
<element name="R1" library="adafruit" library_urn="urn:adsk.eagle:library:420" package="0805-THM" package3d_urn="urn:adsk.eagle:package:6240726/1" value="" x="27.94" y="26.67" smashed="yes">
|
||||
<attribute name="NAME" x="24.892" y="28.194" size="1.27" layer="25" ratio="10"/>
|
||||
<attribute name="VALUE" x="24.8094" y="23.895" size="1.27" layer="27" ratio="10"/>
|
||||
</element>
|
||||
<element name="R2" library="adafruit" library_urn="urn:adsk.eagle:library:420" package="0805-THM" package3d_urn="urn:adsk.eagle:package:6240726/1" value="" x="27.94" y="21.59" smashed="yes">
|
||||
<attribute name="NAME" x="24.892" y="23.114" size="1.27" layer="25" ratio="10"/>
|
||||
<attribute name="VALUE" x="24.8094" y="18.815" size="1.27" layer="27" ratio="10"/>
|
||||
</element>
|
||||
<element name="R3" library="adafruit" library_urn="urn:adsk.eagle:library:420" package="0805-THM" package3d_urn="urn:adsk.eagle:package:6240726/1" value="" x="27.94" y="16.51" smashed="yes">
|
||||
<attribute name="NAME" x="24.892" y="18.034" size="1.27" layer="25" ratio="10"/>
|
||||
<attribute name="VALUE" x="24.8094" y="13.735" size="1.27" layer="27" ratio="10"/>
|
||||
</element>
|
||||
<element name="R4" library="adafruit" library_urn="urn:adsk.eagle:library:420" package="0805-THM" package3d_urn="urn:adsk.eagle:package:6240726/1" value="" x="27.94" y="11.43" smashed="yes">
|
||||
<attribute name="NAME" x="24.892" y="12.954" size="1.27" layer="25" ratio="10"/>
|
||||
<attribute name="VALUE" x="24.8094" y="8.655" size="1.27" layer="27" ratio="10"/>
|
||||
</element>
|
||||
<element name="U$1" library="stir_shield" package="2PIN" value="2PIN" x="6.35" y="25.4" smashed="yes" rot="R270"/>
|
||||
<element name="KY-040" library="stir_shield" package="5PIN_KY-04" value="5PIN_KY-04" x="41.91" y="34.29" smashed="yes" rot="R90">
|
||||
<attribute name="NAME" x="53.975" y="32.385" size="1.27" layer="25" rot="R90"/>
|
||||
</element>
|
||||
<element name="LCD" library="stir_shield" package="5PIN_LCD" value="5PIN_LCD" x="41.91" y="10.16" smashed="yes" rot="R90">
|
||||
<attribute name="NAME" x="53.975" y="8.255" size="1.27" layer="25" rot="R90"/>
|
||||
</element>
|
||||
<element name="B1" library="SparkFun-Boards" package="UNO_R3_SHIELD_NOLABELS" package3d_urn="urn:adsk.eagle:package:37324/1" value="ARDUINO_UNO_R3_SHIELDNOLABELS" x="30.734" y="26.416" smashed="yes" rot="R270"/>
|
||||
<element name="RESET" library="stir_shield" package="BUTTON" value="BUTTON" x="10.16" y="2.54" smashed="yes" rot="R90">
|
||||
<attribute name="NAME" x="7.62" y="6.35" size="1.016" layer="25" rot="R270"/>
|
||||
</element>
|
||||
</elements>
|
||||
<signals>
|
||||
<signal name="N$2">
|
||||
<contactref element="U$1" pad="P$2"/>
|
||||
<contactref element="FAN1" pad="P$2"/>
|
||||
<contactref element="FAN2" pad="P$2"/>
|
||||
<contactref element="B1" pad="VIN"/>
|
||||
<wire x1="13.97" y1="36.83" x2="16.51" y2="39.37" width="0.8128" layer="16"/>
|
||||
<wire x1="16.51" y1="39.37" x2="25.4" y2="39.37" width="0.8128" layer="16"/>
|
||||
<wire x1="25.4" y1="39.37" x2="26.67" y2="38.1" width="0.8128" layer="16"/>
|
||||
<wire x1="26.67" y1="38.1" x2="26.67" y2="36.83" width="0.8128" layer="16"/>
|
||||
<wire x1="6.35" y1="20.32" x2="13.97" y2="27.94" width="0.8128" layer="1"/>
|
||||
<wire x1="13.97" y1="27.94" x2="13.97" y2="36.83" width="0.8128" layer="1"/>
|
||||
<wire x1="37.084" y1="2.286" x2="30.48" y2="8.89" width="0.8128" layer="1"/>
|
||||
<wire x1="30.48" y1="8.89" x2="11.43" y2="8.89" width="0.8128" layer="1"/>
|
||||
<wire x1="11.43" y1="8.89" x2="6.35" y2="13.97" width="0.8128" layer="1"/>
|
||||
<wire x1="6.35" y1="13.97" x2="6.35" y2="20.32" width="0.8128" layer="1"/>
|
||||
</signal>
|
||||
<signal name="N$3">
|
||||
<contactref element="R1" pad="1"/>
|
||||
<contactref element="FAN1" pad="P$4"/>
|
||||
<contactref element="B1" pad="D9"/>
|
||||
<wire x1="23.075" y1="28.275" x2="23.075" y2="26.975" width="0.4" layer="16"/>
|
||||
<wire x1="31.525" y1="36.725" x2="23.075" y2="28.275" width="0.4" layer="16"/>
|
||||
<wire x1="23.075" y1="26.975" x2="22.86" y2="26.67" width="0.4" layer="16"/>
|
||||
<wire x1="31.525" y1="36.725" x2="31.75" y2="36.83" width="0.4" layer="16"/>
|
||||
<wire x1="30.875" y1="41.925" x2="30.875" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="31.85" y1="40.95" x2="30.875" y2="41.925" width="0.4" layer="16"/>
|
||||
<wire x1="31.85" y1="37.05" x2="31.85" y2="40.95" width="0.4" layer="16"/>
|
||||
<wire x1="30.875" y1="50.375" x2="30.734" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="31.85" y1="37.05" x2="31.75" y2="36.83" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$4">
|
||||
<contactref element="R2" pad="1"/>
|
||||
<contactref element="FAN2" pad="P$4"/>
|
||||
<contactref element="B1" pad="D10"/>
|
||||
<wire x1="22.75" y1="24.7" x2="22.75" y2="21.775" width="0.4" layer="1"/>
|
||||
<wire x1="19.175" y1="28.275" x2="22.75" y2="24.7" width="0.4" layer="1"/>
|
||||
<wire x1="19.175" y1="36.725" x2="19.175" y2="28.275" width="0.4" layer="1"/>
|
||||
<wire x1="22.75" y1="21.775" x2="22.86" y2="21.59" width="0.4" layer="1"/>
|
||||
<wire x1="19.175" y1="36.725" x2="19.05" y2="36.83" width="0.4" layer="1"/>
|
||||
<wire x1="27.95" y1="45.825" x2="27.95" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="19.175" y1="37.05" x2="27.95" y2="45.825" width="0.4" layer="1"/>
|
||||
<wire x1="27.95" y1="50.375" x2="28.194" y2="50.546" width="0.4" layer="1"/>
|
||||
<wire x1="19.175" y1="37.05" x2="19.05" y2="36.83" width="0.4" layer="1"/>
|
||||
</signal>
|
||||
<signal name="N$5">
|
||||
<contactref element="R3" pad="2"/>
|
||||
<contactref element="R4" pad="2"/>
|
||||
<contactref element="KY-040" pad="P$2"/>
|
||||
<contactref element="LCD" pad="P$2"/>
|
||||
<contactref element="B1" pad="5V"/>
|
||||
<wire x1="33.15" y1="16.25" x2="33.15" y2="11.7" width="0.4" layer="16"/>
|
||||
<wire x1="33.15" y1="11.7" x2="33.02" y2="11.43" width="0.4" layer="16"/>
|
||||
<wire x1="33.15" y1="16.25" x2="33.02" y2="16.51" width="0.4" layer="16"/>
|
||||
<wire x1="32.825" y1="11.375" x2="33.02" y2="11.43" width="0.4" layer="16"/>
|
||||
<wire x1="41.6" y1="12.675" x2="41.91" y2="12.7" width="0.4" layer="16"/>
|
||||
<wire x1="36.4" y1="31.525" x2="41.6" y2="36.725" width="0.4" layer="16"/>
|
||||
<wire x1="41.6" y1="36.725" x2="41.91" y2="36.83" width="0.4" layer="16"/>
|
||||
<wire x1="33.15" y1="16.575" x2="33.02" y2="16.51" width="0.4" layer="16"/>
|
||||
<wire x1="29.464" y1="2.286" x2="29.464" y2="8.014" width="0.4" layer="16"/>
|
||||
<wire x1="29.464" y1="8.014" x2="32.825" y2="11.375" width="0.4" layer="16"/>
|
||||
<wire x1="29.464" y1="2.286" x2="29.464" y2="5.969" width="0.4" layer="16"/>
|
||||
<wire x1="29.464" y1="5.969" x2="36.4" y2="12.905" width="0.4" layer="16"/>
|
||||
<wire x1="36.4" y1="12.905" x2="36.4" y2="31.525" width="0.4" layer="16"/>
|
||||
<wire x1="29.464" y1="2.286" x2="39.878" y2="12.7" width="0.4" layer="16"/>
|
||||
<wire x1="39.878" y1="12.7" x2="41.91" y2="12.7" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$6">
|
||||
<contactref element="R3" pad="1"/>
|
||||
<contactref element="FAN1" pad="P$3"/>
|
||||
<contactref element="B1" pad="D2"/>
|
||||
<wire x1="22.75" y1="16.9" x2="22.75" y2="16.575" width="0.4" layer="1"/>
|
||||
<wire x1="26" y1="20.15" x2="22.75" y2="16.9" width="0.4" layer="1"/>
|
||||
<wire x1="33.475" y1="20.15" x2="26" y2="20.15" width="0.4" layer="1"/>
|
||||
<wire x1="34.45" y1="21.125" x2="33.475" y2="20.15" width="0.4" layer="1"/>
|
||||
<wire x1="34.45" y1="31.525" x2="34.45" y2="21.125" width="0.4" layer="1"/>
|
||||
<wire x1="29.25" y1="36.725" x2="34.125" y2="31.85" width="0.4" layer="1"/>
|
||||
<wire x1="34.125" y1="31.85" x2="34.45" y2="31.525" width="0.4" layer="1"/>
|
||||
<wire x1="22.75" y1="16.575" x2="22.86" y2="16.51" width="0.4" layer="1"/>
|
||||
<wire x1="29.25" y1="36.725" x2="29.21" y2="36.83" width="0.4" layer="1"/>
|
||||
<wire x1="49.075" y1="50.375" x2="49.725" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="44.85" y1="46.15" x2="49.075" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="41.6" y1="46.15" x2="44.85" y2="46.15" width="0.4" layer="16"/>
|
||||
<wire x1="35.75" y1="40.3" x2="41.6" y2="46.15" width="0.4" layer="16"/>
|
||||
<wire x1="35.75" y1="33.475" x2="35.75" y2="40.3" width="0.4" layer="16"/>
|
||||
<wire x1="34.125" y1="31.85" x2="35.75" y2="33.475" width="0.4" layer="1"/>
|
||||
<wire x1="49.725" y1="50.375" x2="49.784" y2="50.546" width="0.4" layer="16"/>
|
||||
<via x="35.75" y="33.475" extent="1-16" drill="0.35"/>
|
||||
</signal>
|
||||
<signal name="N$7">
|
||||
<contactref element="R4" pad="1"/>
|
||||
<contactref element="FAN2" pad="P$3"/>
|
||||
<contactref element="B1" pad="D3"/>
|
||||
<wire x1="22.75" y1="14.625" x2="22.75" y2="11.7" width="0.4" layer="1"/>
|
||||
<wire x1="16.575" y1="20.8" x2="22.75" y2="14.625" width="0.4" layer="1"/>
|
||||
<wire x1="16.575" y1="36.725" x2="16.575" y2="20.8" width="0.4" layer="1"/>
|
||||
<wire x1="22.75" y1="11.7" x2="22.86" y2="11.43" width="0.4" layer="1"/>
|
||||
<wire x1="16.575" y1="36.725" x2="16.51" y2="36.83" width="0.4" layer="1"/>
|
||||
<wire x1="43.55" y1="46.8" x2="47.125" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="41.275" y1="46.8" x2="43.55" y2="46.8" width="0.4" layer="16"/>
|
||||
<wire x1="34.775" y1="40.3" x2="41.275" y2="46.8" width="0.4" layer="16"/>
|
||||
<wire x1="34.775" y1="28.925" x2="34.775" y2="40.3" width="0.4" layer="16"/>
|
||||
<wire x1="35.75" y1="27.95" x2="34.775" y2="28.925" width="0.4" layer="16"/>
|
||||
<wire x1="35.75" y1="21.45" x2="35.75" y2="27.95" width="0.4" layer="16"/>
|
||||
<wire x1="26" y1="11.7" x2="35.75" y2="21.45" width="0.4" layer="16"/>
|
||||
<wire x1="23.075" y1="11.7" x2="26" y2="11.7" width="0.4" layer="16"/>
|
||||
<wire x1="47.125" y1="50.375" x2="47.244" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="23.075" y1="11.7" x2="22.86" y2="11.43" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$9">
|
||||
<contactref element="FAN2_POW_CON" pad="P$1"/>
|
||||
<contactref element="B1" pad="D7"/>
|
||||
<wire x1="37.05" y1="43.55" x2="37.05" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="34.125" y1="40.625" x2="37.05" y2="43.55" width="0.4" layer="16"/>
|
||||
<wire x1="34.125" y1="28.6" x2="34.125" y2="40.625" width="0.4" layer="16"/>
|
||||
<wire x1="35.1" y1="27.625" x2="34.125" y2="28.6" width="0.4" layer="16"/>
|
||||
<wire x1="35.1" y1="21.775" x2="35.1" y2="27.625" width="0.4" layer="16"/>
|
||||
<wire x1="26.325" y1="13" x2="35.1" y2="21.775" width="0.4" layer="16"/>
|
||||
<wire x1="20.475" y1="13" x2="26.325" y2="13" width="0.4" layer="16"/>
|
||||
<wire x1="19.175" y1="11.7" x2="20.475" y2="13" width="0.4" layer="16"/>
|
||||
<wire x1="37.05" y1="50.375" x2="37.084" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="19.175" y1="11.7" x2="19.05" y2="11.43" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="RESET">
|
||||
<contactref element="B1" pad="RES"/>
|
||||
<contactref element="RESET" pad="P$1"/>
|
||||
<wire x1="10.16" y1="2.54" x2="10.795" y2="2.54" width="0.4" layer="16"/>
|
||||
<wire x1="10.795" y1="2.54" x2="12.7" y2="4.445" width="0.4" layer="16"/>
|
||||
<wire x1="12.7" y1="4.445" x2="22.225" y2="4.445" width="0.4" layer="16"/>
|
||||
<wire x1="22.225" y1="4.445" x2="24.384" y2="2.286" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$18">
|
||||
<contactref element="KY-040" pad="P$1"/>
|
||||
<contactref element="B1" pad="GND@0"/>
|
||||
<contactref element="FAN1" pad="P$1"/>
|
||||
<contactref element="U$1" pad="P$1"/>
|
||||
<contactref element="FAN2" pad="P$1"/>
|
||||
<contactref element="R1" pad="2"/>
|
||||
<contactref element="R2" pad="2"/>
|
||||
<contactref element="LCD" pad="P$1"/>
|
||||
<wire x1="41.6" y1="10.075" x2="41.91" y2="10.16" width="0.4" layer="16"/>
|
||||
<wire x1="41.925" y1="22.425" x2="41.925" y2="34.125" width="0.4" layer="1"/>
|
||||
<wire x1="43.55" y1="20.8" x2="41.925" y2="22.425" width="0.4" layer="1"/>
|
||||
<wire x1="43.55" y1="12.025" x2="43.55" y2="20.8" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="10.4" x2="43.55" y2="12.025" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="34.125" x2="41.91" y2="34.29" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="10.4" x2="41.91" y2="10.16" width="0.4" layer="1"/>
|
||||
<wire x1="6.5" y1="31.85" x2="6.5" y2="25.675" width="0.4" layer="1"/>
|
||||
<wire x1="11.375" y1="36.725" x2="6.5" y2="31.85" width="0.4" layer="1"/>
|
||||
<wire x1="6.5" y1="25.675" x2="6.35" y2="25.4" width="0.4" layer="1"/>
|
||||
<wire x1="11.375" y1="36.725" x2="11.43" y2="36.83" width="0.4" layer="1"/>
|
||||
<wire x1="24.7" y1="26.65" x2="32.825" y2="26.65" width="0.4" layer="16"/>
|
||||
<wire x1="23.4" y1="25.35" x2="24.7" y2="26.65" width="0.4" layer="16"/>
|
||||
<wire x1="22.1" y1="25.35" x2="23.4" y2="25.35" width="0.4" layer="16"/>
|
||||
<wire x1="21.45" y1="26" x2="22.1" y2="25.35" width="0.4" layer="16"/>
|
||||
<wire x1="21.45" y1="34.125" x2="21.45" y2="26" width="0.4" layer="16"/>
|
||||
<wire x1="24.05" y1="36.725" x2="21.45" y2="34.125" width="0.4" layer="16"/>
|
||||
<wire x1="32.825" y1="26.65" x2="33.02" y2="26.67" width="0.4" layer="16"/>
|
||||
<wire x1="24.05" y1="36.725" x2="24.13" y2="36.83" width="0.4" layer="16"/>
|
||||
<wire x1="14.3" y1="34.125" x2="11.7" y2="36.725" width="0.4" layer="16"/>
|
||||
<wire x1="21.45" y1="34.125" x2="14.3" y2="34.125" width="0.4" layer="16"/>
|
||||
<wire x1="11.7" y1="36.725" x2="11.43" y2="36.83" width="0.4" layer="16"/>
|
||||
<wire x1="30.875" y1="21.45" x2="32.825" y2="21.45" width="0.4" layer="16"/>
|
||||
<wire x1="23.075" y1="13.65" x2="23.1275" y2="13.7025" width="0.4" layer="16"/>
|
||||
<wire x1="23.1275" y1="13.7025" x2="30.875" y2="21.45" width="0.4" layer="16"/>
|
||||
<wire x1="32.825" y1="21.45" x2="33.02" y2="21.59" width="0.4" layer="16"/>
|
||||
<contactref element="RESET" pad="P$2"/>
|
||||
<wire x1="32.004" y1="2.286" x2="39.793" y2="10.075" width="0.4" layer="16"/>
|
||||
<wire x1="39.793" y1="10.075" x2="41.6" y2="10.075" width="0.4" layer="16"/>
|
||||
<wire x1="10.16" y1="6.74" x2="12.455" y2="4.445" width="0.4" layer="1"/>
|
||||
<wire x1="12.455" y1="4.445" x2="29.845" y2="4.445" width="0.4" layer="1"/>
|
||||
<wire x1="29.845" y1="4.445" x2="32.004" y2="2.286" width="0.4" layer="1"/>
|
||||
<wire x1="6.35" y1="25.4" x2="4.445" y2="23.495" width="0.4" layer="16"/>
|
||||
<wire x1="4.445" y1="12.455" x2="10.16" y2="6.74" width="0.4" layer="16"/>
|
||||
<wire x1="4.445" y1="23.495" x2="4.445" y2="12.455" width="0.4" layer="16"/>
|
||||
<wire x1="10.16" y1="6.74" x2="12.31" y2="8.89" width="0.4" layer="16"/>
|
||||
<wire x1="14.5086" y1="8.89" x2="12.31" y2="8.89" width="0.4" layer="16"/>
|
||||
<wire x1="23.1275" y1="13.7025" x2="23.07174375" y2="13.7025" width="0.4" layer="16"/>
|
||||
<wire x1="23.07174375" y1="13.7025" x2="23.01924375" y2="13.65" width="0.4" layer="16"/>
|
||||
<wire x1="23.01924375" y1="13.65" x2="19.2686" y2="13.65" width="0.4" layer="16"/>
|
||||
<wire x1="19.2686" y1="13.65" x2="14.5086" y2="8.89" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$1">
|
||||
<contactref element="B1" pad="D8"/>
|
||||
<contactref element="FAN1-POW-CON" pad="P$1"/>
|
||||
<wire x1="33.475" y1="28.275" x2="33.475" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="34.45" y1="27.3" x2="33.475" y2="28.275" width="0.4" layer="16"/>
|
||||
<wire x1="34.45" y1="26" x2="34.45" y2="27.3" width="0.4" layer="16"/>
|
||||
<wire x1="22.75" y1="14.3" x2="34.45" y2="26" width="0.4" layer="16"/>
|
||||
<wire x1="16.575" y1="14.3" x2="22.75" y2="14.3" width="0.4" layer="16"/>
|
||||
<wire x1="13.975" y1="11.7" x2="16.575" y2="14.3" width="0.4" layer="16"/>
|
||||
<wire x1="33.475" y1="50.375" x2="33.274" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="13.975" y1="11.7" x2="13.97" y2="11.43" width="0.4" layer="16"/>
|
||||
</signal>
|
||||
<signal name="N$8">
|
||||
<contactref element="LCD" pad="P$5"/>
|
||||
<contactref element="B1" pad="D11"/>
|
||||
<wire x1="26.325" y1="50.7" x2="25.675" y2="50.7" width="0.4" layer="1"/>
|
||||
<wire x1="27.625" y1="52" x2="26.325" y2="50.7" width="0.4" layer="1"/>
|
||||
<wire x1="27.625" y1="52" x2="33.8" y2="52" width="0.4" layer="1"/>
|
||||
<wire x1="33.8" y1="52" x2="35.425" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="35.425" y1="37.375" x2="35.425" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="41.275" y1="31.525" x2="35.425" y2="37.375" width="0.4" layer="1"/>
|
||||
<wire x1="41.275" y1="20.8" x2="41.275" y2="31.525" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="20.475" x2="41.275" y2="20.8" width="0.4" layer="1"/>
|
||||
<wire x1="25.675" y1="50.7" x2="25.654" y2="50.546" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="20.475" x2="41.91" y2="20.32" width="0.4" layer="1"/>
|
||||
</signal>
|
||||
<signal name="N$10">
|
||||
<contactref element="LCD" pad="P$4"/>
|
||||
<contactref element="B1" pad="SCL"/>
|
||||
<wire x1="10.725" y1="50.375" x2="20.8" y2="40.3" width="0.4" layer="16"/>
|
||||
<wire x1="20.8" y1="40.3" x2="30.55" y2="40.3" width="0.4" layer="16"/>
|
||||
<wire x1="32.5" y1="39" x2="30.875" y2="40.625" width="0.4" layer="1"/>
|
||||
<wire x1="32.825" y1="39" x2="32.5" y2="39" width="0.4" layer="1"/>
|
||||
<wire x1="40.3" y1="31.525" x2="32.825" y2="39" width="0.4" layer="1"/>
|
||||
<wire x1="40.3" y1="19.175" x2="40.3" y2="31.525" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="17.875" x2="40.3" y2="19.175" width="0.4" layer="1"/>
|
||||
<wire x1="10.725" y1="50.375" x2="10.414" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="41.6" y1="17.875" x2="41.91" y2="17.78" width="0.4" layer="1"/>
|
||||
<via x="30.875" y="40.625" extent="1-16" drill="0.35"/>
|
||||
<wire x1="30.875" y1="40.625" x2="30.55" y2="40.3" width="0" layer="19" extent="16-16"/>
|
||||
</signal>
|
||||
<signal name="N$11">
|
||||
<contactref element="LCD" pad="P$3"/>
|
||||
<contactref element="B1" pad="SDA"/>
|
||||
<wire x1="13.65" y1="50.375" x2="13" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="22.75" y1="41.275" x2="13.65" y2="50.375" width="0.4" layer="16"/>
|
||||
<wire x1="28.925" y1="41.275" x2="22.75" y2="41.275" width="0.4" layer="16"/>
|
||||
<wire x1="31.85" y1="38.35" x2="28.925" y2="41.275" width="0.4" layer="1"/>
|
||||
<wire x1="32.5" y1="38.35" x2="31.85" y2="38.35" width="0.4" layer="1"/>
|
||||
<wire x1="39.65" y1="31.2" x2="32.5" y2="38.35" width="0.4" layer="1"/>
|
||||
<wire x1="39.65" y1="17.225" x2="39.65" y2="31.2" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="15.275" x2="39.65" y2="17.225" width="0.4" layer="1"/>
|
||||
<wire x1="13" y1="50.375" x2="12.954" y2="50.546" width="0.4" layer="16"/>
|
||||
<wire x1="41.6" y1="15.275" x2="41.91" y2="15.24" width="0.4" layer="1"/>
|
||||
<via x="28.925" y="41.275" extent="1-16" drill="0.35"/>
|
||||
</signal>
|
||||
<signal name="N$12">
|
||||
<contactref element="KY-040" pad="P$3"/>
|
||||
<contactref element="B1" pad="D4"/>
|
||||
<wire x1="44.525" y1="42.25" x2="44.525" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="39.65" x2="44.525" y2="42.25" width="0.4" layer="1"/>
|
||||
<wire x1="44.525" y1="50.375" x2="44.704" y2="50.546" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="39.65" x2="41.91" y2="39.37" width="0.4" layer="1"/>
|
||||
</signal>
|
||||
<signal name="N$13">
|
||||
<contactref element="KY-040" pad="P$4"/>
|
||||
<contactref element="B1" pad="D6"/>
|
||||
<wire x1="39.65" y1="43.875" x2="39.65" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="41.925" x2="39.65" y2="43.875" width="0.4" layer="1"/>
|
||||
<wire x1="39.65" y1="50.375" x2="39.624" y2="50.546" width="0.4" layer="1"/>
|
||||
<wire x1="41.6" y1="41.925" x2="41.91" y2="41.91" width="0.4" layer="1"/>
|
||||
</signal>
|
||||
<signal name="N$14">
|
||||
<contactref element="KY-040" pad="P$5"/>
|
||||
<contactref element="B1" pad="D5"/>
|
||||
<wire x1="41.925" y1="44.525" x2="41.925" y2="50.375" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="50.375" x2="42.164" y2="50.546" width="0.4" layer="1"/>
|
||||
<wire x1="41.925" y1="44.525" x2="41.91" y2="44.45" width="0.4" layer="1"/>
|
||||
</signal>
|
||||
</signals>
|
||||
<mfgpreviewcolors>
|
||||
<mfgpreviewcolor name="soldermaskcolor" color="0xC8008000"/>
|
||||
<mfgpreviewcolor name="silkscreencolor" color="0xFFFEFEFE"/>
|
||||
<mfgpreviewcolor name="backgroundcolor" color="0xFF282828"/>
|
||||
<mfgpreviewcolor name="coppercolor" color="0xFFFFBF00"/>
|
||||
<mfgpreviewcolor name="substratecolor" color="0xFF786E46"/>
|
||||
</mfgpreviewcolors>
|
||||
</board>
|
||||
</drawing>
|
||||
<compatibility>
|
||||
<note version="8.2" severity="warning">
|
||||
Since Version 8.2, EAGLE supports online libraries. The ids
|
||||
of those online libraries will not be understood (or retained)
|
||||
with this version.
|
||||
</note>
|
||||
<note version="8.3" severity="warning">
|
||||
Since Version 8.3, EAGLE supports URNs for individual library
|
||||
assets (packages, symbols, and devices). The URNs of those assets
|
||||
will not be understood (or retained) with this version.
|
||||
</note>
|
||||
<note version="8.3" severity="warning">
|
||||
Since Version 8.3, EAGLE supports the association of 3D packages
|
||||
with devices in libraries, schematics, and board files. Those 3D
|
||||
packages will not be understood (or retained) with this version.
|
||||
</note>
|
||||
</compatibility>
|
||||
</eagle>
|
1624
V1 (old)/shields/uno/files/EAGLE_project/stir-shield.sch
Executable file
BIN
V1 (old)/shields/uno/files/gerber_file/V1 Stir Shield.zip
Executable file
BIN
V1 (old)/shields/uno/files/gerber_file/V1.1 Stir Shield.zip
Normal file
BIN
V1 (old)/shields/uno/images/pcb_bottom.png
Executable file
After Width: | Height: | Size: 51 KiB |
BIN
V1 (old)/shields/uno/images/pcb_top.png
Executable file
After Width: | Height: | Size: 64 KiB |
441
V1 (old)/stir.ino
Normal file
@ -0,0 +1,441 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////// Stir Control (mwx'2019)
|
||||
#include <EEPROM.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
|
||||
#define MS (long)millis()
|
||||
|
||||
#define SX Serial.print
|
||||
#define SXN Serial.println
|
||||
|
||||
String VERSION = "1.7.3";
|
||||
|
||||
int SPEEDINC = 50; // speed increment (rpm)
|
||||
|
||||
int FANMIN = 200; // fan minimum speed (should be a value at which the fan runs safely) (rpm)
|
||||
int FANMAX = 1600; // fan maximum speed (should be the real maximum value of the fan) (rpm)
|
||||
|
||||
int BOFF = 0; // if set boost off will also turn the normal mode off
|
||||
|
||||
int BINC = 1; // BTIME increment (min)
|
||||
int CINC = 10; // CTIME increment (min)
|
||||
int RINC = 10; // RTIME increment (sec)
|
||||
int OINC = 3; // OTIME increment (hour)
|
||||
|
||||
long CATCHSTOP = 20000; // fish catch stop period (ms)
|
||||
|
||||
int PWM0 = 9; // PWM pin for 1. fan
|
||||
int PWM1 = 10; // PWM pin for 2. fan
|
||||
int PWM2 = 11; // PWM pin for LCD brightness
|
||||
|
||||
int I0 = 2; // interrupt for fan 0 rpm signal (use 2 for Leonardo/ProMicro and 0 for Uno)
|
||||
int I1 = 3; // interrupt for fan 1 rpm signal (use 3 for Leonardo/ProMicro and 1 for Uno)
|
||||
|
||||
int CLK = 5; // clk on KY-040 encoder
|
||||
int DT = 6; // dt on KY-040 encoder
|
||||
int SW = 4; // sw on KY-040 encoder
|
||||
|
||||
int OFF0 = 7; // off state pin 1. fan
|
||||
int OFF1 = 8; // off state pin 2. fan
|
||||
int OFFSTATE = LOW; // off state (LOW/HIGH)
|
||||
|
||||
long RINTERVAL = 5000; // regulation internval (ms)
|
||||
long RDELAY = 3000; // regulation delay on changes (ms)
|
||||
int RTOL = 8; // regulation tolerance (rpm)
|
||||
|
||||
long RNDINTERVAL = 300000; // randon value range change interval (ms)
|
||||
|
||||
long SINTERVAL = 2000; // speed measurement internval (ms)
|
||||
int SAVERAGE = 4; // speed measurement average
|
||||
|
||||
int SAVETAG = 1014; // save tag
|
||||
long SAVEDELAY = 10000; // EEPROM save delay (ms)
|
||||
|
||||
byte LCDB[] = {4,8,16,24,32,64,96,128,192,255}; // LCD brightness steps (10 values, 0=off, 255=max)
|
||||
|
||||
byte aright[] = {0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00}; // LCD character
|
||||
byte aup[] = {0x04,0x0E,0x1F,0x00,0x00,0x00,0x00,0x00};
|
||||
byte arnd[] = {0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00};
|
||||
|
||||
LiquidCrystal_I2C lcd(0x27,16,2); // LCD display (connect to SDA/SCL)
|
||||
|
||||
int v[2],b[2],r[2]={0};double q,rpm[2]={0},xpm[2]={0},xb[2]={0},xv[2]={0},rtime[2]; // speed and regulation
|
||||
long ac[2]={0},bc[2]={0}; // interrupt rpm counter
|
||||
long xts,sts,rts,swts,buts,savets,catts[2],stop[2],bts[2],vts[2],ots[2],rndts[2]; // timing
|
||||
int bdelay,bprocess=0,enclast,encval,M=2,S=0; // button/encoder processing
|
||||
int F[2],bstate[2]={0},btime[2],cat[2],ctime[2],cstate[2]={0},bclr=0,SAVE=0,LOCK=0; // operating states
|
||||
int ostate[2]={0},otime[2]={0}; // off timer
|
||||
int brght; // LCD brightness
|
||||
int rnd[2]={0},rnval[2]={0};long seed; // random speed
|
||||
char form[8],out[20];String cmd[8];int icmd[8]; // string buffer
|
||||
|
||||
|
||||
void setup() { ////////////////////////////////////////////////////////////////////////////////////////// SETUP
|
||||
Serial.begin(9600); // start serial
|
||||
|
||||
lcd.init();lcd.clear();lcd.backlight(); // initialize lcd
|
||||
lcd.createChar(0,aright);lcd.createChar(1,aup);lcd.createChar(2,arnd); // load lcd characters
|
||||
pinMode(PWM0,OUTPUT);pinMode(PWM1,OUTPUT);pinMode(PWM2,OUTPUT); // setup PWM pins
|
||||
pinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW,INPUT); // setup KY-040 pins
|
||||
digitalWrite(CLK,true);digitalWrite(DT,true);digitalWrite(SW,true); // turn ON pullup resistors
|
||||
pinMode(OFF0,OUTPUT);pinMode(OFF1,OUTPUT); // setup off state pins
|
||||
|
||||
attachInterrupt(I0,rpmint0,FALLING); // setup interrupts vor rpm in
|
||||
attachInterrupt(I1,rpmint1,FALLING);
|
||||
|
||||
TCCR1A=0;TCCR1B=0;TCNT1=0; // setup timer for 25 kHz PWM
|
||||
TCCR1A=_BV(COM1A1)|_BV(COM1B1)|_BV(WGM11);TCCR1B=_BV(WGM13)|_BV(CS10);ICR1=320;
|
||||
|
||||
SAVE=0; // load/initialize settings
|
||||
if (eer(0)!=SAVETAG) {
|
||||
for (int i=0;i<2;i++) {;v[i]=300;b[i]=700;btime[i]=30;cat[i]=0;ctime[i]=120;rtime[i]=60;F[i]=0;rnval[i]=0;}
|
||||
brght=5;seed=0;
|
||||
eew(0,SAVETAG);save();
|
||||
} else {
|
||||
for (int i=0;i<2;i++) {
|
||||
v[i]=eer(1+i);b[i]=eer(3+i);btime[i]=eer(5+i);cat[i]=eer(7+i);
|
||||
ctime[i]=eer(9+i);F[i]=eer(11+i);rtime[i]=eer(13+i);rnval[i]=eer(15+i);
|
||||
}
|
||||
seed=eer(100)+1;eew(100,seed);randomSeed(seed);
|
||||
brght=eer(101);
|
||||
}
|
||||
|
||||
lset();
|
||||
|
||||
enclast=digitalRead(CLK); // get encoder state
|
||||
|
||||
for (int i=0;i<2;i++) catts[i]=stop[i]=vts[i]=ots[i]=rndts[i]=MS;xts=sts=rts=swts=buts=savets=MS; // timer
|
||||
updatePWM();updatelcd();updatespeed();updatemarker(); // update all
|
||||
|
||||
slcd(0,0,5,VERSION); // show version
|
||||
}
|
||||
|
||||
|
||||
void loop() { //////////////////////////////////////////////////////////////////////////////////////////// LOOP
|
||||
|
||||
if (Serial.available() > 0) { ////////////////////////////////////////////////////////// serial communication
|
||||
int n=cutcmd(Serial.readString());
|
||||
int err=1;
|
||||
int i=cut(icmd[1],0,1);
|
||||
if (cmd[0]=="info" && n==1) {;err=0;}
|
||||
if (cmd[0]=="version" && n==1) {;SXN(VERSION);return;}
|
||||
if (cmd[0]=="save" && n==1) {;save();}
|
||||
if (cmd[0]=="speed" && n==3) {;v[i]=cut(icmd[2],FANMIN,FANMAX);err=0;}
|
||||
if (cmd[0]=="bspeed" && n==3) {;b[i]=cut(icmd[2],FANMIN,FANMAX);err=0;}
|
||||
if (cmd[0]=="btime" && n==3) {;btime[i]=cut(icmd[2],0,60);err=0;}
|
||||
if (cmd[0]=="ctime" && n==3) {;ctime[i]=cut(icmd[2],60,240);err=0;}
|
||||
if (cmd[0]=="rtime" && n==3) {;rtime[i]=cut(icmd[2],0,240);err=0;}
|
||||
if (cmd[0]=="rnval" && n==3) {;rnval[i]=cut(icmd[2],0,1000);err=0;}
|
||||
if (cmd[0]=="on" && n==2) {;fset(i,1);err=0;}
|
||||
if (cmd[0]=="off" && n==2) {;fset(i,0);err=0;}
|
||||
if (cmd[0]=="bon" && n==2) {;bset(i,1);err=0;}
|
||||
if (cmd[0]=="boff" && n==2) {;bset(i,0);err=0;}
|
||||
if (cmd[0]=="con" && n==2) {;cat[i]=1;catts[i]=MS;err=0;}
|
||||
if (cmd[0]=="coff" && n==2) {;cat[i]=0;catts[i]=MS;err=0;}
|
||||
if (cmd[0]=="otime" && n==3) {;oset(i,icmd[2]);err=0;}
|
||||
|
||||
updatelcd();
|
||||
for (int i=0;i<2;i++) {
|
||||
SX(F[i]);SX(":"); // 0, 16
|
||||
SX((int)(v[i]));SX(":"); // 1, 17
|
||||
SX((int)(b[i]));SX(":"); // 2, 18
|
||||
SX(rpm[i]);SX(":"); // 3, 19
|
||||
SX(xpm[i]);SX(":"); // 4, 20
|
||||
SX(r[i]);SX(":"); // 5, 21
|
||||
SX(bstate[i]);SX(":"); // 6, 22
|
||||
SX(btime[i]);SX(":"); // 7, 23
|
||||
SX(cat[i]);SX(":"); // 8, 24
|
||||
SX(ctime[i]);SX(":"); // 9, 25
|
||||
SX(rtime[i]);SX(":"); // 10, 26
|
||||
SX(otime[i]);SX(":"); // 11, 27
|
||||
SX(rnval[i]);SX(":"); // 12, 28
|
||||
SX(rnd[i]);SX(":"); // 13, 29
|
||||
if (bstate[i]) SX((((long)btime[i]*60000)-(MS-(long)bts[i]))/1000+1); else SX(0);SX(":"); // 14, 30
|
||||
if (ostate[i]) SX((((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000+1); else SX(0);SX(":"); // 15, 31
|
||||
}
|
||||
SX(VERSION);SX(":"); // 32
|
||||
SX(MS);SX(":"); // 33
|
||||
SXN(err); // 34
|
||||
save();
|
||||
}
|
||||
|
||||
if (SAVE>0 && MS-savets>SAVEDELAY) {;save();SAVE=0;savets=MS;} ////////////////////// save settings if needed
|
||||
if (MS-savets>SAVEDELAY/5) bclr=1;
|
||||
|
||||
for (int i=0;i<2;i++) {
|
||||
|
||||
if (MS-rndts[i]>RNDINTERVAL) { /////////////////////////////////////////////////////////////// random timer
|
||||
rnd[i]=int(random(0,rnval[i]+1)/10)*10;rndts[i]=MS;updatelcd();
|
||||
}
|
||||
|
||||
if (ostate[i] && MS-ots[i]>(long)otime[i]*3600000) { ////////////////////////////////////// check off timer
|
||||
otime[i]=0;ostate[i]=0;fset(i,0);
|
||||
}
|
||||
|
||||
if (cat[i] && MS-catts[i]>(long)ctime[i]*60000 && F[i]==1) { //////////////////////////// initiate cat fish
|
||||
catts[i]=MS;cstate[i]=1;F[i]=0;stop[i]=MS;updatePWM();updatespeed();
|
||||
}
|
||||
|
||||
if (cstate[i] && MS-stop[i]>CATCHSTOP && F[i]==0) { ////////////////////////// stop cat fish and start over
|
||||
cstate[i]=0;F[i]=1;vts[i]=MS;rts=MS+2000;updatePWM();updatespeed();
|
||||
}
|
||||
|
||||
if (bstate[i] && MS-bts[i]>(long)btime[i]*60000) {;bstate[i]=0;S=0;updatelcd();} //////// check boost state
|
||||
|
||||
}
|
||||
|
||||
if (MS-xts>SINTERVAL) { /////////////////////////////////////////////////////////////////// speed measurement
|
||||
for (int i=0;i<2;i++) xpm[i]=xpm[i]*(SAVERAGE-1)/SAVERAGE+(bc[i]/((MS-xts)/1000.0)*30.0)/SAVERAGE;
|
||||
updatespeed();xts=MS;bc[0]=0;bc[1]=0;
|
||||
}
|
||||
|
||||
if (MS-rts>RINTERVAL) { //////////////////////////////////////////////////////////////////// speed regulation
|
||||
for (int i=0;i<2;i++) {
|
||||
rpm[i]=ac[i]/((MS-sts)/1000.0)*30.0;
|
||||
ac[i]=0;
|
||||
calcramp(i);
|
||||
if (!F[i]) {;r[i]=0;setPWM(i,0);}
|
||||
else {
|
||||
q=(bstate[i]?xb[i]:xv[i])-rpm[i];
|
||||
if (abs(q)>RTOL) r[i]=q<0?r[i]-1-abs(q)/10:r[i]+1+abs(q)/10;
|
||||
setPWM(i,cut((bstate[i]?xb[i]:xv[i])/(FANMAX/320.0)+r[i],0,320));
|
||||
}
|
||||
}
|
||||
|
||||
sts=MS;rts=MS;
|
||||
updatespeed();
|
||||
}
|
||||
|
||||
bdelay=0; //////////////////////////////////////////////////////////////////////////////////// process switch
|
||||
if (!bprocess) {
|
||||
while (!digitalRead(SW)){
|
||||
bdelay++;delay(15);bprocess=1;if (bdelay>20) break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bdelay>0 && MS-buts>100) { // long button press
|
||||
if (bdelay>20) {
|
||||
|
||||
if (M==2) { // lock/unlock
|
||||
if (LOCK==0) LOCK=1;
|
||||
else LOCK=0;
|
||||
updatemarker();
|
||||
} else {
|
||||
if (S==0 && !LOCK) { // fan on/off
|
||||
if (F[M]==0) fset(M,1); else fset(M,0);
|
||||
}
|
||||
if (S==1 && !LOCK) { // boost on/off
|
||||
if (bstate[M]==0) bset(M,1); else {;bset(M,0);if (BOFF) fset(M,0);}
|
||||
bclr=1;
|
||||
}
|
||||
}
|
||||
|
||||
save();updatespeed();bdelay=0;
|
||||
|
||||
} else if (bdelay>0 && bdelay<20 && !LOCK) { // short button press, switch: menu -> fan 0 -> fan 1
|
||||
M++;if (S==8 && M==1) M=2;if (M>2) M=0;
|
||||
updatemarker();
|
||||
bdelay=0;
|
||||
}
|
||||
|
||||
SAVE++;buts=MS;
|
||||
}
|
||||
if (digitalRead(SW)) bprocess=0;
|
||||
|
||||
encval = digitalRead(CLK); ////////////////////////////////////////////////////////////////// process encoder
|
||||
if (encval != enclast && !LOCK) {
|
||||
if(!encval){
|
||||
|
||||
if (digitalRead(DT) != encval) { // turn encoder clockwise
|
||||
if (M==2) S++; // scroll menu
|
||||
else {
|
||||
if (S==0) v[M]+=SPEEDINC; // fan speed up
|
||||
if (S==1) b[M]+=SPEEDINC; // boost speed up
|
||||
if (S==2) btime[M]+=BINC; // boost time up
|
||||
if (S==3) cat[M]++; // cat on/off
|
||||
if (S==4) ctime[M]+=CINC; // cat time up
|
||||
if (S==5) rtime[M]+=RINC; // rise time up
|
||||
if (S==6) otime[M]+=OINC; // off time up
|
||||
if (S==7) rnval[M]+=SPEEDINC; // random value
|
||||
if (S==8) brght++; // increase LCD brightness
|
||||
}
|
||||
} else { // turn encoder counterclockwise
|
||||
if (M==2) S--; // scroll menu
|
||||
else {
|
||||
if (S==0) v[M]-=SPEEDINC; // fan speed down
|
||||
if (S==1) b[M]-=SPEEDINC; // boost speed down
|
||||
if (S==2) btime[M]-=BINC; // boost time down
|
||||
if (S==3) cat[M]--; // cat on/off
|
||||
if (S==4) ctime[M]-=CINC; // cat time down
|
||||
if (S==5) rtime[M]-=RINC; // rise time down
|
||||
if (S==6) otime[M]-=OINC; // off time down
|
||||
if (S==7) rnval[M]-=SPEEDINC; // random value
|
||||
if (S==8) brght--; // decrease LCD brightness
|
||||
}
|
||||
}
|
||||
|
||||
for (int i=0;i<2;i++) if (b[i]<v[i]) b[i]=v[i];
|
||||
|
||||
if (M!=2) {
|
||||
if (S<=1) {;updatePWM();rts=MS+RDELAY;} // apply (boost) speed change
|
||||
if (S==2) btime[M]=cut(btime[M],0,99); // check boost time
|
||||
if (S==3) {;cat[M]=cut(cat[M],0,1);catts[M]=MS;} // check cat
|
||||
if (S==4) ctime[M]=cut(ctime[M],60,240); // check cat time
|
||||
if (S==5) rtime[M]=cut(rtime[M],0,240); // check rise time
|
||||
if (S==6) oset(M,otime[M]); // check off time
|
||||
if (S==7) {;rnval[M]=cut(rnval[M],0,1000);updatePWM();} // apply random value change
|
||||
if (S==8) lset(); // set LCD brightness
|
||||
}
|
||||
|
||||
if (M==2) S=cut(S,0,8); // check menu mode
|
||||
|
||||
SAVE++;updatelcd();delay(25);
|
||||
}
|
||||
}
|
||||
enclast=encval;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////// SUPPORT
|
||||
|
||||
void lset() { ////////////////////////////////////////////////////////////////////////////// set LCD brightness
|
||||
brght=cut(brght,0,9);
|
||||
analogWrite(PWM2,LCDB[brght]);
|
||||
}
|
||||
|
||||
void oset(int n,int t) { ///////////////////////////////////////////////////////////////// set switch off timer
|
||||
otime[n]=cut(t,0,99);ots[n]=MS;ostate[n]=otime[n]?1:0;
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void fset(int n,int s) { /////////////////////////////////////////////////////////////// set fan state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+RDELAY;F[n]=1;catts[n]=vts[n]=MS;r[n]=0;
|
||||
} else {
|
||||
F[n]=0;bstate[n]=0;
|
||||
}
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void bset(int n,int s) { ///////////////////////////////////////////////////////////// set boost state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+RDELAY;bstate[n]=1;bts[n]=MS;F[n]=1;vts[n]=MS;
|
||||
} else {
|
||||
bstate[n]=0;rts=MS+RDELAY;
|
||||
}
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void updatelcd() { ///////////////////////////////////////////////////////////////////////////////// update LCD
|
||||
for (int i=0;i<2;i++) {
|
||||
if (S==0) {;slcd(1,1,5,"SPEED");ilcd(7+i*5,1,-4,v[i]);}
|
||||
if (S==1) {;slcd(1,1,5,"BOOST");ilcd(7+i*5,1,-4,int(b[i]));}
|
||||
if (S==2) {;slcd(1,1,5,"BTIME");ilcd(7+i*5,1,-4,int(btime[i]));}
|
||||
if (S==3) {
|
||||
slcd(1,1,5,"CATCH");
|
||||
if (cat[i]==0) slcd( 7+i*5,1,-4,"OFF"); else slcd( 7+i*5,1,-3,"ON");
|
||||
}
|
||||
if (S==4) {;slcd(1,1,5,"CTIME");ilcd(7+i*5,1,-4,int(ctime[i]));}
|
||||
if (S==5) {;slcd(1,1,5,"RTIME");ilcd(7+i*5,1,-4,int(rtime[i]));}
|
||||
if (S==6) {;slcd(1,1,5,"OTIME");ilcd(7+i*5,1,-4,int(otime[i]));}
|
||||
if (S==7) {;slcd(1,1,5,"RNVAL");ilcd(7+i*5,1,-4,int(rnval[i]));}
|
||||
}
|
||||
if (S==8) {;slcd(1,1,5,"BRGHT");ilcd(7,1,-4,brght);slcd(7+5,1,-4," ");}
|
||||
}
|
||||
|
||||
void updatemarker() { ////////////////////////////////////////////////////////////////////// update menu marker
|
||||
slcd(0,1,1," ");slcd(6,1,1," ");slcd(11,1,1," ");
|
||||
int m[]={6,11,0};if (!LOCK) clcd(m[M],1,0);
|
||||
}
|
||||
|
||||
void updatespeed() { ///////////////////////////////////////////////////////////////////////// update fan speed
|
||||
if (bclr) slcd(0,0,6," ");
|
||||
for (int i=0;i<2;i++) {
|
||||
slcd(6+i*5,0,1," ");
|
||||
if (cstate[i]) slcd(7+i*5,0,-4,"CAT");
|
||||
else {
|
||||
if (F[i]) {
|
||||
if (bstate[i]) ilcd(1+i*3,0,-2, (((long)btime[i]*60000)-(MS-(long)bts[i]))/1000/60+1);
|
||||
else if (ostate[i]) ilcd(1+i*3,0,-2, (((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000/60/60+1);
|
||||
ilcd(7+i*5,0,-4,round(xpm[i]));
|
||||
if ((!bstate[i] && xv[i]<v[i]) || (bstate[i] && xb[i]<b[i])) clcd(6+i*5,0,1);
|
||||
else {
|
||||
if (xv[i]>=v[i] && rnval[i]>0 && !bstate[i]) clcd(6+i*5,0,2);
|
||||
}
|
||||
} else slcd(7+i*5,0,-4,"OFF");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void clcd(int x,int y, char v) { /////////////////////////////////////////////////////// write character to LCD
|
||||
lcd.setCursor(x,y);lcd.write(v);
|
||||
}
|
||||
|
||||
void ilcd(int x,int y, int l,int v) { //////////////////////////////////////////////////// write integer to LCD
|
||||
sprintf(form,"%%%dd",l);sprintf(out,form,v);lcd.setCursor(x,y);lcd.print(out);
|
||||
}
|
||||
|
||||
void slcd(int x,int y, int l,String s) { ////////////////////////////////////////////////// write string to LCD
|
||||
sprintf(form,"%%%ds",l);sprintf(out,form,s.c_str());lcd.setCursor(x,y);lcd.print(out);
|
||||
}
|
||||
|
||||
void calcramp(int i) { ///////////////////////////////////////////////////////////// calculate speed ramp value
|
||||
xb[i]=b[i];
|
||||
int rt=rtime[i]?rtime[i]:1;
|
||||
if (bstate[i]) xb[i]=cut(((b[i]-v[i])/(rt*1000.0)*(MS-bts[i]))+v[i],v[i],b[i]);
|
||||
xv[i]=v[i];
|
||||
xv[i]=cut(((v[i]-FANMIN)/(rt*1000.0)*(MS-vts[i]))+FANMIN,FANMIN,v[i]);
|
||||
if (rnval[i]>0 && xv[i]>=v[i]) xv[i]=cut(xv[i]+rnd[i],FANMIN,FANMAX);
|
||||
}
|
||||
|
||||
void setPWM(int n,int v) { /////////////////////////////////////////// set value to OCR1x and states to off pin
|
||||
if (n==0) {
|
||||
OCR1A=v;
|
||||
if (v==0) digitalWrite(OFF0,OFFSTATE?HIGH:LOW);
|
||||
else digitalWrite(OFF0,OFFSTATE?LOW:HIGH);
|
||||
}
|
||||
if (n==1) {
|
||||
OCR1B=v;
|
||||
if (v==0) digitalWrite(OFF1,OFFSTATE?HIGH:LOW);
|
||||
else digitalWrite(OFF1,OFFSTATE?LOW:HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
void updatePWM() { ////////////////////////////////////////////////////////////// update PWM output (fan speed)
|
||||
for (int i=0;i<2;i++) {
|
||||
v[i]=cut(v[i],FANMIN,FANMAX);
|
||||
b[i]=cut(b[i],FANMIN,FANMAX);
|
||||
calcramp(i);
|
||||
if (!F[i]) setPWM(i,0); else setPWM(i,cut((bstate[i]?xb[i]:xv[i])/(FANMAX/320.0)+r[i],0,320));
|
||||
}
|
||||
}
|
||||
|
||||
void rpmint0() {;ac[0]++;bc[0]++;} ///////////////////////////////////////////////////////////// rpm interrupts
|
||||
void rpmint1() {;ac[1]++;bc[1]++;}
|
||||
|
||||
double cut(double v,double min,double max) {;return v>max?max:v<min?min:v>max?max:v;} ///// cut values to limit
|
||||
|
||||
int eer(int adr) {;return EEPROM.read(adr*2)+EEPROM.read(adr*2+1)*256;} /////////////////////////// read EEPROM
|
||||
|
||||
void eew(int adr, int val) {;EEPROM.write(adr*2,val%256);EEPROM.write(adr*2+1,val/256);} /////// save to EEPROM
|
||||
|
||||
void save() { /////////////////////////////////////////////////////////////////////////////////// save settings
|
||||
for (int i=0;i<2;i++) {
|
||||
eew(1+i,v[i]);eew(3+i,b[i]);eew(5+i,btime[i]);eew(7+i,cat[i]);
|
||||
eew(9+i,ctime[i]);eew(11+i,F[i]);eew(13+i,rtime[i]);eew(15+i,rnval[i]);
|
||||
}
|
||||
eew(100,seed);
|
||||
eew(101,brght);
|
||||
}
|
||||
|
||||
int cutcmd(String data) { ///////////////////////////////////////////////////////////// get saperated substring
|
||||
int mi=data.length(),n=0,j=0;
|
||||
for (int i=0;i<=mi;i++) {
|
||||
if (data.charAt(i) == ':' || i == mi) {;cmd[n]=data.substring(j,i);j=i+1;n++;}
|
||||
}
|
||||
for (int i=1;i<n;i++) icmd[i]=cmd[i].toInt();
|
||||
return n;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////// END
|
70
V1 (old)/stirctl
Executable file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/perl
|
||||
###################################################################################### stir controll (mwx'2019)
|
||||
use Device::SerialPort;
|
||||
use Time::HiRes qw( usleep );
|
||||
|
||||
$dev='/dev/ttyACM0';
|
||||
|
||||
my $port = Device::SerialPort->new($dev); ################################################### setup serial port
|
||||
|
||||
$port->baudrate(9600);
|
||||
$port->databits(8);
|
||||
$port->parity("none");
|
||||
$port->stopbits(1);
|
||||
|
||||
$port->lookfor();
|
||||
|
||||
$cmd=join(':',@ARGV);$cmd='info' if ($cmd=~/^\s*$/);
|
||||
|
||||
@r=split(':',&scmd($cmd));
|
||||
|
||||
print " LEFT RIGHT\n";
|
||||
printf("Stirrer On: %6d %6d\n", $r[0],$r[16]);
|
||||
printf("Speed: %6d %6d\n", $r[1],$r[17]);
|
||||
printf("Boost Speed: %6d %6d\n", $r[2],$r[18]);
|
||||
printf("RPM: %6d %6d\n", $r[3],$r[19]);
|
||||
printf("Average RPM: %6d %6d\n", $r[4],$r[20]);
|
||||
printf("Regulation: %6d %6d\n", $r[5],$r[21]);
|
||||
printf("Boost On: %6d %6d\n", $r[6],$r[22]);
|
||||
printf("Boost Time: %6d %6d\n", $r[7],$r[23]);
|
||||
printf("Catch On: %6d %6d\n", $r[8],$r[24]);
|
||||
printf("Catch Time: %6d %6d\n", $r[9],$r[25]);
|
||||
printf("Rise Time: %6d %6d\n", $r[10],$r[26]);
|
||||
printf("Off Time: %6d %6d\n", $r[11],$r[27]);
|
||||
printf("Random Range: %6d %6d\n", $r[12],$r[28]);
|
||||
printf("Random Value: %6d %6d\n", $r[13],$r[29]);
|
||||
printf("Boost Remain: %6d %6d\n", $r[14],$r[30]);
|
||||
printf("Off Remain: %6d %6d\n", $r[15],$r[31]);
|
||||
|
||||
printf("VERSION: %s\n",$r[32]);
|
||||
printf("UPTIME: %s\n",&dhms($r[33]/1000));
|
||||
printf("ERROR: %d\n",$r[34]);
|
||||
|
||||
sub scmd() { ##################################################################################### send command
|
||||
my($cmd,$quiet)=@_;
|
||||
|
||||
$port->write($cmd);
|
||||
my $founddata=0;
|
||||
$msg="";
|
||||
for ($i=0;$i<1000;$i++) {
|
||||
|
||||
$in = $port->lookfor();
|
||||
$founddata=1 if ($in ne "");
|
||||
$msg.=$in;
|
||||
|
||||
last if ($in eq "" && $founddata);
|
||||
|
||||
&usleep(2500);
|
||||
}
|
||||
|
||||
$msg=~s/[\r\n]+//g;
|
||||
return $msg;
|
||||
}
|
||||
|
||||
sub dhms { ######################################################################## convert secs to dd:hh:mm:ss
|
||||
my($t)=@_;my ($d,$h,$m,$s);
|
||||
$s=$t%60;$t=($t-$s)/60;$m=$t%60;$t=($t-$m)/60;$h=$t%24;$t=($t-$h)/24;$d=$t;
|
||||
return sprintf("%d:%02d:%02d:%02d",$d,$h,$m,$s);
|
||||
}
|
||||
|
||||
########################################################################################################### END
|
BIN
cad/bezel@herbert/LCD -Einbaurahmen für Blende mit Encoder.stl
Normal file
BIN
cad/bezel@herbert/LCD 1602_Blende mit Rahmen_Encoder links.stl
Normal file
BIN
cad/bezel@herbert/LCD 1602_Blende mit Rahmen_Encoder.stl
Normal file
BIN
cad/bezel@herbert/Magnetaufnahme Rührer Wing3_V2.0.stl
Normal file
BIN
cad/bezel@herbert/Magnetaufnahme Rührer Wing3_V3.0.stl
Normal file
BIN
cad/bezel@herbert/Magnetaufnahme Rührer Wing3_V4.0.stl
Normal file
BIN
cad/bezel@herbert/OLED-Blende_Encoder_neutral.stl
Normal file
3
cad/bezel@herbert/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# CAD Files
|
||||
|
||||
CAD files for 3D printed display bezel from Herbert Schmid.
|
BIN
cad/case@jens/Bodenplatte_V1.1.stl
Executable file
BIN
cad/case@jens/Bohrschablone_LCD Blende.stl
Executable file
BIN
cad/case@jens/Frontblende.stl
Executable file
BIN
cad/case@jens/KY040_Knopf.stl
Executable file
BIN
cad/case@jens/Kantenschutz.stl
Executable file
BIN
cad/case@jens/LCD+KY040_Blende.stl
Executable file
BIN
cad/case@jens/Magnetrührer_Folie.pdf
Normal file
3
cad/case@jens/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# CAD Files
|
||||
|
||||
CAD files for 3D printed case parts from Jens Warkentin.
|
@ -1,52 +0,0 @@
|
||||
$fn=128;
|
||||
|
||||
g = 10; // magnet gap
|
||||
|
||||
fw = 48.3; // fan width
|
||||
|
||||
h = 4; // base height
|
||||
r = 5; // edge width
|
||||
|
||||
pn = 7; // number of pins
|
||||
ph = 7; // pin height
|
||||
pa = 20; // pin angle
|
||||
|
||||
mw = 10.25; // magnet width
|
||||
ml = 20.25; // magnet length
|
||||
mb = 17; // magnet bar width
|
||||
|
||||
d=fw+r+r; // total diameter
|
||||
cl=d-r; // magnet bar length
|
||||
a=360/pn; // segment angle
|
||||
e=(d+g-10)/d; // elliptic scale factor
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,0]) cylinder(h+ph,d/2,d/2);
|
||||
translate([0,0,0]) scale([e, 1, 1]) cylinder(h,d/2,d/2);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(h+ph+2,d/2-r,d/2-r);
|
||||
for (i =[0:1:pn-1]) {
|
||||
pin(a*i);
|
||||
}
|
||||
}
|
||||
translate([-cl/2,-mb/2,0]) cube([cl,mb,h]);
|
||||
rotate ([0,0,90]) translate([-cl/2,-(mb-mw)/4-d/7,0]) cube([cl,(mb-mw)/2,h]);
|
||||
rotate ([0,0,90]) translate([-cl/2,-(mb-mw)/4+d/7,0]) cube([cl,(mb-mw)/2,h]);
|
||||
}
|
||||
translate([-ml-g/2,-mw/2,-1]) cube([ml,mw,h]);
|
||||
translate([g/2,-mw/2,-1]) cube([ml,mw,h]);
|
||||
}
|
||||
|
||||
module pin(r) {
|
||||
translate([0,0,0.01]) rotate([0,0,r]) hull() {
|
||||
translate([0,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
translate([-d,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
rotate ([0,0,a-pa])union() {
|
||||
translate([0,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
translate([-d,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
# CAD Files
|
||||
|
||||
CAD files for 3D printed magnet holder. Compatible for magnets with size 20x10x5 mm and
|
||||
*be quiet! Silent Wings 3 140 mm* fans.
|
||||
CAD files for 3D printed magnet moun. Compatible for magnets with size 20x10x5 mm and
|
||||
*be quiet! Silent Wings 3 120/140 mm* fans.
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/magnetmount.jpg" width=500>
|
57
cad/magnetmount/magnetmount.scad
Normal file
@ -0,0 +1,57 @@
|
||||
/// magnet mount for for magnets with size 20x10x5 mm and be quiet! Silent Wings 3 120/140 mm fans
|
||||
|
||||
$fn=128;
|
||||
|
||||
g = 10; // magnet gap
|
||||
fan = 120; // fan size (120 or 140)
|
||||
|
||||
h = 4; // base height
|
||||
r = 5; // edge width
|
||||
|
||||
pn = 7; // number of pins
|
||||
ph = 7; // pin height
|
||||
pa = 20; // pin angle
|
||||
|
||||
mw = 10.25; // magnet width
|
||||
ml = 20.25; // magnet length
|
||||
mb = 17; // magnet bar width
|
||||
|
||||
fw= fan==140 ? 48.3 : 42.5; // fan center width
|
||||
eo= fan==140 ? 10 : 5; // elliptic extra offset
|
||||
|
||||
d=fw+r+r; // total diameter
|
||||
cl=d-r; // magnet bar length
|
||||
a=360/pn; // segment angle
|
||||
e=(d+g-eo)/d; // elliptic scale factor
|
||||
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,0]) cylinder(h+ph,d/2,d/2);
|
||||
translate([0,0,0]) scale([e, 1, 1]) cylinder(h,d/2,d/2);
|
||||
}
|
||||
translate([0,0,-1]) cylinder(h+ph+2,d/2-r,d/2-r);
|
||||
for (i =[0:1:pn-1]) {
|
||||
pin(a*i);
|
||||
}
|
||||
}
|
||||
translate([-cl/2,-mb/2,0]) cube([cl,mb,h]);
|
||||
rotate ([0,0,90]) translate([-cl/2,-(mb-mw)/4-d/7,0]) cube([cl,(mb-mw)/2,h]);
|
||||
rotate ([0,0,90]) translate([-cl/2,-(mb-mw)/4+d/7,0]) cube([cl,(mb-mw)/2,h]);
|
||||
}
|
||||
translate([-ml-g/2,-mw/2,-1]) cube([ml,mw,h]);
|
||||
translate([g/2,-mw/2,-1]) cube([ml,mw,h]);
|
||||
}
|
||||
|
||||
module pin(r) {
|
||||
translate([0,0,0.01]) rotate([0,0,r]) hull() {
|
||||
translate([0,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
translate([-d,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
rotate ([0,0,a-pa])union() {
|
||||
translate([0,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
translate([-d,0,h]) cylinder(h+ph,0.1,0.1);
|
||||
}
|
||||
}
|
||||
}
|
12434
cad/magnetmount/magnetmount120x10.stl
Normal file
12434
cad/magnetmount/magnetmount120x20.stl
Normal file
12434
cad/magnetmount30.stl
12434
cad/magnetmount40.stl
BIN
images/pcb_top.jpg
Normal file
After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 140 KiB |
BIN
images/stir+pcb.jpg
Normal file
After Width: | Height: | Size: 295 KiB |
BIN
images/v2_board.jpg
Normal file
After Width: | Height: | Size: 412 KiB |
338
stir.ino
@ -1,68 +1,125 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////// Stir Control (mwx'2019)
|
||||
//////////////////////////////////////////////////////////////////////////////////// Stir Control V2 (mwx'2019)
|
||||
#include <EEPROM.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
|
||||
#define MS (long)millis()
|
||||
#define NP 25
|
||||
|
||||
#define SX Serial.print
|
||||
#define SXN Serial.println
|
||||
String VERSION = "2.1.2";
|
||||
|
||||
String VERSION = "1.5.6";
|
||||
int FANINIT = 0; // initialize fan with high voltage (0/1)
|
||||
|
||||
int SPEEDINC = 50; // speed increment (rpm)
|
||||
int SPEEDINC1 = 20; // speed increment values
|
||||
int SPEEDINC2 = 50;
|
||||
int SPEEDINC3 = 100;
|
||||
|
||||
int SPEEDSTEP1 = 400; // speed increment steps (increment changes at these values)
|
||||
int SPEEDSTEP2 = 1000;
|
||||
|
||||
int RNDINC = 50; // random value increment (rpm)
|
||||
|
||||
int FANMIN = 200; // fan minimum speed (should be a value at which the fan runs safely) (rpm)
|
||||
int FANMAX = 1600; // fan maximum speed (should be the real maximum value of the fan) (rpm)
|
||||
int FANMAX = 2500; // fan maximum speed (should be the real maximum value of the fan) (rpm)
|
||||
|
||||
int BOFF = 0; // if set boost off will also turn the normal mode off
|
||||
int BOFF = 0; // if set boost off will also turn the normal mode off (0/1)
|
||||
|
||||
int BINC = 1; // BTIME increment (min)
|
||||
int CINC = 10; // CTIME increment (min)
|
||||
int RINC = 10; // RTIME increment (sec)
|
||||
int OINC = 3; // OTIME increment (hour)
|
||||
|
||||
long CATCHSTOP = 20000; // fish catch stop period (ms)
|
||||
int CATCHSTOP = 20; // fish catch stop period (sec)
|
||||
|
||||
int PWM0 = 9; // PWM pin for 1. fan
|
||||
int PWM1 = 10; // PWM pin for 2. fan
|
||||
|
||||
int I0 = 2; // interrupt for fan 0 rpm signal (use 2 for Leonardo/ProMicro and 0 for Uno)
|
||||
int I1 = 3; // interrupt for fan 1 rpm signal (use 3 for Leonardo/ProMicro and 1 for Uno)
|
||||
int PWM2 = 11; // PWM pin for LCD brightness
|
||||
|
||||
int I0 = 0; // interrupt for fan 0 rpm signal (use 2 for Leonardo/ProMicro and 0 for Uno)
|
||||
int I1 = 1; // interrupt for fan 1 rpm signal (use 3 for Leonardo/ProMicro and 1 for Uno)
|
||||
|
||||
int SWAPENC = 1; // swap encoder direction
|
||||
|
||||
int CLK = 5; // clk on KY-040 encoder
|
||||
int CLK = 5; // clk on KY-040 encoder (swap clk and dt to invert direction)
|
||||
int DT = 6; // dt on KY-040 encoder
|
||||
int SW = 4; // sw on KY-040 encoder
|
||||
|
||||
long RINTERVAL = 5000; // regulation interval (ms)
|
||||
long RDELAY = 3000; // regulation delay on changes (ms)
|
||||
int R0 = 7; // voltage select relais 0
|
||||
int R1 = 8; // voltage select relais 1
|
||||
int RTHRES = 700; // voltage switch threshold (rpm)
|
||||
|
||||
int RINTERVAL = 50; // regulation internval (ds)
|
||||
int RDELAY = 30; // regulation delay on changes (ds)
|
||||
int RTOL = 8; // regulation tolerance (rpm)
|
||||
|
||||
long SINTERVAL = 2000; // speed measurement interval
|
||||
int RNDINTERVAL = 300; // randon value range change interval (sec)
|
||||
|
||||
int SINTERVAL = 20; // speed measurement internval (ds)
|
||||
int SAVERAGE = 4; // speed measurement average
|
||||
|
||||
int SAVETAG = 1011; // save tag
|
||||
int SAVETAG = 2017; // save tag
|
||||
long SAVEDELAY = 10000; // EEPROM save delay (ms)
|
||||
|
||||
int RESET = 0; // factory reset, DON'T CHANGE THIS HERE (used from configuration menu)
|
||||
|
||||
int LGHT = 5; // LCD brightness
|
||||
|
||||
byte LCDB[] = {4,8,16,24,32,64,96,128,192,255}; // LCD brightness steps (10 values, 0=off, 255=max)
|
||||
|
||||
byte aright[] = {0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00}; // LCD character
|
||||
byte aup[] = {0x04,0x0E,0x1F,0x00,0x00,0x00,0x00,0x00};
|
||||
byte arnd[] = {0x0E,0x0E,0x0E,0x00,0x00,0x00,0x00,0x00};
|
||||
|
||||
LiquidCrystal_I2C lcd(0x27,16,2); // LCD display (connect to SDA/SCL)
|
||||
|
||||
int v[2],b[2],r[2]={0};double q,rpm[2]={0},xpm[2]={0},xb[2]={0},xv[2]={0},rtime[2]; // speed and regulation
|
||||
long ac[2]={0},bc[2]={0}; // interrupt rpm counter
|
||||
long xts,sts,rts,swts,buts,savets,catts[2],stop[2],bts[2],vts[2],ots[2]; // timing
|
||||
int bdelay,bprocess=0,enclast,encval,M=2,S=0; // button/encoder processing
|
||||
long xts,sts,rts,swts,buts,savets,catts[2],stop[2],bts[2],vts[2],ots[2],rndts[2]; // timing
|
||||
int bdelay,bprocess=0,enclast,encval,M=2,S=0,C=0; // button/encoder processing
|
||||
int F[2],bstate[2]={0},btime[2],cat[2],ctime[2],cstate[2]={0},bclr=0,SAVE=0,LOCK=0; // operating states
|
||||
int ostate[2]={0},otime[2]={0}; // off timer
|
||||
char form[8],out[20];String cmd[8];int icmd[8]; // string buffer
|
||||
int rnd[2]={0},rnval[2]={0};long seed; // random speed
|
||||
char form[8],out[20]; // string buffer
|
||||
String CF[NP];int *P[NP],Cinc[NP],Cmin[NP],Cmax[NP]; // configuration menu
|
||||
int clkorg,dtorg; // encoder direction
|
||||
|
||||
void(* resetFunc) (void) = 0;
|
||||
|
||||
void setup() { ////////////////////////////////////////////////////////////////////////////////////////// SETUP
|
||||
Serial.begin(9600); // start serial
|
||||
|
||||
lcd.init();lcd.clear();lcd.backlight();lcd.createChar(0,aright);lcd.createChar(1,aup); // initialize lcd
|
||||
pinMode(PWM0,OUTPUT);pinMode(PWM1,OUTPUT); // set PWM pins
|
||||
pinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW,INPUT); // set KY-040 pins
|
||||
int i=0;
|
||||
|
||||
P[i]=&LGHT; CF[i]=F("LGHT"); defcon(i, 1, 0, 9 ); i++;
|
||||
P[i]=&SPEEDINC1; CF[i]=F("SPI1"); defcon(i, 10, 10, 500 ); i++;
|
||||
P[i]=&SPEEDINC2; CF[i]=F("SPI2"); defcon(i, 10, 10, 500 ); i++;
|
||||
P[i]=&SPEEDINC3; CF[i]=F("SPI3"); defcon(i, 10, 10, 500 ); i++;
|
||||
P[i]=&SPEEDSTEP1; CF[i]=F("SPS1"); defcon(i, 50, 100, 2000 ); i++;
|
||||
P[i]=&SPEEDSTEP2; CF[i]=F("SPS2"); defcon(i, 50, 100, 2000 ); i++;
|
||||
P[i]=&SWAPENC; CF[i]=F("SWEN"); defcon(i, 1, 0, 1 ); i++;
|
||||
P[i]=&RNDINC; CF[i]=F("RINC"); defcon(i, 1, 0, 9 ); i++;
|
||||
P[i]=&CATCHSTOP; CF[i]=F("CSTP"); defcon(i, 10, 0, 1000 ); i++;
|
||||
P[i]=&FANMIN; CF[i]=F("FMIN"); defcon(i, 50, 100, 1000 ); i++;
|
||||
P[i]=&FANMAX; CF[i]=F("FMAX"); defcon(i, 50, 500, 4000 ); i++;
|
||||
P[i]=&FANINIT; CF[i]=F("FINI"); defcon(i, 1, 0, 1 ); i++;
|
||||
P[i]=&RTHRES; CF[i]=F("RTHR"); defcon(i, 50, 0, 1500 ); i++;
|
||||
P[i]=&RNDINTERVAL; CF[i]=F("RINT"); defcon(i, 1, 0, 60 ); i++;
|
||||
P[i]=&BOFF; CF[i]=F("BOFF"); defcon(i, 1, 0, 1 ); i++;
|
||||
P[i]=&BINC; CF[i]=F("BINC"); defcon(i, 1, 1, 60 ); i++;
|
||||
P[i]=&CINC; CF[i]=F("CINC"); defcon(i, 1, 1, 60 ); i++;
|
||||
P[i]=&RINC; CF[i]=F("RINC"); defcon(i, 1, 1, 60 ); i++;
|
||||
P[i]=&OINC; CF[i]=F("OINC"); defcon(i, 1, 1, 60 ); i++;
|
||||
P[i]=&RINTERVAL; CF[i]=F("XINT"); defcon(i, 1, 10, 250 ); i++;
|
||||
P[i]=&RDELAY; CF[i]=F("XDEL"); defcon(i, 1, 0, 100 ); i++;
|
||||
P[i]=&RTOL; CF[i]=F("XTOL"); defcon(i, 1, 1, 100 ); i++;
|
||||
P[i]=&SINTERVAL; CF[i]=F("SINT"); defcon(i, 1, 0, 100 ); i++;
|
||||
P[i]=&SAVERAGE; CF[i]=F("SAVG"); defcon(i, 1, 1, 100 ); i++;
|
||||
P[i]=&RESET; CF[i]=F("RSET"); defcon(i, 1, 0, 1 ); i++;
|
||||
|
||||
lcd.init();lcd.clear();lcd.backlight(); // initialize lcd
|
||||
lcd.createChar(0,aright);lcd.createChar(1,aup);lcd.createChar(2,arnd); // load lcd characters
|
||||
pinMode(PWM0,OUTPUT);pinMode(PWM1,OUTPUT);pinMode(PWM2,OUTPUT); // setup PWM pins
|
||||
pinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW,INPUT); // setup KY-040 pins
|
||||
digitalWrite(CLK,true);digitalWrite(DT,true);digitalWrite(SW,true); // turn ON pullup resistors
|
||||
pinMode(R0,OUTPUT);pinMode(R1,OUTPUT); // setup voltage selcet relais pins
|
||||
|
||||
attachInterrupt(I0,rpmint0,FALLING); // setup interrupts vor rpm in
|
||||
attachInterrupt(I1,rpmint1,FALLING);
|
||||
@ -72,62 +129,45 @@ void setup() { /////////////////////////////////////////////////////////////////
|
||||
|
||||
SAVE=0; // load/initialize settings
|
||||
if (eer(0)!=SAVETAG) {
|
||||
for (int i=0;i<2;i++) {;v[i]=300;b[i]=700;btime[i]=30;cat[i]=0;ctime[i]=120;rtime[i]=60;F[i]=0;}
|
||||
for (i=0;i<2;i++) {;v[i]=300;b[i]=700;btime[i]=30;cat[i]=0;ctime[i]=120;rtime[i]=60;F[i]=0;rnval[i]=0;}
|
||||
seed=0;
|
||||
eew(0,SAVETAG);save();
|
||||
} else {
|
||||
for (int i=0;i<2;i++) {
|
||||
for (i=0;i<2;i++) {
|
||||
v[i]=eer(1+i);b[i]=eer(3+i);btime[i]=eer(5+i);cat[i]=eer(7+i);
|
||||
ctime[i]=eer(9+i);F[i]=eer(11+i);rtime[i]=eer(13+i);
|
||||
ctime[i]=eer(9+i);F[i]=eer(11+i);rtime[i]=eer(13+i);rnval[i]=eer(15+i);
|
||||
}
|
||||
seed=eer(100)+1;eew(100,seed);randomSeed(seed);
|
||||
for (i=0;i<NP;i++) *P[i]=eer(200+i);
|
||||
}
|
||||
|
||||
clkorg=CLK;dtorg=DT;if (SWAPENC) {;DT=clkorg;CLK=dtorg;} // swap encoder direction
|
||||
|
||||
lset();
|
||||
|
||||
enclast=digitalRead(CLK); // get encoder state
|
||||
|
||||
for (int i=0;i<2;i++) catts[i]=stop[i]=vts[i]=ots[i]=MS;xts=sts=rts=swts=buts=savets=MS; // timer
|
||||
for (i=0;i<2;i++) catts[i]=stop[i]=vts[i]=ots[i]=rndts[i]=MS;xts=sts=rts=swts=buts=savets=MS; // timer
|
||||
updatePWM();updatelcd();updatespeed();updatemarker(); // update all
|
||||
|
||||
slcd(0,0,5,VERSION); // show version
|
||||
|
||||
if (FANINIT) { // setup fans
|
||||
digitalWrite(R0,LOW);digitalWrite(R1,LOW);delay(3000);digitalWrite(R0,HIGH);digitalWrite(R1,HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void loop() { //////////////////////////////////////////////////////////////////////////////////////////// LOOP
|
||||
|
||||
if (Serial.available() > 0) { ////////////////////////////////////////////////////////// serial communication
|
||||
int n=cutcmd(Serial.readString());
|
||||
int err=1;
|
||||
int i=cut(icmd[1],0,1);
|
||||
if (cmd[0]=="info" && n==1) {;err=0;}
|
||||
if (cmd[0]=="version" && n==1) {;SXN(VERSION);return;}
|
||||
if (cmd[0]=="save" && n==1) {;save();}
|
||||
if (cmd[0]=="speed" && n==3) {;v[i]=cut(icmd[2],FANMIN,FANMAX);err=0;}
|
||||
if (cmd[0]=="bspeed" && n==3) {;b[i]=cut(icmd[2],FANMIN,FANMAX);err=0;}
|
||||
if (cmd[0]=="btime" && n==3) {;btime[i]=cut(icmd[2],0,60);err=0;}
|
||||
if (cmd[0]=="ctime" && n==3) {;ctime[i]=cut(icmd[2],60,240);err=0;}
|
||||
if (cmd[0]=="rtime" && n==3) {;rtime[i]=cut(icmd[2],0,240);err=0;}
|
||||
if (cmd[0]=="on" && n==2) {;fset(i,1);err=0;}
|
||||
if (cmd[0]=="off" && n==2) {;fset(i,0);err=0;}
|
||||
if (cmd[0]=="bon" && n==2) {;bset(i,1);err=0;}
|
||||
if (cmd[0]=="boff" && n==2) {;bset(i,0);err=0;}
|
||||
if (cmd[0]=="con" && n==2) {;cat[i]=1;catts[i]=MS;err=0;}
|
||||
if (cmd[0]=="coff" && n==2) {;cat[i]=0;catts[i]=MS;err=0;}
|
||||
if (cmd[0]=="otime" && n==3) {;oset(i,icmd[2]);err=0;}
|
||||
|
||||
updatelcd();
|
||||
for (int i=0;i<2;i++) {
|
||||
SX(F[i]);SX(":");SX((int)(v[i]));SX(":");SX((int)(b[i]));SX(":");SX(rpm[i]);SX(":");
|
||||
SX(xpm[i]);SX(":");SX(r[i]);SX(":");SX(bstate[i]);SX(":");SX(btime[i]);SX(":");
|
||||
SX(cat[i]);SX(":");SX(ctime[i]);SX(":");SX(rtime[i]);SX(":");SX(otime[i]);SX(":");
|
||||
if (bstate[i]) SX((((long)btime[i]*60000)-(MS-(long)bts[i]))/1000+1); else SX(0);SX(":");
|
||||
if (ostate[i]) SX((((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000+1); else SX(0);SX(":");
|
||||
}
|
||||
SX(VERSION);SX(":");SXN(err);
|
||||
}
|
||||
|
||||
if (SAVE>0 && MS-savets>SAVEDELAY) {;save();SAVE=0;savets=MS;} ////////////////////// save settings if needed
|
||||
if (MS-savets>SAVEDELAY/5) bclr=1;
|
||||
|
||||
for (int i=0;i<2;i++) {
|
||||
|
||||
|
||||
if (MS-rndts[i]>((long)RNDINTERVAL*1000)) { ////////////////////////////////////////////////// random timer
|
||||
rnd[i]=int(random(0,rnval[i]+1)/10)*10;rndts[i]=MS;updatelcd();
|
||||
}
|
||||
|
||||
if (ostate[i] && MS-ots[i]>(long)otime[i]*3600000) { ////////////////////////////////////// check off timer
|
||||
otime[i]=0;ostate[i]=0;fset(i,0);
|
||||
}
|
||||
@ -136,7 +176,7 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
catts[i]=MS;cstate[i]=1;F[i]=0;stop[i]=MS;updatePWM();updatespeed();
|
||||
}
|
||||
|
||||
if (cstate[i] && MS-stop[i]>CATCHSTOP && F[i]==0) { ////////////////////////// stop cat fish and start over
|
||||
if (cstate[i] && MS-stop[i]>((long)CATCHSTOP*1000) && F[i]==0) { ///////////// stop cat fish and start over
|
||||
cstate[i]=0;F[i]=1;vts[i]=MS;rts=MS+2000;updatePWM();updatespeed();
|
||||
}
|
||||
|
||||
@ -144,12 +184,12 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
|
||||
}
|
||||
|
||||
if (MS-xts>SINTERVAL) { /////////////////////////////////////////////////////////////////// speed measurement
|
||||
if (MS-xts>(SINTERVAL*100)) { ///////////////////////////////////////////////////////////// speed measurement
|
||||
for (int i=0;i<2;i++) xpm[i]=xpm[i]*(SAVERAGE-1)/SAVERAGE+(bc[i]/((MS-xts)/1000.0)*30.0)/SAVERAGE;
|
||||
updatespeed();xts=MS;bc[0]=0;bc[1]=0;
|
||||
}
|
||||
|
||||
if (MS-rts>RINTERVAL) { //////////////////////////////////////////////////////////////////// speed regulation
|
||||
if (MS-rts>(RINTERVAL*100)) { ////////////////////////////////////////////////////////////// speed regulation
|
||||
for (int i=0;i<2;i++) {
|
||||
rpm[i]=ac[i]/((MS-sts)/1000.0)*30.0;
|
||||
ac[i]=0;
|
||||
@ -169,7 +209,7 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
bdelay=0; //////////////////////////////////////////////////////////////////////////////////// process switch
|
||||
if (!bprocess) {
|
||||
while (!digitalRead(SW)){
|
||||
bdelay++;delay(25);bprocess=1;if (bdelay>20) break;
|
||||
bdelay++;delay(15);bprocess=1;if (bdelay>20) break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,12 +228,20 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
if (bstate[M]==0) bset(M,1); else {;bset(M,0);if (BOFF) fset(M,0);}
|
||||
bclr=1;
|
||||
}
|
||||
if (S==8 && !LOCK) { // exit config mode
|
||||
M=2;save();updatemarker();
|
||||
if (SWAPENC) {;DT=clkorg;CLK=dtorg;}
|
||||
else {;DT=dtorg;CLK=clkorg;}
|
||||
if (RESET==1) {;RESET=0;eew(0,0);save();resetFunc();}
|
||||
}
|
||||
}
|
||||
|
||||
save();updatespeed();bdelay=0;
|
||||
|
||||
} else if (bdelay>0 && bdelay<20 && !LOCK) { // short button press, switch: menu -> fan 0 -> fan 1
|
||||
M++;if (M>2) M=0;
|
||||
M++;
|
||||
if (S==8 && M==2) M=0;
|
||||
if (M>2) M=0;
|
||||
updatemarker();
|
||||
bdelay=0;
|
||||
}
|
||||
@ -205,45 +253,57 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
encval = digitalRead(CLK); ////////////////////////////////////////////////////////////////// process encoder
|
||||
if (encval != enclast && !LOCK) {
|
||||
if(!encval){
|
||||
|
||||
|
||||
if (digitalRead(DT) != encval) { // turn encoder clockwise
|
||||
if (M==2) S++; // scroll menu
|
||||
if (M==2) S++; // scroll menu
|
||||
else {
|
||||
if (S==0) v[M]+=SPEEDINC; // fan 0 speed up
|
||||
if (S==1) b[M]+=SPEEDINC; // boost 0 speed up
|
||||
if (S==2) btime[M]++; // boost time 0 up
|
||||
if (S==3) cat[M]++; // cat 0 on/off
|
||||
if (S==4) ctime[M]+=CINC; // cat time 0 up
|
||||
if (S==5) rtime[M]+=RINC; // rise time 0 up
|
||||
if (S==6) otime[M]+=OINC; // off time 0 up
|
||||
if (S==0) v[M]=speedinc(v[M],1); // fan speed up
|
||||
if (S==1) b[M]=speedinc(b[M],1); // boost speed up
|
||||
if (S==2) btime[M]+=BINC; // boost time up
|
||||
if (S==3) cat[M]++; // cat on/off
|
||||
if (S==4) ctime[M]+=CINC; // cat time up
|
||||
if (S==5) rtime[M]+=RINC; // rise time up
|
||||
if (S==6) otime[M]+=OINC; // off time up
|
||||
if (S==7) rnval[M]+=RNDINC; // random value
|
||||
if (S==8 && M==0) C++; // increase config menu
|
||||
|
||||
if (S==8 && M==1) *P[C]=cut(*P[C]+Cinc[C],Cmin[C],Cmax[C]); // increase configuration value
|
||||
}
|
||||
} else { // turn encoder counterclockwise
|
||||
if (M==2) S--; // scroll menu
|
||||
if (M==2) S--; // scroll menu
|
||||
else {
|
||||
if (S==0) v[M]-=SPEEDINC; // fan 0 speed down
|
||||
if (S==1) b[M]-=SPEEDINC; // boost 0 speed down
|
||||
if (S==2) btime[M]--; // boost time 0 down
|
||||
if (S==3) cat[M]--; // cat 0 on/off
|
||||
if (S==4) ctime[M]-=CINC; // cat time 0 down
|
||||
if (S==5) rtime[M]-=RINC; // rise time 0 down
|
||||
if (S==6) otime[M]-=OINC; // off time 0 down
|
||||
if (S==0) v[M]=speedinc(v[M],0); // fan speed down
|
||||
if (S==1) b[M]=speedinc(b[M],0); // boost speed down
|
||||
if (S==2) btime[M]-=BINC; // boost time down
|
||||
if (S==3) cat[M]--; // cat on/off
|
||||
if (S==4) ctime[M]-=CINC; // cat time down
|
||||
if (S==5) rtime[M]-=RINC; // rise time down
|
||||
if (S==6) otime[M]-=OINC; // off time down
|
||||
if (S==7) rnval[M]-=RNDINC; // random value
|
||||
if (S==8 && M==0) C--; // decrease config menu
|
||||
|
||||
if (S==8 && M==1) *P[C]=cut(*P[C]-Cinc[C],Cmin[C],Cmax[C]); // decrease configuration value
|
||||
}
|
||||
}
|
||||
|
||||
for (int i=0;i<2;i++) if (b[i]<v[i]) b[i]=v[i];
|
||||
|
||||
if (M!=2) {
|
||||
if (S<=1) {;updatePWM();rts=MS+RDELAY;} // apply (boost) speed change
|
||||
if (S==2) btime[M]=cut(btime[M],0,60); // check boost time
|
||||
if (S==3) {;cat[M]=cut(cat[M],0,1);catts[0]=MS;} // check cat
|
||||
if (S<=1) {;updatePWM();rts=MS+(RDELAY*100);} // apply (boost) speed change
|
||||
if (S==2) btime[M]=cut(btime[M],0,99); // check boost time
|
||||
if (S==3) {;cat[M]=cut(cat[M],0,1);catts[M]=MS;} // check cat
|
||||
if (S==4) ctime[M]=cut(ctime[M],60,240); // check cat time
|
||||
if (S==5) rtime[M]=cut(rtime[M],0,240); // check rise time
|
||||
if (S==6) oset(M,otime[M]); // check off time
|
||||
if (S==7) {;rnval[M]=cut(rnval[M],0,1000);updatePWM();} // apply random value change
|
||||
if (S==8 && C==0) lset(); // set LCD brightness
|
||||
}
|
||||
|
||||
if (M==2) S=cut(S,0,6); // check menu mode
|
||||
C=cut(C,0,NP-1); // check configuration mode
|
||||
|
||||
if (M==2) S=cut(S,0,8); // check menu mode
|
||||
|
||||
SAVE++;updatelcd();delay(50);
|
||||
SAVE++;updatelcd();delay(25);
|
||||
}
|
||||
}
|
||||
enclast=encval;
|
||||
@ -252,6 +312,29 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////// SUPPORT
|
||||
|
||||
void defcon(int n, int inc, int min, int max) { ///////////////////////////////////////////// set config limits
|
||||
Cinc[n]=inc; Cmin[n]=min; Cmax[n]=max;
|
||||
}
|
||||
|
||||
int speedinc(int s,int mode) { ////////////////////////////////////////////////////// calculate speed increment
|
||||
if (mode==0) {
|
||||
if (s<=SPEEDSTEP1) return s-SPEEDINC1;
|
||||
if (s<=SPEEDSTEP2) return s-SPEEDINC2;
|
||||
return s-SPEEDINC3;
|
||||
}
|
||||
if (mode==1) {
|
||||
if (s<SPEEDSTEP1) return s+SPEEDINC1;
|
||||
if (s<SPEEDSTEP2) return s+SPEEDINC2;
|
||||
return s+SPEEDINC3;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
void lset() { ////////////////////////////////////////////////////////////////////////////// set LCD brightness
|
||||
LGHT=cut(LGHT,0,9);
|
||||
analogWrite(PWM2,LCDB[LGHT]);
|
||||
}
|
||||
|
||||
void oset(int n,int t) { ///////////////////////////////////////////////////////////////// set switch off timer
|
||||
otime[n]=cut(t,0,99);ots[n]=MS;ostate[n]=otime[n]?1:0;
|
||||
SAVE++;
|
||||
@ -259,54 +342,62 @@ void oset(int n,int t) { ///////////////////////////////////////////////////////
|
||||
|
||||
void fset(int n,int s) { /////////////////////////////////////////////////////////////// set fan state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+RDELAY;F[n]=1;catts[n]=vts[n]=MS;r[n]=0;updatePWM();
|
||||
rts=MS+(RDELAY*100);F[n]=1;catts[n]=vts[n]=MS;r[n]=0;
|
||||
} else {
|
||||
F[n]=0;bstate[n]=0;
|
||||
}
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void bset(int n,int s) { ///////////////////////////////////////////////////////////// set boost state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+RDELAY;bstate[n]=1;bts[n]=MS;F[n]=1;vts[n]=MS;
|
||||
rts=MS+(RDELAY*100);bstate[n]=1;bts[n]=MS;F[n]=1;vts[n]=MS;
|
||||
} else {
|
||||
bstate[n]=0;rts=MS+RDELAY;updatePWM();
|
||||
bstate[n]=0;rts=MS+(RDELAY*100);
|
||||
}
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void updatelcd() { ///////////////////////////////////////////////////////////////////////////////// update LCD
|
||||
for (int i=0;i<2;i++) {
|
||||
if (S==0) {;slcd(1,1,5,"SPEED");ilcd(7+i*5,1,-4,int(v[i]));}
|
||||
if (S==1) {;slcd(1,1,5,"BOOST");ilcd(7+i*5,1,-4,int(b[i]));}
|
||||
if (S==2) {;slcd(1,1,5,"BTIME");ilcd(7+i*5,1,-4,int(btime[i]));}
|
||||
if (S==3) {
|
||||
slcd(1,1,5,"CATCH");
|
||||
if (cat[i]==0) slcd( 7+i*5,1,-4,"OFF"); else slcd( 7+i*5,1,-3,"ON");
|
||||
}
|
||||
if (S==4) {;slcd(1,1,5,"CTIME");ilcd(7+i*5,1,-4,int(ctime[i]));}
|
||||
if (S==5) {;slcd(1,1,5,"RTIME");ilcd(7+i*5,1,-4,int(rtime[i]));}
|
||||
if (S==6) {;slcd(1,1,5,"OTIME");ilcd(7+i*5,1,-4,int(otime[i]));}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i=0;i<2;i++) {
|
||||
if (S==0) {;slcd(1,1,5,F("SPEED"));ilcd(7+i*5,1,-4,v[i]);}
|
||||
if (S==1) {;slcd(1,1,5,F("BOOST"));ilcd(7+i*5,1,-4,int(b[i]));}
|
||||
if (S==2) {;slcd(1,1,5,F("BTIME"));ilcd(7+i*5,1,-4,int(btime[i]));}
|
||||
if (S==3) {
|
||||
slcd(1,1,5,F("CATCH"));
|
||||
if (cat[i]==0) slcd( 7+i*5,1,-4,F("OFF")); else slcd( 7+i*5,1,-3,F("ON"));
|
||||
}
|
||||
if (S==4) {;slcd(1,1,5,F("CTIME"));ilcd(7+i*5,1,-4,int(ctime[i]));}
|
||||
if (S==5) {;slcd(1,1,5,F("RTIME"));ilcd(7+i*5,1,-4,int(rtime[i]));}
|
||||
if (S==6) {;slcd(1,1,5,F("OTIME"));ilcd(7+i*5,1,-4,int(otime[i]));}
|
||||
if (S==7) {;slcd(1,1,5,F("RNVAL"));ilcd(7+i*5,1,-4,int(rnval[i]));}
|
||||
}
|
||||
if (S==8) {;slcd(1,1,-5,F("CFG"));slcd(7,1,-4,CF[C]);ilcd(7+5,1,-4,*P[C]);}
|
||||
}
|
||||
|
||||
void updatemarker() { ////////////////////////////////////////////////////////////////////// update menu marker
|
||||
slcd(0,1,1," ");slcd(6,1,1," ");slcd(11,1,1," ");
|
||||
slcd(0,1,1,F(" "));slcd(6,1,1,F(" "));slcd(11,1,1,F(" "));
|
||||
int m[]={6,11,0};if (!LOCK) clcd(m[M],1,0);
|
||||
}
|
||||
|
||||
void updatespeed() { ///////////////////////////////////////////////////////////////////////// update fan speed
|
||||
if (bclr) slcd(0,0,6," ");
|
||||
if (bclr) slcd(0,0,6,F(" "));
|
||||
for (int i=0;i<2;i++) {
|
||||
slcd(6+i*5,0,1," ");
|
||||
if (cstate[i]) slcd(7+i*5,0,-4,"CAT");
|
||||
if (cstate[i]) slcd(7+i*5,0,-4,F("CAT"));
|
||||
else {
|
||||
if (F[i]) {
|
||||
if (bstate[i]) ilcd(1+i*3,0,-2, (((long)btime[i]*60000)-(MS-(long)bts[i]))/1000/60+1);
|
||||
else if (ostate[i]) ilcd(1+i*3,0,-2, (((long)otime[i]*3600000)-(MS-(long)ots[i]))/1000/60/60+1);
|
||||
ilcd(7+i*5,0,-4,round(xpm[i]));
|
||||
if ((!bstate[i] && xv[i]<v[i]) || (bstate[i] && xb[i]<b[i])) clcd(6+i*5,0,1);
|
||||
} else slcd(7+i*5,0,-4,"OFF");
|
||||
else {
|
||||
if (xv[i]>=v[i] && rnval[i]>0 && !bstate[i]) clcd(6+i*5,0,2);
|
||||
}
|
||||
} else slcd(7+i*5,0,-4,F("OFF"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -324,11 +415,15 @@ void slcd(int x,int y, int l,String s) { ///////////////////////////////////////
|
||||
}
|
||||
|
||||
void calcramp(int i) { ///////////////////////////////////////////////////////////// calculate speed ramp value
|
||||
xb[i]=b[i];if (bstate[i]) xb[i]=cut(((b[i]-v[i])/(rtime[i]*1000.0)*(MS-bts[i]))+v[i],v[i],b[i]);
|
||||
xv[i]=v[i];xv[i]=cut(((v[i]-FANMIN)/(rtime[i]*1000.0)*(MS-vts[i]))+FANMIN,FANMIN,v[i]);
|
||||
xb[i]=b[i];
|
||||
int rt=rtime[i]?rtime[i]:1;
|
||||
if (bstate[i]) xb[i]=cut(((b[i]-v[i])/(rt*1000.0)*(MS-bts[i]))+v[i],v[i],b[i]);
|
||||
xv[i]=v[i];
|
||||
xv[i]=cut(((v[i]-FANMIN)/(rt*1000.0)*(MS-vts[i]))+FANMIN,FANMIN,v[i]);
|
||||
if (rnval[i]>0 && xv[i]>=v[i]) xv[i]=cut(xv[i]+rnd[i],FANMIN,FANMAX);
|
||||
}
|
||||
|
||||
void setPWM(int n,int v) { ///////////////////////////////////////////////////////////////// set value to OCR1x
|
||||
void setPWM(int n,int v) { /////////////////////////////////////////// set value to OCR1x and states to off pin
|
||||
if (n==0) OCR1A=v;
|
||||
if (n==1) OCR1B=v;
|
||||
}
|
||||
@ -338,8 +433,14 @@ void updatePWM() { /////////////////////////////////////////////////////////////
|
||||
v[i]=cut(v[i],FANMIN,FANMAX);
|
||||
b[i]=cut(b[i],FANMIN,FANMAX);
|
||||
calcramp(i);
|
||||
if (!F[i]) setPWM(i,0); else setPWM(i,cut((bstate[i]?xb[i]:xv[i])/(FANMAX/320.0)+r[i],0,320));
|
||||
if (!F[i]) setPWM(i,0); else setPWM(i,cut((bstate[i]?xb[i]:xv[i])/(FANMAX/320.0)+r[i],1,320));
|
||||
}
|
||||
|
||||
if ((bstate[0]?b[0]:v[0])>=RTHRES) digitalWrite(R0,LOW);
|
||||
else digitalWrite(R0,HIGH);
|
||||
|
||||
if ((bstate[1]?b[1]:v[1])>=RTHRES) digitalWrite(R1,LOW);
|
||||
else digitalWrite(R1,HIGH);
|
||||
}
|
||||
|
||||
void rpmint0() {;ac[0]++;bc[0]++;} ///////////////////////////////////////////////////////////// rpm interrupts
|
||||
@ -354,17 +455,10 @@ void eew(int adr, int val) {;EEPROM.write(adr*2,val%256);EEPROM.write(adr*2+1,va
|
||||
void save() { /////////////////////////////////////////////////////////////////////////////////// save settings
|
||||
for (int i=0;i<2;i++) {
|
||||
eew(1+i,v[i]);eew(3+i,b[i]);eew(5+i,btime[i]);eew(7+i,cat[i]);
|
||||
eew(9+i,ctime[i]);eew(11+i,F[i]);eew(13+i,rtime[i]);
|
||||
eew(9+i,ctime[i]);eew(11+i,F[i]);eew(13+i,rtime[i]);eew(15+i,rnval[i]);
|
||||
}
|
||||
eew(100,seed);
|
||||
for (int i=0;i<NP;i++) eew(200+i,*P[i]);
|
||||
}
|
||||
|
||||
int cutcmd(String data) { ///////////////////////////////////////////////////////////// get saperated substring
|
||||
int mi=data.length(),n=0,j=0;
|
||||
for (int i=0;i<=mi;i++) {
|
||||
if (data.charAt(i) == ':' || i == mi) {;cmd[n]=data.substring(j,i);j=i+1;n++;}
|
||||
}
|
||||
for (int i=1;i<n;i++) icmd[i]=cmd[i].toInt();
|
||||
return n;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////// END
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////// END
|
||||
|
60
stirctl
@ -1,60 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
###################################################################################### stir controll (mwx'2019)
|
||||
use Device::SerialPort;
|
||||
use Time::HiRes qw( usleep );
|
||||
|
||||
$dev='/dev/ttyACM0';
|
||||
|
||||
my $port = Device::SerialPort->new($dev); ################################################### setup serial port
|
||||
|
||||
$port->baudrate(9600);
|
||||
$port->databits(8);
|
||||
$port->parity("none");
|
||||
$port->stopbits(1);
|
||||
|
||||
$port->lookfor();
|
||||
|
||||
$cmd=join(':',@ARGV);$cmd='info' if ($cmd=~/^\s*$/);
|
||||
|
||||
@r=split(':',&scmd($cmd));
|
||||
|
||||
print " Left Right\n";
|
||||
printf("Stirrer On: %6d %6d\n", $r[0],$r[14]);
|
||||
printf("Speed: %6d %6d\n", $r[1],$r[15]);
|
||||
printf("Boost Speed: %6d %6d\n", $r[2],$r[16]);
|
||||
printf("RPM: %6d %6d\n", $r[3],$r[17]);
|
||||
printf("Average RPM: %6d %6d\n", $r[4],$r[18]);
|
||||
printf("Regulation: %6d %6d\n", $r[5],$r[19]);
|
||||
printf("Boost On: %6d %6d\n", $r[6],$r[20]);
|
||||
printf("Boost Time: %6d %6d\n", $r[7],$r[21]);
|
||||
printf("Catch On: %6d %6d\n", $r[8],$r[22]);
|
||||
printf("Catch Time: %6d %6d\n", $r[9],$r[23]);
|
||||
printf("Rise Time: %6d %6d\n", $r[10],$r[24]);
|
||||
printf("Off Time: %6d %6d\n", $r[11],$r[25]);
|
||||
printf("Boost Remain: %6d %6d\n", $r[12],$r[26]);
|
||||
printf("Off Remain: %6d %6d\n", $r[13],$r[27]);
|
||||
printf("Error: %d\nVersion: %s\n", $r[29],$r[28]);
|
||||
|
||||
|
||||
sub scmd() { ##################################################################################### send command
|
||||
my($cmd,$quiet)=@_;
|
||||
|
||||
$port->write($cmd);
|
||||
my $founddata=0;
|
||||
$msg="";
|
||||
for ($i=0;$i<1000;$i++) {
|
||||
|
||||
$in = $port->lookfor();
|
||||
$founddata=1 if ($in ne "");
|
||||
$msg.=$in;
|
||||
|
||||
last if ($in eq "" && $founddata);
|
||||
|
||||
&usleep(2500);
|
||||
}
|
||||
|
||||
$msg=~s/[\r\n]+//g;
|
||||
return $msg;
|
||||
}
|
||||
|
||||
########################################################################################################### END
|