diff options
Diffstat (limited to 'OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb')
-rw-r--r-- | OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb | 1036 |
1 files changed, 1036 insertions, 0 deletions
diff --git a/OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb b/OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb new file mode 100644 index 00000000..d79d5385 --- /dev/null +++ b/OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Chapter 4: The Practical Op-Amp" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.1" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resistance Rb is 10.0 kilo ohms\n", + "Resistance Ra is 4.0 kilo ohms\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.1\n", + "#Design a Compensating Network for the opamp LM307.\n", + "#The opamp uses +10 V and -10 V supply voltages.\n", + "\n", + "#Variable declaration\n", + "V=10 #Supply voltage\n", + "Vio=10*10**-3 #Input offset voltage\n", + "Rc=10 #Assumption\n", + "\n", + "#calculation\n", + "Rb=(V/Vio)*Rc\n", + "Ra=Rb/2.5 #Since Rb>Rmax,let us choose Rb=10*Rmax where Rmax=Ra/4\n", + "\n", + "#Result\n", + "print \"Resistance Rb is\",Rb/10**3,\"kilo ohms\"\n", + "print \"Resistance Ra is \",Ra/10**3,\"kilo ohms\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.2" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max output offset voltage is 110.0 milli Volts\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.2\n", + "#The opamp in the circuit of figure 4-13 is the LM307 with Vio=10 mV dc maximum.\n", + "#What is the maximum possible output offset voltage, Voo, caused by\n", + "#the input offset voltage Vio?\n", + "\n", + "#Variable declaration\n", + "R1=1*10**3\n", + "Rf=10*10**3\n", + "Vio=10*10**-3 #Input offset voltage\n", + "\n", + "#calculation\n", + "Aoo=1+Rf/R1 #To find max value of Voo,we reduce input voltage vin to zero.\n", + "Voo=Aoo*Vio #Max output offset voltage\n", + "\n", + "#Result\n", + "print \"Max output offset voltage is\",Voo*10**3,\"milli Volts\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.3" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Closed loop gain of non-inverting amplifier is 11.0\n" + ] + } + ], + "source": [ + "#Example 4.3\n", + "#Design an input offset voltage-compensating network for the circuit in\n", + "#figure 4-13\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "R1=1*10**3\n", + "Rf=10*10**3\n", + "Rc=10\n", + "\n", + "\n", + "#calculation\n", + "Af=1+Rf/(R1+Rc) #Closed loop gain of non-inverting amplifier\n", + "\n", + "#Result\n", + "print \"Closed loop gain of non-inverting amplifier is\",round(Af)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.4" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max output offset voltage due to Vio is 606.0 milli Volts\n", + "Max output offset voltage due to Ib is 23.5 milli Volts\n", + "Parallel combination of R1 and Rf,i.e ROM is 465.35 Ohms\n" + ] + } + ], + "source": [ + "#Example 4.4\n", + "#a) For the inverting amplifier of Figure 4-19, determine the maximum possible\n", + "#output offset voltage due to input offset voltage Vio and input bias current Ib\n", + "#The opamp is a type 741.\n", + "#b) What value of ROM is needed to reduce the effect of input bias current Ib.\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "R1=470\n", + "Rf=47*10**3\n", + "Vio=6*10**-3 #Input offset voltage\n", + "Ib=500*10**-9 #Input bias current\n", + "Vs=15 #Supply voltage\n", + "\n", + "#calculation\n", + "Voo=(1+Rf/R1)*Vio #Max output offset voltage due to input offset voltage Vio\n", + "VoIb=Rf*Ib #Max output offset voltage due to input offset voltage Ib\n", + "ROM=R1*Rf/(R1+Rf) #Parallel combination of R1 and Rf\n", + "\n", + "#Result\n", + "print \"Max output offset voltage due to Vio is\",round(Voo*10**3),\"milli Volts\"\n", + "print \"Max output offset voltage due to Ib is \",round(VoIb*10**3,1),\"milli Volts\"\n", + "print \"Parallel combination of R1 and Rf,i.e ROM is \",round(ROM,2),\"Ohms\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.5" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max output offset voltage due to Vio is 606.0 milli Volts\n", + "Max output offset voltage due to Ib is 50.0 milli Volts\n", + "Parallel combination of R1 and Rf,i.e ROM is 990.1 Ohms\n" + ] + } + ], + "source": [ + "#Example 4.5\n", + "#Repeat example 4.4 if R1 replaced by 1 kilo Ohm and Rf replaced by 100 kilo Ohm\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Vio=6*10**-3 #Input offset voltage\n", + "Ib=500*10**-9 #Input bias current\n", + "Vs=15 #Supply voltage\n", + "\n", + "#calculation\n", + "Voo=(1+Rf/R1)*Vio #Max output offset voltage due to input offset voltage Vio\n", + "VoIb=Rf*Ib #Max output offset voltage due to input offset voltage Ib\n", + "ROM=R1*Rf/(R1+Rf) #Parallel combination of R1 and Rf\n", + "\n", + "#Result\n", + "print \"Max output offset voltage due to Vio is\",round(Voo*10**3),\"milli Volts\"\n", + "print \"Max output offset voltage due to Ib is \",round(VoIb*10**3,1),\"milli Volts\"\n", + "print \"Parallel combination of R1 and Rf,i.e ROM is \",round(ROM,2),\"Ohms\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.6" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max output offset voltage due to Ib is 20.0 milli Volts\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.6\n", + "#For the inverting amplifier in figure 4-21, determine the maximum output offset\n", + "#voltage VoIio caused by the input offset current Iio.\n", + "#The opamp is a type 741\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "Iio=200*10**-9 #Input offset current\n", + "Rf=100*10**3\n", + "\n", + "#calculation\n", + "VoIio=Rf*Iio #Max output offset voltage due to input offset voltage Ib\n", + "\n", + "#Result\n", + "print \"Max output offset voltage due to Ib is \",round(VoIio*10**3),\"milli Volts\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.7" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max output offset voltage due to Ib is 85.0 milli Volts\n", + "Max output offset voltage due to Iio is 83.0 milli Volts\n" + ] + } + ], + "source": [ + "#Example 4.7\n", + "#Compute the maximum possible output offset voltages in the amplifier circuits\n", + "#shown in the figure 4-22. The opamp is MC1536 with the following specifications.\n", + "#Vio=7.5 mV maximum, Iio=50 nA maximum,Ib=250 nA maximum at TA=25 degree celcius\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "R1=1*10**3\n", + "Rf=10*10**3\n", + "Vio=7.5*10**-3 #Max input offset voltage\n", + "Iio=50*10**-9 #Max input offset current\n", + "Ib=250*10**-9 #Max input bias current\n", + "\n", + "#calculation\n", + "# For figure 4.22(a)\n", + "VooT1=(1+Rf/R1)*Vio+(Rf*Ib) #Since the current generated output offset voltage is due to input bias current Ib\n", + "# For figure 4.22(b)\n", + "VooT2=(1+Rf/R1)*Vio+(Rf*Iio) #Since the current generated output offset voltage is due to input offset current Ib\n", + "\n", + "#Result\n", + "print \"Max output offset voltage due to Ib is \",VooT1*10**3,\"milli Volts\"\n", + "print \"Max output offset voltage due to Iio is \",VooT2*10**3,\"milli Volts\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.8_a" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 30.6 mV\n", + "Output voltage 1 is -69.4 mV\n", + "Output voltage 2 is -130.6 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.8_a\n", + "#Refer to the inverting amplifier in figure 4-24. The opamp is the LM307 with\n", + "#the following specifications.\n", + "#delta_Vio/delta_T =30 microVolt/degree celcius maximum\n", + "#delta_Iio/delta_T= 300 pA/degree celcius\n", + "#Vs=15 V, R1=1 Kilo Ohm, Rf=100 Kilo Ohm,Rl=10 Kilo Ohm\n", + "#Assume that the amplifier is nulled at 25 degree celcius. Calculate the value\n", + "#of the error voltage Ev and output voltage at 35 degree celcius if\n", + "#a) Vin= 1 mV dc\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=1*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=35-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=-(Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=-(Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",round(Ev*10**3,1),\"mV\"\n", + "print \"Output voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Output voltage 2 is \",round(Vo2*10**3,1),\"mV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.8_b" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 30.6 mV\n", + "Output voltage 1 is -969.4 mV\n", + "Output voltage 2 is -1030.6 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.8_b\n", + "#Refer to the inverting amplifier in figure 4-24. The opamp is the LM307 with\n", + "#the following specifications.\n", + "#delta_Vio/delta_T =30 microVolt/degree celcius maximum\n", + "#delta_Iio/delta_T= 300 pA/degree celcius\n", + "#Vs=15 V, R1=1 Kilo Ohm, Rf=100 Kilo Ohm,Rl=10 Kilo Ohm\n", + "#Assume that the amplifier is nulled at 25 degree celcius. Calculate the value\n", + "#of the error voltage Ev and output voltage at 35 degree celcius if\n", + "#a) Vin= 10 mV dc\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=10*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=35-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=-(Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=-(Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",round(Ev*10**3,1),\"mV\"\n", + "print \"Output voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Output voltage 2 is \",round(Vo2*10**3,1),\"mV\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.8_a" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 0.0306 Volts\n", + "Output voltage 1 is -0.0694 Volts\n", + "Output voltage 2 is -0.1306 Volts\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.8_a\n", + "#Design of Compensating Network\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=1*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=35-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=-(Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=-(Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",Ev,\"Volts\"\n", + "print \"Output voltage 1 is \",Vo1,\"Volts\"\n", + "print \"Output voltage 2 is \",Vo2,\"Volts\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.9_a" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 91.8 mV\n", + "Output voltage 1 is -908.2 mV\n", + "Output voltage 2 is -1091.8 mV\n" + ] + } + ], + "source": [ + "#Example 4.9_a\n", + "#Refer again to the amplifier circuit in figure 4-24.Use the same circuit\n", + "#specifications that are given in example 4-8. Assume that the amplifier is\n", + "#nulled at 25 degree celcius. If Vin is a 10 mV peak sine wave at 1 kilo Hz\n", + "#Calculate Ev and Vo at 55 degree celcius.\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=10*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=55-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=-(Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=-(Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",round(Ev*10**3,1),\"mV\"\n", + "print \"Output voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Output voltage 2 is \",round(Vo2*10**3,1),\"mV\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.9_b" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "<matplotlib.figure.Figure at 0x7f6982087550>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#Example 4.9_b\n", + "#Refer again to the amplifier circuit in figure 4-24.Use the same circuit\n", + "#specifications that are given in example 4-8. Assume that the amplifier is\n", + "#nulled at 25 degree celcius. If Vin is a 10 mV peak sine wave at 1 kilo Hz\n", + "#Draw the output voltage waveform at 55 degree celcius.\n", + "\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "%matplotlib inline\n", + "\n", + "from matplotlib.pyplot import ylabel, xlabel, title, plot, show\n", + "import matplotlib.pyplot as plt\n", + "import math\n", + "import numpy as np\n", + "\n", + "\n", + "\n", + "#calculation\n", + "x=np.arange(0,2*math.pi,0.1) #x coordinate\n", + "y=-1000*np.sin(x)+91.8 #y coordinate\n", + "\n", + "#result\n", + "plt.plot(x,y)\n", + "plt.ylabel('voltage')\n", + "plt.xlabel('time')\n", + "plt.title(r'$output waveform$')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.10_a" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 30.6 mV\n", + "Output voltage 1 is 131.6 mV\n", + "Output voltage 2 is 70.4 mV\n" + ] + } + ], + "source": [ + "#Example 4.10_a\n", + "#Repeat example 4-8 for the noniverting amplifier shown in figure 4-26.\n", + "#Assume that Rc<<R1.\n", + "\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=1*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=35-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=(1+Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=(1+Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",round(Ev*10**3,1),\"mV\"\n", + "print \"Output voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Output voltage 2 is \",round(Vo2*10**3,1),\"mV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.10_b" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error voltage is 30.6 mV\n", + "Output voltage 1 is 1040.6 mV\n", + "Output voltage 2 is 979.4 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.10_b\n", + "#Repeat example 4-8 for the noniverting amplifier shown in figure 4-26.\n", + "#Assume that Rc<<R1.\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=30*10**-6 #Change in input offset voltage\n", + "delta_T=1 #Unit change in temperature\n", + "delta_Iio=(300*10**-12) #Change in input offset current\n", + "Vs=15\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "Vin=10*10**-3 #Input voltage\n", + "k=25 #Amplifier is nulled at 25 deg\n", + "T=35-k #Change in temperature\n", + "\n", + "#calculation\n", + "Ev=(1+Rf/R1)*(delta_Vio/delta_T)*T + Rf*(delta_Iio/delta_T)*T #Error voltage\n", + "Vo1=(1+Rf/R1)*Vin+Ev #Output voltage\n", + "Vo2=(1+Rf/R1)*Vin-Ev #Output voltage\n", + "\n", + "#Result\n", + "print \"Error voltage is \",round(Ev*10**3,1),\"mV\"\n", + "print \"Output voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Output voltage 2 is \",round(Vo2*10**3,1),\"mV\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.11_a" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Change in Output offset voltage is 3.2 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.11_a\n", + "#The amplifier in figure 4-28(b) is nulled when the low dc supply voltage is\n", + "#20 mV.\n", + "#Because of poor regulation,low dc voltage varies with time from 18 V to 22 V.\n", + "#a) Determine the change in the output offset voltage caused by the change in\n", + "#supply voltages\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=15.85*10**-6 #Change in input offset voltage\n", + "delta_V=1 #Unit change in supply voltage\n", + "V=2 #Change in supply voltage\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "\n", + "#calculation\n", + "delta_Voo=(1+Rf/R1)*(delta_Vio/delta_V)*V #Change in output offset voltage\n", + " \n", + "\n", + "#Result\n", + "print \"Change in Output offset voltage is \",round(delta_Voo*10**3,2),\"mV\"\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.11_b" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Output offset voltage 1 is -996.8 mV\n", + "Total Output offset voltage 2 is -1003.2 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.11_b\n", + "#The amplifier in figure 4-28(b) is nulled when the low dc supply voltage is\n", + "#20 mV.\n", + "#Because of poor regulation,low dc voltage varies with time from 18 V to 22 V.\n", + "#b) Determine the output voltage Vo if Vin=10 mV dc. The opamp is the LM307\n", + "#with SVRR=96 dB.\n", + "\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=15.85*10**-6 #Change in input offset voltage\n", + "delta_V=1 #Unit change in supply voltage\n", + "V=2 #Change in supply voltage\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Vin=10*10**-3\n", + "\n", + "#calculation\n", + "delta_Voo=(1+Rf/R1)*(delta_Vio/delta_V)*V #Output offset voltage\n", + "Vo1=(-Rf/R1)*Vin+delta_Voo #Total output offset voltage 1\n", + "Vo2=(-Rf/R1)*Vin-delta_Voo #Total output offset voltage 2\n", + " \n", + "\n", + "#Result\n", + "print \"Total Output offset voltage 1 is \",round(Vo1*10**3,1),\"mV\"\n", + "print \"Total Output offset voltage 2 is \",round(Vo2*10**3,1),\"mV\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.11_b" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Output offset voltage 1 is -0.9968 Volts\n", + "Total Output offset voltage 2 is -1.0032 Volts\n" + ] + } + ], + "source": [ + "#Example 4.11_b\n", + "#Design of Compensating Network\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=15.85*10**-6 #Change in input offset voltage\n", + "delta_V=1 #Unit change in supply voltage\n", + "V=2 #Change in supply voltage\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Vin=10*10**-3\n", + "\n", + "#calculation\n", + "delta_Voo=(1+Rf/R1)*(delta_Vio/delta_V)*V #Output offset voltage\n", + "Vo1=(-Rf/R1)*Vin+delta_Voo #Total output offset voltage 1\n", + "Vo2=(-Rf/R1)*Vin-delta_Voo #Total output offset voltage 2\n", + " \n", + "\n", + "#Result\n", + "print \"Total Output offset voltage 1 is \",round(Vo1,4),\"Volts\"\n", + "print \"Total Output offset voltage 2 is \",round(Vo2,4),\"Volts\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.12" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Change in Output offset voltage 1 is 16.0 uV rms\n" + ] + } + ], + "source": [ + "#Example 4.12\n", + "#Referring to figure 4-28(b), suppose that the circuit is nulled when the voltage\n", + "#across terminals +Vcc and -Vee measures 20 V dc. Also suppose that because of\n", + "#poor filtering, 10 mV rms ac ripple is measured across terminals +Vcc and -Vee.\n", + "#While the input signal Vin=0V, how much ripple voltage can we expect at the\n", + "#output if the opamp is the LM307.\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=15.85*10**-6 #Change in input offset voltage\n", + "delta_V=1 #Unit change in supply voltage\n", + "V=10*10**-3 #Change in supply voltage\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "\n", + "\n", + "#calculation\n", + "delta_Voo=(1+Rf/R1)*(delta_Vio/delta_V)*V #Output offset voltage\n", + "\n", + "#Result\n", + "print \"Change in Output offset voltage 1 is \",round(delta_Voo*10**6),\"uV rms\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Example 4.13" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Change in Output offset voltage 1 is 2.82 mV\n" + ] + } + ], + "source": [ + "\n", + "#Example 4.13\n", + "#Suppose that the circuit in figure 4-24 is initially nulled. Assume also that\n", + "#room temperature and the voltage terminals +Vcc and -Vee remain constant.\n", + "#Determine the maximum possible chnage in output offset voltage after one month\n", + "#if the opamp is the LH0041C.\n", + "#Assume that R1=1kilo Ohm, Rf=100 kilo Ohm and Rl=10 kilo Ohm.\n", + "\n", + "from __future__ import division #to perform decimal division\n", + "\n", + "#Variable declaration\n", + "delta_Vio=5*10**-6 #Change in input offset voltage\n", + "delta_t=1 #Unit change in time\n", + "delta_Iio=2*10**-9 #Change in input offset current \n", + "t=4 #Time elapsed(weeks)\n", + "R1=1*10**3\n", + "Rf=100*10**3\n", + "Rl=10*10**3\n", + "\n", + "\n", + "#calculation\n", + "delta_Voot=(1+Rf/R1)*(delta_Vio/delta_t)*t+Rf*(delta_Iio/delta_t)*t #Output offset voltage\n", + "\n", + "#Result\n", + "print \"Change in Output offset voltage 1 is \",round(delta_Voot*10**3,2),\"mV\"\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} |