#use-added-syntax(jitx)
defpackage parametric-modules :
import core
import collections
import math
import jitx
import jitx/commands
import ocdb/utils/symbols
import ocdb/utils/box-symbol
import ocdb/utils/landpatterns
import ocdb/utils/defaults
import ocdb/utils/generic-components
; Our previously-defined components
pcb-pad rect-smd-pad :
type = SMD
val pad-shape = Rectangle(0.75, 1.0)
shape = pad-shape
layer(SolderMask(Top)) = pad-shape
layer(Paste(Top)) = pad-shape
pcb-landpattern polarized-chip-landpattern :
pad a : rect-smd-pad at loc(1.0, 0.0)
pad c : rect-smd-pad at loc(-1.0, 0.0)
layer(Courtyard(Top)) = Rectangle(3.0, 2.0)
layer(Silkscreen("pol", Top)) = Line(0.30, [Point((- 1.5), (- 1.0)) Point((- 1.5), 1.0)])
layer(Silkscreen("values", Top)) = Text(">REF", 0.7, C, loc(0.0, -1.2))
pcb-component photodiode :
pin a
pin c
landpattern = polarized-chip-landpattern(a => polarized-chip-landpattern.a,
c => polarized-chip-landpattern.c)
val sym = diode-sym(DiodePhoto)
symbol = sym(a => sym.a,
c => sym.c)
reference-prefix = "D"
pcb-component op-amp :
pin-properties :
[pin:Ref | pads:Int ...]
[in+ | 3 ]
[in- | 4 ]
[out | 1 ]
[v+ | 5 ]
[v- | 2 ]
assign-landpattern(SOT95P280X145-5N)
symbol = op-amp-sym(self.in+ => op-amp-sym.in+
self.in- => op-amp-sym.in-
self.out => op-amp-sym.out
self.v- => op-amp-sym.v-
self.v+ => op-amp-sym.v+)
; New amplifier circuit
pcb-module transimpedance-amplifier (rf:Double, cf:Double):
pin input
pin output
pin vdd
pin gnd
inst op-amp:op-amp
inst decoupling-cap : ceramic-cap(10.0e-6)
; Connect module pins and decoupling to op-amp power pins.
net (vdd op-amp.v+ decoupling-cap.p[1])
net (gnd op-amp.v- decoupling-cap.p[2])
; Add and connect feedback network
inst r : chip-resistor(closest-std-val(rf, 1.0))
inst c : ceramic-cap(cf)
net (gnd op-amp.in+)
net (input, op-amp.in-, r.p[1] c.p[1])
net (output op-amp.out, r.p[2] c.p[2])
schematic-group(self) = trans-amp
pcb-module my-design :
inst d : photodiode[2]
inst high-gain-amp : transimpedance-amplifier(54.0e3, 2.7e-12)
inst low-gain-amp : transimpedance-amplifier(27.0e3, 2.7e-12)
inst connector : pin-header(3)
; Set up power connections
net GND (high-gain-amp.gnd low-gain-amp.gnd connector.p[1])
net VDD (high-gain-amp.vdd low-gain-amp.vdd connector.p[2])
; Connect diodes to amplifiers
net (d[0].c high-gain-amp.input)
net (d[0].a high-gain-amp.gnd)
net (d[1].c low-gain-amp.input)
net (d[1].a low-gain-amp.gnd)
schematic-group(d[0]) = schematic-group(high-gain-amp)
schematic-group(d[1]) = schematic-group(low-gain-amp)
symbol(GND) = ocdb/utils/symbols/ground-sym
symbol(VDD) = ocdb/utils/symbols/supply-sym
make-default-board(my-design, 4, Rectangle(25.0, 10.0))
view-board()
view-schematic()