Ejemplo n.º 1
0
 def write_kicad(self, fpname, mirror=""):
     f = footgen.Footgen(fpname)
     g = f.generator
     g.mirror = mirror
     for object in self.objects:
         g.options = "masked"
         g.drill = 0
         self.objects[object].generate_kicad(g)
     f.finish()
Ejemplo n.º 2
0
def pciecard(npins, name):
    f = footgen.Footgen(name)
    g = f.generator
    g.mask_clearance = 0.0 # mm
    g.clearance = 0.0 # mm
    x = 45.65 # mm
    y = -3.5 # mm
    for i in range(1,1+npins/2):
        f.add_pad(name = "B"+str(i),
                  x = x,
                  y = y,
                  xsize = 0.7, # mm
                  ysize = 4.2, # mm
                  paste = False)
        f.add_pad(name = "A"+str(i),
                  x = x,
                  y = y,
                  xsize = 0.7, # mm
                  ysize = 4.2, # mm
                  paste = False,
                  bottom = True)
        if i == 11:
            x += 3.0 # mm, key
        else:
            x += 1.0 # mm
    g.silk_line(0.0, -4.5, 15.0, -4.5)
    g.silk_line(15.0, -4.5, 15.0, -12.75)
    g.silk_line(15.0, -12.75, 33.35, -12.75)
    g.silk_line(33.35, -12.75, 33.35, -4.5)
    g.silk_line(33.35, -4.5, 41.35, -4.5) # pci block lower edge
    g.silk_line(41.35, -4.5, 41.35, -10.925)
    g.silk_arc(43.175, -10.925, 41.35, -10.925, 180)
    g.silk_line(45.0, -10.925, 45.0, -0.7)
    g.silk_line(45.7, 0, 45.0, -0.7) # diagonal at 1
    g.silk_line(45.7, 0, 56.2 - 0.7, 0) # lower edge contacts 1 - 11
    g.silk_line(56.2 - 0.7, 0, 56.2, -0.7) # diagonal at 11
    g.silk_line(56.2, -0.7, 56.2, -8.0)
    g.silk_arc(57.15, -8.0, 56.2, -8.0, 180)
    g.silk_line(58.1, -8.0, 58.1, -0.7)
    g.silk_line(58.1 + 0.7, 0, 58.1, -0.7) # diagonal at 12
    cardedge_endx = 65.3 + 0.5*(npins-36)
    g.silk_line(58.1 + 0.7, 0.0, cardedge_endx - 0.7, 0.0) # lower edge 2nd contacts
    g.silk_line(cardedge_endx -0.7, 0.0, cardedge_endx, -0.7)
    g.silk_line(cardedge_endx, -0.7, cardedge_endx, -13.0)
    output_file = open(name + ".kicad_mod", "w")
    output_file.write(g.finish())
    output_file.close()
Ejemplo n.º 3
0
def pciecard(npins, name):
    f = footgen.Footgen(name)
    g = f.generator
    g.mask_clearance = 0.0  # mm
    g.clearance = 0.0  # mm
    x = -11.65  # mm
    for i in range(1, 1 + npins / 2):
        odd = (i & 1) != 0
        y = 1.25 if odd else 3.25
        f.add_pad(name="B" + str(i),
                  x=x,
                  y=y,
                  diameter=1.1,
                  shape="circle",
                  drill=0.7)
        f.add_pad(name="A" + str(i),
                  x=x,
                  y=-y,
                  diameter=1.1,
                  shape="circle",
                  drill=0.7)
        if i == 11:
            x += 3.0  # mm, key
        else:
            x += 1.0  # mm
    for x in [0, 9.15 + (npins - 36) * 0.5]:
        f.add_pad(name="x",
                  x=x,
                  y=0,
                  diameter=2.35,
                  shape="circle",
                  plated=False,
                  masked=True,
                  drill=2.35)

    for x in [-14.5, -14.5 + 7 + 0.5 * npins]:
        g.silk_line(x, -3.7, x, 5.1)
    output_file = open(name + ".kicad_mod", "w")
    output_file.write(g.finish())
    output_file.close()
Ejemplo n.º 4
0
#!/usr/bin/python
import footgen

f = footgen.Footgen("r_th")
f.sip(pitch=20.0,
      drill=0.8,
      pins=2,
      diameter=1.2,
      pin1shape="circle",
      draw_silk=False)
f.silkbox(w=2.0, h=16.0, notch=None, silkwidth=0.155)
f.finish()

f = footgen.Footgen("c_elec")
f.sip(pitch=5.0,
      drill=1.0,
      pins=2,
      diameter=1.6,
      pin1shape="square",
      draw_silk=False)
f.generator.silk_circle(0, 0, 10.0 / 2)
f.finish()
Ejemplo n.º 5
0
#!/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution

# This set of footgen stanzas creates footprints for WS2812 and WS2812B,
# as well as a couple genericized 'plcc4' and 'plcc6' 4 and 6 pad 5mmx5mm parts
#
# this small family of parts is probably incorrectly termed as 'plcc'
# since 'plastic leaded chip carrier' smt parts are typically leaded on four
# sides, but for some reason the plcc4/plcc6 terminology stuck for use with
# the popular worldsemi WS2812 and WS2812B rgb led parts.

# units in mm
import footgen
f = footgen.Footgen("WS2812B-PLCC4")
f.generator.clearance = 0.204
f.generator.mask_clearance = 0.080
f.pins = 4
f.pitch = 3.3
f.height = 3.4
f.width = 2.4
f.silkwidth = 0.254
f.padheight = 0.9
f.padwidth = 1.5
f.pinswide = 1.5
## rowofpads(self, pos, whichway, startnum, numpads)
f.rowofpads([-f.height / 2 - f.padwidth / 2, 0], "down", 1, 2)
f.rowofpads([f.height / 2 + f.padwidth / 2, 0], "up", 3, 2)
## silk component outlines
# silk_crop(self,w,h,pin1,croplength=0.25,silkwidth=0.155,rotate=0)
# note.  need pinswide & better docs on what it is doing
Ejemplo n.º 6
0
#!/usr/bin/python
import footgen

for n in range(2, 11):
    f = footgen.Footgen('DF3_{}'.format(n))
    f.sip(pitch=2.0, drill=0.85, diameter=1.5, pins=n, draw_silk=False)
    silky = 1.0 + n
    f.box_corners(1.0, silky, -4.0, -silky)
    f.finish()
Ejemplo n.º 7
0
#!/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution

# Implements pcb mount camera sockets from molex 
# standard mobile imaging architecture (SMIA) compliant
# camera sockets 
# these sockets typically come in on-board and through-board designs
# http://www.molex.com/molex/products/family?key=camera_sockets&channel=products&chanName=family&pageTitle=Introduction

import footgen

basename = "Molex-105028-{0}"
# work in progress
f = footgen.Footgen(basename.format("1001"))
f.pins = 32
f.pinshigh = f.pins/4
f.pinswide = f.pinshigh
f.generator.clearance = 0.3048
f.generator.mask_clearance = 0.080
f.pitch = 0.90
f.width = 7.78
f.height = f.width
f.padheight = 0.50
f.padwidth = 9.46-7.78
## 8 rows of pads to create
## rowofpads(self, pos, whichway, startnum, numpads)
## pos is the center position [x,y]
## whichway is up down left or right
## inner ring of pads 
f.sm_pads()
Ejemplo n.º 8
0
import footgen
format = "geda"

# implements board headers for JST PH type crimping wire to board header connects
# following values are from datasheet ePH.pdf available at
# http://www.jst-mfg.com/product/pdf/eng/ePH.pdf

# JST SMT PH Top Entry Headers
PH_basename = "JST-{0}{1}B-PH-SM4-TB"
PH_EntryType = {'Top':'B','Side':'S'}
PH_pins = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 
PH_dimA = [2.0,4.0,6.0,8.0,10.0,12.0,14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0] 
PH_dimB = [7.95,9.95,11.95,13.95,15.95,17.95,19.95,21.95,23.95,25.95,27.95,29.95,31.95,33.95,35.95]
for i in range(len(PH_pins)):
    f = footgen.Footgen(PH_basename.format(PH_EntryType['Top'],PH_pins[i]),output_format=format)
    f.pins = PH_pins[i] 
    f.height = PH_dimA[i]
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 2.00
    f.width = 7.5  
#    f.padheight = 1.0
    f.padwidth = 1.0
    f.padheight = 5.5
#    f.padwidth = 5.5
    mntpadwidth = 3.0  # increase this value for improved mechanical strength
    mntpadheight = 1.6 # change this as well 
    mntpad_x_offset = 1.6
    mntpad_y_offset = 3.25 #1.0
# silk box must be made in segments since the pads extend past the bounds
Ejemplo n.º 9
0
Archivo: bga.py Proyecto: clj/footgen
#!/usr/bin/python
import footgen

# 1 mm BGAs
bga_names = ["F169", "FT256", "FBG484", "FBG676"]
bga_columns = [13, 16, 22, 26]
for i in range(len(bga_names)):
    f = footgen.Footgen(bga_names[i])
    f.bga(rows=bga_columns[i], pitch=1.0, diameter=0.45)
    f.silkbox(w=bga_columns[i] + 1.0, notch=0.75)
    f.finish()

# 1 mm BGA with some balls omitted
f = footgen.Footgen("FF665")
f.bga(rows=26,
      pitch=1.0,
      diameter=0.45,
      omit="A1,B1,G1,H1,N1,P1,W1,Y1,AE1,AF1,J9")
f.silkbox(w=27, notch=0.75)
f.finish()

# 0.8 mm BGAs
bga_names = ["CLG225", "CLG400"]
bga_columns = [15, 20]
bga_sizes = [13, 17]
for i in range(len(bga_names)):
    f = footgen.Footgen(bga_names[i])
    f.bga(rows=bga_columns[i], pitch=0.8, diameter=0.4)
    f.silkbox(w=bga_sizes[i], notch=0.75)
    f.finish()
Ejemplo n.º 10
0
#!/usr/bin/env python2

import footgen

f = footgen.Footgen("EQFP144", output_format="geda")
f.pitch = 0.5
f.pins = 144
f.width = 20
f.padheight = 0.27
f.padwidth = 2.0
f.qfn()
f.silk_crop(20, pin1="circle")
f.add_pad("GND", 0, 0, 5.4, 5.4)
f.finish()

f = footgen.Footgen("PQFP100", output_format="geda")
f.pitch = 0.635
f.pins = 100
f.width = 19.05
f.padheight = 0.40
f.padwidth = 2.0
f.qfn()
f.silk_crop(19.05, pin1="circle")
f.finish()

f = footgen.Footgen("PSOP48", output_format="geda")
f.pins = 48
f.pitch = 0.5
f.width = 6.0
f.padheight = 0.3
f.padwidth = 2
Ejemplo n.º 11
0
#!/usr/bin/python
import footgen

f = footgen.Footgen("RT-01T-1.0B")
f.pitch = 1.08
f.pins = 1
f.generator.clearance = 0.3048
f.generator.mask_clearance = 0.080
f.generator.diameter = 1.1
f.silkbox(1.5, circle=2.0, nosides=True)
f.finish

f = footgen.Footgen("RT-01T-1.3B")
f.pitch = 1.38
f.pins = 1
f.generator.clearance = 0.3048
f.generator.mask_clearance = 0.080
f.generator.diameter = 1.4
f.silkbox(1.5, circle=2.0, nosides=True)
f.generator._add_pin(0, 0, "", "")
f.finish

f = footgen.Footgen("RT-01T-1.08")
f.pitch = 2.54
f.drill = 1.0
f.diameter = 1.6
f.pins = 1
f.width = 2.54
f.dih()
f.finish()
Ejemplo n.º 12
0
# Molex SDA-74099 family of SMT 0.1" pitch pcb headers
# implements SMT vertical (top) entry type only!!! 
# following values are from datasheet "740990604_sd.pdf
# all units mm

molex_74099_basename = "Molex-74099-06{0}"
molex_74099_pins = [3,4,5,6,7,8,9,10,11,12,22] # more pins in the complete sheet 
molex_74099_dimA = [8.13,10.67,13.21,15.75,18.29,20.83,23.37,25.91,28.45,30.99,56.39] 
molex_74099_dimB = [5.08,7.62,10.16,12.70,15.24,17.78,20.32,22.86,25.40,27.94,53.34]
molex_74099_dimC = [0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.18]
contact_finish = {'tin 2.54nm':0, 'gold, 0.38um':20, 'gold, 0.76mm':40}
#tin = [molex_74099_pins]
#38um_gold = [molex_74099_pins+20]
#76um_gold = [molex_74099_pins+40]
for i in range(len(molex_74099_pins)):
    f = footgen.Footgen(molex_74099_basename.format(str(molex_74099_pins[i]).zfill(2))) 
    f.pins = molex_74099_pins[i] 
    f.height = molex_74099_dimA[i]
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 2.54
    f.width = 6.60
    rowlen = molex_74099_dimB[i]
    inner_width = 5.08
    notch_width = 1.52
    f.padheight = 1.27
    f.padwidth = 3.18 
    f.silk_line(f.height/2,inner_width/2,rowlen/2,inner_width/2)
    f.silk_line(-f.height/2,inner_width/2,-f.height/2+0.5,inner_width/2)
    f.silk_line(f.height/2,inner_width/2,f.height/2,-inner_width/2)
    f.silk_line(f.height/2,-inner_width/2,f.height/2-0.5,-inner_width/2 )
Ejemplo n.º 13
0
#!/usr/bin/python
import footgen
mm = 1

for n in range(2,10):
    f = footgen.Footgen('DF13_SM_{}'.format(n))
    x0 = 1.25*mm * 0.5 * (n-1)
    for i in range(n):
        f.add_pad(name = i+1,
                  x = x0 + i*-1.25*mm,
                  y = 2.4-0.9,
                  xsize = 0.7*mm,
                  ysize = 1.8*mm,
                  shape = 'rect')

    for i in [-1,1]:
        f.add_pad(name = 'GND',
                  x = 0.5*(3.45 + n*1.25)*i,
                  y = -2.4 + 1.1,
                  xsize = 1.6*mm,
                  ysize = 2.2*mm,
                  shape = 'rect')
    x = 0.5*(3.15*mm + 1.25*mm*n)
    y = -3
    f.silk_line(-x, y, x, y, width = 0.15*mm)
    f.finish()

for n in [10]:
    f = footgen.Footgen('DF13_DR_SM_{}'.format(n))
    f.generator.mirror = 'x'
    f.soh(pitch = 1.25, width = 4.3, padwidth = 1.7, padheight = 0.7, pins = 10)
Ejemplo n.º 14
0
# R. Miloh Alexander
# Use: unrestricted with attribution

import footgen

# implements SMT side entry type only!!! through hole components still needed to be added
# following values are from datasheet
#
XH_basename = "JST-XHP-"
XH_pins = [1,2,2,3,4,5,6,6,7,8,9,10,11,12,13,14,15,16,20] 
XH_special = ["","","(10.0)-U","","","","","(5.0)-U","","","","","","","","","","",""] 
XH_dimA = [None,2.5,10.0,5.0,7.5,10.0,12.5,25.0,15.0,17.5,20.0,22.5,25.0,27.5,30.0,32.5,35.0,37.5,47.5] 
XH_dimB = [3.2,5.7,13.2,8.2,10.7,13.2,15.7,28.2,18.2,20.7,23.2,25.7,28.2,30.7,33.2,35.7,38.2,40.7,50.7]
XH_dimC = [4.8,7.3,14.8,9.8,12.3,14.8,17.3,29.8,19.8,22.3,24.8,27.3,29.8,32.3,34.8,37.3,39.8,42.3,52.3]
for i in range(len(XH_pins)):
    f = footgen.Footgen(XH_basename + str(XH_pins[i]) + XH_special[i])
    f.pins = XH_pins[i] 
    f.height = XH_dimC[i]
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 2.50
    f.width = 13.0
    f.padheight = 1.30
    f.padwidth = 11-6.5  
    f.box_corners( (f.pitch*f.pins-1)/2+2.3+1.8+1 , (f.width+2)/2 , -(f.pitch*f.pins-1)/2-2.3-1.8-1 , (-(f.width+2)/2))
    # should create a function for creating a pin1 diamond
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+1)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch+f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+1)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch-f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+3)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch+f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+3)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch-f.padheight/2 , -(f.width+2)/2)
    #signal pads
Ejemplo n.º 15
0
#!/usr/bin/env python2

import footgen

f = footgen.Footgen("SSOP56", output_format="geda")
f.pins = 56
f.pitch = 0.635
f.width = 7.4
f.padheight = 0.4
f.padwidth = 2
f.so()
f.silk_crop(11, 20, pin1="circle")
f.finish()
Ejemplo n.º 16
0
#!/usr/bin/env python2

import footgen

f = footgen.Footgen("CON351779862g", output_format="geda")
f.pins = 60
f.pitch = 0.8
f.width = 2.4
f.padheight = 0.5
f.padwidth = 2
f.so()
f.finish()
Ejemplo n.º 17
0
# This product line connects with MicroFit receptacle series 43645
# Note XX0[6-8] are obsolete and discontinued by Molex, all parts used 'snap-in platic pegs

import footgen

# following values are from datasheet
MMF_basename = "Molex-43650-{0}{1}"
MMF_pins = range(2,13)
MMF_style = {'pth, horizontal, snap-in plastic peg PCB lock':[0,1,2,37],'pth, horizontal, PCB press-fit metal retention clip':[3,4,5,59],'smt, horizontal, PCB press-fit metal rentention clip':[9,10,11],'smt, horizontal, solder tab':[12,13,14],'pth, vertical, pcb polarizing peg':[15,16,17],'pth, vertical, PCB press-fit metal retention clip':[18,19,20],'smt, vertical, PCB press-fit metal retention clips':[21,22,23],'smt, vertical, solder tab':[24,25,26]}
MMF_finish = {'tin 2.54nm':0, 'gold, 0.38um':1, 'gold, 0.76mm':2}
# Dimensions will change for the following part groups -- 
MMF_dimA = [9.65,12.65,15.65,18.64,21.64,24.64,27.64,30.63,33.66,36.65,39.65] 
MMF_dimB = [ 3.00,6.00,9.00,12.00,15.00,18.00,21.00,24.00,27.00,30.00,33.00]
MMF_dimC = [None,None,4.70,7.70,10.70,13.70,16.70,19.70,22.70,25.70,28.70]
for i in range(len(MMF_pins)):
    f = footgen.Footgen(MMF_basename.format(str(MMF_pins[i]).zfill(2),str(MMF_style['pth, horizontal, snap-in plastic peg PCB lock'][MMF_finish['tin 2.54nm']]).zfill(2)))
    f.pins = MMF_pins[i] 
    f.generator.diameter = 2.14
    f.generator.drill = 1.02
    f.generator.options_list = ["circle"]
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 3.00
    f.width = 4.32
    f.height = MMF_dimA[i]
    f.padheight = 1.27
    f.padwidth = 2.54
    #f.box_corners(MMF_dimA[i]/2,-f.width-f.generator.drill,-MMF_dimA[i]/2,4.6)
    f.silk_line(-f.height/2,-f.width,-f.height/2+2.41/2,-f.width)
    f.silk_line(-f.height/2,-f.width+f.generator.drill,-f.height/2,-f.width)
    f.silk_line(f.height/2,-f.width,f.height/2-2.41/2,-f.width)
Ejemplo n.º 18
0
#!/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution

import footgen

# Implement footprint for BI technologies/TT Electronics 84PRxx 1/4" multiturn smd cermet trim pot

trimpot_basename = "84{0}"
trimpot_types = {'Top': 'W', 'Side': 'X', 'SideShort': 'P'}
f = footgen.Footgen(trimpot_basename.format(trimpot_types['Top']))
#f = footgen.Footgen(trimpot_basename.format(trimpot_types['Side']))
f.silkwidth = 0.254  # mm
f.pins = 3
f.width = 6.35  # mm
f.height = 7.49  # mm
f.padwidth = 1.02  # mm
f.padheight = 2.8  # mm
#f.box_corners( f.width/2 , f.height/2, -f.width/2, -f.width/2 )
# silk box must be made in segments since the pads extend past the bounds
# left bracket
f.silk_line(-(f.width + 0.5) / 2, -f.height / 2, -(f.width) / 4, -f.height / 2)
f.silk_line(-(f.width + 0.5) / 2, f.height / 2, -(f.width + 0.5) / 2,
            -f.height / 2)
f.silk_line(-(f.width + 0.5) / 2, f.height / 2, -(f.width) / 2, f.height / 2)
# right bracket
f.silk_line((f.width) / 4, -f.height / 2, (f.width + 0.5) / 2, -f.height / 2)
f.silk_line((f.width + 0.5) / 2, f.height / 2, (f.width + 0.5) / 2,
            -f.height / 2)
f.silk_line((f.width) / 2, f.height / 2, (f.width + 0.5) / 2, f.height / 2)
f.add_pad("1", -2.54, (f.height - f.padheight) / 2, f.padwidth, f.padheight)
Ejemplo n.º 19
0
import footgen

FI_RE_basename ="JAE-FI-R-E-{0}S-{1}"
FI_RE_EntryTypes = {'Top':'VF','Side':"HF"} #HF Horizontal (side entry) and VF Vertical 
FI_RE_contacts = [21, 31, 41, 51] #
FI_RE_VF_dimA = [16, 21, 26, 31]
FI_RE_VF_dimB = [10, 15, 20, 25]
FI_RE_VF_dimC = [20.35, 25.35, 30.35, 35.35]
FI_RE_VF_dimD = [3, 4, 4, 5]
FI_RE_VF_dimE = [None, None,  4, 5]
FI_RE_VF_dimF = [20.95, 25.95, 30.95, 35.95]
FI_RE_VF_dimG = [19.75, 24.75, 29.75, 34.75]
FI_RE_VF_dimH = [21.85, 26.85, 31.85, 36.85]
for i in range(len(FI_RE_contacts)):
    f = footgen.Footgen(FI_RE_basename.format(FI_RE_contacts[i],FI_RE_EntryTypes['Top']))
    f.generator.clearance = 0.204
    f.generator.mask_clearance = 0.080
    f.pins = FI_RE_contacts[i] 
    f.pitch = 0.5 
    f.height = FI_RE_VF_dimF[i]
    f.width = 5.1 
    f.silkwidth = 0.254 
    f.padheight = 0.25
    f.padwidth = 1.55 
    f.rowofpads([0,0],"right",1,f.pins) #all contacts
#   silk component outlines
# horizontal line segments constructing corners near contacts
    f.silk_line(-FI_RE_VF_dimF[i]/2, f.padwidth/4, -FI_RE_VF_dimG[i]/2, f.padwidth/4)
    f.silk_line(FI_RE_VF_dimF[i]/2, f.padwidth/4,  FI_RE_VF_dimG[i]/2, f.padwidth/4)
# vertical line segments constructing corners near contacts
Ejemplo n.º 20
0
#!/usr/bin/python
import footgen

f = footgen.Footgen("QFN16-TPS61090RSAR", output_format="geda")
f.sm_pads(
    pitch=0.65,
    width=3.1,
    height=3.1,
    padheight=0.30,
    padwidth=0.800,
    pinswide=4,
    pinshigh=4,
    silk_xsize=4.0,
    silk_ysize=4.0,
)
f.finish()
Ejemplo n.º 21
0
# Molex SDA-70634 family of SMT 0.1" pitch pcb headers
# implements SMT side entry type only!!! through hole components still needed to be added
# following values are from datasheet "015912045_sd.pdf
# all units mm

molex_70634_basename = "Molex-70634-02"
molex_70634_pins = [2,3,4] # more pins in the complete sheet 
molex_70634_dimA = [2.54,5.08,7.62] 
molex_70634_dimB = [5.33,8.13,10.67]
molex_70634_dimC = [8.64,11.43,13.97]
molex_70634_dimD = [5.33,7.87,10.41] 
molex_70634_dimE = [0.13,0.13,0.13]
molex_70634_dimF = [2.79,3.05,3.95]
molex_70634_dimG = [4.32,4.57,4.57]
for i in range(len(molex_70634_pins)):
    f = footgen.Footgen(molex_70634_basename + str(molex_70634_pins[i]).zfill(2) ) 
    f.pins = molex_70634_pins[i] 
    outer_Xedge = molex_70634_dimC[i]
    f.height = molex_70634_dimD[i]
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 2.54
    f.width = 13.59 + 3.18
    f.padheight = 1.65
    f.padwidth = 5.33 
    f.silk_line( -outer_Xedge/2,-13.59-f.padheight/2,-outer_Xedge/2,0)
    f.silk_line( +outer_Xedge/2,-13.59-f.padheight/2,+outer_Xedge/2,0)
    f.silk_line( -outer_Xedge/2,-13.59-f.padheight/2,+outer_Xedge/2,-13.59-f.padheight/2)
    #f.box_corners(-f.height/2, 10.69/2,+f.height/2,
    #f.box_corners( (f.pitch*f.pins-1)/2+2.3+1.8+1 , (f.width+2)/2 , -(f.pitch*f.pins-1)/2-2.3-1.8-1 , (-(f.width+2)/2))
    # should create a function for creating a pin1 diamond
Ejemplo n.º 22
0
#/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution

import footgen

f = footgen.Footgen("xuntong-ptr9018")
f.generator.clearance = 0.3048
f.generator.mask_clearance = 0.080
f.pins = 30
f.pitch = 1.27 # mm
f.width = 23
f.padheight = 0.8128 # mm
f.padwidth = 2.2 # mm
#f.height = 2.16
height = 17.4244
width = 22.6568
sidepads = 6
offset_width = 4.064
offset_height = 5.5118
f.rowofpads([(offset_width+(15-1)*f.pitch)/2, height-f.padwidth/3],"left",22,15)
f.rowofpads([width-f.padwidth,height/2],"down",16,sidepads)
f.rowofpads([(offset_width+(15-1)*f.pitch)/2,f.padwidth/3],"right",1,15)
f.finish()

Ejemplo n.º 23
0
#!/usr/bin/python
import footgen

f = footgen.Footgen("QFN16-MMA8452Q")
f.mirror = True
f.pitch = 0.5
f.pins = 16
f.width = 3.0
f.height = 3.0
f.padheight = 0.30
f.padwidth = 0.600  #nudged up from MMA8452Q datasheet
f.pinswide = 3.0
f.silk_crop(3.3, pin1="diamond", rotate='-90')
f.rowofpads([-f.height / 2 + f.padwidth / 2, 0], "up", 1, 5)
f.rowofpads([0, -f.width / 2 + f.padwidth / 2], "right", 6, 3)
f.rowofpads([f.width / 2 - f.padwidth / 2, 0], "down", 9, 5)
f.rowofpads([0, f.width / 2 - f.padwidth / 2], "left", 14, 3)
f.finish()
Ejemplo n.º 24
0
import footgen

#Minitek unshrouded HDR
# unshrouded smt headers on a 0.05" pitch
#dimensions from datasheet
#http://portal.fciconnect.com/Comergent//fci/drawing/20021121.pdf
basename = "20021121-X0X0{0}XXLF"
# import numpy for full ranges
# dimN = arange ( 0,65,1.27)
# and use a dict {} with the pos as the key for the dimensions
DIMX = [3.81, 5.08, 6.35]
DIMY = [2.54, 3.81, 5.08]
DIMZ = [1.27, 2.54, 3.81]
pos = range(6, 12, 2)
for i in range(len(pos)):
    f = footgen.Footgen(basename.format(str(pos[i]).zfill(2)))
    if pos == 100:
        f = footgen.Footgen(basename.format(str(A0)))
    f.generator.clearance = 0.33
    f.generator.mask_clearance = 0.080
    f.pins = pos[i]
    f.pitch = 1.27
    f.padheight = 0.76  # mm
    f.padwidth = 2.40  # mm
    f.width = 6.30 - 2 * f.padwidth
    f.soh()
    f.finish()
Ejemplo n.º 25
0
#!/usr/bin/python
import footgen

f = footgen.Footgen("BMI-S-230-F")
for y in [18.95, -18.95]:
    for i in range(-3, 4):
        f.add_pad(name="1", x=6.0 * i, y=y, xsize=3.8, ysize=1.0)
        f.add_pad(name="1", x=6.0 * i, y=y, xsize=1.0, ysize=1.0, drill=0.5)
    for i in [-1, 1]:
        f.add_pad(name="1", x=i * (6.0 * 4 - 0.05), y=y, xsize=3.7, ysize=1.0)
        f.add_pad(name="1",
                  x=i * (6.0 * 4 - 0.05),
                  y=y,
                  xsize=1.0,
                  ysize=1.0,
                  drill=0.5)
    for i in range(8):
        f.add_pad(name="1",
                  x=-21.0 + i * 6.0,
                  y=y,
                  xsize=1.5,
                  ysize=1.5,
                  drill=1.0)

for x in [25.3, -25.3]:
    for i in range(-2, 3):
        f.add_pad(name="1", x=x, y=6.0 * i, xsize=1.0, ysize=3.8)
        f.add_pad(name="1", x=x, y=6.0 * i, xsize=1.0, ysize=1.0, drill=0.5)
    for i in [-1, 1]:
        f.add_pad(name="1",
                  x=x,
Ejemplo n.º 26
0
#!/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution

import footgen

# package index:
# d2pak (TO-263)
# dpak (TO-252)
# i2pak (TO-262)
# ipak (TO-251)
#
# Implements footprints for IRF5305S from infineon
# datasheet source irf5305spbf.pdf
#
f = footgen.Footgen("irf5305s")
f.silkwidth = 0.254 
f.pins = 3
f.width = 11.43 # mm
f.height = 17.78 #mm 
f.epadwidth = f.width # mm
f.epadheight = 8.89 # mm
f.padwidth = 2.08  # mm
f.padheight = 3.81 # mm
f.add_pad( str(1), (-f.width + f.padwidth)/2, f.height-(f.padheight)/2, f.padwidth, f.padheight)
f.add_pad( str(2), 0.0, f.epadheight/2,                    f.epadwidth, f.epadheight)
f.add_pad( str(3), (f.width - f.padwidth)/2, f.height-(f.padheight)/2, f.padwidth, f.padheight)

f.finish()

Ejemplo n.º 27
0
# R. Miloh Alexander
# Use: unrestricted with attribution

### need to fix this to implement PTH as well as SMT
import footgen

# implements XA side entry type only!!! through hole components still needed to be added
# following values are from datasheet
#
XA_basename = "S{:02d}B-XASK-1"
XA_circuits = [2,3,4,5,6,7,8,9,10,11,12,13,14] 
XA_dimA = [2.5,5.0,7.5,10.0,12.5,15.0,17.5,20.0,22.5,25.0,27.5,30.0,32.5] 
XA_dimB = [7.5,10.0,12.5,15.0,17.5,20.0,22.5,25.0,27.5,30.0,32.5,35.0,37.5]
XA_dimD = [1.25,2.50,3.75,5.00,6.25,7.50,8.75,10.00,11.25,12.50,13.75,15.00,16.25]
for i in range(len(XA_circuits)):
    f = footgen.Footgen(XA_basename.format(XA_circuits[i]))
    f.pins = XA_circuits[i]
    f.height = 12.6
    f.generator.clearance = 0.3048
    f.generator.mask_clearance = 0.080
    f.pitch = 2.50
    f.width = XA_dimA[i] 
    f.box_corners( (f.pitch*f.pins-1)/2+2.3+1.8+1 , (f.width+2)/2 , -(f.pitch*f.pins-1)/2-2.3-1.8-1 , (-(f.width+2)/2))
    # should create a function for creating a pin1 diamond
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+1)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch+f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+1)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch-f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+3)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch+f.padheight/2 , -(f.width+2)/2)
    f.silk_line( -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch , -((f.width+3)/2) , -(f.pitch*(f.pins-1))/2+(f.pins-1)*f.pitch-f.padheight/2 , -(f.width+2)/2)
    #signal pads
  f.via_array(f.pins,1,f.pitch,[ -0 , -f.width/2+f.padwidth/2],"left",1,f.pins)
via_array(self, columns=None, rows=None, pitch=None, size=0.3302, pad=0.7,
Ejemplo n.º 28
0
#!/usr/bin/python
# R. Miloh Alexander
# Use: unrestricted with attribution


import footgen

#
# Implements footprints for PTS645 from C&K
# datasheet source PTS645_7jan16-523842.pdf 
#
f = footgen.Footgen("PTS645-SMTR")
f.silkwidth = 0.254 
f.pins = 4
f.width =  9.5 # mm
f.height = 5.8 # mm
f.padwidth = (f.width - 6.4)/2 # mm
f.padheight = (f.height - 3.2)/2 # mm
f.add_pad( str(1),  (f.width-f.padwidth)/2,  (f.height-f.padheight)/2, f.padwidth, f.padheight) 
f.add_pad( str(2),  (f.width-f.padwidth)/2, -(f.height-f.padheight)/2, f.padwidth, f.padheight) 
f.add_pad( str(3), -(f.width-f.padwidth)/2, -(f.height-f.padheight)/2, f.padwidth, f.padheight) 
f.add_pad( str(4), -(f.width-f.padwidth)/2,  (f.height-f.padheight)/2, f.padwidth, f.padheight) 

f.finish()
# Implement footprint for  SKQG from ALPS

f = footgen.Footgen("SKQG-SMT")
f.silkwidth = 0.254 
f.pins = 4
f.width =  8 # mm
f.height = 4.8 # mm