Esempio n. 1
0
 def pads(self, mod):
     """add the pads"""
     pad_size = kicad.mil2mm(68)
     hole_size = kicad.mil2mm(40)
     for i in range(18):
         pad_shape = ('circle', 'rect')[i == 0]
         p = kicad.mod_pad('%d' % (i + 1), 'thru_hole', pad_shape,
                           ('*.Cu', '*.Mask'))
         p.set_size(pad_size, pad_size).set_drill(hole_size)
         p.set_xy(self.pad_xy(i))
         mod.add_pad(p)
Esempio n. 2
0
 def pad_xy(self, i):
     """return the x, y position of pad i (i is zero based)"""
     if i < 14:
         group = 0
         idx = i
     else:
         group = 1
         idx = i - 14
     pin_spacing = kicad.mil2mm(100)
     x = group * kicad.mil2mm(500)
     y = group * kicad.mil2mm(-3175)
     x += idx * pin_spacing
     return (x, y)
Esempio n. 3
0
 def add_pads(self, mod):
     """add the pads"""
     pad_size = kicad.mil2mm(68)
     hole_size = kicad.mil2mm(40)
     for row in range(2):
         for n in range(50):
             pad_shape = ('circle', 'rect')[row == 0 and n == 0]
             pad_name = '%s%d' % (('A', 'B')[row == 1], n + 1)
             p = kicad.mod_pad(pad_name, 'thru_hole', pad_shape,
                               ('*.Cu', '*.Mask'))
             p.set_size(pad_size, pad_size).set_drill(hole_size)
             p.set_xy(self.pad_xy(row, n))
             mod.add_pad(p)
Esempio n. 4
0
 def holes(self, mod):
     """add mounting holes"""
     hole_size = kicad.mil2mm(120)
     pad_size = kicad.mil2mm(150)
     w = 44.0
     h = 76.0
     x0 = (kicad.mil2mm(1300) - w) / 2.0
     y0 = -4.0
     tl = (x0, y0 - h)
     tr = (x0 + w, y0 - h)
     bl = (x0, y0)
     br = (x0 + w, y0)
     for v in (tl, tr, bl, br):
         p = kicad.mod_pad('', 'thru_hole', 'circle', ('*.Cu', '*.Mask'))
         p.set_size(pad_size, pad_size).set_drill(hole_size)
         p.set_xy(v)
         mod.add_pad(p)
Esempio n. 5
0
 def __init__(self, n, width):
     self.name = 'DIP%d_%d' % (n, kicad.mm2mil(width))
     self.descr = '%d pin DIP package, row spacing %d mils' % (
         n, kicad.mm2mil(width))
     self.n = n  # number of pins
     self.pitch = kicad.mil2mm(100)
     self.w = float(width)  # width between pin rows (mm)
     self.h = ((self.n / 2) - 1) * self.pitch
Esempio n. 6
0
 def silk(self, mod):
     """add a silk layer"""
     d = kicad.mil2mm(110)
     w = self.w + d
     h = self.h + d
     self.centered_rect(mod, w, h, 'F.SilkS', 0.12)
     w = self.w - d
     self.centered_rect(mod, w, h, 'F.SilkS', 0.12, render=('L', 'R'))
     mod.add_arc(self.w / 2.0, -d / 2.0, self.pitch / 2.0, 'F.SilkS', 0.12)
Esempio n. 7
0
 def fab(self, mod):
     """add a fab layer"""
     d = kicad.mil2mm(100)
     w = self.w + d
     h = self.h + d
     self.centered_rect(mod, w, h, 'F.Fab', 0.1)
     w = self.w - d
     self.centered_rect(mod, w, h, 'F.Fab', 0.1, render=('L', 'R'))
     # add the notch
     x = (self.w - w) / 2.0
     y = (self.h - h) / 2.0
     w = self.pitch / 2.0
     h = w
     mod.add_rect(x, y, w, h, 'F.Fab', 0.1, render=('d0', ))
Esempio n. 8
0
 def add_silk(self, mod):
     """add a silk layer"""
     # add connector outlines
     cw = kicad.mil2mm(200)
     ch = kicad.mil2mm(25 * 100)
     for cx, cy in (self.pad_xy(0, 0), self.pad_xy(1, 0)):
         cx -= kicad.mil2mm(50)
         cy -= kicad.mil2mm(50)
         mod.add_rect(cx, cy, cw, ch, 'F.SilkS', 0.12)
     # silk reference
     t = kicad.mod_text('REF**', 'reference', 'F.SilkS')
     t.set_xy((kicad.mil2mm(25), kicad.mil2mm(-100)))
     mod.add_shape(t)
     # silk pin 1
     t = kicad.mod_text('A1', 'user', 'F.SilkS')
     t.set_xy((kicad.mil2mm(-100), 0))
     mod.add_shape(t)
Esempio n. 9
0
 def fab(self, mod):
     """add a fab layer"""
     # fab name at top left
     t = kicad.mod_text(name, 'value', 'F.Fab')
     t.set_xy((kicad.mil2mm(0), kicad.mil2mm(-3250)))
     mod.add_shape(t)
     # fab reference at top left
     t = kicad.mod_text('%R', 'user', 'F.Fab')
     t.set_xy((kicad.mil2mm(0), kicad.mil2mm(-3150)))
     mod.add_shape(t)
     # board outline
     x = (kicad.mil2mm(1300) - self.w) / 2.0
     y = kicad.mil2mm(50) - self.h
     mod.add_rect(x, y, self.w, self.h, 'F.Fab', 0.1)
Esempio n. 10
0
 def silk(self, mod):
     """add a silk layer"""
     # silk reference
     t = kicad.mod_text('REF**', 'reference', 'F.SilkS')
     t.set_xy((0, kicad.mil2mm(-100)))
     mod.add_shape(t)
     # silk pin 1
     t = kicad.mod_text('1', 'user', 'F.SilkS')
     t.set_xy((kicad.mil2mm(-100), 0))
     mod.add_shape(t)
     # add the connector outlines
     ch = kicad.mil2mm(100)
     dx = kicad.mil2mm(50)
     dy = kicad.mil2mm(50)
     # large connector
     (cx, cy) = self.pad_xy(0)
     cx -= dx
     cy -= dy
     mod.add_rect(cx, cy, kicad.mil2mm(14 * 100), ch, 'F.SilkS', 0.12)
     # small connector
     (cx, cy) = self.pad_xy(14)
     cx -= dx
     cy -= dy
     mod.add_rect(cx, cy, kicad.mil2mm(4 * 100), ch, 'F.SilkS', 0.12)
Esempio n. 11
0
 def courtyard(self, mod):
     """add a courtyard"""
     x = (kicad.mil2mm(1300) - self.w) / 2.0
     y = kicad.mil2mm(50) - self.h
     mod.add_rect(x, y, self.w, self.h, 'F.CrtYd', 0.05)
Esempio n. 12
0
        mod.add_shape(t)
        # add text: fab reference (center)
        t = kicad.mod_text('%R', 'user', 'F.Fab')
        t.set_xy((self.w / 2.0, self.h / 2.0))
        mod.add_shape(t)
        # add the pads
        pad_size = 1.6
        hole_size = 0.8
        for i in range(self.n):
            pad_shape = ('oval', 'rect')[i == 0]
            p = kicad.mod_pad('%d' % (i + 1), 'thru_hole', pad_shape,
                              ('*.Cu', '*.Mask'))
            p.set_size(pad_size, pad_size).set_drill(hole_size)
            p.set_xy(self.pad_xy(i))
            mod.add_pad(p)

        self.courtyard(mod)
        self.fab(mod)
        self.silk(mod)
        return str(mod)


#-----------------------------------------------------------------------------

footprint.db.add(dip(8, kicad.mil2mm(300)))
footprint.db.add(dip(28, kicad.mil2mm(300)))
footprint.db.add(dip(14, kicad.mil2mm(300)))
footprint.db.add(dip(40, kicad.mil2mm(600)))

#-----------------------------------------------------------------------------
Esempio n. 13
0
 def add_courtyard(self, mod):
     """add a courtyard"""
     x = (kicad.mil2mm(2100) - self.w) / 2.0
     y = kicad.mil2mm(-1350)
     mod.add_rect(x, y, self.w, self.h, 'F.CrtYd', 0.05)
Esempio n. 14
0
 def pad_xy(self, row, n):
     pin_spacing = kicad.mil2mm(100)
     row_spacing = kicad.mil2mm(2000)
     x = row * row_spacing + (n & 1) * pin_spacing
     y = (n >> 1) * pin_spacing
     return (x, y)