Compare commits
125 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 | ||
![]() |
2eaf665040 | ||
![]() |
7874be569d | ||
![]() |
9bc3f17c2f | ||
![]() |
820c572e00 | ||
![]() |
5919838340 | ||
![]() |
03a2ce96bb | ||
![]() |
2ef9de522c | ||
![]() |
589de4957a | ||
![]() |
1d04de4b3c | ||
![]() |
868f3eb34d | ||
![]() |
5ad12e208f | ||
![]() |
8ccff7690e | ||
![]() |
215b49e77f | ||
![]() |
217f838e07 | ||
![]() |
cf64eeaf3e | ||
![]() |
92c466d2e0 | ||
![]() |
bb7b7bde63 | ||
![]() |
f8f85e70a8 | ||
![]() |
56af221014 | ||
![]() |
0a422d1c4d | ||
![]() |
8be8fc23db | ||
![]() |
44db8b9e68 | ||
![]() |
3d4b9a4dfd | ||
![]() |
2e51bb60d8 | ||
![]() |
1fb852f342 |
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
*.hex
|
||||
*.elf
|
||||
.DS_Store
|
||||
|
BIN
Gerber_Stir V2.zip
Normal file
134
README.md
@ -1,55 +1,129 @@
|
||||
# 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
|
||||
|
||||
All functions are controlled by the KY-040 encoder:
|
||||
|
||||
* **Press briefly:** change between menu, stirrer 1 and stirrer 2
|
||||
* **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)
|
||||
* **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 sets the boost time in minutes.
|
||||
* **BTIME**: turn changes the boost time in minutes.
|
||||
* **CATCH**: turn activates/deactivates the fishing function
|
||||
* **CTIME**: turn sets the interval in minutes for the fish catching 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**:
|
||||
* **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:
|
||||
|
||||
* **Bottom Left**: Menu
|
||||
* **Bottom centre/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 function.
|
||||
* **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)|
|
||||
|FANMAX|maximum speed of the fan (it is important that this is the real maximum value of the fan)|
|
||||
|RINTERVAL|regulation interval (ms)|
|
||||
|RDELAY|extra regulation delay when value changes (ms)|
|
||||
|RTOL|regulation tolerance|
|
||||
|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|
|
||||
|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|
|
||||
|
||||
## 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_promicro.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.
|
12
cad/magnetmount/README.md
Normal file
@ -0,0 +1,12 @@
|
||||
# CAD Files
|
||||
|
||||
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>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/micworg/stir/blob/master/images/magnetmount_openscad.png" width=500>
|
||||
</p>
|
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
8878
cad/magnetmount/magnetmount140x10.stl
Normal file
12434
cad/magnetmount/magnetmount140x20.stl
Normal file
BIN
images/magnetmount.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
images/magnetmount_openscad.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
images/pcb_top.jpg
Normal file
After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 140 KiB |
BIN
images/stir+pcb.jpg
Normal file
After Width: | Height: | Size: 295 KiB |
BIN
images/stir.jpg
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 191 KiB |
BIN
images/v2_board.jpg
Normal file
After Width: | Height: | Size: 412 KiB |
BIN
libraries/LiquidCrystal_I2C.zip
Normal file
603
stir.ino
@ -1,55 +1,125 @@
|
||||
/////////////////////////////////////////////////////////////////////////////// Stir Control (mwx'2019, v1.2.6)
|
||||
//////////////////////////////////////////////////////////////////////////////////// Stir Control V2 (mwx'2019)
|
||||
#include <EEPROM.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
|
||||
#define SX Serial.print
|
||||
#define SXN Serial.println
|
||||
#define MS (long)millis()
|
||||
#define NP 25
|
||||
|
||||
int SPEEDINC = 50; // speed increment
|
||||
String VERSION = "2.1.2";
|
||||
|
||||
int FANMIN = 200; // fan minimum speed
|
||||
int FANMAX = 1600; // fan maximum speed
|
||||
int FANINIT = 0; // initialize fan with high voltage (0/1)
|
||||
|
||||
int CATCHSTOP = 20000; // catch stop period
|
||||
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 = 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 (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)
|
||||
|
||||
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
|
||||
|
||||
int RINTERVAL = 5000; // regulation interval
|
||||
int RDELAY = 2000; // regulation delay on changes
|
||||
int RTOL = 8; // regulation tolerance
|
||||
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)
|
||||
|
||||
int SAVETAG = 1004; // save tag
|
||||
int RNDINTERVAL = 300; // randon value range change interval (sec)
|
||||
|
||||
int SINTERVAL = 20; // speed measurement internval (ds)
|
||||
int SAVERAGE = 4; // speed measurement average
|
||||
|
||||
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 v0,b0,r0,v1,b1,r1,fanstate0,fanstate1; // speed and regulation
|
||||
long rpmcount0,rpmcount1; // rpm counter
|
||||
double rpm0,rpm1; // rpm
|
||||
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,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
|
||||
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
|
||||
|
||||
long sts,rts,swts,bts,ox,savets,catchts0,catchts1,stop0,stop1,b0ts,b1ts; // timing
|
||||
int bdelay,bprocess,enclast,encval,swmode,mode; // button/encoder processing
|
||||
int OK,SAVE,LOCK,bstate0,bstate1,btime0,btime1,catch0,catch1,ctime0,ctime1; // operation state
|
||||
char form[8],out[16];String str; // string buffer
|
||||
|
||||
|
||||
void setup() { ////////////////////////////////////////////////////////////////////////////////////////// SETUP
|
||||
rpmcount0=0;rpmcount1=0;rpm0=0;rpm1=0;bprocess=0;r0=0;r1=0;swmode=2;
|
||||
void(* resetFunc) (void) = 0;
|
||||
|
||||
Serial.begin(9600); // start serial
|
||||
void setup() { ////////////////////////////////////////////////////////////////////////////////////////// SETUP
|
||||
|
||||
lcd.init();lcd.backlight();lcd.clear(); // initialize lcd
|
||||
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++;
|
||||
|
||||
pinMode(PWM0,OUTPUT);pinMode(PWM1,OUTPUT); // set PWM pins
|
||||
pinMode(CLK,INPUT);pinMode(DT,INPUT);pinMode(SW,INPUT); // set KY-040 pins
|
||||
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);
|
||||
@ -59,203 +129,181 @@ void setup() { /////////////////////////////////////////////////////////////////
|
||||
|
||||
SAVE=0; // load/initialize settings
|
||||
if (eer(0)!=SAVETAG) {
|
||||
v0=300;v1=300;b0=700;b1=700;btime0=30;btime1=30;catch0=0;catch1=0;ctime0=120;ctime1=120;
|
||||
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 {
|
||||
v0=eer(1);v1=eer(2);b0=eer(3);b1=eer(4);btime0=eer(5);btime1=eer(6);
|
||||
catch0=eer(7);catch1=eer(8);ctime0=eer(9);ctime1=eer(10);
|
||||
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);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);
|
||||
}
|
||||
|
||||
enclast=digitalRead(CLK); // get encoder state
|
||||
fanstate0=0;fanstate1=0;OCR1A=0;OCR1B=0; // turn fans off
|
||||
sts=MS;rts=MS;swts=MS;bts=MS;savets=MS;catchts0=MS;catchts1=MS;stop0=MS;stop1=MS; // set timer
|
||||
bstate0=0;bstate1=0;mode=0;updatelcd();updatespeed();updatemarker();LOCK=0; // set initial states
|
||||
}
|
||||
clkorg=CLK;dtorg=DT;if (SWAPENC) {;DT=clkorg;CLK=dtorg;} // swap encoder direction
|
||||
|
||||
lset();
|
||||
|
||||
enclast=digitalRead(CLK); // get encoder state
|
||||
|
||||
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 (SAVE>0 && MS-savets>60000) {;save();SAVE=0;savets=MS;} ////////////////////////// save settings if needed
|
||||
if (SAVE>0 && MS-savets>SAVEDELAY) {;save();SAVE=0;savets=MS;} ////////////////////// save settings if needed
|
||||
if (MS-savets>SAVEDELAY/5) bclr=1;
|
||||
|
||||
if (catch0 && MS-catchts0>(long)ctime0*60000) { ////////////////////////////////////// check catch fish state
|
||||
catchts0=MS;stop0=MS+CATCHSTOP;
|
||||
updatePWM();
|
||||
}
|
||||
if (catch1 && MS-catchts1>(long)ctime1*60000) {
|
||||
catchts1=MS;stop1=MS+CATCHSTOP;
|
||||
updatePWM();
|
||||
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);
|
||||
}
|
||||
|
||||
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]>((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();
|
||||
}
|
||||
|
||||
if (bstate[i] && MS-bts[i]>(long)btime[i]*60000) {;bstate[i]=0;S=0;updatelcd();} //////// check boost state
|
||||
|
||||
}
|
||||
|
||||
if (bstate0 && MS-b0ts>(long)btime0*60000) {;bstate0=0;mode=0;updatelcd();} /////////////// check boost state
|
||||
if (bstate1 && MS-b1ts>(long)btime1*60000) {;bstate1=0;mode=0;updatelcd();}
|
||||
|
||||
if (Serial.available() > 0) { ////////////////////////////////////////////////////////// serial communication
|
||||
str=Serial.readString();OK=0;
|
||||
|
||||
if (str=="info") {;serinfo();OK=1;} // info
|
||||
|
||||
if (str.substring(0,5)=="speed") { // speed <fan0> <fan1>
|
||||
v0=sstr(str,':',1).toInt();v1=sstr(str,':',2).toInt();
|
||||
updatePWM();r0=0;r1=0;rts=MS+RDELAY;
|
||||
SAVE++;OK=1;updatelcd();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,6)=="bspeed") { // bspeed <fan0> <fan1>
|
||||
b0=sstr(str,':',1).toInt();b1=sstr(str,':',2).toInt();
|
||||
updatePWM();r0=0;r1=0;rts=MS+RDELAY;
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,2)=="on") { // on <fan0> <fan1> (value: 0 or 1)
|
||||
if (sstr(str,':',1).toInt()==1) {;fanstate0=1;r0=0;} else fanstate0=0;
|
||||
if (sstr(str,':',2).toInt()==1) {;fanstate1=1;r1=0;} else fanstate1=0;
|
||||
updatePWM();rts=MS+RDELAY;
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,5)=="boost") { // boost <fan0> <fan1> (value: 0 or 1)
|
||||
if (sstr(str,':',1).toInt()==1) {;rts=MS+RDELAY;bstate0=1;b0ts=MS;} else {;bstate0=0;}
|
||||
if (sstr(str,':',2).toInt()==1) {;rts=MS+RDELAY;bstate1=1;b1ts=MS;} else {;bstate1=0;}
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,5)=="catch") { // catch <fan0> <fan1> (value: 0 or 1)
|
||||
if (sstr(str,':',1).toInt()==1) {;catch0=1;catchts0=MS;} else {;catch0=0;}
|
||||
if (sstr(str,':',2).toInt()==1) {;catch1=1;catchts1=MS;} else {;catch1=0;}
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,5)=="btime") { // btime <fan0> <fan1> (value: 0-60)
|
||||
btime0=cut(sstr(str,':',1).toInt(),0,60);btime1=cut(sstr(str,':',2).toInt(),0,60);
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (str.substring(0,5)=="ctime") { // ctime <fan0> <fan1> (value: 60-240)
|
||||
ctime0=cut(sstr(str,':',1).toInt(),60,240);ctime1=cut(sstr(str,':',2).toInt(),60,240);
|
||||
SAVE++;OK=1;updatelcd();updatespeed();serinfo();
|
||||
}
|
||||
|
||||
if (!OK) SXN("ERROR");
|
||||
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) { ////////////////////////////////////////////////////////////////////////// regulation
|
||||
|
||||
rpm0=rpmcount0/((MS-sts)/1000.0)*30.0;
|
||||
rpm1=rpmcount1/((MS-sts)/1000.0)*30.0;
|
||||
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;
|
||||
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;rpmcount0=0;rpmcount1=0;
|
||||
|
||||
if (!fanstate0) r0=0;
|
||||
else if (abs((bstate0?b0:v0)-rpm0)>RTOL) r0+=((bstate0?b0:v0)-rpm0)/10.0+1.0;
|
||||
|
||||
if (!fanstate1) r1=0;
|
||||
else if (abs((bstate1?b1:v1)-rpm1)>RTOL) r1+=((bstate1?b1:v1)-rpm1)/10.0+1.0;
|
||||
|
||||
updatePWM();updatespeed();rts=MS;
|
||||
}
|
||||
sts=MS;rts=MS;
|
||||
updatespeed();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
if (bdelay>0 && MS-bts>100) { // long button press
|
||||
if (bdelay>0 && MS-buts>100) { // long button press
|
||||
if (bdelay>20) {
|
||||
|
||||
if (swmode==0 && mode==0 && !LOCK) { // fan 0 on/off
|
||||
if (fanstate0==0) {;rts=MS+RDELAY;fanstate0=1;r0=0;updatePWM();}
|
||||
else {;fanstate0=0;}
|
||||
updatespeed();
|
||||
}
|
||||
if (swmode==1 && mode==0 && !LOCK) { // fan 1 on/off
|
||||
if (fanstate1==0) {;rts=MS+RDELAY;fanstate1=1;r1=0;updatePWM();}
|
||||
else {;fanstate1=0;}
|
||||
updatespeed();
|
||||
}
|
||||
|
||||
if (swmode==0 && mode==1 && !LOCK) { // boost fan 0 on/off
|
||||
if (bstate0==0) {
|
||||
rts=MS+RDELAY;bstate0=1;b0ts=MS;fanstate0=1;r0=0;updatePWM();
|
||||
} else {;bstate0=0;}
|
||||
updatespeed();
|
||||
}
|
||||
if (swmode==1 && mode==1 && !LOCK) { // boost fan 1 on/off
|
||||
if (bstate1==0) {
|
||||
rts=MS+RDELAY;bstate1=1;b1ts=MS;fanstate1=1;r1=0;updatePWM();
|
||||
} else {;bstate1=0;}
|
||||
updatespeed();
|
||||
}
|
||||
|
||||
if (swmode==2) { // lock/unlock
|
||||
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;
|
||||
}
|
||||
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();}
|
||||
}
|
||||
}
|
||||
|
||||
bdelay=0;
|
||||
save();updatespeed();bdelay=0;
|
||||
|
||||
} else if (bdelay>0 && bdelay<20 && !LOCK) { // short button press: switch menu -> fan 0 -> fan 1
|
||||
swmode++;if (swmode>2) swmode=0;
|
||||
} else if (bdelay>0 && bdelay<20 && !LOCK) { // short button press, switch: menu -> fan 0 -> fan 1
|
||||
M++;
|
||||
if (S==8 && M==2) M=0;
|
||||
if (M>2) M=0;
|
||||
updatemarker();
|
||||
bdelay=0;
|
||||
}
|
||||
|
||||
bts=MS;
|
||||
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 (swmode==0 && mode==0) v0+=SPEEDINC; // fan 0 speed up
|
||||
if (swmode==1 && mode==0) v1+=SPEEDINC; // fan 1 speed up
|
||||
if (swmode==0 && mode==1) b0+=SPEEDINC; // boost 0 speed up
|
||||
if (swmode==1 && mode==1) b1+=SPEEDINC; // boost 1 speed up
|
||||
if (swmode==0 && mode==2) btime0++; // boost time 0 up
|
||||
if (swmode==1 && mode==2) btime1++; // boost time 1 up
|
||||
if (swmode==0 && mode==3) catch0++; // catch 0 on/off
|
||||
if (swmode==1 && mode==3) catch1++; // catch 1 on/off
|
||||
if (swmode==0 && mode==4) ctime0+=10; // catch time 0 up
|
||||
if (swmode==1 && mode==4) ctime1+=10; // catch time 1 up
|
||||
if (swmode==2) mode++; // scroll menu
|
||||
if (M==2) S++; // scroll menu
|
||||
else {
|
||||
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 (swmode==0 && mode==0) v0-=SPEEDINC; // fan 0 speed down
|
||||
if (swmode==1 && mode==0) v1-=SPEEDINC; // fan 1 speed down
|
||||
if (swmode==0 && mode==1) b0-=SPEEDINC; // boost 0 speed down
|
||||
if (swmode==1 && mode==1) b1-=SPEEDINC; // boost 1 speed down
|
||||
if (swmode==0 && mode==2) btime0--; // boost time 0 down
|
||||
if (swmode==1 && mode==2) btime1--; // boost time 1 down
|
||||
if (swmode==0 && mode==3) catch0--; // catch 0 on/off
|
||||
if (swmode==1 && mode==3) catch1--; // catch 1 on/off
|
||||
if (swmode==0 && mode==4) ctime0-=10; // catch time 0 down
|
||||
if (swmode==1 && mode==4) ctime1-=10; // catch time 1 down
|
||||
if (swmode==2) mode--; // scroll menu
|
||||
if (M==2) S--; // scroll menu
|
||||
else {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
if (swmode==0 && mode==0) {;updatePWM();r0=0;rts=MS+RDELAY;} // apply speed change fan 0
|
||||
if (swmode==1 && mode==0) {;updatePWM();r1=0;rts=MS+RDELAY;} // apply speed change fan 1
|
||||
if (swmode==0 && mode==1) {;updatePWM();r0=0;rts=MS+RDELAY;} // aply boost speed change fan 0
|
||||
if (swmode==1 && mode==1) {;updatePWM();r1=0;rts=MS+RDELAY;} // aply boost speed change fan 1
|
||||
|
||||
if (swmode==0 && mode==2) btime0=cut(btime0,0,60); // check boost time fan 0
|
||||
if (swmode==1 && mode==2) btime1=cut(btime1,0,60); // check boost time fan 1
|
||||
|
||||
if (swmode==0 && mode==3) {;catch0=cut(catch0,0,1);catchts0=MS;} // check catch fan 0
|
||||
if (swmode==1 && mode==3) {;catch1=cut(catch1,0,1);catchts1=MS;} // check catch fan 1
|
||||
|
||||
if (swmode==0 && mode==4) ctime0=cut(ctime0,60,240); // check catch time fan 0
|
||||
if (swmode==1 && mode==4) ctime1=cut(ctime1,60,240); // check catch time fan 1
|
||||
|
||||
if (swmode==2) {;if (mode<0) mode=4;if (mode>4) mode=0;} // check menu mode
|
||||
|
||||
SAVE++;updatelcd();delay(50);
|
||||
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*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
|
||||
}
|
||||
|
||||
C=cut(C,0,NP-1); // check configuration mode
|
||||
|
||||
if (M==2) S=cut(S,0,8); // check menu mode
|
||||
|
||||
SAVE++;updatelcd();delay(25);
|
||||
}
|
||||
}
|
||||
enclast=encval;
|
||||
@ -264,110 +312,153 @@ void loop() { //////////////////////////////////////////////////////////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////// SUPPORT
|
||||
|
||||
void updatelcd() { ///////////////////////////////////////////////////////////////////////////////// update LCD
|
||||
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) {
|
||||
slcd(1,1,5,"SPEED");ilcd(7,1,-4,int(v0));ilcd(12,1,-4,int(v1));
|
||||
if (s<=SPEEDSTEP1) return s-SPEEDINC1;
|
||||
if (s<=SPEEDSTEP2) return s-SPEEDINC2;
|
||||
return s-SPEEDINC3;
|
||||
}
|
||||
if (mode==1) {
|
||||
slcd(1,1,5,"BOOST");ilcd(7,1,-4,int(b0));ilcd(12,1,-4,int(b1));
|
||||
if (s<SPEEDSTEP1) return s+SPEEDINC1;
|
||||
if (s<SPEEDSTEP2) return s+SPEEDINC2;
|
||||
return s+SPEEDINC3;
|
||||
}
|
||||
if (mode==2) {
|
||||
slcd(1,1,5,"BTIME");ilcd(7,1,-4,int(btime0));ilcd(12,1,-4,int(btime1));
|
||||
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++;
|
||||
}
|
||||
|
||||
void fset(int n,int s) { /////////////////////////////////////////////////////////////// set fan state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+(RDELAY*100);F[n]=1;catts[n]=vts[n]=MS;r[n]=0;
|
||||
} else {
|
||||
F[n]=0;bstate[n]=0;
|
||||
}
|
||||
if (mode==3) {
|
||||
slcd(1,1,5,"CATCH");
|
||||
if (catch0==0) slcd( 7,1,-4,"OFF"); else slcd( 7,1,-3,"ON");
|
||||
if (catch1==0) slcd(12,1,-4,"OFF"); else slcd(12,1,-3,"ON");
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void bset(int n,int s) { ///////////////////////////////////////////////////////////// set boost state (on/off)
|
||||
if (s==1) {
|
||||
rts=MS+(RDELAY*100);bstate[n]=1;bts[n]=MS;F[n]=1;vts[n]=MS;
|
||||
} else {
|
||||
bstate[n]=0;rts=MS+(RDELAY*100);
|
||||
}
|
||||
if (mode==4) {
|
||||
slcd(1,1,5,"CTIME");ilcd(7,1,-4,int(ctime0));ilcd(12,1,-4,int(ctime1));
|
||||
}
|
||||
}
|
||||
updatePWM();
|
||||
SAVE++;
|
||||
}
|
||||
|
||||
void updatelcd() { ///////////////////////////////////////////////////////////////////////////////// update LCD
|
||||
|
||||
void updatemarker() { /////////////////////////////////////////////////////////////////// update current marker
|
||||
slcd(0,1,1," ");slcd(6,1,1," ");slcd(11,1,1," ");
|
||||
if (!LOCK) {
|
||||
if (swmode==0) slcd( 6,1,1,">");
|
||||
if (swmode==1) slcd(11,1,1,">");
|
||||
if (swmode==2) slcd( 0,1,1,">");
|
||||
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,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
|
||||
slcd(1,0,5," ");
|
||||
if (fanstate0) {
|
||||
if (MS<stop0) slcd(7,0,-4,"CAT");
|
||||
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,F("CAT"));
|
||||
else {
|
||||
if (bstate0) ilcd(1,0,2, (((long)btime0*60000)-(MS-(long)b0ts))/1000/60+1);
|
||||
else slcd(7,0,1," ");
|
||||
ilcd(7,0,-4,round(rpm0));
|
||||
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,F("OFF"));
|
||||
}
|
||||
} else slcd(7,0,-4,"OFF");
|
||||
|
||||
if (fanstate1) {
|
||||
if (MS<stop1) slcd(12,0,-4,"CAT");
|
||||
else {
|
||||
if (bstate1) ilcd(4,0,2, (((long)btime1*60000)-(MS-(long)b1ts))/1000/60+1);
|
||||
else slcd(12,0,1," ");
|
||||
ilcd(12,0,-4,round(rpm1));
|
||||
}
|
||||
} else slcd(12,0,-4,"OFF");
|
||||
}
|
||||
}
|
||||
|
||||
void serinfo() { /////////////////////////////////////////////////////////////////////////// serial info output
|
||||
SX(fanstate0);SX(":");SX((int)(v0));SX(":");SX((int)(b0));SX(":");
|
||||
SX(fanstate1);SX(":");SX((int)(v1));SX(":");SX((int)(b1));SX(":");
|
||||
SX(rpm0);SX(":");SX(rpm1);SX(":");SX(r0);SX(":");SX(r1);SX(":");
|
||||
SX(bstate0);SX(":");SX(bstate1);SX(":");SX(btime0);SX(":");SX(btime1);SX(":");
|
||||
SX(catch0);SX(":");SX(catch1);SX(":");SX(ctime0);SX(":");SX(ctime1);SXN("");
|
||||
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);
|
||||
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);
|
||||
sprintf(form,"%%%ds",l);sprintf(out,form,s.c_str());lcd.setCursor(x,y);lcd.print(out);
|
||||
}
|
||||
|
||||
void updatePWM() { ///////////////////////////////////////////////////////////////////// update PWM (fan speed)
|
||||
v0=cut(v0,FANMIN,FANMAX);v1=cut(v1,FANMIN,FANMAX);
|
||||
b0=cut(b0,FANMIN,FANMAX);b1=cut(b1,FANMIN,FANMAX);
|
||||
|
||||
if (!fanstate0 || MS<stop0) OCR1A=0;
|
||||
else OCR1A=cut((bstate0?b0:v0)/(FANMAX/320.0)+r0,0,320);
|
||||
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);
|
||||
}
|
||||
|
||||
if (!fanstate1 || MS<stop1) OCR1B=0;
|
||||
else OCR1B=cut((bstate1?b1:v1)/(FANMAX/320.0)+r1,0,320);
|
||||
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;
|
||||
}
|
||||
|
||||
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],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() {;rpmcount0++;} ///////////////////////////////////////////////////////////////// rpm interrupts
|
||||
void rpmint1() {;rpmcount1++;}
|
||||
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
|
||||
eew(1,v0);eew(2,v1);eew(3,b0);eew(4,b1);eew(5,btime0);eew(6,btime1);
|
||||
eew(7,catch0);eew(8,catch1);eew(9,ctime0);eew(10,ctime1);
|
||||
}
|
||||
|
||||
String sstr(String data, char sep, int idx) { ///////////////////////////////////////// get saperated substring
|
||||
int found=0;
|
||||
int si[]={0,-1};
|
||||
int mi=data.length()-1;
|
||||
|
||||
for (int i=0; i<=mi && found<=idx; i++) {
|
||||
if (data.charAt(i) == sep || i == mi) {
|
||||
found++;si[0]=si[1]+1;si[1]=(i==mi) ? i+1 : i;
|
||||
}
|
||||
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]);
|
||||
}
|
||||
return found>idx?data.substring(si[0],si[1]):"";
|
||||
eew(100,seed);
|
||||
for (int i=0;i<NP;i++) eew(200+i,*P[i]);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////// END
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////// END
|
||||
|