Simulation of RLC circuit

Jan 18, 2008 2 Replies

Hi



To continue this discussion about simulation of incremental difference equations, I was wondering how you could add a power source to the code that John Larkin came up with. I have been experimenting with this and I found that merely adding the voltage like


//FOR T = 0 TO 1 STEP DT // IL = IL + (Vin-Vout) * DT / L // IR = Vout / R // IC = IL - IR // Vout = Vout + IC * DT / C +myVoltage //NEXT



causes problems because the voltage accumulates in the Vout variable and the voltage quickly goes very large. Do I need to subtract the previous voltage before I add the new voltage like:



//FOR T = 0 TO 1 STEP DT // IL = IL + (Vin-Vout) * DT / L // IR = Vout / R // IC = IL - IR // Vout = Vout + IC * DT / C +myVoltage-lastvoltage // lastvoltage = myVoltage //NEXT



Would this be remotely accurate?



Here is the circuit I am looking at:



[Input]--[coil]---|-------|----[output]--| | | | | | [cap] [resistor] [voltage] | | | | |---------|-------|--------------| | [ground]

Scott


Scott Ronald wrote: > John Larkin wrote: >> On Thu, 03 Jan 2008 21:33:29 -0800, John Larkin >> wrote: >>



>> On Fri, 04 Jan 2008 05:22:29 GMT, Scott Ronald >>> wrote: >>>
>>>> John Larkin wrote: >>>>> On Fri, 04 Jan 2008 03:16:46 GMT, Scott Ronald >>>>> wrote: >>>>>
>>>>>> Hi >>>>>>
>>>>>> Does anyone know of some code or a program that I can use to simulate a really simple RLC circuit (2 network). I know that I can use one of the freely available programs to do this, but I want to be able change the input voltage arbitrarily with my own code using feedback from the output of my circuit. >>>>>>
>>>>>> It seems like spice variants cannot do this, and I do not know how to create the differential equations to write my own code. >>>>>>
>>>>> What r-l-c topology did you have in mind? It's not hard to program the >>>>> incremental difference equations. >>>>>
>>>>> But Spice program can do most anything. >>>>>
>>>>> John >>>>>
>>>> I need to do something like this: >>>>
>>>> [Input]-|-[coil]-----|-----[output] >>>> | | | >>>> | [cap] | >>>> | | | >>>> -------|-------------- >>>> | >>>> [ground] >>>>
>>>> I hope this is readable. >>>>
>>>>
>>> No resistor? >>>
>>> OK, assume a time step DT. >>>
>>>
>>
>>
>> Oops, make that first line >>
>>> FOR T = 0 TO 1 STEP DT >>>
>>> IL = IL + (Vin-Vout) * DT / L >>>
>>> Vout = Vout + IL * DT /
C >>>
>>> NEXT >>>
>>>
>>
> Hi >
> Wow that is great, is there a textbook somewhere that covers this technique? >
> How would it change if I add a resistor? >
>
> >>> [Input]-|-[coil]-----|-------|----[output] > >>> | | | > >>> | [cap] [resistor] > >>> | | | > >>> -------|-------------- > >>> | > >>> [ground] >

Assuming that [output] is a high-impedance gadget, the presence of [voltage] does not change the voltage waveform at Vout, which is what we named the node at the top of [resistor].

So if we clarify the names and polarities...

the code becomes

FOR T = 0 TO 1 STEP DT IL = IL + (Vin-Vout) * DT / L IR = Vout / R IC = IL - IR Vout = Vout + IC * DT / C Output = Vout - Voltage NEXT

John

Acutally I need the [output] part to be low impedance, so that it will affect the vout node:

Vout Vin-----|-[coil]--|-------|--------------| | | | | + | [cap] [resistor] [Voltage] | | | | - |---------|-------|--------------| | [ground]

Scott

John Lark> >

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required