wip
authorDan White <dan@whiteaudio.com>
Sun, 5 Feb 2012 00:05:29 +0000 (18:05 -0600)
committerDan White <dan@whiteaudio.com>
Sun, 5 Feb 2012 00:05:29 +0000 (18:05 -0600)
data/MCP654x.pdf [new file with mode: 0644]
sch-pcb/devboard/atoi-3.sch
sch-pcb/devboard/comparator.py [new file with mode: 0644]

diff --git a/data/MCP654x.pdf b/data/MCP654x.pdf
new file mode 100644 (file)
index 0000000..9bdba1a
Binary files /dev/null and b/data/MCP654x.pdf differ
index 62d794ef9897567a23c24cbad36fb758123679bc..9eec38aa9157edf73beb78335c442e53a1ad6728 100644 (file)
@@ -10,26 +10,26 @@ auth=DJW
 T 49900 40900 5 8 1 1 0 0 1
 fname=$Id: $
 T 49900 41300 5 14 1 1 0 0 1
-title=AtoI - Bare OTA
+title=AtoI - Bare OTA, HFXT fixup
 T 50600 40300 5 10 1 1 0 6 1
 pagenum=3
 T 52100 40300 5 10 1 1 0 6 1
 pageof=??
 }
 C 40400 49700 1 0 0 flag.sym
-N 43000 49800 40500 49800 4
+N 43000 49800 40300 49800 4
 {
-T 41100 49800 5 10 1 1 0 0 1
+T 40600 49800 5 10 1 1 0 0 1
 netname=INA
 }
-N 43000 49400 40500 49400 4
+N 43000 49400 40300 49400 4
 {
-T 41100 49400 5 10 1 1 0 0 1
+T 40600 49400 5 10 1 1 0 0 1
 netname=INB
 }
-N 43000 49000 40500 49000 4
+N 43000 49000 40300 49000 4
 {
-T 41100 49000 5 10 1 1 0 0 1
+T 40600 49000 5 10 1 1 0 0 1
 netname=CMI
 }
 C 40400 49300 1 0 0 flag.sym
@@ -228,3 +228,254 @@ value=NoConnection
 T 50200 52800 5 10 0 0 0 0 1
 device=DRC_Directive
 }
+C 52600 44100 1 0 0 74AHC1G125-1.sym
+{
+T 53200 45000 5 10 0 0 0 0 1
+device=74125
+T 53200 44800 5 10 1 1 0 0 1
+refdes=U303
+T 53200 45600 5 10 0 0 0 0 1
+footprint=SC74
+T 53200 45200 5 10 0 0 0 0 1
+value=74AHC1G125GV
+}
+C 50400 42400 1 0 0 capacitor-3.sym
+{
+T 50400 43400 5 10 0 0 0 0 1
+device=CAPACITOR
+T 50700 43000 5 10 1 1 0 0 1
+refdes=C302
+T 50400 43600 5 10 0 0 0 0 1
+symversion=0.1
+T 50700 42600 5 10 1 1 0 0 1
+value=1n
+}
+C 43300 46100 1 0 0 resistor-1.sym
+{
+T 43600 46500 5 10 0 0 0 0 1
+device=RESISTOR
+T 43300 46400 5 10 1 1 0 0 1
+refdes=R301
+T 43900 46400 5 10 1 1 0 0 1
+value=100k
+}
+C 45400 44800 1 0 0 resistor-3.sym
+{
+T 45500 45800 5 10 0 0 0 0 1
+device=RESISTOR
+T 45700 45400 5 10 1 1 0 0 1
+refdes=R302
+T 45700 45100 5 10 1 1 0 0 1
+value=10.5k
+}
+C 51000 43600 1 180 1 resistor-1.sym
+{
+T 51300 43200 5 10 0 0 0 2 1
+device=RESISTOR
+T 51000 43400 5 10 1 1 0 2 1
+refdes=R304
+T 51600 43400 5 10 1 1 0 2 1
+value=1k
+}
+C 51100 45200 1 0 0 generic-power.sym
+{
+T 51300 45450 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+C 51200 43700 1 0 0 gnd-1.sym
+{
+T 51500 43750 5 10 0 1 0 0 1
+net=GND:1
+}
+C 52800 45100 1 0 0 generic-power.sym
+{
+T 53000 45350 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+C 52900 43800 1 0 0 gnd-1.sym
+{
+T 53200 43850 5 10 0 1 0 0 1
+net=GND:1
+}
+N 52000 44600 52600 44600 4
+N 52300 43500 52300 44600 4
+N 50700 44400 50600 44400 4
+N 50600 44400 50600 43300 4
+C 50500 42100 1 0 0 gnd-1.sym
+{
+T 50800 42150 5 10 0 1 0 0 1
+net=GND:1
+}
+C 45400 43500 1 0 0 resistor-3.sym
+{
+T 45500 44500 5 10 0 0 0 0 1
+device=RESISTOR
+T 45700 44100 5 10 1 1 0 0 1
+refdes=R303
+T 45700 43800 5 10 1 1 0 0 1
+value=82.0k
+}
+C 44200 45100 1 0 0 capacitor-3.sym
+{
+T 44200 46100 5 10 0 0 0 0 1
+device=CAPACITOR
+T 44900 45700 5 10 1 1 0 0 1
+refdes=C301
+T 44200 46300 5 10 0 0 0 0 1
+symversion=0.1
+T 44500 45300 5 10 1 1 0 0 1
+value=1n
+}
+N 53300 44200 53300 41900 4
+N 48500 41900 53300 41900 4
+N 48500 41900 48500 44800 4
+N 45500 44800 45500 44400 4
+N 45500 44600 46600 44600 4
+C 45400 43200 1 0 0 gnd-1.sym
+{
+T 45700 43250 5 10 0 1 0 0 1
+net=GND:1
+}
+C 44300 44800 1 0 0 gnd-1.sym
+{
+T 44600 44850 5 10 0 1 0 0 1
+net=GND:1
+}
+N 44400 46000 44400 46200 4
+N 43300 46200 40300 46200 4
+{
+T 40600 46200 5 10 1 1 0 0 1
+netname=HFXTO
+}
+C 40400 46100 1 0 0 flag.sym
+N 52300 43500 51900 43500 4
+N 51000 43500 50600 43500 4
+C 49400 45400 1 0 0 generic-power.sym
+{
+T 49600 45650 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+C 49500 43900 1 0 0 gnd-1.sym
+{
+T 49800 43950 5 10 0 1 0 0 1
+net=GND:1
+}
+N 49000 45000 48800 45000 4
+N 48800 45000 48800 44600 4
+N 48800 44600 49000 44600 4
+N 47600 44800 48800 44800 4
+N 50300 44800 50700 44800 4
+N 53700 44600 56700 44600 4
+{
+T 55600 44600 5 10 1 1 0 0 1
+netname=HFXTI
+}
+C 55400 44500 1 0 0 flag.sym
+C 49000 44200 1 0 0 74AUP2G132-1.sym
+{
+T 49300 45400 5 10 0 0 0 0 1
+device=74132
+T 49300 46800 5 10 0 0 0 0 1
+footprint=DFN_HS
+T 49300 46400 5 10 0 0 0 0 1
+value=74AUP2G132GD
+T 49700 45300 5 10 1 1 0 0 1
+refdes=U302ab
+T 49700 45100 5 10 1 0 0 0 1
+slot=1
+}
+N 44200 46200 46400 46200 4
+C 46600 43500 1 0 0 resistor-1.sym
+{
+T 46900 43900 5 10 0 0 0 0 1
+device=RESISTOR
+T 46600 43800 5 10 1 1 0 0 1
+refdes=R305
+T 47200 43800 5 10 1 1 0 0 1
+value=82.0k
+}
+N 48200 44800 48200 43600 4
+N 48200 43600 47500 43600 4
+N 46600 43600 46400 43600 4
+N 46400 43600 46400 44600 4
+C 46900 45400 1 0 0 generic-power.sym
+{
+T 47100 45750 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+C 45300 45700 1 0 0 generic-power.sym
+{
+T 45500 45950 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+C 47000 44100 1 0 0 gnd-1.sym
+{
+T 47300 44150 5 10 0 1 0 0 1
+net=GND:1
+}
+N 47100 45400 47100 45200 4
+N 46400 46200 46400 45000 4
+N 46600 45000 46400 45000 4
+C 50700 44000 1 0 0 74AUP2G132-1.sym
+{
+T 51000 45200 5 10 0 0 0 0 1
+device=74132
+T 51000 46600 5 10 0 0 0 0 1
+footprint=DFN_HS
+T 51000 46200 5 10 0 0 0 0 1
+value=74AUP2G132GD
+T 51400 45100 5 10 1 1 0 0 1
+refdes=U302ab
+T 51400 44900 5 10 1 0 0 0 1
+slot=2
+}
+C 46600 44400 1 0 0 opamp-dual-1.sym
+{
+T 46800 46700 5 10 0 0 0 0 1
+device=DUAL_OPAMP
+T 47300 45300 5 10 1 1 0 0 1
+refdes=U301ab
+T 47300 45100 5 10 1 0 0 0 1
+slot=1
+T 47300 45300 5 10 0 1 0 0 1
+footprint=SO8
+T 46800 46900 5 10 0 0 0 0 1
+symversion=0.2
+T 47200 44300 5 10 1 1 0 0 1
+value=MCP6542
+T 47200 44100 5 10 0 0 0 0 1
+pn-digikey=MCP6542-E/SN-ND
+}
+C 46700 41400 1 0 0 opamp-dual-1.sym
+{
+T 46900 43700 5 10 0 0 0 0 1
+device=DUAL_OPAMP
+T 47400 42300 5 10 1 1 0 0 1
+refdes=U301ab
+T 47400 42100 5 10 1 0 0 0 1
+slot=2
+T 47400 42300 5 10 0 1 0 0 1
+footprint=SO8
+T 46900 43900 5 10 0 0 0 0 1
+symversion=0.2
+T 47300 41300 5 10 1 1 0 0 1
+value=MCP6542
+T 47300 41100 5 10 0 0 0 0 1
+pn-digikey=MCP6542-E/SN-ND
+}
+C 47000 42400 1 0 0 generic-power.sym
+{
+T 47200 42750 5 10 1 1 0 3 1
+net=DVdd_ns430:1
+}
+N 47200 42400 47200 42200 4
+C 47100 40900 1 0 0 gnd-1.sym
+{
+T 47400 40950 5 10 0 1 0 0 1
+net=GND:1
+}
+N 47200 41200 47200 41400 4
+N 46700 42000 46700 42300 4
+N 46700 42300 47200 42300 4
+N 47200 41300 46700 41300 4
+N 46700 41300 46700 41600 4
diff --git a/sch-pcb/devboard/comparator.py b/sch-pcb/devboard/comparator.py
new file mode 100644 (file)
index 0000000..7175471
--- /dev/null
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+
+from scipy.optimize import broyden2
+
+from wag import engstr as es
+
+vdd = 2.5
+rtotal = 100e3
+
+def calc_r23(vdd, v23):
+    n = v23/vdd
+    return rtotal * n*(1 - n)
+
+def calc_v(v23, rf):
+    r23 = calc_r23(vdd, v23)
+    vx = v23*rf/(r23+rf)
+    vih = vdd * r23/(r23+rf) + vx
+    vil = vx
+    return [vil, vih]
+
+
+def mkoptfun(goal):
+    def f(x):
+        v23 = x[0]
+        rf = x[1]
+
+        vil, vih = calc_v(v23, rf)
+        #print vil, vih
+        return [vil-goal[0], vih-goal[1]]
+    return f
+
+
+
+v23 = 2.0
+rf = 100e3
+
+goal = [2.0, 2.25]
+
+xini = [v23, rf]
+xopt = list(broyden2(mkoptfun(goal), xini))
+
+v23opt = xopt[0]
+rfopt = xopt[1]
+r23opt = calc_r23(vdd, v23opt)
+r3 = (v23opt/vdd) * rtotal
+r2 = r23opt*rtotal/r3
+r2 = r23opt*rtotal/r3
+
+print 'Optimized values:'
+print 'v23:', es(v23opt)
+print 'rf :', es(rfopt)
+print 'r23:', es(r23opt)
+print 'r2 :', es(r2)
+print 'r3 :', es(r3)
+vil, vih = calc_v(v23opt, rfopt)
+print 'VIL: %5.3f' % vil
+print 'VIH: %5.3f' % vih
+
+
+
+r2 = 10.5e3
+r3 = 82e3
+rfx = 82e3
+
+v23x = vdd*(r3/(r2+r3))
+r23x = r2*r3/(r2+r3)
+vx = v23x*rfx/(r23x+rfx)
+vih = vdd * r23x/(r23x+rfx) + vx
+vil = vx
+
+print
+print 'Chosen values:'
+print 'v23:', es(v23x)
+print 'rf :', es(rfx)
+print 'r23:', es(r23x)
+print 'r2 :', es(r2)
+print 'r3 :', es(r3)
+print 'VIL: %5.3f' % vil
+print 'VIH: %5.3f' % vih