diff --git a/xschem_library/devices/ammeter.sym b/xschem_library/devices/ammeter.sym index eb514018..be397393 100644 --- a/xschem_library/devices/ammeter.sym +++ b/xschem_library/devices/ammeter.sym @@ -1,4 +1,4 @@ -v {xschem version=2.9.9 file_version=1.2 } +v {xschem version=3.0.0 file_version=1.2 } G {} K {type=current_probe format="@name @pinlist 0 @@ -10,8 +10,8 @@ E {} L 4 0 -30 0 30 {} L 4 -7.5 0 -0 10 {} L 4 -0 10 7.5 0 {} -B 5 -2.5 -32.5 2.5 -27.5 {name=p dir=inout propag=1} -B 5 -2.5 27.5 2.5 32.5 {name=m dir=inout propag=0} +B 5 -2.5 -32.5 2.5 -27.5 {name=plus dir=inout propag=1} +B 5 -2.5 27.5 2.5 32.5 {name=minus dir=inout propag=0} T {@current} 10 2.5 0 0 0.2 0.2 {layer=15} T {@name} 15 -18.75 0 0 0.2 0.2 {} T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15} diff --git a/xschem_library/ngspice/diode_ngspice.sch b/xschem_library/ngspice/diode_ngspice.sch new file mode 100644 index 00000000..992aa63f --- /dev/null +++ b/xschem_library/ngspice/diode_ngspice.sch @@ -0,0 +1,21 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +L 8 360 -240 360 -220 {} +L 8 340 -250 380 -250 {} +L 8 360 -270 360 -250 {} +P 8 5 360 -240 370 -240 360 -250 350 -240 360 -240 {fill=true} +T {IDEAL Diode} 260 -210 0 0 0.4 0.4 {layer=8} +N 430 -310 430 -270 { +lab=mn} +C {iopin.sym} 430 -150 0 0 {name=p1 lab=plus} +C {iopin.sym} 430 -370 0 0 {name=p2 lab=minus} +C {title.sym} 160 -40 0 0 {name=l1 author="Stefan Schippers" net_name=true} +C {ammeter.sym} 430 -340 2 0 {name=Vm} +C {ammeter.sym} 430 -180 2 0 {name=Vp} +C {lab_pin.sym} 430 -210 0 1 {name=l2 sig_type=std_logic lab=pn} +C {lab_pin.sym} 430 -290 0 1 {name=l3 sig_type=std_logic lab=mn} +C {bsource.sym} 430 -240 2 1 {name=B1 VAR=I FUNC="'v(pn,mn) > 0 ? v(pn,mn) / Ron : v(pn,mn) / Roff'"} diff --git a/xschem_library/ngspice/diode_ngspice.sym b/xschem_library/ngspice/diode_ngspice.sym new file mode 100644 index 00000000..9c754d3a --- /dev/null +++ b/xschem_library/ngspice/diode_ngspice.sym @@ -0,0 +1,21 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname Ron=@Ron Roff=@Roff m=@m" +function1="U H 0 m" +function0="L U 1 m" + + +template="name=X1 m=1 Roff=1e9 Ron=0.1"} +V {} +S {} +E {} +L 4 0 5 0 30 {} +L 4 0 -30 0 -5 {} +L 4 -10 5 10 5 {} +B 5 -2.5 -32.5 2.5 -27.5 {name=plus dir=inout pinnumber=1 propag=1 goto=1} +B 5 -2.5 27.5 2.5 32.5 {name=minus dir=inout pinnumber=2 goto=0} +P 4 4 -0 5 -10 -5 10 -5 0 5 {fill=true} +T {@name} 15 -18.75 0 0 0.2 0.2 {} +T {@#0:net_name} 10 -28.75 0 0 0.15 0.15 {layer=15} +T {@#1:net_name} 10 20 0 0 0.15 0.15 {layer=15} diff --git a/xschem_library/ngspice/pv_ngspice.sch b/xschem_library/ngspice/pv_ngspice.sch new file mode 100644 index 00000000..977641da --- /dev/null +++ b/xschem_library/ngspice/pv_ngspice.sch @@ -0,0 +1,47 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {} +V {} +S {} +E {} +T {Voc = 21 +Wp = 100W +Vmp = 18.2} 610 -370 0 0 0.4 0.4 {} +N 510 -340 510 -320 { +lab=minus} +N 510 -140 510 -120 { +lab=minus} +N 510 -430 510 -400 { +lab=mn} +N 510 -320 510 -260 { +lab=minus} +N 510 -550 510 -490 { +lab=pn} +N 510 -490 600 -490 { +lab=pn} +N 510 -430 600 -430 { +lab=mn} +N 510 -260 510 -140 { +lab=minus} +C {iopin.sym} 510 -610 2 1 {name=p1 lab=plus} +C {iopin.sym} 510 -120 2 1 {name=p2 lab=minus} +C {title.sym} 160 -40 0 0 {name=l1 author="Stefan Schippers" net_name=true} +C {ammeter.sym} 510 -370 2 1 {name=Vm} +C {ammeter.sym} 510 -580 2 1 {name=Vp} +C {bsource.sym} 510 -460 2 0 {name=B1 VAR=I FUNC="pwl(V(pn,mn), ++ 0, 6.3, ++ 18, 5.7, ++ 18.3, 5.6, ++ 18.6, 5.4, ++ 18.9, 5.1, ++ 19.5, 4.0, ++ 21, 0, ++ 22, 0)" +} +C {lab_pin.sym} 510 -510 2 0 {name=l2 sig_type=std_logic lab=pn} +C {lab_pin.sym} 510 -410 2 0 {name=l3 sig_type=std_logic lab=mn} +C {res.sym} 600 -460 0 0 {name=R1 +value=500000 +footprint=1206 +device=resistor +m=1} diff --git a/xschem_library/ngspice/pv_ngspice.sym b/xschem_library/ngspice/pv_ngspice.sym new file mode 100644 index 00000000..65c61909 --- /dev/null +++ b/xschem_library/ngspice/pv_ngspice.sym @@ -0,0 +1,26 @@ +v {xschem version=3.0.0 file_version=1.2 } +G {} +K {type=subcircuit +format="@name @pinlist @symname R1=@R1 R2=@R2 Vmp=@Vmp Voc=@Voc m=@m" +function1="U H 0 m" +function0="L U 1 m" + + +template="name=X1 m=1 R1=0.1 R2=10 Vmp=17 Voc=21"} +V {} +S {} +E {} +L 4 0 5 0 30 {} +L 4 0 -30 0 -5 {} +L 4 -10 5 10 5 {} +L 4 -20 -5 20 -5 {} +L 4 -15 -20 -5 -20 {} +L 4 -10 -25 -10 -15 {} +B 5 -2.5 -32.5 2.5 -27.5 {name=plus dir=inout pinnumber=1 propag=1 goto=1} +B 5 -2.5 27.5 2.5 32.5 {name=minus dir=inout pinnumber=2 goto=0} +P 4 7 -35 -30 -25 -20 -20 -25 -15 -10 -30 -15 -25 -20 -35 -30 {} +P 4 7 -35 -5 -25 5 -20 0 -15 15 -30 10 -25 5 -35 -5 {} +T {@name} 15 -28.75 0 0 0.2 0.2 {} +T {Voc = 21 +Wp = 100W +Vmp = 18.2} 30 -10 0 0 0.2 0.2 {} diff --git a/xschem_library/ngspice/solar_panel.sch b/xschem_library/ngspice/solar_panel.sch index 58f61173..6657236e 100644 --- a/xschem_library/ngspice/solar_panel.sch +++ b/xschem_library/ngspice/solar_panel.sch @@ -4,43 +4,37 @@ K {} V {} S {} E {} -L 2 85 -895 85 -665 {} -L 2 125 -895 125 -665 {} -L 2 165 -895 165 -665 {} -L 2 205 -895 205 -665 {} -L 2 245 -895 245 -665 {} -L 2 285 -895 285 -665 {} -L 2 325 -895 325 -665 {} -L 2 365 -895 365 -665 {} -L 2 45 -865 375 -865 {} -L 2 45 -825 375 -825 {} -L 2 45 -785 375 -785 {} -L 2 45 -745 375 -745 {} -L 2 45 -705 375 -705 {} -L 4 45 -905 45 -645 {} -L 4 35 -665 385 -665 {} -L 4 85 -665 85 -655 {} -L 4 125 -665 125 -655 {} -L 4 165 -665 165 -655 {} -L 4 205 -665 205 -655 {} -L 4 245 -665 245 -655 {} -L 4 285 -665 285 -655 {} -L 4 325 -665 325 -655 {} -L 4 365 -665 365 -655 {} -L 4 35 -705 45 -705 {} -L 4 35 -745 45 -745 {} -L 4 35 -785 45 -785 {} -L 4 35 -825 45 -825 {} -L 4 35 -865 45 -865 {} -L 8 790 -500 790 -480 {} -L 8 770 -510 810 -510 {} -L 8 790 -530 790 -510 {} -L 8 770 -610 790 -610 {} -L 8 790 -610 807.5 -620 {} -L 8 810 -610 830 -610 {} +L 2 125 -885 125 -655 {} +L 2 165 -885 165 -655 {} +L 2 205 -885 205 -655 {} +L 2 245 -885 245 -655 {} +L 2 285 -885 285 -655 {} +L 2 325 -885 325 -655 {} +L 2 365 -885 365 -655 {} +L 2 405 -885 405 -655 {} +L 2 85 -855 415 -855 {} +L 2 85 -815 415 -815 {} +L 2 85 -775 415 -775 {} +L 2 85 -735 415 -735 {} +L 2 85 -695 415 -695 {} +L 4 85 -895 85 -635 {} +L 4 75 -655 425 -655 {} +L 4 125 -655 125 -645 {} +L 4 165 -655 165 -645 {} +L 4 205 -655 205 -645 {} +L 4 245 -655 245 -645 {} +L 4 285 -655 285 -645 {} +L 4 325 -655 325 -645 {} +L 4 365 -655 365 -645 {} +L 4 405 -655 405 -645 {} +L 4 75 -695 85 -695 {} +L 4 75 -735 85 -735 {} +L 4 75 -775 85 -775 {} +L 4 75 -815 85 -815 {} +L 4 75 -855 85 -855 {} B 2 1270 -740 1690 -570 {flags=graph -y1 = 4.9e-06 -y2 = 20 +y1 = -3.3e-05 +y2 = 21 divy = 6 subdivy=1 x1=-9.66825e-10 @@ -50,8 +44,8 @@ node="panel led" unitx=m color="7 4"} B 2 1270 -570 1690 -400 {flags=graph -y1 = 4e-13 -y2 = 3.8 +y1 = 0.0012 +y2 = 6.3 divy = 4 subdivy=1 x1=-9.66825e-10 @@ -62,8 +56,8 @@ color="7 4" node="i(vpanel) i(vled)"} B 2 1270 -930 1690 -740 {flags=graph -y1 = -6.4e-08 -y2 = 40 +y1 = -4.1e-08 +y2 = 110 divy = 5 subdivy=1 x1=-9.66825e-10 @@ -74,34 +68,31 @@ divx=9 color="7 4" node="\\"Panel power; i(vpanel) v(panel) *\\" \\"Led power; i(vled) v(led) *\\""} -B 18 45 -850 300 -665 {} -A 5 300 -850 5.590169943749475 243.434948822922 360 {fill=true} -P 7 6 375 -665 320 -821.25 315 -835 302.5 -850 290 -855 45 -865 {} -P 8 5 790 -500 800 -500 790 -510 780 -500 790 -500 {fill=true} -T {2.5} 75 -645 0 0 0.2 0.2 {} -T {5.0} 115 -645 0 0 0.2 0.2 {} -T {7.5} 155 -645 0 0 0.2 0.2 {} -T {10.0} 195 -645 0 0 0.2 0.2 {} -T {12.5} 235 -645 0 0 0.2 0.2 {} -T {15.0} 275 -645 0 0 0.2 0.2 {} -T {17.5} 315 -645 0 0 0.2 0.2 {} -T {20.0} 355 -645 0 0 0.2 0.2 {} -T {2.5} 15 -870 0 0 0.2 0.2 {} -T {2.0} 15 -830 0 0 0.2 0.2 {} -T {1.5} 15 -785 0 0 0.2 0.2 {} -T {1.0} 15 -750 0 0 0.2 0.2 {} -T {0.5} 15 -710 0 0 0.2 0.2 {} -T {25C, 1000W/m2} 170 -920 0 0 0.2 0.2 {} -T {V} 390 -655 0 0 0.4 0.4 {} -T {I} 20 -910 0 0 0.4 0.4 {} -T {SOLAR PANEL} 125 -945 0 0 0.4 0.4 {} -T {Maximum Power} 287.5 -870 0 0 0.2 0.2 {layer=8} +B 18 85 -840 340 -655 {} +A 5 340 -840 5.590169943749475 243.434948822922 360 {fill=true} +P 7 6 415 -655 360 -811.25 355 -825 342.5 -840 330 -845 85 -855 {} T {2x10 1W white LED} 1230 -340 0 0 0.4 0.4 {layer=8} -T {IDEAL Diode} 690 -470 0 0 0.4 0.4 {layer=8} T {2xseries 1W white LEDs} 1250 -230 0 0 0.4 0.4 {} T {Select one or more graphs (and no other objects) and use arrow keys to zoom / pan waveforms} 1190 -1010 0 0 0.3 0.3 {} -N 80 -450 80 -430 {lab=SRC} +T {2.5} 115 -635 0 0 0.2 0.2 {} +T {5.0} 155 -635 0 0 0.2 0.2 {} +T {7.5} 195 -635 0 0 0.2 0.2 {} +T {10.0} 235 -635 0 0 0.2 0.2 {} +T {12.5} 275 -635 0 0 0.2 0.2 {} +T {15.0} 315 -635 0 0 0.2 0.2 {} +T {17.5} 355 -635 0 0 0.2 0.2 {} +T {20.0} 395 -635 0 0 0.2 0.2 {} +T {2.5} 55 -860 0 0 0.2 0.2 {} +T {2.0} 55 -820 0 0 0.2 0.2 {} +T {1.5} 55 -775 0 0 0.2 0.2 {} +T {1.0} 55 -740 0 0 0.2 0.2 {} +T {0.5} 55 -700 0 0 0.2 0.2 {} +T {25C, 1000W/m2} 210 -910 0 0 0.2 0.2 {} +T {V} 430 -645 0 0 0.4 0.4 {} +T {I} 60 -900 0 0 0.4 0.4 {} +T {SOLAR PANEL} 165 -935 0 0 0.4 0.4 {} +T {Maximum Power} 327.5 -860 0 0 0.2 0.2 {layer=8} N 1050 -250 1140 -250 {lab=0} N 1140 -290 1140 -250 {lab=0} N 680 -650 770 -650 {lab=#net1} @@ -114,40 +105,38 @@ N 610 -870 610 -810 {lab=CTRL1} N 860 -650 900 -650 {lab=SW} N 860 -650 860 -530 {lab=SW} N 830 -650 860 -650 {lab=SW} -N 80 -450 170 -450 {lab=SRC} N 860 -250 1050 -250 {lab=0} N 570 -250 860 -250 {lab=0} N 1040 -650 1050 -650 {lab=VO} -N 345 -450 345 -420 {lab=PANEL} -N 345 -360 345 -310 {lab=0} N 1140 -480 1180 -480 {lab=LED} N 1140 -480 1140 -350 {lab=LED} -N 230 -450 250 -450 {lab=#net2} -N 345 -450 400 -450 {lab=PANEL} N 860 -370 860 -250 {lab=0} -N 860 -470 860 -430 { lab=#net3} -N 960 -650 980 -650 { lab=#net4} -N 310 -450 345 -450 {lab=PANEL} +N 860 -470 860 -430 { lab=#net2} +N 960 -650 980 -650 { lab=#net3} +N 280 -530 280 -480 { +lab=#net4} +N 280 -420 280 -370 {lab=0} +N 415 -470 415 -420 {lab=0} +N 280 -530 320 -530 { +lab=#net4} +N 380 -530 570 -530 { +lab=PANEL} +N 610 -870 800 -870 { +lab=CTRL1} +N 800 -870 800 -690 { +lab=CTRL1} C {title.sym} 160 -40 0 0 {name=l1 author="Stefan Schippers" net_name=true} -C {code_shown.sym} 245 -245 0 0 {name=CONTROL value=".control +C {code_shown.sym} 250 -250 0 0 {name=CONTROL value=".control save v(panel) v(sw) v(led) i(vpanel) tran 1u 600u uic write solar_panel.raw .endc * .dc VP 0 21 0.01 " net_name=true} -C {code.sym} 15 -225 0 0 {name=MODELS value=".MODEL DIODE D(IS=1.139e-08 RS=0.99 CJO=9.3e-12 VJ=1.6 M=0.411 BV=30 EG=0.7 ) -.MODEL swmod SW(VT=0.1 VH=0.01 RON=0.01 ROFF=10000000) +C {code.sym} 20 -230 0 0 {name=MODELS value=".MODEL DIODE D(IS=1.139e-08 RS=0.99 CJO=9.3e-12 VJ=1.6 M=0.411 BV=30 EG=0.7 ) +.MODEL swmod SW(VT=0.5 VH=0.01 RON=0.01 ROFF=10000000) " net_name=true} -C {vsource.sym} 80 -340 0 0 {name=V1 value=21 net_name=true} -C {lab_pin.sym} 80 -310 0 0 {name=l3 sig_type=std_logic lab=0 net_name=true} -C {res.sym} 80 -400 0 0 {name=R1 -value=1.4 -footprint=1206 -device=resistor -m=1 net_name=true} -C {lab_pin.sym} 400 -450 0 1 {name=l4 sig_type=std_logic lab=PANEL net_name=true} -C {lab_pin.sym} 80 -450 0 0 {name=l5 sig_type=std_logic lab=SRC net_name=true} +C {lab_pin.sym} 570 -530 0 1 {name=l4 sig_type=std_logic lab=PANEL net_name=true} C {lab_pin.sym} 570 -250 0 0 {name=l6 sig_type=std_logic lab=0 net_name=true} C {ammeter.sym} 1110 -480 3 0 {name=Vled net_name=true} C {ind.sym} 930 -650 3 1 {name=L1 @@ -163,41 +152,12 @@ m=1 value=10u footprint=1206 device="ceramic capacitor" net_name=true} -C {ammeter.sym} 280 -450 3 1 {name=Vpanel net_name=true} C {lab_pin.sym} 1050 -440 0 1 {name=l10 sig_type=std_logic lab=VO net_name=true} -C {res.sym} 860 -500 0 0 {name=R2 -value="r='V(SW) < 0 ? 0.01 : 1e9'" -footprint=1206 -device=resistor -m=1 - net_name=true} C {vsource.sym} 610 -780 0 0 {name=Vset1 value="pulse 0 1 0 1n 1n 1.7u 5u" net_name=true} C {lab_pin.sym} 610 -750 0 0 {name=l13 sig_type=std_logic lab=0 net_name=true} -C {res.sym} 800 -650 3 0 {name=R3 -value="r='V(CTRL1) > 0.5 ? 0.01 : 1e7'" -footprint=1206 -device=resistor -m=1 - net_name=true} C {lab_pin.sym} 570 -650 0 0 {name=l2 sig_type=std_logic lab=PANEL net_name=true} -C {res.sym} 200 -450 1 1 {name=R4 -value="r='(15-V(PANEL) > 0) ? -+ (15-V(PANEL))/2.5 + 1.12 : -+ (18-V(PANEL)> 0)? -+ (18-V(PANEL))**1.1/3 : -+ 0.001'" -footprint=1206 -device=resistor -m=1 - net_name=true} C {ammeter.sym} 1010 -650 3 0 {name=Vind net_name=true} -C {capa.sym} 345 -390 0 0 {name=C2 -m=1 -value=10u -footprint=1206 -device="ceramic capacitor" net_name=true} -C {lab_pin.sym} 345 -310 0 0 {name=l11 sig_type=std_logic lab=0 net_name=true} -C {launcher.sym} 655 -105 0 0 {name=h2 +C {launcher.sym} 660 -110 0 0 {name=h2 descr="Simulate" tclcommand="xschem netlist; xschem simulate" net_name=true} C {isource_table.sym} 1140 -320 0 0 {name=G2[9..0] CTRL="V(LED)" TABLE=" @@ -218,17 +178,28 @@ C {isource_table.sym} 1140 -320 0 0 {name=G2[9..0] CTRL="V(LED)" TABLE=" net_name=true} C {ammeter.sym} 650 -650 3 0 {name=Vsw net_name=true} C {ammeter.sym} 860 -400 2 0 {name=Vdiode net_name=true} -C {launcher.sym} 655 -165 0 0 {name=h1 +C {launcher.sym} 660 -170 0 0 {name=h1 descr="Simulate + gaw reload" tclcommand="set sim(spice,default) 1; set sim(spice,1,fg) 1; set sim(spice,1,st) 0;xschem netlist; xschem simulate; gaw_cmd reload_all" net_name=true} C {spice_probe.sym} 1160 -480 0 0 {name=p1 analysis=tran} -C {spice_probe.sym} 360 -450 0 0 {name=p2 analysis=tran} +C {spice_probe.sym} 570 -530 0 0 {name=p2 analysis=tran} C {spice_probe.sym} 860 -550 0 1 {name=p3 analysis=tran} -C {spice_probe.sym} 100 -450 0 1 {name=p4 analysis=tran} -C {launcher.sym} 1195 -1045 0 0 {name=h3 +C {launcher.sym} 1200 -1050 0 0 {name=h3 descr="Select arrow and Ctrl-Left-Click to load/unload waveforms" tclcommand=" xschem raw_read $netlist_dir/[file tail [file rootname [xschem get current_name]]].raw " } +C {pv_ngspice.sym} 280 -450 0 0 {name=X1 m=1 roff=1e9} +C {lab_pin.sym} 280 -370 0 0 {name=l12 sig_type=std_logic lab=0 net_name=true} +C {capa.sym} 415 -500 0 0 {name=C11 +m=1 +value=10u +footprint=1206 +device="ceramic capacitor" net_name=true} +C {lab_pin.sym} 415 -420 0 0 {name=l90 sig_type=std_logic lab=0 net_name=true} +C {ammeter.sym} 350 -530 3 1 {name=Vpanel net_name=true} +C {diode_ngspice.sym} 860 -500 2 0 {name=X2 m=1 Roff=1e9 Ron=0.1} +C {switch_ngspice.sym} 800 -650 1 0 {name=S1 model=swmod} +C {lab_pin.sym} 780 -690 0 0 {name=l3 sig_type=std_logic lab=0 net_name=true}