new dual beeper footprint
authorBdale Garbee <bdale@gag.com>
Sat, 22 Jan 2022 05:49:46 +0000 (22:49 -0700)
committerBdale Garbee <bdale@gag.com>
Sat, 22 Jan 2022 05:49:46 +0000 (22:49 -0700)
packages/.gitignore
packages/Makefile
packages/dualbeeper.py [new file with mode: 0755]

index ef219c4089fb8e7f82aa2ee68fefe681ab8e4aa2..61db65cbc794a3f3f0efba7155eccb3b20edd574 100644 (file)
@@ -23,6 +23,7 @@ AN3111.fp
 lqfp32.fp
 lqfp48.fp
 lqfp64.fp
+lqfp80.fp
 lqfp100.fp
 LPCC16.fp
 MPU6000.fp
@@ -139,3 +140,4 @@ SJ-352X-SMT.fp
 DSE0006A.fp
 U-DFN2020-6-F.fp
 711AT.fp
+PG-TSDSO-14.fp
index ec46d840dd7da7fd9a22b41a74f648213a2bfae2..8bf4d33034e849610d7df1e3e901ddf59a096cd0 100644 (file)
@@ -156,7 +156,8 @@ FOOTPRINTS= \
        DSE0006A.fp \
        U-DFN2020-6-F.fp \
        711AT.fp \
-       PG-TSDSO-14.fp
+       PG-TSDSO-14.fp \
+       dualbeeper.fp
 
 .5c.fp:
        nickle $*.5c -o $@
diff --git a/packages/dualbeeper.py b/packages/dualbeeper.py
new file mode 100755 (executable)
index 0000000..0ebdc08
--- /dev/null
@@ -0,0 +1,100 @@
+#!/usr/bin/python3
+# Copyright 2022 by Bdale Garbee <bdale@gag.com>.  GPLv3
+#
+# Program to emit PCB footprint for TDK PS-12 or PUI Audio AT-1220 beeper
+#
+
+import math
+
+# dimensions in mm from puiaudio/AT-1220-TT-11-R.pdf datasheet
+BodyDiam = 12.2
+
+PinSpacingPUI = 6.5
+PinDiamPUI = 0.6
+
+PinSpacingTDK = 5.0
+PinDiamTDK = 0.7
+Angle = math.pi / 10
+
+# 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 "AT-1220" "" "" 0 0 0 0 0 100 0x0]')
+print("(")
+print('   Pin[',\
+       mm2mils100(-PinSpacingPUI/2), \
+       0, \
+       mm2mils100(PinDiamPUI * 2.5), \
+       1200, \
+       mm2mils100(PinDiamPUI * 2.5), \
+       mm2mils100(PinDiamPUI), \
+       '"pin1" "1" 0x0001]')
+
+print('   Pin[',\
+       mm2mils100(PinSpacingTDK/2 * math.cos(Angle)), \
+       mm2mils100(PinSpacingTDK/2 * math.sin(Angle)), \
+       mm2mils100(PinDiamTDK * 2.5), \
+       1200, \
+       mm2mils100(PinDiamTDK * 2.5), \
+       mm2mils100(PinDiamTDK), \
+       '"pin1" "1" 0x0001]')
+
+print('   Pin[',\
+       mm2mils100(PinSpacingPUI/2), \
+       0, \
+       mm2mils100(PinDiamPUI * 2.5), \
+       1200, \
+       mm2mils100(PinDiamPUI * 2.5), \
+       mm2mils100(PinDiamPUI), \
+       '"pin2" "2" 0x0001]')
+
+print('   Pin[',\
+       mm2mils100(-PinSpacingTDK/2 * math.cos(Angle)), \
+       mm2mils100(-PinSpacingTDK/2 * math.sin(Angle)), \
+       mm2mils100(PinDiamTDK * 2.5), \
+       1200, \
+       mm2mils100(PinDiamTDK * 2.5), \
+       mm2mils100(PinDiamTDK), \
+       '"pin2" "2" 0x0001]')
+
+print('   ElementArc[',\
+       0, \
+       0, \
+       mm2mils100(BodyDiam/2), \
+       mm2mils100(BodyDiam/2), \
+       0, \
+       360, \
+       1000, \
+       ']')
+
+print('   ElementLine[',\
+        mm2mils100(-3*BodyDiam/8), \
+        mm2mils100(-BodyDiam/4), \
+        mm2mils100(-BodyDiam/8), \
+        mm2mils100(-BodyDiam/4), \
+        1000, \
+        ']')
+
+print('   ElementLine[',\
+        mm2mils100(3*BodyDiam/8), \
+        mm2mils100(-BodyDiam/4), \
+        mm2mils100(BodyDiam/8), \
+        mm2mils100(-BodyDiam/4), \
+        1000, \
+        ']')
+
+print('   ElementLine[',\
+        mm2mils100(BodyDiam/4), \
+        mm2mils100(-3*BodyDiam/8), \
+        mm2mils100(BodyDiam/4), \
+        mm2mils100(-1*BodyDiam/8), \
+        1000, \
+        ']')
+
+print(")")