From: Bdale Garbee Date: Sun, 7 Aug 2022 05:17:37 +0000 (-0600) Subject: add footprint for Taiwan Semiconductor dual fet package X-Git-Tag: telelco-v3.0~151 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=006f02cfd7dce63110058c27dfe1f6f983649b0e;p=hw%2Faltusmetrum add footprint for Taiwan Semiconductor dual fet package --- diff --git a/packages/Makefile b/packages/Makefile index f1f96b3..da339f1 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -160,7 +160,8 @@ FOOTPRINTS= \ PG-TSDSO-14.fp \ dualbeeper.fp \ vqfn-48.fp \ - miniso8.fp + miniso8.fp \ + PDFN33.fp .5c.fp: nickle $*.5c -o $@ diff --git a/packages/PDFN33.py b/packages/PDFN33.py new file mode 100755 index 0000000..071a3c0 --- /dev/null +++ b/packages/PDFN33.py @@ -0,0 +1,108 @@ +#!/usr/bin/python2 +# Copyright 2022 by Bdale Garbee . GPLv2 +# +# Program to emit PCB footprint for Taiwan Semiconductor PDFN33 dual FETs +# + +# dimensions in mm from TSM200N03D_B1710-1918822.pdf +PinWidth = 0.40 +PinHeight = 0.60 +PinSpacing = 0.65 +RowOuter = 3.55 + +DrainWidth = 1.29 +DrainHeight = 2.35 +DrainSpacing = 0.25 +DrainGap = 0.35 + +BodyWidth = 3.3 +BodyHeight = 3.35 + +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 "1212-8" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,4): + print ' Pad[',\ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(-(RowOuter/2 - PinWidth/2)), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(-(RowOuter/2 - PinHeight + PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (8 - pin), '"%i"' % (8 - pin), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(RowOuter/2 - PinWidth/2), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(RowOuter/2 - PinHeight + PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '0x0100]' + +print ' Pad[',\ + mm2mils100(-(DrainSpacing/2 + DrainWidth/2)), \ + mm2mils100(RowOuter/2 - PinHeight - DrainGap - DrainWidth/2), \ + mm2mils100(-(DrainSpacing/2 + DrainWidth/2)), \ + mm2mils100(RowOuter/2 - PinHeight - DrainGap - DrainHeight + DrainWidth/2), \ + mm2mils100(DrainWidth), \ + mm2mils100(DrainSpacing - DrainWidth), \ + mm2mils100(DrainWidth)+600, \ + '"pin8" "8" 0x0100]' + +print ' Pad[',\ + mm2mils100(DrainSpacing/2 + DrainWidth/2), \ + mm2mils100(RowOuter/2 - PinHeight - DrainGap - DrainWidth/2), \ + mm2mils100(DrainSpacing/2 + DrainWidth/2), \ + mm2mils100(RowOuter/2 - PinHeight - DrainGap - DrainHeight + DrainWidth/2), \ + mm2mils100(DrainWidth), \ + mm2mils100(DrainSpacing - DrainWidth), \ + mm2mils100(DrainWidth)+600, \ + '"pin5" "5" 0x0100]' + +print ' ElementLine[',\ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyHeight/2), \ + mm2mils100( BodyWidth/2), \ + mm2mils100( BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(-BodyWidth/2), \ + '1000 ]' + +print ' ElementArc[',\ + mm2mils100(-2 * PinSpacing), \ + mm2mils100(0.60 * RowOuter), \ + '500 500 0 360 1000 ]' + +print ")"