Keyboard Shortcuts
Likes
- LTspice
- Messages
Search
Re: IP3 or 3rd Order Intercept Point Plotting
Hi Dan, IMD testing in RF can be done with two tone testing and looking at the spectrum of the output or you can use a single input, step its value and plot gain against the power out. In a well behaved amplifier the gain will drop 1dB when non linearity starts to arrive. There is a rule of thumb that OIP3 is12-14dB above the P(-1dB) point. Radio hams would use the ARRL or RSGB handbook to read up on this. Designers of amateur radio circuits would use the book Experimental Methods of RF design, affectionately known as EMRFD. Out of print but really useful.?
?
For two tone testing you could look at a file in the archive; Two_Tone_OIP3_EMRFD_fig2-57_ATC.zip and get some useful background.
?
Apply two voltage sources in series, give each an internal impedance (Rser) of 25 Ohms, ensure your amplifier has a 50 Ohm load on its output. You need to run a .TRAN analysis of course to see non-linear effects.
?
The three settings of the .TRAN command are critical to allow use of the FFT command. The start and stop times MUST start and end near zero, the maximum timestep has to be kept very small. Look at the voltage out after simulation and zoom right in to the stop and start of the waveform. It may help to use two tones (frequencies) that make this easier, I use 14 and 14.2MHz (in real life my two tone oscillator has a separation of only 20kHz, but it doesn't seem to matter)
?
The theory of two tone testing is that if you apply 14MHz (f1) and 14.2MHz(f2) you will see and putput spectrum with these two tones, and also tones at 13.8 and 14.4MHz (and a smorgsbord of frequencies of multiplies of each tone added or subtracted from multiplies of the other tones) The 13.8 and 14.4 tones are twice f2 less f1 and twice f1 less f2. If you record the amplitude of one of the fundamental tones and one of the intermodulation products you can get the OIP3 by adding half the difference to the amplitude of the main tone. You must correct for the fact that the FFT uses dBv by adding 13 to get dBm.
?
It's a pity you can't use .MEAS on fft waveform results but instead you can use .MEAS commands to plow through the .RAW simulation results and extract the amplitude of one tone. The sequence of 4 or 5 commands to do this are in Tony's example.
?
It took me a while to understand how these worked, you can think of it as realizing that you can measure DC (zero Hertz) by averaging and that "mixing" a desired frequency to zero hertz allows you to measure the desired frequency, with the added complication you don't know the phase of the desired f so you have to use quadrature waveforms and combine the results.
?
I hope that all helps, the forum here is about LTspice and not circuit design but hopefully you find the above useful. I sometimes wish the forum had better "examples of good practice" and more tutorial related examples, rather than being full of people's problems.
?
I am a radioi amateur in the UK, my callsign is MI5AFL, (I am listed in QRZ if you are a member of the tribe of amateurs)
Regards
Ian McCrum
MI5AFL
? |
Re: Single-phase H-bridge inverter circuit
Hi Andy, Thank you so much for your explanation. It was very helpful! I just have one more question (I hope I¡¯m not bothering you): in our example, the power supply voltage is 5V. But what if our power supply is much higher, say around 300V? The MOSFET needs a gate-to-source voltage (Vgs) that is higher than the source (Vs) to turn on. So, if we keep using a 10V PWM signal referenced to ground, it wouldn¡¯t work properly. I¡¯ve been researching this, and I came across the bootstrap driver technique. Is this commonly used in such high-voltage applications? Or is there another configuration we should use in this scenario? Thanks again for your help! By the way, do you have LinkedIn? I really appreciate your knowledge of LTspice. Congratulations! Guilherme |
Re: IP3 or 3rd Order Intercept Point Plotting
¿ªÔÆÌåÓýIs it on a stone tablet? On 2025-05-10 20:17, alan victor via
groups.io wrote:
--
Best wishes John Woodgate RAYLEIGH Essex OOO-Own Opinions Only If something is true: * as far as we know - it's science *for certain - it's mathematics *unquestionably - it's religion |
Re: IP3 or 3rd Order Intercept Point Plotting
On Sat, May 10, 2025 at 06:16 AM, Dan wrote:
Are there any files, messages etc, that detail how to plot the IP3 of an rf amplifier using LTspice?? I would be interested in comments and examples on this subject. This gentleman does a nice review of your query. See page starting at 16...?
?
?https://www.gunthard-kraus.de/LTSwitcherCAD/SwitcherCAD-Tutorial_English/pdf-File/RF_English_01_final.pdf |
Re: IP3 or 3rd Order Intercept Point Plotting
On Sat, May 10, 2025 at 09:16 AM, Dan wrote:
Plain old common sense (which might not be correct) suggests that you would want to use a .FOUR command to extract the amplitudes, and then use it with time-domain (.TRAN) simulations where you .STEP the amplitude.? Have you thought about doing that? ?
How would you do it if you had the device on a lab bench?? What equipment would you use and how would you set it up and measure it?? Maybe you would do the same thing in LTspice.
?
For RF circuits, obtaining good models is often the most difficult part.
?
Andy
? |
Re: Dual Active bridge
On Fri, May 9, 2025 at 05:18 PM, <arhamishtiaq42@...> wrote:
Note that LTspice can export (convert) the schematic into netlist files for a variety of CAD programs.? In the schematic viewer, go to Tools > Export Netlist, and read the Help page for Schematic Capture > PCB Netlist Extraction.? KiCad is not one of the listed file formats, but I am assuming it can open at least one of the listed file types.
?
About the transformer and ADuM3190, if you plan to use them in your design, then I think it only makes sense to put them on your PCB.? Otherwise, they would need to float in space with wires going to the PCB.? If you don't plan to use the ADuM3190 then it does not need to be there, of course.? It was there for a reason, but you might not need that reason.? It's up to you.? If I remember correctly, Udo's schematic had two transformers, one purchased and the other hand-made (or maybe manufactured according to your specifications).
?
Andy
? |
Re: Single-phase H-bridge inverter circuit
Thank you for uploading the schematic.
?
I don't know exactly what was the "distortion" you saw.? There are spikes on the waveforms at either end of the resistor.? Those spikes mostly disappear when you plot the differential voltage across the resistor.? By "distortion", did you mean the spikes?
?
Those spikes mostly happen because of the capacitance internal to the MOSFETs.? The voltage waveform at each MOSFET's gate is a square-ish wave with fast (1 ns) edges.? That dv/dt (10 V/ns) couples through the gate-to-source or gate-to-drain capacitance to the output pins, nets N004 and N005, that are at either end of the load resistor.? If you zoom-in on just the rising edge of V(N004) (the waveform at the left end of R1), and also plot the gate voltage (V(N006)) at M2, you can see that the fast falling edge at the gate couples to the output pin, making it momentarily fall to -0.9 V.? Then it plateaus at around -0.4 V, for half a microsecond.? That is when M2 is switched OFF but M1 is not switched ON yet.? Neither FET actively drives during that nanosecond so the voltage floats at around -0.4 V because of the capacitance there.
?
Half a microsecond later, M1 suddenly switches ON, and V(N004) suddenly rises to +5 V but it overshoots to +5.7 V because of the gate-to-source capacitance in M4.? Then it levels off at +5.0 V.
?
I think there is dead time already in your gate drive signals when neither FET is ON, for about half a microsecond.
?
The SPICE "PULSE" sources can be slightly challenging to figure out.? Yours are set up for:
So it is not quite a "square" wave because it spends slightly more time at +10V than it does at 0V.? Most first-time SPICE users forget to take into account the rise and fall times.? The "on" time, Ton, is the time when the waveform is at 100%, not the time it is >50%.
?
There is no "standard" delay time to use for dead time.? How much you need depends on the MOSFETs and exactly how they are driven.? Use trial-and-error to see what works best.
?
In LTspice, it is best to add labels (netnames or nodenames) to every signal you might want to plot.? If you don't label a net, and plot it, and then change something in the circuit, the plotted netname might change to a different point in the circuit, and now it is plotting the wrong signal.? Adding your own labels avoids that.? But also remember that nets should have no more than one netname.
?
Andy
? |
Re: IP3 or 3rd Order Intercept Point Plotting
¿ªÔÆÌåÓýYou should search the group archives yourself
first. Those are the files with 'z-xxx' names on the Files web
page. Also, look in the Examples that come with the app, and the
Wiki. On 2025-05-10 14:16, Dan via groups.io
wrote:
--
Best wishes John Woodgate RAYLEIGH Essex OOO-Own Opinions Only If something is true: * as far as we know - it's science *for certain - it's mathematics *unquestionably - it's religion |
Re: Latest syntax checking improvement and related issues
¿ªÔÆÌåÓýOn 10/05/2025 13:34, igor-m via
groups.io wrote:
The devs would probably argue that your libraries haven't been corrupted, but always failed "correct" syntax previously. Anyhow, this has already been discussed here at length, and there has been a flurry of new updates to the 24.1 branch as a result. If you don't want to go through "fixing" all your "broken" libraries in the meantime, you could downgrade to V24.0.12. This is not on ADI's website, but a verified "Wayback" link to it has been published on here recently. --
Regards, Tony |
Re: Access .model parameters by name in expressions
¿ªÔÆÌåÓýOn 10/05/2025 11:43, andrewsimper via
groups.io wrote:
Inside each .model there will definitely be default values stored somewhere, which could be returned if one is not provided explicitly in the .model statement, so I don't see why this couldn't be done. LTSpice is great for how it handles arbitrary expressions and behavioural devices, so I'm sure it would be possible to do such a thing if the developers wanted to.Many things are possible. Default parameter values for LTspice, at least, are listed in the Help, so you could create your own default intrinsic models if you wished - put them into the standard.xxx libraries. I think LTspice uses the last same-named model it encounters. In any event, I petty sure they cannot be accessed programmatically internally, although it would straightforward to do externally. Unfortunately, LTspice cannot invoke arbitrary external code. Many years ago, long before its acquisition by ADI, LTspice had features that were used internally by LTC, but not documented or even acknowledged. Some were completely removed after being "discovered", or at least hidden more deeply, similar to the binary format of proprietary models that are supplied, but cannot be read. You need to remember that LTspice is proprietary software. If you want a SPICE that you can customise, Ngspice is open source - you could add features of your own to your heart's content. Similarly, the original SPICE code from Berkeley is public domain and freely available - an "up to date" buildable version for Linux can be found here: I've no doubt it could be done in LTspice, but unless it's facilitated by one of the other ongoing enhancements to V24.1.x, good luck wishing for it. AFAIK, no one has ever requested it. At least for now, you're stuck with a workaround. -- Regards, Tony |
Latest syntax checking improvement and related issues
I am not sure whether some of my libs got corrupted, but with the latest LTspice release and its stronger syntax check ie. the Bordodynov lib shoots huge number of errors which must be corrected otherwise the simulation does not start.
Usually errors are with TABLE syntax, but with typos as well (well, quite huge amount).
Any experience with that here? |
Re: Access .model parameters by name in expressions
Inside each .model there will definitely be default values stored somewhere, which could be returned if one is not provided explicitly in the .model statement, so I don't see why this couldn't be done. LTSpice is great for how it handles arbitrary expressions and behavioural devices, so I'm sure it would be possible to do such a thing if the developers wanted to. |
Re: Dual Active bridge
Thank you so much for taking the time to help me. I truly appreciate it.? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. The ADuM3190-chip was used to regulate the DAB-Converter. Open the datasheet to see what is inside the chip. This chip is operating much more linear, compared to other regulator configurations, such as the combination of "voltage reference, together with an OP-Amp + Optocoupler". The optocoupler is known for it's nonlinearities and therefore more complicated to stabilize the converter. ? ?? ?I just used the ADuM3190-chip to show an alternative solution. Its use is not mandatory, you don't need it. ???????? It is assumed you want to use the Transformer for isolation purposes, right? In that case the regulation feedback loop needs to have an isolation as well. Another alternative, for which an isolated regulation loop can be omitted, is the use of an isolated transformer-coupled Driver. In that case you will have the freedom to put the regulation circuitry to any ground point - output Ground for instance - without the need for an isolated feedback loop. The isolated Driver provides a floating Ground. So, the regulator inside the UC3875 could be directly used for regulation.? ? 2. The UC3875 gate driver outputs A,B and C,D can drive a transformer coupled driver or a Low side/-High side driver instead. For simplicity, I used voltage-dependent-voltage sources, which LTspice offers in its library as "e-sources". The switching frequency is accomplished by the R12,C8, connected to the FREQSET-Pin of the UC3875. For more information, pls refer to the datasheet, in which you find a curve for Rt=f(CT, frequency). ? 3. The transformer(s) have nothing to do with the ADuM3190-chip at all. ? 4. I can't assist you regarding KICAD. As mentioned above, ADuM3190-chip is not mandatory. ? 5. For transformer design, pls refer to the following articles ? ? ? ?
and
? best regards Udo ? |
Re: Access .model parameters by name in expressions
¿ªÔÆÌåÓýOn 10/05/2025 10:10, andrewsimper via
groups.io wrote:
I think your guess is correct. This isn't an "official "no". But since the Gummel-Poon model, for example, is public domain, it would in principle be possible to derive it from the actual characteristics. There is another issue: in most models, some of the parameters are not stated, so remain at their default value, which is often zero, but not always. Therefore they couldn't be extracted from the .model. I don't know for sure, but it's also possible that not all simulators have the same default values. I would think this is enough to deter you from this route, and probably why such a reverse look-up doesn't exist. -- Regards, Tony |
Re: Access .model parameters by name in expressions
Hi Tony,
?
Thanks for the reply. I already know how to create a parameter and use this value in a .model statement of transistor / diode etc, which is what you have shown, but unfortunately this doesn't help with my question.
?
Is there a way to access a value defined in the .model statement of a transistor etc, and then use that value elsewhere in an expression?
?
Is there some syntax like: "getvalue(npnmodel, is)", or "npnmodel.is", or something similar to grab the already defined value out of a .model statement?
?
I scoured the LTSpice docos / online resources but and can't find anything like this, so I am guessing the answer is no, but I thought I'd ask here for an more official "no". I can workaround it in other ways, but having this sort of access would be really useful to prevent a bunch of manual text editing every time I want to try out a different model and calculate derived expressions from it. |