From 4a1f703f1c1808d390ebf80e80659fe161f69fab Mon Sep 17 00:00:00 2001 From: Thomas Stephen Lee Date: Fri, 28 Aug 2015 16:53:23 +0530 Subject: add books --- .../Chapter3.ipynb | 421 +++++++++++++++++++++ 1 file changed, 421 insertions(+) create mode 100755 Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb (limited to 'Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb') diff --git a/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb b/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb new file mode 100755 index 00000000..78acbede --- /dev/null +++ b/Microelectronic_Circuits_by_A.S._Sedra_and_K.C._Smith/Chapter3.ipynb @@ -0,0 +1,421 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:b6ca6f88473b518209629b5a50e034951050cc84cc7fdfcdcdfe2cbba83ff5c4" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter03:Diodes" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.1:pg-143" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Example 3.1: Peak value of diode current and maximum reverse voltage\n", + "#v_s is sinusoidal input voltage with peak 24V\n", + "#battery charges to 12V\n", + "I_d=(24-12)/100.0\n", + "max_v_rev=24+12.0;\n", + "print round(I_d,2),\"peak value of diode current (A)\\n\",round(max_v_rev,2),\"maximum reverse voltage acrossthe diode (V)\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.12 peak value of diode current (A)\n", + "36.0 maximum reverse voltage acrossthe diode (V)\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.2:pg-145" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Example 3.2 : Values of Iand V for the circuit given\n", + "print \"Consider fig 3.6(a). Assume both diodes are conducting\"\n", + "I_D2=(10-0)/10.0;\n", + "I=(0-(-10))/5.0-I_D2; # node eqution at B for fig 3.6(a)\n", + "V_B=0;\n", + "V=0;\n", + "print I,\"= I (mA)\\n\", V,\"= V (V)\\n\" ,\"D_1 is conducting as assumed originally\"\n", + "print \"Consider fig 3.6(a). Assume both diodes are conducting\"\n", + "I_D2=(10-0)/5.0;\n", + "I=(0-(-10.0))/10-2; # node eqution at B for fig 3.6(b)\n", + "print I,\"= I (mA)\\n \", V,\"=V (V)\"\n", + "print \"Implies assumption is wrong. lets assume D_1 is off and D_2 is on\"\n", + "I_D2=(10-(-10))/15.0;\n", + "V_B=-10+10.0*I_D2;\n", + "I=0;\n", + "print I,\"= I (mA)\\n\", round(V_B,1),\"= V (V)\\n D_1 is reverse biased\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Consider fig 3.6(a). Assume both diodes are conducting\n", + "1.0 = I (mA)\n", + "0 = V (V)\n", + "D_1 is conducting as assumed originally\n", + "Consider fig 3.6(a). Assume both diodes are conducting\n", + "-1.0 = I (mA)\n", + " 0 =V (V)\n", + "Implies assumption is wrong. lets assume D_1 is off and D_2 is on\n", + "0 = I (mA)\n", + "3.3 = V (V)\n", + " D_1 is reverse biased\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.3:pg-150" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Example 3.3 : Evaluating junction scaling constant\n", + "#i-I_S*exp(v/(n*V_T)) implies I_S=i*exp(-v/(n*V_T))\n", + "n=1;\n", + "i=10**-3; # (A)\n", + "v=700; # (V)\n", + "V_T=25; # (V)\n", + "I_S=i*exp(-v/(n*V_T))\n", + "print round(I_S,17),\"= I_S (A) for n=1\"\n", + "n=2;\n", + "I_S=i*exp(-v/(n*V_T))\n", + "print round(I_S,11),\"= I_S (A) for n=2\"\n", + "print \"These values implies I_S is 1000 times greater \"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "6.9e-16 = I_S (A) for n=1\n", + "8.3e-10 = I_S (A) for n=2\n", + "These values implies I_S is 1000 times greater \n" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.4:pg-154" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#Example 3.4: To determine I_D and V_D\n", + "V_DD=5; # (V)\n", + "R=1000; # (ohm)\n", + "I_1=1*10**-3; # (A)\n", + "V_D=0.7; # (V)\n", + "V_1=V_D;\n", + "I_D=(V_DD-V_D)/R;\n", + "I_2=I_D;\n", + "V_2=V_1+0.1*log10(I_2/I_1);\n", + "I_D=(V_DD-V_2)/R;\n", + "print round(I_D*1000.0,3),\"= The diode current (mA)\"\n", + "V_D=V_2+0.1*log10(I_D/I_2)\n", + "print round(V_D,3),\"= The diode volage (V)\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4.237 = The diode current (mA)\n", + "0.763 = The diode volage (V)\n" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.5:pg-157" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Example 3.5 : Repeating example 3.4 using piecewise linear model\n", + "V_D0=0.65; # (V)\n", + "r_D=20; # (ohm)\n", + "R=1000; # (ohm)\n", + "V_DD=5; # (V)\n", + "I_D=(V_DD-V_D0)/(R+r_D);\n", + "print round(I_D*1000,2),\"= I_D (mA)\"\n", + "V_D=V_D0+I_D*r_D;\n", + "print round(V_D,3),\"= The diod voltage (V)\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "4.26 = I_D (mA)\n", + "0.735 = The diod voltage (V)\n" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.6:pg-162" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Example 3.6 : Power supply ripple\n", + "V_S=10; # V_S=V_+\n", + "V_D=0.7; # (V)\n", + "R=10*10**3; # (ohm)\n", + "n=2;\n", + "V_T=25*10**-3; # (V)\n", + "V_s=1; # (V)\n", + "I_D=(V_S - V_D)/R;\n", + "r_D=n*V_T/I_D;\n", + "v_d=V_s*r_D/(R+r_D);\n", + "print round(v_d*1000,2),\"= v_d(peak (mV))\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "5.35 = v_d(peak (mV))\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.7:pg-163" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Example 3.7 : Percentage change in regulated voltage\n", + "V_DD=10; # (V)\n", + "V_D=0.7*3; # string of 3 diodes provide this constant voltage\n", + "R=1*10**3;\n", + "I_D=(V_DD-V_D)/R;\n", + "n=2;\n", + "V_T= 25*10**-3; # (V)\n", + "r_d=n*V_T/I_D; # incremental resistance \n", + "r=3*r_d; # total incremental resistance\n", + "deltav_O=2*r/(r+R); # deltav is peak to peak change in output voltage\n", + "print round(deltav_O*1000,1),\"is Percentage change (mV) in regulated voltage caused by 10% change in power supply\"\n", + "I=2.1*10**-3; # The current drawn from the diode string\n", + "deltav_O=-I*r; # Decrease in voltage across diode string\n", + "print round(deltav_O*1000,1),\"is Decrease in voltage across diode string (mV)\"\n", + "# The answer in the textbook is slightly different due to approximation" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "37.3 is Percentage change (mV) in regulated voltage caused by 10% change in power supply\n", + "-39.9 is Decrease in voltage across diode string (mV)\n" + ] + } + ], + "prompt_number": 24 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.8:pg-169" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Example 3.8 : line regulation load regulation\n", + "\n", + "V_Z=6.8; # (V)\n", + "I_Z=0.005; # (A)\n", + "r_Z=20; # (ohm)\n", + "V=10; # V=V_+\n", + "R=0.5*10**3; # (ohm)\n", + "\n", + "# 3.8a\n", + "V_ZO=V_Z-r_Z*I_Z;\n", + "I_Z=(V-V_ZO)/(R+r_Z)\n", + "V_O=V_ZO+I_Z*r_Z;\n", + "print round(V_O,2),\"= V_O (V)\"\n", + "\n", + "# 3.8b\n", + "deltaV=1; # change in V is +1 and -1\n", + "deltaV_O=deltaV*r_Z/(R+r_Z); # corresponding change in output voltage\n", + "print round(deltaV_O*1000,1),\"= Line regulation (mV/V)\"\n", + "\n", + "# 3.8c\n", + "I_L=1*10**-3; # load current\n", + "deltaI_L=1*10**-3;\n", + "deltaI_Z=-1*10**-3; # change in zener current\n", + "deltaV_O=r_Z*deltaI_Z;\n", + "print round(deltaV_O*1000),\"= Load regulation (mV/mA)\"\n", + "\n", + "# 3.8d\n", + "I_L=6.8/2000; # load current with load resistance of 2000\n", + "deltaI_Z=-I_L;\n", + "deltaV_O=r_Z*deltaI_Z;\n", + "print round(deltaV_O*1000,2),\"= Corresponding change in zener voltage (mV) for zener current change of -3.4mA\"\n", + "\n", + "# 3.8e\n", + "R_L=0.5*10**3; # (ohm)\n", + "V_O=V*R_L/(R+R_L);\n", + "print V_O,\"V_O (V) for R_L=0.5K ohm\"\n", + "\n", + "# 3.8f\n", + "I_Z=0.2*10**-3; # Zener t be at the edge of breakdown I_Z=I_ZK\n", + "V_Z=6.7; # V_Z=V_ZK\n", + "I_Lmin=(9-6.7)/0.5; # Lowest current supplied to R\n", + "I_L=I_Lmin-I_Z; # load current\n", + "R_L=V_Z/I_L;\n", + "print round(R_L,1),\"= R_L (Kohm)\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "6.83 = V_O (V)\n", + "38.5 = Line regulation (mV/V)\n", + "-20.0 = Load regulation (mV/mA)\n", + "-68.0 = Corresponding change in zener voltage (V) for zener current change of -3.4mA\n", + "5.0 V_O (V) for R_L=0.5K ohm\n", + "1.5 = R_L (Kohm)\n" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Ex3.9:pg-181" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Example 3.9 : Value of capacitance C that will result in peak-peak ripple of 2V\n", + "V_P=100.0; # (V)\n", + "V_r=2.0; # (V)\n", + "f=60.0; # (Hz)\n", + "R=10.0*10**3; # (ohm)\n", + "I_L=V_P/R;\n", + "C=V_P/(V_r*f*R);\n", + "print round(C*1000000,1),\"= C (microF)\"\n", + "wdeltat=math.sqrt(2*V_r/V_P);\n", + "print wdeltat,\"= Conduction angle (rad)\"\n", + "i_Dav=I_L*(1+math.pi*math.sqrt(2*V_P/V_r));\n", + "print round(i_Dav*1000),\"= i_Dav (A)\"\n", + "i_Dmax=I_L*(1+2*math.pi*math.sqrt(2*V_P/V_r));\n", + "print round(i_Dmax*1000),\"= i_Dmax (mA)\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "83.3 = C (microF)\n", + "0.2 = Conduction angle (rad)\n", + "324.0 = i_Dav (A)\n", + "638.0 = i_Dmax (mA)\n" + ] + } + ], + "prompt_number": 35 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file -- cgit