From cac4040ce10ea48482dc7155cb4d21b9454ccb4c Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Mon, 23 Sep 2019 22:27:25 -0600 Subject: [PATCH] add footprint for Bosch LGA14 used by BMX160 --- packages/Makefile | 1 + packages/lga14b.py | 107 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100755 packages/lga14b.py diff --git a/packages/Makefile b/packages/Makefile index 6e94ba2..7c854b1 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -22,6 +22,7 @@ FOOTPRINTS= \ s-pwson-n8.fp \ s-pwson-n6.fp \ lga14.fp \ + lga14b.fp \ MS5607.fp \ uson-8.fp \ wson6x5.fp \ diff --git a/packages/lga14b.py b/packages/lga14b.py new file mode 100755 index 0000000..04a1e23 --- /dev/null +++ b/packages/lga14b.py @@ -0,0 +1,107 @@ +#!/usr/bin/python +# Copyright 2019 by Bdale Garbee . GPLv3 +# +# Program to emit PCB footprint for Bosch LGA 14 such as BMX160 +# + +# dimensions in mm from BST-BMX160-DS000.pdf + +PinWidth = 0.25 +PinHeight = 0.675 + +HRowSpacing = 0.925 * 2 +VRowSpacing = 0.675 * 2 +PinSpacing = 0.5 + +BodyHeight = 3.0 +BodyWidth = 2.5 + +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 3' +print '# use-license: unlimited' + +print 'Element[0x0 "lga14b" "" "" 0 0 -10161 -12011 0 100 0x0]' +print "(" +for pin in range (0,4): + print ' Pad[',\ + mm2mils100(-(HRowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(-(HRowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (1 + pin), '"%i"' % (1 + pin), '0x0100]' + + print ' Pad[',\ + mm2mils100(HRowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(HRowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100((pin-1.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (11 - pin), '"%i"' % (11 - pin), '0x0100]' + +for pin in range (0,3): + print ' Pad[',\ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(-(VRowSpacing/2 + PinWidth/2)), \ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(-(VRowSpacing/2 + PinHeight - PinWidth/2)), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (14 - pin), '"%i"' % (14 - pin), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(VRowSpacing/2 + PinWidth/2), \ + mm2mils100((pin-1) * PinSpacing), \ + mm2mils100(VRowSpacing/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinWidth)+600, \ + '"pin%i"' % (5 + pin), '"%i"' % (5 + pin), '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(-HRowSpacing), \ + mm2mils100(-2.25 * PinSpacing), \ + '500 500 0 360 1000 ]' + +print ")" -- 2.47.2