diff --git a/AUTHORS b/AUTHORS index 7640e9c..7c0b062 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,6 +4,10 @@ Alvaro Lopes components/74x1g125.lib components/74x2g126.lib +Rene Harder + + modules/mini-usb.fpd + Werner Almesberger components/8_10-card.lib @@ -23,3 +27,4 @@ Werner Almesberger modules/fiducial.fpd modules/qfn.fpd modules/qfp.fpd + moduled/usb_a_plug_smt.fpd diff --git a/modules/INFO b/modules/INFO index b448679..129c3ca 100644 --- a/modules/INFO +++ b/modules/INFO @@ -64,3 +64,25 @@ N: sot617-3-lp # "Generic" simple QFP (for now, just for Silabs' C8051F320) F: qfp + +# Mini-USB B receptable (SMT; almost generic) +F: mini_usb_b + +# USB A plug for SMT +# +# Note: the signal pads are enlarged by 0.2 mm and their center is shifted by +# 0.1 mm with respect to the reference. +# +# According to the data sheet, the leads terminate at (2.00+/-0.10 mm)/2+ +# 2.48 mm = 3.48+/-0.10 mm from the center. The reference footprint puts the +# edge of the pads at (2.00+/-0.10 mm)/2+2.6 mm = 3.6 mm+/-0.10 mm, so the +# maximum lead end could be at 3.58 mm while the minimum pad edge could be at +# 3.5 mm. +# +# Assuming that the pad is intended to extend a bit beyond the lead, we need +# to add 0.2 mm to compensate for these tolerances. (The pad tolerance may not +# be intended to be used this way, however, we still have to consider small +# errors in registration, which also amount to about 0.1 mm, so the calculation +# remains valid.) +# +F: usb_a_plug_smt diff --git a/modules/Makefile b/modules/Makefile index 94c5fbd..ba1f9c6 100644 --- a/modules/Makefile +++ b/modules/Makefile @@ -1,4 +1,4 @@ -MODULES=8_10-card fiducial pads qfn qfp stdpass +MODULES=8_10-card fiducial mini-usb pads qfn qfp stdpass usb_a_plug_smt .SUFFIXES: .fpd .mod .PHONY: all clean diff --git a/modules/mini-usb.fpd b/modules/mini-usb.fpd new file mode 100644 index 0000000..f1e1713 --- /dev/null +++ b/modules/mini-usb.fpd @@ -0,0 +1,114 @@ +/*Mini USB Type B connector*/ + +frame pad{ + set name=i + ur: vec @(0mm,w/2) + ll: vec @(-l,-w/2) + pad "$name" ur ll +} +frame pad_gnd { + set name1=i + set name2=i+2 + pos1_ur: vec @(gnd_x/2,gnd_y/2) + pos2_ur: vec .(0mm,-b_y) + pos1_ll: vec @(-gnd_x/2,-gnd_y/2) + pos2_ll: vec .(0mm,-b_y) + center: vec @(0mm,-b_y) + pad "$name1" pos1_ur pos1_ll + pad "$name2" pos2_ur pos2_ll +} + +frame pads { + + loop i=1,5 + pos: vec @(0mm,2*p-(i-1)*p) + frame pad . + +} + +frame pads_gnd{ + + loop i=6,7 + pos: vec @(-gnd_x/2-a_x*(i-6),b_y/2) + frame pad_gnd . + + +} +frame holes { + c1: vec @(-f,c/2) + d1: vec .(0mm,d/2) + c2: vec @(-f,-c/2) + d2: vec .(0mm,d/2) + circ c1 d1 0.01mm + circ c2 d2 0.01mm + +} +frame outline { + ur: vec @(-f+A1_x,B_y/2) + ll: vec @(-e,-B_y/2) + rect ur ll silk + ur2: vec @(-e,B_y/2) + ll2: vec @(-f-A2_x,-B_y/2) + rect ur2 ll2 silk + +} + +package "miniUSB_B" +unit mm + +/*GND pad size*/ +set gnd_y = 2mm +set gnd_x = 2.5mm + +/*pad size*/ +set w=0.5mm +set l=2.3mm + +/*pitch*/ +set p = 0.8mm + +/*distance center GND pad -> center pin1 */ +set a=2.85mm + +/*distance GND pad -> GND pad*/ +set a_x=5.5mm +set b_y=8.9mm + +/*distance between drill holes*/ +set c=4.4mm +/*x distance drill hole -> outer edge pin 1*/ +set f=3.75mm + +/*drill hole diameter*/ +set d=0.9mm + +/*distance outer edge of pin1 -> PCB edge*/ +set e=9mm +/*outline x direction, center holes -> edges*/ +set A1_x=3.3mm +set A2_x=5.9mm +/*outline y direction*/ +set B_y=7.7mm + +set silk=0.1mm + +__0: vec @(0mm, 0mm) +frame pads @ +frame pads_gnd @ +frame holes @ +frame outline @ + + +measy pad.ll -> pad.ur -l-2mm +measy pad_gnd.pos2_ll -> pad_gnd.pos2_ur 0.3mm +measx pad_gnd.pos1_ll -> pad_gnd.pos1_ur -1mm +measy __0 -> pads.pos -0.5mm +measy pads.pos >> pads.pos -1.5mm +measx pads_gnd.pos >> pads_gnd.pos 2mm +measx outline.ur2 >> pad.ur 3.5mm +measx outline.ll >> holes.c2 -3mm +measy holes.c2 >> holes.c1 A2_x+1mm +measy outline.ll2 >> outline.ur2 2mm +measx pad.ll -> pads.pos -1mm +measy pads_gnd.pos << pad_gnd.center -5mm + diff --git a/modules/usb_a_plug_smt.fpd b/modules/usb_a_plug_smt.fpd new file mode 100644 index 0000000..ebb3ecd --- /dev/null +++ b/modules/usb_a_plug_smt.fpd @@ -0,0 +1,99 @@ +/* MACHINE-GENERATED ! */ + +frame pad { + table + { h, w } + { 2mm+2*enlarge, 1.2mm } + + __0: vec @(w/2, h/2) + __1: vec @(-w/2, -h/2) + pad "$name" . __0 +} + +frame pads { + table + { name, x } + { 1, 3.5mm } + { 2, 1mm } + { 3, -1mm } + { 4, -3.5mm } + + set enlarge = 0.1mm + + __0: vec @(0mm, 2.6mm+enlarge) + __1: vec .(x, 0mm) + frame pad . +} + +frame shield { + table + { name, x } + { 5, -B/2 } + { 6, B/2 } + + table + { hi, wi } + { 2.5mm, 1mm } + + set ratio = 2 + + set ho = hi*ratio + + set wo = wi*ratio + + __0: vec @(x, 0mm) + __1: vec .(wo/2, ho/2) + __2: vec __0(-wo/2, -ho/2) + rpad "$name" . __1 + __3: vec __0(wi/2, hi/2) + __4: vec __0(-wi/2, -hi/2) + hole . __3 +} + +frame holes { + set d = 1.15mm + + table + { x } + { -C/2 } + { C/2 } + + __0: vec @(x, 0mm) + __1: vec .(d/2, d/2) + __2: vec __0(-d/2, -d/2) + hole . __1 +} + +frame edge { + set w = 5mil + + __0: vec @(0mm, -2.75mm) + __1: vec .(B/2, 0mm) + __2: vec __0(-B/2, 0mm) + line . __1 w +} + +package "USB-A-PLUG-SMT" +unit auto + +table + { A, B, C } + { 2mm, 11.4mm, 4.5mm } + +frame edge @ +frame holes @ +frame pads @ +frame shield @ +measx pads.__1 >> pads.__1 3mm +measx pads.__1 -> pads.__1 2.5mm +measx pad.__1 -> pad.__0 3mm +measy pad.__1 -> pad.__0 0.5mm +measx shield.__2 -> shield.__1 -2.5mm +measy shield.__2 -> shield.__1 1.5mm +measy shield.__4 -> shield.__3 1mm +measx shield.__4 -> shield.__3 -2mm +measx shield.__0 >> shield.__0 6.5mm +measx holes.__0 >> holes.__0 -1.5mm +measy holes.__2 -> holes.__1 1mm +measy edge.__1 >> shield.__0 -2mm +measy pads.__0 << shield.__0 -2mm