From: Bdale Garbee Date: Mon, 18 Mar 2013 21:50:26 +0000 (-0600) Subject: add footprint generators for JST connectors X-Git-Tag: telelco-v3.0~913 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=e8b88902c862d6c674db14305809daf93e7cdd7c;p=hw%2Faltusmetrum add footprint generators for JST connectors --- diff --git a/packages/Makefile b/packages/Makefile index 45c74c5..ab703a4 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -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 index 0000000..a8dbe9e --- /dev/null +++ b/packages/jst/Makefile @@ -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 index 0000000..dcfaf13 --- /dev/null +++ b/packages/jst/PH-Series.py @@ -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 index 0000000..a7d1b42 --- /dev/null +++ b/packages/jst/PH-smt-ra.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . 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 index 0000000..494e11c --- /dev/null +++ b/packages/jst/PH-th-ra.py @@ -0,0 +1,87 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . 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 index 0000000..407f3d2 --- /dev/null +++ b/packages/jst/PH-th-v.py @@ -0,0 +1,87 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . 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 ")"