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