// genesis
function make_vclamp(path)
str path
create diffamp /Vclamp
setfield ^ saturation 999.0 \
gain 0.002 // 1/R from the lowpass filter input
create RC /Vclamp/lowpass
setfield ^ R 500.0 \ // ohm
C 0.1e-6 // farad; for a tau of 50 us
create PID /Vclamp/PID
setfield ^ gain 1e-6 \ // off
tau_i {dt} \ // seconds
tau_d {{dt}/4} \ // seconds
saturation 0 // off
echo connecting voltage clamp circuitry
addmsg /Vclamp/lowpass /Vclamp PLUS state
addmsg /Vclamp /Vclamp/PID CMD output
addmsg /Vclamp /Vclamp/lowpass INJECT x
addmsg {path} /Vclamp/PID SNS Vm
addmsg /Vclamp/PID {path} INJECT output
end
function set_vclamp_on
setfield /Vclamp/PID saturation 50e-9 // amps
end
function set_vclamp_off
setfield /Vclamp/PID saturation 0
end