├── experiment5 ├── period-length-filtered ├── conditions.txt ├── Zero crossing pulse length, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png ├── period-length.py ├── half-zc-pulse-length.py └── zc-pulse-length.py ├── experiment6 ├── period-length-filtered ├── conditions.txt ├── Zero crossing pulse length, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length, R input = 16k4 R pullup = 10k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png ├── zc-pulse-length-piez.py ├── period-length.py └── zc-pulse-length.py ├── experiment3 ├── conditions.txt ├── Zero crossing pulse length.png ├── Zero crossing pulse length FFT.png ├── Pulse length differeces for adjacent pulses.png ├── Zero crossing pulse length, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length, R input = 32k8, R pullup = 10k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length FFT, R input = 32k8 R pullup = 10k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png ├── Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 10k.png ├── period-length.py ├── half-zc-pulse-length.py └── zc-pulse-length.py ├── experiment4 ├── conditions.txt ├── Zero crossing pulse length, R input = 16k4 R pullup = 10k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png ├── period-length.py └── zc-pulse-length.py ├── ssr.pdf ├── ssr.png ├── BTA41.pdf ├── HBD855-D.pdf ├── firmware ├── .gitignore ├── .settings │ └── de.innot.avreclipse.core.prefs ├── .project ├── usiTwiSlave.h ├── conductionAngles.c ├── Makefile ├── main.c └── .cproject ├── zc-scope.png ├── P_100_MOC3052 ├── ssr-gerbers.zip ├── P_100_MOC3052.pdf ├── triac bloc top.jpg ├── experiment-summary.ods ├── experment-summary.png ├── triac bloc bottom.jpg ├── power-vs-cond-angle.png ├── Littelfuse_Fuse_314_324.pdf ├── controller-atmega8 ├── p82b96.pdf ├── screw-term2pin.mod ├── conn35.kicad_mod ├── p82b96.lib ├── controller.pro ├── controller.cmp └── controller-cache.lib ├── experiment2 ├── conditions.txt ├── zc-pulse-length-noise.png ├── period-length-filtered.png ├── zc-pulse-length-noise2.png ├── zc-pulse-length-noise3.png ├── Zero crossing pulse length, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length, R input = 32k8, R pullup = 47k.png ├── Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png ├── Zero crossing pulse length FFT, R input = 32k8 R pullup = 47k.png ├── Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png ├── Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 47k.png ├── period-length.py ├── half-zc-pulse-length.py ├── zc-pulse-length.py └── calibrated-period-length ├── controller-attiny1634 ├── p82b96.pdf ├── p82b96.lib ├── controller.pro ├── controller.cmp ├── controller-cache.lib └── controller.net ├── LTV-814H_824H_844H (M,S,S_TA1).pdf ├── experiment1 ├── impulse-response-linear.png ├── step-response-accel10.csv ├── exp1.py ├── step-response-linear2.csv └── step-response-linear.csv ├── gerbers ├── ssr-NPTH.drl ├── ssr-Edge_Cuts.gbr ├── ssr-drl.rpt ├── ssr.drl ├── ssr-F_Mask.gts ├── ssr-B_Mask.gbs └── ssr-NPTH-drl_map.pho ├── README.md ├── power-resistor.mod ├── Resistor_Horizontal_RM30mm.kicad_mod ├── x-sinx.py ├── ssr.pro ├── ssr.cmp └── ssr-cache.lib /experiment5/period-length-filtered: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /experiment6/period-length-filtered: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /experiment3/conditions.txt: -------------------------------------------------------------------------------- 1 | Power resistors 32.8k 2 | Pullup 10k 3 | -------------------------------------------------------------------------------- /experiment4/conditions.txt: -------------------------------------------------------------------------------- 1 | Power resistors 16.4k 2 | Pullup 10k 3 | -------------------------------------------------------------------------------- /experiment5/conditions.txt: -------------------------------------------------------------------------------- 1 | Power resistors 16.4k 2 | Pullup 1k 3 | -------------------------------------------------------------------------------- /experiment6/conditions.txt: -------------------------------------------------------------------------------- 1 | Power resistors 16.4k 2 | Pullup 10k 3 | -------------------------------------------------------------------------------- /ssr.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/ssr.pdf -------------------------------------------------------------------------------- /ssr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/ssr.png -------------------------------------------------------------------------------- /BTA41.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/BTA41.pdf -------------------------------------------------------------------------------- /HBD855-D.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/HBD855-D.pdf -------------------------------------------------------------------------------- /firmware/.gitignore: -------------------------------------------------------------------------------- 1 | /Release 2 | /Debug 3 | *.o 4 | *.i 5 | *.s 6 | *.elf 7 | -------------------------------------------------------------------------------- /zc-scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/zc-scope.png -------------------------------------------------------------------------------- /P_100_MOC3052: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/P_100_MOC3052 -------------------------------------------------------------------------------- /ssr-gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/ssr-gerbers.zip -------------------------------------------------------------------------------- /P_100_MOC3052.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/P_100_MOC3052.pdf -------------------------------------------------------------------------------- /triac bloc top.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/triac bloc top.jpg -------------------------------------------------------------------------------- /experiment-summary.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment-summary.ods -------------------------------------------------------------------------------- /experment-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experment-summary.png -------------------------------------------------------------------------------- /triac bloc bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/triac bloc bottom.jpg -------------------------------------------------------------------------------- /power-vs-cond-angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/power-vs-cond-angle.png -------------------------------------------------------------------------------- /Littelfuse_Fuse_314_324.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/Littelfuse_Fuse_314_324.pdf -------------------------------------------------------------------------------- /controller-atmega8/p82b96.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/controller-atmega8/p82b96.pdf -------------------------------------------------------------------------------- /experiment2/conditions.txt: -------------------------------------------------------------------------------- 1 | Power resistors on AC side - 4 * 8.2k=32.8k 2 | Pullup @ optocoupler output - 47k 3 | -------------------------------------------------------------------------------- /controller-attiny1634/p82b96.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/controller-attiny1634/p82b96.pdf -------------------------------------------------------------------------------- /LTV-814H_824H_844H (M,S,S_TA1).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/LTV-814H_824H_844H (M,S,S_TA1).pdf -------------------------------------------------------------------------------- /experiment2/zc-pulse-length-noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/zc-pulse-length-noise.png -------------------------------------------------------------------------------- /experiment1/impulse-response-linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment1/impulse-response-linear.png -------------------------------------------------------------------------------- /experiment2/period-length-filtered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/period-length-filtered.png -------------------------------------------------------------------------------- /experiment2/zc-pulse-length-noise2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/zc-pulse-length-noise2.png -------------------------------------------------------------------------------- /experiment2/zc-pulse-length-noise3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/zc-pulse-length-noise3.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length FFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length FFT.png -------------------------------------------------------------------------------- /experiment3/Pulse length differeces for adjacent pulses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Pulse length differeces for adjacent pulses.png -------------------------------------------------------------------------------- /experiment2/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment5/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment5/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment6/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Zero crossing pulse length, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment2/Zero crossing pulse length, R input = 32k8, R pullup = 47k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Zero crossing pulse length, R input = 32k8, R pullup = 47k.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length, R input = 32k8, R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length, R input = 32k8, R pullup = 10k.png -------------------------------------------------------------------------------- /experiment4/Zero crossing pulse length, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment4/Zero crossing pulse length, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment6/Zero crossing pulse length, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Zero crossing pulse length, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment2/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment2/Zero crossing pulse length FFT, R input = 32k8 R pullup = 47k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Zero crossing pulse length FFT, R input = 32k8 R pullup = 47k.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment3/Zero crossing pulse length FFT, R input = 32k8 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Zero crossing pulse length FFT, R input = 32k8 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment4/Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment4/Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment5/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment5/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment6/Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment6/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment2/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment2/Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 47k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment2/Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 47k.png -------------------------------------------------------------------------------- /experiment3/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment3/Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment3/Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment4/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment4/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment5/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment5/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /experiment6/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k.png -------------------------------------------------------------------------------- /experiment6/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Miceuz/triac-bloc/HEAD/experiment6/Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k.png -------------------------------------------------------------------------------- /gerbers/ssr-NPTH.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ;DRILL file {Pcbnew (2013-mar-13)-testing} date Tue 07 May 2013 10:03:13 PM CEST 3 | ;FORMAT={-:-/ absolute / metric / decimal} 4 | FMAT,2 5 | METRIC,TZ 6 | T1C3.000 7 | % 8 | G90 9 | G05 10 | M71 11 | T1 12 | X106.045Y-73.025 13 | X106.045Y-135.255 14 | X191.135Y-135.255 15 | X191.77Y-72.39 16 | T0 17 | M30 18 | -------------------------------------------------------------------------------- /gerbers/ssr-Edge_Cuts.gbr: -------------------------------------------------------------------------------- 1 | G04 (created by PCBNEW (2013-mar-13)-testing) date Tue 07 May 2013 10:03:09 PM CEST* 2 | %MOIN*% 3 | G04 Gerber Fmt 3.4, Leading zero omitted, Abs format* 4 | %FSLAX34Y34*% 5 | G01* 6 | G70* 7 | G90* 8 | G04 APERTURE LIST* 9 | %ADD10C,2.3622e-06*% 10 | %ADD11C,0.0059*% 11 | G04 APERTURE END LIST* 12 | G54D10* 13 | G54D11* 14 | X39250Y-25750D02* 15 | X39250Y-26250D01* 16 | X61750Y-25750D02* 17 | X39250Y-25750D01* 18 | X39250Y-55750D02* 19 | X39250Y-52250D01* 20 | X78250Y-55750D02* 21 | X39250Y-55750D01* 22 | X78250Y-25750D02* 23 | X78250Y-55750D01* 24 | X61750Y-25750D02* 25 | X78250Y-25750D01* 26 | X39250Y-26250D02* 27 | X39250Y-52250D01* 28 | M02* 29 | -------------------------------------------------------------------------------- /gerbers/ssr-drl.rpt: -------------------------------------------------------------------------------- 1 | Drill report for /home/miceuz/Xaltura/SSR/ssr.kicad_pcb 2 | Created on Tue 07 May 2013 10:03:17 PM CEST 3 | Drill report for plated through holes : 4 | T1 0.51mm 0.020" (21 holes) 5 | T2 0.81mm 0.032" (6 holes) 6 | T3 0.91mm 0.036" (2 holes) 7 | T4 1.00mm 0.039" (6 holes) 8 | T5 1.00mm 0.039" (10 holes) 9 | T6 1.02mm 0.040" (23 holes) 10 | T7 1.20mm 0.047" (2 holes) 11 | T8 1.40mm 0.055" (3 holes) 12 | T9 1.78mm 0.070" (4 holes) 13 | T10 2.00mm 0.079" (2 holes) 14 | T11 6.00mm 0.236" (3 holes) 15 | 16 | Total plated holes count 82 17 | 18 | 19 | Drill report for unplated through holes : 20 | T1 3.00mm 0.118" (4 holes) 21 | 22 | Total unplated holes count 4 23 | 24 | 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | triac-bloc 2 | ========== 3 | 4 | A universal power block based on triac. In essence this is a high power solid state relay augmented with some bells and whistles. 5 | 6 | ![TRIAC BLOC](http://wemakethings.net/assets/images/2013-10-27_triac-bloc.jpg) 7 | 8 | Bells and whistles: 9 | 10 | * Attiyny44 MCU on board 11 | * I2C interface 12 | * maximum power - 6kW 13 | * zero crossing detection 14 | * controllable via I2C protocol 15 | * phase shift dimmer mode 16 | * linear output power control 17 | * switch at zero-crossing mode 18 | * output filtering for dimmer mode 19 | * snubber network 20 | * “low level” zero-crossing signal output 21 | * “low level” triac trigger signal input 22 | * 4 spare MCU pins available for additional features 23 | * open source hardware and firmware 24 | 25 | More info available at: http://wemakethings.net/2013/10/27/triac-bloc/ 26 | -------------------------------------------------------------------------------- /firmware/.settings/de.innot.avreclipse.core.prefs: -------------------------------------------------------------------------------- 1 | avrtarget/ClockFrequency=8000000 2 | avrtarget/ExtRAMSize=0 3 | avrtarget/ExtendedRAM=false 4 | avrtarget/MCUType=attiny44 5 | avrtarget/UseEEPROM=false 6 | avrtarget/UseExtendedRAMforHeap=true 7 | avrtarget/avrdude/BitBangDelay= 8 | avrtarget/avrdude/Bitclock= 9 | avrtarget/avrdude/EEPROMFile= 10 | avrtarget/avrdude/EEPROMFromConfig=true 11 | avrtarget/avrdude/FlashFile= 12 | avrtarget/avrdude/FlashFromConfig=true 13 | avrtarget/avrdude/NoChipErase=false 14 | avrtarget/avrdude/NoSigCheck=false 15 | avrtarget/avrdude/NoVerify=false 16 | avrtarget/avrdude/NoWrite=false 17 | avrtarget/avrdude/OtherOptions= 18 | avrtarget/avrdude/ProgrammerID=programmerconfig.1 19 | avrtarget/avrdude/UseCounter=false 20 | avrtarget/avrdude/WriteEEPROM=false 21 | avrtarget/avrdude/WriteFlash=true 22 | avrtarget/perConfig=false 23 | eclipse.preferences.version=1 24 | -------------------------------------------------------------------------------- /firmware/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SSR 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | 14 | 15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 16 | full,incremental, 17 | 18 | 19 | 20 | 21 | 22 | org.eclipse.cdt.core.cnature 23 | de.innot.avreclipse.core.avrnature 24 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 26 | 27 | 28 | -------------------------------------------------------------------------------- /controller-atmega8/screw-term2pin.mod: -------------------------------------------------------------------------------- 1 | PCBNEW-LibModule-V1 Mon 22 Jul 2013 08:09:15 PM EEST 2 | # encoding utf-8 3 | Units mm 4 | $INDEX 5 | conn35 6 | $EndINDEX 7 | $MODULE conn35 8 | Po 0 0 0 15 51CE9A8D 00000000 ~~ 9 | Li conn35 10 | Cd Bornier d'alimentation 2 pins 11 | Kw DEV 12 | Sc 0 13 | AR /51343255 14 | Op 0 0 0 15 | T0 -5.588 5.842 1.524 1.524 0 0.3048 N V 21 N "" 16 | T1 0.29972 5.4991 1.524 1.524 0 0.3048 N V 21 N "" 17 | DS 3.50012 2.54 -3.50012 2.54 0.3048 21 18 | DS 3.50012 4.0005 3.50012 -2.99974 0.3048 21 19 | DS 3.50012 -2.99974 -3.50012 -2.99974 0.3048 21 20 | DS -3.50012 -2.99974 -3.50012 4.0005 0.3048 21 21 | DS -3.50012 4.0005 3.50012 4.0005 0.3048 21 22 | $PAD 23 | Sh "1" R 2.54 2.54 0 0 0 24 | Dr 1.22428 0 0 25 | At STD N 00E0FFFF 26 | Ne 2 "/VIN" 27 | Po -1.75006 0 28 | $EndPAD 29 | $PAD 30 | Sh "2" C 2.54 2.54 0 0 0 31 | Dr 1.22428 0 0 32 | At STD N 00E0FFFF 33 | Ne 1 "/A" 34 | Po 1.75006 0 35 | $EndPAD 36 | $EndMODULE conn35 37 | $EndLIBRARY 38 | -------------------------------------------------------------------------------- /power-resistor.mod: -------------------------------------------------------------------------------- 1 | PCBNEW-LibModule-V1 Sat 04 May 2013 10:37:49 AM CEST 2 | # encoding utf-8 3 | Units mm 4 | $INDEX 5 | Resistor_Horizontal_RM30mm 6 | $EndINDEX 7 | $MODULE Resistor_Horizontal_RM30mm 8 | Po 0 0 0 15 5184C87F 00000000 ~~ 9 | Li Resistor_Horizontal_RM30mm 10 | Cd Resistor, Axial, RM 30mm, 11 | Kw Resistor, Axial, RM 30mm, 12 | Sc 0 13 | AR /511F812E 14 | Op 0 0 0 15 | T0 40.005 3.175 1.00076 1.00076 0 0.14986 N V 21 N "R5" 16 | T1 13.97 8.89 1.50114 1.50114 0 0.20066 N I 21 N "8.2k 5W" 17 | DS 3.556 0 1.524 0 0.381 21 18 | DS 36.92398 0 38.44798 0 0.381 21 19 | DS 3.81 -3.5 36.66998 -3.5 0.381 21 20 | DS 36.66998 -3.5 36.66998 3.5 0.381 21 21 | DS 36.66998 3.5 3.81 3.5 0.381 21 22 | DS 3.81 3.5 3.81 -3.5 0.381 21 23 | $PAD 24 | Sh "1" C 1.99898 1.99898 0 0 0 25 | Dr 1.00076 0 0 26 | At STD N 00C0FFFF 27 | Ne 2 "N-000006" 28 | Po 0 0 29 | $EndPAD 30 | $PAD 31 | Sh "2" C 2.30124 2.30124 0 0 0 32 | Dr 1.19888 0 0 33 | At STD N 00C0FFFF 34 | Ne 1 "/NEUTRAL" 35 | Po 39.99992 0 36 | $EndPAD 37 | $EndMODULE Resistor_Horizontal_RM30mm 38 | $EndLIBRARY 39 | -------------------------------------------------------------------------------- /controller-atmega8/conn35.kicad_mod: -------------------------------------------------------------------------------- 1 | (module conn35 (layer F.Cu) 2 | (at 0 0) 3 | (descr "Bornier d'alimentation 2 pins") 4 | (tags DEV) 5 | (path /51343255) 6 | (fp_text reference "" (at -5.588 5.842) (layer F.SilkS) 7 | (effects (font (thickness 0.3048))) 8 | ) 9 | (fp_text value "" (at 0.29972 5.4991) (layer F.SilkS) 10 | (effects (font (thickness 0.3048))) 11 | ) 12 | (fp_line (start 3.50012 2.54) (end -3.50012 2.54) (layer F.SilkS) (width 0.3048)) 13 | (fp_line (start 3.50012 4.0005) (end 3.50012 -2.99974) (layer F.SilkS) (width 0.3048)) 14 | (fp_line (start 3.50012 -2.99974) (end -3.50012 -2.99974) (layer F.SilkS) (width 0.3048)) 15 | (fp_line (start -3.50012 -2.99974) (end -3.50012 4.0005) (layer F.SilkS) (width 0.3048)) 16 | (fp_line (start -3.50012 4.0005) (end 3.50012 4.0005) (layer F.SilkS) (width 0.3048)) 17 | (pad 1 thru_hole rect (at -1.75006 0) (size 2.54 2.54) (drill 1.22428) 18 | (layers *.Cu *.Mask F.SilkS) 19 | ) 20 | (pad 2 thru_hole circle (at 1.75006 0) (size 2.54 2.54) (drill 1.22428) 21 | (layers *.Cu *.Mask F.SilkS) 22 | ) 23 | ) 24 | -------------------------------------------------------------------------------- /Resistor_Horizontal_RM30mm.kicad_mod: -------------------------------------------------------------------------------- 1 | (module Resistor_Horizontal_RM30mm (layer F.Cu) 2 | (at 0 0) 3 | (descr "Resistor, Axial, RM 30mm,") 4 | (tags "Resistor, Axial, RM 30mm,") 5 | (path /511F812E) 6 | (fp_text reference R5 (at 40.005 3.175) (layer F.SilkS) 7 | (effects (font (size 1.00076 1.00076) (thickness 0.14986))) 8 | ) 9 | (fp_text value "8.2k 5W" (at 13.97 8.89) (layer F.SilkS) hide 10 | (effects (font (size 1.50114 1.50114) (thickness 0.20066))) 11 | ) 12 | (fp_line (start 3.556 0) (end 1.524 0) (layer F.SilkS) (width 0.381)) 13 | (fp_line (start 36.92398 0) (end 38.44798 0) (layer F.SilkS) (width 0.381)) 14 | (fp_line (start 3.81 -3.5) (end 36.66998 -3.5) (layer F.SilkS) (width 0.381)) 15 | (fp_line (start 36.66998 -3.5) (end 36.66998 3.5) (layer F.SilkS) (width 0.381)) 16 | (fp_line (start 36.66998 3.5) (end 3.81 3.5) (layer F.SilkS) (width 0.381)) 17 | (fp_line (start 3.81 3.5) (end 3.81 -3.5) (layer F.SilkS) (width 0.381)) 18 | (pad 1 thru_hole circle (at 0 0) (size 1.99898 1.99898) (drill 1.00076) 19 | (layers *.Cu *.Mask) 20 | ) 21 | (pad 2 thru_hole circle (at 39.99992 0) (size 2.30124 2.30124) (drill 1.19888) 22 | (layers *.Cu *.Mask) 23 | ) 24 | ) 25 | -------------------------------------------------------------------------------- /controller-atmega8/p82b96.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Thu 09 May 2013 04:18:09 PM CEST 2 | #encoding utf-8 3 | # 4 | # P82B96 5 | # 6 | DEF P82B96 U 0 40 Y Y 1 F N 7 | F0 "U" 300 -500 60 H V C CNN 8 | F1 "P82B96" 400 500 60 H V C CNN 9 | F2 "~" 0 0 60 H V C CNN 10 | F3 "~" 0 0 60 H V C CNN 11 | DRAW 12 | S -550 450 600 -450 0 1 0 N 13 | P 2 0 1 0 -100 -100 -250 -100 N 14 | P 2 0 1 0 -100 300 -250 300 N 15 | P 2 0 1 0 100 -300 300 -300 N 16 | P 2 0 1 0 100 -100 300 -100 N 17 | P 2 0 1 0 100 100 300 100 N 18 | P 2 0 1 0 100 300 300 300 N 19 | P 3 0 1 0 -150 -100 -150 -300 -100 -300 N 20 | P 3 0 1 0 -150 300 -150 100 -100 100 N 21 | P 4 0 1 0 100 -200 100 -400 -100 -300 100 -200 N 22 | P 4 0 1 0 100 200 100 0 -100 100 100 200 N 23 | P 5 0 1 0 -100 -50 -100 -200 100 -100 -100 0 -100 -50 N 24 | P 5 0 1 0 -100 350 -100 200 100 300 -100 400 -100 350 N 25 | X Sx(SDA) 1 -850 300 300 R 50 50 1 1 I 26 | X Rx(RxD,SDA 2 900 100 300 L 50 50 1 1 I 27 | X Tx(TxD,SDA) 3 900 300 300 L 50 50 1 1 I 28 | X GND 4 0 -750 300 U 50 50 1 1 W 29 | X Ty(TxD,SCL) 5 900 -100 300 L 50 50 1 1 I 30 | X Ry(RxD,SCL) 6 900 -300 300 L 50 50 1 1 I 31 | X Sy(SCL) 7 -850 -100 300 R 50 50 1 1 I 32 | X VCC 8 0 750 300 D 50 50 1 1 W 33 | ENDDRAW 34 | ENDDEF 35 | # 36 | #End Library 37 | -------------------------------------------------------------------------------- /controller-attiny1634/p82b96.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Thu 09 May 2013 04:18:09 PM CEST 2 | #encoding utf-8 3 | # 4 | # P82B96 5 | # 6 | DEF P82B96 U 0 40 Y Y 1 F N 7 | F0 "U" 300 -500 60 H V C CNN 8 | F1 "P82B96" 400 500 60 H V C CNN 9 | F2 "~" 0 0 60 H V C CNN 10 | F3 "~" 0 0 60 H V C CNN 11 | DRAW 12 | S -550 450 600 -450 0 1 0 N 13 | P 2 0 1 0 -100 -100 -250 -100 N 14 | P 2 0 1 0 -100 300 -250 300 N 15 | P 2 0 1 0 100 -300 300 -300 N 16 | P 2 0 1 0 100 -100 300 -100 N 17 | P 2 0 1 0 100 100 300 100 N 18 | P 2 0 1 0 100 300 300 300 N 19 | P 3 0 1 0 -150 -100 -150 -300 -100 -300 N 20 | P 3 0 1 0 -150 300 -150 100 -100 100 N 21 | P 4 0 1 0 100 -200 100 -400 -100 -300 100 -200 N 22 | P 4 0 1 0 100 200 100 0 -100 100 100 200 N 23 | P 5 0 1 0 -100 -50 -100 -200 100 -100 -100 0 -100 -50 N 24 | P 5 0 1 0 -100 350 -100 200 100 300 -100 400 -100 350 N 25 | X Sx(SDA) 1 -850 300 300 R 50 50 1 1 I 26 | X Rx(RxD,SDA 2 900 100 300 L 50 50 1 1 I 27 | X Tx(TxD,SDA) 3 900 300 300 L 50 50 1 1 I 28 | X GND 4 0 -750 300 U 50 50 1 1 W 29 | X Ty(TxD,SCL) 5 900 -100 300 L 50 50 1 1 I 30 | X Ry(RxD,SCL) 6 900 -300 300 L 50 50 1 1 I 31 | X Sy(SCL) 7 -850 -100 300 R 50 50 1 1 I 32 | X VCC 8 0 750 300 D 50 50 1 1 W 33 | ENDDRAW 34 | ENDDEF 35 | # 36 | #End Library 37 | -------------------------------------------------------------------------------- /experiment6/zc-pulse-length-piez.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("piez") 26 | N = x.shape[0] 27 | 28 | #plt.plot(range(0, N-1), diff+np.mean(x), color="grey") 29 | xvals = np.arange(0, x.shape[0], 1) 30 | plt.plot(xvals, x, color="grey") 31 | #plt.plot(xvals, x[:,1]/16, color="green") 32 | #plt.plot(xvals, x[:,2]/16, color="red") 33 | plt.xlabel("Time, s") 34 | plt.ylabel("Pulse length, us") 35 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 10k") 36 | plt.figure() 37 | 38 | xvals = np.arange(0.0, N/2+1, 1) 39 | xvals = xvals/np.max(xvals)*50 40 | plt.plot(xvals, signal.medfilt( 41 | 20*scipy.log10( 42 | abs( 43 | ff.rfft( 44 | (x) / np.max(x) 45 | ) 46 | ) 47 | ),15) ) 48 | plt.xlabel("Hz") 49 | plt.ylabel("Magnitude, db") 50 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 10k") 51 | plt.show() 52 | 53 | -------------------------------------------------------------------------------- /experiment2/period-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("period-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])*8/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])*8/16e6, "s" 31 | print "scater ", scatter, " ", scatter*8/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)*8/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)*8/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))*8/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))*8/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])*8/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])*8/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | plt.plot(range(0, N), x[:,0], color="red") 41 | plt.plot(range(0, N), x[:,1], color="green") 42 | plt.plot(range(0, N), x[:,2], color="red") 43 | #plt.plot(range(0, N/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(x))),355) ) 44 | 45 | plt.show() 46 | 47 | -------------------------------------------------------------------------------- /experiment3/period-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("period-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])*8/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])*8/16e6, "s" 31 | print "scater ", scatter, " ", scatter*8/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)*8/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)*8/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))*8/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))*8/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])*8/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])*8/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | plt.plot(range(0, N), x[:,0], color="grey") 41 | plt.plot(range(0, N), x[:,1], color="green") 42 | plt.plot(range(0, N), x[:,2], color="red") 43 | #plt.plot(range(0, N/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(x))),355) ) 44 | 45 | plt.show() 46 | 47 | -------------------------------------------------------------------------------- /experiment5/period-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("period-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])*8/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])*8/16e6, "s" 31 | print "scater ", scatter, " ", scatter*8/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)*8/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)*8/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))*8/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))*8/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])*8/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])*8/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | plt.plot(range(0, N), x[:,0], color="grey") 41 | plt.plot(range(0, N), x[:,1], color="green") 42 | plt.plot(range(0, N), x[:,2], color="red") 43 | #plt.plot(range(0, N/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(x))),355) ) 44 | 45 | plt.show() 46 | 47 | -------------------------------------------------------------------------------- /experiment6/period-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("period-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])*8/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])*8/16e6, "s" 31 | print "scater ", scatter, " ", scatter*8/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)*8/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)*8/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))*8/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))*8/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])*8/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])*8/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | plt.plot(range(0, N), x[:,0], color="grey") 41 | plt.plot(range(0, N), x[:,1], color="green") 42 | plt.plot(range(0, N), x[:,2], color="red") 43 | #plt.plot(range(0, N/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(x))),355) ) 44 | 45 | plt.show() 46 | 47 | -------------------------------------------------------------------------------- /experiment4/period-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("period-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])*8/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])*8/16e6, "s" 31 | print "scater ", scatter, " ", scatter*8/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)*8/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)*8/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))*8/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))*8/16e6, "s" 36 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))*8/16e6, "s" 37 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])*8/16e6, "s" 38 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])*8/16e6, "s" 39 | 40 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 41 | plt.plot(range(0, N), x[:,0], color="grey") 42 | plt.plot(range(0, N), x[:,1], color="green") 43 | plt.plot(range(0, N), x[:,2], color="red") 44 | #plt.plot(range(0, N/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(x))),355) ) 45 | 46 | plt.show() 47 | 48 | -------------------------------------------------------------------------------- /controller-atmega8/controller.pro: -------------------------------------------------------------------------------- 1 | update=Mon 22 Jul 2013 08:15:17 PM EEST 2 | version=1 3 | last_client=pcbnew 4 | [eeschema] 5 | version=1 6 | LibDir= 7 | NetFmtName= 8 | RptD_X=0 9 | RptD_Y=100 10 | RptLab=1 11 | LabSize=60 12 | [eeschema/libraries] 13 | LibName1=power 14 | LibName2=device 15 | LibName3=transistors 16 | LibName4=conn 17 | LibName5=linear 18 | LibName6=regul 19 | LibName7=74xx 20 | LibName8=cmos4000 21 | LibName9=adc-dac 22 | LibName10=memory 23 | LibName11=xilinx 24 | LibName12=special 25 | LibName13=microcontrollers 26 | LibName14=dsp 27 | LibName15=microchip 28 | LibName16=analog_switches 29 | LibName17=motorola 30 | LibName18=texas 31 | LibName19=intel 32 | LibName20=audio 33 | LibName21=interface 34 | LibName22=digital-audio 35 | LibName23=philips 36 | LibName24=display 37 | LibName25=cypress 38 | LibName26=siliconi 39 | LibName27=opto 40 | LibName28=atmel 41 | LibName29=contrib 42 | LibName30=valves 43 | LibName31=p82b96 44 | [general] 45 | version=1 46 | [cvpcb] 47 | version=1 48 | NetIExt=net 49 | [cvpcb/libraries] 50 | EquName1=devcms 51 | [pcbnew] 52 | version=1 53 | LastNetListRead=controller.net 54 | UseCmpFile=1 55 | PadDrill=" 0.600000" 56 | PadDrillOvalY=" 0.600000" 57 | PadSizeH=" 1.500000" 58 | PadSizeV=" 1.500000" 59 | PcbTextSizeV=" 1.500000" 60 | PcbTextSizeH=" 1.500000" 61 | PcbTextThickness=" 0.300000" 62 | ModuleTextSizeV=" 1.000000" 63 | ModuleTextSizeH=" 1.000000" 64 | ModuleTextSizeThickness=" 0.150000" 65 | SolderMaskClearance=" 0.000000" 66 | SolderMaskMinWidth=" 0.000000" 67 | DrawSegmentWidth=" 0.200000" 68 | BoardOutlineThickness=" 0.100000" 69 | ModuleOutlineThickness=" 0.150000" 70 | [pcbnew/libraries] 71 | LibDir= 72 | LibName1=sockets 73 | LibName2=connect 74 | LibName3=discret 75 | LibName4=pin_array 76 | LibName5=divers 77 | LibName6=smd_capacitors 78 | LibName7=smd_resistors 79 | LibName8=smd_crystal&oscillator 80 | LibName9=smd_transistors 81 | LibName10=libcms 82 | LibName11=display 83 | LibName12=led 84 | LibName13=dip_sockets 85 | LibName14=pga_sockets 86 | LibName15=valves 87 | LibName16=screw-term2pin 88 | -------------------------------------------------------------------------------- /controller-attiny1634/controller.pro: -------------------------------------------------------------------------------- 1 | update=Thu 16 May 2013 08:29:32 AM CEST 2 | version=1 3 | last_client=kicad 4 | [pcbnew] 5 | version=1 6 | LastNetListRead= 7 | UseCmpFile=1 8 | PadDrill=0.600000000000 9 | PadDrillOvalY=0.600000000000 10 | PadSizeH=1.500000000000 11 | PadSizeV=1.500000000000 12 | PcbTextSizeV=1.500000000000 13 | PcbTextSizeH=1.500000000000 14 | PcbTextThickness=0.300000000000 15 | ModuleTextSizeV=1.000000000000 16 | ModuleTextSizeH=1.000000000000 17 | ModuleTextSizeThickness=0.150000000000 18 | SolderMaskClearance=0.000000000000 19 | SolderMaskMinWidth=0.000000000000 20 | DrawSegmentWidth=0.200000000000 21 | BoardOutlineThickness=0.100000000000 22 | ModuleOutlineThickness=0.150000000000 23 | [pcbnew/libraries] 24 | LibName1=sockets 25 | LibName2=connect 26 | LibName3=discret 27 | LibName4=pin_array 28 | LibName5=divers 29 | LibName6=smd_capacitors 30 | LibName7=smd_resistors 31 | LibName8=smd_crystal&oscillator 32 | LibName9=smd_dil 33 | LibName10=smd_transistors 34 | LibName11=libcms 35 | LibName12=display 36 | LibName13=led 37 | LibName14=dip_sockets 38 | LibName15=pga_sockets 39 | LibName16=valves 40 | LibName17=switch-tact 41 | LibDir= 42 | [eeschema] 43 | version=1 44 | LibDir= 45 | NetFmtName= 46 | RptD_X=0 47 | RptD_Y=100 48 | RptLab=1 49 | LabSize=60 50 | [eeschema/libraries] 51 | LibName1=power 52 | LibName2=device 53 | LibName3=transistors 54 | LibName4=conn 55 | LibName5=linear 56 | LibName6=regul 57 | LibName7=74xx 58 | LibName8=cmos4000 59 | LibName9=adc-dac 60 | LibName10=memory 61 | LibName11=xilinx 62 | LibName12=special 63 | LibName13=microcontrollers 64 | LibName14=dsp 65 | LibName15=microchip 66 | LibName16=analog_switches 67 | LibName17=motorola 68 | LibName18=texas 69 | LibName19=intel 70 | LibName20=audio 71 | LibName21=interface 72 | LibName22=digital-audio 73 | LibName23=philips 74 | LibName24=display 75 | LibName25=cypress 76 | LibName26=siliconi 77 | LibName27=opto 78 | LibName28=atmel 79 | LibName29=contrib 80 | LibName30=valves 81 | LibName31=p82b96 82 | [cvpcb] 83 | version=1 84 | NetIExt=net 85 | [cvpcb/libraries] 86 | EquName1=devcms 87 | [general] 88 | version=1 89 | -------------------------------------------------------------------------------- /x-sinx.py: -------------------------------------------------------------------------------- 1 | #solving x - sin(x) = C, f(x) = C - 2x + sin(2x) 2 | #derivative f'(x) = -4sin^2(x) 3 | #x[n+1] = x[n] - f(x[n])/f'(x[n]) 4 | 5 | import math 6 | import sys 7 | import matplotlib.pyplot as plt 8 | from matplotlib.ticker import MultipleLocator 9 | import numpy as np 10 | 11 | def guess(y): 12 | return y/2; 13 | 14 | 15 | def fderivative(x): 16 | return -4 * math.sin(x) * math.sin(x) 17 | 18 | #x + sin(x) = y 19 | def f(x, y): 20 | return 4 * y - 2 * x + math.sin(2 * x) 21 | 22 | def solveIteration(xPrevious, y): 23 | if 0 == fderivative(xPrevious): 24 | return xPrevious 25 | return xPrevious - f(xPrevious, y)/fderivative(xPrevious) 26 | 27 | def solve(y): 28 | x=math.pi/2;#guess(y) 29 | for i in range(0,100): # 100 iterations proves to be enough 30 | x = solveIteration(x, y) 31 | 32 | return x 33 | 34 | 35 | maxConductionAngle = 10000 36 | conductionAngles=range(maxConductionAngle) 37 | 38 | for i in range(0,maxConductionAngle): 39 | #print i, math.pi / 2 / maxConductionAngle * i, solve(math.pi / 2 / maxConductionAngle * i) 40 | conductionAngles[i]=solve(math.pi / 2 / (maxConductionAngle) * i); 41 | 42 | xvalues = np.arange(0.0, maxConductionAngle * 1.0, 1) 43 | xvalues = (xvalues/np.max(xvalues))*100 44 | #print xvalues 45 | #print xvalues.shape 46 | #print len(conductionAngles) 47 | 48 | table = np.arange(0, 256, 1) 49 | for i in range(0, 256): 50 | j = int(i * maxConductionAngle / 255.0) 51 | print i, j 52 | if j < 10000: 53 | table[i] = conductionAngles[j] / math.pi * 10000; 54 | else: 55 | table[i] = 10000; 56 | 57 | for i in range(0, 256): 58 | print table[i], "," 59 | # print "conductionAngles[" + str(i) + "] = " + str(table[i]) + ";" 60 | 61 | #print table; 62 | 63 | conductionAngles = np.array(conductionAngles) 64 | 65 | fig=plt.figure() 66 | ax = fig.add_subplot(111) 67 | ax.xaxis.set_minor_locator(MultipleLocator(10)) 68 | ax.grid(True, which='both') 69 | plt.plot(xvalues, conductionAngles/math.pi*10000) 70 | plt.ylabel("conduction angle, degrees") 71 | plt.xlabel("power, %") 72 | 73 | plt.figure() 74 | 75 | plt.plot(range(0, table.shape[0]), table) 76 | plt.show() 77 | 78 | 79 | -------------------------------------------------------------------------------- /ssr.pro: -------------------------------------------------------------------------------- 1 | update=Tue 07 May 2013 10:02:31 PM CEST 2 | version=1 3 | last_client=kicad 4 | [eeschema] 5 | version=1 6 | LibDir= 7 | NetFmtName= 8 | RptD_X=0 9 | RptD_Y=100 10 | RptLab=1 11 | LabSize=60 12 | [eeschema/libraries] 13 | LibName1=power 14 | LibName2=device 15 | LibName3=transistors 16 | LibName4=conn 17 | LibName5=linear 18 | LibName6=regul 19 | LibName7=74xx 20 | LibName8=cmos4000 21 | LibName9=adc-dac 22 | LibName10=memory 23 | LibName11=xilinx 24 | LibName12=special 25 | LibName13=microcontrollers 26 | LibName14=dsp 27 | LibName15=microchip 28 | LibName16=analog_switches 29 | LibName17=motorola 30 | LibName18=texas 31 | LibName19=intel 32 | LibName20=audio 33 | LibName21=interface 34 | LibName22=digital-audio 35 | LibName23=philips 36 | LibName24=display 37 | LibName25=cypress 38 | LibName26=siliconi 39 | LibName27=opto 40 | LibName28=atmel 41 | LibName29=contrib 42 | LibName30=valves 43 | [cvpcb] 44 | version=1 45 | NetIExt=net 46 | [cvpcb/libraries] 47 | EquName1=devcms 48 | [pcbnew] 49 | version=1 50 | LastNetListRead=ssr.net 51 | UseCmpFile=1 52 | PadDrill=" 0.000000" 53 | PadDrillOvalY=" 0.000000" 54 | PadSizeH=" 0.998220" 55 | PadSizeV=" 0.599440" 56 | PcbTextSizeV=" 1.501140" 57 | PcbTextSizeH=" 1.501140" 58 | PcbTextThickness=" 0.299720" 59 | ModuleTextSizeV=" 1.000760" 60 | ModuleTextSizeH=" 1.000760" 61 | ModuleTextSizeThickness=" 0.149860" 62 | SolderMaskClearance=" 0.000000" 63 | SolderMaskMinWidth=" 0.000000" 64 | DrawSegmentWidth=" 0.200660" 65 | BoardOutlineThickness=" 0.149860" 66 | ModuleOutlineThickness=" 0.149860" 67 | [pcbnew/libraries] 68 | LibDir= 69 | LibName1=connect 70 | LibName2=discret 71 | LibName3=Power-in 72 | LibName4=rc-master 73 | LibName5=resistor-ruf 74 | LibName6=inductor-nkl 75 | LibName7=bourns 76 | LibName8=contrib/Choke_Toroid_ThroughHole_RevA 77 | LibName9=contrib/Footprint-Symbols_RevA 78 | LibName10=contrib/Fuseholder_ThroughHole_RevB 79 | LibName11=contrib/Resistor_ThroughHole_RevA 80 | LibName12=optocoupler-2 81 | LibName13=optocoupler 82 | LibName14=varistor 83 | LibName15=ref-packages 84 | LibName16=diy_holes 85 | LibName17=atmel 86 | LibName18=diy_capacitors 87 | LibName19=ohw-logo 88 | LibName20=smd_capacitors 89 | LibName21=smd_resistors 90 | LibName22=libcms 91 | LibName23=power-resistor 92 | [general] 93 | version=1 94 | -------------------------------------------------------------------------------- /gerbers/ssr.drl: -------------------------------------------------------------------------------- 1 | M48 2 | ;DRILL file {Pcbnew (2013-mar-13)-testing} date Tue 07 May 2013 10:03:13 PM CEST 3 | ;FORMAT={-:-/ absolute / metric / decimal} 4 | FMAT,2 5 | METRIC,TZ 6 | T1C0.508 7 | T2C0.813 8 | T3C0.914 9 | T4C0.998 10 | T5C1.001 11 | T6C1.016 12 | T7C1.199 13 | T8C1.397 14 | T9C1.778 15 | T10C1.999 16 | T11C5.999 17 | % 18 | G90 19 | G05 20 | M71 21 | T1 22 | X127.635Y-107.315 23 | X140.335Y-92.075 24 | X181.102Y-115.824 25 | X183.134Y-117.094 26 | X183.388Y-118.618 27 | X184.404Y-92.964 28 | X184.404Y-105.918 29 | X185.674Y-93.726 30 | X185.674Y-117.856 31 | X186.944Y-118.618 32 | X188.087Y-92.964 33 | X188.722Y-118.618 34 | X189.484Y-92.837 35 | X191.135Y-97.536 36 | X191.135Y-116.205 37 | X191.389Y-94.615 38 | X191.897Y-96.139 39 | X192.024Y-98.679 40 | X193.04Y-89.408 41 | X193.04Y-116.205 42 | X194.31Y-87.884 43 | T2 44 | X175.26Y-108.585 45 | X175.26Y-111.125 46 | X175.26Y-113.665 47 | X182.88Y-108.585 48 | X182.88Y-111.125 49 | X182.88Y-113.665 50 | T3 51 | X130.175Y-75.946 52 | X135.255Y-77.724 53 | T4 54 | X180.975Y-79.756 55 | X183.515Y-79.756 56 | X186.055Y-79.756 57 | X188.595Y-79.756 58 | X191.135Y-79.756 59 | X193.675Y-79.756 60 | T5 61 | X118.745Y-95.25 62 | X118.745Y-110.49 63 | X120.015Y-82.55 64 | X122.555Y-95.25 65 | X122.555Y-110.49 66 | X127.635Y-95.25 67 | X127.635Y-115.57 68 | X135.255Y-82.55 69 | X182.88Y-134.62 70 | X195.58Y-126.365 71 | T6 72 | X119.38Y-114.3 73 | X119.38Y-124.46 74 | X120.015Y-88.265 75 | X132.08Y-116.84 76 | X132.08Y-132.08 77 | X135.255Y-88.265 78 | X192.722Y-107.95 79 | X193.548Y-100.076 80 | X193.548Y-100.076 81 | X193.548Y-102.616 82 | X193.548Y-105.156 83 | X196.088Y-85.725 84 | X196.088Y-88.265 85 | X196.088Y-90.805 86 | X196.088Y-93.345 87 | X196.088Y-100.076 88 | X196.088Y-102.616 89 | X196.088Y-105.156 90 | X196.088Y-111.76 91 | X196.088Y-114.3 92 | X196.088Y-116.84 93 | X196.088Y-119.38 94 | X196.215Y-107.95 95 | T7 96 | X142.88Y-134.62 97 | X155.58Y-126.365 98 | T8 99 | X102.87Y-98.552 100 | X102.87Y-104.14 101 | X102.87Y-109.728 102 | T9 103 | X111.76Y-79.248 104 | X111.76Y-86.868 105 | X111.76Y-106.68 106 | X111.76Y-114.3 107 | T10 108 | X150.81Y-94.3 109 | X150.81Y-114.3 110 | T11 111 | X120.015Y-73.025 112 | X144.78Y-73.025 113 | X167.64Y-73.025 114 | T0 115 | M30 116 | -------------------------------------------------------------------------------- /experiment1/step-response-accel10.csv: -------------------------------------------------------------------------------- 1 | 23.25 2 | 23.25 3 | 23.31 4 | 23.31 5 | 23.31 6 | 23.31 7 | 23.31 8 | 23.31 9 | 23.31 10 | 23.37 11 | 23.37 12 | 23.37 13 | 23.37 14 | 23.37 15 | 23.37 16 | 23.37 17 | 23.37 18 | 23.37 19 | 23.37 20 | 23.37 21 | 23.37 22 | 23.37 23 | 23.44 24 | 23.44 25 | 23.44 26 | 23.44 27 | 23.44 28 | 23.44 29 | 23.44 30 | 23.44 31 | 23.44 32 | 23.44 33 | 23.50 34 | 23.50 35 | 23.62 36 | 23.69 37 | 23.81 38 | 23.87 39 | 24.00 40 | 24.12 41 | 24.25 42 | 24.37 43 | 24.50 44 | 24.62 45 | 24.81 46 | 24.94 47 | 25.12 48 | 25.25 49 | 25.44 50 | 25.56 51 | 25.75 52 | 25.94 53 | 26.12 54 | 26.31 55 | 26.50 56 | 26.62 57 | 26.81 58 | 27.00 59 | 27.19 60 | 27.37 61 | 27.50 62 | 27.69 63 | 27.87 64 | 28.06 65 | 28.19 66 | 28.37 67 | 28.56 68 | 28.75 69 | 28.87 70 | 29.06 71 | 29.19 72 | 29.37 73 | 29.56 74 | 29.69 75 | 29.87 76 | 30.00 77 | 30.19 78 | 30.31 79 | 30.50 80 | 30.69 81 | 30.87 82 | 31.06 83 | 31.25 84 | 31.50 85 | 31.75 86 | 31.94 87 | 32.19 88 | 32.44 89 | 32.69 90 | 32.94 91 | 33.19 92 | 33.44 93 | 33.69 94 | 33.94 95 | 34.19 96 | 34.44 97 | 34.75 98 | 35.00 99 | 35.25 100 | 35.50 101 | 35.75 102 | 36.00 103 | 36.25 104 | 36.50 105 | 36.75 106 | 37.00 107 | 37.19 108 | 37.44 109 | 37.69 110 | 37.94 111 | 38.13 112 | 38.38 113 | 38.63 114 | 38.81 115 | 39.06 116 | 39.25 117 | 39.50 118 | 39.69 119 | 39.88 120 | 40.06 121 | 40.25 122 | 40.44 123 | 40.69 124 | 40.88 125 | 41.00 126 | 41.25 127 | 41.38 128 | 41.56 129 | 41.75 130 | 41.88 131 | 42.06 132 | 42.25 133 | 42.38 134 | 42.56 135 | 42.69 136 | 42.88 137 | 43.00 138 | 43.13 139 | 43.25 140 | 43.38 141 | 43.44 142 | 43.56 143 | 43.69 144 | 43.75 145 | 43.88 146 | 44.00 147 | 44.13 148 | 44.19 149 | 44.31 150 | 44.44 151 | 44.56 152 | 44.63 153 | 44.75 154 | 44.81 155 | 44.94 156 | 45.00 157 | 45.13 158 | 45.25 159 | 45.31 160 | 45.44 161 | 45.50 162 | 45.63 163 | 45.69 164 | 45.75 165 | 45.88 166 | 45.94 167 | 46.06 168 | 46.06 169 | 46.19 170 | 46.25 171 | 46.31 172 | 46.38 173 | 46.50 174 | 46.56 175 | 46.63 176 | 46.69 177 | 46.75 178 | 46.81 179 | 46.88 180 | 46.94 181 | 47.00 182 | 47.06 183 | 47.13 184 | 47.19 185 | 47.25 186 | 47.31 187 | 47.31 188 | 47.38 189 | 47.44 190 | 47.50 191 | 47.56 192 | 47.63 193 | 47.63 194 | 47.69 195 | 47.75 196 | 47.81 197 | 47.81 198 | 47.88 199 | 47.94 200 | 47.94 201 | 48.00 202 | 48.06 203 | 48.06 204 | 48.13 205 | 48.19 206 | 48.19 207 | 48.25 208 | 48.25 209 | 48.31 210 | 48.38 211 | 48.38 212 | 48.44 213 | 48.44 214 | 48.50 215 | 48.50 216 | 48.56 217 | 48.56 218 | 48.63 219 | 48.69 220 | -------------------------------------------------------------------------------- /gerbers/ssr-F_Mask.gts: -------------------------------------------------------------------------------- 1 | G04 (created by PCBNEW (2013-mar-13)-testing) date Tue 07 May 2013 10:03:09 PM CEST* 2 | %MOIN*% 3 | G04 Gerber Fmt 3.4, Leading zero omitted, Abs format* 4 | %FSLAX34Y34*% 5 | G01* 6 | G70* 7 | G90* 8 | G04 APERTURE LIST* 9 | %ADD10C,2.3622e-06*% 10 | %ADD11C,0.551181*% 11 | %ADD12O,0.165X0.0825*% 12 | %ADD13O,0.0593X0.1187*% 13 | %ADD14C,0.0787*% 14 | %ADD15C,0.0906*% 15 | %ADD16C,0.2*% 16 | %ADD17C,0.0859*% 17 | %ADD18C,0.06*% 18 | %ADD19R,0.06X0.06*% 19 | %ADD20R,0.062X0.062*% 20 | %ADD21C,0.062*% 21 | %ADD22C,0.1575*% 22 | %ADD23O,0.112X0.056*% 23 | %ADD24C,0.1*% 24 | %ADD25O,0.104X0.052*% 25 | %ADD26C,0.2362*% 26 | %ADD27R,0.035X0.055*% 27 | %ADD28R,0.025X0.045*% 28 | G04 APERTURE END LIST* 29 | G54D10* 30 | G54D11* 31 | X47250Y-28750D03* 32 | X57000Y-28750D03* 33 | X66000Y-28750D03* 34 | G54D12* 35 | X40500Y-43200D03* 36 | X40500Y-41000D03* 37 | X40500Y-38800D03* 38 | G54D13* 39 | X71250Y-31400D03* 40 | X72250Y-31400D03* 41 | X73250Y-31400D03* 42 | X74250Y-31400D03* 43 | X75250Y-31400D03* 44 | X76250Y-31400D03* 45 | G54D14* 46 | X72000Y-53000D03* 47 | G54D15* 48 | X56252Y-53000D03* 49 | G54D16* 50 | X44000Y-45000D03* 51 | X44000Y-42000D03* 52 | X44000Y-31200D03* 53 | X44000Y-34200D03* 54 | G54D14* 55 | X46750Y-43500D03* 56 | X46750Y-37500D03* 57 | X48250Y-43500D03* 58 | X48250Y-37500D03* 59 | X50250Y-37500D03* 60 | X50250Y-45500D03* 61 | G54D17* 62 | X77250Y-42500D03* 63 | X75875Y-42500D03* 64 | G54D18* 65 | X77200Y-39400D03* 66 | X76200Y-40400D03* 67 | X77200Y-40400D03* 68 | X76200Y-41400D03* 69 | X77200Y-41400D03* 70 | G54D19* 71 | X76200Y-39400D03* 72 | G54D20* 73 | X77200Y-44000D03* 74 | G54D21* 75 | X77200Y-45000D03* 76 | X77200Y-46000D03* 77 | X77200Y-47000D03* 78 | G54D20* 79 | X77200Y-33750D03* 80 | G54D21* 81 | X77200Y-34750D03* 82 | X77200Y-35750D03* 83 | X77200Y-36750D03* 84 | G54D22* 85 | X59374Y-45000D03* 86 | X59374Y-37126D03* 87 | G54D23* 88 | X51250Y-29900D03* 89 | X53250Y-30600D03* 90 | G54D24* 91 | X52000Y-46000D03* 92 | X52000Y-52000D03* 93 | X47250Y-34750D03* 94 | X53250Y-34750D03* 95 | X47000Y-45000D03* 96 | X47000Y-49000D03* 97 | G54D25* 98 | X72000Y-44750D03* 99 | X72000Y-43750D03* 100 | X72000Y-42750D03* 101 | X69000Y-42750D03* 102 | X69000Y-43750D03* 103 | X69000Y-44750D03* 104 | G54D26* 105 | X41750Y-28750D03* 106 | X75500Y-28500D03* 107 | X41750Y-53250D03* 108 | X75250Y-53250D03* 109 | G54D14* 110 | X47250Y-32500D03* 111 | X53250Y-32500D03* 112 | G54D27* 113 | X72525Y-35900D03* 114 | X71775Y-35900D03* 115 | X72525Y-34900D03* 116 | X71775Y-34900D03* 117 | G54D28* 118 | X73700Y-34900D03* 119 | X73100Y-34900D03* 120 | X73700Y-35900D03* 121 | X73100Y-35900D03* 122 | G54D14* 123 | X77000Y-49750D03* 124 | G54D15* 125 | X61252Y-49750D03* 126 | M02* 127 | -------------------------------------------------------------------------------- /experiment3/half-zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | x = x[:,0] 27 | x = x[1::2]/2/8 28 | N = x.shape[0] 29 | 30 | scatter = np.max(x) - np.min(x) 31 | diff = differential(x) 32 | print "min ", np.min(x), " ", np.min(x)/16e6, "s" 33 | print "max ", np.max(x), " ", np.max(x)/16e6, "s" 34 | print "scater ", scatter, " ", scatter/16e6, "s" 35 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 36 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 37 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 38 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 39 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))/16e6, "s" 40 | print "mean ", np.mean(x), " ", np.mean(x)/16e6, "s" 41 | print "median ", np.median(x), " ", np.median(x)/16e6, "s" 42 | 43 | #plt.plot(range(0, N-1), diff+np.mean(x), color="grey") 44 | xvals = np.arange(0, x.shape[0], 1)/100 45 | plt.plot(xvals, x/16, color="red") 46 | plt.xlabel("Time, s") 47 | plt.ylabel("Pulse length, us") 48 | plt.title("Zero crossing pulse length") 49 | plt.savefig("Zero crossing pulse length") 50 | plt.figure() 51 | 52 | xvals = np.arange(0.0, N/2+1, 1) 53 | xvals = xvals/np.max(xvals)*50 54 | plt.plot(xvals, signal.medfilt( 55 | 20*scipy.log10( 56 | abs( 57 | ff.rfft( 58 | (x) / np.max(x) 59 | ) 60 | ) 61 | ),355) ) 62 | plt.xlabel("Hz") 63 | plt.ylabel("Magnitude, db") 64 | plt.title("Zero crossing pulse length FFT") 65 | plt.savefig("Zero crossing pulse length FFT") 66 | plt.figure() 67 | 68 | std = np.std(diff) 69 | 70 | sigma = std 71 | 72 | plt.hist(diff, bins=( 73 | np.min(diff)*-1 + 74 | np.max(diff) 75 | ), color="black") 76 | 77 | sigma2 = 2*std 78 | plt.axvline(np.mean(diff) - sigma2) 79 | plt.axvline(np.mean(diff) + sigma2) 80 | 81 | plt.axvline(np.mean(diff) - sigma, color="yellow") 82 | plt.axvline(np.mean(diff) + sigma, color="yellow") 83 | plt.title("Pulse length differeces for adjacent pulses") 84 | plt.savefig("Pulse length differeces for adjacent pulses") 85 | 86 | plt.figure() 87 | 88 | plt.plot(range(diff.shape[0]), diff) 89 | plt.title("Differential") 90 | 91 | plt.show() 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /experiment2/half-zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-filtered", delimiter=",") 26 | x = x[:,0] 27 | x = x[::2] 28 | N = x.shape[0] 29 | 30 | scatter = np.max(x) - np.min(x) 31 | diff = differential(x) 32 | print "min ", np.min(x), " ", np.min(x)/16e6, "s" 33 | print "max ", np.max(x), " ", np.max(x)/16e6, "s" 34 | print "scater ", scatter, " ", scatter/16e6, "s" 35 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 36 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 37 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 38 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 39 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))/16e6, "s" 40 | print "mean ", np.mean(x), " ", np.mean(x)/16e6, "s" 41 | print "median ", np.median(x), " ", np.median(x)/16e6, "s" 42 | 43 | #plt.plot(range(0, N-1), diff+np.mean(x), color="grey") 44 | xvals = np.arange(0, x.shape[0], 1)/100 45 | plt.plot(xvals, x/16, color="red") 46 | plt.xlabel("Time, s") 47 | plt.ylabel("Pulse length, us") 48 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 1k") 49 | plt.savefig("Zero crossing pulse length, R input = 16k4 R pullup = 1k") 50 | plt.figure() 51 | 52 | xvals = np.arange(0.0, N/2+1, 1) 53 | xvals = xvals/np.max(xvals)*50 54 | plt.plot(xvals, signal.medfilt( 55 | 20*scipy.log10( 56 | abs( 57 | ff.rfft( 58 | (x) / np.max(x) 59 | ) 60 | ) 61 | ),355) ) 62 | plt.xlabel("Hz") 63 | plt.ylabel("Magnitude, db") 64 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 1k") 65 | plt.savefig("Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k") 66 | plt.figure() 67 | 68 | std = np.std(diff) 69 | 70 | sigma = std 71 | 72 | plt.hist(diff, bins=( 73 | np.min(diff)*-1 + 74 | np.max(diff) 75 | ), color="black") 76 | 77 | sigma2 = 2*std 78 | plt.axvline(np.mean(diff) - sigma2) 79 | plt.axvline(np.mean(diff) + sigma2) 80 | 81 | plt.axvline(np.mean(diff) - sigma, color="yellow") 82 | plt.axvline(np.mean(diff) + sigma, color="yellow") 83 | plt.title("Pulse length differeces for adjacent pulses, R input = 16.4k R pullup = 1k") 84 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k") 85 | plt.show() 86 | 87 | -------------------------------------------------------------------------------- /experiment5/half-zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | x = x[:,0] 27 | x = x[::2] 28 | N = x.shape[0] 29 | 30 | scatter = np.max(x) - np.min(x) 31 | diff = differential(x) 32 | print "min ", np.min(x), " ", np.min(x)/16e6, "s" 33 | print "max ", np.max(x), " ", np.max(x)/16e6, "s" 34 | print "scater ", scatter, " ", scatter/16e6, "s" 35 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 36 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 37 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 38 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 39 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))/16e6, "s" 40 | print "mean ", np.mean(x), " ", np.mean(x)/16e6, "s" 41 | print "median ", np.median(x), " ", np.median(x)/16e6, "s" 42 | 43 | #plt.plot(range(0, N-1), diff+np.mean(x), color="grey") 44 | xvals = np.arange(0, x.shape[0], 1)/100 45 | plt.plot(xvals, x/16, color="red") 46 | plt.xlabel("Time, s") 47 | plt.ylabel("Pulse length, us") 48 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 1k") 49 | plt.savefig("Zero crossing pulse length, R input = 16k4 R pullup = 1k") 50 | plt.figure() 51 | 52 | xvals = np.arange(0.0, N/2+1, 1) 53 | xvals = xvals/np.max(xvals)*50 54 | plt.plot(xvals, signal.medfilt( 55 | 20*scipy.log10( 56 | abs( 57 | ff.rfft( 58 | (x) / np.max(x) 59 | ) 60 | ) 61 | ),355) ) 62 | plt.xlabel("Hz") 63 | plt.ylabel("Magnitude, db") 64 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 1k") 65 | plt.savefig("Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k") 66 | plt.figure() 67 | 68 | std = np.std(diff) 69 | 70 | sigma = std 71 | 72 | plt.hist(diff, bins=( 73 | np.min(diff)*-1 + 74 | np.max(diff) 75 | ), color="black") 76 | 77 | sigma2 = 2*std 78 | plt.axvline(np.mean(diff) - sigma2) 79 | plt.axvline(np.mean(diff) + sigma2) 80 | 81 | plt.axvline(np.mean(diff) - sigma, color="yellow") 82 | plt.axvline(np.mean(diff) + sigma, color="yellow") 83 | plt.title("Pulse length differeces for adjacent pulses, R input = 16.4k R pullup = 1k") 84 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k") 85 | plt.show() 86 | 87 | -------------------------------------------------------------------------------- /experiment2/zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])/16e6, "s" 31 | print "scater ", scatter, " ", scatter/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | xvals = np.arange(0, x[:,0].shape[0], 1)/100 41 | plt.plot(xvals, x[:,0]/16, color="grey") 42 | plt.plot(xvals, x[:,1]/16, color="green") 43 | plt.plot(xvals, x[:,2]/16, color="red") 44 | plt.xlabel("Time, s") 45 | plt.ylabel("Pulse length, us") 46 | plt.title("Zero crossing pulse length, R input = 32.8k, R pullup = 47k") 47 | plt.savefig("Zero crossing pulse length, R input = 32k8, R pullup = 47k") 48 | plt.figure() 49 | 50 | xvals = np.arange(0.0, N/2+1, 1) 51 | xvals = xvals/np.max(xvals)*50 52 | plt.plot(xvals, signal.medfilt( 53 | 20*scipy.log10( 54 | abs( 55 | ff.rfft( 56 | (x[:,0]) / np.max(x[:,0]) 57 | ) 58 | ) 59 | ),355) ) 60 | plt.xlabel("Hz") 61 | plt.ylabel("Magnitude, db") 62 | plt.title("Zero crossing pulse length FFT, R input = 32.8k R pullup = 47k") 63 | plt.savefig("Zero crossing pulse length FFT, R input = 32k8 R pullup = 47k") 64 | plt.figure() 65 | 66 | std = np.std(diff) 67 | 68 | sigma = std 69 | 70 | plt.hist(diff, bins=( 71 | np.min(diff)*-1 + 72 | np.max(diff) 73 | ), color="black") 74 | 75 | sigma2 = 2*std 76 | plt.axvline(np.mean(diff) - sigma2) 77 | plt.axvline(np.mean(diff) + sigma2) 78 | 79 | plt.axvline(np.mean(diff) - sigma, color="yellow") 80 | plt.axvline(np.mean(diff) + sigma, color="yellow") 81 | 82 | plt.title("Pulse length differeces for adjacent pulses, R input = 32.8k R pullup = 47k") 83 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 47k") 84 | plt.show() 85 | 86 | -------------------------------------------------------------------------------- /experiment3/zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])/16e6, "s" 31 | print "scater ", scatter, " ", scatter/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | xvals = np.arange(0, x[:,0].shape[0], 1)/100 41 | plt.plot(xvals, x[:,0]/16, color="grey") 42 | plt.plot(xvals, x[:,1]/16, color="green") 43 | plt.plot(xvals, x[:,2]/16, color="red") 44 | plt.xlabel("Time, s") 45 | plt.ylabel("Pulse length, us") 46 | plt.title("Zero crossing pulse length, R input = 32.8k, R pullup = 10k") 47 | plt.savefig("Zero crossing pulse length, R input = 32k8, R pullup = 10k") 48 | plt.figure() 49 | 50 | xvals = np.arange(0.0, N/2+1, 1) 51 | xvals = xvals/np.max(xvals)*50 52 | plt.plot(xvals, signal.medfilt( 53 | 20*scipy.log10( 54 | abs( 55 | ff.rfft( 56 | (x[:,0]) / np.max(x[:,0]) 57 | ) 58 | ) 59 | ),355) ) 60 | plt.xlabel("Hz") 61 | plt.ylabel("Magnitude, db") 62 | plt.title("Zero crossing pulse length FFT, R input = 32.8k R pullup = 10k") 63 | plt.savefig("Zero crossing pulse length FFT, R input = 32k8 R pullup = 10k") 64 | plt.figure() 65 | 66 | std = np.std(diff) 67 | 68 | sigma = std 69 | 70 | plt.hist(diff, bins=( 71 | np.min(diff)*-1 + 72 | np.max(diff) 73 | ), color="black") 74 | 75 | sigma2 = 2*std 76 | plt.axvline(np.mean(diff) - sigma2) 77 | plt.axvline(np.mean(diff) + sigma2) 78 | 79 | plt.axvline(np.mean(diff) - sigma, color="yellow") 80 | plt.axvline(np.mean(diff) + sigma, color="yellow") 81 | 82 | plt.title("Pulse length differeces for adjacent pulses, R input = 32.8k R pullup = 10k") 83 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 32k8 R pullup = 10k") 84 | plt.show() 85 | 86 | -------------------------------------------------------------------------------- /experiment4/zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])/16e6, "s" 31 | print "scater ", scatter, " ", scatter/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 36 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])/16e6, "s" 37 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])/16e6, "s" 38 | 39 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 40 | xvals = np.arange(0, x[:,0].shape[0], 1)/100 41 | plt.plot(xvals, x[:,0]/16, color="grey") 42 | plt.plot(xvals, x[:,1]/16, color="green") 43 | plt.plot(xvals, x[:,2]/16, color="red") 44 | plt.xlabel("Time, s") 45 | plt.ylabel("Pulse length, us") 46 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 10k") 47 | plt.savefig("Zero crossing pulse length, R input = 16k4 R pullup = 10k") 48 | 49 | plt.figure() 50 | xvals = np.arange(0.0, N/2+1, 1) 51 | xvals = xvals/np.max(xvals)*50 52 | plt.plot(xvals, signal.medfilt( 53 | 20*scipy.log10( 54 | abs( 55 | ff.rfft( 56 | (x[:,0]) / np.max(x[:,0]) 57 | ) 58 | ) 59 | ),355) ) 60 | plt.xlabel("Hz") 61 | plt.ylabel("Magnitude, db") 62 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 10k") 63 | plt.savefig("Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k") 64 | 65 | 66 | plt.figure() 67 | 68 | std = np.std(diff) 69 | 70 | sigma = std 71 | 72 | plt.hist(diff, bins=( 73 | np.min(diff)*-1 + 74 | np.max(diff) 75 | ), color="black") 76 | 77 | sigma2 = 2*std 78 | plt.axvline(np.mean(diff) - sigma2) 79 | plt.axvline(np.mean(diff) + sigma2) 80 | 81 | plt.axvline(np.mean(diff) - sigma, color="yellow") 82 | plt.axvline(np.mean(diff) + sigma, color="yellow") 83 | plt.title("Pulse length differeces for adjacent pulses, R input = 16.4k R pullup = 10k") 84 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k") 85 | plt.show() 86 | 87 | #plt.plot(range(0, N), differential(np.abs(x[:,2])), color="red") 88 | 89 | -------------------------------------------------------------------------------- /experiment5/zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])/16e6, "s" 31 | print "scater ", scatter, " ", scatter/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 36 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))/16e6, "s" 37 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])/16e6, "s" 38 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])/16e6, "s" 39 | 40 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 41 | xvals = np.arange(0, x[:,0].shape[0], 1)/100 42 | plt.plot(xvals, x[:,0]/16, color="grey") 43 | plt.plot(xvals, x[:,1]/16, color="green") 44 | plt.plot(xvals, x[:,2]/16, color="red") 45 | plt.xlabel("Time, s") 46 | plt.ylabel("Pulse length, us") 47 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 1k") 48 | plt.savefig("Zero crossing pulse length, R input = 16k4 R pullup = 1k") 49 | plt.figure() 50 | 51 | xvals = np.arange(0.0, N/2+1, 1) 52 | xvals = xvals/np.max(xvals)*50 53 | plt.plot(xvals, signal.medfilt( 54 | 20*scipy.log10( 55 | abs( 56 | ff.rfft( 57 | (x[:,0]) / np.max(x[:,0]) 58 | ) 59 | ) 60 | ),355) ) 61 | plt.xlabel("Hz") 62 | plt.ylabel("Magnitude, db") 63 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 1k") 64 | plt.savefig("Zero crossing pulse length FFT, R input = 16k4 R pullup = 1k") 65 | plt.figure() 66 | 67 | std = np.std(diff) 68 | 69 | sigma = std 70 | 71 | plt.hist(diff, bins=( 72 | np.min(diff)*-1 + 73 | np.max(diff) 74 | ), color="black") 75 | 76 | sigma2 = 2*std 77 | plt.axvline(np.mean(diff) - sigma2) 78 | plt.axvline(np.mean(diff) + sigma2) 79 | 80 | plt.axvline(np.mean(diff) - sigma, color="yellow") 81 | plt.axvline(np.mean(diff) + sigma, color="yellow") 82 | plt.title("Pulse length differeces for adjacent pulses, R input = 16.4k R pullup = 1k") 83 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 1k") 84 | plt.show() 85 | 86 | -------------------------------------------------------------------------------- /experiment6/zc-pulse-length.py: -------------------------------------------------------------------------------- 1 | import math 2 | import sys 3 | import matplotlib.pyplot as plt 4 | from matplotlib.ticker import MultipleLocator 5 | import numpy as np 6 | import numpy.fft as ff 7 | import scipy.signal as signal 8 | import scipy as scipy 9 | 10 | def differential(x): 11 | ret = [] 12 | for i in range(0, x.shape[0]-1): 13 | if i < x.shape[0]-1: 14 | ret.append(x[i+1] - x[i]) 15 | else: 16 | ret.append(x[i]) 17 | return np.array(ret) 18 | 19 | def magnitude(x): 20 | ret = [] 21 | for sample in x: 22 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 23 | return np.array(ret) 24 | 25 | x = np.loadtxt("zc-pulse-length-filtered", delimiter=",") 26 | N = x.shape[0] 27 | scatter = np.max(x) - np.min(x) 28 | diff = differential(x[:,0]) 29 | print "min ", np.min(x[:,0]), " ", np.min(x[:,0])/16e6, "s" 30 | print "max ", np.max(x[:,0]), " ", np.max(x[:,0])/16e6, "s" 31 | print "scater ", scatter, " ", scatter/16e6, "s" 32 | print "max differential ", np.max(diff), " ", np.max(diff)/16e6, "s" 33 | print "min differential ", np.min(diff), " ", np.min(diff)/16e6, "s" 34 | print "min differential abs ", np.min(np.abs(diff)), " ", np.min(np.abs(diff))/16e6, "s" 35 | print "differential abs median ", np.median(np.abs(diff)), " ", np.median(np.abs(diff))/16e6, "s" 36 | print "differential abs mean ", np.mean(np.abs(diff)), " ", np.mean(np.abs(diff))/16e6, "s" 37 | print "mean ", np.mean(x[:,0]), " ", np.mean(x[:,0])/16e6, "s" 38 | print "median ", np.median(x[:,0]), " ", np.median(x[:,0])/16e6, "s" 39 | 40 | #plt.plot(range(0, N-1), diff+np.mean(x[:,0]), color="grey") 41 | xvals = np.arange(0, x[:,0].shape[0], 1)/100 42 | plt.plot(xvals, x[:,0]/16, color="grey") 43 | plt.plot(xvals, x[:,1]/16, color="green") 44 | plt.plot(xvals, x[:,2]/16, color="red") 45 | plt.xlabel("Time, s") 46 | plt.ylabel("Pulse length, us") 47 | plt.title("Zero crossing pulse length, R input = 16.4k R pullup = 10k") 48 | plt.savefig("Zero crossing pulse length, R input = 16k4 R pullup = 10k") 49 | plt.figure() 50 | 51 | xvals = np.arange(0.0, N/2+1, 1) 52 | xvals = xvals/np.max(xvals)*50 53 | plt.plot(xvals, signal.medfilt( 54 | 20*scipy.log10( 55 | abs( 56 | ff.rfft( 57 | (x[:,0]) / np.max(x[:,0]) 58 | ) 59 | ) 60 | ),355) ) 61 | plt.xlabel("Hz") 62 | plt.ylabel("Magnitude, db") 63 | plt.title("Zero crossing pulse length FFT, R input = 16.4k R pullup = 10k") 64 | plt.savefig("Zero crossing pulse length FFT, R input = 16k4 R pullup = 10k") 65 | plt.figure() 66 | 67 | std = np.std(diff) 68 | 69 | sigma = std 70 | 71 | plt.hist(diff, bins=( 72 | np.min(diff)*-1 + 73 | np.max(diff) 74 | ), color="black") 75 | 76 | sigma2 = 2*std 77 | plt.axvline(np.mean(diff) - sigma2) 78 | plt.axvline(np.mean(diff) + sigma2) 79 | 80 | plt.axvline(np.mean(diff) - sigma, color="yellow") 81 | plt.axvline(np.mean(diff) + sigma, color="yellow") 82 | plt.title("Pulse length differeces for adjacent pulses, R input = 16.4k R pullup = 10k") 83 | plt.savefig("Pulse length differeces for adjacent pulses, R input = 16k4 R pullup = 10k") 84 | plt.show() 85 | 86 | -------------------------------------------------------------------------------- /firmware/usiTwiSlave.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************** 2 | 3 | Header file for the USI TWI Slave driver. 4 | 5 | Created by Donald R. Blake 6 | donblake at worldnet.att.net 7 | 8 | --------------------------------------------------------------------------------- 9 | 10 | Created from Atmel source files for Application Note AVR312: Using the USI Module 11 | as an I2C slave. 12 | 13 | This program is free software; you can redistribute it and/or modify it under the 14 | terms of the GNU General Public License as published by the Free Software 15 | Foundation; either version 2 of the License, or (at your option) any later 16 | version. 17 | 18 | This program is distributed in the hope that it will be useful, but WITHOUT ANY 19 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 20 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 21 | 22 | --------------------------------------------------------------------------------- 23 | 24 | Change Activity: 25 | 26 | Date Description 27 | ------ ------------- 28 | 15 Mar 2007 Created. 29 | 08 Mar 2012 Added support for START and STOP bit callbacks 30 | 31 | ********************************************************************************/ 32 | 33 | 34 | 35 | #ifndef _USI_TWI_SLAVE_H_ 36 | #define _USI_TWI_SLAVE_H_ 37 | 38 | 39 | 40 | /******************************************************************************** 41 | 42 | includes 43 | 44 | ********************************************************************************/ 45 | 46 | #include 47 | 48 | 49 | 50 | /******************************************************************************** 51 | 52 | prototypes 53 | 54 | ********************************************************************************/ 55 | 56 | void usiTwiSlaveInit( uint8_t ); 57 | void usiTwiTransmitByte( uint8_t ); 58 | uint8_t usiTwiReceiveByte( void ); 59 | bool usiTwiDataInReceiveBuffer( void ); 60 | void usiTwiOnStart( void (*function) () ); 61 | void usiTwiOnStop( void (*function) () ); 62 | 63 | 64 | 65 | /******************************************************************************** 66 | 67 | driver buffer definitions 68 | 69 | ********************************************************************************/ 70 | 71 | // permitted RX buffer sizes: 1, 2, 4, 8, 16, 32, 64, 128 or 256 72 | 73 | #define TWI_RX_BUFFER_SIZE ( 16 ) 74 | #define TWI_RX_BUFFER_MASK ( TWI_RX_BUFFER_SIZE - 1 ) 75 | 76 | #if ( TWI_RX_BUFFER_SIZE & TWI_RX_BUFFER_MASK ) 77 | # error TWI RX buffer size is not a power of 2 78 | #endif 79 | 80 | // permitted TX buffer sizes: 1, 2, 4, 8, 16, 32, 64, 128 or 256 81 | 82 | #define TWI_TX_BUFFER_SIZE ( 16 ) 83 | #define TWI_TX_BUFFER_MASK ( TWI_TX_BUFFER_SIZE - 1 ) 84 | 85 | #if ( TWI_TX_BUFFER_SIZE & TWI_TX_BUFFER_MASK ) 86 | # error TWI TX buffer size is not a power of 2 87 | #endif 88 | 89 | 90 | 91 | #endif // ifndef _USI_TWI_SLAVE_H_ -------------------------------------------------------------------------------- /experiment1/exp1.py: -------------------------------------------------------------------------------- 1 | import math 2 | import numpy as np 3 | import matplotlib.pyplot as plt 4 | import numpy.fft as ff 5 | from pylab import * 6 | import scipy.signal as signal 7 | import scipy as scipy 8 | 9 | def magnitude(x): 10 | ret = [] 11 | for sample in x: 12 | ret.append(math.sqrt(sample.real**2 + sample.imag**2)) 13 | return np.array(ret) 14 | def phase(x): 15 | return np.unwrap(arctan2(imag(x),real(x))) 16 | 17 | def differential(x): 18 | ret = [] 19 | for i in range(0, x.shape[0]-1): 20 | if i < x.shape[0]-1: 21 | ret.append(x[i+1] - x[i]) 22 | else: 23 | ret.append(x[i]) 24 | return np.array(ret) 25 | def mfreqz(b,a=1): 26 | w,h = signal.freqz(b,a) 27 | h_dB = 20 * log10 (abs(h)) 28 | subplot(211) 29 | plot(w/max(w),h_dB) 30 | ylim(-150, 5) 31 | ylabel('Magnitude (db)') 32 | xlabel(r'Normalized Frequency (x$\pi$rad/sample)') 33 | title(r'Frequency response') 34 | subplot(212) 35 | h_Phase = unwrap(arctan2(imag(h),real(h))) 36 | plot(w/max(w),h_Phase) 37 | ylabel('Phase (radians)') 38 | xlabel(r'Normalized Frequency (x$\pi$rad/sample)') 39 | title(r'Phase response') 40 | subplots_adjust(hspace=0.5) 41 | 42 | #Plot step and impulse response 43 | def impz(b,a=1): 44 | l = len(b) 45 | impulse = repeat(0.,l); impulse[0] =1. 46 | x = arange(0,l) 47 | response = signal.lfilter(b,a,impulse) 48 | subplot(211) 49 | stem(x, response) 50 | ylabel('Amplitude') 51 | xlabel(r'n (samples)') 52 | title(r'Impulse response') 53 | subplot(212) 54 | step = cumsum(response) 55 | stem(x, step) 56 | ylabel('Amplitude') 57 | xlabel(r'n (samples)') 58 | title(r'Step response') 59 | subplots_adjust(hspace=0.5) 60 | 61 | 62 | y = np.loadtxt("step-response-linear2.csv") 63 | y = hstack((np.ones(100)*23.50, y)) 64 | y = y - min(y) 65 | n = 33 66 | a = signal.firwin(n, cutoff = 0.037, window = "blackman") 67 | 68 | #plt.plot(range(0, (y.shape[0])), y) 69 | 70 | yfiltered = signal.lfilter(a, 1, y)[n:] 71 | irfiltered = differential(yfiltered) 72 | ir = differential(y)[n:] 73 | 74 | plt.plot(range(0, ir.shape[0]), ir, c="grey") 75 | plt.plot(range(0, irfiltered.shape[0]), irfiltered, c="red", linewidth=2) 76 | #plt.plot(range(0, irfiltered.shape[0]), signal.medfilt(irfiltered, 15), c="blue", linewidth=1) 77 | 78 | irfiltered = np.hstack((np.zeros(1000), irfiltered, np.zeros(1000))) 79 | ir = np.hstack((np.zeros(10000), ir, np.zeros(10000))) 80 | #plt.plot(range(0, (irfiltered.shape[0])/2+1), signal.medfilt(20*scipy.log10(abs(ff.rfft(irfiltered))),5), c="green") 81 | #plt.plot(range(0, (irfiltered.shape[0])/2+1), phase(ff.rfft(irfiltered)), c="red") 82 | 83 | H = abs(ff.rfft(irfiltered))[0:] 84 | H = H/H.shape[0] 85 | #plt.plot(range(0, H.shape[0]), H) 86 | 87 | 88 | #plt.plot(np.array(range(0, irfiltered.shape[0] / 2 + 1), float) / (irfiltered.shape[0] / 2 + 1) * 0.5, magnitude(ff.rfft(irfiltered))) 89 | 90 | #plt.plot(range(0, (y.shape[0])), y) 91 | #plt.plot(range(0, (y.shape[0]-10)), signal.lfilter(a, 1, y)[10:]) 92 | #plt.plot(range(0, (a.shape[0])/2+1), magnitude(ff.rfft(a))) 93 | #mfreqz(irfiltered) 94 | 95 | plt.show() 96 | -------------------------------------------------------------------------------- /controller-attiny1634/controller.cmp: -------------------------------------------------------------------------------- 1 | Cmp-Mod V01 Created by CvPcb (2013-mar-13)-testing date = Thu 16 May 2013 08:18:00 AM CEST 2 | 3 | BeginCmp 4 | TimeStamp = /518B9696; 5 | Reference = C1; 6 | ValeurCmp = 22p; 7 | IdModule = SM0603_Capa; 8 | EndCmp 9 | 10 | BeginCmp 11 | TimeStamp = /518B96A5; 12 | Reference = C2; 13 | ValeurCmp = 22p; 14 | IdModule = SM0603_Capa; 15 | EndCmp 16 | 17 | BeginCmp 18 | TimeStamp = /518B9823; 19 | Reference = C3; 20 | ValeurCmp = 100n; 21 | IdModule = SM0603_Capa; 22 | EndCmp 23 | 24 | BeginCmp 25 | TimeStamp = /518BB14F; 26 | Reference = C4; 27 | ValeurCmp = 100n; 28 | IdModule = SM0603_Capa; 29 | EndCmp 30 | 31 | BeginCmp 32 | TimeStamp = /51913C78; 33 | Reference = C5; 34 | ValeurCmp = 100n; 35 | IdModule = SM0603_Capa; 36 | EndCmp 37 | 38 | BeginCmp 39 | TimeStamp = /518B9775; 40 | Reference = C6; 41 | ValeurCmp = 100n; 42 | IdModule = SM0603_Capa; 43 | EndCmp 44 | 45 | BeginCmp 46 | TimeStamp = /518B9B2D; 47 | Reference = C7; 48 | ValeurCmp = 100n; 49 | IdModule = SM0603_Capa; 50 | EndCmp 51 | 52 | BeginCmp 53 | TimeStamp = /518B9ED3; 54 | Reference = CON1; 55 | ValeurCmp = AVR-ISP-6; 56 | IdModule = pin_array_3x2; 57 | EndCmp 58 | 59 | BeginCmp 60 | TimeStamp = /5191339D; 61 | Reference = IC1; 62 | ValeurCmp = ATTINY1634-S; 63 | IdModule = SO20L; 64 | EndCmp 65 | 66 | BeginCmp 67 | TimeStamp = /518B9650; 68 | Reference = IC2; 69 | ValeurCmp = SP3485CN; 70 | IdModule = SO8N; 71 | EndCmp 72 | 73 | BeginCmp 74 | TimeStamp = /51914A01; 75 | Reference = JP1; 76 | ValeurCmp = JUMPER; 77 | IdModule = PINHEAD1-2; 78 | EndCmp 79 | 80 | BeginCmp 81 | TimeStamp = /51947B16; 82 | Reference = K1; 83 | ValeurCmp = RS458; 84 | IdModule = PINHEAD1-3; 85 | EndCmp 86 | 87 | BeginCmp 88 | TimeStamp = /51913C29; 89 | Reference = P1; 90 | ValeurCmp = I2C; 91 | IdModule = PIN_ARRAY_4x1; 92 | EndCmp 93 | 94 | BeginCmp 95 | TimeStamp = /518B97EE; 96 | Reference = R1; 97 | ValeurCmp = 10k; 98 | IdModule = SM0603_Resistor; 99 | EndCmp 100 | 101 | BeginCmp 102 | TimeStamp = /518B9A6C; 103 | Reference = R2; 104 | ValeurCmp = R; 105 | IdModule = SM0603_Resistor; 106 | EndCmp 107 | 108 | BeginCmp 109 | TimeStamp = /518B9A66; 110 | Reference = R3; 111 | ValeurCmp = R; 112 | IdModule = SM0603_Resistor; 113 | EndCmp 114 | 115 | BeginCmp 116 | TimeStamp = /518BA4A5; 117 | Reference = R4; 118 | ValeurCmp = 10k; 119 | IdModule = SM0603_Resistor; 120 | EndCmp 121 | 122 | BeginCmp 123 | TimeStamp = /51914955; 124 | Reference = R5; 125 | ValeurCmp = 120; 126 | IdModule = SM0603_Resistor; 127 | EndCmp 128 | 129 | BeginCmp 130 | TimeStamp = /51914D89; 131 | Reference = R6; 132 | ValeurCmp = R; 133 | IdModule = SM0603_Resistor; 134 | EndCmp 135 | 136 | BeginCmp 137 | TimeStamp = /51914DFB; 138 | Reference = R7; 139 | ValeurCmp = R; 140 | IdModule = SM0603_Resistor; 141 | EndCmp 142 | 143 | BeginCmp 144 | TimeStamp = /518B991E; 145 | Reference = SW1; 146 | ValeurCmp = SW_PUSH; 147 | IdModule = SW_PUSH_SMALL; 148 | EndCmp 149 | 150 | BeginCmp 151 | TimeStamp = /518BB0F8; 152 | Reference = U1; 153 | ValeurCmp = P82B96; 154 | IdModule = SO8N; 155 | EndCmp 156 | 157 | BeginCmp 158 | TimeStamp = /518B9687; 159 | Reference = X1; 160 | ValeurCmp = 16MHz; 161 | IdModule = HC-49V; 162 | EndCmp 163 | 164 | EndListe 165 | -------------------------------------------------------------------------------- /controller-atmega8/controller.cmp: -------------------------------------------------------------------------------- 1 | Cmp-Mod V01 Created by CvPcb (2013-mar-13)-testing date = Tue 23 Jul 2013 12:05:16 AM EEST 2 | 3 | BeginCmp 4 | TimeStamp = /518B9696; 5 | Reference = C1; 6 | ValeurCmp = 22p; 7 | IdModule = SM0603_Capa; 8 | EndCmp 9 | 10 | BeginCmp 11 | TimeStamp = /518B96A5; 12 | Reference = C2; 13 | ValeurCmp = 22p; 14 | IdModule = SM0603_Capa; 15 | EndCmp 16 | 17 | BeginCmp 18 | TimeStamp = /518B9823; 19 | Reference = C3; 20 | ValeurCmp = 100n; 21 | IdModule = SM0603_Capa; 22 | EndCmp 23 | 24 | BeginCmp 25 | TimeStamp = /518BB14F; 26 | Reference = C4; 27 | ValeurCmp = 100n; 28 | IdModule = SM0603_Capa; 29 | EndCmp 30 | 31 | BeginCmp 32 | TimeStamp = /51913C78; 33 | Reference = C5; 34 | ValeurCmp = 100n; 35 | IdModule = SM0603_Capa; 36 | EndCmp 37 | 38 | BeginCmp 39 | TimeStamp = /518B9775; 40 | Reference = C6; 41 | ValeurCmp = 100n; 42 | IdModule = SM0603_Capa; 43 | EndCmp 44 | 45 | BeginCmp 46 | TimeStamp = /518B9B2D; 47 | Reference = C7; 48 | ValeurCmp = 100n; 49 | IdModule = SM0603_Capa; 50 | EndCmp 51 | 52 | BeginCmp 53 | TimeStamp = /51CB3B70; 54 | Reference = C8; 55 | ValeurCmp = 100n; 56 | IdModule = SM0603_Capa; 57 | EndCmp 58 | 59 | BeginCmp 60 | TimeStamp = /51CB3A81; 61 | Reference = C9; 62 | ValeurCmp = 100n; 63 | IdModule = SM0603_Capa; 64 | EndCmp 65 | 66 | BeginCmp 67 | TimeStamp = /51ED6542; 68 | Reference = C10; 69 | ValeurCmp = C; 70 | IdModule = C2V10; 71 | EndCmp 72 | 73 | BeginCmp 74 | TimeStamp = /518B9ED3; 75 | Reference = CON1; 76 | ValeurCmp = AVR-ISP-6; 77 | IdModule = pin_array_3x2; 78 | EndCmp 79 | 80 | BeginCmp 81 | TimeStamp = /51CB3712; 82 | Reference = IC1; 83 | ValeurCmp = ATMEGA88-A; 84 | IdModule = TQFP32; 85 | EndCmp 86 | 87 | BeginCmp 88 | TimeStamp = /518B9650; 89 | Reference = IC2; 90 | ValeurCmp = SP3485CN; 91 | IdModule = SO8N; 92 | EndCmp 93 | 94 | BeginCmp 95 | TimeStamp = /51914A01; 96 | Reference = JP1; 97 | ValeurCmp = JUMPER; 98 | IdModule = PINHEAD1-2; 99 | EndCmp 100 | 101 | BeginCmp 102 | TimeStamp = /51947B16; 103 | Reference = K1; 104 | ValeurCmp = RS458; 105 | IdModule = PINHEAD1-3; 106 | EndCmp 107 | 108 | BeginCmp 109 | TimeStamp = /51913C29; 110 | Reference = P1; 111 | ValeurCmp = I2C; 112 | IdModule = PIN_ARRAY_4x1; 113 | EndCmp 114 | 115 | BeginCmp 116 | TimeStamp = /51ED64AF; 117 | Reference = P2; 118 | ValeurCmp = CONN_2; 119 | IdModule = PINHEAD1-2; 120 | EndCmp 121 | 122 | BeginCmp 123 | TimeStamp = /518B97EE; 124 | Reference = R1; 125 | ValeurCmp = 10k; 126 | IdModule = SM0603_Resistor; 127 | EndCmp 128 | 129 | BeginCmp 130 | TimeStamp = /518B9A6C; 131 | Reference = R2; 132 | ValeurCmp = R; 133 | IdModule = SM0603_Resistor; 134 | EndCmp 135 | 136 | BeginCmp 137 | TimeStamp = /518B9A66; 138 | Reference = R3; 139 | ValeurCmp = R; 140 | IdModule = SM0603_Resistor; 141 | EndCmp 142 | 143 | BeginCmp 144 | TimeStamp = /518BA4A5; 145 | Reference = R4; 146 | ValeurCmp = 10k; 147 | IdModule = SM0603_Resistor; 148 | EndCmp 149 | 150 | BeginCmp 151 | TimeStamp = /51914955; 152 | Reference = R5; 153 | ValeurCmp = 120; 154 | IdModule = SM0603_Resistor; 155 | EndCmp 156 | 157 | BeginCmp 158 | TimeStamp = /51914D89; 159 | Reference = R6; 160 | ValeurCmp = R; 161 | IdModule = SM0603_Resistor; 162 | EndCmp 163 | 164 | BeginCmp 165 | TimeStamp = /51914DFB; 166 | Reference = R7; 167 | ValeurCmp = R; 168 | IdModule = SM0603_Resistor; 169 | EndCmp 170 | 171 | BeginCmp 172 | TimeStamp = /518B991E; 173 | Reference = SW1; 174 | ValeurCmp = SW_PUSH; 175 | IdModule = SW_PUSH_SMALL; 176 | EndCmp 177 | 178 | BeginCmp 179 | TimeStamp = /518BB0F8; 180 | Reference = U1; 181 | ValeurCmp = P82B96; 182 | IdModule = SO8N; 183 | EndCmp 184 | 185 | BeginCmp 186 | TimeStamp = /518B9687; 187 | Reference = X1; 188 | ValeurCmp = 16MHz; 189 | IdModule = HC-49V; 190 | EndCmp 191 | 192 | EndListe 193 | -------------------------------------------------------------------------------- /firmware/conductionAngles.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | const uint16_t conductionAngles[] PROGMEM = { 5 | 0 , 6 | 843 , 7 | 1066 , 8 | 1223 , 9 | 1349 , 10 | 1459 , 11 | 1553 , 12 | 1637 , 13 | 1714 , 14 | 1786 , 15 | 1854 , 16 | 1916 , 17 | 1976 , 18 | 2032 , 19 | 2087 , 20 | 2138 , 21 | 2188 , 22 | 2235 , 23 | 2281 , 24 | 2327 , 25 | 2370 , 26 | 2412 , 27 | 2452 , 28 | 2492 , 29 | 2532 , 30 | 2570 , 31 | 2606 , 32 | 2643 , 33 | 2679 , 34 | 2714 , 35 | 2748 , 36 | 2781 , 37 | 2814 , 38 | 2847 , 39 | 2879 , 40 | 2910 , 41 | 2941 , 42 | 2972 , 43 | 3002 , 44 | 3032 , 45 | 3061 , 46 | 3090 , 47 | 3119 , 48 | 3147 , 49 | 3175 , 50 | 3202 , 51 | 3230 , 52 | 3257 , 53 | 3284 , 54 | 3310 , 55 | 3336 , 56 | 3363 , 57 | 3388 , 58 | 3414 , 59 | 3439 , 60 | 3464 , 61 | 3489 , 62 | 3514 , 63 | 3538 , 64 | 3562 , 65 | 3586 , 66 | 3611 , 67 | 3634 , 68 | 3658 , 69 | 3681 , 70 | 3705 , 71 | 3728 , 72 | 3751 , 73 | 3774 , 74 | 3796 , 75 | 3819 , 76 | 3842 , 77 | 3864 , 78 | 3886 , 79 | 3908 , 80 | 3931 , 81 | 3953 , 82 | 3974 , 83 | 3996 , 84 | 4018 , 85 | 4039 , 86 | 4061 , 87 | 4082 , 88 | 4103 , 89 | 4125 , 90 | 4146 , 91 | 4167 , 92 | 4188 , 93 | 4208 , 94 | 4230 , 95 | 4250 , 96 | 4271 , 97 | 4291 , 98 | 4312 , 99 | 4333 , 100 | 4353 , 101 | 4373 , 102 | 4394 , 103 | 4414 , 104 | 4435 , 105 | 4455 , 106 | 4475 , 107 | 4495 , 108 | 4515 , 109 | 4535 , 110 | 4555 , 111 | 4575 , 112 | 4595 , 113 | 4615 , 114 | 4635 , 115 | 4655 , 116 | 4674 , 117 | 4695 , 118 | 4714 , 119 | 4734 , 120 | 4754 , 121 | 4774 , 122 | 4793 , 123 | 4813 , 124 | 4832 , 125 | 4852 , 126 | 4872 , 127 | 4891 , 128 | 4911 , 129 | 4930 , 130 | 4950 , 131 | 4970 , 132 | 4989 , 133 | 5009 , 134 | 5029 , 135 | 5049 , 136 | 5068 , 137 | 5088 , 138 | 5107 , 139 | 5127 , 140 | 5147 , 141 | 5166 , 142 | 5186 , 143 | 5205 , 144 | 5225 , 145 | 5245 , 146 | 5265 , 147 | 5284 , 148 | 5304 , 149 | 5324 , 150 | 5344 , 151 | 5364 , 152 | 5383 , 153 | 5403 , 154 | 5423 , 155 | 5443 , 156 | 5463 , 157 | 5483 , 158 | 5504 , 159 | 5524 , 160 | 5544 , 161 | 5564 , 162 | 5584 , 163 | 5605 , 164 | 5625 , 165 | 5645 , 166 | 5666 , 167 | 5686 , 168 | 5707 , 169 | 5728 , 170 | 5748 , 171 | 5769 , 172 | 5790 , 173 | 5811 , 174 | 5832 , 175 | 5853 , 176 | 5874 , 177 | 5895 , 178 | 5916 , 179 | 5938 , 180 | 5959 , 181 | 5980 , 182 | 6003 , 183 | 6024 , 184 | 6046 , 185 | 6068 , 186 | 6090 , 187 | 6112 , 188 | 6134 , 189 | 6157 , 190 | 6179 , 191 | 6202 , 192 | 6225 , 193 | 6248 , 194 | 6270 , 195 | 6293 , 196 | 6317 , 197 | 6341 , 198 | 6364 , 199 | 6388 , 200 | 6412 , 201 | 6436 , 202 | 6460 , 203 | 6485 , 204 | 6509 , 205 | 6535 , 206 | 6560 , 207 | 6585 , 208 | 6610 , 209 | 6636 , 210 | 6662 , 211 | 6688 , 212 | 6715 , 213 | 6741 , 214 | 6769 , 215 | 6796 , 216 | 6823 , 217 | 6851 , 218 | 6879 , 219 | 6908 , 220 | 6937 , 221 | 6966 , 222 | 6996 , 223 | 7027 , 224 | 7057 , 225 | 7088 , 226 | 7119 , 227 | 7151 , 228 | 7184 , 229 | 7217 , 230 | 7250 , 231 | 7284 , 232 | 7319 , 233 | 7355 , 234 | 7392 , 235 | 7429 , 236 | 7466 , 237 | 7506 , 238 | 7546 , 239 | 7586 , 240 | 7628 , 241 | 7671 , 242 | 7717 , 243 | 7763 , 244 | 7810 , 245 | 7859 , 246 | 7911 , 247 | 7966 , 248 | 8022 , 249 | 8081 , 250 | 8143 , 251 | 8212 , 252 | 8283 , 253 | 8360 , 254 | 8444 , 255 | 8538 , 256 | 8647 , 257 | 8772 , 258 | 8929 , 259 | 9148 , 260 | 10000 261 | }; 262 | -------------------------------------------------------------------------------- /ssr.cmp: -------------------------------------------------------------------------------- 1 | Cmp-Mod V01 Created by CvPcb (2013-mar-13)-testing date = Fri 03 May 2013 09:37:14 PM CEST 2 | 3 | BeginCmp 4 | TimeStamp = /511F7F96; 5 | Reference = C1; 6 | ValeurCmp = 10nF 400V; 7 | IdModule = rc-master-C100-140X060; 8 | EndCmp 9 | 10 | BeginCmp 11 | TimeStamp = /51602650; 12 | Reference = C2; 13 | ValeurCmp = 47nF 400V; 14 | IdModule = rc-master-C150-190X070; 15 | EndCmp 16 | 17 | BeginCmp 18 | TimeStamp = /51601848; 19 | Reference = C3; 20 | ValeurCmp = 100nF 400V; 21 | IdModule = rc-master-C150-190X070; 22 | EndCmp 23 | 24 | BeginCmp 25 | TimeStamp = /516A4F31; 26 | Reference = C4; 27 | ValeurCmp = 100nF; 28 | IdModule = -C0603; 29 | EndCmp 30 | 31 | BeginCmp 32 | TimeStamp = /516A50F4; 33 | Reference = C5; 34 | ValeurCmp = 100uF; 35 | IdModule = rc-master-CE-035X100; 36 | EndCmp 37 | 38 | BeginCmp 39 | TimeStamp = /5183F45A; 40 | Reference = C6; 41 | ValeurCmp = C; 42 | IdModule = c_0603; 43 | EndCmp 44 | 45 | BeginCmp 46 | TimeStamp = /516A4B29; 47 | Reference = CON1; 48 | ValeurCmp = AVR-ISP-6; 49 | IdModule = atmel-AVR-ISP-6; 50 | EndCmp 51 | 52 | BeginCmp 53 | TimeStamp = /51840F81; 54 | Reference = D1; 55 | ValeurCmp = LED; 56 | IdModule = SM0805; 57 | EndCmp 58 | 59 | BeginCmp 60 | TimeStamp = /51840FAE; 61 | Reference = D2; 62 | ValeurCmp = LED; 63 | IdModule = SM0805; 64 | EndCmp 65 | 66 | BeginCmp 67 | TimeStamp = /511F7D38; 68 | Reference = F1; 69 | ValeurCmp = FUSE; 70 | IdModule = Fuseholder5x20_horiz_open_universal_Type-III; 71 | EndCmp 72 | 73 | BeginCmp 74 | TimeStamp = /5169798E; 75 | Reference = IC1; 76 | ValeurCmp = ATTINY44-SS; 77 | IdModule = -SO-14; 78 | EndCmp 79 | 80 | BeginCmp 81 | TimeStamp = /511F7ED4; 82 | Reference = L1; 83 | ValeurCmp = 40-100uH; 84 | IdModule = Choke_Toroid_8x16mm_Vertical; 85 | EndCmp 86 | 87 | BeginCmp 88 | TimeStamp = /511F854D; 89 | Reference = P1; 90 | ValeurCmp = CONN_4; 91 | IdModule = connect-SC-04; 92 | EndCmp 93 | 94 | BeginCmp 95 | TimeStamp = /516976FE; 96 | Reference = P2; 97 | ValeurCmp = CONTACT; 98 | IdModule = HOLE_60; 99 | EndCmp 100 | 101 | BeginCmp 102 | TimeStamp = /5169770B; 103 | Reference = P3; 104 | ValeurCmp = CONTACT; 105 | IdModule = HOLE_60; 106 | EndCmp 107 | 108 | BeginCmp 109 | TimeStamp = /51697711; 110 | Reference = P4; 111 | ValeurCmp = CONTACT; 112 | IdModule = HOLE_60; 113 | EndCmp 114 | 115 | BeginCmp 116 | TimeStamp = /51698020; 117 | Reference = P6; 118 | ValeurCmp = CONN_4; 119 | IdModule = connect-SC-04; 120 | EndCmp 121 | 122 | BeginCmp 123 | TimeStamp = /516B0787; 124 | Reference = Q1; 125 | ValeurCmp = MOSFET_N; 126 | IdModule = -SOT23; 127 | EndCmp 128 | 129 | BeginCmp 130 | TimeStamp = /511F7E96; 131 | Reference = R1; 132 | ValeurCmp = 360R; 133 | IdModule = Resistor_Horizontal_RM20mm; 134 | EndCmp 135 | 136 | BeginCmp 137 | TimeStamp = /511F837C; 138 | Reference = R2; 139 | ValeurCmp = 200R; 140 | IdModule = rc-master-R0603; 141 | EndCmp 142 | 143 | BeginCmp 144 | TimeStamp = /511F7F8E; 145 | Reference = R3; 146 | ValeurCmp = 39; 147 | IdModule = Resistor_Horizontal_RM15mm; 148 | EndCmp 149 | 150 | BeginCmp 151 | TimeStamp = /511F8128; 152 | Reference = R4; 153 | ValeurCmp = 8.2k 5W; 154 | IdModule = Resistor_Horizontal_RM30mm; 155 | EndCmp 156 | 157 | BeginCmp 158 | TimeStamp = /511F812E; 159 | Reference = R5; 160 | ValeurCmp = 8.2k 5W; 161 | IdModule = Resistor_Horizontal_RM30mm; 162 | EndCmp 163 | 164 | BeginCmp 165 | TimeStamp = /51602617; 166 | Reference = R6; 167 | ValeurCmp = 470R; 168 | IdModule = Resistor_Horizontal_RM15mm; 169 | EndCmp 170 | 171 | BeginCmp 172 | TimeStamp = /516986E3; 173 | Reference = R7; 174 | ValeurCmp = R; 175 | IdModule = -R0603; 176 | EndCmp 177 | 178 | BeginCmp 179 | TimeStamp = /516A9D39; 180 | Reference = R8; 181 | ValeurCmp = 510k; 182 | IdModule = Resistor_Horizontal_RM15mm; 183 | EndCmp 184 | 185 | BeginCmp 186 | TimeStamp = /516B0880; 187 | Reference = R9; 188 | ValeurCmp = 10k; 189 | IdModule = -R0603; 190 | EndCmp 191 | 192 | BeginCmp 193 | TimeStamp = /516B0869; 194 | Reference = R10; 195 | ValeurCmp = R; 196 | IdModule = -R0603; 197 | EndCmp 198 | 199 | BeginCmp 200 | TimeStamp = /51840FC2; 201 | Reference = R11; 202 | ValeurCmp = R; 203 | IdModule = SM0603; 204 | EndCmp 205 | 206 | BeginCmp 207 | TimeStamp = /51840FC9; 208 | Reference = R12; 209 | ValeurCmp = R; 210 | IdModule = SM0603; 211 | EndCmp 212 | 213 | BeginCmp 214 | TimeStamp = /511F7BD6; 215 | Reference = U1; 216 | ValeurCmp = MOC-3052; 217 | IdModule = optocoupler-2-DIL06; 218 | EndCmp 219 | 220 | BeginCmp 221 | TimeStamp = /511F7BC7; 222 | Reference = U2; 223 | ValeurCmp = TRIAC; 224 | IdModule = -TOP3; 225 | EndCmp 226 | 227 | BeginCmp 228 | TimeStamp = /51603500; 229 | Reference = U3; 230 | ValeurCmp = LTV-814; 231 | IdModule = optocoupler-2-SO-4; 232 | EndCmp 233 | 234 | BeginCmp 235 | TimeStamp = /511F7F69; 236 | Reference = VR1; 237 | ValeurCmp = VR; 238 | IdModule = varistor-S05K40; 239 | EndCmp 240 | 241 | EndListe 242 | -------------------------------------------------------------------------------- /gerbers/ssr-B_Mask.gbs: -------------------------------------------------------------------------------- 1 | G04 (created by PCBNEW (2013-mar-13)-testing) date Tue 07 May 2013 10:03:09 PM CEST* 2 | %MOIN*% 3 | G04 Gerber Fmt 3.4, Leading zero omitted, Abs format* 4 | %FSLAX34Y34*% 5 | G01* 6 | G70* 7 | G90* 8 | G04 APERTURE LIST* 9 | %ADD10C,2.3622e-06*% 10 | %ADD11R,0.0708661X0.0590551*% 11 | %ADD12C,0.551181*% 12 | %ADD13O,0.165X0.0825*% 13 | %ADD14C,0.0787*% 14 | %ADD15C,0.0906*% 15 | %ADD16C,0.2*% 16 | %ADD17C,0.0859*% 17 | %ADD18C,0.06*% 18 | %ADD19R,0.06X0.06*% 19 | %ADD20R,0.062X0.062*% 20 | %ADD21C,0.062*% 21 | %ADD22C,0.1575*% 22 | %ADD23O,0.112X0.056*% 23 | %ADD24R,0.0433X0.0354*% 24 | %ADD25C,0.1*% 25 | %ADD26O,0.104X0.052*% 26 | %ADD27R,0.0236X0.0866*% 27 | %ADD28R,0.0393X0.0433*% 28 | %ADD29C,0.2362*% 29 | %ADD30R,0.0551X0.0393*% 30 | %ADD31R,0.0433X0.0393*% 31 | %ADD32R,0.0354X0.0394*% 32 | %ADD33C,0.008*% 33 | %ADD34C,0.01*% 34 | G04 APERTURE END LIST* 35 | G54D10* 36 | G54D11* 37 | X67978Y-47250D03* 38 | X67978Y-46250D03* 39 | X71521Y-46250D03* 40 | X71521Y-47250D03* 41 | G54D12* 42 | X47250Y-28750D03* 43 | X57000Y-28750D03* 44 | X66000Y-28750D03* 45 | G54D13* 46 | X40500Y-43200D03* 47 | X40500Y-41000D03* 48 | X40500Y-38800D03* 49 | G54D14* 50 | X72000Y-53000D03* 51 | G54D15* 52 | X56252Y-53000D03* 53 | G54D16* 54 | X44000Y-45000D03* 55 | X44000Y-42000D03* 56 | X44000Y-31200D03* 57 | X44000Y-34200D03* 58 | G54D14* 59 | X46750Y-43500D03* 60 | X46750Y-37500D03* 61 | X48250Y-43500D03* 62 | X48250Y-37500D03* 63 | X50250Y-37500D03* 64 | X50250Y-45500D03* 65 | G54D17* 66 | X77250Y-42500D03* 67 | X75875Y-42500D03* 68 | G54D18* 69 | X77200Y-39400D03* 70 | X76200Y-40400D03* 71 | X77200Y-40400D03* 72 | X76200Y-41400D03* 73 | X77200Y-41400D03* 74 | G54D19* 75 | X76200Y-39400D03* 76 | G54D20* 77 | X77200Y-44000D03* 78 | G54D21* 79 | X77200Y-45000D03* 80 | X77200Y-46000D03* 81 | X77200Y-47000D03* 82 | G54D20* 83 | X77200Y-33750D03* 84 | G54D21* 85 | X77200Y-34750D03* 86 | X77200Y-35750D03* 87 | X77200Y-36750D03* 88 | G54D22* 89 | X59374Y-45000D03* 90 | X59374Y-37126D03* 91 | G54D23* 92 | X51250Y-29900D03* 93 | X53250Y-30600D03* 94 | G54D24* 95 | X76250Y-47062D03* 96 | X76250Y-46438D03* 97 | G54D25* 98 | X52000Y-46000D03* 99 | X52000Y-52000D03* 100 | X47250Y-34750D03* 101 | X53250Y-34750D03* 102 | X47000Y-45000D03* 103 | X47000Y-49000D03* 104 | G54D26* 105 | X72000Y-44750D03* 106 | X72000Y-43750D03* 107 | X72000Y-42750D03* 108 | X69000Y-42750D03* 109 | X69000Y-43750D03* 110 | X69000Y-44750D03* 111 | G54D27* 112 | X75100Y-35873D03* 113 | X74600Y-35873D03* 114 | X74100Y-35873D03* 115 | X73600Y-35873D03* 116 | X73100Y-35873D03* 117 | X72600Y-35873D03* 118 | X72100Y-35873D03* 119 | X72100Y-33827D03* 120 | X72600Y-33827D03* 121 | X73100Y-33827D03* 122 | X73600Y-33827D03* 123 | X74100Y-33827D03* 124 | X74600Y-33827D03* 125 | X75100Y-33827D03* 126 | G54D28* 127 | X74016Y-37200D03* 128 | X74684Y-37200D03* 129 | X75800Y-36066D03* 130 | X75800Y-36734D03* 131 | G54D29* 132 | X41750Y-28750D03* 133 | X75500Y-28500D03* 134 | X41750Y-53250D03* 135 | X75250Y-53250D03* 136 | G54D14* 137 | X47250Y-32500D03* 138 | X53250Y-32500D03* 139 | G54D30* 140 | X74433Y-44376D03* 141 | X74433Y-45124D03* 142 | X73567Y-44750D03* 143 | G54D31* 144 | X73000Y-43916D03* 145 | X73000Y-44584D03* 146 | X75250Y-44416D03* 147 | X75250Y-45084D03* 148 | G54D32* 149 | X72396Y-45450D03* 150 | X71804Y-45450D03* 151 | G54D14* 152 | X77000Y-49750D03* 153 | G54D15* 154 | X61252Y-49750D03* 155 | G54D10* 156 | G36* 157 | X47685Y-30510D02* 158 | X43747Y-34694D01* 159 | X41790Y-32981D01* 160 | X41790Y-32266D01* 161 | X45007Y-29049D01* 162 | X47685Y-30510D01* 163 | X47685Y-30510D01* 164 | G37* 165 | G54D33* 166 | X47685Y-30510D02* 167 | X43747Y-34694D01* 168 | X41790Y-32981D01* 169 | X41790Y-32266D01* 170 | X45007Y-29049D01* 171 | X47685Y-30510D01* 172 | G54D10* 173 | G36* 174 | X60350Y-45579D02* 175 | X56379Y-49550D01* 176 | X42800Y-49550D01* 177 | X42620Y-49550D01* 178 | X39650Y-46579D01* 179 | X39650Y-42850D01* 180 | X41550Y-42850D01* 181 | X41550Y-45620D01* 182 | X43379Y-47450D01* 183 | X55419Y-47450D01* 184 | X58440Y-44630D01* 185 | X58634Y-44242D01* 186 | X59398Y-44052D01* 187 | X59980Y-44246D01* 188 | X60350Y-44430D01* 189 | X60350Y-45579D01* 190 | X60350Y-45579D01* 191 | G37* 192 | G54D34* 193 | X60350Y-45579D02* 194 | X56379Y-49550D01* 195 | X42800Y-49550D01* 196 | X42620Y-49550D01* 197 | X39650Y-46579D01* 198 | X39650Y-42850D01* 199 | X41550Y-42850D01* 200 | X41550Y-45620D01* 201 | X43379Y-47450D01* 202 | X55419Y-47450D01* 203 | X58440Y-44630D01* 204 | X58634Y-44242D01* 205 | X59398Y-44052D01* 206 | X59980Y-44246D01* 207 | X60350Y-44430D01* 208 | X60350Y-45579D01* 209 | G54D10* 210 | G36* 211 | X68436Y-30021D02* 212 | X62729Y-38210D01* 213 | X57540Y-38210D01* 214 | X57540Y-33517D01* 215 | X63259Y-28295D01* 216 | X68436Y-30021D01* 217 | X68436Y-30021D01* 218 | G37* 219 | G54D33* 220 | X68436Y-30021D02* 221 | X62729Y-38210D01* 222 | X57540Y-38210D01* 223 | X57540Y-33517D01* 224 | X63259Y-28295D01* 225 | X68436Y-30021D01* 226 | G54D10* 227 | G36* 228 | X44960Y-45710D02* 229 | X43040Y-45710D01* 230 | X43040Y-42483D01* 231 | X42772Y-42216D01* 232 | X41008Y-41460D01* 233 | X39790Y-41460D01* 234 | X39790Y-40540D01* 235 | X44960Y-40540D01* 236 | X44960Y-45710D01* 237 | X44960Y-45710D01* 238 | G37* 239 | G54D33* 240 | X44960Y-45710D02* 241 | X43040Y-45710D01* 242 | X43040Y-42483D01* 243 | X42772Y-42216D01* 244 | X41008Y-41460D01* 245 | X39790Y-41460D01* 246 | X39790Y-40540D01* 247 | X44960Y-40540D01* 248 | X44960Y-45710D01* 249 | M02* 250 | -------------------------------------------------------------------------------- /firmware/Makefile: -------------------------------------------------------------------------------- 1 | # Name: Makefile 2 | # Project: hid-mouse example 3 | # Author: Christian Starkjohann 4 | # Creation Date: 2008-04-07 5 | # Tabsize: 4 6 | # Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH 7 | # License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt) 8 | # This Revision: $Id: Makefile 692 2008-11-07 15:07:40Z cs $ 9 | 10 | DEVICE = attiny44 11 | F_CPU = 8000000 # in Hz 12 | FUSE_L = 0xD2# see below for fuse values for particular devices 13 | FUSE_H = 0xD5 14 | AVRDUDE = avrdude -c usbasp -P usb -p $(DEVICE) # edit this line for your programmer 15 | 16 | CFLAGS = -Iusbdrv -I. -DDEBUG_LEVEL=0 -Os 17 | CFLAGS += -ffunction-sections -fdata-sections -save-temps 18 | LDFLAGS += -Wl,--gc-sections,--relax 19 | 20 | OBJECTS = main.o usiTwiSlave.o conductionAngles.o 21 | 22 | COMPILE = avr-gcc -DF_CPU=$(F_CPU) $(CFLAGS) $(LDFLAGS) -mmcu=$(DEVICE) 23 | 24 | ############################################################################## 25 | # Fuse values for particular devices 26 | ############################################################################## 27 | # If your device is not listed here, go to 28 | # http://palmavr.sourceforge.net/cgi-bin/fc.cgi 29 | # and choose options for external crystal clock and no clock divider 30 | # 31 | ################################## ATMega8 ################################## 32 | # ATMega8 FUSE_L (Fuse low byte): 33 | # 0x9f = 1 0 0 1 1 1 1 1 34 | # ^ ^ \ / \--+--/ 35 | # | | | +------- CKSEL 3..0 (external >8M crystal) 36 | # | | +--------------- SUT 1..0 (crystal osc, BOD enabled) 37 | # | +------------------ BODEN (BrownOut Detector enabled) 38 | # +-------------------- BODLEVEL (2.7V) 39 | # ATMega8 FUSE_H (Fuse high byte): 40 | # 0xc9 = 1 1 0 0 1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000) 41 | # ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0 42 | # | | | | | +-------- BOOTSZ1 43 | # | | | | + --------- EESAVE (don't preserve EEPROM over chip erase) 44 | # | | | +-------------- CKOPT (full output swing) 45 | # | | +---------------- SPIEN (allow serial programming) 46 | # | +------------------ WDTON (WDT not always on) 47 | # +-------------------- RSTDISBL (reset pin is enabled) 48 | # 49 | ############################## ATMega48/88/168 ############################## 50 | # ATMega*8 FUSE_L (Fuse low byte): 51 | # 0xdf = 1 1 0 1 1 1 1 1 52 | # ^ ^ \ / \--+--/ 53 | # | | | +------- CKSEL 3..0 (external >8M crystal) 54 | # | | +--------------- SUT 1..0 (crystal osc, BOD enabled) 55 | # | +------------------ CKOUT (if 0: Clock output enabled) 56 | # +-------------------- CKDIV8 (if 0: divide by 8) 57 | # ATMega*8 FUSE_H (Fuse high byte): 58 | # 0xde = 1 1 0 1 1 1 1 0 59 | # ^ ^ ^ ^ ^ \-+-/ 60 | # | | | | | +------ BODLEVEL 0..2 (110 = 1.8 V) 61 | # | | | | + --------- EESAVE (preserve EEPROM over chip erase) 62 | # | | | +-------------- WDTON (if 0: watchdog always on) 63 | # | | +---------------- SPIEN (allow serial programming) 64 | # | +------------------ DWEN (debug wire enable) 65 | # +-------------------- RSTDISBL (reset pin is enabled) 66 | # 67 | ############################## ATTiny25/45/85 ############################### 68 | # ATMega*5 FUSE_L (Fuse low byte): 69 | # 0xef = 1 1 1 0 1 1 1 1 70 | # ^ ^ \+/ \--+--/ 71 | # | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz) 72 | # | | +--------------- SUT 1..0 (BOD enabled, fast rising power) 73 | # | +------------------ CKOUT (clock output on CKOUT pin -> disabled) 74 | # +-------------------- CKDIV8 (divide clock by 8 -> don't divide) 75 | # ATMega*5 FUSE_H (Fuse high byte): 76 | # 0xdd = 1 1 0 1 1 1 0 1 77 | # ^ ^ ^ ^ ^ \-+-/ 78 | # | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V) 79 | # | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved) 80 | # | | | +-------------- WDTON (watchdog timer always on -> disable) 81 | # | | +---------------- SPIEN (enable serial programming -> enabled) 82 | # | +------------------ DWEN (debug wire enable) 83 | # +-------------------- RSTDISBL (disable external reset -> enabled) 84 | # 85 | ################################ ATTiny2313 ################################# 86 | # ATTiny2313 FUSE_L (Fuse low byte): 87 | # 0xef = 1 1 1 0 1 1 1 1 88 | # ^ ^ \+/ \--+--/ 89 | # | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz) 90 | # | | +--------------- SUT 1..0 (BOD enabled, fast rising power) 91 | # | +------------------ CKOUT (clock output on CKOUT pin -> disabled) 92 | # +-------------------- CKDIV8 (divide clock by 8 -> don't divide) 93 | # ATTiny2313 FUSE_H (Fuse high byte): 94 | # 0xdb = 1 1 0 1 1 0 1 1 95 | # ^ ^ ^ ^ \-+-/ ^ 96 | # | | | | | +---- RSTDISBL (disable external reset -> enabled) 97 | # | | | | +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V) 98 | # | | | +-------------- WDTON (watchdog timer always on -> disable) 99 | # | | +---------------- SPIEN (enable serial programming -> enabled) 100 | # | +------------------ EESAVE (preserve EEPROM on Chip Erase -> not preserved) 101 | # +-------------------- DWEN (debug wire enable) 102 | 103 | 104 | # symbolic targets: 105 | help: 106 | @echo "This Makefile has no default rule. Use one of the following:" 107 | @echo "make hex ....... to build main.hex" 108 | @echo "make program ... to flash fuses and firmware" 109 | @echo "make fuse ...... to flash the fuses" 110 | @echo "make flash ..... to flash the firmware (use this on metaboard)" 111 | @echo "make clean ..... to delete objects and hex file" 112 | 113 | hex: main.hex 114 | 115 | program: flash fuse 116 | 117 | # rule for programming fuse bits: 118 | fuse: 119 | @[ "$(FUSE_H)" != "" -a "$(FUSE_L)" != "" ] || \ 120 | { echo "*** Edit Makefile and choose values for FUSE_L and FUSE_H!"; exit 1; } 121 | $(AVRDUDE) -U hfuse:w:$(FUSE_H):m -U lfuse:w:$(FUSE_L):m 122 | 123 | # rule for uploading firmware: 124 | flash: main.hex 125 | $(AVRDUDE) -U flash:w:main.hex:i 126 | 127 | # rule for deleting dependent files (those which can be built by Make): 128 | clean: 129 | rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o main.s 130 | 131 | # Generic rule for compiling C files: 132 | .c.o: 133 | $(COMPILE) -c $< -o $@ 134 | 135 | # Generic rule for assembling Assembler source files: 136 | .S.o: 137 | $(COMPILE) -x assembler-with-cpp -c $< -o $@ 138 | # "-x assembler-with-cpp" should not be necessary since this is the default 139 | # file type for the .S (with capital S) extension. However, upper case 140 | # characters are not always preserved on Windows. To ensure WinAVR 141 | # compatibility define the file type manually. 142 | 143 | # Generic rule for compiling C to assembler, used for debugging only. 144 | .c.s: 145 | $(COMPILE) -S $< -o $@ 146 | 147 | # file targets: 148 | 149 | # Since we don't want to ship the driver multipe times, we copy it into this project: 150 | 151 | main.elf: $(OBJECTS) # usbdrv dependency only needed because we copy it 152 | $(COMPILE) -o main.elf $(OBJECTS) 153 | 154 | main.hex: main.elf 155 | rm -f main.hex main.eep.hex 156 | avr-objcopy -j .text -j .data -O ihex main.elf main.hex 157 | avr-size main.hex 158 | 159 | # debugging targets: 160 | 161 | disasm: main.elf 162 | avr-objdump -d main.elf 163 | 164 | cpp: 165 | $(COMPILE) -E main.c 166 | -------------------------------------------------------------------------------- /experiment1/step-response-linear2.csv: -------------------------------------------------------------------------------- 1 | 23.50 2 | 23.56 3 | 23.56 4 | 23.69 5 | 23.69 6 | 23.81 7 | 23.94 8 | 24.06 9 | 24.19 10 | 24.31 11 | 24.50 12 | 24.62 13 | 24.81 14 | 25.00 15 | 25.12 16 | 25.37 17 | 25.50 18 | 25.69 19 | 25.87 20 | 26.06 21 | 26.25 22 | 26.44 23 | 26.62 24 | 26.81 25 | 27.00 26 | 27.19 27 | 27.44 28 | 27.56 29 | 27.75 30 | 27.94 31 | 28.12 32 | 28.31 33 | 28.50 34 | 28.75 35 | 28.94 36 | 29.06 37 | 29.25 38 | 29.44 39 | 29.62 40 | 29.81 41 | 29.94 42 | 30.12 43 | 30.31 44 | 30.44 45 | 30.62 46 | 30.75 47 | 30.94 48 | 31.06 49 | 31.25 50 | 31.37 51 | 31.50 52 | 31.62 53 | 31.81 54 | 31.94 55 | 32.06 56 | 32.19 57 | 32.31 58 | 32.44 59 | 32.56 60 | 32.69 61 | 32.88 62 | 32.94 63 | 33.13 64 | 33.19 65 | 33.31 66 | 33.44 67 | 33.56 68 | 33.69 69 | 33.75 70 | 33.88 71 | 34.00 72 | 34.06 73 | 34.19 74 | 34.31 75 | 34.38 76 | 34.50 77 | 34.56 78 | 34.69 79 | 34.75 80 | 34.81 81 | 34.94 82 | 35.00 83 | 35.13 84 | 35.19 85 | 35.25 86 | 35.31 87 | 35.44 88 | 35.50 89 | 35.56 90 | 35.63 91 | 35.69 92 | 35.75 93 | 35.81 94 | 35.88 95 | 36.00 96 | 36.00 97 | 36.06 98 | 36.19 99 | 36.19 100 | 36.25 101 | 36.31 102 | 36.38 103 | 36.44 104 | 36.50 105 | 36.56 106 | 36.56 107 | 36.63 108 | 36.69 109 | 36.75 110 | 36.75 111 | 36.81 112 | 36.88 113 | 36.94 114 | 36.94 115 | 37.00 116 | 37.06 117 | 37.06 118 | 37.13 119 | 37.19 120 | 37.25 121 | 37.25 122 | 37.31 123 | 37.31 124 | 37.38 125 | 37.44 126 | 37.44 127 | 37.44 128 | 37.50 129 | 37.56 130 | 37.56 131 | 37.56 132 | 37.63 133 | 37.63 134 | 37.69 135 | 37.69 136 | 37.69 137 | 37.75 138 | 37.75 139 | 37.81 140 | 37.81 141 | 37.88 142 | 37.88 143 | 37.88 144 | 37.94 145 | 37.94 146 | 38.00 147 | 38.00 148 | 38.00 149 | 38.06 150 | 38.06 151 | 38.06 152 | 38.06 153 | 38.13 154 | 38.13 155 | 38.13 156 | 38.19 157 | 38.19 158 | 38.19 159 | 38.19 160 | 38.25 161 | 38.25 162 | 38.25 163 | 38.25 164 | 38.31 165 | 38.31 166 | 38.31 167 | 38.38 168 | 38.38 169 | 38.38 170 | 38.38 171 | 38.44 172 | 38.44 173 | 38.44 174 | 38.44 175 | 38.44 176 | 38.50 177 | 38.50 178 | 38.50 179 | 38.50 180 | 38.50 181 | 38.50 182 | 38.56 183 | 38.56 184 | 38.56 185 | 38.56 186 | 38.63 187 | 38.63 188 | 38.63 189 | 38.63 190 | 38.63 191 | 38.63 192 | 38.63 193 | 38.69 194 | 38.69 195 | 38.69 196 | 38.69 197 | 38.69 198 | 38.69 199 | 38.69 200 | 38.69 201 | 38.75 202 | 38.75 203 | 38.75 204 | 38.75 205 | 38.75 206 | 38.81 207 | 38.75 208 | 38.81 209 | 38.75 210 | 38.75 211 | 38.75 212 | 38.81 213 | 38.81 214 | 38.81 215 | 38.81 216 | 38.81 217 | 38.88 218 | 38.81 219 | 38.88 220 | 38.88 221 | 38.88 222 | 38.88 223 | 38.88 224 | 38.88 225 | 38.88 226 | 38.88 227 | 38.88 228 | 38.88 229 | 38.88 230 | 38.94 231 | 38.94 232 | 38.88 233 | 38.88 234 | 38.94 235 | 38.94 236 | 38.94 237 | 38.94 238 | 38.94 239 | 38.94 240 | 38.94 241 | 38.94 242 | 38.94 243 | 38.94 244 | 38.94 245 | 38.94 246 | 38.94 247 | 38.94 248 | 38.94 249 | 38.94 250 | 39.00 251 | 39.00 252 | 39.00 253 | 39.00 254 | 39.00 255 | 39.00 256 | 39.00 257 | 39.00 258 | 39.00 259 | 39.00 260 | 39.00 261 | 39.00 262 | 39.00 263 | 39.00 264 | 39.06 265 | 39.00 266 | 39.06 267 | 39.00 268 | 39.06 269 | 39.00 270 | 39.06 271 | 39.06 272 | 39.06 273 | 39.06 274 | 39.06 275 | 39.06 276 | 39.06 277 | 39.06 278 | 39.06 279 | 39.06 280 | 39.06 281 | 39.06 282 | 39.06 283 | 39.06 284 | 39.06 285 | 39.06 286 | 39.06 287 | 39.06 288 | 39.06 289 | 39.06 290 | 39.06 291 | 39.06 292 | 39.06 293 | 39.06 294 | 39.06 295 | 39.06 296 | 39.06 297 | 39.06 298 | 39.13 299 | 39.13 300 | 39.06 301 | 39.13 302 | 39.13 303 | 39.13 304 | 39.13 305 | 39.06 306 | 39.13 307 | 39.13 308 | 39.13 309 | 39.13 310 | 39.13 311 | 39.13 312 | 39.13 313 | 39.13 314 | 39.13 315 | 39.13 316 | 39.13 317 | 39.13 318 | 39.13 319 | 39.13 320 | 39.13 321 | 39.13 322 | 39.13 323 | 39.19 324 | 39.13 325 | 39.19 326 | 39.13 327 | 39.13 328 | 39.13 329 | 39.19 330 | 39.19 331 | 39.19 332 | 39.19 333 | 39.19 334 | 39.19 335 | 39.19 336 | 39.19 337 | 39.19 338 | 39.19 339 | 39.19 340 | 39.25 341 | 39.19 342 | 39.19 343 | 39.19 344 | 39.19 345 | 39.19 346 | 39.25 347 | 39.19 348 | 39.25 349 | 39.25 350 | 39.25 351 | 39.19 352 | 39.19 353 | 39.25 354 | 39.19 355 | 39.25 356 | 39.25 357 | 39.25 358 | 39.25 359 | 39.25 360 | 39.25 361 | 39.25 362 | 39.25 363 | 39.25 364 | 39.25 365 | 39.25 366 | 39.19 367 | 39.25 368 | 39.25 369 | 39.25 370 | 39.25 371 | 39.25 372 | 39.25 373 | 39.25 374 | 39.25 375 | 39.25 376 | 39.25 377 | 39.25 378 | 39.25 379 | 39.25 380 | 39.31 381 | 39.25 382 | 39.31 383 | 39.25 384 | 39.25 385 | 39.31 386 | 39.25 387 | 39.25 388 | 39.31 389 | 39.25 390 | 39.31 391 | 39.31 392 | 39.31 393 | 39.31 394 | 39.31 395 | 39.31 396 | 39.25 397 | 39.31 398 | 39.31 399 | 39.31 400 | 39.31 401 | 39.31 402 | 39.31 403 | 39.31 404 | 39.31 405 | 39.31 406 | 39.31 407 | 39.31 408 | 39.31 409 | 39.31 410 | 39.31 411 | 39.31 412 | 39.31 413 | 39.31 414 | 39.31 415 | 39.31 416 | 39.31 417 | 39.31 418 | 39.31 419 | 39.31 420 | 39.31 421 | 39.31 422 | 39.38 423 | 39.31 424 | 39.31 425 | 39.31 426 | 39.31 427 | 39.38 428 | 39.31 429 | 39.38 430 | 39.38 431 | 39.38 432 | 39.38 433 | 39.38 434 | 39.38 435 | 39.38 436 | 39.38 437 | 39.38 438 | 39.38 439 | 39.38 440 | 39.38 441 | 39.38 442 | 39.38 443 | 39.38 444 | 39.38 445 | 39.38 446 | 39.38 447 | 39.38 448 | 39.38 449 | 39.38 450 | 39.38 451 | 39.38 452 | 39.38 453 | 39.38 454 | 39.38 455 | 39.38 456 | 39.38 457 | 39.38 458 | 39.38 459 | 39.44 460 | 39.38 461 | 39.38 462 | 39.38 463 | 39.44 464 | 39.44 465 | 39.44 466 | 39.38 467 | 39.44 468 | 39.44 469 | 39.44 470 | 39.38 471 | 39.44 472 | 39.44 473 | 39.44 474 | 39.44 475 | 39.44 476 | 39.44 477 | 39.44 478 | 39.44 479 | 39.44 480 | 39.44 481 | 39.44 482 | 39.44 483 | 39.44 484 | 39.44 485 | 39.44 486 | 39.44 487 | 39.44 488 | 39.44 489 | 39.44 490 | 39.44 491 | 39.44 492 | 39.44 493 | 39.44 494 | 39.44 495 | 39.44 496 | 39.44 497 | 39.44 498 | 39.44 499 | 39.44 500 | 39.50 501 | 39.44 502 | 39.50 503 | 39.44 504 | 39.50 505 | 39.50 506 | 39.44 507 | 39.44 508 | 39.50 509 | 39.50 510 | 39.44 511 | 39.44 512 | 39.44 513 | 39.44 514 | 39.50 515 | 39.50 516 | 39.50 517 | 39.50 518 | 39.50 519 | 39.50 520 | 39.50 521 | 39.50 522 | 39.50 523 | 39.50 524 | 39.50 525 | 39.50 526 | 39.50 527 | 39.50 528 | 39.50 529 | 39.50 530 | 39.50 531 | 39.50 532 | 39.50 533 | 39.50 534 | 39.50 535 | 39.50 536 | 39.50 537 | 39.50 538 | 39.50 539 | 39.50 540 | 39.50 541 | 39.50 542 | 39.50 543 | 39.50 544 | 39.50 545 | 39.50 546 | 39.50 547 | 39.50 548 | 39.50 549 | 39.50 550 | 39.50 551 | 39.50 552 | 39.56 553 | 39.56 554 | 39.50 555 | 39.50 556 | 39.50 557 | 39.56 558 | 39.50 559 | 39.50 560 | 39.50 561 | 39.56 562 | 39.50 563 | 39.50 564 | 39.56 565 | 39.50 566 | 39.56 567 | 39.50 568 | 39.56 569 | 39.50 570 | 39.50 571 | 39.56 572 | 39.50 573 | 39.50 574 | 39.56 575 | 39.56 576 | 39.50 577 | 39.56 578 | 39.56 579 | 39.50 580 | 39.56 581 | 39.56 582 | 39.50 583 | 39.56 584 | 39.56 585 | 39.56 586 | 39.56 587 | 39.56 588 | 39.56 589 | 39.56 590 | 39.56 591 | 39.56 592 | 39.56 593 | 39.56 594 | 39.56 595 | 39.56 596 | 39.56 597 | 39.56 598 | 39.56 599 | 39.56 600 | 39.56 601 | 39.56 602 | 39.56 603 | 39.56 604 | 39.56 605 | 39.56 606 | 39.56 607 | 39.56 608 | 39.56 609 | 39.56 610 | 39.56 611 | 39.56 612 | 39.56 613 | 39.56 614 | 39.56 615 | 39.56 616 | 39.63 617 | 39.56 618 | 39.56 619 | 39.56 620 | 39.63 621 | 39.63 622 | 39.56 623 | 39.56 624 | 39.56 625 | 39.56 626 | 39.56 627 | 39.56 628 | 39.56 629 | 39.56 630 | 39.56 631 | 39.56 632 | 39.56 633 | 39.56 634 | 39.56 635 | 39.63 636 | 39.63 637 | 39.56 638 | 39.63 639 | 39.56 640 | 39.63 641 | 39.56 642 | 39.56 643 | 39.56 644 | 39.56 645 | 39.56 646 | 39.56 647 | 39.63 648 | 39.63 649 | 39.63 650 | 39.63 651 | 39.63 652 | 39.63 653 | 39.63 654 | 39.56 655 | 39.63 656 | 39.63 657 | 39.63 658 | 39.63 659 | 39.63 660 | 39.63 661 | 39.63 662 | 39.63 663 | 39.63 664 | 39.63 665 | 39.63 666 | 39.63 667 | 39.63 668 | 39.63 669 | 39.63 670 | 39.63 671 | -------------------------------------------------------------------------------- /controller-attiny1634/controller-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Thu 16 May 2013 08:29:23 AM CEST 2 | #encoding utf-8 3 | # 4 | # ATTINY1634-S 5 | # 6 | DEF ATTINY1634-S IC 0 40 Y Y 1 F N 7 | F0 "IC" -1100 850 40 H V C CNN 8 | F1 "ATTINY1634-S" 950 -800 40 H V C CNN 9 | F2 "SO20" 0 0 35 H V C CIN 10 | F3 "~" 0 0 60 H V C CNN 11 | DRAW 12 | S 1150 -750 -1150 800 0 1 10 f 13 | X (PCINT8/TXD0/ADC5)PB0 1 1300 -250 150 L 40 40 1 1 B 14 | X (PCINT7/RXD0/ADC4)PA7 2 1300 -100 150 L 40 40 1 1 B 15 | X (PCINT6/OC1B/ADC3)PA6 3 1300 0 150 L 40 40 1 1 B 16 | X (PCINT5/OC0B/ADC2)PA5 4 1300 100 150 L 40 40 1 1 B 17 | X (PCINT4/T0/ADC1)PA4 5 1300 200 150 L 40 40 1 1 B 18 | X (PCINT3/T1/SNS/ADC0)PA3 6 1300 300 150 L 40 40 1 1 B 19 | X (PCINT2/AIN1)PA2 7 1300 400 150 L 40 40 1 1 B 20 | X (PCINT1/AIN0)PA1 8 1300 500 150 L 40 40 1 1 B 21 | X (PCINT0/AREF)PA0 9 1300 600 150 L 40 40 1 1 B 22 | X GND 10 0 -900 150 U 40 40 1 1 w 23 | X (PCINT9/DI/SDA/RXD1/ADC6)PB1 20 1300 -350 150 L 40 40 1 1 B 24 | X VCC 11 0 950 150 D 40 40 1 1 W 25 | X PC5(XTAL1/CLKI/PCINT17) 12 -1300 100 150 R 40 40 1 1 B 26 | X PC4(XTAL2/PCINT16) 13 -1300 200 150 R 40 40 1 1 B 27 | X PC3(~RESET~/dW/PCINT15) 14 -1300 300 150 R 40 40 1 1 B 28 | X PC2(ADC11/CLKO/INT0/PCINT14) 15 -1300 400 150 R 40 40 1 1 B 29 | X PC1(ADC10/ICP1/SCL/USCK/XCK1/PCINT13) 16 -1300 500 150 R 40 40 1 1 B 30 | X PC0(ADC9/OC0A/XCK0/PCINT12) 17 -1300 600 150 R 40 40 1 1 B 31 | X (PCINT11/OC1A/ADC8)PB3 18 1300 -550 150 L 40 40 1 1 B 32 | X (PCINT10/DO/TXD1/ADC7)PB2 19 1300 -450 150 L 40 40 1 1 B 33 | ENDDRAW 34 | ENDDEF 35 | # 36 | # AVR-ISP-6 37 | # 38 | DEF AVR-ISP-6 CON 0 40 Y Y 1 F N 39 | F0 "CON" -80 240 50 H V C CNN 40 | F1 "AVR-ISP-6" -240 -230 50 H V L BNN 41 | F2 "AVR-ISP-6" -520 40 50 V I C CNN 42 | F3 "~" 0 0 60 H V C CNN 43 | DRAW 44 | T 0 -290 5 45 0 0 0 SCK Normal 1 C C 45 | T 0 300 110 45 0 0 0 VCC Normal 1 C C 46 | T 0 310 -105 45 0 1 0 GND Normal 1 C C 47 | T 0 -308 102 45 0 1 0 MISO Normal 1 C C 48 | T 0 332 -2 45 0 1 0 MOSI Normal 1 C C 49 | T 0 -290 -100 45 0 1 0 RST Normal 1 C C 50 | S -180 -140 190 -160 0 1 0 F 51 | S -180 200 180 180 0 1 0 F 52 | S -175 -160 -195 -40 0 1 0 F 53 | S -175 200 -195 40 0 1 0 F 54 | S 180 200 200 -160 0 1 0 F 55 | X ~ 1 -125 100 100 R 40 40 1 1 P 56 | X ~ 2 125 100 100 L 40 40 1 1 P 57 | X ~ 3 -125 0 100 R 40 40 1 1 P 58 | X ~ 4 125 0 100 L 40 40 1 1 P 59 | X ~ 5 -125 -100 100 R 40 40 1 1 P 60 | X ~ 6 125 -100 100 L 40 40 1 1 P 61 | ENDDRAW 62 | ENDDEF 63 | # 64 | # C 65 | # 66 | DEF C C 0 10 N Y 1 F N 67 | F0 "C" 0 100 40 H V L CNN 68 | F1 "C" 6 -85 40 H V L CNN 69 | F2 "~" 38 -150 30 H V C CNN 70 | F3 "~" 0 0 60 H V C CNN 71 | $FPLIST 72 | SM* 73 | C? 74 | C1-1 75 | $ENDFPLIST 76 | DRAW 77 | P 2 0 1 20 -80 -30 80 -30 N 78 | P 2 0 1 20 -80 30 80 30 N 79 | X ~ 1 0 200 170 D 40 40 1 1 P 80 | X ~ 2 0 -200 170 U 40 40 1 1 P 81 | ENDDRAW 82 | ENDDEF 83 | # 84 | # CONN_3 85 | # 86 | DEF CONN_3 K 0 40 Y N 1 F N 87 | F0 "K" -50 0 50 V V C CNN 88 | F1 "CONN_3" 50 0 40 V V C CNN 89 | F2 "~" 0 0 60 H V C CNN 90 | F3 "~" 0 0 60 H V C CNN 91 | DRAW 92 | S -100 150 100 -150 0 1 0 N 93 | X P1 1 -350 100 250 R 60 60 1 1 P I 94 | X PM 2 -350 0 250 R 60 60 1 1 P I 95 | X P3 3 -350 -100 250 R 60 60 1 1 P I 96 | ENDDRAW 97 | ENDDEF 98 | # 99 | # CONN_4 100 | # 101 | DEF CONN_4 P 0 40 Y N 1 F N 102 | F0 "P" -50 0 50 V V C CNN 103 | F1 "CONN_4" 50 0 50 V V C CNN 104 | F2 "~" 0 0 60 H V C CNN 105 | F3 "~" 0 0 60 H V C CNN 106 | DRAW 107 | S -100 200 100 -200 0 1 0 N 108 | X P1 1 -350 150 250 R 50 50 1 1 P I 109 | X P2 2 -350 50 250 R 50 50 1 1 P I 110 | X P3 3 -350 -50 250 R 50 50 1 1 P I 111 | X P4 4 -350 -150 250 R 50 50 1 1 P I 112 | ENDDRAW 113 | ENDDEF 114 | # 115 | # CRYSTAL 116 | # 117 | DEF CRYSTAL X 0 40 N N 1 F N 118 | F0 "X" 0 150 60 H V C CNN 119 | F1 "CRYSTAL" 0 -150 60 H V C CNN 120 | F2 "~" 0 0 60 H V C CNN 121 | F3 "~" 0 0 60 H V C CNN 122 | DRAW 123 | P 2 0 1 16 -100 100 -100 -100 N 124 | P 2 0 1 16 100 100 100 -100 N 125 | P 5 0 1 12 -50 50 50 50 50 -50 -50 -50 -50 50 f 126 | X 1 1 -300 0 200 R 40 40 1 1 P 127 | X 2 2 300 0 200 L 40 40 1 1 P 128 | ENDDRAW 129 | ENDDEF 130 | # 131 | # GND 132 | # 133 | DEF ~GND #PWR 0 0 Y Y 1 F P 134 | F0 "#PWR" 0 0 30 H I C CNN 135 | F1 "GND" 0 -70 30 H I C CNN 136 | F2 "~" 0 0 60 H V C CNN 137 | F3 "~" 0 0 60 H V C CNN 138 | DRAW 139 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 140 | X GND 1 0 0 0 U 30 30 1 1 W N 141 | ENDDRAW 142 | ENDDEF 143 | # 144 | # JUMPER 145 | # 146 | DEF JUMPER JP 0 30 Y N 1 F N 147 | F0 "JP" 0 150 60 H V C CNN 148 | F1 "JUMPER" 0 -80 40 H V C CNN 149 | F2 "~" 0 0 60 H V C CNN 150 | F3 "~" 0 0 60 H V C CNN 151 | DRAW 152 | A 0 -26 125 1426 373 0 1 0 N -98 50 99 50 153 | C -100 0 35 0 1 0 N 154 | C 100 0 35 0 1 0 N 155 | X 1 1 -300 0 165 R 60 60 0 1 P 156 | X 2 2 300 0 165 L 60 60 0 1 P 157 | ENDDRAW 158 | ENDDEF 159 | # 160 | # P82B96 161 | # 162 | DEF P82B96 U 0 40 Y Y 1 F N 163 | F0 "U" 150 500 60 H V C CNN 164 | F1 "P82B96" 0 -500 60 H V C CNN 165 | F2 "~" 0 0 60 H V C CNN 166 | F3 "~" 0 0 60 H V C CNN 167 | $FPLIST 168 | SO8E 169 | SSOP8 170 | $ENDFPLIST 171 | DRAW 172 | S -550 450 550 -450 0 1 0 N 173 | P 3 0 1 0 -250 -150 -300 -150 -300 -150 N 174 | P 3 0 1 0 -200 150 -300 150 -300 150 N 175 | P 3 0 1 0 0 -300 100 -300 100 -300 N 176 | P 3 0 1 0 0 -150 100 -150 100 -150 N 177 | P 3 0 1 0 0 300 100 300 100 300 N 178 | P 3 0 1 0 100 150 0 150 0 150 N 179 | P 4 0 1 0 -250 150 -250 300 -200 300 -200 300 N 180 | P 5 0 1 0 -200 -150 -250 -150 -250 -300 -200 -300 -200 -300 N 181 | P 5 0 1 0 -200 -50 -200 -250 0 -150 -200 -50 -200 -50 N 182 | P 5 0 1 0 -200 400 -200 200 0 300 -200 400 -200 400 N 183 | P 5 0 1 0 0 -200 -200 -300 0 -400 0 -200 0 -200 N 184 | P 5 0 1 0 0 250 -200 150 0 50 0 250 0 250 N 185 | X SDA 1 -750 150 200 R 50 50 1 1 B 186 | X RXD-SDA 2 750 150 200 L 50 50 1 1 I 187 | X TXD-SDA 3 750 300 200 L 50 50 1 1 O 188 | X GND 4 -750 -350 200 R 50 50 1 1 W 189 | X TXD-SCL 5 750 -150 200 L 50 50 1 1 O 190 | X RXD-SCL 6 750 -300 200 L 50 50 1 1 I 191 | X SCL 7 -750 -150 200 R 50 50 1 1 B 192 | X VCC 8 -750 350 200 R 50 50 1 1 W 193 | ENDDRAW 194 | ENDDEF 195 | # 196 | # R 197 | # 198 | DEF R R 0 0 N Y 1 F N 199 | F0 "R" 80 0 40 V V C CNN 200 | F1 "R" 7 1 40 V V C CNN 201 | F2 "~" -70 0 30 V V C CNN 202 | F3 "~" 0 0 30 H V C CNN 203 | $FPLIST 204 | R? 205 | SM0603 206 | SM0805 207 | R?-* 208 | SM1206 209 | $ENDFPLIST 210 | DRAW 211 | S -40 150 40 -150 0 1 12 N 212 | X ~ 1 0 250 100 D 60 60 1 1 P 213 | X ~ 2 0 -250 100 U 60 60 1 1 P 214 | ENDDRAW 215 | ENDDEF 216 | # 217 | # SP3481CN 218 | # 219 | DEF SP3481CN IC 0 40 Y Y 1 F N 220 | F0 "IC" -200 250 40 H V C CNN 221 | F1 "SP3481CN" 200 -250 40 H V C CNN 222 | F2 "SO8" 0 0 35 H V C CIN 223 | F3 "~" 0 0 60 H V C CNN 224 | ALIAS SP3481EN SP3485CN SP3485EN 225 | $FPLIST 226 | SO8* 227 | $ENDFPLIST 228 | DRAW 229 | S -250 200 250 -200 0 1 10 f 230 | X RO 1 -400 150 150 R 40 40 1 1 O 231 | X ~RE~ 2 -400 50 150 R 40 40 1 1 I 232 | X DE 3 -400 -50 150 R 40 40 1 1 I 233 | X DI 4 -400 -150 150 R 40 40 1 1 I 234 | X GND 5 0 -350 150 U 40 40 1 1 W 235 | X A 6 400 100 150 L 40 40 1 1 B 236 | X B 7 400 -100 150 L 40 40 1 1 B 237 | X VCC 8 0 350 150 D 40 40 1 1 W 238 | ENDDRAW 239 | ENDDEF 240 | # 241 | # SW_PUSH 242 | # 243 | DEF SW_PUSH SW 0 40 N N 1 F N 244 | F0 "SW" 150 110 50 H V C CNN 245 | F1 "SW_PUSH" 0 -80 50 H V C CNN 246 | F2 "~" 0 0 60 H V C CNN 247 | F3 "~" 0 0 60 H V C CNN 248 | DRAW 249 | S -170 50 170 60 0 1 0 N 250 | P 4 0 1 0 -40 60 -30 90 30 90 40 60 N 251 | X 1 1 -300 0 200 R 60 60 0 1 P I 252 | X 2 2 300 0 200 L 60 60 0 1 P I 253 | ENDDRAW 254 | ENDDEF 255 | # 256 | # VCC 257 | # 258 | DEF VCC #PWR 0 0 Y Y 1 F P 259 | F0 "#PWR" 0 100 30 H I C CNN 260 | F1 "VCC" 0 100 30 H V C CNN 261 | F2 "~" 0 0 60 H V C CNN 262 | F3 "~" 0 0 60 H V C CNN 263 | DRAW 264 | X VCC 1 0 0 0 U 20 20 0 0 W N 265 | C 0 50 20 0 1 0 N 266 | P 3 0 1 0 0 0 0 30 0 30 N 267 | ENDDRAW 268 | ENDDEF 269 | # 270 | #End Library 271 | -------------------------------------------------------------------------------- /controller-atmega8/controller-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Tue 23 Jul 2013 12:57:56 PM EEST 2 | #encoding utf-8 3 | # 4 | # ATMEGA168-A 5 | # 6 | DEF ATMEGA168-A IC 0 40 Y Y 1 F N 7 | F0 "IC" -750 1250 40 H V L BNN 8 | F1 "ATMEGA168-A" 450 -1400 40 H V L BNN 9 | F2 "TQFP32" 0 0 30 H V C CIN 10 | F3 "" 0 0 60 H V C CNN 11 | ALIAS ATMEGA48-A ATMEGA88-A 12 | DRAW 13 | S -750 1200 850 -1300 0 1 10 f 14 | X (PCINT19/OC2B/INT1)PD3 1 1000 -800 150 L 40 40 1 1 B 15 | X (PCINT20/XCK/T0)PD4 2 1000 -900 150 L 40 40 1 1 B 16 | X GND 3 -900 -1200 150 R 40 40 1 1 W 17 | X VCC 4 -900 1100 150 R 40 40 1 1 W 18 | X GND 5 -900 -1100 150 R 40 40 1 1 W 19 | X VCC 6 -900 1000 150 R 40 40 1 1 W 20 | X (PCINT6/XTAL1/TOSC1)PB6 7 1000 500 150 L 40 40 1 1 B 21 | X (PCINT7/XTAL2/TOSC2)PB7 8 1000 400 150 L 40 40 1 1 B 22 | X (PCINT21/OC0B/T1)PD5 9 1000 -1000 150 L 40 40 1 1 B 23 | X (PCINT22/OC0A/AIN0)PD6 10 1000 -1100 150 L 40 40 1 1 B 24 | X AREF 20 -900 500 150 R 40 40 1 1 B 25 | X (PCINT16/RXD)PD0 30 1000 -500 150 L 40 40 1 1 B 26 | X (PCINT23/AIN1)PD7 11 1000 -1200 150 L 40 40 1 1 B 27 | X GND 21 -900 -1000 150 R 40 40 1 1 W 28 | X (PCINT17/TXD)PD1 31 1000 -600 150 L 40 40 1 1 B 29 | X (PCINT0/CLKO/ICP1)PB0 12 1000 1100 150 L 40 40 1 1 B 30 | X ADC7 22 -900 -350 150 R 40 40 1 1 I 31 | X (PCINT18/INT0)PD2 32 1000 -700 150 L 40 40 1 1 B 32 | X (PCINT1/OC1A)PB1 13 1000 1000 150 L 40 40 1 1 B 33 | X (PCINT8/ADC0)PC0 23 1000 250 150 L 40 40 1 1 B 34 | X (PCINT2/OC1B/~SS~)PB2 14 1000 900 150 L 40 40 1 1 B 35 | X (PCINT9/ADC1)PC1 24 1000 150 150 L 40 40 1 1 B 36 | X (PCINT3/OC2/MOSI)PB3 15 1000 800 150 L 40 40 1 1 B 37 | X (PCINT10/ADC2)PC2 25 1000 50 150 L 40 40 1 1 B 38 | X (PCINT4/MISO)PB4 16 1000 700 150 L 40 40 1 1 B 39 | X (PCINT11/ADC3)PC3 26 1000 -50 150 L 40 40 1 1 B 40 | X (PCINT5/SCK)PB5 17 1000 600 150 L 40 40 1 1 B 41 | X (PCINT12/SDA/ADC4)PC4 27 1000 -150 150 L 40 40 1 1 B 42 | X AVCC 18 -900 800 150 R 40 40 1 1 W 43 | X (PCINT14/SCL/ADC5)PC5 28 1000 -250 150 L 40 40 1 1 B 44 | X ADC6 19 -900 -250 150 R 40 40 1 1 I 45 | X (PCINT14/~RESET~)PC6 29 1000 -350 150 L 40 40 1 1 B 46 | ENDDRAW 47 | ENDDEF 48 | # 49 | # AVR-ISP-6 50 | # 51 | DEF AVR-ISP-6 CON 0 40 Y Y 1 F N 52 | F0 "CON" -80 240 50 H V C CNN 53 | F1 "AVR-ISP-6" -240 -230 50 H V L BNN 54 | F2 "AVR-ISP-6" -520 40 50 V I C CNN 55 | F3 "" 0 0 60 H V C CNN 56 | DRAW 57 | T 0 -290 5 45 0 0 0 SCK Normal 1 C C 58 | T 0 300 110 45 0 0 0 VCC Normal 1 C C 59 | T 0 310 -105 45 0 1 0 GND Normal 1 C C 60 | T 0 -308 102 45 0 1 0 MISO Normal 1 C C 61 | T 0 332 -2 45 0 1 0 MOSI Normal 1 C C 62 | T 0 -290 -100 45 0 1 0 RST Normal 1 C C 63 | S -180 -140 190 -160 0 1 0 F 64 | S -180 200 180 180 0 1 0 F 65 | S -175 -160 -195 -40 0 1 0 F 66 | S -175 200 -195 40 0 1 0 F 67 | S 180 200 200 -160 0 1 0 F 68 | X ~ 1 -125 100 100 R 40 40 1 1 P 69 | X ~ 2 125 100 100 L 40 40 1 1 P 70 | X ~ 3 -125 0 100 R 40 40 1 1 P 71 | X ~ 4 125 0 100 L 40 40 1 1 P 72 | X ~ 5 -125 -100 100 R 40 40 1 1 P 73 | X ~ 6 125 -100 100 L 40 40 1 1 P 74 | ENDDRAW 75 | ENDDEF 76 | # 77 | # C 78 | # 79 | DEF C C 0 10 N Y 1 F N 80 | F0 "C" 0 100 40 H V L CNN 81 | F1 "C" 6 -85 40 H V L CNN 82 | F2 "" 38 -150 30 H V C CNN 83 | F3 "" 0 0 60 H V C CNN 84 | $FPLIST 85 | SM* 86 | C? 87 | C1-1 88 | $ENDFPLIST 89 | DRAW 90 | P 2 0 1 20 -80 -30 80 -30 N 91 | P 2 0 1 20 -80 30 80 30 N 92 | X ~ 1 0 200 170 D 40 40 1 1 P 93 | X ~ 2 0 -200 170 U 40 40 1 1 P 94 | ENDDRAW 95 | ENDDEF 96 | # 97 | # CONN_2 98 | # 99 | DEF CONN_2 P 0 40 Y N 1 F N 100 | F0 "P" -50 0 40 V V C CNN 101 | F1 "CONN_2" 50 0 40 V V C CNN 102 | F2 "" 0 0 60 H V C CNN 103 | F3 "" 0 0 60 H V C CNN 104 | DRAW 105 | S -100 150 100 -150 0 1 0 N 106 | X P1 1 -350 100 250 R 60 60 1 1 P I 107 | X PM 2 -350 -100 250 R 60 60 1 1 P I 108 | ENDDRAW 109 | ENDDEF 110 | # 111 | # CONN_3 112 | # 113 | DEF CONN_3 K 0 40 Y N 1 F N 114 | F0 "K" -50 0 50 V V C CNN 115 | F1 "CONN_3" 50 0 40 V V C CNN 116 | F2 "" 0 0 60 H V C CNN 117 | F3 "" 0 0 60 H V C CNN 118 | DRAW 119 | S -100 150 100 -150 0 1 0 N 120 | X P1 1 -350 100 250 R 60 60 1 1 P I 121 | X PM 2 -350 0 250 R 60 60 1 1 P I 122 | X P3 3 -350 -100 250 R 60 60 1 1 P I 123 | ENDDRAW 124 | ENDDEF 125 | # 126 | # CONN_4 127 | # 128 | DEF CONN_4 P 0 40 Y N 1 F N 129 | F0 "P" -50 0 50 V V C CNN 130 | F1 "CONN_4" 50 0 50 V V C CNN 131 | F2 "" 0 0 60 H V C CNN 132 | F3 "" 0 0 60 H V C CNN 133 | DRAW 134 | S -100 200 100 -200 0 1 0 N 135 | X P1 1 -350 150 250 R 50 50 1 1 P I 136 | X P2 2 -350 50 250 R 50 50 1 1 P I 137 | X P3 3 -350 -50 250 R 50 50 1 1 P I 138 | X P4 4 -350 -150 250 R 50 50 1 1 P I 139 | ENDDRAW 140 | ENDDEF 141 | # 142 | # CRYSTAL 143 | # 144 | DEF CRYSTAL X 0 40 N N 1 F N 145 | F0 "X" 0 150 60 H V C CNN 146 | F1 "CRYSTAL" 0 -150 60 H V C CNN 147 | F2 "" 0 0 60 H V C CNN 148 | F3 "" 0 0 60 H V C CNN 149 | DRAW 150 | P 2 0 1 16 -100 100 -100 -100 N 151 | P 2 0 1 16 100 100 100 -100 N 152 | P 5 0 1 12 -50 50 50 50 50 -50 -50 -50 -50 50 f 153 | X 1 1 -300 0 200 R 40 40 1 1 P 154 | X 2 2 300 0 200 L 40 40 1 1 P 155 | ENDDRAW 156 | ENDDEF 157 | # 158 | # GND 159 | # 160 | DEF ~GND #PWR 0 0 Y Y 1 F P 161 | F0 "#PWR" 0 0 30 H I C CNN 162 | F1 "GND" 0 -70 30 H I C CNN 163 | F2 "" 0 0 60 H V C CNN 164 | F3 "" 0 0 60 H V C CNN 165 | DRAW 166 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 167 | X GND 1 0 0 0 U 30 30 1 1 W N 168 | ENDDRAW 169 | ENDDEF 170 | # 171 | # JUMPER 172 | # 173 | DEF JUMPER JP 0 30 Y N 1 F N 174 | F0 "JP" 0 150 60 H V C CNN 175 | F1 "JUMPER" 0 -80 40 H V C CNN 176 | F2 "" 0 0 60 H V C CNN 177 | F3 "" 0 0 60 H V C CNN 178 | DRAW 179 | A 0 -26 125 1426 373 0 1 0 N -98 50 99 50 180 | C -100 0 35 0 1 0 N 181 | C 100 0 35 0 1 0 N 182 | X 1 1 -300 0 165 R 60 60 0 1 P 183 | X 2 2 300 0 165 L 60 60 0 1 P 184 | ENDDRAW 185 | ENDDEF 186 | # 187 | # P82B96 188 | # 189 | DEF P82B96 U 0 40 Y Y 1 F N 190 | F0 "U" 150 500 60 H V C CNN 191 | F1 "P82B96" 0 -500 60 H V C CNN 192 | F2 "" 0 0 60 H V C CNN 193 | F3 "" 0 0 60 H V C CNN 194 | $FPLIST 195 | SO8E 196 | SSOP8 197 | $ENDFPLIST 198 | DRAW 199 | S -550 450 550 -450 0 1 0 N 200 | P 3 0 1 0 -250 -150 -300 -150 -300 -150 N 201 | P 3 0 1 0 -200 150 -300 150 -300 150 N 202 | P 3 0 1 0 0 -300 100 -300 100 -300 N 203 | P 3 0 1 0 0 -150 100 -150 100 -150 N 204 | P 3 0 1 0 0 300 100 300 100 300 N 205 | P 3 0 1 0 100 150 0 150 0 150 N 206 | P 4 0 1 0 -250 150 -250 300 -200 300 -200 300 N 207 | P 5 0 1 0 -200 -150 -250 -150 -250 -300 -200 -300 -200 -300 N 208 | P 5 0 1 0 -200 -50 -200 -250 0 -150 -200 -50 -200 -50 N 209 | P 5 0 1 0 -200 400 -200 200 0 300 -200 400 -200 400 N 210 | P 5 0 1 0 0 -200 -200 -300 0 -400 0 -200 0 -200 N 211 | P 5 0 1 0 0 250 -200 150 0 50 0 250 0 250 N 212 | X SDA 1 -750 150 200 R 50 50 1 1 B 213 | X RXD-SDA 2 750 150 200 L 50 50 1 1 I 214 | X TXD-SDA 3 750 300 200 L 50 50 1 1 O 215 | X GND 4 -750 -350 200 R 50 50 1 1 W 216 | X TXD-SCL 5 750 -150 200 L 50 50 1 1 O 217 | X RXD-SCL 6 750 -300 200 L 50 50 1 1 I 218 | X SCL 7 -750 -150 200 R 50 50 1 1 B 219 | X VCC 8 -750 350 200 R 50 50 1 1 W 220 | ENDDRAW 221 | ENDDEF 222 | # 223 | # R 224 | # 225 | DEF R R 0 0 N Y 1 F N 226 | F0 "R" 80 0 40 V V C CNN 227 | F1 "R" 7 1 40 V V C CNN 228 | F2 "" -70 0 30 V V C CNN 229 | F3 "" 0 0 30 H V C CNN 230 | $FPLIST 231 | R? 232 | SM0603 233 | SM0805 234 | R?-* 235 | SM1206 236 | $ENDFPLIST 237 | DRAW 238 | S -40 150 40 -150 0 1 12 N 239 | X ~ 1 0 250 100 D 60 60 1 1 P 240 | X ~ 2 0 -250 100 U 60 60 1 1 P 241 | ENDDRAW 242 | ENDDEF 243 | # 244 | # SP3481CN 245 | # 246 | DEF SP3481CN IC 0 40 Y Y 1 F N 247 | F0 "IC" -200 250 40 H V C CNN 248 | F1 "SP3481CN" 200 -250 40 H V C CNN 249 | F2 "SO8" 0 0 35 H V C CIN 250 | F3 "" 0 0 60 H V C CNN 251 | ALIAS SP3481EN SP3485CN SP3485EN 252 | $FPLIST 253 | SO8* 254 | $ENDFPLIST 255 | DRAW 256 | S -250 200 250 -200 0 1 10 f 257 | X RO 1 -400 150 150 R 40 40 1 1 O 258 | X ~RE~ 2 -400 50 150 R 40 40 1 1 I 259 | X DE 3 -400 -50 150 R 40 40 1 1 I 260 | X DI 4 -400 -150 150 R 40 40 1 1 I 261 | X GND 5 0 -350 150 U 40 40 1 1 W 262 | X A 6 400 100 150 L 40 40 1 1 B 263 | X B 7 400 -100 150 L 40 40 1 1 B 264 | X VCC 7 0 350 150 D 40 40 1 1 W 265 | ENDDRAW 266 | ENDDEF 267 | # 268 | # SW_PUSH 269 | # 270 | DEF SW_PUSH SW 0 40 N N 1 F N 271 | F0 "SW" 150 110 50 H V C CNN 272 | F1 "SW_PUSH" 0 -80 50 H V C CNN 273 | F2 "" 0 0 60 H V C CNN 274 | F3 "" 0 0 60 H V C CNN 275 | DRAW 276 | S -170 50 170 60 0 1 0 N 277 | P 4 0 1 0 -40 60 -30 90 30 90 40 60 N 278 | X 1 1 -300 0 200 R 60 60 0 1 P I 279 | X 2 2 300 0 200 L 60 60 0 1 P I 280 | ENDDRAW 281 | ENDDEF 282 | # 283 | # VCC 284 | # 285 | DEF VCC #PWR 0 0 Y Y 1 F P 286 | F0 "#PWR" 0 100 30 H I C CNN 287 | F1 "VCC" 0 100 30 H V C CNN 288 | F2 "" 0 0 60 H V C CNN 289 | F3 "" 0 0 60 H V C CNN 290 | DRAW 291 | X VCC 1 0 0 0 U 20 20 0 0 W N 292 | C 0 50 20 0 1 0 N 293 | P 3 0 1 0 0 0 0 30 0 30 N 294 | ENDDRAW 295 | ENDDEF 296 | # 297 | #End Library 298 | -------------------------------------------------------------------------------- /experiment1/step-response-linear.csv: -------------------------------------------------------------------------------- 1 | 25.69 2 | 25.75 3 | 25.75 4 | 25.75 5 | 25.69 6 | 25.75 7 | 25.69 8 | 25.75 9 | 25.69 10 | 25.69 11 | 25.75 12 | 25.69 13 | 25.75 14 | 25.75 15 | 25.75 16 | 25.75 17 | 25.81 18 | 25.87 19 | 25.94 20 | 26.06 21 | 26.19 22 | 26.31 23 | 26.44 24 | 26.56 25 | 26.75 26 | 26.87 27 | 27.06 28 | 27.25 29 | 27.44 30 | 27.62 31 | 27.81 32 | 28.00 33 | 28.25 34 | 28.44 35 | 28.62 36 | 28.87 37 | 29.12 38 | 29.31 39 | 29.56 40 | 29.75 41 | 30.00 42 | 30.19 43 | 30.37 44 | 30.56 45 | 30.75 46 | 31.00 47 | 31.19 48 | 31.31 49 | 31.56 50 | 31.75 51 | 31.94 52 | 32.13 53 | 32.31 54 | 32.50 55 | 32.69 56 | 32.81 57 | 32.94 58 | 33.19 59 | 33.31 60 | 33.50 61 | 33.63 62 | 33.81 63 | 33.94 64 | 34.13 65 | 34.31 66 | 34.44 67 | 34.56 68 | 34.75 69 | 34.88 70 | 35.06 71 | 35.19 72 | 35.38 73 | 35.50 74 | 35.69 75 | 35.81 76 | 35.94 77 | 36.06 78 | 36.19 79 | 36.31 80 | 36.44 81 | 36.56 82 | 36.63 83 | 36.75 84 | 36.88 85 | 37.00 86 | 37.06 87 | 37.19 88 | 37.25 89 | 37.31 90 | 37.44 91 | 37.50 92 | 37.56 93 | 37.69 94 | 37.75 95 | 37.81 96 | 37.88 97 | 37.94 98 | 38.00 99 | 38.13 100 | 38.19 101 | 38.25 102 | 38.31 103 | 38.38 104 | 38.44 105 | 38.50 106 | 38.56 107 | 38.69 108 | 38.75 109 | 38.88 110 | 38.94 111 | 39.00 112 | 39.06 113 | 39.13 114 | 39.19 115 | 39.25 116 | 39.31 117 | 39.38 118 | 39.44 119 | 39.50 120 | 39.50 121 | 39.56 122 | 39.63 123 | 39.69 124 | 39.69 125 | 39.75 126 | 39.81 127 | 39.81 128 | 39.88 129 | 39.88 130 | 39.88 131 | 39.94 132 | 39.94 133 | 39.94 134 | 39.94 135 | 39.94 136 | 39.94 137 | 39.94 138 | 39.94 139 | 39.94 140 | 40.00 141 | 40.06 142 | 40.13 143 | 40.13 144 | 40.13 145 | 40.19 146 | 40.19 147 | 40.19 148 | 40.19 149 | 40.25 150 | 40.25 151 | 40.25 152 | 40.25 153 | 40.25 154 | 40.31 155 | 40.38 156 | 40.38 157 | 40.44 158 | 40.44 159 | 40.44 160 | 40.50 161 | 40.50 162 | 40.50 163 | 40.50 164 | 40.50 165 | 40.50 166 | 40.50 167 | 40.50 168 | 40.50 169 | 40.50 170 | 40.50 171 | 40.50 172 | 40.50 173 | 40.50 174 | 40.50 175 | 40.50 176 | 40.50 177 | 40.50 178 | 40.50 179 | 40.50 180 | 40.50 181 | 40.56 182 | 40.56 183 | 40.56 184 | 40.56 185 | 40.56 186 | 40.56 187 | 40.56 188 | 40.63 189 | 40.63 190 | 40.63 191 | 40.69 192 | 40.69 193 | 40.69 194 | 40.69 195 | 40.75 196 | 40.69 197 | 40.75 198 | 40.75 199 | 40.75 200 | 40.75 201 | 40.75 202 | 40.69 203 | 40.69 204 | 40.69 205 | 40.69 206 | 40.69 207 | 40.69 208 | 40.69 209 | 40.69 210 | 40.69 211 | 40.69 212 | 40.69 213 | 40.69 214 | 40.69 215 | 40.63 216 | 40.63 217 | 40.63 218 | 40.63 219 | 40.63 220 | 40.63 221 | 40.69 222 | 40.69 223 | 40.69 224 | 40.69 225 | 40.69 226 | 40.75 227 | 40.75 228 | 40.75 229 | 40.81 230 | 40.88 231 | 40.88 232 | 40.88 233 | 40.88 234 | 40.81 235 | 40.81 236 | 40.81 237 | 40.75 238 | 40.75 239 | 40.75 240 | 40.75 241 | 40.75 242 | 40.75 243 | 40.75 244 | 40.69 245 | 40.69 246 | 40.69 247 | 40.56 248 | 40.56 249 | 40.50 250 | 40.44 251 | 40.44 252 | 40.38 253 | 40.38 254 | 40.38 255 | 40.31 256 | 40.31 257 | 40.19 258 | 40.19 259 | 40.13 260 | 40.13 261 | 40.06 262 | 40.06 263 | 40.00 264 | 40.00 265 | 39.94 266 | 39.94 267 | 39.88 268 | 39.94 269 | 39.88 270 | 39.81 271 | 39.88 272 | 39.81 273 | 39.81 274 | 39.81 275 | 39.75 276 | 39.75 277 | 39.75 278 | 39.69 279 | 39.69 280 | 39.75 281 | 39.69 282 | 39.69 283 | 39.69 284 | 39.69 285 | 39.75 286 | 39.81 287 | 39.81 288 | 39.88 289 | 39.88 290 | 39.88 291 | 39.94 292 | 39.94 293 | 40.00 294 | 40.00 295 | 40.00 296 | 40.00 297 | 40.00 298 | 40.00 299 | 39.94 300 | 39.94 301 | 39.94 302 | 39.94 303 | 39.94 304 | 39.94 305 | 39.94 306 | 40.00 307 | 40.00 308 | 40.06 309 | 40.06 310 | 40.13 311 | 40.13 312 | 40.13 313 | 40.19 314 | 40.19 315 | 40.19 316 | 40.19 317 | 40.19 318 | 40.19 319 | 40.19 320 | 40.25 321 | 40.25 322 | 40.31 323 | 40.31 324 | 40.31 325 | 40.31 326 | 40.31 327 | 40.38 328 | 40.38 329 | 40.38 330 | 40.38 331 | 40.44 332 | 40.44 333 | 40.44 334 | 40.44 335 | 40.50 336 | 40.50 337 | 40.50 338 | 40.50 339 | 40.50 340 | 40.50 341 | 40.50 342 | 40.56 343 | 40.50 344 | 40.56 345 | 40.56 346 | 40.63 347 | 40.56 348 | 40.63 349 | 40.69 350 | 40.75 351 | 40.75 352 | 40.81 353 | 40.88 354 | 40.88 355 | 40.94 356 | 40.94 357 | 40.94 358 | 41.00 359 | 41.00 360 | 41.06 361 | 41.06 362 | 41.06 363 | 41.06 364 | 41.06 365 | 41.06 366 | 41.06 367 | 41.06 368 | 41.13 369 | 41.13 370 | 41.13 371 | 41.19 372 | 41.19 373 | 41.25 374 | 41.25 375 | 41.25 376 | 41.31 377 | 41.31 378 | 41.31 379 | 41.31 380 | 41.31 381 | 41.38 382 | 41.38 383 | 41.38 384 | 41.38 385 | 41.44 386 | 41.44 387 | 41.44 388 | 41.44 389 | 41.44 390 | 41.44 391 | 41.44 392 | 41.44 393 | 41.44 394 | 41.50 395 | 41.44 396 | 41.50 397 | 41.50 398 | 41.50 399 | 41.50 400 | 41.50 401 | 41.44 402 | 41.44 403 | 41.44 404 | 41.38 405 | 41.44 406 | 41.44 407 | 41.44 408 | 41.44 409 | 41.44 410 | 41.44 411 | 41.44 412 | 41.38 413 | 41.38 414 | 41.38 415 | 41.31 416 | 41.31 417 | 41.31 418 | 41.25 419 | 41.25 420 | 41.25 421 | 41.25 422 | 41.25 423 | 41.25 424 | 41.25 425 | 41.25 426 | 41.25 427 | 41.25 428 | 41.25 429 | 41.25 430 | 41.25 431 | 41.25 432 | 41.25 433 | 41.25 434 | 41.25 435 | 41.25 436 | 41.19 437 | 41.19 438 | 41.19 439 | 41.19 440 | 41.13 441 | 41.13 442 | 41.13 443 | 41.13 444 | 41.06 445 | 41.06 446 | 41.00 447 | 41.00 448 | 41.00 449 | 40.94 450 | 40.94 451 | 40.94 452 | 40.94 453 | 40.94 454 | 40.94 455 | 40.88 456 | 40.88 457 | 40.88 458 | 40.88 459 | 40.88 460 | 40.88 461 | 40.88 462 | 40.88 463 | 40.88 464 | 40.88 465 | 40.88 466 | 40.88 467 | 40.81 468 | 40.81 469 | 40.81 470 | 40.81 471 | 40.81 472 | 40.81 473 | 40.81 474 | 40.81 475 | 40.88 476 | 40.88 477 | 40.88 478 | 40.88 479 | 40.88 480 | 40.88 481 | 40.88 482 | 40.88 483 | 40.81 484 | 40.81 485 | 40.88 486 | 40.88 487 | 40.88 488 | 40.88 489 | 40.88 490 | 40.88 491 | 40.88 492 | 40.88 493 | 40.88 494 | 40.88 495 | 40.88 496 | 40.88 497 | 40.88 498 | 40.88 499 | 40.81 500 | 40.81 501 | 40.81 502 | 40.81 503 | 40.81 504 | 40.81 505 | 40.81 506 | 40.81 507 | 40.81 508 | 40.81 509 | 40.88 510 | 40.88 511 | 40.88 512 | 40.81 513 | 40.88 514 | 40.88 515 | 40.88 516 | 40.88 517 | 40.88 518 | 40.88 519 | 40.88 520 | 40.88 521 | 40.88 522 | 40.88 523 | 40.88 524 | 40.88 525 | 40.88 526 | 40.88 527 | 40.88 528 | 40.88 529 | 40.88 530 | 40.88 531 | 40.88 532 | 40.81 533 | 40.81 534 | 40.81 535 | 40.81 536 | 40.81 537 | 40.81 538 | 40.81 539 | 40.81 540 | 40.81 541 | 40.81 542 | 40.81 543 | 40.81 544 | 40.81 545 | 40.81 546 | 40.88 547 | 40.81 548 | 40.81 549 | 40.81 550 | 40.88 551 | 40.81 552 | 40.81 553 | 40.81 554 | 40.75 555 | 40.75 556 | 40.75 557 | 40.75 558 | 40.75 559 | 40.75 560 | 40.69 561 | 40.69 562 | 40.63 563 | 40.69 564 | 40.69 565 | 40.69 566 | 40.63 567 | 40.63 568 | 40.69 569 | 40.69 570 | 40.69 571 | 40.69 572 | 40.75 573 | 40.69 574 | 40.69 575 | 40.69 576 | 40.69 577 | 40.69 578 | 40.69 579 | 40.69 580 | 40.69 581 | 40.69 582 | 40.69 583 | 40.69 584 | 40.69 585 | 40.69 586 | 40.69 587 | 40.69 588 | 40.69 589 | 40.69 590 | 40.69 591 | 40.69 592 | 40.69 593 | 40.69 594 | 40.69 595 | 40.75 596 | 40.69 597 | 40.69 598 | 40.75 599 | 40.75 600 | 40.75 601 | 40.75 602 | 40.75 603 | 40.81 604 | 40.81 605 | 40.75 606 | 40.75 607 | 40.81 608 | 40.81 609 | 40.75 610 | 40.75 611 | 40.81 612 | 40.81 613 | 40.81 614 | 40.81 615 | 40.81 616 | 40.81 617 | 40.81 618 | 40.81 619 | 40.81 620 | 40.88 621 | 40.88 622 | 40.81 623 | 40.88 624 | 40.88 625 | 40.88 626 | 40.88 627 | 40.88 628 | 40.81 629 | 40.81 630 | 40.81 631 | 40.81 632 | 40.81 633 | 40.81 634 | 40.81 635 | 40.88 636 | 40.81 637 | 40.88 638 | 40.88 639 | 40.88 640 | 40.88 641 | 40.88 642 | 40.88 643 | 40.88 644 | 40.88 645 | 40.88 646 | 40.88 647 | 40.88 648 | 40.81 649 | 40.81 650 | 40.81 651 | 40.81 652 | 40.81 653 | 40.81 654 | 40.81 655 | 40.81 656 | 40.81 657 | 40.81 658 | 40.88 659 | 40.88 660 | 40.81 661 | 40.81 662 | 40.81 663 | 40.81 664 | 40.81 665 | 40.81 666 | 40.81 667 | 40.81 668 | 40.81 669 | 40.88 670 | 40.88 671 | 40.88 672 | 40.88 673 | 40.88 674 | 40.81 675 | 40.81 676 | 40.81 677 | 40.81 678 | 40.81 679 | 40.75 680 | 40.75 681 | 40.75 682 | 40.75 683 | 40.75 684 | 40.75 685 | 40.75 686 | 40.69 687 | 40.69 688 | 40.69 689 | 40.69 690 | 40.69 691 | 40.63 692 | 40.63 693 | 40.69 694 | 40.63 695 | 40.63 696 | 40.63 697 | 40.63 698 | 40.63 699 | 40.63 700 | 40.63 701 | 40.63 702 | 40.63 703 | 40.63 704 | 40.63 705 | 40.63 706 | 40.56 707 | 40.56 708 | 40.56 709 | 40.56 710 | 40.56 711 | 40.50 712 | 40.50 713 | 40.50 714 | 40.50 715 | 40.50 716 | 40.50 717 | 40.50 718 | 40.50 719 | 40.56 720 | 40.56 721 | 40.56 722 | 40.56 723 | 40.56 724 | 40.56 725 | 40.56 726 | 40.56 727 | 40.56 728 | 40.50 729 | 40.50 730 | 40.50 731 | 40.50 732 | 40.50 733 | 40.50 734 | 40.50 735 | 40.44 736 | 40.44 737 | 40.44 738 | 40.44 739 | 40.44 740 | 40.44 741 | 40.44 742 | 40.38 743 | 40.38 744 | 40.38 745 | 40.38 746 | 40.38 747 | 40.38 748 | 40.38 749 | 40.38 750 | 40.38 751 | 40.38 752 | 40.38 753 | 40.38 754 | 40.44 755 | 40.44 756 | 40.44 757 | 40.44 758 | 40.44 759 | 40.44 760 | 40.50 761 | 40.50 762 | 40.50 763 | 40.56 764 | 40.56 765 | 40.56 766 | 40.56 767 | 40.56 768 | 40.56 769 | 40.63 770 | 40.63 771 | 40.63 772 | 40.69 773 | 40.69 774 | 40.69 775 | 40.75 776 | -------------------------------------------------------------------------------- /gerbers/ssr-NPTH-drl_map.pho: -------------------------------------------------------------------------------- 1 | G04 (created by PCBNEW (2013-mar-13)-testing) date Tue 07 May 2013 10:03:13 PM CEST* 2 | %MOIN*% 3 | G04 Gerber Fmt 3.4, Leading zero omitted, Abs format* 4 | %FSLAX34Y34*% 5 | G01* 6 | G70* 7 | G90* 8 | G04 APERTURE LIST* 9 | %ADD10C,0.005*% 10 | %ADD11C,0.0059*% 11 | %ADD12C,0.00787402*% 12 | %ADD13C,0.011811*% 13 | G04 APERTURE END LIST* 14 | G54D10* 15 | G54D11* 16 | X39250Y-25750D02* 17 | X39250Y-26250D01* 18 | X61750Y-25750D02* 19 | X39250Y-25750D01* 20 | X39250Y-55750D02* 21 | X39250Y-52250D01* 22 | X78250Y-55750D02* 23 | X39250Y-55750D01* 24 | X78250Y-25750D02* 25 | X78250Y-55750D01* 26 | X61750Y-25750D02* 27 | X78250Y-25750D01* 28 | X39250Y-26250D02* 29 | X39250Y-52250D01* 30 | G54D12* 31 | X41159Y-28159D02* 32 | X42340Y-29340D01* 33 | X42340Y-28159D02* 34 | X41159Y-29340D01* 35 | X41159Y-52659D02* 36 | X42340Y-53840D01* 37 | X42340Y-52659D02* 38 | X41159Y-53840D01* 39 | X74659Y-52659D02* 40 | X75840Y-53840D01* 41 | X75840Y-52659D02* 42 | X74659Y-53840D01* 43 | X74909Y-27909D02* 44 | X76090Y-29090D01* 45 | X76090Y-27909D02* 46 | X74909Y-29090D01* 47 | G54D13* 48 | X40289Y-57613D02* 49 | X40289Y-56431D01* 50 | X40570Y-56431D01* 51 | X40739Y-56488D01* 52 | X40851Y-56600D01* 53 | X40907Y-56713D01* 54 | X40964Y-56938D01* 55 | X40964Y-57106D01* 56 | X40907Y-57331D01* 57 | X40851Y-57444D01* 58 | X40739Y-57556D01* 59 | X40570Y-57613D01* 60 | X40289Y-57613D01* 61 | X41470Y-57613D02* 62 | X41470Y-56825D01* 63 | X41470Y-57050D02* 64 | X41526Y-56938D01* 65 | X41582Y-56881D01* 66 | X41695Y-56825D01* 67 | X41807Y-56825D01* 68 | X42201Y-57613D02* 69 | X42201Y-56825D01* 70 | X42201Y-56431D02* 71 | X42145Y-56488D01* 72 | X42201Y-56544D01* 73 | X42257Y-56488D01* 74 | X42201Y-56431D01* 75 | X42201Y-56544D01* 76 | X42932Y-57613D02* 77 | X42820Y-57556D01* 78 | X42763Y-57444D01* 79 | X42763Y-56431D01* 80 | X43551Y-57613D02* 81 | X43438Y-57556D01* 82 | X43382Y-57444D01* 83 | X43382Y-56431D01* 84 | X44901Y-57613D02* 85 | X44901Y-56431D01* 86 | X45294Y-57275D01* 87 | X45688Y-56431D01* 88 | X45688Y-57613D01* 89 | X46757Y-57613D02* 90 | X46757Y-56994D01* 91 | X46700Y-56881D01* 92 | X46588Y-56825D01* 93 | X46363Y-56825D01* 94 | X46250Y-56881D01* 95 | X46757Y-57556D02* 96 | X46644Y-57613D01* 97 | X46363Y-57613D01* 98 | X46250Y-57556D01* 99 | X46194Y-57444D01* 100 | X46194Y-57331D01* 101 | X46250Y-57219D01* 102 | X46363Y-57163D01* 103 | X46644Y-57163D01* 104 | X46757Y-57106D01* 105 | X47319Y-56825D02* 106 | X47319Y-58006D01* 107 | X47319Y-56881D02* 108 | X47431Y-56825D01* 109 | X47656Y-56825D01* 110 | X47769Y-56881D01* 111 | X47825Y-56938D01* 112 | X47881Y-57050D01* 113 | X47881Y-57388D01* 114 | X47825Y-57500D01* 115 | X47769Y-57556D01* 116 | X47656Y-57613D01* 117 | X47431Y-57613D01* 118 | X47319Y-57556D01* 119 | X48388Y-57500D02* 120 | X48444Y-57556D01* 121 | X48388Y-57613D01* 122 | X48331Y-57556D01* 123 | X48388Y-57500D01* 124 | X48388Y-57613D01* 125 | X48388Y-56881D02* 126 | X48444Y-56938D01* 127 | X48388Y-56994D01* 128 | X48331Y-56938D01* 129 | X48388Y-56881D01* 130 | X48388Y-56994D01* 131 | X38039Y-58968D02* 132 | X39220Y-60149D01* 133 | X39220Y-58968D02* 134 | X38039Y-60149D01* 135 | X40176Y-58912D02* 136 | X40907Y-58912D01* 137 | X40514Y-59362D01* 138 | X40682Y-59362D01* 139 | X40795Y-59418D01* 140 | X40851Y-59474D01* 141 | X40907Y-59587D01* 142 | X40907Y-59868D01* 143 | X40851Y-59980D01* 144 | X40795Y-60037D01* 145 | X40682Y-60093D01* 146 | X40345Y-60093D01* 147 | X40232Y-60037D01* 148 | X40176Y-59980D01* 149 | X41413Y-59980D02* 150 | X41470Y-60037D01* 151 | X41413Y-60093D01* 152 | X41357Y-60037D01* 153 | X41413Y-59980D01* 154 | X41413Y-60093D01* 155 | X42201Y-58912D02* 156 | X42313Y-58912D01* 157 | X42426Y-58968D01* 158 | X42482Y-59024D01* 159 | X42538Y-59137D01* 160 | X42595Y-59362D01* 161 | X42595Y-59643D01* 162 | X42538Y-59868D01* 163 | X42482Y-59980D01* 164 | X42426Y-60037D01* 165 | X42313Y-60093D01* 166 | X42201Y-60093D01* 167 | X42088Y-60037D01* 168 | X42032Y-59980D01* 169 | X41976Y-59868D01* 170 | X41920Y-59643D01* 171 | X41920Y-59362D01* 172 | X41976Y-59137D01* 173 | X42032Y-59024D01* 174 | X42088Y-58968D01* 175 | X42201Y-58912D01* 176 | X43326Y-58912D02* 177 | X43438Y-58912D01* 178 | X43551Y-58968D01* 179 | X43607Y-59024D01* 180 | X43663Y-59137D01* 181 | X43719Y-59362D01* 182 | X43719Y-59643D01* 183 | X43663Y-59868D01* 184 | X43607Y-59980D01* 185 | X43551Y-60037D01* 186 | X43438Y-60093D01* 187 | X43326Y-60093D01* 188 | X43213Y-60037D01* 189 | X43157Y-59980D01* 190 | X43101Y-59868D01* 191 | X43045Y-59643D01* 192 | X43045Y-59362D01* 193 | X43101Y-59137D01* 194 | X43157Y-59024D01* 195 | X43213Y-58968D01* 196 | X43326Y-58912D01* 197 | X44226Y-60093D02* 198 | X44226Y-59305D01* 199 | X44226Y-59418D02* 200 | X44282Y-59362D01* 201 | X44394Y-59305D01* 202 | X44563Y-59305D01* 203 | X44676Y-59362D01* 204 | X44732Y-59474D01* 205 | X44732Y-60093D01* 206 | X44732Y-59474D02* 207 | X44788Y-59362D01* 208 | X44901Y-59305D01* 209 | X45069Y-59305D01* 210 | X45182Y-59362D01* 211 | X45238Y-59474D01* 212 | X45238Y-60093D01* 213 | X45800Y-60093D02* 214 | X45800Y-59305D01* 215 | X45800Y-59418D02* 216 | X45857Y-59362D01* 217 | X45969Y-59305D01* 218 | X46138Y-59305D01* 219 | X46250Y-59362D01* 220 | X46307Y-59474D01* 221 | X46307Y-60093D01* 222 | X46307Y-59474D02* 223 | X46363Y-59362D01* 224 | X46475Y-59305D01* 225 | X46644Y-59305D01* 226 | X46757Y-59362D01* 227 | X46813Y-59474D01* 228 | X46813Y-60093D01* 229 | X49119Y-58855D02* 230 | X48106Y-60374D01* 231 | X50637Y-58912D02* 232 | X50750Y-58912D01* 233 | X50862Y-58968D01* 234 | X50919Y-59024D01* 235 | X50975Y-59137D01* 236 | X51031Y-59362D01* 237 | X51031Y-59643D01* 238 | X50975Y-59868D01* 239 | X50919Y-59980D01* 240 | X50862Y-60037D01* 241 | X50750Y-60093D01* 242 | X50637Y-60093D01* 243 | X50525Y-60037D01* 244 | X50469Y-59980D01* 245 | X50412Y-59868D01* 246 | X50356Y-59643D01* 247 | X50356Y-59362D01* 248 | X50412Y-59137D01* 249 | X50469Y-59024D01* 250 | X50525Y-58968D01* 251 | X50637Y-58912D01* 252 | X51537Y-59980D02* 253 | X51593Y-60037D01* 254 | X51537Y-60093D01* 255 | X51481Y-60037D01* 256 | X51537Y-59980D01* 257 | X51537Y-60093D01* 258 | X52718Y-60093D02* 259 | X52043Y-60093D01* 260 | X52381Y-60093D02* 261 | X52381Y-58912D01* 262 | X52268Y-59080D01* 263 | X52156Y-59193D01* 264 | X52043Y-59249D01* 265 | X53843Y-60093D02* 266 | X53168Y-60093D01* 267 | X53506Y-60093D02* 268 | X53506Y-58912D01* 269 | X53393Y-59080D01* 270 | X53281Y-59193D01* 271 | X53168Y-59249D01* 272 | X54518Y-59418D02* 273 | X54406Y-59362D01* 274 | X54349Y-59305D01* 275 | X54293Y-59193D01* 276 | X54293Y-59137D01* 277 | X54349Y-59024D01* 278 | X54406Y-58968D01* 279 | X54518Y-58912D01* 280 | X54743Y-58912D01* 281 | X54856Y-58968D01* 282 | X54912Y-59024D01* 283 | X54968Y-59137D01* 284 | X54968Y-59193D01* 285 | X54912Y-59305D01* 286 | X54856Y-59362D01* 287 | X54743Y-59418D01* 288 | X54518Y-59418D01* 289 | X54406Y-59474D01* 290 | X54349Y-59530D01* 291 | X54293Y-59643D01* 292 | X54293Y-59868D01* 293 | X54349Y-59980D01* 294 | X54406Y-60037D01* 295 | X54518Y-60093D01* 296 | X54743Y-60093D01* 297 | X54856Y-60037D01* 298 | X54912Y-59980D01* 299 | X54968Y-59868D01* 300 | X54968Y-59643D01* 301 | X54912Y-59530D01* 302 | X54856Y-59474D01* 303 | X54743Y-59418D01* 304 | X55418Y-58912D02* 305 | X55418Y-59137D01* 306 | X55868Y-58912D02* 307 | X55868Y-59137D01* 308 | X57611Y-60543D02* 309 | X57555Y-60487D01* 310 | X57443Y-60318D01* 311 | X57386Y-60205D01* 312 | X57330Y-60037D01* 313 | X57274Y-59755D01* 314 | X57274Y-59530D01* 315 | X57330Y-59249D01* 316 | X57386Y-59080D01* 317 | X57443Y-58968D01* 318 | X57555Y-58799D01* 319 | X57611Y-58743D01* 320 | X58568Y-59305D02* 321 | X58568Y-60093D01* 322 | X58286Y-58855D02* 323 | X58005Y-59699D01* 324 | X58736Y-59699D01* 325 | X60086Y-60093D02* 326 | X60086Y-58912D01* 327 | X60592Y-60093D02* 328 | X60592Y-59474D01* 329 | X60536Y-59362D01* 330 | X60424Y-59305D01* 331 | X60255Y-59305D01* 332 | X60142Y-59362D01* 333 | X60086Y-59418D01* 334 | X61323Y-60093D02* 335 | X61211Y-60037D01* 336 | X61155Y-59980D01* 337 | X61099Y-59868D01* 338 | X61099Y-59530D01* 339 | X61155Y-59418D01* 340 | X61211Y-59362D01* 341 | X61323Y-59305D01* 342 | X61492Y-59305D01* 343 | X61605Y-59362D01* 344 | X61661Y-59418D01* 345 | X61717Y-59530D01* 346 | X61717Y-59868D01* 347 | X61661Y-59980D01* 348 | X61605Y-60037D01* 349 | X61492Y-60093D01* 350 | X61323Y-60093D01* 351 | X62392Y-60093D02* 352 | X62280Y-60037D01* 353 | X62223Y-59924D01* 354 | X62223Y-58912D01* 355 | X63292Y-60037D02* 356 | X63180Y-60093D01* 357 | X62955Y-60093D01* 358 | X62842Y-60037D01* 359 | X62786Y-59924D01* 360 | X62786Y-59474D01* 361 | X62842Y-59362D01* 362 | X62955Y-59305D01* 363 | X63180Y-59305D01* 364 | X63292Y-59362D01* 365 | X63348Y-59474D01* 366 | X63348Y-59587D01* 367 | X62786Y-59699D01* 368 | X63798Y-60037D02* 369 | X63911Y-60093D01* 370 | X64136Y-60093D01* 371 | X64248Y-60037D01* 372 | X64304Y-59924D01* 373 | X64304Y-59868D01* 374 | X64248Y-59755D01* 375 | X64136Y-59699D01* 376 | X63967Y-59699D01* 377 | X63854Y-59643D01* 378 | X63798Y-59530D01* 379 | X63798Y-59474D01* 380 | X63854Y-59362D01* 381 | X63967Y-59305D01* 382 | X64136Y-59305D01* 383 | X64248Y-59362D01* 384 | X64698Y-60543D02* 385 | X64754Y-60487D01* 386 | X64867Y-60318D01* 387 | X64923Y-60205D01* 388 | X64979Y-60037D01* 389 | X65036Y-59755D01* 390 | X65036Y-59530D01* 391 | X64979Y-59249D01* 392 | X64923Y-59080D01* 393 | X64867Y-58968D01* 394 | X64754Y-58799D01* 395 | X64698Y-58743D01* 396 | M02* 397 | -------------------------------------------------------------------------------- /experiment2/calibrated-period-length: -------------------------------------------------------------------------------- 1 | 157 2 | 260 3 | 382 4 | 521 5 | 674 6 | 839 7 | 1015 8 | 1199 9 | 1388 10 | 1583 11 | 1781 12 | 1982 13 | 2184 14 | 2386 15 | 2588 16 | 2789 17 | 2988 18 | 3185 19 | 3379 20 | 3570 21 | 3757 22 | 3940 23 | 4119 24 | 4294 25 | 4465 26 | 4632 27 | 4795 28 | 4952 29 | 5105 30 | 5254 31 | 5397 32 | 5536 33 | 5671 34 | 5800 35 | 5925 36 | 6046 37 | 6163 38 | 6274 39 | 6381 40 | 6484 41 | 6583 42 | 6678 43 | 6769 44 | 6857 45 | 6942 46 | 7023 47 | 7100 48 | 7174 49 | 7245 50 | 7313 51 | 7378 52 | 7441 53 | 7500 54 | 7557 55 | 7611 56 | 7663 57 | 7712 58 | 7759 59 | 7804 60 | 7847 61 | 7888 62 | 7927 63 | 7964 64 | 8000 65 | 8034 66 | 8066 67 | 8097 68 | 8127 69 | 8155 70 | 8181 71 | 8206 72 | 8230 73 | 8253 74 | 8275 75 | 8296 76 | 8316 77 | 8334 78 | 8352 79 | 8368 80 | 8384 81 | 8399 82 | 8413 83 | 8427 84 | 8440 85 | 8452 86 | 8464 87 | 8476 88 | 8486 89 | 8496 90 | 8506 91 | 8515 92 | 8523 93 | 8531 94 | 8539 95 | 8547 96 | 8553 97 | 8559 98 | 8565 99 | 8571 100 | 8577 101 | 8583 102 | 8588 103 | 8592 104 | 8596 105 | 8600 106 | 8604 107 | 8608 108 | 8612 109 | 8616 110 | 8620 111 | 8622 112 | 8624 113 | 8626 114 | 8628 115 | 8630 116 | 8632 117 | 8634 118 | 8636 119 | 8638 120 | 8640 121 | 8642 122 | 8644 123 | 8646 124 | 8648 125 | 8650 126 | 8650 127 | 8650 128 | 8651 129 | 8653 130 | 8655 131 | 8656 132 | 8656 133 | 8656 134 | 8657 135 | 8658 136 | 8659 137 | 8659 138 | 8659 139 | 8659 140 | 8661 141 | 8662 142 | 8662 143 | 8662 144 | 8662 145 | 8662 146 | 8662 147 | 8662 148 | 8662 149 | 8662 150 | 8662 151 | 8662 152 | 8662 153 | 8662 154 | 8662 155 | 8662 156 | 8662 157 | 8662 158 | 8662 159 | 8662 160 | 8662 161 | 8662 162 | 8662 163 | 8662 164 | 8662 165 | 8662 166 | 8254 167 | 8626 168 | 8628 169 | 8658 170 | 8658 171 | 8658 172 | 8658 173 | 8658 174 | 8658 175 | 8658 176 | 8658 177 | 8658 178 | 8658 179 | 8658 180 | 8669 181 | 8669 182 | 8702 183 | 8684 184 | 8682 185 | 8702 186 | 8687 187 | 8702 188 | 8673 189 | 8687 190 | 8687 191 | 8652 192 | 8652 193 | 8652 194 | 8655 195 | 8662 196 | 8663 197 | 8663 198 | 8637 199 | 8637 200 | 8666 201 | 8625 202 | 8617 203 | 8643 204 | 8620 205 | 8618 206 | 8646 207 | 8618 208 | 10021 209 | 10052 210 | 10054 211 | 10018 212 | 10015 213 | 10053 214 | 10078 215 | 10026 216 | 10053 217 | 10056 218 | 10024 219 | 10027 220 | 10061 221 | 10025 222 | 10063 223 | 10059 224 | 10025 225 | 10059 226 | 10061 227 | 10026 228 | 10060 229 | 10061 230 | 10026 231 | 10062 232 | 10033 233 | 10060 234 | 10048 235 | 10042 236 | 10075 237 | 10046 238 | 10076 239 | 10026 240 | 10029 241 | 10060 242 | 10040 243 | 10044 244 | 10074 245 | 10046 246 | 10076 247 | 10033 248 | 10027 249 | 10057 250 | 10028 251 | 10055 252 | 10023 253 | 10025 254 | 10061 255 | 10042 256 | 10041 257 | 10062 258 | 10041 259 | 10023 260 | 10057 261 | 10022 262 | 10025 263 | 10057 264 | 10024 265 | 10057 266 | 10073 267 | 10047 268 | 10080 269 | 10046 270 | 10081 271 | 10026 272 | 10063 273 | 10026 274 | 10059 275 | 10060 276 | 10028 277 | 10059 278 | 10024 279 | 10024 280 | 10056 281 | 10025 282 | 10028 283 | 10059 284 | 10024 285 | 10058 286 | 10057 287 | 10039 288 | 10062 289 | 10026 290 | 10060 291 | 10027 292 | 10029 293 | 10058 294 | 10024 295 | 10055 296 | 10025 297 | 10040 298 | 10074 299 | 10044 300 | 10042 301 | 10071 302 | 10039 303 | 10041 304 | 10068 305 | 10044 306 | 10058 307 | 10043 308 | 10037 309 | 10071 310 | 10069 311 | 10038 312 | 10038 313 | 10054 314 | 10065 315 | 10037 316 | 10039 317 | 10072 318 | 10042 319 | 10038 320 | 10053 321 | 10054 322 | 10022 323 | 10023 324 | 10054 325 | 10057 326 | 10026 327 | 10074 328 | 10078 329 | 10042 330 | 10076 331 | 10060 332 | 10026 333 | 10058 334 | 10025 335 | 10027 336 | 10056 337 | 10045 338 | 10073 339 | 10075 340 | 10047 341 | 10077 342 | 10050 343 | 10080 344 | 10032 345 | 10028 346 | 10062 347 | 10047 348 | 10079 349 | 10028 350 | 10055 351 | 10031 352 | 10030 353 | 10071 354 | 10049 355 | 10078 356 | 10047 357 | 10080 358 | 10074 359 | 10046 360 | 10060 361 | 10027 362 | 10026 363 | 10061 364 | 10027 365 | 10062 366 | 10056 367 | 10026 368 | 10028 369 | 10059 370 | 10024 371 | 10060 372 | 10065 373 | 10029 374 | 10080 375 | 10048 376 | 10065 377 | 10032 378 | 10063 379 | 10048 380 | 10078 381 | 10049 382 | 10083 383 | 10049 384 | 10080 385 | 10046 386 | 10043 387 | 10076 388 | 10042 389 | 10055 390 | 10028 391 | 10067 392 | 10037 393 | 10068 394 | 10036 395 | 10066 396 | 10037 397 | 10040 398 | 10071 399 | 10042 400 | 10079 401 | 10045 402 | 10062 403 | 10016 404 | 10046 405 | 10016 406 | 10029 407 | 10056 408 | 10016 409 | 10059 410 | 10031 411 | 10061 412 | 10074 413 | 10047 414 | 10078 415 | 10045 416 | 10076 417 | 10042 418 | 10042 419 | 10073 420 | 10044 421 | 10037 422 | 10075 423 | 10037 424 | 10026 425 | 10055 426 | 10023 427 | 10025 428 | 10055 429 | 10026 430 | 10054 431 | 10022 432 | 10022 433 | 10059 434 | 10025 435 | 10024 436 | 10057 437 | 10027 438 | 10060 439 | 10043 440 | 10070 441 | 10072 442 | 10040 443 | 10081 444 | 10045 445 | 10078 446 | 10047 447 | 10047 448 | 10076 449 | 10043 450 | 10078 451 | 10044 452 | 10073 453 | 10074 454 | 10042 455 | 10075 456 | 10040 457 | 10071 458 | 10041 459 | 10042 460 | 10072 461 | 10039 462 | 10072 463 | 10025 464 | 10053 465 | 10024 466 | 10057 467 | 10029 468 | 10060 469 | 10028 470 | 10042 471 | 10072 472 | 10038 473 | 10057 474 | 10041 475 | 10058 476 | 10059 477 | 10025 478 | 10058 479 | 10027 480 | 10059 481 | 10027 482 | 10057 483 | 10029 484 | 10060 485 | 10026 486 | 10079 487 | 10045 488 | 10074 489 | 10043 490 | 10077 491 | 10044 492 | 10060 493 | 10038 494 | 10041 495 | 10075 496 | 10042 497 | 10071 498 | 10044 499 | 10043 500 | 10060 501 | 10024 502 | 10056 503 | 10026 504 | 10058 505 | 10025 506 | 10016 507 | 10064 508 | 10038 509 | 10053 510 | 10021 511 | 10041 512 | 10056 513 | 10025 514 | 10054 515 | 10023 516 | 10050 517 | 10038 518 | 10064 519 | 10069 520 | 10041 521 | 10070 522 | 10040 523 | 10069 524 | 10040 525 | 10072 526 | 10034 527 | 10056 528 | 10020 529 | 10047 530 | 10019 531 | 10047 532 | 10055 533 | 10036 534 | 10052 535 | 10024 536 | 10053 537 | 10020 538 | 10023 539 | 10070 540 | 10017 541 | 10051 542 | 10021 543 | 10053 544 | 10026 545 | 10057 546 | 10025 547 | 10025 548 | 10055 549 | 10023 550 | 10052 551 | 10023 552 | 10052 553 | 10024 554 | 10051 555 | 10052 556 | 10032 557 | 10071 558 | 10037 559 | 10067 560 | 10035 561 | 10067 562 | 10036 563 | 10071 564 | 10040 565 | 10038 566 | 10069 567 | 10071 568 | 10039 569 | 10068 570 | 10038 571 | 10071 572 | 10040 573 | 10070 574 | 10024 575 | 10055 576 | 10024 577 | 10070 578 | 10037 579 | 10070 580 | 10039 581 | 10072 582 | 10039 583 | 10055 584 | 10027 585 | 10075 586 | 10045 587 | 10056 588 | 10055 589 | 10039 590 | 10074 591 | 10044 592 | 10072 593 | 10042 594 | 10072 595 | 10022 596 | 10052 597 | 10022 598 | 10053 599 | 10024 600 | 10057 601 | 10024 602 | 10054 603 | 10027 604 | 10055 605 | 10044 606 | 10075 607 | 10045 608 | 10042 609 | 10057 610 | 10027 611 | 10056 612 | 10019 613 | 10049 614 | 10025 615 | 10066 616 | 10044 617 | 10075 618 | 10043 619 | 10074 620 | 10074 621 | 10040 622 | 10070 623 | 10022 624 | 10051 625 | 10021 626 | 10071 627 | 10021 628 | 10054 629 | 10043 630 | 10073 631 | 10031 632 | 10032 633 | 10060 634 | 10029 635 | 10039 636 | 10009 637 | 10041 638 | 10010 639 | 10011 640 | 10041 641 | 10011 642 | 10040 643 | 10008 644 | 10012 645 | 10049 646 | 10011 647 | 10061 648 | 10042 649 | 10076 650 | 10027 651 | 10062 652 | 10061 653 | 10026 654 | 10058 655 | 10010 656 | 10034 657 | 10059 658 | 10035 659 | 10060 660 | 10025 661 | 10058 662 | 10032 663 | 10052 664 | 10031 665 | 10029 666 | 10059 667 | 10012 668 | 10041 669 | 10019 670 | 10040 671 | 10019 672 | 10040 673 | 10012 674 | 10021 675 | 10061 676 | 10013 677 | 10043 678 | 10013 679 | 10014 680 | 10043 681 | 10012 682 | 10043 683 | 10014 684 | 10062 685 | 10027 686 | 10044 687 | 10014 688 | 10045 689 | 10036 690 | 10056 691 | 10060 692 | 10039 693 | 10049 694 | 10014 695 | 10023 696 | 10052 697 | 10020 698 | 10069 699 | 10036 700 | 10069 701 | 10036 702 | 10035 703 | 10067 704 | 10037 705 | 10071 706 | 10039 707 | 10072 708 | 10039 709 | 10068 710 | 10021 711 | 10051 712 | 10020 713 | 10070 714 | 10037 715 | 10073 716 | 10039 717 | 10052 718 | 10026 719 | 10056 720 | 10024 721 | 10052 722 | 10022 723 | 10058 724 | 10025 725 | 10026 726 | 10055 727 | 10021 728 | 10055 729 | 10024 730 | 10055 731 | 10026 732 | 10055 733 | 10019 734 | 10060 735 | 10031 736 | 10050 737 | 10019 738 | 10052 739 | 10032 740 | 10065 741 | 10070 742 | 10020 743 | 10051 744 | 10022 745 | 10050 746 | 10018 747 | 10052 748 | 10016 749 | 10013 750 | 10052 751 | 10018 752 | 10023 753 | 10051 754 | 10019 755 | 10019 756 | 10052 757 | 10016 758 | 10033 759 | 10050 760 | 10017 761 | 10015 762 | 10051 763 | 10048 764 | 10014 765 | 10027 766 | 10031 767 | 10060 768 | 10064 769 | 10032 770 | 10033 771 | 10061 772 | 10065 773 | 10062 774 | 10029 775 | 10031 776 | 10028 777 | 10059 778 | 10061 779 | 10061 780 | 10027 781 | 10031 782 | 10029 783 | 10066 784 | 10060 785 | 10028 786 | 10030 787 | 10027 788 | 10066 789 | 10067 790 | 10034 791 | 10032 792 | 10066 793 | 10045 794 | 10013 795 | 10013 796 | 10045 797 | 10057 798 | 10063 799 | 10030 800 | 10029 801 | 10034 802 | 10066 803 | 10065 804 | 10032 805 | 10034 806 | 10064 807 | 10065 808 | 10030 809 | 10035 810 | 10064 811 | 10068 812 | 10035 813 | 10036 814 | 10064 815 | 10031 816 | 10035 817 | 10064 818 | 10065 819 | 10033 820 | 10035 821 | 10059 822 | 10031 823 | 10033 824 | 10067 825 | 10034 826 | 10034 827 | 10066 828 | 10034 829 | 10035 830 | 10064 831 | 10036 832 | 10019 833 | 10047 834 | 10017 835 | 10063 836 | 10067 837 | 10034 838 | 10059 839 | 10023 840 | 10052 841 | 10022 842 | 10055 843 | 10050 844 | 10022 845 | 10048 846 | 10023 847 | 10054 848 | 10025 849 | 10054 850 | 10026 851 | 10074 852 | 10038 853 | 10069 854 | 10042 855 | 10069 856 | -------------------------------------------------------------------------------- /firmware/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include "usiTwiSlave.h" 12 | 13 | #define GREEN PB0 14 | #define RED PB1 15 | 16 | /* 17 | * Sets the linear output power in dimmer mode. 1 byte argument: [0 - 255] 18 | */ 19 | #define I2C_SET_DIMMER_POWER 1 20 | /* 21 | * Sets the linear output power in relay mode. 1 byte argument: [0 - 255] 22 | * In relay mode conduction is switched on after each ZC for the whole period {relayOutputPower} times in a row out of RELAY_MAX_POWER 23 | * thus, imitating a dimmer without causing electrical noise. 24 | */ 25 | #define I2C_SET_RELAY_POWER 2 26 | /* 27 | * Directly sets the conduction angle. 2 bytes argument: [0 - 1000] 28 | */ 29 | #define I2C_SET_CONDUCTION_ANGLE 3 30 | /* 31 | * Returns 2 bytes of filtered period length, represents the number of 32 | * internal timer ticks between two zero crossings. 33 | * Should be around 10000. 34 | * */ 35 | #define I2C_READ_PERIOD_LENGTH 4 36 | /** 37 | * Returns 2 bytes of zero crossing pulse length. 38 | */ 39 | #define I2C_READ_ZC_PULSE_LENGHT 5 40 | /** 41 | * Returns the 1 byte value of processor speed calibration register. 42 | */ 43 | #define I2C_READ_OSCCAL 6 44 | /** 45 | * Returns 2 bytes of currently set conduction angle [0 - 10000] 46 | */ 47 | #define I2C_READ_CONDUCTION_ANGLE 7 48 | /* 49 | * Returns 2 bytes of last period length, represents the number of 50 | * internal timer ticks between two zero crossings. 51 | * Should be around 10000. 52 | * */ 53 | #define I2C_READ_LAST_PERIOD_LENGTH 8 54 | /** 55 | * Resets the Triac Bloc 56 | */ 57 | #define I2C_RESET 9 58 | /** 59 | * Starts the calibration routine. 60 | * Red and green leds blink alternatingly while calibration is in progress. 61 | * Might take a while. 62 | */ 63 | #define I2C_CALIBRATE 10 64 | #define I2C_ADC 11 65 | /** 66 | * A routine for testing I2C connection. Both red and green leds will light up for a second. 67 | */ 68 | #define I2C_TEST 12 69 | 70 | #define reset() wdt_enable(WDTO_15MS); while(1) {} 71 | 72 | inline void conductionOn(); 73 | inline void conductionOff(); 74 | inline void setupZCInterrupt(); 75 | inline void setTimerInterruptAt(const uint16_t countTo, const uint8_t nextEvent); 76 | inline void stopTimer(); 77 | 78 | #define NEVER 0 79 | #define EVENT_TRUE_ZC 1 80 | #define EVENT_CONDUCT 2 81 | 82 | volatile uint8_t interruptAt = NEVER; 83 | volatile uint16_t conductionAngle = 9000; 84 | volatile uint16_t newConductionAngle = 9000; 85 | volatile uint16_t zcPulseLength = 0; 86 | volatile uint16_t periodLength = 0; 87 | volatile uint8_t oscAjdustDelayCounter = 0; 88 | volatile uint16_t zcInterruptTimestamp = 0; 89 | extern const uint16_t conductionAngles[256]; 90 | 91 | #define EDGE_LEADING 0 92 | #define EDGE_FALLING 1 93 | #define MAX_SANE_ZC_LENGTH_DIFF 5 94 | #define true 1 95 | #define false 0 96 | 97 | uint8_t zcInterruptEdge = EDGE_LEADING; 98 | uint8_t powerGood = false; 99 | uint8_t calibrationGood = false; 100 | 101 | volatile uint8_t fadeIn = 1; 102 | volatile uint8_t j = 255; 103 | void fadeInOut() { 104 | if(fadeIn) { 105 | j --; 106 | if(j < 1) { 107 | fadeIn = !fadeIn; 108 | } 109 | } else { 110 | j ++; 111 | if(j > 254) { 112 | fadeIn = !fadeIn; 113 | } 114 | } 115 | newConductionAngle = pgm_read_word(&conductionAngles[j]); 116 | } 117 | 118 | inline void conductionOn() { 119 | PORTA |= _BV(PA7); 120 | } 121 | 122 | inline void conductionOff() { 123 | PORTA &= ~_BV(PA7); 124 | } 125 | 126 | inline void resetTimer() { 127 | TCNT1 = 0; 128 | } 129 | 130 | inline void setTimerInterruptAt(const uint16_t countTo, const uint8_t nextEvent) { 131 | TIMSK1 |= _BV(OCIE1A) | _BV(TOIE1); 132 | OCR1A = countTo; 133 | TCCR1B |= _BV(CS11); //fmcu/8 = 1Mhz == 10000 counts per period 134 | interruptAt = nextEvent; 135 | } 136 | 137 | inline void stopTimer() { 138 | TCCR1B = 0; 139 | } 140 | 141 | inline void continueTimer() { 142 | TCCR1B |= _BV(CS11); //fmcu/8 = 1Mhz == 10000 counts per period 143 | } 144 | 145 | //Timer interrupt - happens at various events in life 146 | ISR(TIM1_COMPA_vect) { 147 | if(EVENT_TRUE_ZC == interruptAt) { 148 | stopTimer(); 149 | setTimerInterruptAt(TCNT1 + conductionAngle, EVENT_CONDUCT); 150 | } else {// if(EVENT_CONDUCT == interruptAt) 151 | conductionOn(); 152 | } 153 | } 154 | 155 | //Timer overflow means - there is no ZC interrupt happening and setting up EVENT_TRUE_ZC timer. 156 | ISR(TIM1_OVF_vect) { 157 | conductionOff(); 158 | stopTimer(); 159 | powerGood = false; 160 | } 161 | 162 | inline void saveCalibration(){ 163 | eeprom_write_byte(0x00, OSCCAL); 164 | } 165 | 166 | inline void adjustOscillatorSpeed() { 167 | if (oscAjdustDelayCounter++ > 128) { 168 | if(periodLength > 10060) { 169 | OSCCAL--; 170 | calibrationGood = false; 171 | } else if(periodLength < 9940){ 172 | OSCCAL++; 173 | calibrationGood = false; 174 | } else { 175 | calibrationGood = true; 176 | } 177 | oscAjdustDelayCounter = 0; 178 | } 179 | } 180 | 181 | volatile int32_t periodFiltered = 0; 182 | volatile int32_t periodFiltered2 = 0; 183 | 184 | inline uint16_t filterPeriodLength(int32_t thisPeriodLength) { 185 | if(0 != periodFiltered2) { 186 | periodFiltered = periodFiltered + ((thisPeriodLength - periodFiltered) >> 5); 187 | periodFiltered2 = periodFiltered2 + ((periodFiltered - periodFiltered2) >> 5); 188 | } else { 189 | periodFiltered = thisPeriodLength; 190 | periodFiltered2 = thisPeriodLength; 191 | } 192 | return (uint16_t) periodFiltered2; 193 | } 194 | 195 | inline void setupZCInterrupt() { 196 | MCUCR |= _BV(ISC01) | _BV(ISC00); 197 | GIMSK |= _BV(INT0); 198 | zcInterruptEdge = EDGE_LEADING; 199 | } 200 | 201 | inline void flipZcInterruptEdge() { 202 | zcInterruptEdge = !zcInterruptEdge; 203 | MCUCR = MCUCR ^ 1; //flip last bit, changing the edge for the next intettupt 204 | } 205 | 206 | #define MODE_DIMMER 1 207 | #define MODE_RELAY 2 208 | #define RELAY_MAX_CYCLES 255 209 | 210 | uint8_t relayOnCycles = 0; 211 | uint8_t mode = MODE_DIMMER; 212 | uint8_t relayOutputPower = 0; 213 | 214 | inline uint16_t getNewConductionAngle() { 215 | if(MODE_DIMMER == mode) { 216 | return newConductionAngle; 217 | } else { 218 | //MODE_RELAY 219 | if(relayOnCycles > RELAY_MAX_CYCLES) { 220 | relayOnCycles = 0; 221 | } 222 | 223 | if(relayOnCycles++ >= relayOutputPower) { 224 | return 9000;//min power 225 | } else { 226 | return 0;//max power 227 | } 228 | } 229 | } 230 | 231 | //Zero crossing interrupt: collects statistics, restarts the timer - next stop - true zero crossing interrupt 232 | ISR(EXT_INT0_vect) { 233 | stopTimer(); 234 | 235 | if(EDGE_LEADING == zcInterruptEdge) { 236 | //fadeInOut(); 237 | conductionOff(); 238 | stopTimer(); 239 | periodLength = filterPeriodLength(TCNT1); 240 | zcInterruptTimestamp = TCNT1; 241 | resetTimer(); 242 | conductionAngle = getNewConductionAngle(); 243 | setTimerInterruptAt(zcPulseLength >> 1, EVENT_TRUE_ZC); 244 | adjustOscillatorSpeed(); 245 | } else { 246 | uint8_t lastZcPulseLength = TCNT1; 247 | continueTimer(); 248 | int diff = abs(zcPulseLength - lastZcPulseLength); 249 | if (diff < MAX_SANE_ZC_LENGTH_DIFF || 0 == zcPulseLength) { 250 | zcPulseLength = lastZcPulseLength; 251 | } 252 | } 253 | flipZcInterruptEdge(); 254 | powerGood=1; 255 | } 256 | 257 | inline void ledOn(uint8_t led){ 258 | PORTB |= _BV(led); 259 | } 260 | 261 | inline void ledOff(uint8_t led){ 262 | PORTB &= ~_BV(led); 263 | } 264 | 265 | inline void calibrate() { 266 | uint8_t calibration = eeprom_read_byte(0x00); 267 | if(calibration != 255) { 268 | OSCCAL = calibration; 269 | } 270 | 271 | while(!calibrationGood) { 272 | ledOn(RED); 273 | _delay_ms(300); 274 | ledOff(RED); 275 | ledOn(GREEN); 276 | _delay_ms(300); 277 | ledOff(GREEN); 278 | } 279 | eeprom_write_byte(0x00, OSCCAL); 280 | } 281 | 282 | uint8_t readAddressSetting() { 283 | DDRA &= 0b11110000; 284 | PORTA |= 0b00001111; 285 | _delay_ms(100); 286 | return ~PINA & 0b00001111; 287 | } 288 | 289 | int main (void) { 290 | MCUSR = 0; 291 | wdt_disable(); 292 | DDRB |= _BV(RED) | _BV(GREEN); 293 | PORTB |= _BV(PB2); 294 | DDRA |= _BV(PA7); 295 | PORTA = 0; 296 | 297 | setupZCInterrupt(); 298 | 299 | usiTwiSlaveInit(0x20 + readAddressSetting()); 300 | sei(); 301 | 302 | newConductionAngle = pgm_read_word(&conductionAngles[255]); 303 | 304 | while(1) { 305 | if(usiTwiDataInReceiveBuffer()) { 306 | uint8_t usiRx = usiTwiReceiveByte(); 307 | if(I2C_SET_DIMMER_POWER == usiRx) { 308 | newConductionAngle = pgm_read_word(&conductionAngles[255 - usiTwiReceiveByte()]); 309 | mode = MODE_DIMMER; 310 | } else if(I2C_SET_RELAY_POWER == usiRx) { 311 | newConductionAngle = pgm_read_word(&conductionAngles[255]); 312 | relayOnCycles = 0; 313 | relayOutputPower = usiTwiReceiveByte(); 314 | mode = MODE_RELAY; 315 | } else if (I2C_SET_CONDUCTION_ANGLE == usiRx) { 316 | newConductionAngle = ((uint16_t) usiTwiReceiveByte()) << 8; 317 | newConductionAngle |= (((uint16_t) usiTwiReceiveByte()) & 0x00FF); 318 | } else if (I2C_READ_PERIOD_LENGTH == usiRx){ 319 | usiTwiTransmitByte(periodLength >> 8); 320 | usiTwiTransmitByte(periodLength & 0x00FF); 321 | } else if (I2C_READ_ZC_PULSE_LENGHT == usiRx){ 322 | usiTwiTransmitByte(zcPulseLength >> 8); 323 | usiTwiTransmitByte(zcPulseLength & 0x00FF); 324 | } else if (I2C_READ_OSCCAL == usiRx){ 325 | usiTwiTransmitByte(OSCCAL); 326 | } else if (I2C_READ_CONDUCTION_ANGLE == usiRx){ 327 | usiTwiTransmitByte(conductionAngle >> 8); 328 | usiTwiTransmitByte(conductionAngle & 0x00FF); 329 | } else if (I2C_READ_LAST_PERIOD_LENGTH == usiRx){ 330 | usiTwiTransmitByte(zcInterruptTimestamp >> 8); 331 | usiTwiTransmitByte(zcInterruptTimestamp & 0x00FF); 332 | } else if (I2C_RESET == usiRx) { 333 | reset(); 334 | } else if(I2C_CALIBRATE == usiRx) { 335 | calibrate(); 336 | } else if(I2C_TEST == usiRx) { 337 | ledOn(RED); 338 | ledOn(GREEN); 339 | _delay_ms(2000); 340 | ledOff(RED); 341 | ledOff(GREEN); 342 | } 343 | } 344 | 345 | if(!powerGood) { 346 | ledOn(RED); 347 | _delay_ms(100); 348 | ledOff(RED); 349 | _delay_ms(100); 350 | } 351 | ledOff(GREEN); 352 | } 353 | } 354 | -------------------------------------------------------------------------------- /ssr-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Thu 20 Jun 2013 11:41:15 PM CEST 2 | #encoding utf-8 3 | # 4 | # ATTINY44-SS 5 | # 6 | DEF ATTINY44-SS IC 0 40 Y Y 1 F N 7 | F0 "IC" -750 750 60 H V C CNN 8 | F1 "ATTINY44-SS" 550 -750 60 H V C CNN 9 | F2 "SO14" -700 -750 60 H I C CNN 10 | F3 "" 0 0 60 H V C CNN 11 | DRAW 12 | S 850 700 -850 -700 0 1 0 f 13 | X VCC 1 -1050 600 200 R 50 50 1 1 W 14 | X (PCINT8/CLKI/XTAL1)PB0 2 1050 -300 200 L 50 50 1 1 B 15 | X (PCINT9/XTAL2)PB1 3 1050 -400 200 L 50 50 1 1 B 16 | X (PCINT11/dW/~RESET~)PB3 4 1050 -600 200 L 50 50 1 1 B 17 | X (PCINT10/CKOUT/OC0A/INT0)PB2 5 1050 -500 200 L 50 50 1 1 B 18 | X (PCINT7/ICP/OC0B/ADC7)PA7 6 1050 -100 200 L 50 50 1 1 B 19 | X (PCINT6/SDA/DI/MOSI/OC1A/ADC6)PA6 7 1050 0 200 L 50 50 1 1 B 20 | X (PCINT5/DO/MISO/OC1B/ADC5)PA5 8 1050 100 200 L 50 50 1 1 B 21 | X (PCINT4/USCK/SCL/T1/ADC4)PA4 9 1050 200 200 L 50 50 1 1 B 22 | X (PCINT3/T0/ADC3)PA3 10 1050 300 200 L 50 50 1 1 B 23 | X (PCINT2/AIN1/ADC2)PA2 11 1050 400 200 L 50 50 1 1 B 24 | X (PCINT1/AIN0/ADC1)PA1 12 1050 500 200 L 50 50 1 1 B 25 | X (PCINT0/AREF/ADC0)PA0 13 1050 600 200 L 50 50 1 1 B 26 | X GND 14 -1050 -600 200 R 50 50 1 1 W 27 | ENDDRAW 28 | ENDDEF 29 | # 30 | # AVR-ISP-6 31 | # 32 | DEF AVR-ISP-6 CON 0 40 Y Y 1 F N 33 | F0 "CON" -80 240 50 H V C CNN 34 | F1 "AVR-ISP-6" -240 -230 50 H V L BNN 35 | F2 "AVR-ISP-6" -520 40 50 V I C CNN 36 | F3 "" 0 0 60 H V C CNN 37 | DRAW 38 | T 0 -290 5 45 0 0 0 SCK Normal 1 C C 39 | T 0 300 110 45 0 0 0 VCC Normal 1 C C 40 | T 0 310 -105 45 0 1 0 GND Normal 1 C C 41 | T 0 -308 102 45 0 1 0 MISO Normal 1 C C 42 | T 0 332 -2 45 0 1 0 MOSI Normal 1 C C 43 | T 0 -290 -100 45 0 1 0 RST Normal 1 C C 44 | S -180 -140 190 -160 0 1 0 F 45 | S -180 200 180 180 0 1 0 F 46 | S -175 -160 -195 -40 0 1 0 F 47 | S -175 200 -195 40 0 1 0 F 48 | S 180 200 200 -160 0 1 0 F 49 | X ~ 1 -125 100 100 R 40 40 1 1 P 50 | X ~ 2 125 100 100 L 40 40 1 1 P 51 | X ~ 3 -125 0 100 R 40 40 1 1 P 52 | X ~ 4 125 0 100 L 40 40 1 1 P 53 | X ~ 5 -125 -100 100 R 40 40 1 1 P 54 | X ~ 6 125 -100 100 L 40 40 1 1 P 55 | ENDDRAW 56 | ENDDEF 57 | # 58 | # C 59 | # 60 | DEF C C 0 10 N Y 1 F N 61 | F0 "C" 0 100 40 H V L CNN 62 | F1 "C" 6 -85 40 H V L CNN 63 | F2 "" 38 -150 30 H V C CNN 64 | F3 "" 0 0 60 H V C CNN 65 | $FPLIST 66 | SM* 67 | C? 68 | C1-1 69 | $ENDFPLIST 70 | DRAW 71 | P 2 0 1 20 -80 -30 80 -30 N 72 | P 2 0 1 20 -80 30 80 30 N 73 | X ~ 1 0 200 170 D 40 40 1 1 P 74 | X ~ 2 0 -200 170 U 40 40 1 1 P 75 | ENDDRAW 76 | ENDDEF 77 | # 78 | # CONN_4 79 | # 80 | DEF CONN_4 P 0 40 Y N 1 F N 81 | F0 "P" -50 0 50 V V C CNN 82 | F1 "CONN_4" 50 0 50 V V C CNN 83 | F2 "" 0 0 60 H V C CNN 84 | F3 "" 0 0 60 H V C CNN 85 | DRAW 86 | S -100 200 100 -200 0 1 0 N 87 | X P1 1 -350 150 250 R 50 50 1 1 P I 88 | X P2 2 -350 50 250 R 50 50 1 1 P I 89 | X P3 3 -350 -50 250 R 50 50 1 1 P I 90 | X P4 4 -350 -150 250 R 50 50 1 1 P I 91 | ENDDRAW 92 | ENDDEF 93 | # 94 | # CONTACT 95 | # 96 | DEF CONTACT P 0 40 Y Y 1 F N 97 | F0 "P" 0 -100 60 H V C CNN 98 | F1 "CONTACT" 0 100 60 H V C CNN 99 | F2 "" 0 0 60 H V C CNN 100 | F3 "" 0 0 60 H V C CNN 101 | DRAW 102 | X 1 1 0 0 300 L 50 50 1 1 I 103 | ENDDRAW 104 | ENDDEF 105 | # 106 | # CP 107 | # 108 | DEF CP C 0 10 N N 1 F N 109 | F0 "C" 50 100 40 H V L CNN 110 | F1 "CP" 50 -100 40 H V L CNN 111 | F2 "" 100 -150 30 H V C CNN 112 | F3 "" 0 0 300 H V C CNN 113 | ALIAS CAPAPOL 114 | $FPLIST 115 | CP* 116 | SM* 117 | $ENDFPLIST 118 | DRAW 119 | P 4 0 1 8 -80 50 -80 -50 80 -50 80 50 N 120 | P 4 0 1 0 -50 50 -50 -20 50 -20 50 50 F 121 | X ~ 1 0 200 150 D 40 40 1 1 P 122 | X ~ 2 0 -200 150 U 40 40 1 1 P 123 | ENDDRAW 124 | ENDDEF 125 | # 126 | # FUSE 127 | # 128 | DEF FUSE F 0 10 Y Y 1 F N 129 | F0 "F" 100 50 40 H V C CNN 130 | F1 "FUSE" -100 -50 40 H V C CNN 131 | F2 "" 0 0 60 H V C CNN 132 | F3 "" 0 0 60 H V C CNN 133 | DRAW 134 | A -75 0 75 1 1799 0 1 0 N 0 0 -150 0 135 | A 75 0 75 -1799 -1 0 1 0 N 0 0 150 0 136 | X ~ 1 -250 0 100 R 40 40 1 1 I 137 | X ~ 2 250 0 100 L 40 40 1 1 I 138 | ENDDRAW 139 | ENDDEF 140 | # 141 | # GND 142 | # 143 | DEF ~GND #PWR 0 0 Y Y 1 F P 144 | F0 "#PWR" 0 0 30 H I C CNN 145 | F1 "GND" 0 -70 30 H I C CNN 146 | F2 "" 0 0 60 H V C CNN 147 | F3 "" 0 0 60 H V C CNN 148 | DRAW 149 | P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N 150 | X GND 1 0 0 0 U 30 30 1 1 W N 151 | ENDDRAW 152 | ENDDEF 153 | # 154 | # INDUCTOR 155 | # 156 | DEF INDUCTOR L 0 40 N N 1 F N 157 | F0 "L" -50 0 40 V V C CNN 158 | F1 "INDUCTOR" 100 0 40 V V C CNN 159 | F2 "" 0 0 60 H V C CNN 160 | F3 "" 0 0 60 H V C CNN 161 | DRAW 162 | A 0 -150 50 -889 889 0 1 0 N 1 -199 1 -100 163 | A 0 -49 51 -889 889 0 1 0 N 1 -99 1 2 164 | A 0 51 51 -889 889 0 1 0 N 1 1 1 102 165 | A 0 148 48 -889 889 0 1 0 N 1 101 1 196 166 | X 1 1 0 300 100 D 70 70 1 1 P 167 | X 2 2 0 -300 100 U 70 70 1 1 P 168 | ENDDRAW 169 | ENDDEF 170 | # 171 | # LED 172 | # 173 | DEF LED D 0 40 Y N 1 F N 174 | F0 "D" 0 100 50 H V C CNN 175 | F1 "LED" 0 -100 50 H V C CNN 176 | F2 "" 0 0 60 H V C CNN 177 | F3 "" 0 0 60 H V C CNN 178 | $FPLIST 179 | LED-3MM 180 | LED-5MM 181 | LED-10MM 182 | LED-0603 183 | LED-0805 184 | LED-1206 185 | LEDV 186 | $ENDFPLIST 187 | DRAW 188 | P 2 0 1 0 50 50 50 -50 N 189 | P 3 0 1 0 -50 50 50 0 -50 -50 F 190 | P 3 0 1 0 65 -40 110 -80 105 -55 N 191 | P 3 0 1 0 80 -25 125 -65 120 -40 N 192 | X A 1 -200 0 150 R 40 40 1 1 P 193 | X K 2 200 0 150 L 40 40 1 1 P 194 | ENDDRAW 195 | ENDDEF 196 | # 197 | # MOS_N 198 | # 199 | DEF MOS_N Q 0 0 N Y 1 F N 200 | F0 "Q" 10 170 60 H V R CNN 201 | F1 "MOS_N" 10 -150 60 H V R CNN 202 | F2 "" 0 0 60 H V C CNN 203 | F3 "" 0 0 60 H V C CNN 204 | ALIAS MOSFET_N 205 | DRAW 206 | P 2 0 1 8 -50 -100 -50 100 N 207 | P 2 0 1 10 0 -150 0 150 N 208 | P 2 0 1 0 100 -100 0 -100 N 209 | P 2 0 1 0 100 100 0 100 N 210 | P 3 0 1 8 100 -100 100 0 50 0 N 211 | P 5 0 1 8 50 30 50 -30 0 0 50 30 50 30 N 212 | X D D 100 200 100 D 40 40 1 1 P 213 | X G G -200 0 150 R 40 40 1 1 I 214 | X S S 100 -200 100 U 40 40 1 1 P 215 | ENDDRAW 216 | ENDDEF 217 | # 218 | # OPTO-TRANSISTOR-AC 219 | # 220 | DEF OPTO-TRANSISTOR-AC U 0 30 Y Y 1 F N 221 | F0 "U" 200 300 60 H V C CNN 222 | F1 "OPTO-TRANSISTOR-AC" 100 -300 60 H V C CNN 223 | F2 "" 0 0 60 H V C CNN 224 | F3 "" 0 0 60 H V C CNN 225 | DRAW 226 | S -600 250 250 -250 0 1 0 N 227 | P 2 0 1 0 -350 -100 -600 -100 N 228 | P 2 0 1 0 -350 200 -600 200 N 229 | P 3 0 1 0 -350 -100 -300 -100 -300 -100 N 230 | P 3 0 1 0 -350 200 -300 200 -300 200 N 231 | P 3 0 1 0 -60 -40 -40 -20 -40 -20 N 232 | P 3 0 1 0 -60 -40 -40 -20 -40 -20 N 233 | P 3 0 1 0 50 100 50 -100 50 -100 N 234 | P 3 0 1 0 250 -150 200 -150 200 -150 N 235 | P 3 0 1 0 250 150 200 150 200 150 N 236 | P 4 0 1 0 -400 100 -400 200 -300 200 -300 200 N 237 | P 4 0 1 0 -400 100 -400 200 -300 200 -300 200 N 238 | P 4 0 1 0 -400 100 -400 200 -300 200 -300 200 N 239 | P 4 0 1 0 -400 100 -400 200 -300 200 -300 200 N 240 | P 4 0 1 0 -200 0 -200 -100 -300 -100 -300 -100 N 241 | P 4 0 1 0 -200 0 -200 -100 -300 -100 -300 -100 N 242 | P 4 0 1 0 -200 0 -200 -100 -300 -100 -300 -100 N 243 | P 4 0 1 0 -200 0 -200 -100 -300 -100 -300 -100 N 244 | P 5 0 1 0 50 -50 100 -100 100 -150 200 -150 200 -150 N 245 | P 5 0 1 0 50 50 100 100 100 150 200 150 200 150 N 246 | P 5 0 1 0 60 -80 80 -60 80 -80 60 -80 60 -80 N 247 | P 6 0 1 0 -480 60 -560 140 -560 120 -560 140 -540 140 -540 140 N 248 | P 6 0 1 0 -480 60 -560 140 -560 120 -560 140 -540 140 -540 140 N 249 | P 6 0 1 0 -480 60 -560 140 -560 120 -560 140 -540 140 -540 140 N 250 | P 6 0 1 0 -480 60 -560 140 -560 120 -560 140 -540 140 -540 140 N 251 | P 6 0 1 0 -120 40 -40 -40 -40 -20 -40 -40 -60 -40 -60 -40 N 252 | P 6 0 1 0 -120 40 -40 -40 -40 -20 -40 -40 -60 -40 -60 -40 N 253 | P 6 0 1 0 -120 40 -40 -40 -40 -20 -40 -40 -60 -40 -60 -40 N 254 | P 6 0 1 0 -120 40 -40 -40 -40 -20 -40 -40 -60 -40 -60 -40 N 255 | P 7 0 1 0 -480 120 -560 200 -560 180 -560 200 -540 200 -560 180 -560 180 N 256 | P 7 0 1 0 -480 120 -560 200 -560 180 -560 200 -540 200 -560 180 -560 180 N 257 | P 7 0 1 0 -480 120 -560 200 -560 180 -560 200 -540 200 -560 180 -560 180 N 258 | P 7 0 1 0 -480 120 -560 200 -560 180 -560 200 -540 200 -560 180 -560 180 N 259 | P 7 0 1 0 -120 -20 -40 -100 -40 -80 -40 -100 -60 -100 -40 -80 -40 -80 N 260 | P 7 0 1 0 -120 -20 -40 -100 -40 -80 -40 -100 -60 -100 -40 -80 -40 -80 N 261 | P 7 0 1 0 -120 -20 -40 -100 -40 -80 -40 -100 -60 -100 -40 -80 -40 -80 N 262 | P 7 0 1 0 -120 -20 -40 -100 -40 -80 -40 -100 -60 -100 -40 -80 -40 -80 N 263 | P 8 0 1 0 -300 -100 -400 -100 -400 0 -300 0 -400 100 -500 0 -400 0 -400 0 N 264 | P 8 0 1 0 -300 200 -200 200 -200 100 -300 100 -200 0 -100 100 -200 100 -200 100 N 265 | P 8 0 1 0 -300 200 -200 200 -200 100 -300 100 -200 0 -100 100 -200 100 -200 100 N 266 | P 8 0 1 0 -300 200 -200 200 -200 100 -300 100 -200 0 -100 100 -200 100 -200 100 N 267 | P 8 0 1 0 -300 200 -200 200 -200 100 -300 100 -200 0 -100 100 -200 100 -200 100 N 268 | X AK 1 -900 200 300 R 50 50 1 1 I 269 | X KA 2 -900 -100 300 R 50 50 1 1 I 270 | X E 3 550 -150 300 L 50 50 1 1 w 271 | X NC 3 -350 -200 0 R 50 50 1 1 U N 272 | X C 4 550 150 300 L 50 50 1 1 C 273 | ENDDRAW 274 | ENDDEF 275 | # 276 | # OPTO-TRIAC 277 | # 278 | DEF OPTO-TRIAC U 0 30 Y Y 1 F N 279 | F0 "U" 200 300 60 H V C CNN 280 | F1 "OPTO-TRIAC" 100 -300 60 H V C CNN 281 | F2 "" 0 0 60 H V C CNN 282 | F3 "" 0 0 60 H V C CNN 283 | DRAW 284 | S -350 250 300 -250 0 1 0 N 285 | S 50 0 260 -10 0 1 0 F 286 | S 250 50 50 60 0 1 0 F 287 | P 2 0 1 10 -300 0 -100 0 N 288 | P 3 0 1 0 -350 -100 -300 -100 -300 -100 N 289 | P 3 0 1 0 -300 200 -350 200 -350 200 N 290 | P 3 0 1 0 -60 -40 -40 -20 -40 -20 N 291 | P 3 0 1 0 250 200 300 200 300 200 N 292 | P 3 0 1 0 300 -200 250 -200 250 -200 N 293 | P 4 0 1 0 -200 0 -200 -100 -300 -100 -300 -100 N 294 | P 4 0 1 0 150 -10 150 -200 250 -200 250 -200 N 295 | P 4 0 1 0 150 60 150 200 250 200 250 200 N 296 | P 5 0 1 0 50 50 100 0 150 50 50 50 50 50 F 297 | P 5 0 1 0 150 0 250 0 200 50 150 0 150 0 F 298 | P 6 0 1 0 -120 40 -40 -40 -40 -20 -40 -40 -60 -40 -60 -40 N 299 | P 7 0 1 0 -120 -20 -40 -100 -40 -80 -40 -100 -60 -100 -40 -80 -40 -80 N 300 | P 8 0 1 0 -300 200 -200 200 -200 100 -300 100 -200 0 -100 100 -200 100 -200 100 N 301 | X A 1 -650 200 300 R 50 50 1 1 I 302 | X K 2 -650 -100 300 R 50 50 1 1 I 303 | X NC 3 -450 -150 100 R 20 20 1 1 N 304 | X S2 4 600 -200 300 L 50 50 1 1 O 305 | X NC 5 -450 -200 100 R 20 20 1 1 N 306 | X S1 6 600 200 300 L 50 50 1 1 I 307 | ENDDRAW 308 | ENDDEF 309 | # 310 | # R 311 | # 312 | DEF R R 0 0 N Y 1 F N 313 | F0 "R" 80 0 40 V V C CNN 314 | F1 "R" 7 1 40 V V C CNN 315 | F2 "" -70 0 30 V V C CNN 316 | F3 "" 0 0 30 H V C CNN 317 | $FPLIST 318 | R? 319 | SM0603 320 | SM0805 321 | R?-* 322 | SM1206 323 | $ENDFPLIST 324 | DRAW 325 | S -40 150 40 -150 0 1 12 N 326 | X ~ 1 0 250 100 D 60 60 1 1 P 327 | X ~ 2 0 -250 100 U 60 60 1 1 P 328 | ENDDRAW 329 | ENDDEF 330 | # 331 | # TRIAC 332 | # 333 | DEF TRIAC U 0 10 Y Y 1 F N 334 | F0 "U" -250 350 70 H V C CNN 335 | F1 "TRIAC" -300 -250 60 H V C CNN 336 | F2 "" 0 0 60 H V C CNN 337 | F3 "" 0 0 60 H V C CNN 338 | DRAW 339 | P 2 0 1 0 -300 -50 0 -50 N 340 | P 2 0 1 0 -150 -50 -300 -200 N 341 | P 2 0 1 0 0 200 300 200 N 342 | P 3 0 1 0 -300 200 -150 -50 0 200 F 343 | P 3 0 1 0 150 200 0 -50 300 -50 F 344 | X ~ 1 0 -250 200 U 70 70 1 1 P 345 | X ~ 2 0 400 200 D 70 70 1 1 P 346 | X ~ 3 -500 -200 200 R 70 70 1 1 I 347 | ENDDRAW 348 | ENDDEF 349 | # 350 | # VCC 351 | # 352 | DEF VCC #PWR 0 0 Y Y 1 F P 353 | F0 "#PWR" 0 100 30 H I C CNN 354 | F1 "VCC" 0 100 30 H V C CNN 355 | F2 "" 0 0 60 H V C CNN 356 | F3 "" 0 0 60 H V C CNN 357 | DRAW 358 | X VCC 1 0 0 0 U 20 20 0 0 W N 359 | C 0 50 20 0 1 0 N 360 | P 3 0 1 0 0 0 0 30 0 30 N 361 | ENDDRAW 362 | ENDDEF 363 | # 364 | # VR 365 | # 366 | DEF VR VR 0 0 N Y 1 F N 367 | F0 "VR" 60 -46 40 V V C TNN 368 | F1 "VR" 0 0 40 V V C CNN 369 | F2 "" 0 0 60 H V C CNN 370 | F3 "" 0 0 60 H V C CNN 371 | DRAW 372 | S -40 150 40 -150 0 1 0 N 373 | P 5 0 1 0 -60 -100 -60 -60 60 60 60 100 60 100 N 374 | X ~ 1 0 250 100 D 60 60 1 1 P 375 | X ~ 2 0 -250 100 U 60 60 1 1 P 376 | ENDDRAW 377 | ENDDEF 378 | # 379 | #End Library 380 | -------------------------------------------------------------------------------- /controller-attiny1634/controller.net: -------------------------------------------------------------------------------- 1 | (export (version D) 2 | (design 3 | (source /home/miceuz/Xaltura/SSR/controller/controller.sch) 4 | (date "Thu 16 May 2013 08:22:17 AM CEST") 5 | (tool "eeschema (2013-mar-13)-testing")) 6 | (components 7 | (comp (ref IC2) 8 | (value SP3485CN) 9 | (footprint SO8) 10 | (libsource (lib interface) (part SP3485CN)) 11 | (sheetpath (names /) (tstamps /)) 12 | (tstamp 518B9650)) 13 | (comp (ref X1) 14 | (value 16MHz) 15 | (libsource (lib device) (part CRYSTAL)) 16 | (sheetpath (names /) (tstamps /)) 17 | (tstamp 518B9687)) 18 | (comp (ref C1) 19 | (value 22p) 20 | (libsource (lib device) (part C)) 21 | (sheetpath (names /) (tstamps /)) 22 | (tstamp 518B9696)) 23 | (comp (ref C2) 24 | (value 22p) 25 | (libsource (lib device) (part C)) 26 | (sheetpath (names /) (tstamps /)) 27 | (tstamp 518B96A5)) 28 | (comp (ref C6) 29 | (value 100n) 30 | (libsource (lib device) (part C)) 31 | (sheetpath (names /) (tstamps /)) 32 | (tstamp 518B9775)) 33 | (comp (ref R1) 34 | (value 10k) 35 | (libsource (lib device) (part R)) 36 | (sheetpath (names /) (tstamps /)) 37 | (tstamp 518B97EE)) 38 | (comp (ref C3) 39 | (value 100n) 40 | (libsource (lib device) (part C)) 41 | (sheetpath (names /) (tstamps /)) 42 | (tstamp 518B9823)) 43 | (comp (ref SW1) 44 | (value SW_PUSH) 45 | (libsource (lib device) (part SW_PUSH)) 46 | (sheetpath (names /) (tstamps /)) 47 | (tstamp 518B991E)) 48 | (comp (ref R3) 49 | (value R) 50 | (libsource (lib device) (part R)) 51 | (sheetpath (names /) (tstamps /)) 52 | (tstamp 518B9A66)) 53 | (comp (ref R2) 54 | (value R) 55 | (libsource (lib device) (part R)) 56 | (sheetpath (names /) (tstamps /)) 57 | (tstamp 518B9A6C)) 58 | (comp (ref C7) 59 | (value 100n) 60 | (libsource (lib device) (part C)) 61 | (sheetpath (names /) (tstamps /)) 62 | (tstamp 518B9B2D)) 63 | (comp (ref CON1) 64 | (value AVR-ISP-6) 65 | (footprint AVR-ISP-6) 66 | (libsource (lib atmel) (part AVR-ISP-6)) 67 | (sheetpath (names /) (tstamps /)) 68 | (tstamp 518B9ED3)) 69 | (comp (ref R4) 70 | (value 10k) 71 | (libsource (lib device) (part R)) 72 | (sheetpath (names /) (tstamps /)) 73 | (tstamp 518BA4A5)) 74 | (comp (ref U1) 75 | (value P82B96) 76 | (libsource (lib philips) (part P82B96)) 77 | (sheetpath (names /) (tstamps /)) 78 | (tstamp 518BB0F8)) 79 | (comp (ref C4) 80 | (value 100n) 81 | (libsource (lib device) (part C)) 82 | (sheetpath (names /) (tstamps /)) 83 | (tstamp 518BB14F)) 84 | (comp (ref IC1) 85 | (value ATTINY1634-S) 86 | (footprint SO20) 87 | (libsource (lib atmel) (part ATTINY1634-S)) 88 | (sheetpath (names /) (tstamps /)) 89 | (tstamp 5191339D)) 90 | (comp (ref P1) 91 | (value I2C) 92 | (libsource (lib conn) (part CONN_4)) 93 | (sheetpath (names /) (tstamps /)) 94 | (tstamp 51913C29)) 95 | (comp (ref C5) 96 | (value 100n) 97 | (libsource (lib device) (part C)) 98 | (sheetpath (names /) (tstamps /)) 99 | (tstamp 51913C78)) 100 | (comp (ref R5) 101 | (value 120) 102 | (libsource (lib device) (part R)) 103 | (sheetpath (names /) (tstamps /)) 104 | (tstamp 51914955)) 105 | (comp (ref JP1) 106 | (value JUMPER) 107 | (libsource (lib device) (part JUMPER)) 108 | (sheetpath (names /) (tstamps /)) 109 | (tstamp 51914A01)) 110 | (comp (ref R6) 111 | (value R) 112 | (libsource (lib device) (part R)) 113 | (sheetpath (names /) (tstamps /)) 114 | (tstamp 51914D89)) 115 | (comp (ref R7) 116 | (value R) 117 | (libsource (lib device) (part R)) 118 | (sheetpath (names /) (tstamps /)) 119 | (tstamp 51914DFB)) 120 | (comp (ref K1) 121 | (value RS458) 122 | (libsource (lib conn) (part CONN_3)) 123 | (sheetpath (names /) (tstamps /)) 124 | (tstamp 51947B16))) 125 | (libparts 126 | (libpart (lib device) (part C) 127 | (description "Condensateur non polarise") 128 | (footprints 129 | (fp SM*) 130 | (fp C?) 131 | (fp C1-1)) 132 | (fields 133 | (field (name Reference) C) 134 | (field (name Value) C) 135 | (field (name Footprint) ~) 136 | (field (name Datasheet) ~)) 137 | (pins 138 | (pin (num 1) (name ~) (type passive)) 139 | (pin (num 2) (name ~) (type passive)))) 140 | (libpart (lib device) (part CRYSTAL) 141 | (fields 142 | (field (name Reference) X) 143 | (field (name Value) CRYSTAL) 144 | (field (name Footprint) ~) 145 | (field (name Datasheet) ~)) 146 | (pins 147 | (pin (num 1) (name 1) (type passive)) 148 | (pin (num 2) (name 2) (type passive)))) 149 | (libpart (lib device) (part JUMPER) 150 | (fields 151 | (field (name Reference) JP) 152 | (field (name Value) JUMPER) 153 | (field (name Footprint) ~) 154 | (field (name Datasheet) ~)) 155 | (pins 156 | (pin (num 1) (name 1) (type passive)) 157 | (pin (num 2) (name 2) (type passive)))) 158 | (libpart (lib device) (part R) 159 | (description Resistance) 160 | (footprints 161 | (fp R?) 162 | (fp SM0603) 163 | (fp SM0805) 164 | (fp R?-*) 165 | (fp SM1206)) 166 | (fields 167 | (field (name Reference) R) 168 | (field (name Value) R) 169 | (field (name Footprint) ~) 170 | (field (name Datasheet) ~)) 171 | (pins 172 | (pin (num 1) (name ~) (type passive)) 173 | (pin (num 2) (name ~) (type passive)))) 174 | (libpart (lib device) (part SW_PUSH) 175 | (description "Push Button") 176 | (fields 177 | (field (name Reference) SW) 178 | (field (name Value) SW_PUSH) 179 | (field (name Footprint) ~) 180 | (field (name Datasheet) ~)) 181 | (pins 182 | (pin (num 1) (name 1) (type passive)) 183 | (pin (num 2) (name 2) (type passive)))) 184 | (libpart (lib conn) (part CONN_3) 185 | (description "Symbole general de connecteur") 186 | (fields 187 | (field (name Reference) K) 188 | (field (name Value) CONN_3) 189 | (field (name Footprint) ~) 190 | (field (name Datasheet) ~)) 191 | (pins 192 | (pin (num 1) (name P1) (type passive)) 193 | (pin (num 2) (name PM) (type passive)) 194 | (pin (num 3) (name P3) (type passive)))) 195 | (libpart (lib conn) (part CONN_4) 196 | (description "Symbole general de connecteur") 197 | (fields 198 | (field (name Reference) P) 199 | (field (name Value) CONN_4) 200 | (field (name Footprint) ~) 201 | (field (name Datasheet) ~)) 202 | (pins 203 | (pin (num 1) (name P1) (type passive)) 204 | (pin (num 2) (name P2) (type passive)) 205 | (pin (num 3) (name P3) (type passive)) 206 | (pin (num 4) (name P4) (type passive)))) 207 | (libpart (lib philips) (part P82B96) 208 | (description "I2C Bus tranceiver") 209 | (footprints 210 | (fp SO8E) 211 | (fp SSOP8)) 212 | (fields 213 | (field (name Reference) U) 214 | (field (name Value) P82B96)) 215 | (pins 216 | (pin (num 1) (name SDA) (type BiDi)) 217 | (pin (num 2) (name RXD-SDA) (type input)) 218 | (pin (num 3) (name TXD-SDA) (type output)) 219 | (pin (num 4) (name GND) (type power_in)) 220 | (pin (num 5) (name TXD-SCL) (type output)) 221 | (pin (num 6) (name RXD-SCL) (type input)) 222 | (pin (num 7) (name SCL) (type BiDi)) 223 | (pin (num 8) (name VCC) (type power_in)))) 224 | (libpart (lib atmel) (part ATTINY1634-S) 225 | (description "ATTINY1634, SO20, 16k Flash, 1k SRAM, 256B EEPROM") 226 | (docs http://www.atmel.com/Images/doc8303.pdf) 227 | (fields 228 | (field (name Reference) IC) 229 | (field (name Value) ATTINY1634-S) 230 | (field (name Footprint) SO20) 231 | (field (name Datasheet) ~)) 232 | (pins 233 | (pin (num 1) (name "(PCINT8/TXD0/ADC5)PB0") (type BiDi)) 234 | (pin (num 2) (name "(PCINT7/RXD0/ADC4)PA7") (type BiDi)) 235 | (pin (num 3) (name "(PCINT6/OC1B/ADC3)PA6") (type BiDi)) 236 | (pin (num 4) (name "(PCINT5/OC0B/ADC2)PA5") (type BiDi)) 237 | (pin (num 5) (name "(PCINT4/T0/ADC1)PA4") (type BiDi)) 238 | (pin (num 6) (name "(PCINT3/T1/SNS/ADC0)PA3") (type BiDi)) 239 | (pin (num 7) (name "(PCINT2/AIN1)PA2") (type BiDi)) 240 | (pin (num 8) (name "(PCINT1/AIN0)PA1") (type BiDi)) 241 | (pin (num 9) (name "(PCINT0/AREF)PA0") (type BiDi)) 242 | (pin (num 10) (name GND) (type power_out)) 243 | (pin (num 11) (name VCC) (type power_in)) 244 | (pin (num 12) (name "PC5(XTAL1/CLKI/PCINT17)") (type BiDi)) 245 | (pin (num 13) (name "PC4(XTAL2/PCINT16)") (type BiDi)) 246 | (pin (num 14) (name "PC3(~RESET~/dW/PCINT15)") (type BiDi)) 247 | (pin (num 15) (name "PC2(ADC11/CLKO/INT0/PCINT14)") (type BiDi)) 248 | (pin (num 16) (name "PC1(ADC10/ICP1/SCL/USCK/XCK1/PCINT13)") (type BiDi)) 249 | (pin (num 17) (name "PC0(ADC9/OC0A/XCK0/PCINT12)") (type BiDi)) 250 | (pin (num 18) (name "(PCINT11/OC1A/ADC8)PB3") (type BiDi)) 251 | (pin (num 19) (name "(PCINT10/DO/TXD1/ADC7)PB2") (type BiDi)) 252 | (pin (num 20) (name "(PCINT9/DI/SDA/RXD1/ADC6)PB1") (type BiDi)))) 253 | (libpart (lib atmel) (part AVR-ISP-6) 254 | (description "Standard IDC6 Male Connector, ATMEL ISP 6pin") 255 | (fields 256 | (field (name Reference) CON) 257 | (field (name Value) AVR-ISP-6) 258 | (field (name Footprint) AVR-ISP-6) 259 | (field (name Datasheet) ~)) 260 | (pins 261 | (pin (num 1) (name ~) (type passive)) 262 | (pin (num 2) (name ~) (type passive)) 263 | (pin (num 3) (name ~) (type passive)) 264 | (pin (num 4) (name ~) (type passive)) 265 | (pin (num 5) (name ~) (type passive)) 266 | (pin (num 6) (name ~) (type passive)))) 267 | (libpart (lib interface) (part SP3481CN) 268 | (description "SP3481CN, 3.3V Low Power Half-Duplex RS-485 Transceiver 10Mbps, SO8") 269 | (docs http://www.icbase.com/pdf/SPX/SPX00480106.pdf) 270 | (footprints 271 | (fp SO8*)) 272 | (fields 273 | (field (name Reference) IC) 274 | (field (name Value) SP3481CN) 275 | (field (name Footprint) SO8) 276 | (field (name Datasheet) ~)) 277 | (pins 278 | (pin (num 1) (name RO) (type output)) 279 | (pin (num 2) (name ~RE~) (type input)) 280 | (pin (num 3) (name DE) (type input)) 281 | (pin (num 4) (name DI) (type input)) 282 | (pin (num 5) (name GND) (type power_in)) 283 | (pin (num 6) (name A) (type BiDi)) 284 | (pin (num 7) (name B) (type BiDi)) 285 | (pin (num 8) (name VCC) (type power_in))))) 286 | (libraries 287 | (library (logical device) 288 | (uri /usr/share/kicad/library/device.lib)) 289 | (library (logical conn) 290 | (uri /usr/share/kicad/library/conn.lib)) 291 | (library (logical interface) 292 | (uri /usr/share/kicad/library/interface.lib)) 293 | (library (logical philips) 294 | (uri /usr/share/kicad/library/philips.lib)) 295 | (library (logical atmel) 296 | (uri /usr/share/kicad/library/atmel.lib))) 297 | (nets 298 | (net (code 1) (name /SDA_OUT) 299 | (node (ref R6) (pin 2)) 300 | (node (ref U1) (pin 3)) 301 | (node (ref P1) (pin 3)) 302 | (node (ref U1) (pin 2))) 303 | (net (code 2) (name /SCL_OUT) 304 | (node (ref U1) (pin 5)) 305 | (node (ref U1) (pin 6)) 306 | (node (ref P1) (pin 2)) 307 | (node (ref R7) (pin 2))) 308 | (net (code 3) (name VCC) 309 | (node (ref IC2) (pin 8)) 310 | (node (ref C6) (pin 2)) 311 | (node (ref CON1) (pin 2)) 312 | (node (ref C7) (pin 2)) 313 | (node (ref R2) (pin 1)) 314 | (node (ref R3) (pin 1)) 315 | (node (ref C3) (pin 1)) 316 | (node (ref C5) (pin 2)) 317 | (node (ref U1) (pin 8)) 318 | (node (ref R6) (pin 1)) 319 | (node (ref R7) (pin 1)) 320 | (node (ref P1) (pin 1)) 321 | (node (ref C4) (pin 2)) 322 | (node (ref IC1) (pin 11)) 323 | (node (ref R1) (pin 1))) 324 | (net (code 4) (name "") 325 | (node (ref IC1) (pin 13)) 326 | (node (ref X1) (pin 2)) 327 | (node (ref C1) (pin 2))) 328 | (net (code 5) (name "") 329 | (node (ref X1) (pin 1)) 330 | (node (ref C2) (pin 2)) 331 | (node (ref IC1) (pin 12))) 332 | (net (code 6) (name /RESET) 333 | (node (ref IC1) (pin 14)) 334 | (node (ref SW1) (pin 2)) 335 | (node (ref R1) (pin 2)) 336 | (node (ref CON1) (pin 5))) 337 | (net (code 7) (name "") 338 | (node (ref IC2) (pin 1)) 339 | (node (ref IC1) (pin 2))) 340 | (net (code 8) (name /MISO) 341 | (node (ref CON1) (pin 1)) 342 | (node (ref IC1) (pin 19))) 343 | (net (code 9) (name /SCL) 344 | (node (ref IC1) (pin 16)) 345 | (node (ref CON1) (pin 3)) 346 | (node (ref U1) (pin 7)) 347 | (node (ref R2) (pin 2))) 348 | (net (code 10) (name /SDA) 349 | (node (ref IC1) (pin 20)) 350 | (node (ref U1) (pin 1)) 351 | (node (ref R3) (pin 2)) 352 | (node (ref CON1) (pin 4))) 353 | (net (code 11) (name GND) 354 | (node (ref P1) (pin 4)) 355 | (node (ref C4) (pin 1)) 356 | (node (ref C5) (pin 1)) 357 | (node (ref C6) (pin 1)) 358 | (node (ref IC1) (pin 10)) 359 | (node (ref R4) (pin 2)) 360 | (node (ref CON1) (pin 6)) 361 | (node (ref U1) (pin 4)) 362 | (node (ref C7) (pin 1)) 363 | (node (ref K1) (pin 3)) 364 | (node (ref SW1) (pin 1)) 365 | (node (ref C2) (pin 1)) 366 | (node (ref C1) (pin 1)) 367 | (node (ref C3) (pin 2)) 368 | (node (ref IC2) (pin 5))) 369 | (net (code 12) (name "") 370 | (node (ref R5) (pin 1)) 371 | (node (ref JP1) (pin 1))) 372 | (net (code 13) (name /MODBUS_B) 373 | (node (ref K1) (pin 1)) 374 | (node (ref IC2) (pin 7)) 375 | (node (ref R5) (pin 2))) 376 | (net (code 14) (name /MODBUS_A) 377 | (node (ref K1) (pin 2)) 378 | (node (ref IC2) (pin 6)) 379 | (node (ref JP1) (pin 2))) 380 | (net (code 15) (name "") 381 | (node (ref R4) (pin 1)) 382 | (node (ref IC2) (pin 3)) 383 | (node (ref IC2) (pin 2)) 384 | (node (ref IC1) (pin 3))) 385 | (net (code 16) (name "") 386 | (node (ref IC2) (pin 4)) 387 | (node (ref IC1) (pin 1))) 388 | (net (code 17) (name "") 389 | (node (ref IC1) (pin 7))) 390 | (net (code 18) (name "") 391 | (node (ref IC1) (pin 4))) 392 | (net (code 19) (name "") 393 | (node (ref IC1) (pin 5))) 394 | (net (code 20) (name "") 395 | (node (ref IC1) (pin 6))) 396 | (net (code 21) (name "") 397 | (node (ref IC1) (pin 8))) 398 | (net (code 22) (name "") 399 | (node (ref IC1) (pin 9))) 400 | (net (code 23) (name "") 401 | (node (ref IC1) (pin 15))) 402 | (net (code 24) (name "") 403 | (node (ref IC1) (pin 17))) 404 | (net (code 25) (name "") 405 | (node (ref IC1) (pin 18))))) -------------------------------------------------------------------------------- /firmware/.cproject: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | make 138 | 139 | clean 140 | true 141 | true 142 | true 143 | 144 | 145 | make 146 | 147 | all 148 | true 149 | true 150 | true 151 | 152 | 153 | 154 | 155 | --------------------------------------------------------------------------------