## Bode Plot Java Applet

This applet accepts transfer function coefficients as input, and calculates magnitude and phase response over a range of frequencies. A new version is now available which lets you set the start frequency and choose units for the horizontal axis.

=== Oops, your browser isn't Java-enabled. ===

### Bode Plot Applet Features

• Variable number of numerator and denominator coefficients, for analyzing filters of varying order. Coefficients may be separated by spaces or commas.
• Two or more polynomials of varying order can be multiplied together, for analyzing cascaded filter sections. Enclose each polynomial in parentheses or square brackets.
• Polynomial coefficients can be pasted from other applications. Complex results can be copied to other applications.
• Vertical axis scales automatically to put peak gain near the top. Horizontal axis normalized to a center frequency of 1 radian/second.
• Write once, run anywhere capability allows the applet to run on any platform supported with a Java runtime environment. Can be run over the web, or locally in a browser, appletviewer, or from the command line.
• Open source is here for you to download. Please remember that only you can determine if this applet is usable in your application, and only you know if you are qualified to make modifications.

### Using the Bode Plot Applet

The Bode Plot or Bode Diagram 1 is a convenient way to represent the steady state frequency response of an electronic filter. Here, amplitude response is plotted in blue with logarithmic frequency in the horizontal axis over a 2 decade range, against a logarithmic scale of 5 dB per division in the vertical axis. Phase response is plotted in magenta against a linear scale of π/4 radians, or 45° per division in the vertical axis. Follow these steps to use the applet:

1. Obtain the transfer function of the filter. This is the ratio of the Laplace transforms of the output signal over the input signal. A design example is given below.
2. Type or paste the numerator coefficients into the first text field. These can be any mix of integer and real numbers, separated by commas or spaces. Coefficients start with the highest order on the left, and continue to zeroth order on the right. You can leave off leading zero-value coefficients, but must include any zero-value coefficients after the first non-zero one. Negative values are allowed, as would be used in all-pass or phase shift filters.
3. Type or paste the denominator coefficients into the second text field, formatted the same as the numerator. For practical filters, denominator coefficients should always be non-zero and positive.
4. Click on the [Calculate Plot] button to see the response with the coefficients you have entered. Modify the coefficients and click on [Calculate Plot] again to see how the response changes.

### Design Example

To illustrate how to use the Bode Plot Applet, I've taken an example from Don Lancaster2. The design is an octave-wide fourth order bandpass filter covering the range from 200 Hz to 400 Hz. The filter is implemented as two cascaded second order bandpass filter sections with their center frequencies shifted up and down from the nominal center frequency of 277 Hz by a ratio of 1.35:1. Each of the two sections is a multiple feedback filter built around an opamp as shown in the schematic diagram. Resistor and capacitor values for each section are shown in the table. BPF R1 R2 C1 C2
First
Section
4.4 kOhms 44 kOhms .056 uF .056 uF
Second
Section
2.4 kOhms 24 kOhms .056 uF .056 uF

Mr. Lancaster gives the transfer function for each section as: Plug in the actual values to obtain the transfer function coefficients for each filter section. Before plotting the frequency response however, we need to normalize the coefficients to a center frequency of 1 radian/second. This is done by multiplying S by (2π fc) wherever it appears3. The nominal center frequency of the finished filter is 277 Hz, so we multiply S by 1740.44. This finally gives us the coefficients we need to plot the normalized frequency response of the complete filter. Copy these numbers into the applet's Numerator and Denominator fields and click the [Calculate Plot] button to see the result.

First Section Second Section Both Sections -2.33184, 0 -4.27505, 0 (-2.33184, 0)(-4.27505, 0) 1, .466369, .54375 1, .855013, 1.8276 (1, .466369, .54375)(1, .855013, 1.8276)

### Bandpass Filter Breadboard Results

To verify the accuracy of the Bode Plot Applet, I gathered a bunch of components and plugged them into my breadboard with a pair of TL082 dual opamps. I used parallel and series combinations to get close to the specified resistance and capacitance values, but was still 5% to 10% off on center frequency for each second order section. I then reduced the values of R1 and put trimmer potentiometers in series. Since the characteristics of each filter section rely in part on the source impedance seen by the section, I made sure to drive each filter section from another TL082 output. To accomplish this, I connected one opamp as a unity gain follower to serve as an input buffer. Using the trimmers, I set the center frequency of each filter section to its nominal value, 205 Hz in the first section and 375 Hz in the second. You could do this by peaking the amplitude response at the center frequency, but it is much easier to connect the input and output of the filter section you are trimming to the X and Y inputs of an oscilloscope to obtain a Lissajous pattern. Then just trim the filter for exactly 180° phase shift (ellipse closes to a single diagonal line) when driven at the desired center frequency.

After this simple tuneup, I measured the overall amplitude response of the completed filter and plotted the results in MS Excel. The following screen shot from Excel shows the measured points as blue diamonds. For comparison, I pasted the predicted values from the Bode Plot Applet into Excel, shown below in magenta. As you can see, the agreement between predicted gain and actual measured results is almost perfect. ### References

1. C. Phillips and R. Harbor, Feedback Control Systems, 3rd ed. Englewood Cliffs: Prentice-Hall, Inc. 1996.
2. Don Lancaster, Active Filter Cookbook, 2nd ed. Thatcher: Synergetics Press, 1995.
3. Kerry Lacanette, Application Note #779, National Semiconductor, 1991.
4. David Flanagan, Java Examples In a Nutshell, Sebastopol: O'Reilly & Associates, Inc. 1997.
5. Lawrence Rodrigues, Building Imaging Applications with Java Technology, Boston: Addison-Wesley, 2001.
6. D. Lyon and H. Rao, Java Digital Signal Processing, New York: Henry Holt and Company, Inc. 1998.
7. Information about the Java SDK is available at Sun's Java Home Page
8. The Java SDK for Macintosh is maintained by Apple Computer, Inc. Last updated 6/2/2015 by 