From 1e33378b53d1d1c8c3d3cfbdfd9d241fb105ba5d Mon Sep 17 00:00:00 2001 From: Neil Gershenfeld <gersh@cba.mit.edu> Date: Thu, 22 Jul 2021 17:06:19 -0400 Subject: [PATCH] wip --- python/pcb.py | 212 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 211 insertions(+), 1 deletion(-) diff --git a/python/pcb.py b/python/pcb.py index 94e1092..1f596a9 100755 --- a/python/pcb.py +++ b/python/pcb.py @@ -6,7 +6,7 @@ # usage: # pcb.py | frep.py [dpi [filename]] # -# Neil Gershenfeld 1/5/21 +# Neil Gershenfeld 7/22/21 # # This work may be reproduced, modified, distributed, # performed, and displayed for any purpose, but must @@ -1112,6 +1112,41 @@ class SJ(part): # discretes ############################################################ + +class ST4EB(part): + # + # Nidec Copal ST4ETB103 trimpot + # + def __init__(self,value=''): + pad1 = cube(-.032,.032,-.039,.039,0,0) + pad2 = cube(-.039,.039,-.039,.039,0,0) + self.value = value + self.labels = [] + self.pad = [point(0,0,0)] + self.shape = translate(pad1,-.046,-.118,0) + self.pad.append(point(-.046,-.118,0)) + self.shape = add(self.shape,translate(pad1,.046,-.118,0)) + self.pad.append(point(.046,-.118,0)) + self.shape = add(self.shape,translate(pad2,0,.118,0)) + self.pad.append(point(0,.118,0)) + +class C_FND(part): + # + # Panasonic FN series, size code D + # 100uF: EEE-FN1E101UL + # + def __init__(self,value=''): + pad = cube(-.032,.032,-.06,.06,0,0) + self.value = value + self.labels = [] + self.pad = [point(0,0,0)] + self.shape = translate(pad,0,.11,0) + self.pad.append(point(0,.11,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'+',angle=90)) + self.shape = add(self.shape,translate(pad,0,-.11,0)) + self.pad.append(point(0,-.11,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'-',angle=90)) + pad_0402 = cube(-.0175,.0175,-.014,.014,0,0) class R_0402(part): @@ -1189,6 +1224,62 @@ class choke(part): # connectors ############################################################ +class header_2H(part): + # + # 2x1x0.1 cable header + # Sullins GEC36SBSN-M89 + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + # + # pin 1 + # + self.shape = translate(pad_header,0,.05,0) + self.pad.append(point(0,.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1')) + # + # pin 2 + # + self.shape = add(self.shape,translate(pad_header,0,-.05,0)) + self.pad.append(point(0,-.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'2')) + +class header_4H(part): + # + # 4x1x0.1 cable header + # Sullins GEC36SBSN-M89 + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + # + # pin 1 + # + self.shape = translate(pad_header,0,.15,0) + self.pad.append(point(0,.15,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'1')) + # + # pin 2 + # + self.shape = add(self.shape,translate(pad_header,0,.05,0)) + self.pad.append(point(0,.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'2')) + # + # pin 3 + # + self.shape = add(self.shape,translate(pad_header,0,-.05,0)) + self.pad.append(point(0,-.05,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'3')) + # + # pin 4 + # + self.shape = add(self.shape,translate(pad_header,0,-0.15,0)) + self.pad.append(point(0,-.15,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'4')) + class header_NEO_6M(part): # # NEO_6M GPS module @@ -4526,6 +4617,125 @@ class XTAL_CSM_7(part): # diodes, transistors, regulators, sensors ############################################################ +class DRV8428_HTSSOP(part): + # + # TI DRV8428PWPR stepper driver + # HTSSOP package + # + def __init__(self,value=''): + self.value = value + self.pad = [point(0,0,0)] + self.labels = [] + d = 0.12 + w = 0.029 + h = 0.0053 + p = 0.02559 + pad = cube(-w,w,-h,h,0,0) + s = 0.003 + # + # pin 1 + # + self.shape = translate(pad,-d,3.5*p,0) + self.shape = add(self.shape,cylinder(-d-w,3.5*p,0,0,h)) + self.pad.append(point(-d,3.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'.VM',line=s)) + # + # pin 2 + # + self.shape = add(self.shape,translate(pad,-d,2.5*p,0)) + self.pad.append(point(-d,2.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'PGND',line=s)) + # + # pin 3 + # + self.shape = add(self.shape,translate(pad,-d,1.5*p,0)) + self.pad.append(point(-d,1.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'AOUT1',line=s)) + # + # pin 4 + # + self.shape = add(self.shape,translate(pad,-d,.5*p,0)) + self.pad.append(point(-d,.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'AOUT2',line=s)) + # + # pin 5 + # + self.shape = add(self.shape,translate(pad,-d,-.5*p,0)) + self.pad.append(point(-d,-.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'BOUT2',line=s)) + # + # pin 6 + # + self.shape = add(self.shape,translate(pad,-d,-1.5*p,0)) + self.pad.append(point(-d,-1.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'BOUT1',line=s)) + # + # pin 7 + # + self.shape = add(self.shape,translate(pad,-d,-2.5*p,0)) + self.pad.append(point(-d,-2.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s)) + # + # pin 8 + # + self.shape = add(self.shape,translate(pad,-d,-3.5*p,0)) + self.pad.append(point(-d,-3.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DVDD',line=s)) + # + # pin 9 + # + self.shape = add(self.shape,translate(pad,d,-3.5*p,0)) + self.pad.append(point(d,-3.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'VREF',line=s)) + # + # pin 10 + # + self.shape = add(self.shape,translate(pad,d,-2.5*p,0)) + self.pad.append(point(d,-2.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'M0',line=s)) + # + # pin 11 + # + self.shape = add(self.shape,translate(pad,d,-1.5*p,0)) + self.pad.append(point(d,-1.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DECAY',line=s)) + # + # pin 12 + # + self.shape = add(self.shape,translate(pad,d,-.5*p,0)) + self.pad.append(point(d,-.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'M1',line=s)) + # + # pin 13 + # + self.shape = add(self.shape,translate(pad,d,.5*p,0)) + self.pad.append(point(d,.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'STEP',line=s)) + # + # pin 14 + # + self.shape = add(self.shape,translate(pad,d,1.5*p,0)) + self.pad.append(point(d,1.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'DIR',line=s)) + # + # pin 15 + # + self.shape = add(self.shape,translate(pad,d,2.5*p,0)) + self.pad.append(point(d,2.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'EN',line=s)) + # + # pin 16 + # + self.shape = add(self.shape,translate(pad,d,3.5*p,0)) + self.pad.append(point(d,3.5*p,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'SLEEP',line=s)) + # + # pin 17 + # + self.shape = add(self.shape,translate(cube(-.06,.06,-.09,.09,0,0),0,0,0)) + self.pad.append(point(0,0,0)) + self.labels.append(self.text(self.pad[-1].x,self.pad[-1].y,self.pad[-1].z,'GND',line=s)) + class LED_3014_1100(part): # # Luminus MP-3014-1100-50-80 -- GitLab