From 26ad35c72a8244848207ec76aeadba504931113c Mon Sep 17 00:00:00 2001 From: Adrian Schlatter <10478149+adrianschlatter@users.noreply.github.com> Date: Mon, 29 Apr 2019 21:28:08 +0200 Subject: [PATCH] Add developer docs - explain structure of THREAD_TABLE.scad and relation to thread module - explain threads and how to derive proper specs for inclusion in threadlib - explain use of autogenerate.awk - explain tests (i.e., test_table.awk) closes #5 --- docs/CreatingThreadSpecs.md | 137 ++++++++++++++++++++++++++++++++++++ docs/DesignOfThreadlib.md | 52 ++++++++++++++ docs/UnitTests.md | 61 ++++++++++++++++ docs/imgs/ThreadProfile.png | Bin 0 -> 37208 bytes 4 files changed, 250 insertions(+) create mode 100644 docs/CreatingThreadSpecs.md create mode 100644 docs/DesignOfThreadlib.md create mode 100644 docs/UnitTests.md create mode 100644 docs/imgs/ThreadProfile.png diff --git a/docs/CreatingThreadSpecs.md b/docs/CreatingThreadSpecs.md new file mode 100644 index 0000000..7da41d1 --- /dev/null +++ b/docs/CreatingThreadSpecs.md @@ -0,0 +1,137 @@ +# Creating Thread Specs + +In the following, we explain how a thread spec (i.e., an entry in THREAD_TABLE) is created. First, we will explain the basics of threads and how they are specified in the norms. Then, we will ellaborate on the specifics to translate those into threadlib thread specs. + + +## Thread Basics + + +To do this, we use British Standard Pipe parallel (BSPP) thread as an example (see drawing below). The bold curve shows the parting line between internal and external thread. In an ideal world, both threads are created according to the parting line. The parting line of BSP thread is based on a fundamental triangle with a 55-degree angle rounded to a radius r. + +![BSPP thread drawing](http://mdmetric.com/tech/55deg228.gif) + + BSPP thread drawing. Source: Maryland Metrics. + +Reality is a bit more complicated: If one of the threads deviates only a little in the wrong direction, the threads collide. Therefore, the pitch radius r_pitch (radius where distance between falling and rising edges is exactly P/2) of the external thread has to be reduced a little bit (and vice versa for the internal thread). Also, major and minor radii are adjusted so that the real thread is guaranteed to remain on its own side of the theoretical parting line. + +Of course, it is not ok to introduce arbitrarily large allowances: The norm (BS EN ISO 228-1: 2003 in this case) gives the necessary constraints. Quoting [Maryland Metrics thread data charts for BSP thread](http://mdmetric.com/tech/thddat7.htm): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tolerances on pitch diameteraTolerance on minor diameterTolerance on major diameter
DiametersInternal thread TD2External thread Td2Internal thread TD1External thread Td
Desig-nation of threadNumber of threads in 25.4 mmPitch PHeight of thread hmajor d = Dpitch d2 = D2minor d1 = D1Lower deviationUpper deviationLower deviation Class ALower deviation Class BUpper deviationLower deviationUpper deviationLower deviationUpper deviation
1/16280.9070.5817.7237.1426.56100.107-0.107-0.214000.282-0.2140
1/8280.9070.5819.7289.1478.56600.107-0.107-0.214000.282-0.2140
1/4191.3370.85613.15712.30111.44500.125-0.125-0.25000.445-0.250
+ + +## Deriving threadlib Specs + +To simplify the thread profile, we want to avoid the rounding and replace it by a trapezoidal edge as shown in here (red: internal, blue external thread): + +![threadlib profile compared to BSP parting line](imgs/BSPthread.jpg) + +It is clear that we have to match the pitch as accurately as possible. Therefore, threadlibs P is equal to the pitch in the norm (for G1/16: 0.907 mm). + +Then, we choose the pitch diameter to be in the center of the given tolerance range. For G1/16 this is (7.723 + 0.107/2) mm. + +To explain the choice of r_major and r_minor for both external and internal threads simultaneously, we use the terms r_crest and r_valley. r_crest is the major/minor radius (external/internal) and r_valley is the minor/major radius (external/internal). The norm does not give limits for r_valley. But threadlib requires that the threadprofile covers *less* than 1 pitch of thread. Therefore, we arbitrarily choose a small but finite width of "valley floor" that leaves ample clearance to the parting line. For r_crest, we to take into account + +a) the allowed deviations given in the norm +b) the rounding (that we want to leave away) + +The former is simple: We aim for the center. The latter requires a little math: We want our piecewise linear profile to remain on one side of the (true) BSP profile. Therefore, our crest radius has to be equal to the radius where the straight rising edge of the BSP profile touches the circle of the rounding. + + +## Adding Specs to threadlib + +To get the threads into threadlib, we currently do the following (attention: will change in the near future to avoid Excel file): + +- Add worksheet with original thread specs to design/threads.xlsx +- Extend table in worksheet THREAD_TABLE (calculate threadlib specs from your original specs) +- Save THREAD_TABLE worksheet as THREAD_TABLE.csv +- Do `cat THREAD_TABLE.csv | awk -f design/autogenerate.awk > THREAD_TABLE.scad` in a terminal + +Furthermore, we should extend tests/test_table.awk to test our newly created threads. The very minimum is to add a test for the thread angles. Perform the tests by running `make` inside the tests subdirectory. If it prints "TESTS SUCCESSFUL" you are probably fine. Note: If you have a thread spec that is not tested at all, the tests will fail, too. + diff --git a/docs/DesignOfThreadlib.md b/docs/DesignOfThreadlib.md new file mode 100644 index 0000000..bda742e --- /dev/null +++ b/docs/DesignOfThreadlib.md @@ -0,0 +1,52 @@ +# Design of threadlib + +The structure of threadlib is very simple and consists of only two files: + +- threadlib.scad +- THREAD_TABLE.scad + +The former provides the code to generate threads, bolts, and nuts. The latter simply holds a large dictionary (named THREAD_TABLE) providing the thread-specs given a thread-designator. + +THREAD_TABLE is a vector of vectors called "entries". Every entry has the following format: + + + [DESIGNATOR, [P, Rrot, Dsup, profile]] + +where + +- DESIGNATOR: Name of thread. E.g. "M6x0.5-ext" +- P: Pitch of the thread +- Rrot: Radius of rotation used for later "extrusion" of the thread. Rrot is positive for external threads and negative for internal threads. +- Dsup: Recommended diameter of support structure of the thread (i.e., of cylinder for external thread and hole for internal thread) +- profile: A vector of 2D [delta_r, z]-vectors describing the shape of the thread + +Let's look at an example: + + ["M4-int", [0.7, -2.1095, 4.1095, + [ + [0, 0.3465], + [0, -0.3465], + [0.43304671, -0.09648036], + [0.43304671, 0.09648036] + ]]] + + +## Definition of profile + +profile is a list of vectors in OpenSCADs x-y plane. x corresponds to the radial direction of the screw, z is the axis of the threads helix. + +![Thread Profile](imgs/ThreadProfile.png) + +In many cases, profile consists of 4 points. However, the number of points is not limited: You can use as many as you need. For external threads, the profile is specified in the right-hand side of the x-y plane. For internal threads, the left-hand side is used (i.e., the radius-values are negative). This is useful to make corresponding male and female threads match without extra operations: The female thread has rotated by half a turn when it arrives on the right-hand side of the x-y plane, thereby nicely fitting in between two turns of the male thread. + + +## Redundancy? + +Why do we need P, Rrot, Dsup, *and* profile? Can we not include everything in profile? Unfortunately, we can't. The reasons are a) lead-in / lead-out tapers ("lilo-tapers") and b) overlap between thread and support to avoid rendering problems. + +*lilo-tapers*: To make the tapers, the profile is scaled-down at the ends. We need to know where the profile is scaled to (center of scaling). We solve this by specifying the radius of rotation for extrusion Rrot explicitly and subtract it from profile (profile holds [dr, z] instead of [r, z]). lilo-tapers are then created by scaling towards dr=0. + +*Overlap 1*: We could include P in profile by requiring that profile extends over exactly one period (i.e., P). However, this would result in a helix where neighbouring periods would exactly touch each other. This leads to rendering artifacts => P is stored seperately and profile is *required* to cover *less* than a period. + +*Overlap 2*: But hey! Dsup = 2 * Rrot, no? In principle yes, but in that case thread and bolt would *just* touch => rendering problems. But we could implicitly assume that Rrot is simply 1% smaller than Dsup / 2 for external threads (and 1% larger for internal threads)! Yes, we could. But we decided to make that choice explicit rather than implicit. + diff --git a/docs/UnitTests.md b/docs/UnitTests.md new file mode 100644 index 0000000..c7b6bc4 --- /dev/null +++ b/docs/UnitTests.md @@ -0,0 +1,61 @@ +# Unit Tests + +We use unit tests as a means of quality assurance for threadlib. + + +## THREAD_TABLE.scad + +The thread table is tested using an awk script. See [The GNU Awk User's Guide](https://www.gnu.org/software/gawk/manual/gawk.html) for (more than) an introduction to awk. Note that development of threadlib is based not on GNU awk but on MacOSs version of awk, which is mostly - but not completely - compatible. + +Every line of THREAD_TABLE.scad is fed to [tests/test_table.awk](../tests/test_table.awk). test_table.awk then runs appropriate tests for every line. Which tests are appropriate are determined by looking at the thread designator. For example: + + /"[^,]+-ext/ { + # external threads have positive Rrot + parse(); + if (Rrot < 0) { + print designator " FAIL: negative radius of rotation"; + PASS = 0; + } + # test overlapp between thread and support + if (Rrot > Dsupport / 2) { + print designator " FAIL: Rsupport < Rrot"; + PASS = 0; + } + } + +The pattern /"[^,]+-ext/ means: Run this code for every line that contains double quotes followed by a non-zero (+) number of non-comma characters ([^,]) followed by the string "-ext". I.e, the code is run for every external thread. The code (everything between {}) tests the following assumptions: 1. every external thread must have positive Rrot 2. there must be some overlap between thread and support (i.e. Rrot > Dsupport / 2). + +More specific tests verify, e.g., that the thread angles are correct. Not all threads have the same thread angles, therefore we have to distinguish, e.g., between metric threads (designator "M...") and BSPP threads (designator "G..."). Example: + + /M[0-9.x-]+-ext/ { + # ext M threads have +/-60 deg slopes, horizontal crest / valley + parse(); + m1 = slope(v0, v3) / deg; + m2 = slope(v2, v1) / deg; + if (m1 > 60 + dphi || m1 < 60 - dphi \ + || m2 < -60 - dphi || m2 > -60 + dphi) { + print designator " FAIL: " m1 ", " m2 " deg"; + PASS = 0; + }; + test_horizontal(); + tested = 1; + } + +Note that: + +- This test uses functions. These are defined at the top of the awk script. +- This test will run *in addition* to the more general test discussed above. It does not *replace* the previous test. + +Furthermore, we track whether tests fail. This is done in 2 ways: + +- If a test fails it prints an error to the screen +- If a test fails the variable PASS is set to zero + +At the very end (END {...}), the awk script tests the value of PASS. If all tests were successfull, it still has its initial value of 1 (set in the BEGIN {...} block). Otherwise, it is 0. + +Finally, we have assured that every thread is tested. A thread that is not tested at all is considered a FAIL. This is done via two match-all rules: The first initialized the variable 'tested' to 0. The last verifies that it has been set to 1 by one of the test. If it is still zero, this particular thread has not been tested at all. + +## threadlib.scad + +We intend to add tests for threadlib.scad itself. E.g. by actually rendering a pair of external and internal threads and verifying the number of volumes created. Currently, we do not have these tests yet. + diff --git a/docs/imgs/ThreadProfile.png b/docs/imgs/ThreadProfile.png new file mode 100644 index 0000000000000000000000000000000000000000..db13af7b05820c35bc3ba0519e6d0c9e8c668c14 GIT binary patch literal 37208 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 literal 0 HcmV?d00001