blob: 6c74f5e64cc72b171a176ced7b0610782b28d720 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/bin/sh
# -*- mode: tcl -*- \
exec wish -f "$0" ${1+"$@"}
# old name: analyse-20070504-0.tcl
package require BLT
load ../../../src/.libs/libspice.so
# Test of virtual capacitore circuit
# Vary the control voltage and log the resulting capacitance
spice::source "testCapa.cir"
set n 30
set dv 0.2
set vmax [expr $dv/2]
set vmin [expr -1 * $dv/2]
set pas [expr $dv/ $n]
blt::vector create Ctmp
blt::vector create Cim
blt::vector create check
blt::vector create Vcmd
blt::graph .cimvd -title "Cim = f(Vd)"
blt::graph .checkvd -title "Rim = f(Vd)"
blt::vector create Iex
blt::vector create freq
blt::graph .freqanal -title "Analyse frequentielle"
set v [expr {$vmin + $n * $pas / 4}]
spice::alter vd = $v
spice::op
spice::ac dec 10 100 100k
spice::vectoblt {Vex#branch} Iex
spice::vectoblt {frequency} freq
pack .freqanal
.freqanal element create line1 -xdata freq -ydata Iex
for {set i 0} {[expr $n - $i]} {incr i } {
set v [expr {$vmin + $i * $pas}]
spice::alter vd = $v
spice::op
spice::ac dec 10 100 100k
spice::let Cim = real(mean(Vex#branch/(2*Pi*i*frequency*(V(5)-V(6)))))
spice::vectoblt Cim Ctmp
Cim append $Ctmp(0:end)
spice::let err = real(mean(sqrt((Vex#branch-(2*Pi*i*frequency*Cim*V(5)-V(6)))^2)))
spice::vectoblt err Ctmp
check append $Ctmp(0:end)
Vcmd append $v
}
pack .cimvd
.cimvd element create line1 -xdata Vcmd -ydata Cim
pack .checkvd
.checkvd element create line1 -xdata Vcmd -ydata check
|