summaryrefslogtreecommitdiff
path: root/OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb')
-rw-r--r--OpAmps_And_Linear_Integrated_Circuits_by_Gayakwad/Chapter4.ipynb1036
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
+}