Op-Amp Oscillator Design with the HP-67 Programmable Calculator
This is my second HP-67 program, which I wrote to help me with the design of a
project that is currently (Nov. 2008) in the planning stages.
This program
selects component values for an op-amp based relaxation oscillator, given the
desired frequency and output wave form peak voltages. It can also solve the
inverse problem, finding the frequency and voltages resulting from given
component values. The following is the schematic for such an oscillator:
|
|
|
R1 and R2 form a voltage divider, with an additional input from the op-amp
output through R3. When the op-amp output is at a high-level, the voltage at
the non-inverting input of the op-amp is higher than when the op-amp output is
at a low level. When the output is high, capacitor C1 also charges through R4
until the voltage across it (which is applied to the op-amp's inverting input)
reaches the voltage at the non-inverting input. At that time, the op-amp output
goes low, and the capacitor begins to discharge through R4 until the voltage
once again reaches the (now lower) voltage at the non-inverting input.
If one were to monitor the op-amp output, it would alternate between a high
level (VOH, generally close to positive supply voltage, VPOS) and a low
level (VOL, generally close to negative supply voltage, VNEG). The duty
cycle of this square wave depends on the relative time it takes to charge and
discharge C1 through R4, which in turn depends on the low (VPL) and high
(VPH) peak voltages that C1 cycles between (which in turn depend on R1, R2,
and R3). Monitoring the voltage across C1 shows a triangle wave.
With this program, you can select components for such an oscillator to
achieve a desired frequency, and if it matters to your design, desired low
and high triangle peaks (VPL and VPH). After the program computes the
required component values, you can modify these values to match those actually
available in the real world. The program will then compute what effect these
changes have on the frequency and triangle peak voltages.
The following equations describe the operation of the oscillator:
You will first need to choose values for C1 and R1 arbitrarily, since for any
desired frequency and given C1 and R1, it will be possible to find (possibly
impractical) values for R2, R3, and R4. A good choice for R1 is generally
somewhere around 10kΩ to 100kΩ. The choice of C1 depends on the
frequency, and a readily available value near (50/f) μF is usually
suitable.
Using the Program
First type in the program and save it, or read it from a previously recorded
magnetic card. The card should be labelled as follows:
|
OP-AMP OSCILLATOR DESIGN
|
|
|
VNEG,VPOS
|
VOL,VOH
|
C1
|
R1
|
VPL,VPH
|
|
|
f
|
→%DC
|
→R2→
|
→R3→
|
→R4→
|
Forward Solution: Finding R2, R3, and R4
Consider the following example: It is desired to find values for R2, R3, and
R4 to produce an oscillator of about 2500Hz, with a triangle waveform that
oscillates between 1.2V and 1.4V. The op-amp is to operate from a single 5V
supply, and the op-amp's output is capable of a low of 0.3V and a high of 5V.
Use a 0.022μF capacitor for C1, and a 22kΩ resistor for R1.
Follow these steps to solve the problem:
| Description | Keystrokes | Display |
h ENG DSP 2 | 0.00 00 |
0 ENTER 5 f a | 0.00 00 |
0.3 ENTER 5 f b | 300. -03 |
0.022 EEx CHS 6 f c | 22.0 -09 |
22 EEx 3 f d | 22.0 03 |
1.2 ENTER 1.4 f e | 1.20 00 |
2500 A | 2.50 03 |
| B | 788. -03 |
| C | 7.26 03 |
| D | 123. 03 |
| E | 71.4 03 |
Notes
Specifying VOL and VOH is optional. If this step is omitted, the program
will assume the op-amp output can span the entire negative and positive supply
voltage range.
If the triangle wave form peak voltages don't matter to your design (because
you're only using the square wave output), you don't need to specify them.
The program will assume peak voltages ranging from VOL+(VOH-VOL)/3
to VOH-(VOH-VOL)/3, which is the middle third of the op-amp output
voltage range. This also happens to result in a 50% duty cycle.
To achive a low duty cycle square wave, choose VPL and VPH close to the
bottom of the op-amp output range (VOL). Likewise for a high duty cycle,
choose VPL and VPH close to the top of the range (VOH).
For the most stable oscillation frequency, choose VPL and VPH far away from
the op-amp output voltage limits, VOL and VOH (to keep the triangle edges
steep), and far away from each other (to keep any variations a small percentage
of the overall voltage swing). Since these two goals are at odds with one
another, a good compromise is to select VPL and VPH to span the middle
of the VOL to VOH range (which is the default if VPL and VPH aren't
specified).
Reverse Solution: Finding VPL, VPH, Frequency, and Duty Cycle
After finding the above ideal solution, we'll want to use real-world component
values to build the physical circuit. The closest E-24 resistor values to those
computed are: R2 = 7.5kΩ, R3 = 120kΩ, and
R4 = 68kΩ. What effect will using these values have on the frequency,
VPL, and VPH?
These are the steps to find out:
| Description | Keystrokes | Display |
7.5 EEx 3 C | 7.50 03 |
120 EEx 3 D | 120. 03 |
68 EEx 3 E | 68.0 03 |
| f e | 1.23 00 |
| R/S | 1.44 00 |
| A | 2.57 03 |
Other Uses for this Program
The oscillator design facilitated by this program consists of two parts, a
comparator with hysteresis, and a capacitor being charged and discharged by the
comparator output through a resistor. The equations describing the comparator
aspect of the circuit are not affected by those describing the behaviour of the
resistor-capacitor network, so the program can be used to design such
comparators for other applications.
Here is a brief example of using this program to design a comparator: Assume
we want to design a comparator operating from a +/-12V supply, whose output
goes low when the voltage exceeds +2V, and goes high when the voltage
subsequently drops below -3V. Assume the op amp used has an output that can
swing to within 0.7V of the voltage limits. Use a 10kΩ resistor for R1.
Follow these steps to solve the problem:
| Description | Keystrokes | Display |
12 CHS ENTER 12 f a | -12.0 00 |
11.3 CHS ENTER 11.3 f b | -11.3 00 |
10 EEx 3 f d | 10.0 03 |
3 CHS ENTER 2 f e | -3.00 00 |
| C | 8.98 03 |
| D | 16.7 03 |
Now select the closest real-world resistor values for R2 and R3 and determine
how that affects the switching points:
| Description | Keystrokes | Display |
9.1 EEx 3 C | 9.10 03 |
16 EEx 3 D | 16.0 03 |
| f e | -3.03 00 |
| R/S | 2.16 00 |
Additional Real-World Considerations
The mathematical model used as the basis of this program assumes that VOL and
VOH are constant, regardless of load. For sufficiently low current, this is
close enough to true to be ignored. Thus it is important to use fairly high
resistor values for R3 and R4 (10kΩ or bigger to be on the safe side). If
the value of R3 computed by the program is too low, start with a
higher value for R1. Similarly, if the value computed for R4 is too
low, use a lower value for C1.
Some op-amps have an open-collector output. This means that when the output
is low, it is pulled low through an output transistor, but when the output
is high, it is simply floating. Thus, a pull-up resistor is needed to pull
the output high. The chosen pull-up resistor must meet two requirements:
-
It must have a high-enough resistance that the output transistor can overcome
the pull-up current when the output is low.
-
It must have a low-enough resistance that it is not so large a percentage
of the resistance of R3 or R4 that it throws off the solution.
For the LM339 comparator that I often use in my designs, I've found that a
1kΩ resistor works well, together with R3 and R4 values about 100 times
as much. As described above, use a higher value for R1 to achieve a higher
value for R3, and use a lower value for C1 to achieve a higher R4.
Program Listing
| Line | Instruction | Comments |
| 001♦ | LBL a |
| 002 | STO 6 |
| 003 | x↔y |
| 004 | STO 5 |
| 005 | x↔y |
| 006♦ | LBL b |
| 007 | CF 3 |
| 008 | STO 8 |
| 009 | x↔y |
| 010 | STO 7 |
| 011 | − |
| 012 | 3 |
| 013 | ÷ |
| 014 | RCL 7 |
| 015 | x↔y |
| 016 | + |
| 017 | STO A |
| 018 | RCL 8 |
| 019 | LSTx |
| 020 | − |
| 021 | STO B |
| 022 | CF 1 |
| 023 | RCL 8 |
| 024 | RCL 7 |
| 025 | RTN |
| 026♦ | LBL c |
| 027 | CF 3 |
| 028 | STO C |
| 029 | RTN |
| 030♦ | LBL d |
| 031 | CF 3 |
| 032 | STO 1 |
| 033 | RTN |
| 034♦ | LBL e |
| 035 | F? 3 |
| 036 | GTO 9 |
| 037♦ | LBL 1 |
| 038 | F? 1 |
| 039 | GTO 8 |
| 040 | RCL B |
| 041 | RCL A |
| 042 | RTN |
| 043 | RCL B |
| 044 | RTN |
| 045♦ | LBL 8 |
| 046 | RCL 1 |
| 047 | RCL 3 |
| 048 | × |
| 049 | STO D |
| 050 | RCL 2 |
| 051 | RCL 3 |
| 052 | × |
| 053 | ST I |
| 054 | + |
| 055 | RCL 2 |
| 056 | RCL 1 |
| 057 | × |
| 058 | STO 9 |
| 059 | + |
| 060 | 1/x |
| 061 | STO E |
| 062 | RCL 5 |
| 063 | × |
| 064 | RCL D |
| 065 | × |
| 066 | RCL E |
| 067 | RCL 6 |
| 068 | × |
| 069 | RC I |
| 070 | × |
| 071 | + |
| 072 | STO D |
| 073 | RCL E |
| 074 | RCL 9 |
| 075 | × |
| 076 | STO E |
| 077 | RCL 7 |
| 078 | × |
| 079 | + |
| 080 | RCL E |
| 081 | RCL 8 |
| 082 | × |
| 083 | RCL D |
| 084 | + |
| 085♦ | LBL 9 |
| 086 | STO B |
| 087 | x↔y |
| 088 | STO A |
| 089 | CF 1 |
| 090 | RTN |
| 091 | RCL B |
| 092 | RTN |
| 093♦ | LBL B |
| 094 | CF 3 |
| 095 | GSB 7 |
| 096 | LSTx |
| 097 | x↔y |
| 098 | ÷ |
| 099 | RTN |
| 100♦ | LBL 7 |
| 101 | GSB 1 |
| 102 | RCL 8 |
| 103 | − |
| 104 | RCL B |
| 105 | RCL 8 |
| 106 | − |
| 107 | ÷ |
| 108 | LN |
| 109 | RCL A |
| 110 | RCL 7 |
| 111 | − |
| 112 | RCL B |
| 113 | RCL 7 |
| 114 | − |
| 115 | ÷ |
| 116 | LN |
| 117 | + |
| 118 | RTN |
| 119♦ | LBL A |
| 120 | F? 3 |
| 121 | GTO 0 |
| 122 | GSB 7 |
| 123 | RCL 4 |
| 124 | × |
| 125 | RCL C |
| 126 | × |
| 127 | 1/x |
| 128♦ | LBL 0 |
| 129 | STO 0 |
| 130 | RTN |
| 131♦ | LBL C |
| 132 | F? 3 |
| 133 | GTO 2 |
| 134 | GSB 5 |
| 135 | RCL 6 |
| 136 | GSB 6 |
| 137 | ÷ |
| 138 | STO 2 |
| 139 | RTN |
| 140♦ | LBL 2 |
| 141 | STO 2 |
| 142 | SF 1 |
| 143 | RTN |
| 144♦ | LBL D |
| 145 | F? 3 |
| 146 | GTO 3 |
| 147 | GSB 5 |
| 148 | RCL 6 |
| 149 | RCL 5 |
| 150 | − |
| 151 | ÷ |
| 152 | RCL A |
| 153 | RCL B |
| 154 | − |
| 155 | ÷ |
| 156 | STO 3 |
| 157 | RTN |
| 158♦ | LBL 3 |
| 159 | STO 3 |
| 160 | SF 1 |
| 161 | RTN |
| 162♦ | LBL E |
| 163 | F? 3 |
| 164 | GTO 4 |
| 165 | GSB 7 |
| 166 | RCL 0 |
| 167 | × |
| 168 | RCL C |
| 169 | × |
| 170 | 1/x |
| 171♦ | LBL 4 |
| 172 | STO 4 |
| 173 | RTN |
| 174♦ | LBL 5 |
| 175 | GSB 1 |
| 176 | RCL 5 |
| 177 | GSB 6 |
| 178 | RCL 1 |
| 179 | × |
| 180 | CHS |
| 181 | RTN |
| 182♦ | LBL 6 |
| 183 | RCL 7 |
| 184 | RCL A |
| 185 | − |
| 186 | RCL 8 |
| 187 | − |
| 188 | RCL B |
| 189 | + |
| 190 | × |
| 191 | RCL 8 |
| 192 | RCL A |
| 193 | × |
| 194 | + |
| 195 | RCL B |
| 196 | RCL 7 |
| 197 | × |
| 198 | − |
| 199 | RTN |
Registers and Flags
| Register | Use |
| 0 |
| 1,2,3,4 |
| 5,6 |
| 7,8 |
| A,B |
| C |
| 9,D,E,I |
Revision History
2008-Nov-26 — Initial release.
2009-May-25 — Fixed a bug that caused an error if one did not specify
VPL and VPH. Changing R1 no longer forces VPL and VPH to be
recomputed.
2009-Jun-11 — Fixed a bug where the data entry flag sometimes wasn't
cleared even though there had been no data entry.
Other HP Calculator Programs
I've written programs for many of the HP calculators calculators in my
collection. You may be interested in some of these:
- HP 35s
- HP-41C/CV/CX
- HP-67
|
Buy Stefan a coffee!
If you've found this article
useful, consider
leaving a donation
to help support
stefanv.com
|
|
|
Disclaimer:
Although every effort has been made to ensure accuracy and
reliability, the information on this web page is presented without
warranty of any kind, and Stefan Vorkoetter assumes no liability for direct or
consequential damages caused by its use.
It is up to you, the reader, to determine the suitability of, and
assume responsibility for, the use of this information.
Copyright:
All materials on this web site, including the text, images, and HTML
mark-up, are Copyright © 2009 by Stefan Vorkoetter unless
otherwise noted. All rights reserved. Unauthorized duplication
prohibited. You may link to this site or pages within it, but
you may not link directly to images on this site, and you may
not copy any material from this site to another web site or
other publication without express written permission. You may make
copies for your own personal use.
|
|