From: Bdale Garbee Date: Mon, 14 Jul 2014 20:37:29 +0000 (-0600) Subject: add footprint generator for audio amp X-Git-Tag: telelco-v3.0~771 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=743210db9817cd51dec3b49993b83d70b4d8dd8c;p=hw%2Faltusmetrum add footprint generator for audio amp --- diff --git a/packages/Makefile b/packages/Makefile index c20bd7a..53deeea 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -69,7 +69,8 @@ FOOTPRINTS= \ PCM12SMTR.fp \ usbAmale.fp \ nx3215sa.fp \ - DR127.fp + DR127.fp \ + PowerPAD32.fp .5c.fp: nickle $*.5c > $@ diff --git a/packages/PowerPAD32.py b/packages/PowerPAD32.py new file mode 100755 index 0000000..ade5f54 --- /dev/null +++ b/packages/PowerPAD32.py @@ -0,0 +1,130 @@ +#!/usr/bin/python +# Copyright 2014 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for PowerPAD 32-pin package used by TPA3118 +# + +# dimensions in mm from the TI tpa3116d2.pdf datasheet +PinWidth = 0.3 +PinResist = 0.44 # width of gap in solder resist over pad +PinHeight = 1.80 +PinSpacing = 0.65 +PinRow = 7.4 # center to center of pin rows + +PadWidth = 11.0 # ground pad under part +PadHeight = 5.2 + +MaskWidth = 4.36 # opening in solder mask for ground pad +MaskHeight = 4.11 + +ViaGrid = 1.3 # spacing between vias in ground pad + +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 "PowerPAD32" "" "" 0 0 0 0 0 100 0x0]' +print "(" + +# vias in the ground pad under the chip +for viarow in range (-2,2): + for viacol in range (-4,4): + print ' Pin[',\ + mm2mils100(viacol * ViaGrid + ViaGrid/2), \ + mm2mils100(viarow * ViaGrid + ViaGrid/2), \ + 2700, \ + 2500, \ + 0, \ + 1300, \ + '"pin33" "33" 0x0002]' + +# break pad under chip into a grid to control the resist and paste masks +for viarow in range (-3, 4): + for viacol in range (-8, 9): + if (viacol in (-3, -2, -1, 0, 1, 2, 3)): + # copper sub-square without resist, with paste + print ' Pad[',\ + mm2mils100(viacol * ViaGrid/2), \ + mm2mils100(viarow * ViaGrid/2), \ + mm2mils100(viacol * ViaGrid/2), \ + mm2mils100(viarow * ViaGrid/2), \ + mm2mils100(ViaGrid/2), \ + 0, \ + mm2mils100(ViaGrid/2), \ + '"pin33" "33" "square"]' + else: + # copper sub-square with resist over vias + print ' Pad[',\ + mm2mils100(viacol * ViaGrid/2), \ + mm2mils100(viarow * ViaGrid/2), \ + mm2mils100(viacol * ViaGrid/2), \ + mm2mils100(viarow * ViaGrid/2), \ + mm2mils100(ViaGrid/2), \ + 0, \ + 0, \ + '"pin33" "33" "square,nopaste"]' + +# pins +for pin in range (1,17): + print ' Pad[',\ + mm2mils100((pin - 8.5) * PinSpacing), \ + mm2mils100(PinRow/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100((pin - 8.5) * PinSpacing), \ + mm2mils100(PinRow/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (pin), '"%i"' % (pin), '"square"]' + + print ' Pad[',\ + mm2mils100((pin - 8.5) * PinSpacing), \ + mm2mils100(-PinRow/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100((pin - 8.5) * PinSpacing), \ + mm2mils100(-PinRow/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (33-pin), '"%i"' % (33-pin), '"square"]' + +# print ' Pad[',\ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(+Overall/2 - PinWidth/2), \ +# mm2mils100(PinWidth), \ +# mm2mils100(PinSpacing - PinWidth), \ +# mm2mils100(PinResist), \ +# '"pin%i"' % pin, '"%i"' % pin, '0x0000]' +# +# print ' Pad[',\ +# mm2mils100(Overall/2 - PinHeight + PinWidth/2), \ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(Overall/2 - PinWidth/2), \ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(PinWidth), \ +# mm2mils100(PinSpacing - PinWidth), \ +# mm2mils100(PinResist), \ +# '"pin%i"' % (19-pin), '"%i"' % (19-pin), '0x0000]' +# +# print ' Pad[',\ +# mm2mils100(-Overall/2 + PinWidth/2), \ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \ +# mm2mils100(-2.5 + pin * PinSpacing), \ +# mm2mils100(PinWidth), \ +# mm2mils100(PinSpacing - PinWidth), \ +# mm2mils100(PinResist), \ +# '"pin%i"' % (27+pin), '"%i"' % (27+pin), '0x0000]' + +print ' ElementArc[',\ + mm2mils100(-7.5 * PinSpacing), \ + mm2mils100(PinRow/2 + PinHeight * 0.75), \ + '500 500 0 360 1000 ]' +print ")"