From 4f3e644b6bb81ff03ca0880b21131332f70f06d4 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 31 Oct 2021 23:08:15 -0600 Subject: [PATCH] footprint generator for single-channel FETs from Diodes Inc, TI, etc --- packages/Makefile | 3 +- packages/U-DFN2020-6-F.py | 110 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100755 packages/U-DFN2020-6-F.py diff --git a/packages/Makefile b/packages/Makefile index b7fcc63..ae49e4d 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -152,7 +152,8 @@ FOOTPRINTS= \ udfn8.fp \ PDV-P8103.fp \ SJ-352X-SMT.fp \ - DSE0006A.fp + DSE0006A.fp \ + U-DFN2020-6-F.fp .5c.fp: nickle $*.5c -o $@ diff --git a/packages/U-DFN2020-6-F.py b/packages/U-DFN2020-6-F.py new file mode 100755 index 0000000..648f0cc --- /dev/null +++ b/packages/U-DFN2020-6-F.py @@ -0,0 +1,110 @@ +#!/usr/bin/python3 +# Copyright 2021 by Bdale Garbee . GPLv3 +# +# Program to emit U-DFN2020-6 (Type F) footprint for singe-channel FET +# + +# dimensions in mm from diodes-inc/DMN2022UFDF.pdf datasheet + +BodyWidth = 2.0 +BodyHeight = 2.0 + +PinWidth = 0.4 +PinHeight = 0.425 +PinSpacing = 0.65 +RowOuters = 2.3 +RowSpacing = RowOuters - (2 * PinHeight) + +# overall dimensions for the two inner pads +X1 = 0.48 +Y1 = 0.80 + +X2 = 0.95 +Y2 = 1.15 + +# 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 3') +print ('# use-license: unlimited') + +print ('Element[0x0 "U-DFN2020-6-F" "" "" 0 0 -10161 -12011 0 100 0x0]') +print ("(") +for pin in range (0,3): + print (' Pad[',\ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(-(RowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (6 - pin), '"%i"' % (6 - pin), '0x0100]') + + print (' Pad[',\ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(RowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '0x0100]') + +print (' Pad[',\ + mm2mils100(-PinSpacing/2), \ + mm2mils100(-Y2/2 + X2/2), \ + mm2mils100(-PinSpacing/2), \ + mm2mils100(Y2/2 - X2/2), \ + mm2mils100(X2), \ + mm2mils100(.1524), \ + mm2mils100(X2)+600, \ + '"pin7" "7" 0x0100]') + +print (' Pad[',\ + mm2mils100(PinSpacing + (X1 - PinWidth)/2), \ + mm2mils100(-Y1/2 + X1/2), \ + mm2mils100(PinSpacing + (X1 - PinWidth)/2), \ + mm2mils100(Y1/2 - X1/2), \ + mm2mils100(X1), \ + mm2mils100(.1524), \ + mm2mils100(X1)+600, \ + '"pin8" "8" 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(1.25 * RowSpacing), \ +# '500 500 0 360 1000 ]') + +print (")") -- 2.47.2