# Does a nominal pitch diameter and nominal major diameter imply a pitch?



## WobblyHand (Sep 24, 2022)

I found a link at https://engineering.stackexchange.c...he-tolerance-of-pitch-of-a-thread-standarized which showed a set of equations to allow one to derive thread pitch from pitch diameter and the major diameter, using standard thread dimensioning.  It seems to match up with ISO standards.  However, if one puts in the mean dimensions of a M14x2 screw from standard tables, (Dmajor and Dpitch) the derived pitch is nearly 10% low (1.908 mm, vs 2mm expected).  

I am trying to wrap my head around this.  I don't see anything wrong with the math, yet.  But I can't see how the thread pitch could vary like that!  Mechanically the pitch is pretty well controlled.  What is the faulty assumption in this?  Perhaps it is that pitch is defined as the line where the solid part of the thread length is equal to the cut out thread length?  I don't see this as a constraint in the equations, but it is part of the definitions of pitch.

I found this by accident, trying to figure out cumulative thread pitch error and when threads would bind with a perfect (nominal) pitch.

```
[FONT=courier new]#!/usr/bin/env python3
# python3 script to evaluate effect % pitch error in metric threads
from numpy import *
"""
From https://engineering.stackexchange.com/questions/1853/is-the-tolerance-of-pitch-of-a-thread-standarized

(1) theta = 60 * pi/180       # radians
(2) 3/8 * H = ( Dmaj - Dpitch )/2
(3) H = P * cos( theta/2 )  # only true for a sharp V pitch!!!!

rewrite (2) solving for H
(4) H = ( Dmaj - Dpitch )/2 * 8/3

substitute expression for H in (4) into (3)
(5) ( Dmaj - Dpitch )/2 * 8/3 = P * cos( theta/2 )

solve for P
(6) P = 8/3 * ( Dmaj - Dpitch )/2 / cos( theta/2 )
    P = 4/3 * ( Dmaj - Dpitch ) / cos( theta/2 )

"""


if __name__ == '__main__':
  theta = 60.0 * pi/180
 
  myscrew = array([14, 2])            # M14 x 2 6g screw
 
  Dmaj   = array([ 13.962, 13.682 ])  # from tables
  Dpitch = array([ 12.663, 12.503 ])  # from tables
 
  Dmajmean = mean(Dmaj)
  Dpitchmean = mean(Dpitch)
 
  Pmean = 4/3 * (Dmajmean - Dpitchmean) / cos(theta/2)
  print("Actual pitch  = ", myscrew[1])
  print("Derived pitch = ", Pmean)
  # you would think the mean Dmaj and Dpitch would give you the correct pitch?[/FONT]
```


----------



## mmcmdl (Sep 24, 2022)

Huh ?  That looks like Chinese arithmatic to me Wobbly !  I need another coffee maybe .


----------



## WobblyHand (Sep 24, 2022)

mmcmdl said:


> Huh ?  That looks like Chinese arithmatic to me Wobbly !  I need another coffee maybe .


Perhaps a couple coffees would be better.  It is really a math problem, but it is related to screws and their tolerances.  Tables are nice, but I like to see where those table values come from.  There's some hidden assumptions that maybe are not true for these equations.  Wasted about 45 minutes fooling around with this.  Was really surprised to see the apparent error when I was expecting zero error.  When that happens, it's time for a break. 

So I went downstairs to use my new face mill and tried it out on some 7075.  It's not bad at all, considering how cheap it was and the undoubtedly counterfeit SEKT inserts.  Thought it was going to show how bad my tram was, but it hid my issues quite well.  Cuts very well.


----------

