From: Bdale Garbee Date: Sun, 24 Oct 2021 07:27:14 +0000 (-0600) Subject: add footprint generator for SMT 1/8" headphone jacks X-Git-Tag: telelco-v3.0~196 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=59d12ebe092091998e45901a6c4fd83c40ccaff4;p=hw%2Faltusmetrum add footprint generator for SMT 1/8" headphone jacks --- diff --git a/packages/Makefile b/packages/Makefile index b03f165..278ee79 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -150,7 +150,8 @@ FOOTPRINTS= \ RSM0032B.fp \ RHB0032E.fp \ udfn8.fp \ - PDV-P8103.fp + PDV-P8103.fp \ + SJ-352X-SMT.fp .5c.fp: nickle $*.5c -o $@ diff --git a/packages/SJ-352X-SMT.py b/packages/SJ-352X-SMT.py new file mode 100755 index 0000000..8c0c883 --- /dev/null +++ b/packages/SJ-352X-SMT.py @@ -0,0 +1,169 @@ +#!/usr/bin/python3 +# Copyright 2021 by Bdale Garbee . GPLv3 +# +# Program to emit PCB footprint for CUI SJ-352X-SMT 1/8" headphone jacks +# + +# dimensions in mm from cui/sj-352x-smt.pdf + +Pad1Setback = 2.4 # to center +Pad2Setback = 11.8 # to center +Pad3Setback = 4.4 # to center +Pad4Setback = 14.5 # to leading edge +PadOffset = 2.3 # start of pad above/below centerline + +FrontPadHeight = 5.1 - PadOffset +FrontPadWidth = 2.2 + +BackPadWidth = 2.6 +BackPadHeight = 2.8 +BackPadOffset = 0.75 + +Clearance = 0.010 * 25.4 +Mask = 0.007 * 2 * 25.4 + +HoleDiam = 1.7 +HoleSetback = 3.5 +HoleSpacing = 7.0 + +BodyHeight = 6.0 +BodyWidth = 14.5 +SnoutHeight = 5.0 +SnoutWidth = 2.5 + +# 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 "SJ-352X-SMT" "" "" 0 0 0 0 0 100 0x0]') +print("(") + +print(' Pad[',\ + mm2mils100(Pad1Setback), \ + mm2mils100(PadOffset + FrontPadWidth/2), \ + mm2mils100(Pad1Setback), \ + mm2mils100(PadOffset + FrontPadHeight - FrontPadWidth/2), \ + mm2mils100(FrontPadWidth), \ + mm2mils100(Clearance), \ + mm2mils100(FrontPadWidth + Mask), \ + '"1" "1" 0x0100]') + +print(' Pad[',\ + mm2mils100(Pad2Setback), \ + mm2mils100(PadOffset + BackPadWidth/2), \ + mm2mils100(Pad2Setback), \ + mm2mils100(PadOffset + FrontPadHeight - BackPadWidth/2), \ + mm2mils100(BackPadWidth), \ + mm2mils100(Clearance), \ + mm2mils100(BackPadWidth + Mask), \ + '"2" "2" 0x0100]') + +print(' Pad[',\ + mm2mils100(Pad3Setback), \ + mm2mils100(-PadOffset - FrontPadWidth/2), \ + mm2mils100(Pad3Setback), \ + mm2mils100(-PadOffset - FrontPadHeight + FrontPadWidth/2), \ + mm2mils100(FrontPadWidth), \ + mm2mils100(Clearance), \ + mm2mils100(FrontPadWidth + Mask), \ + '"3" "3" 0x0100]') + +print(' Pad[',\ + mm2mils100(Pad4Setback + BackPadWidth/2 ), \ + mm2mils100(-BackPadOffset - BackPadHeight/2 + BackPadWidth/2), \ + mm2mils100(Pad4Setback + BackPadWidth/2 ), \ + mm2mils100(-BackPadOffset + BackPadHeight/2 - BackPadWidth/2), \ + mm2mils100(BackPadWidth), \ + mm2mils100(Clearance), \ + mm2mils100(BackPadWidth + Mask), \ + '"4" "4" 0x0100]') + +print(' Pin[',\ + mm2mils100(HoleSetback), \ + 0, \ + mm2mils100(2.5*HoleDiam), \ + mm2mils100(0.5), \ + mm2mils100(3*HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mounting" "M" 0x0008]') + +print(' Pin[',\ + mm2mils100(HoleSetback+HoleSpacing), \ + 0, \ + mm2mils100(2.5*HoleDiam), \ + mm2mils100(0.5), \ + mm2mils100(3*HoleDiam), \ + mm2mils100(HoleDiam), \ + '"mounting" "M" 0x0008]') + +print(' ElementLine[',\ + 0, \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(BodyWidth), \ + mm2mils100(-BodyHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + 0, \ + mm2mils100(BodyHeight/2), \ + mm2mils100(BodyWidth), \ + mm2mils100(BodyHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + mm2mils100(BodyWidth), \ + mm2mils100(-BodyHeight/2), \ + mm2mils100(BodyWidth), \ + mm2mils100(BodyHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-SnoutWidth), \ + mm2mils100(SnoutHeight/2), \ + 0, \ + mm2mils100(SnoutHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-SnoutWidth), \ + mm2mils100(-SnoutHeight/2), \ + 0, \ + mm2mils100(-SnoutHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + mm2mils100(-SnoutWidth), \ + mm2mils100(-SnoutHeight/2), \ + mm2mils100(-SnoutWidth), \ + mm2mils100(SnoutHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + 0, \ + mm2mils100(SnoutHeight/2), \ + 0, \ + mm2mils100(BodyHeight/2), \ + 1000, \ + ']') + +print(' ElementLine[',\ + 0, \ + mm2mils100(-SnoutHeight/2), \ + 0, \ + mm2mils100(-BodyHeight/2), \ + 1000, \ + ']') + + +print(")")