From 3ccc109b7f87116281ea85050e47a9cc36766df9 Mon Sep 17 00:00:00 2001 From: Jake Read <jake.read@cba.mit.edu> Date: Mon, 17 May 2021 13:44:51 -0400 Subject: [PATCH] stepper homing routine --- 2020-06_ucbus-stepper-melted/eagle.epf | 325 ++++++++++++++++-- 2020-06_ucbus-stepper-module/eagle.epf | 6 +- .../src/main.cpp | 107 ++++++ 3 files changed, 410 insertions(+), 28 deletions(-) diff --git a/2020-06_ucbus-stepper-melted/eagle.epf b/2020-06_ucbus-stepper-melted/eagle.epf index e33215b..fa1582d 100644 --- a/2020-06_ucbus-stepper-melted/eagle.epf +++ b/2020-06_ucbus-stepper-melted/eagle.epf @@ -6,20 +6,295 @@ Desktop="Desktop" [Globals] AutoSaveProject=1 -UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/SparkFun-Eagle-Libraries/SparkFun-Connectors.lbr" +UsedLibraryUrn="urn:adsk.eagle:library:79" +UsedLibraryUrn="urn:adsk.eagle:library:88" +UsedLibraryUrn="urn:adsk.eagle:library:201" +UsedLibraryUrn="urn:adsk.eagle:library:202" +UsedLibraryUrn="urn:adsk.eagle:library:203" +UsedLibraryUrn="urn:adsk.eagle:library:204" +UsedLibraryUrn="urn:adsk.eagle:library:206" +UsedLibraryUrn="urn:adsk.eagle:library:208" +UsedLibraryUrn="urn:adsk.eagle:library:210" +UsedLibraryUrn="urn:adsk.eagle:library:211" +UsedLibraryUrn="urn:adsk.eagle:library:212" +UsedLibraryUrn="urn:adsk.eagle:library:213" +UsedLibraryUrn="urn:adsk.eagle:library:89" +UsedLibraryUrn="urn:adsk.eagle:library:214" +UsedLibraryUrn="urn:adsk.eagle:library:215" +UsedLibraryUrn="urn:adsk.eagle:library:218" +UsedLibraryUrn="urn:adsk.eagle:library:220" +UsedLibraryUrn="urn:adsk.eagle:library:221" +UsedLibraryUrn="urn:adsk.eagle:library:222" +UsedLibraryUrn="urn:adsk.eagle:library:224" +UsedLibraryUrn="urn:adsk.eagle:library:226" +UsedLibraryUrn="urn:adsk.eagle:library:229" +UsedLibraryUrn="urn:adsk.eagle:library:230" +UsedLibraryUrn="urn:adsk.eagle:library:90" +UsedLibraryUrn="urn:adsk.eagle:library:231" +UsedLibraryUrn="urn:adsk.eagle:library:233" +UsedLibraryUrn="urn:adsk.eagle:library:234" +UsedLibraryUrn="urn:adsk.eagle:library:235" +UsedLibraryUrn="urn:adsk.eagle:library:236" +UsedLibraryUrn="urn:adsk.eagle:library:237" +UsedLibraryUrn="urn:adsk.eagle:library:238" +UsedLibraryUrn="urn:adsk.eagle:library:239" +UsedLibraryUrn="urn:adsk.eagle:library:240" +UsedLibraryUrn="urn:adsk.eagle:library:241" +UsedLibraryUrn="urn:adsk.eagle:library:93" +UsedLibraryUrn="urn:adsk.eagle:library:242" +UsedLibraryUrn="urn:adsk.eagle:library:243" +UsedLibraryUrn="urn:adsk.eagle:library:244" +UsedLibraryUrn="urn:adsk.eagle:library:245" +UsedLibraryUrn="urn:adsk.eagle:library:248" +UsedLibraryUrn="urn:adsk.eagle:library:250" +UsedLibraryUrn="urn:adsk.eagle:library:251" +UsedLibraryUrn="urn:adsk.eagle:library:252" +UsedLibraryUrn="urn:adsk.eagle:library:255" +UsedLibraryUrn="urn:adsk.eagle:library:256" +UsedLibraryUrn="urn:adsk.eagle:library:94" +UsedLibraryUrn="urn:adsk.eagle:library:258" +UsedLibraryUrn="urn:adsk.eagle:library:259" +UsedLibraryUrn="urn:adsk.eagle:library:260" +UsedLibraryUrn="urn:adsk.eagle:library:261" +UsedLibraryUrn="urn:adsk.eagle:library:262" +UsedLibraryUrn="urn:adsk.eagle:library:263" +UsedLibraryUrn="urn:adsk.eagle:library:264" +UsedLibraryUrn="urn:adsk.eagle:library:265" +UsedLibraryUrn="urn:adsk.eagle:library:266" +UsedLibraryUrn="urn:adsk.eagle:library:267" +UsedLibraryUrn="urn:adsk.eagle:library:96" +UsedLibraryUrn="urn:adsk.eagle:library:269" +UsedLibraryUrn="urn:adsk.eagle:library:270" +UsedLibraryUrn="urn:adsk.eagle:library:272" +UsedLibraryUrn="urn:adsk.eagle:library:273" +UsedLibraryUrn="urn:adsk.eagle:library:274" +UsedLibraryUrn="urn:adsk.eagle:library:275" +UsedLibraryUrn="urn:adsk.eagle:library:276" +UsedLibraryUrn="urn:adsk.eagle:library:278" +UsedLibraryUrn="urn:adsk.eagle:library:279" +UsedLibraryUrn="urn:adsk.eagle:library:281" +UsedLibraryUrn="urn:adsk.eagle:library:97" +UsedLibraryUrn="urn:adsk.eagle:library:283" +UsedLibraryUrn="urn:adsk.eagle:library:284" +UsedLibraryUrn="urn:adsk.eagle:library:285" +UsedLibraryUrn="urn:adsk.eagle:library:287" +UsedLibraryUrn="urn:adsk.eagle:library:288" +UsedLibraryUrn="urn:adsk.eagle:library:289" +UsedLibraryUrn="urn:adsk.eagle:library:290" +UsedLibraryUrn="urn:adsk.eagle:library:291" +UsedLibraryUrn="urn:adsk.eagle:library:293" +UsedLibraryUrn="urn:adsk.eagle:library:294" +UsedLibraryUrn="urn:adsk.eagle:library:98" +UsedLibraryUrn="urn:adsk.eagle:library:296" +UsedLibraryUrn="urn:adsk.eagle:library:297" +UsedLibraryUrn="urn:adsk.eagle:library:298" +UsedLibraryUrn="urn:adsk.eagle:library:300" +UsedLibraryUrn="urn:adsk.eagle:library:302" +UsedLibraryUrn="urn:adsk.eagle:library:303" +UsedLibraryUrn="urn:adsk.eagle:library:304" +UsedLibraryUrn="urn:adsk.eagle:library:307" +UsedLibraryUrn="urn:adsk.eagle:library:312" +UsedLibraryUrn="urn:adsk.eagle:library:313" +UsedLibraryUrn="urn:adsk.eagle:library:99" +UsedLibraryUrn="urn:adsk.eagle:library:314" +UsedLibraryUrn="urn:adsk.eagle:library:315" +UsedLibraryUrn="urn:adsk.eagle:library:317" +UsedLibraryUrn="urn:adsk.eagle:library:318" +UsedLibraryUrn="urn:adsk.eagle:library:319" +UsedLibraryUrn="urn:adsk.eagle:library:320" +UsedLibraryUrn="urn:adsk.eagle:library:322" +UsedLibraryUrn="urn:adsk.eagle:library:323" +UsedLibraryUrn="urn:adsk.eagle:library:324" +UsedLibraryUrn="urn:adsk.eagle:library:325" +UsedLibraryUrn="urn:adsk.eagle:library:102" +UsedLibraryUrn="urn:adsk.eagle:library:327" +UsedLibraryUrn="urn:adsk.eagle:library:328" +UsedLibraryUrn="urn:adsk.eagle:library:331" +UsedLibraryUrn="urn:adsk.eagle:library:332" +UsedLibraryUrn="urn:adsk.eagle:library:334" +UsedLibraryUrn="urn:adsk.eagle:library:335" +UsedLibraryUrn="urn:adsk.eagle:library:336" +UsedLibraryUrn="urn:adsk.eagle:library:337" +UsedLibraryUrn="urn:adsk.eagle:library:338" +UsedLibraryUrn="urn:adsk.eagle:library:339" +UsedLibraryUrn="urn:adsk.eagle:library:80" +UsedLibraryUrn="urn:adsk.eagle:library:105" +UsedLibraryUrn="urn:adsk.eagle:library:341" +UsedLibraryUrn="urn:adsk.eagle:library:342" +UsedLibraryUrn="urn:adsk.eagle:library:343" +UsedLibraryUrn="urn:adsk.eagle:library:344" +UsedLibraryUrn="urn:adsk.eagle:library:346" +UsedLibraryUrn="urn:adsk.eagle:library:347" +UsedLibraryUrn="urn:adsk.eagle:library:350" +UsedLibraryUrn="urn:adsk.eagle:library:351" +UsedLibraryUrn="urn:adsk.eagle:library:353" +UsedLibraryUrn="urn:adsk.eagle:library:358" +UsedLibraryUrn="urn:adsk.eagle:library:107" +UsedLibraryUrn="urn:adsk.eagle:library:360" +UsedLibraryUrn="urn:adsk.eagle:library:361" +UsedLibraryUrn="urn:adsk.eagle:library:362" +UsedLibraryUrn="urn:adsk.eagle:library:364" +UsedLibraryUrn="urn:adsk.eagle:library:366" +UsedLibraryUrn="urn:adsk.eagle:library:367" +UsedLibraryUrn="urn:adsk.eagle:library:368" +UsedLibraryUrn="urn:adsk.eagle:library:369" +UsedLibraryUrn="urn:adsk.eagle:library:371" +UsedLibraryUrn="urn:adsk.eagle:library:372" +UsedLibraryUrn="urn:adsk.eagle:library:109" +UsedLibraryUrn="urn:adsk.eagle:library:373" +UsedLibraryUrn="urn:adsk.eagle:library:374" +UsedLibraryUrn="urn:adsk.eagle:library:375" +UsedLibraryUrn="urn:adsk.eagle:library:376" +UsedLibraryUrn="urn:adsk.eagle:library:377" +UsedLibraryUrn="urn:adsk.eagle:library:378" +UsedLibraryUrn="urn:adsk.eagle:library:379" +UsedLibraryUrn="urn:adsk.eagle:library:380" +UsedLibraryUrn="urn:adsk.eagle:library:382" +UsedLibraryUrn="urn:adsk.eagle:library:383" +UsedLibraryUrn="urn:adsk.eagle:library:111" +UsedLibraryUrn="urn:adsk.eagle:library:385" +UsedLibraryUrn="urn:adsk.eagle:library:386" +UsedLibraryUrn="urn:adsk.eagle:library:387" +UsedLibraryUrn="urn:adsk.eagle:library:388" +UsedLibraryUrn="urn:adsk.eagle:library:389" +UsedLibraryUrn="urn:adsk.eagle:library:391" +UsedLibraryUrn="urn:adsk.eagle:library:392" +UsedLibraryUrn="urn:adsk.eagle:library:393" +UsedLibraryUrn="urn:adsk.eagle:library:394" +UsedLibraryUrn="urn:adsk.eagle:library:396" +UsedLibraryUrn="urn:adsk.eagle:library:112" +UsedLibraryUrn="urn:adsk.eagle:library:397" +UsedLibraryUrn="urn:adsk.eagle:library:398" +UsedLibraryUrn="urn:adsk.eagle:library:399" +UsedLibraryUrn="urn:adsk.eagle:library:400" +UsedLibraryUrn="urn:adsk.eagle:library:401" +UsedLibraryUrn="urn:adsk.eagle:library:402" +UsedLibraryUrn="urn:adsk.eagle:library:403" +UsedLibraryUrn="urn:adsk.eagle:library:404" +UsedLibraryUrn="urn:adsk.eagle:library:407" +UsedLibraryUrn="urn:adsk.eagle:library:408" +UsedLibraryUrn="urn:adsk.eagle:library:113" +UsedLibraryUrn="urn:adsk.eagle:library:409" +UsedLibraryUrn="urn:adsk.eagle:library:410" +UsedLibraryUrn="urn:adsk.eagle:library:411" +UsedLibraryUrn="urn:adsk.eagle:library:412" +UsedLibraryUrn="urn:adsk.eagle:library:417" +UsedLibraryUrn="urn:adsk.eagle:library:418" +UsedLibraryUrn="urn:adsk.eagle:library:419" +UsedLibraryUrn="urn:adsk.eagle:library:527439" +UsedLibraryUrn="urn:adsk.eagle:library:5610454" +UsedLibraryUrn="urn:adsk.eagle:library:10015156" +UsedLibraryUrn="urn:adsk.eagle:library:116" +UsedLibraryUrn="urn:adsk.eagle:library:117" +UsedLibraryUrn="urn:adsk.eagle:library:118" +UsedLibraryUrn="urn:adsk.eagle:library:119" +UsedLibraryUrn="urn:adsk.eagle:library:81" +UsedLibraryUrn="urn:adsk.eagle:library:121" +UsedLibraryUrn="urn:adsk.eagle:library:122" +UsedLibraryUrn="urn:adsk.eagle:library:123" +UsedLibraryUrn="urn:adsk.eagle:library:124" +UsedLibraryUrn="urn:adsk.eagle:library:125" +UsedLibraryUrn="urn:adsk.eagle:library:126" +UsedLibraryUrn="urn:adsk.eagle:library:127" +UsedLibraryUrn="urn:adsk.eagle:library:128" +UsedLibraryUrn="urn:adsk.eagle:library:129" +UsedLibraryUrn="urn:adsk.eagle:library:130" +UsedLibraryUrn="urn:adsk.eagle:library:82" +UsedLibraryUrn="urn:adsk.eagle:library:132" +UsedLibraryUrn="urn:adsk.eagle:library:133" +UsedLibraryUrn="urn:adsk.eagle:library:134" +UsedLibraryUrn="urn:adsk.eagle:library:135" +UsedLibraryUrn="urn:adsk.eagle:library:136" +UsedLibraryUrn="urn:adsk.eagle:library:138" +UsedLibraryUrn="urn:adsk.eagle:library:139" +UsedLibraryUrn="urn:adsk.eagle:library:140" +UsedLibraryUrn="urn:adsk.eagle:library:141" +UsedLibraryUrn="urn:adsk.eagle:library:143" +UsedLibraryUrn="urn:adsk.eagle:library:83" +UsedLibraryUrn="urn:adsk.eagle:library:144" +UsedLibraryUrn="urn:adsk.eagle:library:145" +UsedLibraryUrn="urn:adsk.eagle:library:147" +UsedLibraryUrn="urn:adsk.eagle:library:148" +UsedLibraryUrn="urn:adsk.eagle:library:149" +UsedLibraryUrn="urn:adsk.eagle:library:150" +UsedLibraryUrn="urn:adsk.eagle:library:151" +UsedLibraryUrn="urn:adsk.eagle:library:152" +UsedLibraryUrn="urn:adsk.eagle:library:153" +UsedLibraryUrn="urn:adsk.eagle:library:154" +UsedLibraryUrn="urn:adsk.eagle:library:84" +UsedLibraryUrn="urn:adsk.eagle:library:155" +UsedLibraryUrn="urn:adsk.eagle:library:156" +UsedLibraryUrn="urn:adsk.eagle:library:157" +UsedLibraryUrn="urn:adsk.eagle:library:158" +UsedLibraryUrn="urn:adsk.eagle:library:159" +UsedLibraryUrn="urn:adsk.eagle:library:160" +UsedLibraryUrn="urn:adsk.eagle:library:161" +UsedLibraryUrn="urn:adsk.eagle:library:162" +UsedLibraryUrn="urn:adsk.eagle:library:163" +UsedLibraryUrn="urn:adsk.eagle:library:164" +UsedLibraryUrn="urn:adsk.eagle:library:85" +UsedLibraryUrn="urn:adsk.eagle:library:165" +UsedLibraryUrn="urn:adsk.eagle:library:166" +UsedLibraryUrn="urn:adsk.eagle:library:167" +UsedLibraryUrn="urn:adsk.eagle:library:169" +UsedLibraryUrn="urn:adsk.eagle:library:170" +UsedLibraryUrn="urn:adsk.eagle:library:171" +UsedLibraryUrn="urn:adsk.eagle:library:172" +UsedLibraryUrn="urn:adsk.eagle:library:173" +UsedLibraryUrn="urn:adsk.eagle:library:174" +UsedLibraryUrn="urn:adsk.eagle:library:175" +UsedLibraryUrn="urn:adsk.eagle:library:86" +UsedLibraryUrn="urn:adsk.eagle:library:176" +UsedLibraryUrn="urn:adsk.eagle:library:177" +UsedLibraryUrn="urn:adsk.eagle:library:179" +UsedLibraryUrn="urn:adsk.eagle:library:180" +UsedLibraryUrn="urn:adsk.eagle:library:181" +UsedLibraryUrn="urn:adsk.eagle:library:182" +UsedLibraryUrn="urn:adsk.eagle:library:183" +UsedLibraryUrn="urn:adsk.eagle:library:184" +UsedLibraryUrn="urn:adsk.eagle:library:188" +UsedLibraryUrn="urn:adsk.eagle:library:189" +UsedLibraryUrn="urn:adsk.eagle:library:87" +UsedLibraryUrn="urn:adsk.eagle:library:190" +UsedLibraryUrn="urn:adsk.eagle:library:191" +UsedLibraryUrn="urn:adsk.eagle:library:192" +UsedLibraryUrn="urn:adsk.eagle:library:193" +UsedLibraryUrn="urn:adsk.eagle:library:194" +UsedLibraryUrn="urn:adsk.eagle:library:195" +UsedLibraryUrn="urn:adsk.eagle:library:196" +UsedLibraryUrn="urn:adsk.eagle:library:197" +UsedLibraryUrn="urn:adsk.eagle:library:198" +UsedLibraryUrn="urn:adsk.eagle:library:199" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/810-22-003-40-005191.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/MAX98306ETD_.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/comm.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/connector.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/dfet.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/fablab.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/lights.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/microcontrollers.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/motors.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/passives.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/power.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/raspberrypi_bastelstube_v13.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/sensor.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/supply1.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/tag-connect-2030.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/tag-connect-2050.lbr" +UsedLibrary="C:/Dropbox/CBA/circuits/eagle/parts/usbraw.lbr" [Win_1] -Type="Board Editor" -Number=2 -File="2020-06_ucbus-stepper-melted.brd" -View="5.49378 14.1697 12.3852 21.4832" -WireWidths=" 0.8 0.9 0.1 0.05 0.5 0 0.3 0.2032 0.1524" +Type="Schematic Editor" +Number=1 +File="2020-06_ucbus-stepper-melted.sch" +View="142.238 57.5843 328.514 158.882" +WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0" -ViaDrills=" 0.2 0.25 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.4 0.3" +ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" -TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016" +TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" @@ -28,14 +303,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" DimensionExtLengths=" 1.27 2.54 1 2 3 0" DimensionExtOffsets=" 1.27 2.54 1 2 3 0" SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" -WireBend=3 -WireBendSet=0 +WireBend=0 +WireBendSet=31 WireCap=1 MiterStyle=1 PadShape=0 ViaShape=1 PolygonPour=0 -PolygonRank=4 +PolygonRank=0 PolygonThermals=1 PolygonOrphans=0 TextRatio=8 @@ -50,20 +325,22 @@ SwapLevel=0 ArcDirection=0 AddLevel=2 PadsSameType=0 -Layer=15 +Layer=91 +Views=" 1: 142.238 57.5843 328.514 158.882" +Sheet="1" [Win_2] -Type="Schematic Editor" -Number=1 -File="2020-06_ucbus-stepper-melted.sch" -View="148.076 60.2009 334.352 161.499" -WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524" +Type="Board Editor" +Number=2 +File="2020-06_ucbus-stepper-melted.brd" +View="6.486 13.9492 31.1792 40.1548" +WireWidths=" 0.8 0.9 0.1 0.05 0.5 0 0.3 0.2032 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0" -ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" +ViaDrills=" 0.2 0.25 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.4 0.3" HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" -TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" +TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016" PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" @@ -72,14 +349,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" DimensionExtLengths=" 1.27 2.54 1 2 3 0" DimensionExtOffsets=" 1.27 2.54 1 2 3 0" SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" -WireBend=0 -WireBendSet=31 +WireBend=3 +WireBendSet=0 WireCap=1 MiterStyle=1 PadShape=0 ViaShape=1 PolygonPour=0 -PolygonRank=0 +PolygonRank=4 PolygonThermals=1 PolygonOrphans=0 TextRatio=8 @@ -94,9 +371,7 @@ SwapLevel=0 ArcDirection=0 AddLevel=2 PadsSameType=0 -Layer=91 -Views=" 1: 148.076 60.2009 334.352 161.499" -Sheet="1" +Layer=15 [Win_3] Type="Control Panel" diff --git a/2020-06_ucbus-stepper-module/eagle.epf b/2020-06_ucbus-stepper-module/eagle.epf index 6ff93f3..464973f 100644 --- a/2020-06_ucbus-stepper-module/eagle.epf +++ b/2020-06_ucbus-stepper-module/eagle.epf @@ -355,7 +355,7 @@ UsedLibraryUrn="urn:adsk.eagle:library:168" Type="Schematic Editor" Number=1 File="2020-06_ucbus-stepper-module.sch" -View="93.8998 -5.32858 236.93 67.1657" +View="42.4851 -10.8684 214.121 76.1248" WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" @@ -394,14 +394,14 @@ ArcDirection=0 AddLevel=2 PadsSameType=0 Layer=91 -Views=" 1: 93.8998 -5.32858 236.93 67.1657" +Views=" 1: 42.4851 -10.8684 214.121 76.1248" Sheet="1" [Win_2] Type="Board Editor" Number=2 File="2020-06_ucbus-stepper-module.brd" -View="16.5161 15.8653 25.2235 23.6978" +View="16.8508 10.0924 34.9065 26.3339" WireWidths=" 0.127 0.15 0.2 2.54 1.016 0.2032 0.254 0.6096 0 2.032 0.508 0.4064 0.3048 1.27 0.8128 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" diff --git a/firmware/osape-smoothieroll-drop-stepper/src/main.cpp b/firmware/osape-smoothieroll-drop-stepper/src/main.cpp index 6a3a7f3..04ca517 100644 --- a/firmware/osape-smoothieroll-drop-stepper/src/main.cpp +++ b/firmware/osape-smoothieroll-drop-stepper/src/main.cpp @@ -14,6 +14,7 @@ float old_spu = 400.0F; volatile boolean spu_was_set = false; float c_scale = 0.2F; #define TICKS_PER_PACKET 25.0F +#define TICKS_PER_SECOND 50000.0F // -------------------------------------------------------- AXIS PICK EP @@ -68,9 +69,68 @@ boolean onCScaleData(uint8_t* data, uint16_t len){ vertex_t* cScaleEp = osapBuildEndpoint("CScale", onCScaleData, nullptr); +// -------------------------------------------------------- HOME ROUTINE + +// some homeing globals, +#define HOME_NOT 0 +#define HOME_FIRST 1 +#define HOME_BACKOFF 2 + +uint8_t homing = 0; // statemachine +float homeStepCounter = 0.0F; // step-float-counter +float homePos = 0.0F; // position (units) +float homeStepRate = 0.0F; // rate (steps/tick) +float homePosRate = 0.0F; // rate (units/tick) +boolean homeDir = false; // direction +float homeOffset = 0.0F; // after-home offset + +boolean onHomeData(uint8_t* data, uint16_t len){ + chunk_float32 rate = { .bytes = { data[0], data[1], data[2], data[3] } }; + chunk_float32 offset = { .bytes = { data[4], data[5], data[6], data[7] } }; + homing = HOME_FIRST; + homeStepCounter = 0.0F; + if(rate.f > 0){ + homeDir = true; + stepper_hw->dir(true); + } else { + homeDir = false; + stepper_hw->dir(false); + } + homeStepRate = abs(rate.f * spu) / TICKS_PER_SECOND; + homePosRate = abs(rate.f) / TICKS_PER_SECOND; + homeOffset = offset.f; + return true; +} + +vertex_t* homeEp = osapBuildEndpoint("Home", onHomeData, nullptr); + +// -------------------------------------------------------- LIMIT SETUP + +#define LIMIT_PORT PORT->Group[0] +#define LIMIT_PIN 23 +#define LIMIT_BM ((uint32_t)(1 << LIMIT_PIN)) + +void limitSetup(void){ + // not-an-output + LIMIT_PORT.DIRCLR.reg = LIMIT_BM; + // enable input + LIMIT_PORT.PINCFG[LIMIT_PIN].bit.INEN = 1; + // enable pull + LIMIT_PORT.PINCFG[LIMIT_PIN].bit.PULLEN = 1; + // 'pull' references direction from 'out' register, so we set hi to pull up (switch pulls to gnd) + LIMIT_PORT.OUTSET.reg = LIMIT_BM; +} + +boolean limitIsMade(void){ + // return true if switch is hit + return (LIMIT_PORT.IN.reg & LIMIT_BM); +} + void setup() { ERRLIGHT_SETUP; CLKLIGHT_SETUP; + // limit switch + limitSetup(); // osap osapSetup(); // ports @@ -86,6 +146,8 @@ void setup() { osapAddVertex(spuEp); // 4 // cscale osapAddVertex(cScaleEp); // 5 + // homing + osapAddVertex(homeEp); // 6 // stepper init stepper_hw->init(false, c_scale); } @@ -96,6 +158,11 @@ void setup() { void loop() { osapLoop(); stepper_hw->dacRefresh(); + if(limitIsMade()){ + ERRLIGHT_ON; + } else { + ERRLIGHT_OFF; + } } // end loop @@ -110,7 +177,10 @@ volatile boolean setBlock = false; void ucBusDrop_onPacketARx(uint8_t* inBufferA, volatile uint16_t len){ + // don't execute when we have been given a set-position block if(setBlock) return; + // don't execute if we are currently homing + if(homing) return; //DEBUG2PIN_TOGGLE; // last move is done, convert back steps -> float, if(spu_was_set){ @@ -182,7 +252,44 @@ void ucBusDrop_onPacketARx(uint8_t* inBufferA, volatile uint16_t len){ } void ucBusDrop_onRxISR(void){ + // no-op when given a set block, if(setBlock) return; + // incremental motion if is homing + if(homing != 0){ + switch(homing){ + case HOME_FIRST: + if(limitIsMade()){ + // traaaaaaansition -> backoff + stepper_hw->dir(!homeDir); + homeStepCounter = 0.0F; + homePos = 0.0F; + homing = HOME_BACKOFF; + } else { + homeStepCounter += homeStepRate; + if(homeStepCounter >= 1.0F){ + homeStepCounter -= 1.0F; + stepper_hw->step(); + } + } + break; + case HOME_BACKOFF: + homeStepCounter += homeStepRate; + homePos += homePosRate; + if(homeStepCounter >= 1.0F){ // backoff motion + homeStepCounter -= 1.0F; + stepper_hw->step(); + } + if(homePos >= homeOffset){ // until more than 2mm away + // traaaaaaaaaaaaaansition -> end + homing = 0; + } + break; + default: + homing = 0; + } + return; + } + //DEBUG2PIN_TOGGLE; move_counter += vel; boolean move_check = (move_counter > 1.0F); -- GitLab