├── .github └── FUNDING.yml ├── Digital_Input_Board ├── Digital Input Board.brd ├── Digital Input Board.pdf ├── Digital Input Board.sch └── eagle.epf ├── Digital_Output_Board ├── Digital Output Board.brd ├── Digital Output Board.pdf ├── Digital Output Board.sch └── eagle.epf ├── Mainboard ├── Mainboard.brd ├── Mainboard.pdf ├── Mainboard.sch └── eagle.epf ├── README.md ├── Software example └── ScrewTighteningRobot │ ├── ScrewTighteningRobot.ino │ ├── cylinderPositionMonitoring.h │ ├── offsets.h │ ├── patterns.h │ └── typeVariables.h ├── Stepper_Board ├── Stepper Board.brd ├── Stepper Board.sch ├── Stepper Board_V1.0.pdf └── eagle.epf ├── bottom view.jpg ├── top view.jpg └── wired.jpg /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: TheDIYGuy999 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: "https://paypal.me/thediyguy999" 13 | -------------------------------------------------------------------------------- /Digital_Input_Board/Digital Input Board.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/Digital_Input_Board/Digital Input Board.pdf -------------------------------------------------------------------------------- /Digital_Input_Board/eagle.epf: -------------------------------------------------------------------------------- 1 | [Eagle] 2 | Version="07 05 00" 3 | Platform="Mac OS X" 4 | Serial="62191E841E-LSR-WLM-1EL" 5 | Globals="Globals" 6 | Desktop="Desktop" 7 | 8 | [Globals] 9 | AutoSaveProject=1 10 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/19inch.lbr" 11 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/40xx.lbr" 12 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/41xx.lbr" 13 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/45xx.lbr" 14 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ac-logic.lbr" 15 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ttl-din.lbr" 16 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-eu.lbr" 17 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-de.lbr" 18 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-us.lbr" 19 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-us.lbr" 20 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/751xx.lbr" 21 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/IQD-Frequency-Products.lbr" 22 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/advanced-test-technologies.lbr" 23 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/agilent-technologies.lbr" 24 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/allegro.lbr" 25 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-II.lbr" 26 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-III.lbr" 27 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-stratix-iv.lbr" 28 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera.lbr" 29 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/am29-memory.lbr" 30 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd-mach.lbr" 31 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd.lbr" 32 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amis.lbr" 33 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/analog-devices.lbr" 34 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/aplus.lbr" 35 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ase.lbr" 36 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/atmel.lbr" 37 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/austriamicrosystems.lbr" 38 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/avago.lbr" 39 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/axis.lbr" 40 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/battery.lbr" 41 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/belton-engineering.lbr" 42 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/burr-brown.lbr" 43 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/busbar.lbr" 44 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/buzzer.lbr" 45 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/c-trimm.lbr" 46 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/california-micro-devices.lbr" 47 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/capacitor-wima.lbr" 48 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/chipcard-siemens.lbr" 49 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cirrus-logic.lbr" 50 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-3m.lbr" 51 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-4ucon.lbr" 52 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-champ.lbr" 53 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-micromatch.lbr" 54 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt.lbr" 55 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt6.lbr" 56 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-quick.lbr" 57 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-te.lbr" 58 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp.lbr" 59 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amphenol.lbr" 60 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-avx.lbr" 61 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-berg.lbr" 62 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-bosch.lbr" 63 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-chipcard-iso7816.lbr" 64 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-coax.lbr" 65 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-commcon.lbr" 66 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-conrad.lbr" 67 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cpci.lbr" 68 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cui.lbr" 69 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cypressindustries.lbr" 70 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-deutsch.lbr" 71 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-dil.lbr" 72 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ebyelectro.lbr" 73 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-elco.lbr" 74 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-erni.lbr" 75 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-faston.lbr" 76 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-fci.lbr" 77 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-friwo.lbr" 78 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-garry.lbr" 79 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-h.lbr" 80 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-ml.lbr" 81 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-v.lbr" 82 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting.lbr" 83 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirose.lbr" 84 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirschmann.lbr" 85 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jack.lbr" 86 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jae.lbr" 87 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jst.lbr" 88 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kycon.lbr" 89 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kyocera-elco.lbr" 90 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lemo.lbr" 91 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-leotronics.lbr" 92 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lsta.lbr" 93 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lstb.lbr" 94 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lumberg.lbr" 95 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ml.lbr" 96 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-molex.lbr" 97 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-neutrik_ag.lbr" 98 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-omron.lbr" 99 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panasonic.lbr" 100 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panduit.lbr" 101 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc.lbr" 102 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc104.lbr" 103 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-254.lbr" 104 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-3.81.lbr" 105 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-350.lbr" 106 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-500.lbr" 107 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-508.lbr" 108 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-762.lbr" 109 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-me_max.lbr" 110 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-mkds_5.lbr" 111 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-smkdsp.lbr" 112 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ptr500.lbr" 113 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pulse.lbr" 114 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-rib.lbr" 115 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-samtec.lbr" 116 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shallin.lbr" 117 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shiua-chyuan.lbr" 118 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stewart.lbr" 119 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stocko.lbr" 120 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-subd.lbr" 121 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-sullinselectronics.lbr" 122 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-thomas-betts.lbr" 123 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tyco.lbr" 124 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tycoelectronics.lbr" 125 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-vg.lbr" 126 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-500.lbr" 127 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-508.lbr" 128 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago.lbr" 129 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago255.lbr" 130 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-weidmueller-sl35.lbr" 131 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wenzhou-yihua.lbr" 132 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-xmultiple.lbr" 133 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-yamaichi.lbr" 134 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/crystal.lbr" 135 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/csr.lbr" 136 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cypress.lbr" 137 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/davicom.lbr" 138 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dc-dc-converter.lbr" 139 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dimensions.lbr" 140 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/diode.lbr" 141 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/discrete.lbr" 142 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-hp.lbr" 143 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-kingbright.lbr" 144 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-lcd.lbr" 145 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/docu-dummy.lbr" 146 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dom-key.lbr" 147 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/eagle-ltspice.lbr" 148 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ecl.lbr" 149 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/em-microelectronic.lbr" 150 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/etx-board.lbr" 151 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/exar.lbr" 152 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fairchild-semic.lbr" 153 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/farnell.lbr" 154 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-hp.lbr" 155 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-siemens.lbr" 156 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fifo.lbr" 157 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/flexipanel.lbr" 158 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fox-electronics.lbr" 159 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/frames.lbr" 160 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/freescale.lbr" 161 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ftdichip.lbr" 162 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fujitsu.lbr" 163 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fuse.lbr" 164 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/gennum.lbr" 165 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/halo-electronics.lbr" 166 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/heatsink.lbr" 167 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holes.lbr" 168 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holtek.lbr" 169 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ic-package.lbr" 170 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-coilcraft.lbr" 171 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-neosid.lbr" 172 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-nkl.lbr" 173 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductors.lbr" 174 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon-tricore.lbr" 175 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon.lbr" 176 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil-techwell.lbr" 177 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil.lbr" 178 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ir.lbr" 179 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/isd.lbr" 180 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/johanson-technology.lbr" 181 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jump-0r-smd.lbr" 182 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jumper.lbr" 183 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lantronix.lbr" 184 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lattice.lbr" 185 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lc-filter.lbr" 186 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-7-segment.lbr" 187 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-citizen-electronics.lbr" 188 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-lumiled.lbr" 189 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led.lbr" 190 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lem.lbr" 191 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear-technology.lbr" 192 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear.lbr" 193 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linx.lbr" 194 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/logo.lbr" 195 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lprs.lbr" 196 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lsi-computer-systems.lbr" 197 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lumiled.lbr" 198 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/marks.lbr" 199 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxim.lbr" 200 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxstream.lbr" 201 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/melexis.lbr" 202 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-hitachi.lbr" 203 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-idt.lbr" 204 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-micron.lbr" 205 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-motorola-dram.lbr" 206 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-nec.lbr" 207 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-samsung.lbr" 208 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-sram.lbr" 209 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory.lbr" 210 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mems.lbr" 211 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micrel.lbr" 212 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-cyrod.lbr" 213 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-fujitsu.lbr" 214 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-harris.lbr" 215 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-hitachi.lbr" 216 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-infineon.lbr" 217 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-intel.lbr" 218 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-mc68000.lbr" 219 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-motorola.lbr" 220 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-philips.lbr" 221 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-renesas.lbr" 222 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-samsung.lbr" 223 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-siemens.lbr" 224 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microchip.lbr" 225 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micron.lbr" 226 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micronas.lbr" 227 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microphon.lbr" 228 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microwave.lbr" 229 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/midori-sensor.lbr" 230 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/minicircuits.lbr" 231 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mitsubishi-semiconductor.lbr" 232 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/motorola-sensor-driver.lbr" 233 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-filter.lbr" 234 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-sensor.lbr" 235 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nanotec.lbr" 236 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-instruments.lbr" 237 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-semiconductor.lbr" 238 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec-lqfp100-pack.lbr" 239 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec.lbr" 240 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nrj-semiconductor.lbr" 241 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/omnivision.lbr" 242 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/on-semiconductor.lbr" 243 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-3000.lbr" 244 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-4000.lbr" 245 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell.lbr" 246 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-micro-linear.lbr" 247 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-trans-siemens.lbr" 248 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-transmittter-hp.lbr" 249 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-vishay.lbr" 250 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/optocoupler.lbr" 251 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pal.lbr" 252 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/philips-semiconductors.lbr" 253 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/photo-elements.lbr" 254 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/piher.lbr" 255 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pinhead.lbr" 256 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plcc-socket.lbr" 257 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pld-intel.lbr" 258 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plxtech.lbr" 259 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-vitrohm.lbr" 260 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-xicor.lbr" 261 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot.lbr" 262 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ptc-ntc.lbr" 263 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/quantum-research-group.lbr" 264 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rcl.lbr" 265 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/recom-international.lbr" 266 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rectifier.lbr" 267 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages-longpad.lbr" 268 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages.lbr" 269 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/relay.lbr" 270 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/renesas.lbr" 271 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-bourns.lbr" 272 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-dil.lbr" 273 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-net.lbr" 274 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-power.lbr" 275 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-ruf.lbr" 276 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-shunt.lbr" 277 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-sil.lbr" 278 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor.lbr" 279 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-micro-devices.lbr" 280 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-solutions.lbr" 281 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rohm.lbr" 282 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/roundsolutions.lbr" 283 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/semicon-smd-ipc.lbr" 284 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-comus-group.lbr" 285 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-heraeus.lbr" 286 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-infratec.lbr" 287 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sharp.lbr" 288 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/silabs.lbr" 289 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sim-technology.lbr" 290 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sipex.lbr" 291 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-ipc.lbr" 292 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-special.lbr" 293 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solomon-systech.lbr" 294 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solpad.lbr" 295 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/speaker.lbr" 296 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special-drill.lbr" 297 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special.lbr" 298 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/st-microelectronics.lbr" 299 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/stm32xx.lbr" 300 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supertex.lbr" 301 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply1.lbr" 302 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply2.lbr" 303 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-alps.lbr" 304 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-coto.lbr" 305 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-dil.lbr" 306 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-misc.lbr" 307 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-omron.lbr" 308 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-raychem.lbr" 309 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-reed.lbr" 310 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch.lbr" 311 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telcom.lbr" 312 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telecontrolli.lbr" 313 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telefunken.lbr" 314 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/testpad.lbr" 315 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas-sn55-sn75.lbr" 316 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas.lbr" 317 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/toshiba.lbr" 318 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/traco-electronic.lbr" 319 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-bei.lbr" 320 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-hammondmfg.lbr" 321 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-siemens.lbr" 322 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-xicon.lbr" 323 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo.lbr" 324 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transformer-pulse.lbr" 325 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-fet.lbr" 326 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-neu-to92.lbr" 327 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-npn.lbr" 328 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-pnp.lbr" 329 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-power.lbr" 330 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-small-signal.lbr" 331 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor.lbr" 332 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/triac.lbr" 333 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trimble.lbr" 334 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/tripas.lbr" 335 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/u-blox.lbr" 336 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/uln-udn.lbr" 337 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg-micrel.lbr" 338 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg.lbr" 339 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/varistor.lbr" 340 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wafer-scale-psd.lbr" 341 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wirepad.lbr" 342 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xicor.lbr" 343 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-virtex-v5.lbr" 344 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc18v.lbr" 345 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc9.lbr" 346 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xcv.lbr" 347 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zetex.lbr" 348 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zilog.lbr" 349 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_custom.lbr" 350 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Aesthetics.lbr" 351 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Electromechanical.lbr" 352 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/con-phoenix-381_l.lbr" 353 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/volks73-molex.lbr" 354 | 355 | [Win_1] 356 | Type="Control Panel" 357 | Loc="1167 73 2208 829" 358 | State=2 359 | Number=0 360 | 361 | [Desktop] 362 | Screen="2560 1440" 363 | Window="Win_1" 364 | -------------------------------------------------------------------------------- /Digital_Output_Board/Digital Output Board.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/Digital_Output_Board/Digital Output Board.pdf -------------------------------------------------------------------------------- /Digital_Output_Board/eagle.epf: -------------------------------------------------------------------------------- 1 | [Eagle] 2 | Version="07 05 00" 3 | Platform="Mac OS X" 4 | Serial="62191E841E-LSR-WLM-1EL" 5 | Globals="Globals" 6 | Desktop="Desktop" 7 | 8 | [Globals] 9 | AutoSaveProject=1 10 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/19inch.lbr" 11 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/40xx.lbr" 12 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/41xx.lbr" 13 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/45xx.lbr" 14 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ac-logic.lbr" 15 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ttl-din.lbr" 16 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-eu.lbr" 17 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-de.lbr" 18 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-us.lbr" 19 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-us.lbr" 20 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/751xx.lbr" 21 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/IQD-Frequency-Products.lbr" 22 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/advanced-test-technologies.lbr" 23 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/agilent-technologies.lbr" 24 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/allegro.lbr" 25 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-II.lbr" 26 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-III.lbr" 27 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-stratix-iv.lbr" 28 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera.lbr" 29 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/am29-memory.lbr" 30 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd-mach.lbr" 31 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd.lbr" 32 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amis.lbr" 33 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/analog-devices.lbr" 34 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/aplus.lbr" 35 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ase.lbr" 36 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/atmel.lbr" 37 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/austriamicrosystems.lbr" 38 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/avago.lbr" 39 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/axis.lbr" 40 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/battery.lbr" 41 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/belton-engineering.lbr" 42 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/burr-brown.lbr" 43 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/busbar.lbr" 44 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/buzzer.lbr" 45 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/c-trimm.lbr" 46 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/california-micro-devices.lbr" 47 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/capacitor-wima.lbr" 48 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/chipcard-siemens.lbr" 49 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cirrus-logic.lbr" 50 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-3m.lbr" 51 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-4ucon.lbr" 52 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-champ.lbr" 53 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-micromatch.lbr" 54 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt.lbr" 55 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt6.lbr" 56 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-quick.lbr" 57 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-te.lbr" 58 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp.lbr" 59 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amphenol.lbr" 60 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-avx.lbr" 61 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-berg.lbr" 62 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-bosch.lbr" 63 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-chipcard-iso7816.lbr" 64 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-coax.lbr" 65 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-commcon.lbr" 66 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-conrad.lbr" 67 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cpci.lbr" 68 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cui.lbr" 69 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cypressindustries.lbr" 70 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-deutsch.lbr" 71 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-dil.lbr" 72 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ebyelectro.lbr" 73 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-elco.lbr" 74 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-erni.lbr" 75 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-faston.lbr" 76 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-fci.lbr" 77 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-friwo.lbr" 78 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-garry.lbr" 79 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-h.lbr" 80 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-ml.lbr" 81 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-v.lbr" 82 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting.lbr" 83 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirose.lbr" 84 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirschmann.lbr" 85 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jack.lbr" 86 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jae.lbr" 87 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jst.lbr" 88 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kycon.lbr" 89 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kyocera-elco.lbr" 90 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lemo.lbr" 91 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-leotronics.lbr" 92 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lsta.lbr" 93 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lstb.lbr" 94 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lumberg.lbr" 95 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ml.lbr" 96 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-molex.lbr" 97 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-neutrik_ag.lbr" 98 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-omron.lbr" 99 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panasonic.lbr" 100 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panduit.lbr" 101 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc.lbr" 102 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc104.lbr" 103 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-254.lbr" 104 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-3.81.lbr" 105 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-350.lbr" 106 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-500.lbr" 107 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-508.lbr" 108 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-762.lbr" 109 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-me_max.lbr" 110 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-mkds_5.lbr" 111 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-smkdsp.lbr" 112 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ptr500.lbr" 113 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pulse.lbr" 114 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-rib.lbr" 115 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-samtec.lbr" 116 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shallin.lbr" 117 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shiua-chyuan.lbr" 118 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stewart.lbr" 119 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stocko.lbr" 120 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-subd.lbr" 121 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-sullinselectronics.lbr" 122 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-thomas-betts.lbr" 123 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tyco.lbr" 124 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tycoelectronics.lbr" 125 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-vg.lbr" 126 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-500.lbr" 127 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-508.lbr" 128 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago.lbr" 129 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago255.lbr" 130 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-weidmueller-sl35.lbr" 131 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wenzhou-yihua.lbr" 132 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-xmultiple.lbr" 133 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-yamaichi.lbr" 134 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/crystal.lbr" 135 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/csr.lbr" 136 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cypress.lbr" 137 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/davicom.lbr" 138 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dc-dc-converter.lbr" 139 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dimensions.lbr" 140 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/diode.lbr" 141 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/discrete.lbr" 142 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-hp.lbr" 143 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-kingbright.lbr" 144 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-lcd.lbr" 145 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/docu-dummy.lbr" 146 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dom-key.lbr" 147 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/eagle-ltspice.lbr" 148 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ecl.lbr" 149 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/em-microelectronic.lbr" 150 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/etx-board.lbr" 151 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/exar.lbr" 152 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fairchild-semic.lbr" 153 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/farnell.lbr" 154 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-hp.lbr" 155 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-siemens.lbr" 156 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fifo.lbr" 157 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/flexipanel.lbr" 158 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fox-electronics.lbr" 159 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/frames.lbr" 160 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/freescale.lbr" 161 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ftdichip.lbr" 162 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fujitsu.lbr" 163 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fuse.lbr" 164 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/gennum.lbr" 165 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/halo-electronics.lbr" 166 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/heatsink.lbr" 167 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holes.lbr" 168 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holtek.lbr" 169 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ic-package.lbr" 170 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-coilcraft.lbr" 171 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-neosid.lbr" 172 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-nkl.lbr" 173 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductors.lbr" 174 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon-tricore.lbr" 175 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon.lbr" 176 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil-techwell.lbr" 177 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil.lbr" 178 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ir.lbr" 179 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/isd.lbr" 180 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/johanson-technology.lbr" 181 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jump-0r-smd.lbr" 182 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jumper.lbr" 183 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lantronix.lbr" 184 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lattice.lbr" 185 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lc-filter.lbr" 186 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-7-segment.lbr" 187 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-citizen-electronics.lbr" 188 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-lumiled.lbr" 189 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led.lbr" 190 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lem.lbr" 191 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear-technology.lbr" 192 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear.lbr" 193 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linx.lbr" 194 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/logo.lbr" 195 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lprs.lbr" 196 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lsi-computer-systems.lbr" 197 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lumiled.lbr" 198 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/marks.lbr" 199 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxim.lbr" 200 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxstream.lbr" 201 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/melexis.lbr" 202 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-hitachi.lbr" 203 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-idt.lbr" 204 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-micron.lbr" 205 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-motorola-dram.lbr" 206 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-nec.lbr" 207 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-samsung.lbr" 208 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-sram.lbr" 209 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory.lbr" 210 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mems.lbr" 211 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micrel.lbr" 212 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-cyrod.lbr" 213 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-fujitsu.lbr" 214 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-harris.lbr" 215 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-hitachi.lbr" 216 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-infineon.lbr" 217 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-intel.lbr" 218 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-mc68000.lbr" 219 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-motorola.lbr" 220 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-philips.lbr" 221 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-renesas.lbr" 222 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-samsung.lbr" 223 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-siemens.lbr" 224 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microchip.lbr" 225 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micron.lbr" 226 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micronas.lbr" 227 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microphon.lbr" 228 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microwave.lbr" 229 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/midori-sensor.lbr" 230 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/minicircuits.lbr" 231 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mitsubishi-semiconductor.lbr" 232 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/motorola-sensor-driver.lbr" 233 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-filter.lbr" 234 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-sensor.lbr" 235 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nanotec.lbr" 236 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-instruments.lbr" 237 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-semiconductor.lbr" 238 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec-lqfp100-pack.lbr" 239 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec.lbr" 240 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nrj-semiconductor.lbr" 241 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/omnivision.lbr" 242 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/on-semiconductor.lbr" 243 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-3000.lbr" 244 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-4000.lbr" 245 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell.lbr" 246 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-micro-linear.lbr" 247 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-trans-siemens.lbr" 248 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-transmittter-hp.lbr" 249 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-vishay.lbr" 250 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/optocoupler.lbr" 251 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pal.lbr" 252 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/philips-semiconductors.lbr" 253 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/photo-elements.lbr" 254 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/piher.lbr" 255 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pinhead.lbr" 256 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plcc-socket.lbr" 257 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pld-intel.lbr" 258 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plxtech.lbr" 259 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-vitrohm.lbr" 260 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-xicor.lbr" 261 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot.lbr" 262 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ptc-ntc.lbr" 263 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/quantum-research-group.lbr" 264 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rcl.lbr" 265 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/recom-international.lbr" 266 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rectifier.lbr" 267 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages-longpad.lbr" 268 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages.lbr" 269 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/relay.lbr" 270 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/renesas.lbr" 271 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-bourns.lbr" 272 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-dil.lbr" 273 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-net.lbr" 274 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-power.lbr" 275 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-ruf.lbr" 276 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-shunt.lbr" 277 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-sil.lbr" 278 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor.lbr" 279 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-micro-devices.lbr" 280 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-solutions.lbr" 281 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rohm.lbr" 282 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/roundsolutions.lbr" 283 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/semicon-smd-ipc.lbr" 284 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-comus-group.lbr" 285 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-heraeus.lbr" 286 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-infratec.lbr" 287 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sharp.lbr" 288 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/silabs.lbr" 289 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sim-technology.lbr" 290 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sipex.lbr" 291 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-ipc.lbr" 292 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-special.lbr" 293 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solomon-systech.lbr" 294 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solpad.lbr" 295 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/speaker.lbr" 296 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special-drill.lbr" 297 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special.lbr" 298 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/st-microelectronics.lbr" 299 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/stm32xx.lbr" 300 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supertex.lbr" 301 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply1.lbr" 302 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply2.lbr" 303 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-alps.lbr" 304 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-coto.lbr" 305 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-dil.lbr" 306 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-misc.lbr" 307 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-omron.lbr" 308 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-raychem.lbr" 309 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-reed.lbr" 310 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch.lbr" 311 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telcom.lbr" 312 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telecontrolli.lbr" 313 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telefunken.lbr" 314 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/testpad.lbr" 315 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas-sn55-sn75.lbr" 316 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas.lbr" 317 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/toshiba.lbr" 318 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/traco-electronic.lbr" 319 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-bei.lbr" 320 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-hammondmfg.lbr" 321 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-siemens.lbr" 322 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-xicon.lbr" 323 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo.lbr" 324 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transformer-pulse.lbr" 325 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-fet.lbr" 326 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-neu-to92.lbr" 327 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-npn.lbr" 328 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-pnp.lbr" 329 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-power.lbr" 330 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-small-signal.lbr" 331 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor.lbr" 332 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/triac.lbr" 333 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trimble.lbr" 334 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/tripas.lbr" 335 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/u-blox.lbr" 336 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/uln-udn.lbr" 337 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg-micrel.lbr" 338 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg.lbr" 339 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/varistor.lbr" 340 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wafer-scale-psd.lbr" 341 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wirepad.lbr" 342 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xicor.lbr" 343 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-virtex-v5.lbr" 344 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc18v.lbr" 345 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc9.lbr" 346 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xcv.lbr" 347 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zetex.lbr" 348 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zilog.lbr" 349 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8825_IC.lbr" 350 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8835.lbr" 351 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_custom.lbr" 352 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Aesthetics.lbr" 353 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Electromechanical.lbr" 354 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/alvarop.lbr" 355 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/con-phoenix-381_l.lbr" 356 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/reprap.lbr" 357 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/volks73-molex.lbr" 358 | 359 | [Win_1] 360 | Type="Control Panel" 361 | Loc="1282 41 2323 797" 362 | State=2 363 | Number=0 364 | 365 | [Desktop] 366 | Screen="2560 1440" 367 | Window="Win_1" 368 | -------------------------------------------------------------------------------- /Mainboard/Mainboard.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/Mainboard/Mainboard.pdf -------------------------------------------------------------------------------- /Mainboard/eagle.epf: -------------------------------------------------------------------------------- 1 | [Eagle] 2 | Version="07 05 00" 3 | Platform="Mac OS X" 4 | Serial="62191E841E-LSR-WLM-1EL" 5 | Globals="Globals" 6 | Desktop="Desktop" 7 | 8 | [Globals] 9 | AutoSaveProject=1 10 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/19inch.lbr" 11 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/40xx.lbr" 12 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/41xx.lbr" 13 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/45xx.lbr" 14 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ac-logic.lbr" 15 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ttl-din.lbr" 16 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-eu.lbr" 17 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-de.lbr" 18 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-us.lbr" 19 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-us.lbr" 20 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/751xx.lbr" 21 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/IQD-Frequency-Products.lbr" 22 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/advanced-test-technologies.lbr" 23 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/agilent-technologies.lbr" 24 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/allegro.lbr" 25 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-II.lbr" 26 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-III.lbr" 27 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-stratix-iv.lbr" 28 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera.lbr" 29 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/am29-memory.lbr" 30 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd-mach.lbr" 31 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd.lbr" 32 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amis.lbr" 33 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/analog-devices.lbr" 34 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/aplus.lbr" 35 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ase.lbr" 36 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/atmel.lbr" 37 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/austriamicrosystems.lbr" 38 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/avago.lbr" 39 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/axis.lbr" 40 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/battery.lbr" 41 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/belton-engineering.lbr" 42 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/burr-brown.lbr" 43 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/busbar.lbr" 44 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/buzzer.lbr" 45 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/c-trimm.lbr" 46 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/california-micro-devices.lbr" 47 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/capacitor-wima.lbr" 48 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/chipcard-siemens.lbr" 49 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cirrus-logic.lbr" 50 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-3m.lbr" 51 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-4ucon.lbr" 52 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-champ.lbr" 53 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-micromatch.lbr" 54 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt.lbr" 55 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt6.lbr" 56 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-quick.lbr" 57 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-te.lbr" 58 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp.lbr" 59 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amphenol.lbr" 60 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-avx.lbr" 61 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-berg.lbr" 62 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-bosch.lbr" 63 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-chipcard-iso7816.lbr" 64 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-coax.lbr" 65 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-commcon.lbr" 66 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-conrad.lbr" 67 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cpci.lbr" 68 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cui.lbr" 69 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cypressindustries.lbr" 70 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-deutsch.lbr" 71 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-dil.lbr" 72 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ebyelectro.lbr" 73 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-elco.lbr" 74 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-erni.lbr" 75 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-faston.lbr" 76 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-fci.lbr" 77 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-friwo.lbr" 78 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-garry.lbr" 79 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-h.lbr" 80 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-ml.lbr" 81 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-v.lbr" 82 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting.lbr" 83 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirose.lbr" 84 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirschmann.lbr" 85 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jack.lbr" 86 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jae.lbr" 87 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jst.lbr" 88 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kycon.lbr" 89 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kyocera-elco.lbr" 90 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lemo.lbr" 91 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-leotronics.lbr" 92 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lsta.lbr" 93 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lstb.lbr" 94 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lumberg.lbr" 95 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ml.lbr" 96 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-molex.lbr" 97 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-neutrik_ag.lbr" 98 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-omron.lbr" 99 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panasonic.lbr" 100 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panduit.lbr" 101 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc.lbr" 102 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc104.lbr" 103 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-254.lbr" 104 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-3.81.lbr" 105 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-350.lbr" 106 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-500.lbr" 107 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-508.lbr" 108 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-762.lbr" 109 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-me_max.lbr" 110 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-mkds_5.lbr" 111 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-smkdsp.lbr" 112 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ptr500.lbr" 113 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pulse.lbr" 114 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-rib.lbr" 115 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-samtec.lbr" 116 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shallin.lbr" 117 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shiua-chyuan.lbr" 118 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stewart.lbr" 119 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stocko.lbr" 120 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-subd.lbr" 121 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-sullinselectronics.lbr" 122 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-thomas-betts.lbr" 123 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tyco.lbr" 124 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tycoelectronics.lbr" 125 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-vg.lbr" 126 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-500.lbr" 127 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-508.lbr" 128 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago.lbr" 129 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago255.lbr" 130 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-weidmueller-sl35.lbr" 131 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wenzhou-yihua.lbr" 132 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-xmultiple.lbr" 133 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-yamaichi.lbr" 134 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/crystal.lbr" 135 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/csr.lbr" 136 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cypress.lbr" 137 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/davicom.lbr" 138 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dc-dc-converter.lbr" 139 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dimensions.lbr" 140 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/diode.lbr" 141 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/discrete.lbr" 142 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-hp.lbr" 143 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-kingbright.lbr" 144 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-lcd.lbr" 145 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/docu-dummy.lbr" 146 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dom-key.lbr" 147 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/eagle-ltspice.lbr" 148 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ecl.lbr" 149 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/em-microelectronic.lbr" 150 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/etx-board.lbr" 151 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/exar.lbr" 152 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fairchild-semic.lbr" 153 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/farnell.lbr" 154 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-hp.lbr" 155 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-siemens.lbr" 156 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fifo.lbr" 157 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/flexipanel.lbr" 158 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fox-electronics.lbr" 159 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/frames.lbr" 160 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/freescale.lbr" 161 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ftdichip.lbr" 162 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fujitsu.lbr" 163 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fuse.lbr" 164 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/gennum.lbr" 165 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/halo-electronics.lbr" 166 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/heatsink.lbr" 167 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holes.lbr" 168 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holtek.lbr" 169 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ic-package.lbr" 170 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-coilcraft.lbr" 171 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-neosid.lbr" 172 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-nkl.lbr" 173 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductors.lbr" 174 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon-tricore.lbr" 175 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon.lbr" 176 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil-techwell.lbr" 177 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil.lbr" 178 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ir.lbr" 179 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/isd.lbr" 180 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/johanson-technology.lbr" 181 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jump-0r-smd.lbr" 182 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jumper.lbr" 183 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lantronix.lbr" 184 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lattice.lbr" 185 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lc-filter.lbr" 186 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-7-segment.lbr" 187 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-citizen-electronics.lbr" 188 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-lumiled.lbr" 189 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led.lbr" 190 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lem.lbr" 191 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear-technology.lbr" 192 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear.lbr" 193 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linx.lbr" 194 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/logo.lbr" 195 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lprs.lbr" 196 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lsi-computer-systems.lbr" 197 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lumiled.lbr" 198 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/marks.lbr" 199 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxim.lbr" 200 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxstream.lbr" 201 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/melexis.lbr" 202 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-hitachi.lbr" 203 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-idt.lbr" 204 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-micron.lbr" 205 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-motorola-dram.lbr" 206 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-nec.lbr" 207 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-samsung.lbr" 208 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-sram.lbr" 209 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory.lbr" 210 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mems.lbr" 211 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micrel.lbr" 212 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-cyrod.lbr" 213 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-fujitsu.lbr" 214 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-harris.lbr" 215 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-hitachi.lbr" 216 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-infineon.lbr" 217 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-intel.lbr" 218 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-mc68000.lbr" 219 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-motorola.lbr" 220 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-philips.lbr" 221 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-renesas.lbr" 222 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-samsung.lbr" 223 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-siemens.lbr" 224 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microchip.lbr" 225 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micron.lbr" 226 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micronas.lbr" 227 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microphon.lbr" 228 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microwave.lbr" 229 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/midori-sensor.lbr" 230 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/minicircuits.lbr" 231 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mitsubishi-semiconductor.lbr" 232 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/motorola-sensor-driver.lbr" 233 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-filter.lbr" 234 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-sensor.lbr" 235 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nanotec.lbr" 236 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-instruments.lbr" 237 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-semiconductor.lbr" 238 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec-lqfp100-pack.lbr" 239 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec.lbr" 240 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nrj-semiconductor.lbr" 241 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/omnivision.lbr" 242 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/on-semiconductor.lbr" 243 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-3000.lbr" 244 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-4000.lbr" 245 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell.lbr" 246 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-micro-linear.lbr" 247 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-trans-siemens.lbr" 248 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-transmittter-hp.lbr" 249 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-vishay.lbr" 250 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/optocoupler.lbr" 251 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pal.lbr" 252 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/philips-semiconductors.lbr" 253 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/photo-elements.lbr" 254 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/piher.lbr" 255 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pinhead.lbr" 256 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plcc-socket.lbr" 257 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pld-intel.lbr" 258 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plxtech.lbr" 259 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-vitrohm.lbr" 260 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-xicor.lbr" 261 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot.lbr" 262 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ptc-ntc.lbr" 263 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/quantum-research-group.lbr" 264 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rcl.lbr" 265 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/recom-international.lbr" 266 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rectifier.lbr" 267 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages-longpad.lbr" 268 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages.lbr" 269 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/relay.lbr" 270 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/renesas.lbr" 271 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-bourns.lbr" 272 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-dil.lbr" 273 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-net.lbr" 274 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-power.lbr" 275 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-ruf.lbr" 276 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-shunt.lbr" 277 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-sil.lbr" 278 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor.lbr" 279 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-micro-devices.lbr" 280 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-solutions.lbr" 281 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rohm.lbr" 282 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/roundsolutions.lbr" 283 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/semicon-smd-ipc.lbr" 284 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-comus-group.lbr" 285 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-heraeus.lbr" 286 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-infratec.lbr" 287 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sharp.lbr" 288 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/silabs.lbr" 289 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sim-technology.lbr" 290 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sipex.lbr" 291 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-ipc.lbr" 292 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-special.lbr" 293 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solomon-systech.lbr" 294 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solpad.lbr" 295 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/speaker.lbr" 296 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special-drill.lbr" 297 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special.lbr" 298 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/st-microelectronics.lbr" 299 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/stm32xx.lbr" 300 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supertex.lbr" 301 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply1.lbr" 302 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply2.lbr" 303 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-alps.lbr" 304 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-coto.lbr" 305 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-dil.lbr" 306 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-misc.lbr" 307 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-omron.lbr" 308 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-raychem.lbr" 309 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-reed.lbr" 310 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch.lbr" 311 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telcom.lbr" 312 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telecontrolli.lbr" 313 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telefunken.lbr" 314 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/testpad.lbr" 315 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas-sn55-sn75.lbr" 316 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas.lbr" 317 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/toshiba.lbr" 318 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/traco-electronic.lbr" 319 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-bei.lbr" 320 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-hammondmfg.lbr" 321 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-siemens.lbr" 322 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-xicon.lbr" 323 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo.lbr" 324 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transformer-pulse.lbr" 325 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-fet.lbr" 326 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-neu-to92.lbr" 327 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-npn.lbr" 328 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-pnp.lbr" 329 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-power.lbr" 330 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-small-signal.lbr" 331 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor.lbr" 332 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/triac.lbr" 333 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trimble.lbr" 334 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/tripas.lbr" 335 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/u-blox.lbr" 336 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/uln-udn.lbr" 337 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg-micrel.lbr" 338 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg.lbr" 339 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/varistor.lbr" 340 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wafer-scale-psd.lbr" 341 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wirepad.lbr" 342 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xicor.lbr" 343 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-virtex-v5.lbr" 344 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc18v.lbr" 345 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc9.lbr" 346 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xcv.lbr" 347 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zetex.lbr" 348 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zilog.lbr" 349 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8825_IC.lbr" 350 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8835.lbr" 351 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_con-phoenix-381_l.lbr" 352 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_custom.lbr" 353 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_transistor-power.lbr" 354 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_triac.lbr" 355 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Aesthetics.lbr" 356 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Connectors.lbr" 357 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Electromechanical.lbr" 358 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/adafruit.lbr" 359 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/alvarop.lbr" 360 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/con-phoenix-381_l.lbr" 361 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/reprap.lbr" 362 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/volks73-molex.lbr" 363 | 364 | [Win_1] 365 | Type="Control Panel" 366 | Loc="497 97 1977 1223" 367 | State=2 368 | Number=0 369 | 370 | [Desktop] 371 | Screen="2560 1440" 372 | Window="Win_1" 373 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This is an Arduino based, modular Industrial PLC 2 | 3 | ## I have designed this PLC back in 2016. It is currently in use in an industrial screw tightening robot: 4 | - 4 stepper motors for X, Y, Z axes and for screw tightening 5 | - Matrix keyboard 6 | - I2C LCD 7 | - Digital I/O in use for pneumatic screw feeding system, buttons and reference switches 8 | 9 | ## Features: 10 | - Works wit an Arduino MEGA or DUE 11 | - DO board with 16 24V, 500mA PNP digital outputs, optoinsulated, short circuit protected @ about 900mA 12 | - DI board with 16 24V PNP digital inputs, optoinsulated 13 | - Stepper board for 4 stepper motors, torque adjustable via PWM 14 | - Slot for communication board (I2C, CAN, SPI, 2x Serial) 15 | - Slot for analog board (Analog in, PWM, DAC, I2C) 16 | 17 | ## This repo contains: 18 | - Eagle schematics 19 | - Eagle board files 20 | - PDF schematics 21 | - The analog and communication boards were made out of perfboard and are NOT included. Maybe someone other is interested in adding them. 22 | 23 | ## Pictures: 24 | ![](https://github.com/TheDIYGuy999/Mega_PLC/blob/master/bottom%20view.jpg) 25 | 26 | ![](https://github.com/TheDIYGuy999/Mega_PLC/blob/master/top%20view.jpg) 27 | 28 | ![](https://github.com/TheDIYGuy999/Mega_PLC/blob/master/wired.jpg) 29 | 30 | ## Videos: 31 | - I/O boards: https://www.youtube.com/watch?v=W2pYYh6aUXc 32 | - First tepper tests: https://www.youtube.com/watch?v=gJDdZBuH5Kc 33 | 34 | (c) 2016 TheDIYGuy999 35 | -------------------------------------------------------------------------------- /Software example/ScrewTighteningRobot/ScrewTighteningRobot.ino: -------------------------------------------------------------------------------- 1 | // 2 | // ======================================================================================================= 3 | // PROJECT DESCRIPTION 4 | // ======================================================================================================= 5 | // 6 | // Screw tightening robot with 16x2 I2C display, automatic scew feeder 7 | 8 | // Arduino Board: Due 9 | // Mainmoard: Mega PLC Mainboard V1.0 10 | // Digital input board: Mega PLC Digital Input Board V1.0 11 | // Digital output board: Mega PLC Digital Output Board V1.0 12 | // Stepper drivers: Watterott Silent Step Stick with TMC2100 13 | // Stepper motors: NEMA 17 "High Torque" from fredee.ch 0.65Nm @ 1.5A, 4V 14 | 15 | // Mega PLC supplier: TheDIYGuy999: https://github.com/TheDIYGuy999/Mega_PLC 16 | 17 | // 18 | // ======================================================================================================= 19 | // LIBRARIES 20 | // ======================================================================================================= 21 | // 22 | 23 | // STEPPER 24 | #include // http://www.airspayce.com/mikem/arduino/AccelStepper/ 25 | 26 | // DISPLAY 27 | #include // I2C library 28 | #include // https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library 29 | 30 | // KEYPAD 31 | #include // http://playground.arduino.cc/Code/Keypad 32 | 33 | // SPI BUS FOR SD CARD 34 | #include 35 | #include 36 | 37 | // TIMER 38 | #include // https://github.com/jfturcot/SimpleTimer 39 | 40 | // Cylinder monitoring 41 | #include "cylinderPositionMonitoring.h" 42 | 43 | // 44 | // ======================================================================================================= 45 | // BUILD OPTIONS (comment out unneeded options) 46 | // ======================================================================================================= 47 | // 48 | 49 | //#define DEBUG // if not commented out, Serial.print() is active! For debugging only!! 50 | 51 | // 52 | // ======================================================================================================= 53 | // PIN ASSIGNMENTS & GLOBAL VARIABLES 54 | // ======================================================================================================= 55 | // 56 | 57 | // 58 | // Digital 0, 1, Shared as serial pins (Serial1) 59 | // Digital 2 - 13, General Purpose 60 | // Digital 3, 5, 6, 9, 10, 11, and 13 - PWM 61 | // Digital 11 - 13 Excluded on Pro Micro 62 | // Digital 13 has (not Leo) an LED and resistor attached to it 63 | // Digital 14 - 16, Shared with an SPI bus 64 | // Digital 17 - Doubles and RX LED 65 | // Digital Pins can sink 40ma, recommended 470 ohm resistor 66 | // Analog Inputs: A0-A3, Pro Micro excludes A4, A5 67 | // Analog Inputs: A6-A11 (on digital pins 4, 6, 8, 9, 10, and 12) 68 | // Analog Pins can be used as digital ( refer to them as A0, A1, ...) 69 | // 70 | 71 | byte startButtonState; 72 | 73 | // macro for detection of rising edge and debouncing 74 | /*the state argument (which must be a variable) records the current and the last 3 reads 75 | by shifting one bit to the left at each read and bitwise anding with 15 (=0b1111). 76 | If the value is 7(=0b0111) we have one raising edge followed by 3 consecutive 1's. 77 | That would qualify as a debounced raising edge*/ 78 | #define DRE(signal, state) (state=(state<<1)|(signal&1)&15)==7 79 | 80 | // LCD Display------------------------------------------------------------------------- 81 | 82 | // set the LCD address to 0x27 for a 16 chars and 2 line display 83 | LiquidCrystal_I2C lcd(0x27, 16, 2); 84 | 85 | // Keypad------------------------------------------------------------------------------ 86 | 87 | const byte ROWS = 4; //four rows (4 Zeilen) 88 | const byte COLS = 4; //four columns (4 Spalten) 89 | //define the cymbols on the buttons of the keypads 90 | char keys[ROWS][COLS] = { 91 | {'1', '2', '3', 'A'}, 92 | {'4', '5', '6', 'B'}, 93 | {'7', '8', '9', 'C'}, 94 | {'*', '0', '#', 'D'} 95 | }; 96 | byte rowPins[ROWS] = {A11, A10, A9, A8}; //connect to the row pinouts of the keypad 97 | byte colPins[COLS] = {A7, A6, A5, A4}; //connect to the column pinouts of the keypad 98 | 99 | //initialize an instance of class NewKeypad 100 | Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); 101 | int value = 0; 102 | 103 | // Chip select pin for SD card reader----------------------------------------------------- 104 | const int SD_CS = DAC1; // A13 on the mainboard 105 | 106 | // General purpose 24V DC Digital Inputs (on the "Digital Input Board")-------------------- 107 | const int DI_38_X_REF_SWITCH = 38; // X, Y, Z Reference switches (in parallel) 108 | const int DI_39_Y_REF_SWITCH = 39; 109 | const int DI_40_Z_REF_SWITCH = 40; 110 | const int DI_41_SPINDLE_ROTATION = 41; 111 | const int DI_42_SCREW_READY = 42; // Screw present in pawl 112 | const int DI_43_SCREW_IN_SEPARATOR = 43; // Screw present in separator (rosa) 113 | const int DI_44_SEPARATOR_IN_STARTING_POSITION = 44; // Separator in incoming position (rot) 114 | const int DI_45_SEPARATOR_IN_WORKING_POSITION = 45; // Separator in output position (grau-rosa) 115 | const int DI_46_PIN = 46; 116 | const int DI_47_PIN = 47; 117 | const int DI_48_PIN = 48; 118 | const int DI_49_PIN = 49; 119 | const int DI_50_PIN = 50; 120 | const int DI_51_PIN = 51; 121 | const int DI_52_EMERGENCY_BUTTON = 52; // Emergency Stop Button 122 | const int DI_53_START_BUTTON = 53; // Start Button 123 | 124 | // General purpose 24V DC Digital Outputs (on the "Digital Output Board")-------------------- 125 | const int DO_22_SCREW_SEPARATOR = 22; // Separator Cylinder 126 | const int DO_23_SCREW_INJECTOR = 23; // Srewc injector air 127 | const int DO_24_BLOW_OFF_NOZZLE = 24; // Blow off nozzle in screw feeder 128 | const int DO_25_PIN = 25; // Res. Output 129 | const int DO_26_SCREW_FEEDER = 26; // Screw feeder 130 | const int DO_27_VACUUM = 27; // Vacuum for Screw 131 | const int DO_28_RELEASE = 28; // Screw releasing air 132 | const int DO_29_PIN = 29; 133 | const int DO_30_PIN = 30; 134 | const int DO_31_PIN = 31; 135 | const int DO_32_PIN = 32; 136 | const int DO_33_PIN = 33; 137 | const int DO_34_PIN = 34; 138 | const int DO_35_PIN = 35; 139 | const int DO_36_PIN = 36; 140 | const int DO_37_PIN = 37; 141 | 142 | // Stepper Pins (on the "Stepper Board")--------------------------------------------------- 143 | // The X stepper pins 144 | const int STEPPER_X_STEP_PIN = 13; 145 | const int STEPPER_X_DIR_PIN = 14; 146 | const int STEPPER_X_CURRENT_PIN = 5; 147 | 148 | // The Y stepper pins 149 | const int STEPPER_Y_STEP_PIN = 12; 150 | const int STEPPER_Y_DIR_PIN = 15; 151 | const int STEPPER_Y_CURRENT_PIN = 4; 152 | 153 | // The Z stepper pins 154 | const int STEPPER_Z_STEP_PIN = 11; 155 | const int STEPPER_Z_DIR_PIN = 16; 156 | const int STEPPER_Z_CURRENT_PIN = 3; 157 | 158 | // The A stepper pins 159 | const int STEPPER_A_STEP_PIN = 10; 160 | const int STEPPER_A_DIR_PIN = 17; 161 | const int STEPPER_A_CURRENT_PIN = 2; 162 | 163 | // Define some steppers and the pins they will use 164 | AccelStepper stepperX(AccelStepper::DRIVER, STEPPER_X_STEP_PIN, STEPPER_X_DIR_PIN); 165 | AccelStepper stepperY(AccelStepper::DRIVER, STEPPER_Y_STEP_PIN, STEPPER_Y_DIR_PIN); 166 | AccelStepper stepperZ(AccelStepper::DRIVER, STEPPER_Z_STEP_PIN, STEPPER_Z_DIR_PIN); 167 | AccelStepper stepperA(AccelStepper::DRIVER, STEPPER_A_STEP_PIN, STEPPER_A_DIR_PIN); 168 | 169 | // Axis calibration (stepper motor "steps" per mm) 170 | float stepsPerMmX = 25; // 12.5 for GT2, Z16 (10.2mm pitch diameter) and 1/2 step (400 steps/Rev.) 171 | float stepsPerMmY = 25; // 25 for 1/4 step (800 steps/Rev.) 172 | float stepsPerMmZ = 25; 173 | float stepsPerRoundA = 800; 174 | 175 | // Accelerations for normal operation 176 | float accelX = 40000.0; //40000 177 | float accelY = 40000.0; //40000 178 | float accelZ = 40000.0; // Z & A axis acceleration MUST BE IDENTICAL! 179 | float accelA = 40000.0; // about 40000 for good screwing results 180 | 181 | // X, Y, Z axis current 182 | int currentX = 100; 183 | int currentY = 100; 184 | int currentZ = 150; 185 | 186 | // A axis torque (current) calibration 187 | // PWM signal, 255 = always on, 127 = 50%, filtered with RC-filter for analog voltage signal to TMC2100 driver 188 | int currentA = 150; // 150 = 30Ncm @ 400 RPM (with TMC2100) 189 | 190 | // Define Z Axis variables 191 | float zError; 192 | float zRetract; 193 | float zSuck; 194 | float zScrewBegin; 195 | float zScrewingDepth; // how deep is the screw screwed in (+ about 3mm reserve)? 196 | 197 | // Define screw pitch 198 | float screwPitch; 199 | 200 | // Define screw RPM 201 | int screwRpm; 202 | boolean spindleWasAtFullRpm = false; 203 | boolean spindleStalled = false; 204 | boolean stallDetectionActive = false; 205 | 206 | // Define screw feeder variables 207 | boolean screwRequest = false; 208 | boolean screwIsFeeding = false; 209 | 210 | // Define max. stepper speeds 211 | float homingSpeed = 1500; 212 | float homingRetractSpeed = 200; 213 | float maxSpeed = 7000; // 7000 214 | float maxSpeedSucked = 5000; 215 | 216 | // The currerntly processed screw in the pattern 217 | unsigned int screwNo = 0; 218 | 219 | // How many screws are in the selected pattern? 220 | unsigned int numberOfScrews; 221 | 222 | // The currently active program 223 | unsigned int activeProgram = 1; 224 | 225 | // The max. number of programs 226 | const unsigned int numberOfPrograms = 20; 227 | 228 | // Has the operation mode (Run, Stop etc.) changed? 229 | boolean modeDidChange = false; 230 | 231 | // The measured spindle rotation count 232 | volatile long spindleDegreesRaw = 0; // Sensor state changes (impulses) 233 | volatile long spindleRpmRaw = 0; // "volatile" is required because of the interrupt function! 234 | float spindleDegrees = 0; // in degrees 235 | 236 | // Tolerances for screwing angle monitoring 237 | int spindleDegreesMin = 0; // in degrees 238 | int spindleDegreesMax = 0; // in degrees 239 | boolean error = false; 240 | unsigned long rpm = 0; // the measured live spindle RPM 241 | 242 | unsigned int operationMode = 1; // operationMode: 0 = Run, 1 = Stop, 2 = Reset, 3 = Program Select 4 = Axis homing 243 | 244 | boolean ProgNoInput = false; 245 | 246 | // Was the emegrency stop button pressed? 247 | boolean emergencyWasPressed = false; 248 | 249 | // Create cylinder position monitoring objects (one for each cylinder) 250 | cylinderPosition separatorMonitoring; 251 | 252 | // the currently displayed error message number 253 | int currentMessage = 999; 254 | 255 | boolean repeated = false; // Was the screw injection pulse already repeated? 256 | 257 | // Timer 258 | SimpleTimer timer; 259 | 260 | // 261 | // ======================================================================================================= 262 | // TABS FOR SCREW PATTERN SPECIFICATION (Edit them for implementing new types) 263 | // ======================================================================================================= 264 | // 265 | 266 | #include "patterns.h" // "Screw patterns" 267 | #include "typeVariables.h" // Z axis heihgts, spindle RPM, screw pitch etc. 268 | #include "offsets.h" // Axis offsets for each screw pattern 269 | 270 | // 271 | // ======================================================================================================= 272 | // READ GENERAL PURPOSE INPUTS 273 | // ======================================================================================================= 274 | // 275 | 276 | boolean refSwitchX() { 277 | return digitalRead(DI_38_X_REF_SWITCH); 278 | } 279 | 280 | boolean refSwitchY() { 281 | return digitalRead(DI_39_Y_REF_SWITCH); 282 | } 283 | 284 | boolean refSwitchZ() { 285 | return digitalRead(DI_40_Z_REF_SWITCH); 286 | } 287 | 288 | // Pin 41 is an interrupt-Pin 289 | 290 | boolean screwReady() { 291 | return digitalRead(DI_42_SCREW_READY); 292 | } 293 | 294 | boolean screwInSeparator() { 295 | return digitalRead(DI_43_SCREW_IN_SEPARATOR); 296 | } 297 | 298 | boolean separatorInStartingPosition() { 299 | return digitalRead(DI_44_SEPARATOR_IN_STARTING_POSITION); 300 | } 301 | 302 | boolean separatorInWorkingPosition() { 303 | return digitalRead(DI_45_SEPARATOR_IN_WORKING_POSITION); 304 | } 305 | 306 | boolean emergencyStop() { 307 | return digitalRead(DI_52_EMERGENCY_BUTTON); 308 | } 309 | 310 | 311 | // 312 | // ======================================================================================================= 313 | // MAIN ARDUINO SETUP (1x during startup) 314 | // ======================================================================================================= 315 | // 316 | 317 | void setup() 318 | { 319 | 320 | // I2C initialization------------------------------------- 321 | Wire.setClock(100000); // Set 100kHz I2C clock for the PCF8574 322 | 323 | // Serial initialization---------------------------------- 324 | //#ifdef DEBUG 325 | Serial.begin(115200); 326 | //#endif 327 | 328 | // Keypad-------------------------------------------------- 329 | customKeypad.setHoldTime(250); // Default is 1000mS 330 | customKeypad.setDebounceTime(50); // Default is 50mS 331 | 332 | // SD card initialization----------------------------------- 333 | pinMode(SD_CS, OUTPUT); 334 | 335 | Serial.print("Initializing SD card... "); 336 | 337 | // see if the card is present and can be initialized: 338 | if (!SD.begin(SD_CS)) { 339 | Serial.println("Card failed or not present"); 340 | // don't do anything more: 341 | } else { 342 | Serial.println("Card initialized."); 343 | } 344 | 345 | // Stepper Pins-------------------------------------------- 346 | pinMode(STEPPER_X_STEP_PIN, OUTPUT); 347 | pinMode(STEPPER_X_DIR_PIN, OUTPUT); 348 | pinMode(STEPPER_X_CURRENT_PIN, OUTPUT); 349 | pinMode(STEPPER_Y_STEP_PIN, OUTPUT); 350 | pinMode(STEPPER_Y_DIR_PIN, OUTPUT); 351 | pinMode(STEPPER_Y_CURRENT_PIN, OUTPUT); 352 | pinMode(STEPPER_Z_STEP_PIN, OUTPUT); 353 | pinMode(STEPPER_Z_DIR_PIN, OUTPUT); 354 | pinMode(STEPPER_Z_CURRENT_PIN, OUTPUT); 355 | pinMode(STEPPER_A_STEP_PIN, OUTPUT); 356 | pinMode(STEPPER_A_DIR_PIN, OUTPUT); 357 | pinMode(STEPPER_A_CURRENT_PIN, OUTPUT); 358 | 359 | // General Purpose 24V DC Inputs--------------------------- 360 | pinMode(DI_38_X_REF_SWITCH, INPUT); 361 | pinMode(DI_39_Y_REF_SWITCH, INPUT); 362 | pinMode(DI_40_Z_REF_SWITCH, INPUT); 363 | pinMode(DI_41_SPINDLE_ROTATION, INPUT); 364 | attachInterrupt(digitalPinToInterrupt(DI_41_SPINDLE_ROTATION), rotationInterrupt, CHANGE); 365 | pinMode(DI_42_SCREW_READY, INPUT); 366 | pinMode(DI_43_SCREW_IN_SEPARATOR, INPUT); 367 | pinMode(DI_44_SEPARATOR_IN_STARTING_POSITION, INPUT); 368 | pinMode(DI_45_SEPARATOR_IN_WORKING_POSITION, INPUT); 369 | pinMode(DI_46_PIN, INPUT); 370 | pinMode(DI_47_PIN, INPUT); 371 | pinMode(DI_48_PIN, INPUT); 372 | pinMode(DI_49_PIN, INPUT); 373 | pinMode(DI_50_PIN, INPUT); 374 | pinMode(DI_51_PIN, INPUT); 375 | pinMode(DI_52_EMERGENCY_BUTTON, INPUT); 376 | pinMode(DI_53_START_BUTTON, INPUT); 377 | 378 | // General Purpose 24V DC Outputs--------------------------- 379 | pinMode(DO_22_SCREW_SEPARATOR, OUTPUT); 380 | pinMode(DO_23_SCREW_INJECTOR, OUTPUT); 381 | pinMode(DO_24_BLOW_OFF_NOZZLE, OUTPUT); 382 | pinMode(DO_25_PIN, OUTPUT); 383 | pinMode(DO_26_SCREW_FEEDER, OUTPUT); 384 | pinMode(DO_27_VACUUM, OUTPUT); 385 | pinMode(DO_28_RELEASE, OUTPUT); 386 | pinMode(DO_29_PIN, OUTPUT); 387 | pinMode(DO_30_PIN, OUTPUT); 388 | pinMode(DO_31_PIN, OUTPUT); 389 | pinMode(DO_32_PIN, OUTPUT); 390 | pinMode(DO_33_PIN, OUTPUT); 391 | pinMode(DO_34_PIN, OUTPUT); 392 | pinMode(DO_35_PIN, OUTPUT); 393 | pinMode(DO_36_PIN, OUTPUT); 394 | pinMode(DO_37_PIN, OUTPUT); 395 | 396 | // Initialize outputs 397 | digitalWrite(DO_22_SCREW_SEPARATOR, LOW); 398 | digitalWrite(DO_23_SCREW_INJECTOR, LOW); 399 | digitalWrite(DO_24_BLOW_OFF_NOZZLE, LOW); 400 | digitalWrite(DO_25_PIN, LOW); 401 | digitalWrite(DO_26_SCREW_FEEDER, LOW); 402 | digitalWrite(DO_27_VACUUM, LOW); 403 | digitalWrite(DO_28_RELEASE, LOW); 404 | 405 | 406 | // Adjust the current for each axis 407 | analogWrite(STEPPER_X_CURRENT_PIN, currentX); //255 = 1/2 of 3.3V (Arduino DUE) = 1.65A 408 | analogWrite(STEPPER_Y_CURRENT_PIN, currentY); 409 | analogWrite(STEPPER_Z_CURRENT_PIN, currentZ); 410 | analogWrite(STEPPER_A_CURRENT_PIN, 5); // screwing torque is written in robot FSM! 411 | 412 | 413 | // NOTE: the max. stepping frequency (in total for all motors) is 4000 steps/s!!(on a Due 14000)-------------------------- 414 | 415 | // Drive Z axis to zero 416 | stepperZ.setMaxSpeed(homingSpeed); // @4000: 400 Steps per Rev. (1/2 Step Mode) = 10 Rev./s = 600 RPM (571 measured) 417 | stepperZ.setAcceleration(65000.0); // fast accelerations are needed for homing! 418 | stepperZ.moveTo(0); 419 | 420 | // Drive X & Y axis to zero 421 | stepperX.setMaxSpeed(homingSpeed); 422 | stepperX.setAcceleration(65000.0); // 50000 max. for 1/2 steps 423 | stepperX.moveTo(0); 424 | 425 | stepperY.setMaxSpeed(homingSpeed); 426 | stepperY.setAcceleration(65000.0); 427 | stepperY.moveTo(0); 428 | 429 | stepperA.setAcceleration(65000.0); 430 | 431 | // LCD initialization 432 | delay(1000); 433 | lcd.init(); // Windows = .begin, OS X = .init !! 434 | lcd.backlight(); 435 | lcd.clear(); 436 | lcd.setCursor(3, 0); 437 | lcd.print("Welcome To"); 438 | lcd.setCursor(1, 1); 439 | lcd.print("Screw-O-Matic"); 440 | delay(1500); 441 | 442 | homingCycle(); // execute automatic axis homing cycle 443 | 444 | // adjust axis accelerations for normal operation 445 | stepperX.setAcceleration(accelX); 446 | stepperY.setAcceleration(accelY); 447 | stepperZ.setAcceleration(accelZ); 448 | stepperA.setAcceleration(accelA); 449 | 450 | // Timer, which triggers the spindle RPM calculation every 60ms 451 | timer.setInterval(60, getSpindleRPM); 452 | 453 | // Start button reading timer 454 | timer.setInterval(20, readButtonFunction); 455 | } 456 | 457 | // 458 | // ======================================================================================================= 459 | // MAIN LOOP 460 | // ======================================================================================================= 461 | // 462 | 463 | void loop() 464 | { 465 | 466 | // Buttons 467 | //readButtonFunction(); 468 | 469 | // Call Robot FSM 470 | fsmRobot(); 471 | 472 | // Call screw feeder FSM 473 | fsmFeeder(); 474 | 475 | // Call Feeder Relay ON / OFF function 476 | feederOnOff(); 477 | 478 | // Screw ready for separating? 479 | screwReadyDetection(); 480 | 481 | // Screw injection time limit 482 | screwInjectionTime(); 483 | 484 | // Call Steppers 485 | stepperX.run(); 486 | stepperY.run(); 487 | stepperZ.run(); 488 | stepperA.run(); 489 | 490 | // refresh operation mode on display 491 | refreshMode(); 492 | 493 | // Read Keypad 494 | readKeypad(); 495 | 496 | // Error detection 497 | errorDetection(); 498 | 499 | // Timer 500 | timer.run(); 501 | } 502 | 503 | // 504 | // ======================================================================================================= 505 | // HOMING CYCLE 506 | // ======================================================================================================= 507 | // 508 | 509 | int phase; 510 | 511 | void homingCycle() { 512 | if (!emergencyStop()) { // if not emergency stop button pressed 513 | 514 | displayHoming(0); // Show Homing on Display 515 | 516 | // Z axis---------------------------------------------------------- 517 | stepperZ.setMaxSpeed(homingSpeed); 518 | stepperZ.moveTo(1000 * stepsPerMmZ); // max. seek distance 1000 mm 519 | while (!refSwitchZ()) stepperZ.run(); // until switch is ON 520 | stepperZ.stop(); // Stop as fast as possible: sets new target 521 | stepperZ.runToPosition(); 522 | displayHoming(1); 523 | 524 | stepperZ.setMaxSpeed(homingRetractSpeed); 525 | stepperZ.move(-50 * stepsPerMmZ); // go max. 50mm back 526 | while (refSwitchZ()) stepperZ.run();// until switch is released 527 | stepperZ.stop(); // Stop as fast as possible: sets new target 528 | stepperZ.runToPosition(); 529 | 530 | stepperZ.setCurrentPosition(0); // Reset position to zero 531 | stepperZ.setMaxSpeed(maxSpeed); // switch back to full speed 532 | displayHoming(2); 533 | 534 | // Y axis---------------------------------------------------------- 535 | stepperY.setMaxSpeed(homingSpeed); 536 | stepperY.moveTo(-1000 * stepsPerMmY); // max. seek distance 1000 mm 537 | while (!refSwitchY()) stepperY.run(); // until switch is ON 538 | stepperY.stop(); // Stop as fast as possible: sets new target 539 | stepperY.runToPosition(); 540 | displayHoming(3); 541 | 542 | stepperY.setMaxSpeed(homingRetractSpeed); 543 | stepperY.move(50 * stepsPerMmY); // go max. 50mm back 544 | while (refSwitchY()) stepperY.run();// until switch is released 545 | stepperY.stop(); // Stop as fast as possible: sets new target 546 | stepperY.runToPosition(); 547 | 548 | stepperY.setCurrentPosition(0); // Reset position to zero 549 | stepperY.setMaxSpeed(maxSpeed); // switch back to full speed 550 | displayHoming(4); 551 | 552 | // X axis---------------------------------------------------------- 553 | stepperX.setMaxSpeed(homingSpeed); 554 | stepperX.moveTo(-1000 * stepsPerMmX); // max. seek distance 1000 mm 555 | while (!refSwitchX()) stepperX.run(); // until switch is ON 556 | stepperX.stop(); // Stop as fast as possible: sets new target 557 | stepperX.runToPosition(); 558 | displayHoming(5); 559 | 560 | stepperX.setMaxSpeed(homingRetractSpeed); 561 | stepperX.move(50 * stepsPerMmX); // go max. 50mm back 562 | while (refSwitchX()) stepperX.run();// until switch is released 563 | stepperX.stop(); // Stop as fast as possible: sets new target 564 | stepperX.runToPosition(); 565 | 566 | stepperX.setCurrentPosition(0); // Reset position to zero 567 | stepperX.setMaxSpeed(maxSpeed); // switch back to full speed! 568 | displayHoming(6); 569 | operationMode = 1; // 1 = Stop 570 | modeDidChange = true; 571 | //refreshMode(); 572 | 573 | // Travel Y axis to front side------------------------------------------- 574 | stepperY.moveTo(165 * stepsPerMmY); 575 | } 576 | // Initialize Type Variables 577 | typeVariables(); 578 | } 579 | 580 | // 581 | // ======================================================================================================= 582 | // ROBOT FSM (Finite State Machine) 583 | // ======================================================================================================= 584 | // 585 | 586 | void fsmRobot() { 587 | 588 | static unsigned long ts; // To store the "current" time in for delays 589 | static byte state = 1; // This variable is holding the current "step" of the FSM 590 | 591 | if (operationMode == 2 && state > 1) state = 0; // go to step 0 (Reset), if operation mode 2 (Reset) is active 592 | 593 | switch (state) { 594 | 595 | //----RESET step!! 596 | case 0: 597 | digitalWrite(DO_27_VACUUM, LOW); 598 | digitalWrite(DO_28_RELEASE, LOW); 599 | stepperX.stop(); // Stop as fast as possible: sets new target 600 | stepperX.runToPosition(); 601 | stepperY.stop(); 602 | stepperY.runToPosition(); 603 | stepperZ.stop(); 604 | stepperZ.runToPosition(); 605 | stepperZ.setMaxSpeed(homingSpeed); 606 | stepperZ.moveTo(posZ(zError)); // pull z axis back to error height 607 | if (stepperZ.currentPosition() == posZ(zError)) { 608 | stepperX.setMaxSpeed(homingSpeed); 609 | stepperY.setMaxSpeed(homingSpeed); 610 | stepperX.moveTo(posX(0)); // move x & y axis to cycle end positions 611 | stepperY.moveTo(posY(0)); 612 | } 613 | if (stepperX.currentPosition() == posX(0) && stepperY.currentPosition() == posY(0)) { 614 | if (!error) { // only, if no error is displayed! 615 | operationMode = 2; // 2 = Reset 616 | printPosition(); 617 | modeDidChange = true; 618 | refreshSpindleDegrees(); // show spindle degrees on LCD 619 | state = 1; 620 | } 621 | } 622 | break; 623 | 624 | //----Is the operation mode = "Run" (0)? 625 | case 1: 626 | if (operationMode == 0) { 627 | screwNo = 1; // Set the position of the first screw! 628 | state = 2; 629 | } 630 | else state = 1; // Else loop back 631 | break; 632 | 633 | //----Feed screw 634 | case 2: 635 | if (screwReady() && !screwIsFeeding) { // if no screw is present in the pawl and the prior screw feeding process is finished, 636 | screwRequest = true; // request feeder for screw! 637 | ts = millis(); // Remember the current time 638 | } 639 | state = 3; 640 | break; 641 | 642 | //----Start X & Y Axis positioning 643 | case 3: 644 | if (operationMode == 0) { 645 | stepperX.setMaxSpeed(maxSpeed); 646 | stepperY.setMaxSpeed(maxSpeed); 647 | stepperX.moveTo(posX(screwNo)); 648 | stepperY.moveTo(posY(screwNo)); 649 | } 650 | 651 | if (stepperX.currentPosition() == posX(screwNo) && stepperY.currentPosition() == posY(screwNo)) { 652 | printPosition(); 653 | repeated = false; 654 | state = 4; 655 | } 656 | break; 657 | 658 | //----If screw ready, Z Axis fast downwards to sucking position 659 | case 4: 660 | if (!screwReady()) { // if screw present, go ahead! 661 | printLCD(); 662 | stepperZ.setMaxSpeed(maxSpeed); 663 | if (operationMode == 0) stepperZ.moveTo(posZ(zSuck)); 664 | digitalWrite(DO_23_SCREW_INJECTOR, LOW); 665 | digitalWrite(DO_27_VACUUM, HIGH); 666 | 667 | if (stepperZ.currentPosition() == posZ(zSuck)) { 668 | ts = millis(); // Remember the current time 669 | state = 5; 670 | } 671 | } else { // if screw not ready 672 | displayMessage(5); // display "Waiting for screw" 673 | if (!repeated) { 674 | digitalWrite(DO_23_SCREW_INJECTOR, HIGH); // give a new injection pulse (if screw did not enter the pawl) 675 | repeated = true; 676 | } 677 | } 678 | break; 679 | 680 | //----Suck screw, wait for vacuum to build up 681 | case 5: 682 | if (millis() > ts + 100) { 683 | state = 6; 684 | } 685 | break; 686 | 687 | //----Z Axis fast downwards to screwing start height 688 | case 6: 689 | stepperZ.setMaxSpeed(maxSpeedSucked); 690 | if (operationMode == 0) stepperZ.moveTo(posZ(zScrewBegin)); 691 | 692 | if (stepperZ.currentPosition() == posZ(zScrewBegin)) { 693 | stepperA.setCurrentPosition(0); // reset A axis position 694 | state = 7; 695 | } 696 | break; 697 | 698 | //----Rotate spindle 180°, in order to "catch" the torx 699 | case 7: 700 | analogWrite(STEPPER_A_CURRENT_PIN, currentA); // Spindle torque on 701 | stepperA.setMaxSpeed(aRpm()); 702 | stepperA.moveTo(400); // 400 = 180° 703 | 704 | if (stepperA.currentPosition() == 400) { 705 | stepperA.setCurrentPosition(0); // reset A axis position 706 | spindleDegreesRaw = 0; // reset A axis angle (raw value from sensor) 707 | spindleRpmRaw = 0; 708 | spindleWasAtFullRpm = false; 709 | spindleStalled = false; 710 | stallDetectionActive = true; 711 | ts = millis(); // Remember the current time 712 | state = 8; 713 | } 714 | break; 715 | 716 | //----Start screwing, Z Axis slowly downwards (speed in accordance with screw pitch) 717 | case 8: 718 | stepperZ.setMaxSpeed(zFeedRate()); 719 | stepperZ.moveTo(posZ( (zScrewBegin - zScrewingDepth) - 1 )); // 1mm deeper, as well as in the aRotationAngle() function 720 | stepperA.moveTo(aRotationAngle()); 721 | digitalWrite(DO_27_VACUUM, LOW); 722 | 723 | 724 | if (stepperZ.currentPosition() == posZ( (zScrewBegin - zScrewingDepth - 1 ) )) { // as soon as Z axis is in position, 725 | stallDetectionActive = false; // disable spindle stall detection, if Z axis is in position! 726 | stepperA.setCurrentPosition(0); // stop A axis immediately and reset position! 727 | analogWrite(STEPPER_A_CURRENT_PIN, 5); // reduce spindle torque 728 | refreshSpindleDegrees(); // calculate the measured angle and display it! 729 | if (!screwIsFeeding) { 730 | screwRequest = true; // only if prior feeding process is finished (12.9.16 MS), request feeder for screw! (time saving) 731 | } 732 | state = 9; 733 | } 734 | break; 735 | 736 | //----Wait max. 3s for spindle stall detection signal 737 | case 9: 738 | if (millis() > ts + 3000 || spindleStalled) { 739 | state = 10; 740 | } 741 | break; 742 | 743 | //----Screw rotation angle OK and spindle stalled? 744 | case 10: 745 | // screwing angle OK? 746 | if (spindleDegrees < spindleDegreesMin || spindleDegrees > spindleDegreesMax) { 747 | displayMessage(1); // show screw error on display! 748 | error = true; 749 | operationMode = 1; // 1 = Stop 750 | state = 0; 751 | } 752 | // Has the spindle stalled? = screw head did hit part surface = torque OK 753 | else if (!spindleStalled) { 754 | displayMessage(3); // show torque error on display! 755 | error = true; 756 | operationMode = 1; // 1 = Stop 757 | state = 0; 758 | } 759 | // otherwise proceed with next step 760 | else { 761 | spindleStalled = false; // enable rotation interrupt again! 762 | stallDetectionActive = false; // disable spindle stall detection for screw presence test! 763 | state = 11; 764 | } 765 | break; 766 | 767 | //----Check, if bit is still engaged with screw head (= screw is present) 768 | case 11: 769 | stepperA.setMaxSpeed(5000); 770 | stepperA.moveTo(2400); // rotate spindle 3 turns with almost no torque 771 | if (stepperA.currentPosition() == 2400) { 772 | if (spindleDegreesRaw > 30) { // 12 x 30° = 1 turn 773 | displayMessage(2); // show error on display! (screw missing) 774 | error = true; 775 | operationMode = 1; // 1 = Stop 776 | state = 0; 777 | } else { 778 | state = 12; 779 | stepperA.setCurrentPosition(0); // reset A axis position 780 | stepperA.setMaxSpeed(500); 781 | } 782 | } 783 | break; 784 | 785 | //----Rotate screw bit about 1° backwards, in order to loosen it 786 | case 12: 787 | digitalWrite(DO_28_RELEASE, HIGH); // Release (blow off) screw 788 | stepperA.moveTo(-6); // rotate spindle a bit backwards 789 | if (stepperA.currentPosition() == -6) { 790 | state = 13; 791 | } 792 | break; 793 | 794 | //----Retract Z Axis 795 | case 13: 796 | analogWrite(STEPPER_A_CURRENT_PIN, 0); // Shut torque off for retracting! 797 | stepperZ.setMaxSpeed(maxSpeed); 798 | if (operationMode == 0) stepperZ.moveTo(posZ(zRetract)); 799 | 800 | if (stepperZ.currentPosition() == posZ(zRetract)) { 801 | digitalWrite(DO_28_RELEASE, LOW); 802 | #ifdef DEBUG 803 | Serial.print("Screw "); 804 | Serial.println(screwNo); // print the number of the currently mounted screw 805 | #endif 806 | // screwRequest = true; // request feeder for screw! (time saving) 807 | screwNo++; // add 1 screw to counter 808 | state = 14; 809 | } 810 | break; 811 | 812 | //----Final screw? 813 | case 14: 814 | if (screwNo >= numberOfScrews) { // Yes 815 | state = 15; // pattern is finished 816 | } 817 | else state = 2; // Else loop back to step 2 for next screw 818 | break; 819 | 820 | //----Go to Cycle End Position 821 | case 15: 822 | screwNo = 0; // Screw 0 = Cycle End Position! 823 | if (operationMode == 0) { 824 | stepperX.moveTo(posX(screwNo)); 825 | stepperY.moveTo(posY(screwNo)); 826 | } 827 | 828 | if (stepperX.currentPosition() == posX(screwNo) && stepperY.currentPosition() == posY(screwNo)) { 829 | #ifdef DEBUG 830 | Serial.println("Process Finished, Waiting For Start!"); 831 | #endif 832 | operationMode = 1; // 1 = Stop 833 | printPosition(); 834 | modeDidChange = true; 835 | //refreshMode(); 836 | state = 1; 837 | } 838 | break; 839 | } 840 | } 841 | 842 | // 843 | // ======================================================================================================= 844 | // SCREW FEEDER ON / OFF (delay 2s) 845 | // ======================================================================================================= 846 | // 847 | 848 | unsigned long millisFeederOff = 0; 849 | const long delayFeeder = 2000; // Delay = 2s 850 | boolean feederState = false; 851 | 852 | void feederOnOff() { 853 | 854 | unsigned long currentMillis = millis(); 855 | 856 | // Stay on, if: 857 | if (operationMode == 0 && screwInSeparator()) { // Mode 0 = Run & no screw present in separator 858 | feederState = true; 859 | millisFeederOff = currentMillis; 860 | } 861 | 862 | // Delay timer 863 | if (currentMillis - millisFeederOff >= delayFeeder) { 864 | feederState = false; 865 | } 866 | 867 | // Feeder ON / OFF 868 | if (feederState) { 869 | digitalWrite(DO_26_SCREW_FEEDER, HIGH); 870 | digitalWrite(DO_24_BLOW_OFF_NOZZLE, HIGH); 871 | } else { 872 | digitalWrite(DO_26_SCREW_FEEDER, LOW); 873 | digitalWrite(DO_24_BLOW_OFF_NOZZLE, LOW); 874 | } 875 | } 876 | 877 | // 878 | // ======================================================================================================= 879 | // SCREW READY FOR SEPARATING (delay 200ms) 880 | // ======================================================================================================= 881 | // 882 | 883 | unsigned long millisScrewReady = 0; 884 | const long delayScrewReady = 200; // Delay = 0.2s 885 | boolean screwReadyForSeparating = false; 886 | 887 | void screwReadyDetection() { 888 | 889 | unsigned long currentMillis = millis(); 890 | 891 | // Not ready, if: 892 | if (operationMode == 0 && screwInSeparator()) { // Mode 0 = Run & no screw present in separator 893 | screwReadyForSeparating = false; 894 | millisScrewReady = currentMillis; 895 | } 896 | 897 | // Delay timer 898 | if (currentMillis - millisScrewReady >= delayScrewReady) { 899 | screwReadyForSeparating = true; 900 | } 901 | } 902 | 903 | // 904 | // ======================================================================================================= 905 | // MAX. SCREW INBJECTION DURATION TIMER 906 | // ======================================================================================================= 907 | // 908 | 909 | unsigned long millisScrewInPawl = 0; 910 | const long delayScrewInPawl = 500; // Delay = 0.5s 911 | 912 | void screwInjectionTime() { 913 | 914 | unsigned long currentMillis = millis(); 915 | 916 | // Reset delay timer, if screw injector air is off 917 | if (!digitalRead(DO_23_SCREW_INJECTOR)) { 918 | millisScrewInPawl = currentMillis; 919 | } 920 | 921 | // Switch air off, if on for > 0.5s 922 | if (currentMillis - millisScrewInPawl >= delayScrewInPawl) { 923 | digitalWrite(DO_23_SCREW_INJECTOR, LOW); 924 | } 925 | } 926 | 927 | // 928 | // ======================================================================================================= 929 | // SCREW FEEDER FSM (Finite State Machine) 930 | // ======================================================================================================= 931 | // 932 | 933 | void fsmFeeder() { 934 | 935 | 936 | 937 | static unsigned long tsF; // To store the "current" time in for delays 938 | static byte stateFeeder = 1; // This variable is holding the current "step" of the FSM 939 | 940 | if (operationMode == 2 && stateFeeder > 1) stateFeeder = 0; // go to step 0 (Reset), if operation mode 2 (Reset) is active 941 | 942 | 943 | #ifdef DEBUG 944 | // Serial.print("Feeder state: "); 945 | // Serial.println(stateFeeder); 946 | #endif 947 | 948 | switch (stateFeeder) { 949 | 950 | //----RESET step!! 951 | case 0: 952 | digitalWrite(DO_22_SCREW_SEPARATOR, LOW); 953 | digitalWrite(DO_23_SCREW_INJECTOR, LOW); 954 | digitalWrite(DO_24_BLOW_OFF_NOZZLE, LOW); 955 | digitalWrite(DO_25_PIN, LOW); 956 | digitalWrite(DO_26_SCREW_FEEDER, LOW); 957 | digitalWrite(DO_27_VACUUM, LOW); 958 | 959 | screwRequest = false; 960 | screwIsFeeding = false; 961 | 962 | if (separatorInStartingPosition()) { 963 | stateFeeder = 1; 964 | } 965 | break; 966 | 967 | //----Is the operation mode = "Run" (0)? 968 | case 1: 969 | if (operationMode == 0) { 970 | stateFeeder = 2; 971 | } 972 | else stateFeeder = 1; // Else loop back 973 | break; 974 | 975 | //----Separate screw 976 | case 2: 977 | if (!screwInSeparator() && screwRequest && screwReadyForSeparating) { // screw is present, request for screw active and screw ready for separating (delayed)! 978 | digitalWrite(DO_22_SCREW_SEPARATOR, HIGH); 979 | screwRequest = false; 980 | screwIsFeeding = true; 981 | } 982 | 983 | if (separatorInWorkingPosition()) { 984 | stateFeeder = 3; 985 | tsF = millis(); // Remember the current time 986 | } 987 | break; 988 | 989 | //----Screew needs some time to leave the separator! 990 | case 3: 991 | if (millis() > tsF + 300) { 992 | stateFeeder = 4; 993 | } 994 | break; 995 | 996 | //----Separator back 997 | case 4: 998 | digitalWrite(DO_22_SCREW_SEPARATOR, LOW); 999 | 1000 | if (separatorInStartingPosition()) { // if separator is back in working position... 1001 | stateFeeder = 5; 1002 | } 1003 | break; 1004 | 1005 | //----Inject screw 1006 | case 5: 1007 | 1008 | digitalWrite(DO_23_SCREW_INJECTOR, HIGH); 1009 | tsF = millis(); // Remember the current time 1010 | stateFeeder = 6; 1011 | break; 1012 | 1013 | //----Injection impulse duration 1014 | case 6: 1015 | if (millis() > tsF + 150) { 1016 | stateFeeder = 7; 1017 | } 1018 | break; 1019 | 1020 | //----Injection air off, separator back to start position 1021 | case 7: 1022 | if (!repeated) { 1023 | digitalWrite(DO_23_SCREW_INJECTOR, LOW); 1024 | } 1025 | digitalWrite(DO_22_SCREW_SEPARATOR, LOW); 1026 | 1027 | if (separatorInStartingPosition()) { 1028 | tsF = millis(); // Remember the current time 1029 | stateFeeder = 8; 1030 | } 1031 | break; 1032 | 1033 | //----Allow the screw to arrive in the screwing head before looping back! 1034 | case 8: 1035 | if (millis() > tsF + 1000) { 1036 | screwIsFeeding = false; 1037 | stateFeeder = 1; 1038 | } 1039 | break; 1040 | } 1041 | } 1042 | 1043 | // 1044 | // ======================================================================================================= 1045 | // FUNCTIONS FOR READING AXIS POSITIONS FROM PROGRAM MEMORY (BECAUSE THERE IS NOT ENOUGH RAM AVAILABLE) 1046 | // ======================================================================================================= 1047 | // Max. 20 programs @ the moment! 1048 | 1049 | // X Axis 1050 | float posX(int screw) { 1051 | float x; 1052 | switch (activeProgram) { 1053 | case 1: 1054 | x = pgm_read_float(&pos1[screw][0]); 1055 | break; 1056 | case 2: 1057 | x = pgm_read_float(&pos2[screw][0]); 1058 | break; 1059 | case 3: 1060 | x = pgm_read_float(&pos3[screw][0]); 1061 | break; 1062 | case 4: 1063 | x = pgm_read_float(&pos4[screw][0]); 1064 | break; 1065 | case 5: 1066 | x = pgm_read_float(&pos5[screw][0]); 1067 | break; 1068 | case 6: 1069 | x = pgm_read_float(&pos6[screw][0]); 1070 | break; 1071 | case 7: 1072 | x = pgm_read_float(&pos7[screw][0]); 1073 | break; 1074 | case 8: 1075 | x = pgm_read_float(&pos8[screw][0]); 1076 | break; 1077 | case 9: 1078 | x = pgm_read_float(&pos9[screw][0]); 1079 | break; 1080 | case 10: 1081 | x = pgm_read_float(&pos10[screw][0]); 1082 | break; 1083 | case 11: 1084 | x = pgm_read_float(&pos11[screw][0]); 1085 | break; 1086 | case 12: 1087 | x = pgm_read_float(&pos12[screw][0]); 1088 | break; 1089 | case 13: 1090 | x = pgm_read_float(&pos13[screw][0]); 1091 | break; 1092 | case 14: 1093 | x = pgm_read_float(&pos14[screw][0]); 1094 | break; 1095 | case 15: 1096 | x = pgm_read_float(&pos15[screw][0]); 1097 | break; 1098 | case 16: 1099 | x = pgm_read_float(&pos16[screw][0]); 1100 | break; 1101 | case 17: 1102 | x = pgm_read_float(&pos17[screw][0]); 1103 | break; 1104 | case 18: 1105 | x = pgm_read_float(&pos18[screw][0]); 1106 | break; 1107 | case 19: 1108 | x = pgm_read_float(&pos19[screw][0]); 1109 | break; 1110 | case 20: 1111 | x = pgm_read_float(&pos20[screw][0]); 1112 | break; 1113 | } 1114 | x = (x + offset[(activeProgram - 1)][0]) * stepsPerMmX; // offset 0 for program 1 etc. 0 = X axis 1115 | return (int) x; // only if Start is active! 1116 | } 1117 | 1118 | // Y Axis 1119 | float posY(int screw) { 1120 | float y; 1121 | switch (activeProgram) { 1122 | case 1: 1123 | y = pgm_read_float(&pos1[screw][1]); 1124 | break; 1125 | case 2: 1126 | y = pgm_read_float(&pos2[screw][1]); 1127 | break; 1128 | case 3: 1129 | y = pgm_read_float(&pos3[screw][1]); 1130 | break; 1131 | case 4: 1132 | y = pgm_read_float(&pos4[screw][1]); 1133 | break; 1134 | case 5: 1135 | y = pgm_read_float(&pos5[screw][1]); 1136 | break; 1137 | case 6: 1138 | y = pgm_read_float(&pos6[screw][1]); 1139 | break; 1140 | case 7: 1141 | y = pgm_read_float(&pos7[screw][1]); 1142 | break; 1143 | case 8: 1144 | y = pgm_read_float(&pos8[screw][1]); 1145 | break; 1146 | case 9: 1147 | y = pgm_read_float(&pos9[screw][1]); 1148 | break; 1149 | case 10: 1150 | y = pgm_read_float(&pos10[screw][1]); 1151 | break; 1152 | case 11: 1153 | y = pgm_read_float(&pos11[screw][1]); 1154 | break; 1155 | case 12: 1156 | y = pgm_read_float(&pos12[screw][1]); 1157 | break; 1158 | case 13: 1159 | y = pgm_read_float(&pos13[screw][1]); 1160 | break; 1161 | case 14: 1162 | y = pgm_read_float(&pos14[screw][1]); 1163 | break; 1164 | case 15: 1165 | y = pgm_read_float(&pos15[screw][1]); 1166 | break; 1167 | case 16: 1168 | y = pgm_read_float(&pos16[screw][1]); 1169 | break; 1170 | case 17: 1171 | y = pgm_read_float(&pos17[screw][1]); 1172 | break; 1173 | case 18: 1174 | y = pgm_read_float(&pos18[screw][1]); 1175 | break; 1176 | case 19: 1177 | y = pgm_read_float(&pos19[screw][1]); 1178 | break; 1179 | case 20: 1180 | y = pgm_read_float(&pos20[screw][1]); 1181 | break; 1182 | 1183 | } 1184 | y = (y + offset[(activeProgram - 1)][1]) * stepsPerMmY ; // offset 0 for program 1 etc. 1 = Y axis 1185 | return (int) y; // only if Start is active! 1186 | } 1187 | 1188 | // Z Axis 1189 | long posZ(float height) { 1190 | height = (height + offset[(activeProgram - 1)][2]) * stepsPerMmZ ; // offset 0 for program 1 etc. 2 = Z axis 1191 | return (long) height; // only if Start is active! 1192 | } 1193 | 1194 | // 1195 | // ======================================================================================================= 1196 | // SERIAL PRINT X & Y POSITIONS 1197 | // ======================================================================================================= 1198 | // 1199 | 1200 | void printPosition() { 1201 | #ifdef DEBUG 1202 | Serial.print("X "); 1203 | Serial.print((stepperX.currentPosition() / stepsPerMmX) - offset[(activeProgram - 1)][0]); 1204 | Serial.print(", Y "); 1205 | Serial.println((stepperY.currentPosition() / stepsPerMmY) - offset[(activeProgram - 1)][1]); 1206 | #endif 1207 | refreshXY(); 1208 | } 1209 | 1210 | // 1211 | // ======================================================================================================= 1212 | // LCD & DISPLAY PRINT FUNCTIONS 1213 | // ======================================================================================================= 1214 | // 1215 | 1216 | // NOTE: the display communication is slow! So we never clear and re-write the whole display content 1217 | // during normal operation. Only the relevant content is refreshed as needed! 1218 | 1219 | // NEVER write to the LCD during axis movement! 1220 | // Otherwise the axis position could be lost because of some blocking routines inside the LCD library! 1221 | 1222 | // this function refreshes the complete main display content 1223 | void printLCD() { 1224 | if (stepperX.isRunning() == false && stepperY.isRunning() == false && stepperZ.isRunning() == false ) { 1225 | lcd.clear(); 1226 | lcd.setCursor(0, 0); 1227 | lcd.print("Pr."); 1228 | 1229 | lcd.setCursor(0, 1); 1230 | lcd.print("X"); 1231 | 1232 | lcd.setCursor(8, 1); 1233 | lcd.print("Y"); 1234 | refreshXY(); 1235 | refreshProgNo(); 1236 | modeDidChange = true; 1237 | currentMessage = 999; 1238 | } 1239 | } 1240 | 1241 | // refresh x and y positions 1242 | void refreshXY() { 1243 | lcd.setCursor(1, 1); 1244 | lcd.print(" "); // clear old x position 1245 | lcd.setCursor(1, 1); 1246 | lcd.print((stepperX.currentPosition() / stepsPerMmX) - offset[(activeProgram - 1)][0]); 1247 | 1248 | lcd.setCursor(9, 1); 1249 | lcd.print(" "); // clear old y position 1250 | lcd.setCursor(9, 1); 1251 | lcd.print((stepperY.currentPosition() / stepsPerMmY) - offset[(activeProgram - 1)][1]); 1252 | } 1253 | 1254 | // refresh rotation count 1255 | void refreshSpindleDegrees() { 1256 | lcd.setCursor(12, 0); 1257 | lcd.print(" "); // clear old rotation count 1258 | lcd.setCursor(12, 0); 1259 | spindleDegrees = spindleDegreesRaw * 30; // 1 rotation count = 30 degrees (for "CHANGE" interrupt with 6 teeth) 1260 | spindleDegreesRaw = 0; 1261 | lcd.print(spindleDegrees); //spindleDegreesRaw 1262 | } 1263 | 1264 | // program number entry screen 1265 | void programNumberEntryScreen() { 1266 | lcd.clear(); 1267 | lcd.setCursor(0, 0); 1268 | lcd.print("Prog. Nummer:"); 1269 | lcd.setCursor(0, 1); 1270 | lcd.print("# =Enter * =Esc."); 1271 | } 1272 | 1273 | // refresh program number 1274 | void refreshProgNo() { 1275 | lcd.setCursor(3, 0); 1276 | lcd.print(" "); // clear old Prog No. 1277 | lcd.setCursor(3, 0); 1278 | lcd.print(activeProgram); 1279 | } 1280 | 1281 | // refresh mode 1282 | void refreshMode() { 1283 | if (modeDidChange && stepperX.isRunning() == false && stepperY.isRunning() == false && stepperZ.isRunning() == false ) { 1284 | lcd.setCursor(6, 0); 1285 | if (operationMode == 0) lcd.print("RUN "); // all same length! 1286 | if (operationMode == 1) lcd.print("STOP"); 1287 | if (operationMode == 2) lcd.print("RES."); 1288 | if (operationMode == 3) lcd.print("P.S."); 1289 | if (operationMode == 4) lcd.print("HOM."); 1290 | modeDidChange = false; 1291 | } 1292 | } 1293 | 1294 | // Refresh numerical input value (Program number) 1295 | void refreshInputValue() { 1296 | lcd.setCursor(14, 0); 1297 | lcd.print(" "); // clear old value 1298 | lcd.setCursor(14, 0); 1299 | lcd.print(value); //show new value 1300 | } 1301 | 1302 | // homing 1303 | void displayHoming(int phase) { 1304 | lcd.setCursor(8, 0); 1305 | if (phase == 0) { 1306 | lcd.clear(); 1307 | lcd.setCursor(1, 0); 1308 | lcd.print("Referenzfahrt"); 1309 | lcd.setCursor(1, 1); 1310 | lcd.print("."); 1311 | } 1312 | if (phase == 1) { 1313 | lcd.setCursor(1, 1); 1314 | lcd.print(".."); 1315 | } 1316 | if (phase == 2) { 1317 | lcd.setCursor(1, 1); 1318 | lcd.print("..."); 1319 | } 1320 | if (phase == 3) { 1321 | lcd.setCursor(1, 1); 1322 | lcd.print("...."); 1323 | } 1324 | if (phase == 4) { 1325 | lcd.setCursor(1, 1); 1326 | lcd.print("....."); 1327 | } 1328 | if (phase == 5) { 1329 | lcd.setCursor(1, 1); 1330 | lcd.print("......"); 1331 | } 1332 | if (phase == 6) { 1333 | lcd.setCursor(1, 1); 1334 | lcd.print(".......OK"); 1335 | delay(1000); 1336 | printLCD(); 1337 | } 1338 | } 1339 | 1340 | // Error messages 1341 | 1342 | void displayMessage(int message) { 1343 | if (message == 0 && currentMessage != message) { // 0 = Emergency Stop 1344 | lcd.clear(); 1345 | lcd.setCursor(1, 0); 1346 | lcd.print("Emergency Stop"); 1347 | lcd.setCursor(3, 1); 1348 | lcd.print("Not - Stop"); 1349 | currentMessage = message; 1350 | } 1351 | if (message == 1 && currentMessage != message) { // 1 = screw tightening error (angle) 1352 | lcd.clear(); 1353 | lcd.setCursor(1, 0); 1354 | lcd.print("Schraubtiefe!"); 1355 | lcd.setCursor(1, 1); 1356 | lcd.print("Winkel:"); 1357 | lcd.setCursor(9, 1); 1358 | lcd.print(spindleDegrees); 1359 | currentMessage = message; 1360 | } 1361 | if (message == 2 && currentMessage != message) { // 2 = screw missing 1362 | lcd.clear(); 1363 | lcd.setCursor(1, 0); 1364 | lcd.print("Schraube"); 1365 | lcd.setCursor(1, 1); 1366 | lcd.print("fehlt!"); 1367 | currentMessage = message; 1368 | } 1369 | if (message == 3 && currentMessage != message) { // 2 = screw tightening error (torque too small, spindle not stalled) 1370 | lcd.clear(); 1371 | lcd.setCursor(0, 0); 1372 | lcd.print("Drehmoment nicht"); 1373 | lcd.setCursor(0, 1); 1374 | lcd.print("erreicht!"); 1375 | currentMessage = message; 1376 | } 1377 | if (message == 4 && currentMessage != message) { // 4 = screw separator error 1378 | lcd.clear(); 1379 | lcd.setCursor(0, 0); 1380 | lcd.print("Schraubenverein-"); 1381 | lcd.setCursor(0, 1); 1382 | lcd.print("zeler Stoerung!"); 1383 | currentMessage = message; 1384 | } 1385 | if (message == 5 && currentMessage != message) { // 5 = waiting for screw... 1386 | lcd.clear(); 1387 | lcd.setCursor(0, 0); 1388 | lcd.print("Warte auf"); 1389 | lcd.setCursor(0, 1); 1390 | lcd.print("Schraube..."); 1391 | currentMessage = message; 1392 | } 1393 | } 1394 | 1395 | // 1396 | // ======================================================================================================= 1397 | // COMPUTE SCREW MOTOR ROTATION ANGLE 1398 | // ======================================================================================================= 1399 | // 1400 | long aRotationAngle() { 1401 | return (zScrewingDepth + 1) * stepsPerRoundA / screwPitch ; // add 1mm depth! 1402 | } 1403 | 1404 | // 1405 | // ======================================================================================================= 1406 | // COMPUTE SCREW MOTOR RPM 1407 | // ======================================================================================================= 1408 | // 1409 | int aRpm() { 1410 | return screwRpm * stepsPerRoundA / 60; 1411 | } 1412 | 1413 | // 1414 | // ======================================================================================================= 1415 | // COMPUTE Z AXIS FEED RATE (mm/s) 1416 | // ======================================================================================================= 1417 | // 1418 | float zFeedRate() { // returns steps per s for the z axis feed motor 1419 | return (screwRpm * screwPitch) / 60 * stepsPerMmZ ; 1420 | } 1421 | 1422 | 1423 | // 1424 | // ======================================================================================================= 1425 | // SPINDLE RPM CALCULATION (every 60ms) 1426 | // ======================================================================================================= 1427 | // 1428 | 1429 | static long lastRpm; 1430 | static long deltaRpm; // The RPM drop since last measurement 1431 | static unsigned long spindleTimeStart; 1432 | 1433 | // This function calculates the current spindle RPM 1434 | void getSpindleRPM() { 1435 | lastRpm = rpm; 1436 | rpm = spindleRpmRaw * 6000 / ( millis() - spindleTimeStart ); // 6000 for "CHANGE" interrupt with 6 teeth 1437 | spindleRpmRaw = 0; 1438 | spindleTimeStart = millis(); 1439 | deltaRpm = lastRpm - rpm; 1440 | #ifdef DEBUG 1441 | Serial.print(rpm); 1442 | Serial.print(" RPM "); 1443 | Serial.print(deltaRpm); 1444 | Serial.println(" RPM delta"); 1445 | #endif 1446 | spindleStallDetection(); 1447 | } 1448 | 1449 | // 1450 | // ======================================================================================================= 1451 | // SPINDLE STALL DETECTION 1452 | // ======================================================================================================= 1453 | // 1454 | 1455 | void spindleStallDetection() { 1456 | if (rpm >= (screwRpm - 50)) { 1457 | spindleWasAtFullRpm = true; 1458 | } 1459 | if (stallDetectionActive && spindleWasAtFullRpm && !spindleStalled) { 1460 | if ((deltaRpm >= 300) || (rpm <= 150) || rpm >= (screwRpm + 150)) { // if the RPM drop per 60ms is > 300 = screw head arrived on part surface! 1461 | spindleStalled = true; 1462 | stepperA.setCurrentPosition(0); // stop A axis immediately and reset position! 1463 | analogWrite(STEPPER_A_CURRENT_PIN, 5); // Reduce spindle torque! 1464 | #ifdef DEBUG 1465 | Serial.println("Spindle stalled!"); 1466 | #endif 1467 | } 1468 | } 1469 | } 1470 | 1471 | // 1472 | // ======================================================================================================= 1473 | // ROTATION SENSOR INTERRUPT 1474 | // ======================================================================================================= 1475 | // 1476 | void rotationInterrupt() { 1477 | spindleRpmRaw ++; // for RPM detection 1478 | if (!spindleStalled) { 1479 | spindleDegreesRaw ++; // for spindle angle detection (only, if not stalled) 1480 | } 1481 | } 1482 | 1483 | // 1484 | // ======================================================================================================= 1485 | // BUTTONS 1486 | // ======================================================================================================= 1487 | // 1488 | 1489 | // operationMode: 0 = Run, 1 = Stop, 2 = Reset, 3 = Program Select 4 = Axis homing 1490 | 1491 | void readButtonFunction() { 1492 | 1493 | // Start button 1494 | if (DRE(digitalRead(DI_53_START_BUTTON), startButtonState)) { 1495 | if (operationMode > 0 && !error) { // only, if no screwing error is displayed! 1496 | delay(20); // NOTE! The display refresh is delayed a bit, because of possible interferences on the I2C bus, 1497 | // caused from capacitive coupling effects in the cable, during pressing the 24V start button... 1498 | operationMode = 0; // 0 = Start 1499 | modeDidChange = true; 1500 | //refreshMode(); 1501 | } 1502 | } 1503 | } 1504 | 1505 | // 1506 | // ======================================================================================================= 1507 | // ERROR DETECTION 1508 | // ======================================================================================================= 1509 | // 1510 | void errorDetection() { 1511 | 1512 | // Emergency stop button is pressed--------------------------------------------------------- 1513 | if (emergencyStop()) { 1514 | if (!emergencyWasPressed) { // only once! 1515 | delay(20); // NOTE! The display refresh is delayed a bit, because of possible interferences on the I2C bus, 1516 | // caused from capacitive coupling effects in the cable, during pressing the 24V emegrency stop button... 1517 | displayMessage(0); 1518 | #ifdef DEBUG 1519 | Serial.print("Emergency Stop"); 1520 | #endif 1521 | emergencyWasPressed = true; 1522 | } 1523 | } 1524 | 1525 | // Emergency stop button was pulled out------------------------------------------------------ 1526 | if (!emergencyStop() && emergencyWasPressed) { 1527 | homingCycle(); // execute homing cycle, because the position is always lost during emergency stop! 1528 | emergencyWasPressed = false; 1529 | } 1530 | 1531 | // Cylinder position error detection (do not trigger message, during axis movement)----------- 1532 | if (stepperX.isRunning() == false && stepperY.isRunning() == false && stepperZ.isRunning() == false ) { 1533 | 1534 | // Screw separator 1535 | if (separatorMonitoring.monitoringRlAl(DO_22_SCREW_SEPARATOR, DI_44_SEPARATOR_IN_STARTING_POSITION, DI_45_SEPARATOR_IN_WORKING_POSITION)) { 1536 | if (!error) { 1537 | operationMode = 1; // 1 = Stop 1538 | displayMessage(4); 1539 | error = true; 1540 | #ifdef DEBUG 1541 | Serial.println("Separator Error"); 1542 | #endif 1543 | } 1544 | } 1545 | } 1546 | } 1547 | 1548 | // 1549 | // ======================================================================================================= 1550 | // READ NUMERIC KEYPAD 1551 | // ======================================================================================================= 1552 | // 1553 | 1554 | void readKeypad() { 1555 | char key = customKeypad.getKey(); 1556 | switch (key) { 1557 | case NO_KEY: 1558 | // No key read. Do nothing----------------------- 1559 | break; 1560 | 1561 | case '0': case '1': case '2': case '3': case '4': 1562 | case '5': case '6': case '7': case '8': case '9': 1563 | if (ProgNoInput) { 1564 | // Digits from 0 to 9 1565 | // Don't forget we deal with ASCII characters and not numbers 1566 | value = value * 10 + key - '0'; 1567 | if (value > 99) value = 0; 1568 | refreshInputValue(); // Show the typed value on the LCD 1569 | } 1570 | break; 1571 | 1572 | case '#': 1573 | // Enter key------------------------------------- 1574 | if (value <= numberOfPrograms) { 1575 | activeProgram = value; 1576 | } else { 1577 | activeProgram = numberOfPrograms; 1578 | lcd.clear(); 1579 | lcd.setCursor(0, 0); 1580 | lcd.print("Programmnummer"); 1581 | lcd.setCursor(0, 1); 1582 | lcd.print("ungueltig!"); 1583 | delay(2000); 1584 | } 1585 | printLCD(); 1586 | ProgNoInput = false; 1587 | typeVariables(); // Refresh the type specific Z axis variables!! IMPORTANT!! 1588 | // Reset value. The last number is done 1589 | value = 0; 1590 | break; 1591 | 1592 | case '*': 1593 | // Esc key---------------------------------------- 1594 | // Reset value. The last number is done 1595 | value = 0; 1596 | refreshInputValue(); // Show the value on the LCD 1597 | break; 1598 | 1599 | case 'A': 1600 | // Stop key-------------------------------------- 1601 | operationMode = 1; // 1 = Stop 1602 | screwRequest = false; 1603 | modeDidChange = true; 1604 | error = false; 1605 | printLCD(); 1606 | break; 1607 | 1608 | case 'B': 1609 | // Reset key-------------------------------------- 1610 | operationMode = 2; // 2 = Reset 1611 | screwRequest = false; 1612 | modeDidChange = true; 1613 | error = false; 1614 | printLCD(); 1615 | break; 1616 | 1617 | case 'C': 1618 | // Menu key---------------------------------------- 1619 | if (operationMode > 0) { // > 0 = Machine not running 1620 | ProgNoInput = true; 1621 | programNumberEntryScreen(); // Show program number entry screen 1622 | } 1623 | break; 1624 | 1625 | case 'D': 1626 | // Next key (Homing)------------------------------ 1627 | homingCycle(); 1628 | break; 1629 | 1630 | default: 1631 | // All other keys-------------------------------- 1632 | // Reset value. The last number is done 1633 | value = 0; 1634 | } 1635 | } 1636 | 1637 | // 1638 | // ======================================================================================================= 1639 | // READ TEXT FILE FROM SD CARD 1640 | // ======================================================================================================= 1641 | // 1642 | 1643 | void readSdText() { 1644 | // open the file. note that only one file can be open at a time, 1645 | // so you have to close this one before opening another. 1646 | File sdText = SD.open("datalog.txt"); 1647 | 1648 | // if the file is available, read it: 1649 | if (sdText) { 1650 | while (sdText.available()) { 1651 | Serial.write(sdText.read()); 1652 | } 1653 | sdText.close(); 1654 | } 1655 | // if the file isn't open, pop up an error: 1656 | else { 1657 | Serial.println("error opening datalog.txt"); 1658 | } 1659 | } 1660 | 1661 | // 1662 | // ======================================================================================================= 1663 | // READ CSV FILE FROM SD CARD INTO AN ARRAY 1664 | // ======================================================================================================= 1665 | // 1666 | 1667 | String inString = ""; 1668 | float myArray[512]; 1669 | 1670 | void readSdCsv() { 1671 | 1672 | File sdCsv = SD.open("test.csv"); 1673 | int i = 0; 1674 | // if the file is available, read it: 1675 | if (sdCsv) { 1676 | while (sdCsv.available() > 0) { 1677 | int inChar = sdCsv.read(); 1678 | if (inChar != ';') { 1679 | inString += (char)inChar; 1680 | } 1681 | else { 1682 | myArray[i] = inString.toFloat(); 1683 | i++; 1684 | inString = ""; 1685 | } 1686 | } 1687 | Serial.println("test.csv successfully read"); 1688 | sdCsv.close(); 1689 | } 1690 | // if the file isn't open, pop up an error: 1691 | else { 1692 | Serial.println("error opening test.csv"); 1693 | } 1694 | } 1695 | 1696 | 1697 | -------------------------------------------------------------------------------- /Software example/ScrewTighteningRobot/cylinderPositionMonitoring.h: -------------------------------------------------------------------------------- 1 | // This class can be called for each cylinder in the system, in order to generate cylinder position error messages 2 | 3 | // Header--------------------------------------------------------- 4 | class cylinderPosition { 5 | public: 6 | cylinderPosition(); 7 | boolean monitoringRlAl(int output, int sensorRL, int sensorAL); 8 | private: 9 | int _output; 10 | int _sensorRL; 11 | int _sensorAL; 12 | unsigned long _now; 13 | }; 14 | 15 | // Code------------------------------------------------------------ 16 | cylinderPosition::cylinderPosition() { 17 | } 18 | boolean cylinderPosition::monitoringRlAl(int output, int sensorRL, int sensorAL) { 19 | _output = digitalRead(output); 20 | _sensorRL = digitalRead(sensorRL); 21 | _sensorAL = digitalRead(sensorAL); 22 | 23 | if (_output && _sensorAL && !_sensorRL || !_output && _sensorRL && !_sensorAL) { // if end position is OK 24 | _now = millis(); // reset error delay time 25 | } 26 | 27 | if (millis() > _now + 2000) { // if position > 2s not OK 28 | return true; 29 | } else { 30 | return false; 31 | } 32 | } 33 | 34 | 35 | -------------------------------------------------------------------------------- /Software example/ScrewTighteningRobot/offsets.h: -------------------------------------------------------------------------------- 1 | // ======================================================================================================= 2 | // DEFINE YXZ OFFSETS FOR ALL 10 SCREW PATTERNS 3 | // ======================================================================================================= 4 | // 5 | 6 | // Offset values are specified as X, Y, Z coordinates from the reference switch to the first screw in the pattern 7 | 8 | float offset[numberOfPrograms][3] = { 9 | {144, 110, -75.5}, // Program #1 (for torque calibration) 10 | {61.7, 65, -104}, // Program #2 11 | {62, 65, -104}, // Program #3 12 | {62, 65, -104}, // Program #4 13 | {62, 101, -104}, // Program #5 14 | {62, 65, -104}, // Program #6 15 | {62, 64.7, -104}, // Program #7 16 | {62, 65, -104}, // Program #8 17 | {74, 110, -104}, // Program #9 18 | {62, 65, -104}, // Program #10 Reserve 19 | {62, 65, -104}, // Program #11 Reserve 20 | {62, 65, -104}, // Program #12 Reserve 21 | {62, 65, -104}, // Program #13 Reserve 22 | {62, 65, -104}, // Program #14 Reserve 23 | {62, 65, -104}, // Program #15 Reserve 24 | {62, 65, -104}, // Program #16 Reserve 25 | {62, 65, -104}, // Program #17 Reserve 26 | {62, 65, -104}, // Program #18 Reserve 27 | {62, 65, -104}, // Program #19 Reserve 28 | {62, 65, -104} // Program #20 Reserve 29 | }; 30 | -------------------------------------------------------------------------------- /Software example/ScrewTighteningRobot/patterns.h: -------------------------------------------------------------------------------- 1 | // 2 | // ======================================================================================================= 3 | // DEFINE SCREW PATTERN ARRAYS 4 | // ======================================================================================================= 5 | // 6 | 7 | // PATTERN #1 (Program 1)For torque calibration------- 8 | const unsigned int numberOfScrews1 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 9 | 10 | const float pos1[numberOfScrews1][2] PROGMEM = { 11 | {0, 0}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 12 | 13 | {0, 0}, // Screw #1 X, Y Position 14 | }; 15 | 16 | // PATTERN #2 (Program 2) ----- 17 | const unsigned int numberOfScrews2 = 5; // Number of Screws + 1 (for Cycle End Position) = size of array! 18 | 19 | const float pos2[numberOfScrews2][2] PROGMEM = { 20 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 21 | 22 | {0, 0}, // Screw #1 X, Y Position 23 | {0, 29.7}, // Screw #2 24 | {60, 0}, // Screw #3 25 | {60, 29.7}, // Screw #4 26 | }; 27 | 28 | // PATTERN #3 (Program 3) --------- 29 | const unsigned int numberOfScrews3 = 7; // Number of Screws + 1 (for Cycle End Position) = size of array! 30 | 31 | const float pos3[numberOfScrews3][2] PROGMEM = { 32 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 33 | 34 | {0, 43.2}, // Screw #1 X, Y Position 35 | {0, 25.2}, // Screw #2 36 | {0, 0}, 37 | {60, 0}, 38 | {60, 25.2}, 39 | {60, 43.2}, 40 | }; 41 | 42 | // PATTERN #4 (Program 4) --------- 43 | const unsigned int numberOfScrews4 = 7; // Number of Screws + 1 (for Cycle End Position) = size of array! 44 | 45 | const float pos4[numberOfScrews4][2] PROGMEM = { 46 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 47 | 48 | {0, 47.9}, // Screw #1 X, Y Position 49 | {0, 27.4}, // Screw #2 50 | {0, 0}, // etc... 51 | {60, 0}, 52 | {60, 27.4}, 53 | {60, 47.9}, 54 | }; 55 | 56 | // PATTERN #5 (Program 5) --------- 57 | const unsigned int numberOfScrews5 = 5; // Number of Screws + 1 (for Cycle End Position) = size of array! 58 | 59 | const float pos5[numberOfScrews5][2] PROGMEM = { 60 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 61 | 62 | {0, 0}, // Screw #1 X, Y Position 63 | {0, 7}, // Screw #2 64 | {60, 0}, // etc... 65 | {60, 7}, 66 | }; 67 | 68 | // PATTERN #6 (Program 6) --------- 69 | const unsigned int numberOfScrews6 = 7; // Number of Screws + 1 (for Cycle End Position) = size of array! 70 | 71 | const float pos6[numberOfScrews6][2] PROGMEM = { 72 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 73 | 74 | {0, 15.8}, // Screw #1 X, Y Position 75 | {0, 0}, // Screw #2 76 | {0, 45.4}, // etc... 77 | {60, 15.8}, 78 | {60, 0}, 79 | {60, 45.4}, 80 | }; 81 | 82 | // PATTERN #7 (Program 7) --------- 83 | const unsigned int numberOfScrews7 = 7; // Number of Screws + 1 (for Cycle End Position) = size of array! 84 | 85 | const float pos7[numberOfScrews7][2] PROGMEM = { 86 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 87 | 88 | {0, 20.5}, // Screw #1 X, Y Position 89 | {0, 0}, // Screw #2 90 | {0, 47.9}, // etc... 91 | {60, 20.5}, 92 | {60, 0}, 93 | {60, 47.9}, 94 | }; 95 | 96 | // PATTERN #8 (Program 8) --------- 97 | const unsigned int numberOfScrews8 = 5; // Number of Screws + 1 (for Cycle End Position) = size of array! 98 | 99 | const float pos8[numberOfScrews8][2] PROGMEM = { 100 | {30, 100}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 101 | 102 | {0, 0}, // Screw #1 X, Y Position 103 | {0, 25.3}, // Screw #2 104 | {60, 0}, // etc... 105 | {60, 25.3}, 106 | }; 107 | 108 | // PATTERN #9 (Program 9) ---------- 109 | const unsigned int numberOfScrews9 = 3; // Number of Screws + 1 (for Cycle End Position) = size of array! 110 | 111 | const float pos9[numberOfScrews9][2] PROGMEM = { 112 | {18, 50}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 113 | 114 | {0, 0}, // Screw #1 X, Y Position 115 | {36.1, 0}, // Screw #2 116 | }; 117 | 118 | // PATTERN #10 (Program 10)(Reserve)------------------------------ 119 | const unsigned int numberOfScrews10 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 120 | 121 | const float pos10[numberOfScrews10][2] PROGMEM = { 122 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 123 | 124 | {0, 0}, // Screw #1 X, Y Position 125 | }; 126 | 127 | // PATTERN #11 (Program 12)(Reserve)------------------------------ 128 | const unsigned int numberOfScrews11 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 129 | 130 | const float pos11[numberOfScrews11][2] PROGMEM = { 131 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 132 | 133 | {0, 0}, // Screw #1 X, Y Position 134 | }; 135 | 136 | // PATTERN #12 (Program 12)(Reserve)------------------------------ 137 | const unsigned int numberOfScrews12 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 138 | 139 | const float pos12[numberOfScrews12][2] PROGMEM = { 140 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 141 | 142 | {0, 0}, // Screw #1 X, Y Position 143 | }; 144 | 145 | // PATTERN #13 (Program 13)(Reserve)------------------------------ 146 | const unsigned int numberOfScrews13 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 147 | 148 | const float pos13[numberOfScrews13][2] PROGMEM = { 149 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 150 | 151 | {0, 0}, // Screw #1 X, Y Position 152 | }; 153 | 154 | // PATTERN #14 (Program 14)(Reserve)------------------------------ 155 | const unsigned int numberOfScrews14 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 156 | 157 | const float pos14[numberOfScrews14][2] PROGMEM = { 158 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 159 | 160 | {0, 0}, // Screw #1 X, Y Position 161 | }; 162 | 163 | // PATTERN #15 (Program 15)(Reserve)------------------------------ 164 | const unsigned int numberOfScrews15 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 165 | 166 | const float pos15[numberOfScrews15][2] PROGMEM = { 167 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 168 | 169 | {0, 0}, // Screw #1 X, Y Position 170 | }; 171 | 172 | // PATTERN #16 (Program 16)(Reserve)------------------------------ 173 | const unsigned int numberOfScrews16 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 174 | 175 | const float pos16[numberOfScrews16][2] PROGMEM = { 176 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 177 | 178 | {0, 0}, // Screw #1 X, Y Position 179 | }; 180 | 181 | // PATTERN #17 (Program 17)(Reserve)------------------------------ 182 | const unsigned int numberOfScrews17 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 183 | 184 | const float pos17[numberOfScrews17][2] PROGMEM = { 185 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 186 | 187 | {0, 0}, // Screw #1 X, Y Position 188 | }; 189 | 190 | // PATTERN #18 (Program 18)(Reserve)------------------------------ 191 | const unsigned int numberOfScrews18 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 192 | 193 | const float pos18[numberOfScrews18][2] PROGMEM = { 194 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 195 | 196 | {0, 0}, // Screw #1 X, Y Position 197 | }; 198 | 199 | // PATTERN #19 (Program 19)(Reserve)------------------------------ 200 | const unsigned int numberOfScrews19 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 201 | 202 | const float pos19[numberOfScrews19][2] PROGMEM = { 203 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 204 | 205 | {0, 0}, // Screw #1 X, Y Position 206 | }; 207 | 208 | // PATTERN #20 (Program 20)(Reserve)------------------------------ 209 | const unsigned int numberOfScrews20 = 2; // Number of Screws + 1 (for Cycle End Position) = size of array! 210 | 211 | const float pos20[numberOfScrews20][2] PROGMEM = { 212 | {30, 65}, // Screw #0 (Cycle End) {X, Y} = X, Y Position 213 | 214 | {0, 0}, // Screw #1 X, Y Position 215 | }; 216 | -------------------------------------------------------------------------------- /Software example/ScrewTighteningRobot/typeVariables.h: -------------------------------------------------------------------------------- 1 | // 2 | // ======================================================================================================= 3 | // TYPE SPECIFIC Z AXIS VARIABLES, SCREW PITCH, SCREW RPM 4 | // ======================================================================================================= 5 | // 6 | 7 | void typeVariables() { 8 | switch (activeProgram) { 9 | case 1: // Program #1 (für Drehmoment Kalibrierung) 10 | // Define Z Axis heights 11 | zError = 75; 12 | zRetract = 20; 13 | zSuck = 20; 14 | zScrewBegin = -5.0; 15 | zScrewingDepth = 12.0; 16 | // Define number of screws in the pattern 17 | numberOfScrews = numberOfScrews1; 18 | // Define screw pitch 19 | screwPitch = 1.12; 20 | // Define screw RPM 21 | screwRpm = 400; 22 | // screwing rotation angle tolerances 23 | spindleDegreesMin = 0; 24 | spindleDegreesMax = 6000; // 6000° = limit inactive! 25 | break; 26 | 27 | case 2: // Program #2 28 | // Define Z Axis heights 29 | zError = 100; 30 | zRetract = 50; 31 | zSuck = 20; 32 | zScrewBegin = -8.0; 33 | zScrewingDepth = 9.0; 34 | // Define number of screws in the pattern 35 | numberOfScrews = numberOfScrews2; 36 | // Define screw pitch 37 | screwPitch = 1.12; 38 | // Define screw RPM 39 | screwRpm = 400; 40 | // screwing rotation angle tolerances 41 | spindleDegreesMin = 800; 42 | spindleDegreesMax = 6000; 43 | break; 44 | 45 | case 3: // Program #3 46 | // Define Z Axis heights 47 | zError = 100; 48 | zRetract = 50; 49 | zSuck = 20; 50 | zScrewBegin = -7.0; 51 | zScrewingDepth = 9.0; 52 | // Define number of screws in the pattern 53 | numberOfScrews = numberOfScrews3; 54 | // Define screw pitch 55 | screwPitch = 1.12; 56 | // Define screw RPM 57 | screwRpm = 400; 58 | // screwing rotation angle tolerances 59 | spindleDegreesMin = 800; 60 | spindleDegreesMax = 6000; 61 | break; 62 | 63 | case 4: // Program #4 64 | // Define Z Axis heights 65 | zError = 100; 66 | zRetract = 50; 67 | zSuck = 20; 68 | zScrewBegin = -8.0; 69 | zScrewingDepth = 9.0; 70 | // Define number of screws in the pattern 71 | numberOfScrews = numberOfScrews4; 72 | // Define screw pitch 73 | screwPitch = 1.12; 74 | // Define screw RPM 75 | screwRpm = 400; 76 | // screwing rotation angle tolerances 77 | spindleDegreesMin = 800; 78 | spindleDegreesMax = 6000; 79 | break; 80 | 81 | case 5: // Program #5 82 | // Define Z Axis heights 83 | zError = 100; 84 | zRetract = 50; 85 | zSuck = 20; 86 | zScrewBegin = -8.0; 87 | zScrewingDepth = 9.0; 88 | // Define number of screws in the pattern 89 | numberOfScrews = numberOfScrews5; 90 | // Define screw pitch 91 | screwPitch = 1.12; 92 | // Define screw RPM 93 | screwRpm = 400; 94 | // screwing rotation angle tolerances 95 | spindleDegreesMin = 800; 96 | spindleDegreesMax = 6000; 97 | break; 98 | 99 | case 6: // Program #6 100 | // Define Z Axis heights 101 | zError = 100; 102 | zRetract = 50; 103 | zSuck = 20; 104 | zScrewBegin = -8.0; 105 | zScrewingDepth = 9.0; 106 | // Define number of screws in the pattern 107 | numberOfScrews = numberOfScrews6; 108 | // Define screw pitch 109 | screwPitch = 1.12; 110 | // Define screw RPM 111 | screwRpm = 400; 112 | // screwing rotation angle tolerances 113 | spindleDegreesMin = 800; 114 | spindleDegreesMax = 6000; 115 | break; 116 | 117 | case 7: // Program #7 118 | // Define Z Axis heights 119 | zError = 100; 120 | zRetract = 50; 121 | zSuck = 20; 122 | zScrewBegin = -8.0; 123 | zScrewingDepth = 9.0; 124 | // Define number of screws in the pattern 125 | numberOfScrews = numberOfScrews7; 126 | // Define screw pitch 127 | screwPitch = 1.12; 128 | // Define screw RPM 129 | screwRpm = 400; 130 | // screwing rotation angle tolerances 131 | spindleDegreesMin = 800; 132 | spindleDegreesMax = 6000; 133 | break; 134 | 135 | case 8: // Program #8 136 | // Define Z Axis heights 137 | zError = 100; 138 | zRetract = 50; 139 | zSuck = 20; 140 | zScrewBegin = -8.0; 141 | zScrewingDepth = 9.0; 142 | // Define number of screws in the pattern 143 | numberOfScrews = numberOfScrews8; 144 | // Define screw pitch 145 | screwPitch = 1.12; 146 | // Define screw RPM 147 | screwRpm = 400; 148 | // screwing rotation angle tolerances 149 | spindleDegreesMin = 800; 150 | spindleDegreesMax = 6000; 151 | break; 152 | 153 | case 9: // Program #9 154 | // Define Z Axis heights 155 | zError = 100; 156 | zRetract = 50; 157 | zSuck = 20; 158 | zScrewBegin = -8.0; 159 | zScrewingDepth = 9.0; 160 | // Define number of screws in the pattern 161 | numberOfScrews = numberOfScrews9; 162 | // Define screw pitch 163 | screwPitch = 1.12; 164 | // Define screw RPM 165 | screwRpm = 400; 166 | // screwing rotation angle tolerances 167 | spindleDegreesMin = 750; 168 | spindleDegreesMax = 6000; 169 | break; 170 | 171 | case 10: // Program #10 172 | // Define Z Axis heights 173 | zError = 100; 174 | zRetract = 50; 175 | zSuck = 20; 176 | zScrewBegin = -8.0; 177 | zScrewingDepth = 9.0; 178 | // Define number of screws in the pattern 179 | numberOfScrews = numberOfScrews10; 180 | // Define screw pitch 181 | screwPitch = 1.12; 182 | // Define screw RPM 183 | screwRpm = 400; 184 | // screwing rotation angle tolerances 185 | spindleDegreesMin = 800; 186 | spindleDegreesMax = 6000; 187 | break; 188 | 189 | case 11: // Program #11 190 | // Define Z Axis heights 191 | zError = 100; 192 | zRetract = 50; 193 | zSuck = 20; 194 | zScrewBegin = -8.0; 195 | zScrewingDepth = 9.0; 196 | // Define number of screws in the pattern 197 | numberOfScrews = numberOfScrews11; 198 | // Define screw pitch 199 | screwPitch = 1.12; 200 | // Define screw RPM 201 | screwRpm = 400; 202 | // screwing rotation angle tolerances 203 | spindleDegreesMin = 800; 204 | spindleDegreesMax = 6000; 205 | break; 206 | 207 | case 12: // Program #12 208 | // Define Z Axis heights 209 | zError = 100; 210 | zRetract = 50; 211 | zSuck = 20; 212 | zScrewBegin = -8.0; 213 | zScrewingDepth = 9.0; 214 | // Define number of screws in the pattern 215 | numberOfScrews = numberOfScrews12; 216 | // Define screw pitch 217 | screwPitch = 1.12; 218 | // Define screw RPM 219 | screwRpm = 400; 220 | // screwing rotation angle tolerances 221 | spindleDegreesMin = 800; 222 | spindleDegreesMax = 6000; 223 | break; 224 | 225 | case 13: // Program #13 226 | // Define Z Axis heights 227 | zError = 100; 228 | zRetract = 50; 229 | zSuck = 20; 230 | zScrewBegin = -7.0; 231 | zScrewingDepth = 9.0; 232 | // Define number of screws in the pattern 233 | numberOfScrews = numberOfScrews13; 234 | // Define screw pitch 235 | screwPitch = 1.12; 236 | // Define screw RPM 237 | screwRpm = 400; 238 | // screwing rotation angle tolerances 239 | spindleDegreesMin = 800; 240 | spindleDegreesMax = 6000; 241 | break; 242 | 243 | case 14: // Program #14 244 | // Define Z Axis heights 245 | zError = 100; 246 | zRetract = 50; 247 | zSuck = 20; 248 | zScrewBegin = -8.0; 249 | zScrewingDepth = 9.0; 250 | // Define number of screws in the pattern 251 | numberOfScrews = numberOfScrews14; 252 | // Define screw pitch 253 | screwPitch = 1.12; 254 | // Define screw RPM 255 | screwRpm = 400; 256 | // screwing rotation angle tolerances 257 | spindleDegreesMin = 800; 258 | spindleDegreesMax = 6000; 259 | break; 260 | 261 | case 15: // Program #15 262 | // Define Z Axis heights 263 | zError = 100; 264 | zRetract = 50; 265 | zSuck = 20; 266 | zScrewBegin = -8.0; 267 | zScrewingDepth = 9.0; 268 | // Define number of screws in the pattern 269 | numberOfScrews = numberOfScrews15; 270 | // Define screw pitch 271 | screwPitch = 1.12; 272 | // Define screw RPM 273 | screwRpm = 400; 274 | // screwing rotation angle tolerances 275 | spindleDegreesMin = 800; 276 | spindleDegreesMax = 6000; 277 | break; 278 | 279 | case 16: // Program #16 280 | // Define Z Axis heights 281 | zError = 100; 282 | zRetract = 50; 283 | zSuck = 20; 284 | zScrewBegin = -7.0; 285 | zScrewingDepth = 9.0; 286 | // Define number of screws in the pattern 287 | numberOfScrews = numberOfScrews16; 288 | // Define screw pitch 289 | screwPitch = 1.12; 290 | // Define screw RPM 291 | screwRpm = 400; 292 | // screwing rotation angle tolerances 293 | spindleDegreesMin = 800; 294 | spindleDegreesMax = 6000; 295 | break; 296 | 297 | case 17: // Program #17 298 | // Define Z Axis heights 299 | zError = 100; 300 | zRetract = 50; 301 | zSuck = 20; 302 | zScrewBegin = -8.0; 303 | zScrewingDepth = 9.0; 304 | // Define number of screws in the pattern 305 | numberOfScrews = numberOfScrews17; 306 | // Define screw pitch 307 | screwPitch = 1.12; 308 | // Define screw RPM 309 | screwRpm = 400; 310 | // screwing rotation angle tolerances 311 | spindleDegreesMin = 800; 312 | spindleDegreesMax = 6000; 313 | break; 314 | 315 | case 18: // Program #18 316 | // Define Z Axis heights 317 | zError = 100; 318 | zRetract = 50; 319 | zSuck = 20; 320 | zScrewBegin = -8.0; 321 | zScrewingDepth = 9.0; 322 | // Define number of screws in the pattern 323 | numberOfScrews = numberOfScrews18; 324 | // Define screw pitch 325 | screwPitch = 1.12; 326 | // Define screw RPM 327 | screwRpm = 400; 328 | // screwing rotation angle tolerances 329 | spindleDegreesMin = 800; 330 | spindleDegreesMax = 6000; 331 | break; 332 | 333 | case 19: // Program #19 334 | // Define Z Axis heights 335 | zError = 100; 336 | zRetract = 50; 337 | zSuck = 20; 338 | zScrewBegin = -8.0; 339 | zScrewingDepth = 9.0; 340 | // Define number of screws in the pattern 341 | numberOfScrews = numberOfScrews19; 342 | // Define screw pitch 343 | screwPitch = 1.12; 344 | // Define screw RPM 345 | screwRpm = 400; 346 | // screwing rotation angle tolerances 347 | spindleDegreesMin = 800; 348 | spindleDegreesMax = 6000; 349 | break; 350 | 351 | case 20: // Program #20 352 | // Define Z Axis heights 353 | zError = 100; 354 | zRetract = 50; 355 | zSuck = 20; 356 | zScrewBegin = -8.0; 357 | zScrewingDepth = 9.0; 358 | // Define number of screws in the pattern 359 | numberOfScrews = numberOfScrews20; 360 | // Define screw pitch 361 | screwPitch = 1.12; 362 | // Define screw RPM 363 | screwRpm = 400; 364 | // screwing rotation angle tolerances 365 | spindleDegreesMin = 800; 366 | spindleDegreesMax = 6000; 367 | break; 368 | } 369 | } 370 | -------------------------------------------------------------------------------- /Stepper_Board/Stepper Board_V1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/Stepper_Board/Stepper Board_V1.0.pdf -------------------------------------------------------------------------------- /Stepper_Board/eagle.epf: -------------------------------------------------------------------------------- 1 | [Eagle] 2 | Version="07 05 00" 3 | Platform="Mac OS X" 4 | Serial="62191E841E-LSR-WLM-1EL" 5 | Globals="Globals" 6 | Desktop="Desktop" 7 | 8 | [Globals] 9 | AutoSaveProject=1 10 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/19inch.lbr" 11 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/40xx.lbr" 12 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/41xx.lbr" 13 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/45xx.lbr" 14 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ac-logic.lbr" 15 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74ttl-din.lbr" 16 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-eu.lbr" 17 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-de.lbr" 18 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-little-us.lbr" 19 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/74xx-us.lbr" 20 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/751xx.lbr" 21 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/IQD-Frequency-Products.lbr" 22 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/advanced-test-technologies.lbr" 23 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/agilent-technologies.lbr" 24 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/allegro.lbr" 25 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-II.lbr" 26 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-cyclone-III.lbr" 27 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera-stratix-iv.lbr" 28 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/altera.lbr" 29 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/am29-memory.lbr" 30 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd-mach.lbr" 31 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amd.lbr" 32 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/amis.lbr" 33 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/analog-devices.lbr" 34 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/aplus.lbr" 35 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ase.lbr" 36 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/atmel.lbr" 37 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/austriamicrosystems.lbr" 38 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/avago.lbr" 39 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/axis.lbr" 40 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/battery.lbr" 41 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/belton-engineering.lbr" 42 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/burr-brown.lbr" 43 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/busbar.lbr" 44 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/buzzer.lbr" 45 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/c-trimm.lbr" 46 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/california-micro-devices.lbr" 47 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/capacitor-wima.lbr" 48 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/chipcard-siemens.lbr" 49 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cirrus-logic.lbr" 50 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-3m.lbr" 51 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-4ucon.lbr" 52 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-champ.lbr" 53 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-micromatch.lbr" 54 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt.lbr" 55 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-mt6.lbr" 56 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-quick.lbr" 57 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp-te.lbr" 58 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amp.lbr" 59 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-amphenol.lbr" 60 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-avx.lbr" 61 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-berg.lbr" 62 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-bosch.lbr" 63 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-chipcard-iso7816.lbr" 64 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-coax.lbr" 65 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-commcon.lbr" 66 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-conrad.lbr" 67 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cpci.lbr" 68 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cui.lbr" 69 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-cypressindustries.lbr" 70 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-deutsch.lbr" 71 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-dil.lbr" 72 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ebyelectro.lbr" 73 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-elco.lbr" 74 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-erni.lbr" 75 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-faston.lbr" 76 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-fci.lbr" 77 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-friwo.lbr" 78 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-garry.lbr" 79 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-h.lbr" 80 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-ml.lbr" 81 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting-v.lbr" 82 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-harting.lbr" 83 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirose.lbr" 84 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-hirschmann.lbr" 85 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jack.lbr" 86 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jae.lbr" 87 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-jst.lbr" 88 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kycon.lbr" 89 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-kyocera-elco.lbr" 90 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lemo.lbr" 91 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-leotronics.lbr" 92 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lsta.lbr" 93 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lstb.lbr" 94 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-lumberg.lbr" 95 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ml.lbr" 96 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-molex.lbr" 97 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-neutrik_ag.lbr" 98 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-omron.lbr" 99 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panasonic.lbr" 100 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-panduit.lbr" 101 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc.lbr" 102 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pc104.lbr" 103 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-254.lbr" 104 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-3.81.lbr" 105 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-350.lbr" 106 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-500.lbr" 107 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-508.lbr" 108 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-762.lbr" 109 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-me_max.lbr" 110 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-mkds_5.lbr" 111 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-phoenix-smkdsp.lbr" 112 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-ptr500.lbr" 113 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-pulse.lbr" 114 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-rib.lbr" 115 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-samtec.lbr" 116 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shallin.lbr" 117 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-shiua-chyuan.lbr" 118 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stewart.lbr" 119 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-stocko.lbr" 120 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-subd.lbr" 121 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-sullinselectronics.lbr" 122 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-thomas-betts.lbr" 123 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tyco.lbr" 124 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-tycoelectronics.lbr" 125 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-vg.lbr" 126 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-500.lbr" 127 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago-508.lbr" 128 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago.lbr" 129 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wago255.lbr" 130 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-weidmueller-sl35.lbr" 131 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-wenzhou-yihua.lbr" 132 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-xmultiple.lbr" 133 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/con-yamaichi.lbr" 134 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/crystal.lbr" 135 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/csr.lbr" 136 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/cypress.lbr" 137 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/davicom.lbr" 138 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dc-dc-converter.lbr" 139 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dimensions.lbr" 140 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/diode.lbr" 141 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/discrete.lbr" 142 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-hp.lbr" 143 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-kingbright.lbr" 144 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/display-lcd.lbr" 145 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/docu-dummy.lbr" 146 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/dom-key.lbr" 147 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/eagle-ltspice.lbr" 148 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ecl.lbr" 149 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/em-microelectronic.lbr" 150 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/etx-board.lbr" 151 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/exar.lbr" 152 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fairchild-semic.lbr" 153 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/farnell.lbr" 154 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-hp.lbr" 155 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fiber-optic-siemens.lbr" 156 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fifo.lbr" 157 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/flexipanel.lbr" 158 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fox-electronics.lbr" 159 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/frames.lbr" 160 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/freescale.lbr" 161 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ftdichip.lbr" 162 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fujitsu.lbr" 163 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/fuse.lbr" 164 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/gennum.lbr" 165 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/halo-electronics.lbr" 166 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/heatsink.lbr" 167 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holes.lbr" 168 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/holtek.lbr" 169 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ic-package.lbr" 170 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-coilcraft.lbr" 171 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-neosid.lbr" 172 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductor-nkl.lbr" 173 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/inductors.lbr" 174 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon-tricore.lbr" 175 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/infineon.lbr" 176 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil-techwell.lbr" 177 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/intersil.lbr" 178 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ir.lbr" 179 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/isd.lbr" 180 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/johanson-technology.lbr" 181 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jump-0r-smd.lbr" 182 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/jumper.lbr" 183 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lantronix.lbr" 184 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lattice.lbr" 185 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lc-filter.lbr" 186 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-7-segment.lbr" 187 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-citizen-electronics.lbr" 188 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led-lumiled.lbr" 189 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/led.lbr" 190 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lem.lbr" 191 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear-technology.lbr" 192 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linear.lbr" 193 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/linx.lbr" 194 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/logo.lbr" 195 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lprs.lbr" 196 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lsi-computer-systems.lbr" 197 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/lumiled.lbr" 198 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/marks.lbr" 199 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxim.lbr" 200 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/maxstream.lbr" 201 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/melexis.lbr" 202 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-hitachi.lbr" 203 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-idt.lbr" 204 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-micron.lbr" 205 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-motorola-dram.lbr" 206 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-nec.lbr" 207 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-samsung.lbr" 208 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory-sram.lbr" 209 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/memory.lbr" 210 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mems.lbr" 211 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micrel.lbr" 212 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-cyrod.lbr" 213 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-fujitsu.lbr" 214 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-harris.lbr" 215 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-hitachi.lbr" 216 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-infineon.lbr" 217 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-intel.lbr" 218 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-mc68000.lbr" 219 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-motorola.lbr" 220 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-philips.lbr" 221 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-renesas.lbr" 222 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-samsung.lbr" 223 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micro-siemens.lbr" 224 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microchip.lbr" 225 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micron.lbr" 226 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/micronas.lbr" 227 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microphon.lbr" 228 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/microwave.lbr" 229 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/midori-sensor.lbr" 230 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/minicircuits.lbr" 231 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/mitsubishi-semiconductor.lbr" 232 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/motorola-sensor-driver.lbr" 233 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-filter.lbr" 234 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/murata-sensor.lbr" 235 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nanotec.lbr" 236 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-instruments.lbr" 237 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/national-semiconductor.lbr" 238 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec-lqfp100-pack.lbr" 239 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nec.lbr" 240 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/nrj-semiconductor.lbr" 241 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/omnivision.lbr" 242 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/on-semiconductor.lbr" 243 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-3000.lbr" 244 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell-4000.lbr" 245 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-honeywell.lbr" 246 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-micro-linear.lbr" 247 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-trans-siemens.lbr" 248 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-transmittter-hp.lbr" 249 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/opto-vishay.lbr" 250 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/optocoupler.lbr" 251 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pal.lbr" 252 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/philips-semiconductors.lbr" 253 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/photo-elements.lbr" 254 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/piher.lbr" 255 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pinhead.lbr" 256 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plcc-socket.lbr" 257 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pld-intel.lbr" 258 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/plxtech.lbr" 259 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-vitrohm.lbr" 260 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot-xicor.lbr" 261 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/pot.lbr" 262 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ptc-ntc.lbr" 263 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/quantum-research-group.lbr" 264 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rcl.lbr" 265 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/recom-international.lbr" 266 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rectifier.lbr" 267 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages-longpad.lbr" 268 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/ref-packages.lbr" 269 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/relay.lbr" 270 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/renesas.lbr" 271 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-bourns.lbr" 272 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-dil.lbr" 273 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-net.lbr" 274 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-power.lbr" 275 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-ruf.lbr" 276 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-shunt.lbr" 277 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor-sil.lbr" 278 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/resistor.lbr" 279 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-micro-devices.lbr" 280 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rf-solutions.lbr" 281 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/rohm.lbr" 282 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/roundsolutions.lbr" 283 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/semicon-smd-ipc.lbr" 284 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-comus-group.lbr" 285 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-heraeus.lbr" 286 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sensor-infratec.lbr" 287 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sharp.lbr" 288 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/silabs.lbr" 289 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sim-technology.lbr" 290 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/sipex.lbr" 291 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-ipc.lbr" 292 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/smd-special.lbr" 293 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solomon-systech.lbr" 294 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/solpad.lbr" 295 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/speaker.lbr" 296 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special-drill.lbr" 297 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/special.lbr" 298 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/st-microelectronics.lbr" 299 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/stm32xx.lbr" 300 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supertex.lbr" 301 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply1.lbr" 302 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/supply2.lbr" 303 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-alps.lbr" 304 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-coto.lbr" 305 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-dil.lbr" 306 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-misc.lbr" 307 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-omron.lbr" 308 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-raychem.lbr" 309 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch-reed.lbr" 310 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/switch.lbr" 311 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telcom.lbr" 312 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telecontrolli.lbr" 313 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/telefunken.lbr" 314 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/testpad.lbr" 315 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas-sn55-sn75.lbr" 316 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/texas.lbr" 317 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/toshiba.lbr" 318 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/traco-electronic.lbr" 319 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-bei.lbr" 320 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-hammondmfg.lbr" 321 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-siemens.lbr" 322 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo-xicon.lbr" 323 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trafo.lbr" 324 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transformer-pulse.lbr" 325 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-fet.lbr" 326 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-neu-to92.lbr" 327 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-npn.lbr" 328 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-pnp.lbr" 329 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-power.lbr" 330 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor-small-signal.lbr" 331 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/transistor.lbr" 332 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/triac.lbr" 333 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/trimble.lbr" 334 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/tripas.lbr" 335 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/u-blox.lbr" 336 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/uln-udn.lbr" 337 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg-micrel.lbr" 338 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/v-reg.lbr" 339 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/varistor.lbr" 340 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wafer-scale-psd.lbr" 341 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/wirepad.lbr" 342 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xicor.lbr" 343 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-virtex-v5.lbr" 344 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc18v.lbr" 345 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xc9.lbr" 346 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/xilinx-xcv.lbr" 347 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zetex.lbr" 348 | UsedLibrary="/Applications/EAGLE-7.5.0/lbr/zilog.lbr" 349 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8825_IC.lbr" 350 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_DRV8835.lbr" 351 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/00_custom.lbr" 352 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Aesthetics.lbr" 353 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/SparkFun-Electromechanical.lbr" 354 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/alvarop.lbr" 355 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/con-phoenix-381_l.lbr" 356 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/reprap.lbr" 357 | UsedLibrary="/Volumes/MacData/Users/martinsommer/Documents/eagle/lbr/volks73-molex.lbr" 358 | 359 | [Win_1] 360 | Type="Schematic Editor" 361 | Loc="968 121 2513 1177" 362 | State=0 363 | Number=2 364 | File="Stepper Board.sch" 365 | View="-8.27116 -5.73116 395.413 265.873" 366 | WireWidths=" 0 0.3048 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0.4064 0.1524" 367 | PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 368 | PadDrills=" 0.5 0.6 0.7 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.8" 369 | ViaDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 370 | ViaDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 371 | HoleDrills=" 0.5 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 2 2.2 2.8 3.2 0.6" 372 | TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" 373 | PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" 374 | PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" 375 | MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" 376 | DimensionWidths=" 0 0.127 0.254 0.1 0.26 0.13" 377 | DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" 378 | DimensionExtLengths=" 1.27 2.54 1 2 3 0" 379 | DimensionExtOffsets=" 1.27 2.54 1 2 3 0" 380 | SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" 381 | WireBend=0 382 | WireBendSet=31 383 | WireCap=1 384 | MiterStyle=0 385 | PadShape=0 386 | ViaShape=0 387 | PolygonPour=0 388 | PolygonRank=0 389 | PolygonThermals=1 390 | PolygonOrphans=0 391 | TextRatio=8 392 | DimensionUnit=1 393 | DimensionPrecision=2 394 | DimensionShowUnit=0 395 | PinDirection=3 396 | PinFunction=0 397 | PinLength=2 398 | PinVisible=3 399 | SwapLevel=0 400 | ArcDirection=0 401 | AddLevel=2 402 | PadsSameType=0 403 | Layer=91 404 | Sheet="1" 405 | 406 | [Win_2] 407 | Type="Control Panel" 408 | Loc="1167 73 2208 829" 409 | State=2 410 | Number=0 411 | 412 | [Desktop] 413 | Screen="2560 1440" 414 | Window="Win_1" 415 | Window="Win_2" 416 | -------------------------------------------------------------------------------- /bottom view.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/bottom view.jpg -------------------------------------------------------------------------------- /top view.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/top view.jpg -------------------------------------------------------------------------------- /wired.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheDIYGuy999/Mega_PLC/d9ac300b9046a384f1de340e54f88f96034546c8/wired.jpg --------------------------------------------------------------------------------