Hello again, SEDers.
(I hate to "expose my ignorance" like this, but...)
I have a very-occasional need to design an analog filter, given a small set of data points (e.g. ratio of input and output voltages for a half-dozen frequencies).
I am looking for design-methods or procedures, and/or software tool(s), that will facilitate or automate the design process.
I am not really even sure what the "standard" design procedure might be, in this case. Currently, I use what I can remember from my basic EE courses and try to roughly approximate in my mind what combination of lowpass and highpass RC sections might be able to be combined in series and/or parallel, to come close to the desired transfer function, and then calculate very-approximate cutoff frequencies and amplitude combinations, and then draw a schematic in LTSPice and tweak the component values and architecture until the response matches the data points. That last step can be quite tedious, which is mostly what has driven me to make this request for help.
For example, below are the data points for a filter that I am currently working on (which is for a filter that will help produce the correct current levels (1 mA to 0.125 mA) versus frequency, for a current-controlled resistance that will cause an audio-frequency ramp generator to give a contant output-amplitude versus frequency):
60 Hz: 1.00v, 200 Hz: 1.20v, 750 Hz: 0.660v, 4.5kHz: 0.297v, 12 kHz: 0.178v, 22kHz: 0.125v.I need to have the response at the data points above be accurate within
1%, but don't care what the response is like in between and outside the data points' frequencies. [So, I realize that, for the six data points above, I could just use six separate bandpass filters and sum their outputs. But I think it "should" usually be able to be made more parts-count-efficient (And board space is limited.). For the example dataset above, for example, I came up with two parallel/summed sections, each with three cascaded simple RC sections, i.e. a total of six caps and six resistors, plus four opamps (for i/o buffering of each parallel cascade), and one opamp and four resistors for summing, and a couple of resistors for a voltage divider for the output of one of the cascades (which could all change, somewhat, if I convert it to an active-filter architecture), which is not yet optimized for component count or performance, etc, etc.]Actually, I can usually come up with the "rough approximation" for the filter architecture and component values fairly quickly/easily. The tedium usually lies in tweaking the component values, and possibly the architecture, to get the response down from, say, 5% or 10% accuracy, to 1% or less at every data point.
Since I currently use LTSpice for that "tweaking", I'm also looking into being able to use LTSpice's features to automate that portion of the process. I'm hoping that there is some good way to have it vary the component values and stop when the response matches at the given data points. (Anyone here know about that? I'm also posting a question about that to the LT-Spice discussion group at
If anyone cares to offer any ideas, methods, procedures, advice, software titles, websites, references, et al, I will truly appreciate it.
Regards,
Tom Gootee