# I have problem with sampling Frequency when I use ACME.jl

Dear friends,
I am simulating a simple electrical circuit in EMTP-RV software which is used in electrical engineering as follows: and the voltage waveform of resistor is as follows:

now I just used ACME.jl package to simulate it in Julia and I wrote the code as follows:
using ACME
circ = @circuit begin
j_in = voltagesource()
d1 = diode(;is=1e-12, η = 1)
r=resistor(10)
j_out = voltageprobe()
j_in[+] ⟷ d1[+]
j_in[-] ⟷ gnd
d1[-] ⟷ r
gnd ⟷ r
r ⟷ j_out[+]
r ⟷ j_out[-]
end
fs = 44100;
fsig = 100000;
Tsim = 1 ;

Tsim = round(Int, Tsim);
Nsamples = round(Int, Tsimfs) - 1
t = (0:Nsamples)’/fs
model = DiscreteModel(circ, 1/fs)
y = run!(model, 310
sin.(2πfsig . t))
using Plots
plotly()
Plots.PlotlyBackend()
plot(t’, y’)
and the figure is as follows: so my qustion is why the figures are not matched. what should I do?

Aren’t you undersampling your signal?fs is 44100 and fsig is 100k.

1 Like

LOL. I am just laughing for my silly mistake Thanks dear.
fs = 441000;
fsig = 1000;

1 Like

dear friend. I changed the circuit a bit and made it complicated why this figure of current passing through D1 doesn’t match my code using ACME.jl package in julia as follows :
using ACME
circ = @circuit begin
j_in = voltagesource()
l1=inductor(0.001)
d1 = diode(;is=1e-12, η = 1)
d2 = diode(;is=1e-12, η = 1)
d3 = diode(;is=1e-12, η = 1)
d4 = diode(;is=1e-12, η = 1)
c1 = capacitor(1e-3)
r1 = resistor(20)
i_out = currentprobe()
j_in[+] ⟷ l1
j_in[-] ⟷ gnd
l1 ⟷ d1[+] ⟷ d4[-] ⟷ i_out[-]
gnd ⟷ d2[+] ⟷ d3[-]
d1[-] ⟷ d2[-] ⟷ r1 ⟷ c1 ⟷ i_out[+]
d4[+] ⟷ d3[+] ⟷ r1 ⟷ c1
end
fs = 44100;
fsig = 1000;
Tsim = 1 ;

Tsim = round(Int, Tsim);
Nsamples = round(Int, Tsimfs) - 1
t = (0:Nsamples)’/fs
model = DiscreteModel(circ, 1/fs)
y = run!(model, 310
sin.(2πfsig . t))
using Plots
plotly()
Plots.PlotlyBackend()
plot(t’, y’)
and the figure is as follows : although the diodes paramters are approximately matched with simulation, what should I do to match the waveforms of current with simulation result. Is there a problem with freuqncy of sinus in my code or the package can’t solve the circuit???

It’s best to format your code example using `back quotes `. See: PSA: make it easier to help you

I never actually used this package (never knew it existed, but it’s really cool!) but I don’t think you placed the current probe correctly in order to measure D1 current. I tried this configuration, with the current probe between D1- and D2-:

``````using ACME
using Plots
plotly()
Plots.PlotlyBackend()

circ = @circuit begin
j_in = voltagesource()
l1 = inductor(1e-3)
d1 = diode(;is=1e-12, η = 1)
d2 = diode(;is=1e-12, η = 1)
d3 = diode(;is=1e-12, η = 1)
d4 = diode(;is=1e-12, η = 1)
c1 = capacitor(1e-3)
r1 = resistor(20)
i_out = currentprobe()

j_in[+] ⟷ l1
j_in[-] ⟷ gnd
l1 ⟷ d1[+] ⟷ d4[-]
gnd ⟷ d2[+] ⟷ d3[-]
d1[-] ⟷ i_out[+]
i_out[-] ⟷ d2[-] ⟷ r1 ⟷ c1
d4[+] ⟷ d3[+] ⟷ r1 ⟷ c1
end

fs = 44100;
fsig = 1000;
dt = 1/fs
t = 0:dt:1
model = DiscreteModel(circ, 1/fs)
y = run!(model, 10*sin.(2*π*fsig .* t'))

plot(t, y')
``````

If you mess around with the frequencies or components, your simulation will not converge. I’m not sure why, but it converges if I lower the sine amplitude.

Is this a homework?

Also, please avoid double posting. It only clutters the discourse dashboard and makes responses harder to track.

1 Like

Thanks for the answer and I am very sorry if I disturb you as I asked new question here.
I wish it was my homework. but, my homework is simulation the circuit without using packages. Actually, I have to model diode as a switch connected to a DC Voltage and a resistor and extracting a admitance matrix which can be 21*21 to simulate it and using backward or forward Euler to find the answer.

1 Like

No worries! Good luck with the homework!

1 Like

Thanks:)