Things you should know about LTSpice - diyAudio
Go Back   Home > Forums > Design & Build > Software Tools

Software Tools SPICE, PCB CAD, speaker design and measurement software, calculators

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 29th August 2009, 11:09 PM   #1
diyAudio Member
 
keantoken's Avatar
 
Join Date: Aug 2006
Location: Texas
Blog Entries: 2
Default Things you should know about LTSpice

Hello all.

I'm writing this so that new users to LTSpice will have a place to refer to in order to get "up to speed" quickly without too many hangups while they are acclimating to the program.

My intent in this thread is to provide a quick reference where a person can learn how to use LTSpice effectively and avoid any inherent pitfalls. Thus, if you need help for a specific problem, I ask that you go to the Yahoo group or post in another thread (maybe someone should post the "LTSpice Help" thread). To avoid clutter, I wish to address (1) common hangups, (2) tips that apply broadly, (3) good practice in using the simulator.

If the solution to your problem is not here, you should try the LTSpice Yahoo group which was specifically made to give support for LTSpice:

http://tech.groups.yahoo.com/group/LTspice/

Contents:
Most common issues, in order of discovery
Models and their affect on accuracy
FAQ

Here are the problems I ran into in sequential order:

1: Compression.
2: Timestep.
3: Ground paths.
4: Slanted FFT.

1: This causes strange looking traces and things like chopped off transients because some samples are deleted to make more room. It is easiest to turn this of by including the parameter ".options plotwinsize=0" in your schematic.

2: If no maximum timestep is specified, LTSpice varies the timestep on-demand so as to smoothen out processor usage. This produces weird errors on the FFT and results in chopped off transients. For example, I made a saw oscillator that discharged a capacitor very fast once a threshold voltage was reached. I looked at the capacitor current and noticed that the discharges had seemingly random peaks that weren't constant. This fooled me into thinking my circuit was somehow not reliable. After changing the timestep to 100nS though, all transients were the same hight and the circuit performed perfectly. Also, if your circuit is oscillating and you can't get it to stop, try lowering the timestep. Sometimes oscillation can be triggered by a too high timestep by a simulator fault.

For THD and amplifier work, I find that I get the best accuracy with fast simulations if I make the timestep at least the wavelength of my input signal divided by 10,000. Any less samples and THD measurements aren't accurate. So the .tran statement usually looks like this:

.param Freq=10k
.tran 0 {14/Freq} {4/Freq} {14/Freq/10000}
.four {Freq} V(Vout) 5 5

This causes the simulator to run for four cycles to warm up the circuit, and then it starts saving data for 10 more cycles. The timestep is set to give 10000 samples per cycle. All I need to do to change the input frequency is change Freq.

Since distortion measurement is all about the FFT, someone suggested to me that I only needed to use as many samples as was needed by the FFT window. So if my FFT is set to use 16384 samples, I do this:

.param Freq=10k
.param FFT=16384
.tran 0 {14/Freq} {4/Freq} {14/Freq/FFT}
.four {Freq} V(Vout) 5 5

This is supposed to reduce the errors drastically since there is no need to interpolate samples. Alas, I forget to do it.
The .four statement runs a fourier (THD) analysis on the Vout node. To view the results of this analysis, look at the error log through the "view" button.

3: LTSpice does not allow for floating nodes. Presumably, this is because it needs a default reference point for the probe whenever you click on a node. So, if you have an isolation transformer, and the output end has no conductive path to ground, you will get an error.

4: The FFT in LTSpice is strange in that if there is DC drift in your circuit, there will be a large slant in the noise floor that will obscure low-level harmonics and cause faulty THD measurements. The first solution people seem to think of is to run the simulation for a few cycles before they measure. This works, but is inefficient and it will take forever if you have too much drift. What causes this is usually large capacitors in the feedback and signal paths of an amplifier, which aren't computed perfectly for the initial operating point solution. My solution to this problem is to record the voltages across these capacitors, and replace them with voltage sources. It won't model frequency response realistically, but now your FFT will be more honest.

Models:

After everything above has been sorted out, there is another thing you should know. This is that many (most?) of the models available in troves from the common semiconductor suppliers are inaccurate and in many cases don't behave much like the actual device at all. This means that if you are using false models, your circuit will probably behave significantly different in the simulator than it does in real life.

A few members here on DIYAudio have tried their hands at making adequate models for the common devices used in audio, such as the MJL3281a/1302a, and the 2SC4793/A1837 provided by Andy_C.

If you need accuracy, models are what you should be worrying about first. Models can be verified by obtaining their characteristic curves in the simulator and comparing them to the datasheet curves/values. The page below shows a circuit that will do this:

http://andyc.diy-audio-engineering.org/spice_models_3.xhtml

NOTE: I eventually want to attach to this post this mentioned circuit and a .txt file full of models that match the datasheets well. If you have models you can contribute, please post them or send them to me. I also plan on including more general helpful files in the attachments.

FAQ:

1: Can I export a simulation trace in audio format?

A: Yes, by using the .wav command. Refer to the help file for syntax and usage.

2: How do I get subcircuits to work?

A: I have no clue. They can be made to work, but if you are having problems you should go to the Yahoo group and ask there. Maybe someone else can write up an explanation of how LTSpice handles subcircuits?

PS: I'm sure everything here is accurate, but if I am wrong please correct me.

Good luck,
- keantoken

To mods: If you will, please allow me to edit this post indefinitely so I can add useful information if it shows up in discussion or I stumble across it somewhere.

Last edited by keantoken; 26th June 2012 at 03:46 AM.
  Reply With Quote
Old 30th August 2009, 02:01 AM   #2
iko is online now iko  Canada
diyAudio Moderator
 
iko's Avatar
 
Join Date: May 2008
Location: Toronto
Nice, thanks for putting it all together in one place. I use ltspice quite a bit too, and had to deal with some of these issues. Model inaccuracy is something I dread, but did nothing about it so far, so I'll definitely welcome your contribution.

Perhaps a wiki page would be more suited to this kind of post?
  Reply With Quote
Old 30th August 2009, 02:11 AM   #3
diyAudio Member
 
keantoken's Avatar
 
Join Date: Aug 2006
Location: Texas
Blog Entries: 2
You're welcome.

I thought about a wiki page, but I think here is more suitable. Not many people are versed in wiki, and I think there is more of a chance I'll get constructive criticism here. I think that if it's here, more people are likely to see it.

- keantoken
  Reply With Quote
Old 30th August 2009, 02:25 AM   #4
BudP is offline BudP  United States
diyAudio Member
 
BudP's Avatar
 
Join Date: Feb 2007
Location: upper left crust, united snakes
Not sure if you are interested in tubes and transformers, for models in this thread, but Steve Bench and Dave Slagle have put together a very useful group of models here.

http://www.intactaudio.com/forum/vie...09b3e4dd6280ba

Bud
  Reply With Quote
Old 30th August 2009, 02:35 AM   #5
diyAudio Member
 
keantoken's Avatar
 
Join Date: Aug 2006
Location: Texas
Blog Entries: 2
Thank you for the link.

Mostly I was concerned about semiconductor models, since they are mass-produced. I don't know if you could find a tube model that wasn't at least a good approximation of the actual device performance.

It might be useful to have some models for power transformers, so someone could perhaps simulate their amp with a presumably realistic power supply.

- keantoken
  Reply With Quote
Old 30th August 2009, 02:53 AM   #6
diyAudio Member
 
keantoken's Avatar
 
Join Date: Aug 2006
Location: Texas
Blog Entries: 2
Okay, I have a problem.

Look at the difference in Hfe curves for the fairchild and ONSemi datasheets for the BCxxx series:

http://www.fairchildsemi.com/ds/BC/BC547.pdf
http://www.datasheetcatalog.org/data...xohlhq11wy.pdf

By gut instinct I feel I should trust the ONSemi curves because in comparison it looks like Fairchild is very optimistic. Which one do I choose? I am trying to verify my BCxxx models.

- keantoken
  Reply With Quote
Old 30th August 2009, 02:59 AM   #7
deandob is offline deandob  Australia
diyAudio Member
 
Join Date: Oct 2002
Location: Brisbane, Australia
As a new user I find LTSpice fairly easy to use. However it would be easier if could work with dynamic voltage sources and component values (eg. potentiometers) so that when you changed the value on the fly the simulation automatically updates. This may be possible but I have not been able to work it out.
  Reply With Quote
Old 30th August 2009, 03:09 AM   #8
diyAudio Member
 
Join Date: Nov 2007
Location: Dallas
I'm sure it depends more who made the part, and on what day,
than who published the spec sheet, or fudged the curves...

Maybe more important to upgrade models with the quirky stuff (like
variable gate capacitance) than obsess to exactly match DC curves
to a specific sample in hand that may be different next week.

I would kill for a potentiometer.
Can you at least define a resistance to a .param variable?
Is there a way to access and modify variables while the sim runs?

Last edited by kenpeter; 30th August 2009 at 03:13 AM.
  Reply With Quote
Old 30th August 2009, 03:20 AM   #9
andy_c is offline andy_c  United States
Banned
 
Join Date: Apr 2003
Quote:
Originally Posted by kenpeter View Post
I would kill for a potentiometer.
Can you at least define a resistance to a .param variable?
Is there a way to access and modify variables while the sim runs?
Try this:
.param Rpot 20k
.param x 0.5
or
.step param x 0.1 0.9 0.1

Now make the pot from two series resistors, say R1 and R2. Set R1 to a value {Rpot*(1-x)} and R2 to the value {Rpot*x} . Note that these two add up to Rpot. Be sure to use curly braces to define the values, because they are .params. See the documentation for .step for more options, like:

.step param x list 0.1 0.13 0.8 0.95

...and so on.

Edit: For an example of a simulation that uses tons of .param statements for component values, see this post. That example doesn't use .step though, if I recall correctly.

Last edited by andy_c; 30th August 2009 at 03:30 AM.
  Reply With Quote
Old 30th August 2009, 03:28 AM   #10
deandob is offline deandob  Australia
diyAudio Member
 
Join Date: Oct 2002
Location: Brisbane, Australia
I just worked out the potentiometer - there are example sym & sub files available in the library on the yahoo groups link in the first post, similar to what Andy has posted.

Is there any way to adjust a component value (eg. potentiometer) while the simulation is running and see it automatically update the sim results? Seems like an obvious feature missing, and I'm assuming is a noob question but I can't find an answer.
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
LTSpice and subcircuits millwood Solid State 12 27th April 2011 09:03 AM
Using LTSpice gaetan8888 Solid State 6 19th July 2007 12:33 AM
UcD / LTSpice help fokker Class D 94 1st October 2006 01:12 PM
Things important to be said..helped by Mr. John Mateus to express things. destroyer X Solid State 22 31st July 2006 07:21 PM
Ltspice.... mikeks Solid State 10 13th June 2004 08:10 PM


New To Site? Need Help?

All times are GMT. The time now is 11:57 AM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright 1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2