From: Bdale Garbee Date: Mon, 18 Mar 2013 21:53:18 +0000 (-0600) Subject: add molex footprint builders X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=4ffb8a9c8b832370aad1cb8a54088ff4ec904eb0;p=hw%2Faltusmetrum add molex footprint builders --- diff --git a/packages/Makefile b/packages/Makefile index ab703a4..e9ca92f 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -2,6 +2,7 @@ DIRS= \ jst \ + molex \ pinheader \ tyco diff --git a/packages/jst/.gitignore b/packages/jst/.gitignore new file mode 100644 index 0000000..5f8f282 --- /dev/null +++ b/packages/jst/.gitignore @@ -0,0 +1 @@ +*.fp diff --git a/packages/molex/.gitignore b/packages/molex/.gitignore new file mode 100644 index 0000000..5f8f282 --- /dev/null +++ b/packages/molex/.gitignore @@ -0,0 +1 @@ +*.fp diff --git a/packages/molex/Makefile b/packages/molex/Makefile new file mode 100644 index 0000000..1555370 --- /dev/null +++ b/packages/molex/Makefile @@ -0,0 +1,16 @@ +all: 532610372.fp 548190572.fp 903259004.fp ufl.fp + +903259004.fp: picoflex picoflex-th-v.py + ./picoflex + +532610372.fp: picoblades picoblade-smt-ra.py picoblade-th-v.py + ./picoblades + +548190572.fp: miniusb.py + ./miniusb.py > 548190572.fp + +ufl.fp: ufl.py + ./ufl.py > ufl.fp + +clean: + rm -f 53261* 53047* 90325* 548190572.fp ufl.fp diff --git a/packages/molex/miniusb.py b/packages/molex/miniusb.py new file mode 100755 index 0000000..380e1a2 --- /dev/null +++ b/packages/molex/miniusb.py @@ -0,0 +1,128 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for +# Molex MiniUSB R/A 5 pos SMD connector 54819-0572, DigiKey WM17116CT-ND +# + +# dimensions in mm from 548190572_sd.pdf datasheet +TabWidth = 2.05 +Tab1Height = 4.0 +Tab2Height = 3.5 +TabCenters = 4.25 +BetweenTabs = 7.8 + +PinWidth = 0.5 +PinHeight = 2.25 +PinSpacing = 0.8 +PinStart = 3.1 + Tab1Height/2 + +CenterLine = TabWidth + BetweenTabs/2 + +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 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "MiniUSB" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +print ' Pad[', \ + mm2mils100(CenterLine), \ + mm2mils100(PinStart + PinWidth/2), \ + mm2mils100(CenterLine), \ + mm2mils100(PinStart + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth + 0.2), \ + '"D+" "3" 0x0100]' + +print ' Pad[', \ + mm2mils100(CenterLine + PinSpacing), \ + mm2mils100(PinStart + PinWidth/2), \ + mm2mils100(CenterLine + PinSpacing), \ + mm2mils100(PinStart + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth + 0.2), \ + '"D-" "2" 0x0100]' + +print ' Pad[', \ + mm2mils100(CenterLine - PinSpacing), \ + mm2mils100(PinStart + PinWidth/2), \ + mm2mils100(CenterLine - PinSpacing), \ + mm2mils100(PinStart + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth + 0.2), \ + '"HS" "4" 0x0100]' + +print ' Pad[', \ + mm2mils100(CenterLine + PinSpacing*2), \ + mm2mils100(PinStart + PinWidth/2), \ + mm2mils100(CenterLine + PinSpacing*2), \ + mm2mils100(PinStart + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth + 0.2), \ + '"VBUS" "1" 0x0100]' + +print ' Pad[', \ + mm2mils100(CenterLine - PinSpacing*2), \ + mm2mils100(PinStart + PinWidth/2), \ + mm2mils100(CenterLine - PinSpacing*2), \ + mm2mils100(PinStart + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth + 0.2), \ + '"GND" "5" 0x0100]' + +TabRowTwo = Tab1Height/2 + TabCenters - Tab2Height/2 +TabColTwo = TabWidth + BetweenTabs + +print ' Pad[', \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(Tab1Height - TabWidth/2), \ + mm2mils100(TabWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.2), \ + '"tab1" "G" 0x0100]' + +print ' Pad[', \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabRowTwo + TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \ + mm2mils100(TabWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.2), \ + '"tab2" "G" 0x0100]' + +print ' Pad[', \ + mm2mils100(TabColTwo + TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabColTwo + TabWidth/2), \ + mm2mils100(Tab1Height - TabWidth/2), \ + mm2mils100(TabWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.2), \ + '"tab3" "G" 0x0100]' + +print ' Pad[', \ + mm2mils100(TabColTwo + TabWidth/2), \ + mm2mils100(TabRowTwo + TabWidth/2), \ + mm2mils100(TabColTwo + TabWidth/2), \ + mm2mils100(TabRowTwo + Tab2Height - TabWidth/2), \ + mm2mils100(TabWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.2), \ + '"tab4" "G" 0x0100]' + +print ")" diff --git a/packages/molex/picoblade-smt-ra.py b/packages/molex/picoblade-smt-ra.py new file mode 100755 index 0000000..04205bb --- /dev/null +++ b/packages/molex/picoblade-smt-ra.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# Copyright 2007 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for +# Molex 1.25mm PicoBlade(tm), right angle SMT header 53261-XX71, 2-15 pins +# +# Needs pin count on command line, in range of 2..15 +# + +# dimensions in mm from 532611071_sd.pdf datasheet +TabWidth = 2.1 +TabHeight = 3.0 +TabPinSpacing = 0.6 +PinWidth = 0.8 +PinHeight = 1.6 +PinSpacing = 1.25 +FirstPin = 3.6 + +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 "PicoBlade%i"' % 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.1), \ + '"pin%i"' % pinnum, '"%i"' % pinnum, '0x0100]' + + +print ' Pad[', \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabWidth/2), \ + mm2mils100(TabHeight - TabWidth/2), \ + mm2mils100(TabWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.1), \ + '"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), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(TabWidth + 0.1), \ + '"tab2" "G" 0x0100]' + +print ")" diff --git a/packages/molex/picoblade-th-v.py b/packages/molex/picoblade-th-v.py new file mode 100755 index 0000000..a25f161 --- /dev/null +++ b/packages/molex/picoblade-th-v.py @@ -0,0 +1,84 @@ +#!/usr/bin/python +# Copyright 2008 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for +# Molex 1.25mm PicoBlade, vertical through-hole header 53047-XX10, 2-15 pins +# +# Needs pin count on command line, in range of 2..15 +# + +# dimensions in mm from 530470410_sd.pdf datasheet +PinDiam = 0.52 +PinSpacing = 1.25 +BoxOffset = 1.15 +BoxHeight = 3.2 +BoxEnd = 1.5 +LineWidth = 600 + +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 "PicoBlade%i"' % 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((pins-1)*PinSpacing - (pin-1)*PinSpacing), \ + 0, \ + 3500, \ + 1200, \ + 4100, \ + mm2mils100(PinDiam), \ + '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']' + +BoxWidth = (BoxEnd * 2) + ((pins - 1) * PinSpacing); + +print ' ElementLine[', \ + mm2mils100(-BoxEnd), \ + mm2mils100(-BoxOffset), \ + mm2mils100(-BoxEnd), \ + mm2mils100(BoxHeight-BoxOffset), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(-BoxEnd), \ + mm2mils100(BoxHeight-BoxOffset), \ + mm2mils100(BoxWidth-BoxEnd), \ + mm2mils100(BoxHeight-BoxOffset), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(BoxWidth-BoxEnd), \ + mm2mils100(BoxHeight-BoxOffset), \ + mm2mils100(BoxWidth-BoxEnd), \ + mm2mils100(-BoxOffset), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(BoxWidth-BoxEnd), \ + mm2mils100(-BoxOffset), \ + mm2mils100(-BoxEnd), \ + mm2mils100(-BoxOffset), \ + LineWidth, ']' + +print ")" diff --git a/packages/molex/picoblades b/packages/molex/picoblades new file mode 100755 index 0000000..86f9b2c --- /dev/null +++ b/packages/molex/picoblades @@ -0,0 +1,9 @@ +#!/bin/sh + +for i in 02 03 04 05 06 07 08 09 10 11 12 13 14 15 +do + FILE="53261"$i"71" + ./picoblade-smt-ra.py $i > $FILE.fp + FILE="53047"$i"10" + ./picoblade-th-v.py $i > $FILE.fp +done diff --git a/packages/molex/picoflex b/packages/molex/picoflex new file mode 100755 index 0000000..d952748 --- /dev/null +++ b/packages/molex/picoflex @@ -0,0 +1,7 @@ +#!/bin/sh + +for i in 04 06 08 10 12 14 16 18 20 22 24 26 +do + FILE="9032590"$i + ./picoflex-th-v.py $i > $FILE.fp +done diff --git a/packages/molex/picoflex-th-v.py b/packages/molex/picoflex-th-v.py new file mode 100755 index 0000000..9d64c05 --- /dev/null +++ b/packages/molex/picoflex-th-v.py @@ -0,0 +1,114 @@ +#!/usr/bin/python +# Copyright 2008 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for +# Molex 1.25mm PicoBlade, vertical through-hole header 53047-XX10, 2-15 pins +# +# Needs pin count on command line, in range of 2..15 +# + +# dimensions in mm from 903257004_sd.pdf datasheet +PinDiam = 0.8 +PinSpacing = 2.54 +RowSpacing = 2.54 +RowOffset = 1.27 +BoxHeight = 5.98 +BoxEnd = 2.755 +MntX = 1.8 +MntY = 1.48 +MntDiam = 1.5 +LineWidth = 600 + +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 < 4: + sys.stderr.write('Must be at least 4 pins\n') + sys.exit(1) +if pins > 26: + sys.stderr.write('Must be no more than 26 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 "PicoFlex%i"' % pins,'"" "" 0 0 0 0 0 100 0x0]' +print "(" +for col in range ((pins+1)/2): + for row in range (2): + if row == 1: + offset=RowOffset + spacing=RowSpacing + else: + offset=0 + spacing=0 + pinnum = (col * 2) + row + 1 + if pinnum == 1: + Flags = '0x0101' + else: + Flags = '0x0001' + print ' Pin[', \ + mm2mils100(col*PinSpacing + offset), \ + mm2mils100(spacing), \ + mm2mils100(PinDiam*2), \ + 600, \ + mm2mils100(PinDiam*2)+1000, \ + mm2mils100(PinDiam), \ + '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']' + +print ' Pin[', \ + mm2mils100(-MntX), \ + mm2mils100(-MntY), \ + mm2mils100(MntDiam), \ + 0, \ + mm2mils100(MntDiam), \ + mm2mils100(MntDiam), \ + '"mnt" "0"', '0x0008', ']' + +print ' Pin[', \ + mm2mils100(((pins+1)/2-1)*PinSpacing+RowOffset+MntX), \ + mm2mils100(-MntY), \ + mm2mils100(MntDiam), \ + 0, \ + mm2mils100(MntDiam), \ + mm2mils100(MntDiam), \ + '"mnt" "0"', '0x0008', ']' + +BoxWidth = BoxEnd + ((pins/2-1) * PinSpacing + RowOffset); +BoxYOff = MntY + MntDiam/2 + .1524 + +print ' ElementLine[', \ + mm2mils100(-BoxEnd), \ + mm2mils100(-BoxYOff), \ + mm2mils100(-BoxEnd), \ + mm2mils100(BoxHeight-BoxYOff), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(-BoxEnd), \ + mm2mils100(BoxHeight-BoxYOff), \ + mm2mils100(BoxWidth), \ + mm2mils100(BoxHeight-BoxYOff), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(BoxWidth), \ + mm2mils100(BoxHeight-BoxYOff), \ + mm2mils100(BoxWidth), \ + mm2mils100(-BoxYOff), \ + LineWidth, ']' + +print ' ElementLine[', \ + mm2mils100(BoxWidth), \ + mm2mils100(-BoxYOff), \ + mm2mils100(-BoxEnd), \ + mm2mils100(-BoxYOff), \ + LineWidth, ']' + +print ")" diff --git a/packages/molex/ufl.py b/packages/molex/ufl.py new file mode 100755 index 0000000..b910f27 --- /dev/null +++ b/packages/molex/ufl.py @@ -0,0 +1,61 @@ +#!/usr/bin/python +# Copyright 2009 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Molex version of U.FL micro coax connector +# + +# dimensions in mm from 734120110_sd.pdf datasheet +PinWidth = 1.00 +PinHeight = 1.05 +PinOffset = 1.00 +GndHeight = 2.20 +GndInside = 1.90 +GndOutside = 4.00 +GndWidth = (GndOutside - GndInside) / 2 + +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 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 2' +print '# use-license: unlimited' + +print 'Element[0x0 "UFL" "" "" 0 0 0 0 0 100 0x0]' +print "(" + +print ' Pad[',\ + mm2mils100(-(GndOutside - GndInside)/4 - (GndInside / 2) ), \ + mm2mils100(-(GndHeight / 2) + (GndWidth / 2)), \ + mm2mils100(-(GndOutside - GndInside)/4 - (GndInside / 2) ), \ + mm2mils100((GndHeight / 2) - (GndWidth / 2)), \ + mm2mils100(GndWidth), \ + mm2mils100(0.1), \ + mm2mils100(GndWidth+0.2), \ + '"pin2"', '"2"', '0x0100]' + +print ' Pad[',\ + 0, \ + mm2mils100(PinOffset + PinWidth/2), \ + 0, \ + mm2mils100(PinOffset + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(0.1), \ + mm2mils100(PinWidth+0.2), \ + '"pin1"', '"1"', '0x0100]' + +print ' Pad[',\ + mm2mils100((GndOutside - GndInside)/4 + (GndInside / 2) ), \ + mm2mils100(-(GndHeight / 2) + (GndWidth / 2)), \ + mm2mils100((GndOutside - GndInside)/4 + (GndInside / 2) ), \ + mm2mils100((GndHeight / 2) - (GndWidth / 2)), \ + mm2mils100(GndWidth), \ + mm2mils100(0.1), \ + mm2mils100(GndWidth+0.2), \ + '"pin2"', '"2"', '0x0100]' + + +print ")"