add footprint generators for JST connectors
authorBdale Garbee <bdale@gag.com>
Mon, 18 Mar 2013 21:50:26 +0000 (15:50 -0600)
committerBdale Garbee <bdale@gag.com>
Mon, 18 Mar 2013 21:50:26 +0000 (15:50 -0600)
packages/Makefile
packages/jst/Makefile [new file with mode: 0644]
packages/jst/PH-Series.py [new file with mode: 0755]
packages/jst/PH-smt-ra.py [new file with mode: 0755]
packages/jst/PH-th-ra.py [new file with mode: 0755]
packages/jst/PH-th-v.py [new file with mode: 0755]

index 45c74c5b56e4d83af5177377a24b6a218e03ff3e..ab703a49db23082e68a9ec0c0c0f7e913c74f2eb 100644 (file)
@@ -1,6 +1,7 @@
 .SUFFIXES: .5c .py .fp
 
 DIRS= \
+       jst \
        pinheader \
        tyco
 
diff --git a/packages/jst/Makefile b/packages/jst/Makefile
new file mode 100644 (file)
index 0000000..a8dbe9e
--- /dev/null
@@ -0,0 +1,7 @@
+all:   S2B-PH.fp
+
+S2B-PH.fp:     PH-smt-ra.py PH-Series.py
+       ./PH-Series.py
+
+clean:
+       rm -f *.fp
diff --git a/packages/jst/PH-Series.py b/packages/jst/PH-Series.py
new file mode 100755 (executable)
index 0000000..dcfaf13
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+for i in 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+do
+       # side entry surface mount
+       FILE="S"$i"B-PH-SM4"
+       ./PH-smt-ra.py $i > $FILE.fp
+
+       # top entry through hole
+       FILE="B"$i"B-PH"
+       ./PH-th-v.py $i > $FILE.fp
+
+       # side entry through hole
+       FILE="S"$i"B-PH"
+       ./PH-th-ra.py $i > $FILE.fp
+done
diff --git a/packages/jst/PH-smt-ra.py b/packages/jst/PH-smt-ra.py
new file mode 100755 (executable)
index 0000000..a7d1b42
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for
+#   JST PH Series 2mm Side Entry SMT (Shrouded) connectors
+#
+# Needs pin count on command line, in range of 2..15
+#
+
+# dimensions in mm from PH Series.pdf datasheet
+TabWidth = 1.5
+TabHeight = 3.4
+TabPinSpacing = 2.1
+PinWidth = 1.0
+PinHeight = 3.5
+PinSpacing = 2.0
+FirstPin = 3.1
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+pins = int(sys.argv[1])
+if pins < 2:
+       sys.stderr.write('Must be at least 2 pins\n')
+       sys.exit(1)
+if pins > 15:
+       sys.stderr.write('Must be no more than 15 pins\n')
+       sys.exit(1)
+
+print '# author: Bdale Garbee'
+print '# email: bdale@gag.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "S%iB-PH"' % pins,'"" "" 0 0 0 0 0 100 0x0]'
+print "("
+for pin in range (1,pins+1):
+    pinnum = pins + 1 - pin
+    print '   Pad[', \
+       mm2mils100(FirstPin + (pin-1)*PinSpacing), \
+       mm2mils100(TabHeight+TabPinSpacing+PinWidth/2), \
+       mm2mils100(FirstPin + (pin-1)*PinSpacing), \
+       mm2mils100(TabHeight+TabPinSpacing+PinHeight-PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinSpacing - PinWidth), \
+       mm2mils100(PinWidth + 0.2), \
+       '"pin%i"' % pinnum, '"%i"' % pinnum, '0x0100]'
+
+
+print '   Pad[', \
+       mm2mils100(TabWidth/2), \
+       mm2mils100(TabWidth/2), \
+       mm2mils100(TabWidth/2), \
+       mm2mils100(TabHeight - TabWidth/2), \
+       mm2mils100(TabWidth), \
+       0, \
+       mm2mils100(TabWidth + 0.2), \
+       '"tab1" "G" 0x0100]'
+
+print '   Pad[', \
+       mm2mils100(FirstPin*2 + (pins-1)*PinSpacing - TabWidth/2), \
+       mm2mils100(TabWidth/2), \
+       mm2mils100(FirstPin*2 + (pins-1)*PinSpacing - TabWidth/2), \
+       mm2mils100(TabHeight - TabWidth/2), \
+       mm2mils100(TabWidth), \
+       0, \
+       mm2mils100(TabWidth + 0.2), \
+       '"tab2" "G" 0x0100]'
+
+print ")"
diff --git a/packages/jst/PH-th-ra.py b/packages/jst/PH-th-ra.py
new file mode 100755 (executable)
index 0000000..494e11c
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+# Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for
+#   JST PH series 2mm side entry through-hole (shrouded) connectors
+#
+# Needs pin count on command line, in range of 2..15
+#
+
+# dimensions in mm from ePH.pdf datasheet
+PinDiam = 0.75
+PinSpacing = 2.0
+RowOffset = 6.0
+BoxHeight = 7.6
+BoxEnd = 1.95
+LineWidth = 600
+Thickness = 1.3
+Clearance = .305
+Mask = 1.46
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+pins = int(sys.argv[1])
+if pins < 2:
+       sys.stderr.write('Must be at least 2 pins\n')
+       sys.exit(1)
+if pins > 15:
+       sys.stderr.write('Must be no more than 15 pins\n')
+       sys.exit(1)
+
+print '# author: Bdale Garbee'
+print '# email: bdale@gag.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "B%iB-PH"' % pins,'"" "" 0 0 0 0 0 100 0x0]'
+print "("
+for pin in range (1,pins+1):
+    pinnum = pins + 1 - pin
+    if pinnum == 1:
+       Flags = '0x0101'
+    else:
+       Flags = '0x0001'
+    print '   Pin[', \
+        mm2mils100(BoxEnd + (pin-1)*PinSpacing), \
+        mm2mils100(RowOffset), \
+        mm2mils100(Thickness), \
+        mm2mils100(Clearance), \
+        mm2mils100(Mask), \
+        mm2mils100(PinDiam), \
+        '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']'
+
+BoxWidth = (BoxEnd * 2) + ((pins - 1) * PinSpacing);
+
+print '   ElementLine[', \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(BoxHeight), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(0), \
+        mm2mils100(BoxHeight), \
+        mm2mils100(BoxWidth), \
+        mm2mils100(BoxHeight), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(BoxWidth), \
+        mm2mils100(BoxHeight), \
+        mm2mils100(BoxWidth), \
+        mm2mils100(0), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(BoxWidth), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        LineWidth, ']'
+
+print ")"
diff --git a/packages/jst/PH-th-v.py b/packages/jst/PH-th-v.py
new file mode 100755 (executable)
index 0000000..407f3d2
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+# Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for
+#   JST PH series 2mm vertical entry through-hole (shrouded) connectors
+#
+# Needs pin count on command line, in range of 2..15
+#
+
+# dimensions in mm from ePH.pdf datasheet
+PinDiam = 0.75
+PinSpacing = 2.0
+RowOffset = (4.5 - 1.7)
+BoxHeight = 4.5
+BoxEnd = 1.95
+LineWidth = 600
+Thickness = 1.3
+Clearance = .305
+Mask = 1.46
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+pins = int(sys.argv[1])
+if pins < 2:
+       sys.stderr.write('Must be at least 2 pins\n')
+       sys.exit(1)
+if pins > 15:
+       sys.stderr.write('Must be no more than 15 pins\n')
+       sys.exit(1)
+
+print '# author: Bdale Garbee'
+print '# email: bdale@gag.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "B%iB-PH"' % pins,'"" "" 0 0 0 0 0 100 0x0]'
+print "("
+for pin in range (1,pins+1):
+    pinnum = pins + 1 - pin
+    if pinnum == 1:
+       Flags = '0x0101'
+    else:
+       Flags = '0x0001'
+    print '   Pin[', \
+        mm2mils100(BoxEnd + (pin-1)*PinSpacing), \
+        mm2mils100(RowOffset), \
+        mm2mils100(Thickness), \
+        mm2mils100(Clearance), \
+        mm2mils100(Mask), \
+        mm2mils100(PinDiam), \
+        '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']'
+
+BoxWidth = (BoxEnd * 2) + ((pins - 1) * PinSpacing);
+
+print '   ElementLine[', \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(BoxHeight), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(0), \
+        mm2mils100(BoxHeight), \
+        mm2mils100(BoxWidth), \
+        mm2mils100(BoxHeight), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(BoxWidth), \
+        mm2mils100(BoxHeight), \
+        mm2mils100(BoxWidth), \
+        mm2mils100(0), \
+        LineWidth, ']'
+
+print '   ElementLine[', \
+        mm2mils100(BoxWidth), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        mm2mils100(0), \
+        LineWidth, ']'
+
+print ")"