def locking_clip(pins): x = (pins * 1.27 + 1.91) / 2.0 size = [1.2, 1.2] l = ["*.Mask"] pads = [] pads.append(pad("", "np_thru_hole", "circle", (+x, 0), size, l, drill=1.2)) pads.append(pad("", "np_thru_hole", "circle", (-x, 0), size, l, drill=1.2)) return pads
def side_pth_mount(pins): x = ((2.0 * (pins - 1)) // 2) + 1.5 size = [1.2, 1.2] layers = ["*.Mask"] return [ pad("", "np_thru_hole", "circle", (x, -2.1), size, layers, drill=1.2), pad("", "np_thru_hole", "circle", (-x, -2.1), size, layers, drill=1.2) ]
def pads(conf): """Place the part pads.""" out = [] x = conf['pitch'] / 2.0 layers = ["F.Cu", "F.Mask", "F.Paste"] out.append(pad(1, "smd", "rect", (-x, 0), conf['pad_shape'], layers)) out.append(pad(2, "smd", "rect", (+x, 0), conf['pad_shape'], layers)) return out
def sfml_pads(pins): pads = [] x = -((pins - 1) / 2.0) * 1.27 for pin in range(pins): pads.append(pad(pin*2 + 1, "smd", "rect", (x, -1.365), [0.74, 2.22], ["F.Cu", "F.Mask", "F.Paste"])) pads.append(pad(pin*2 + 2, "smd", "rect", (x, 1.365), [0.74, 2.22], ["F.Cu", "F.Mask", "F.Paste"])) x += 1.27 return pads
def dil_pads(pins): pads = [] x = -((pins - 1) / 2) * 2.54 for pin in range(pins): shape = "rect" if 2*pin+1 == 1 else "circle" pads.append(pad(2*pin + 1, "thru_hole", shape, (x, 1.27), [1.9, 1.9], ["*.Cu", "F.SilkS", "F.Mask", "B.Mask"], drill=[1.0])) pads.append(pad(2*pin + 2, "thru_hole", "circle", (x, -1.27), [1.9, 1.9], ["*.Cu", "F.SilkS", "F.Mask", "B.Mask"], drill=[1.0])) x += 2.54 return pads
def exposed_pad(conf): """ Compute pads for an exposed pad, which might have separate mask and paste apertures. """ out = [] ep_shape = conf['ep_shape'] ep_layers = ["F.Cu"] ep_m_mask = None ep_m_paste = None # Mask apertures if "ep_mask_shape" not in conf: ep_layers.append("F.Mask") ep_m_mask = 0.001 else: mask_shape = conf['ep_mask_shape'] apertures = inner_apertures(ep_shape, mask_shape) layers = ["F.Mask"] for ap in apertures: out.append(pad("", "smd", "rect", ap, mask_shape[:2], layers, m_mask=.001)) # Paste apertures if "ep_paste_shape" not in conf: ep_layers.append("F.Paste") ep_m_paste = 0.001 else: paste_shape = conf['ep_paste_shape'] apertures = inner_apertures(ep_shape, paste_shape) layers = ["F.Paste"] for ap in apertures: out.append( pad("", "smd", "rect", ap, paste_shape[:2], layers, m_paste=.001)) # Vias if "ep_vias" in conf: v_d, v_s, v_g = conf['ep_vias'] centres = inner_apertures(ep_shape, (v_s, v_s, v_g, v_g)) layers = ["*.Cu"] for c in centres: p = pad("EP", "thru_hole", "circle", c, (v_s, v_s), layers, drill=v_d) p.append(("zone_connect", 2)) out.append(p) out.append( pad("EP", "smd", "rect", (0, 0), ep_shape, ep_layers, m_mask=ep_m_mask, m_paste=ep_m_paste)) return out
def side_smd_mount(pins): out = [] x = pins - 1 for xx in (x+2.35, -x-2.35): out.append(pad("", "smd", "rect", (xx, -3.25), (1.8, 3.8), ["F.Cu", "F.Mask", "F.Paste"])) return out
def top_smd_mount(pins): x = -(pins-1)/2 * 1.25 - 3.6 + 2.1/2 out = [] for xx in (x, -x): out.append(pad("", "smd", "rect", (xx, 0.6+3.0/2+1.3/2), (2.1, 3.0), ["F.Cu", "F.Mask", "F.Paste"])) return out
def pth_pads(pins): x = (pins - 1)*1.25 pads = [] for pin in range(pins): pads.append(pad(pin+1, "thru_hole", "circle", (x, 0), [1.8, 1.8], ["*.Cu", "*.Mask"], drill=1.0)) x -= 2.5 return pads
def top_smd_pads(pins): x = -(pins-1)/2 * 1.25 pads = [] for pin in range(pins): pads.append(pad(pin+1, "smd", "rect", (x, 0), [0.8, 1.3], ["F.Cu", "F.Mask", "F.Paste"])) x += 1.25 return pads
def side_smd_mount(pins): out = [] x = pins - 1 for xx in (x + 2.35, -x - 2.35): out.append( pad("", "smd", "rect", (xx, -3.25), (1.8, 3.8), ["F.Cu", "F.Mask", "F.Paste"])) return out
def pth_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append(pad(pin+1, "thru_hole", "circle", (x, 0), [1.6, 1.6], ["*.Cu", "*.Mask"], drill=0.8)) x -= 2 return pads
def side_smd_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append(pad(pin+1, "smd", "rect", (x, 1.5-0.15), [1, 2.7+2*0.15], ["F.Cu", "F.Mask", "F.Paste"])) x -= 2 return pads
def top_smd_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append(pad(pin+1, "smd", "rect", (x, 0), [1, 3.0], ["F.Cu", "F.Mask", "F.Paste"])) x -= 2 return pads
def pad_row(centres, num, idx, shape, size, layers, skip): out = [] for centre in centres: idx += 1 if idx - 1 in skip: continue out.append(pad(num, "smd", shape, centre, size, layers)) num += 1 return num, idx, out
def top_smd_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append( pad(pin + 1, "smd", "rect", (x, 0), [1, 3.0], ["F.Cu", "F.Mask", "F.Paste"])) x -= 2 return pads
def side_smd_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append( pad(pin + 1, "smd", "rect", (x, 1.5 - 0.15), [1, 2.7 + 2 * 0.15], ["F.Cu", "F.Mask", "F.Paste"])) x -= 2 return pads
def dil_pads(pins): pads = [] x = -((pins - 1) / 2) * 2.54 for pin in range(pins): shape = "rect" if 2 * pin + 1 == 1 else "circle" pads.append( pad(2 * pin + 1, "thru_hole", shape, (x, 1.27), [1.9, 1.9], ["*.Cu", "F.SilkS", "F.Mask", "B.Mask"], drill=[1.0])) pads.append( pad(2 * pin + 2, "thru_hole", "circle", (x, -1.27), [1.9, 1.9], ["*.Cu", "F.SilkS", "F.Mask", "B.Mask"], drill=[1.0])) x += 2.54 return pads
def bga_pads(conf): out = [] layers = ["F.Cu", "F.Mask", "F.Paste"] size = [conf['pad_shape']] * 2 margin = (conf['mask_shape'] - conf['pad_shape']) / 2.0 for num, centre in bga_pin_centres(conf).items(): p = pad(num, "smd", "circle", centre, size, layers) p.append(["solder_mask_margin", margin]) out.append(p) return out
def pth_pads(pins): x = pins - 1 pads = [] for pin in range(pins): pads.append( pad(pin + 1, "thru_hole", "circle", (x, 0), [1.6, 1.6], ["*.Cu", "*.Mask"], drill=0.8)) x -= 2 return pads
def exposed_pad(conf): """ Compute pads for an exposed pad, which might have separate mask and paste apertures. """ out = [] ep_shape = conf['ep_shape'] ep_layers = ["F.Cu"] ep_m_mask = None ep_m_paste = None # Mask apertures if "ep_mask_shape" not in conf: ep_layers.append("F.Mask") ep_m_mask = 0.001 else: mask_shape = conf['ep_mask_shape'] apertures = inner_apertures(ep_shape, mask_shape) layers = ["F.Mask"] for ap in apertures: out.append( pad("", "smd", "rect", ap, mask_shape[:2], layers, m_mask=.001)) # Paste apertures if "ep_paste_shape" not in conf: ep_layers.append("F.Paste") ep_m_paste = 0.001 else: paste_shape = conf['ep_paste_shape'] apertures = inner_apertures(ep_shape, paste_shape) layers = ["F.Paste"] for ap in apertures: out.append( pad("", "smd", "rect", ap, paste_shape[:2], layers, m_paste=.001)) # Vias if "ep_vias" in conf: v_d, v_s, v_g = conf['ep_vias'] centres = inner_apertures(ep_shape, (v_s, v_s, v_g, v_g)) layers = ["*.Cu"] for c in centres: p = pad("EP", "thru_hole", "circle", c, (v_s, v_s), layers, drill=v_d) p.append(("zone_connect", 2)) out.append(p) out.append( pad("EP", "smd", "rect", (0, 0), ep_shape, ep_layers, m_mask=ep_m_mask, m_paste=ep_m_paste)) return out