{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Jupyter Notebook - Electronics Demos\n", "This notebook demonstrates several packages that can be used to support the creation of assets relating to *electronics*." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Drawing Electrical Circuit Diagrams / Schematics\n", "\n", "One way of using the notebooks is an an envionment to support the creation of schematic diagrams." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `schemdraw`\n", "\n", "The `schemdraw` package can be used to write descriptions of electrical circuit diagrams.\n", "\n", "Examples: https://cdelker.bitbucket.io/SchemDraw/SchemDraw.html\n", "\n", "\n", "We can parameterise values to allow us to refer to diagrams in text using similar values." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import SchemDraw as schem\n", "import SchemDraw.elements as e" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Would be nice if we could find a way of handling units better?\n", "#Maybe a package that gets this from value and chooses unit modifier appropriately?\n", "\n", "R=100 * 10**3\n", "V=10\n", "C=0.1 * 10**-6\n", "\n", "V_str='{V}V'.format(V=V)\n", "R_str='{R}K$\\Omega$'.format(R=R/10**3)\n", "C_str='{C}$\\mu$F'.format(C=C/10**-6)\n", " \n", "d = schem.Drawing()\n", "V1 = d.add(e.SOURCE_V, label=V_str)\n", "d.add(e.RES, d='right', label=R_str)\n", "d.add(e.CAP, d='down', botlabel=C_str)\n", "d.add(e.LINE, to=V1.start);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following circuit shows a {{print(V_str)}} source connected in series to a {{R_str}} resistor and a {{print(C_str)}} capacitor.\n", "\n", "{{d.draw()}}\n", "\n", "*Double click on the cell to see how the components are embedded.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also update diagrams dynamically:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import interact\n", "import ipywidgets\n", "import matplotlib.pyplot as plt\n", "\n", "@interact(V=ipywidgets.IntSlider(min=0,max=15,step=1,value=5),\n", " R=ipywidgets.IntSlider(min=100,max=1500,step=100,value=100),\n", " C=ipywidgets.IntSlider(min=0,max=15,step=1,value=1))\n", "def schem_demo(V, R, C, xkcdmode=False):\n", " if xkcdmode: plt.xkcd()\n", " d = schem.Drawing()\n", " V1 = d.add(e.SOURCE_V, label='{}V'.format(V))\n", " d.add(e.LINE, d='right', l=d.unit*.75)\n", " S1 = d.add(e.SWITCH_SPDT2_CLOSE, d='up', anchor='b', rgtlabel='$t=0$')\n", " d.add(e.LINE, d='right', xy=S1.c, l=d.unit*.75)\n", " d.add(e.RES, d='down', label='${}\\Omega$'.format(R), botlabel=['+','$v_o$','-'])\n", " d.add(e.LINE, to=V1.start)\n", " d.add(e.CAP, xy=S1.a, d='down', toy=V1.start, label='{}$\\mu$F'.format(C))\n", " d.add(e.DOT)\n", " d.draw(showplot=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `circuitikz`\n", "\n", "Draw circuits using `circuitikz`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "%load_ext tikz_magic" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%tikz -p circuitikz,gnuplottex -s 0.3\n", "%Example circuit from: https://tex.stackexchange.com/a/379915\n", "[every pin/.append style={align=left, text=blue}]\n", " \\draw\n", " (0, 0) node[op amp] (opamp) {}\n", " (opamp.-) to[short,-o] (-2, 0.5)\n", " (opamp.-) to[short,*-] ++(0,1.5) coordinate (leftC)\n", " to[C] (leftC -| opamp.out)\n", " to[short,-*] (opamp.out)\n", " to[short,-o] ++ (0.5,0)\n", " (leftC) to[short,*-] ++ (0,1) coordinate (leftR) \n", " to[R] (leftR -| opamp.out)\n", " to[short,-*] (leftC -| opamp.out)\n", " (opamp.+) -- ++ (0,-0.5) node[ground] {};" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cct=r'''\n", " \\draw\n", " (0, 0) node[op amp] (opamp) {}\n", " (opamp.-) to[short,-o] (-2, 0.5)\n", " (opamp.-) to[short,*-] ++(0,1.5) coordinate (leftC)\n", " to[C] (leftC -| opamp.out)\n", " to[short,-*] (opamp.out)\n", " to[short,-o] ++ (0.5,0)\n", " (leftC) to[short,*-] ++ (0,1) coordinate (leftR) \n", " to[R] (leftR -| opamp.out)\n", " to[short,-*] (leftC -| opamp.out)\n", " (opamp.+) -- ++ (0,-0.5) node[ground] {};'''\n", "\n", "%tikz -p circuitikz -s 0.3 --var cct" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/usr/share/texlive/texmf-dist/tex/latex/bodegraph/bodegraph.sty\r\n" ] } ], "source": [ "!kpsewhich bodegraph.sty " ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/usr/share/texlive/texmf-dist/tex/latex/circuitikz/circuitikz.sty\r\n" ] } ], "source": [ "!kpsewhich circuitikz.sty" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating Circuits\n", "\n", "As well as drawing circuits, there several different approaches to simulating circuit behaviour." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Circuit Analysis - `lcapy`\n", "\n", "`lcapy` is a linear circuit analysis package." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "#It seems as if lcapy, as of 7/9/18 doesn't work with current symp 1.2+\n", "!pip install --upgrade sympy==1.1" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": { "image/png": { "height": 100, "width": 200 } }, "output_type": "display_data" } ], "source": [ "from lcapy import Circuit, j, omega\n", "\n", "cct = Circuit()\n", "cct.add(\"\"\"\n", "Vi 1 0_1 step 20; down\n", "C 1 2; right, size=1.5\n", "R 2 0; down\n", "W 0_1 0; right\n", "W 0 0_2; right, size=0.5\n", "P1 2_2 0_2; down\n", "W 2 2_2;right, size=0.5\"\"\")\n", "\n", "cct.draw()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{C R s}{C R s + 1}$" ], "text/plain": [ " C⋅R⋅s \n", "─────────\n", "C⋅R⋅s + 1" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "H = (cct.R.V('s') / cct.Vi.V('s')).simplify()\n", "H" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enabling notebook extension jupyter-js-widgets/extension...\r\n", " - Validating: \u001b[32mOK\u001b[0m\r\n" ] } ], "source": [ "!jupyter nbextension enable --py widgetsnbextension" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3ccdc96b0b624c2891b0d453bc510558", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import interact\n", "\n", "@interact(R=(1,10,1))\n", "def response(R=1):\n", " cct = Circuit()\n", "\n", " cct.add('V 0_1 0 step 10;down')\n", " cct.add('L 0_1 0_2 1e-3;right')\n", " cct.add('C 0_2 1 1e-4;right')\n", " cct.add('R 1 0_4 {R};down'.format(R=R))\n", " cct.add('W 0_4 0; left')\n", "\n", " import numpy as np\n", " t = np.linspace(0, 0.01, 1000)\n", " vr = cct.R.v.evaluate(t)\n", "\n", " from matplotlib.pyplot import figure, savefig\n", " fig = figure()\n", " ax = fig.add_subplot(111, title='Resistor voltage (R={}$\\Omega$)'.format(R))\n", " ax.plot(t, vr, linewidth=2)\n", " ax.set_xlabel('Time (s)')\n", " ax.set_ylabel('Resistor voltage (V)')\n", " ax.grid(True)\n", " \n", " cct.draw()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": { "image/png": { "height": 100, "width": 300 } }, "output_type": "display_data" } ], "source": [ "#Example from http://lcapy.elec.canterbury.ac.nz/schematics.html#introduction\n", "sch='''\n", "Vi 1 0_1 {sin(t)}; down\n", "R1 1 2 22e3; right, size=1.5\n", "R2 2 0 1e3; down\n", "P1 2_2 0_2; down, v=V_{o}\n", "W 2 2_2; right, size=1.5\n", "W 0_1 0; right\n", "W 0 0_2; right\n", "'''\n", "\n", "fn=\"voltageDivider.sch\"\n", "with open(fn, \"w\") as text_file:\n", " text_file.write(sch)\n", " \n", "cct = Circuit(fn)\n", "cct.draw(style='american') #american, british, european\n", "#I wonder if we could blend the styles to make an OU style?" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "#Various voltage sources available\n", "Vdc(v)\n", "DC voltage source (note a DC voltage source of voltage V has an s domain voltage of V / s).\n", "\n", "Vstep(v)\n", "Step voltage source (s domain voltage of v / s).\n", "\n", "Vac(V, phi=0)\n", "AC voltage source.\n", "\n", "Vnoise(V, nid=None)\n", "Noise voltage source.\n", "\n", "Similarly for I (current) and s domain." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#How do I analyse the circuit with the ac voltage source?\n", "\n", "import numpy as np\n", "t = np.linspace(0, 5, 1000)\n", "vr = cct.R2.v.evaluate(t)\n", "from matplotlib.pyplot import figure, savefig\n", "fig = figure()\n", "ax = fig.add_subplot(111, title='Resistor R2 voltage')\n", "ax.plot(t, vr, linewidth=2)\n", "ax.plot(t, cct.Vi.v.evaluate(t), linewidth=2, color='red')\n", "ax.plot(t, cct.R1.v.evaluate(t), linewidth=2, color='green')\n", "ax.set_xlabel('Time (s)')\n", "ax.set_ylabel('Resistor voltage (V)');" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "?cct.R2.v" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": { "image/png": { "height": 80, "width": 400 } }, "output_type": "display_data" } ], "source": [ "from lcapy import Circuit\n", "\n", "cct = Circuit()\n", "cct.add(\"\"\"\n", "W _0 _1; right\n", "W _1 _2; up,size=0.4\n", "R _2 _3 1e6; right\n", "L _3 _4 2e-3;right\n", "W _4 _5; down,size=0.4\n", "W _5 _6; right\n", "W _5 _7; down,size=0.4\n", "C _7 _8 3e-6; left\n", "W _8 _1; up,size=0.4\n", "\"\"\")\n", "\n", "cct.draw(style='british')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": { "image/png": { "height": 80, "width": 350 } }, "output_type": "display_data" } ], "source": [ "#alternative way of drawing circuits\n", "from lcapy import R, C, L\n", "\n", "cct2= (R(1e6) + L(2e-3)) | C(3e-6)\n", "#For some reason, the style= argument is not respected\n", "cct2.draw()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "W 1 2; right=0.5\n", "W 2 4; up=0.4\n", "W 3 5; up=0.4\n", "R 4 6 1000000.0; right\n", "W 6 7; right=0.5\n", "L 7 5 0.002; right\n", "W 2 8; down=0.4\n", "W 3 9; down=0.4\n", "C 8 9 3e-06; right\n", "W 3 0; right=0.5\n" ] } ], "source": [ "print(cct2.netlist())" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "from lcapy import *\n", "from numpy import linspace\n", "n = Vstep(20) + R(5) + C(10)\n", "vf = linspace(0, 4, 400)\n", "Isc = n.Isc.frequency_response().evaluate(vf)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAn8AAABrCAQAAACsnyzUAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAMgAAADIAGP6560AAAAHdElNRQfiCAgMLwaQ+Rc7AAAQ7UlEQVR42u2dP4zrelbHP2d0te8tXFh8m1chnnxX2goJrkcIIQqK33SIzlMioHBYxJMeldPQoqRCdCQVBdVENBQ0doMoEFJ8CxoE0kRsg0CIWPDeLrto4VDY+e8kTia2MzPnY+nqjuO/+eX39fHvnN85olwrEuDhgKBckQEpaNr1lRmG8RKQa5Q/CXGEeHs+zklJmWje9XUaxmtHfCJgrLOnb9XB1V+X/EmEI9xaubD23Nb6CRljE0HD6A5xJMDd4Xeyelu1z5uuL2CFOEb4yz8npMzINuVNHD5BaRmGhEQy1HHXV24YxnPkSuRPHHFp3eVMSEmrrbry6dGTEIfDx2ckMb1re6oYhnH93HR9ASCejEhwQM6Q99rTo+N6OtGevqdPDvgkkohX51yGYRgLOpc/8UmIABhzq/1TxvJ0yHuG5IBjKkH9PQ3DMDqWPwmYEgAZ77V3ul9Ic+1zy4TCBoy6vRvDMJ4TncqfREzxgDF357vEdab3DAGPkQy6vB/DMJ4THcqfRIwA6GvvqeEr2qdHDsQmgIZh1KMz+ZOAAZBzr8NLHE/H3JUCaK/AhmHUoCP5E48ED+jr5FLH1KwUwIE5QQzDOE4n8rcUvwuHLGtGH/B4sDAYwzCO0Y31FxMAY+1f+sA6Zgj4PHRyX4ZhPCM6kD/xiYHCUrs42mcCOHFPPpRhGC+aLqy/wjd7UoDzSfTXzmI0iMSiMj9tpFUeJJHRSXs4SSSR8JR9DKMOrcufFBldJs3N0tUZQyAwD3CziEcMeJzwPYsjxBGdZJvHONwpZzGMerRv/cUAzbz4LikmwsWt39vrIi4zMkbin7BPQW1bTvwyFYYNZxgXp2X5kwBH42kPNWcM+Gb/NYcUVl/ORz7yOzX3+QXe8ZEpH7mVz2ue6Es+lstvdH3PxkujbeuveOo3a/sB2i8TIRhNUdh+feZ84PdqBhp9lw984E/4wAd+t84O4vMFH5gz5QNfnGBlGkYNupC/rJUMzRMgtPi/Zii996mOmVBz/K9MeD7RPycFolptUxx3SBEcb8MZxkVpVf4kwAcOzPOQ8JQ5uwc7UOFaMX9hMxRCNAQdM4NajolFWjNKyTwqZuULdqappqTY48y4MO1af4UYHZrmFlA7jEJiDgRQlJPpbPpbA5R2XFp672uNs66kbCmZxx9NYZkPaHGWGpJpGPVpV/4ckF3M7eFx2BaYYNZfMyxtPwDG5By3/6I1KSv2Pe6aioFZMTFSJ7WtTMOoSbvyF7Cq29Y8KeBZ+oNLI64cwytbsvSzB0cCUyKWUgZMjkumRFtDJUPAM2++cTluACSQgQyk3mD02ZR+u/YqfRZnstGiS7MbuVmI2gFhKqVsmeCilmSGFNVfFvuMLZrTeCpbWqf89B+jP/O/gaLf+IpQaWrBoSju4DYDktrHO7ItHooSN3dHr3EpW3G0tXaEovh795qizPHW1vgour8Fy/MMtlr86C/Ilk5+D+4SWzW/rLTu7b8SKDcS/9eXMfnNlEd+/u2nf9ZgbFXxGtqa9VeG15j1d1k2x/0WjNc+20FcmeFnLeBJZ4wBt/f3Fq0dd8Hw0FkM4zAyWGjdlO989slfi3fz9g/CMjuAT8KnnzY4uOwBNDvfY4sM8/1eFAlxwHC7FTU7GMtXJWUHxUx8QnZmB5WvzM7Gc41z+OT3o1LrAh745jeJ33z92co56nF/8xffbezH9e3dVTtjPx7ezrrzw6Rz4Bclaeh+FvwUXzV8hqfw44uWsv828EOqyhMMcUC8O6OnWspAZ5LiiGRY8UgsRHFccZYIiOjtnMXj7/ke/33R7+6aW/Zaru3dCdsOZd7plf7kSut8bm+yX3tTaMSCHPkBWUOnf8vnO+u2n/1+RWxX/0lX9FVj97PgW/xnw2d4Ct/gfy54tIxvcVP1ONJUZvhEFRMav+QjVVIGQ94B4bacisd3+Mg/6k7L6Uz+lF/iVj7Xf976KOIN7/kr/v2Cd3vNLXst1/ZzfKi97T/xvQ6v9DM+bP5w9T/4iX8JdMFUadBVUAxcH93mYq4PhUeUh66HW1/LQoSiRFtrCwfUnpbadYmsfinVbrgql8iyrR+7/g5e3/KcXB+ffO2WWpcoSnzzg9/MuCMDxtzx9t+4aPWNDWYArY7b+LQZaPPK2ROYUu0qWVDM5dgOTi9iBCtnB2lKxs4oYxlYc5GagcZL5Ue/nXJPRs6Y8P/e/oMObzTl/m++f4vQg7/7+lcaTEfQchxe63GGRjH9bVPMCinbE+xeTn/bkEwp5ofsl7JCMjdddDGQc7GqgcZLRCf0/vL7t7yjx4//9utfhxvQyQ/fcscdt/NfbtQvW4zktGf9mfy1zXB7LsdRKStmdWxOf4uBfH8NwN0kC+KKoOpWMgkZzxgd/+hnC6376ld1tpz0pqmm2rCLoPxxtpezreU4Q0PznTJTR6SMhWQuLcaFlB080XaShcMv2IaxRPN1rWt3zu+ENlOQOmDWapyhUUhQKWYSHpeyZSzf4ndRR8rG65JZpsM32884mXblLwP8dpwf4uHARoPapZzLsaj+UaTDP2aVFfIYwloxhINStiWZZvsZZ9K+9Xe5JFTZwewxYbmN0S5FG0cgrngAHbPKNiRzkd35GMskC8vcg2blG6fTcpTQFGV64PPgUrFBPKDMu46Keo0LCcoc71gahLU9yjQKZRqEWpGai6NbGoSOW/sZxf3tLm3X+kiBYP/rr2aXqf8rRSyZvfp2QZHK/o+IqFnTb5HKni+AY26PBcVWf7jKIW0Yp9K2/BU/2hPqeZxJMR5knaIDysCUopJb3QdQEcv3JasU+sfOUgx9/NZGDmnDOImW5W+Z5qhR/++yDplZf92wGLurKWXLVPZwisW+OMtMTf6Ms2jb+msnZ5v5ArtlUubROOXxU7TWCVKmaSmZ9pAzzqR1+dMZQ8A1V7OhrEVR2/IwLo3mDEmZnGKV6ZiU9MRHVv+MfQxjiWj7p/R4xCPntolgBfFICID3FgphGE0jjgS4O2xs1Nuqfdp/+S1sA/B4aKS00oiAinzEhmEYm3Qgf6DDos7XoTLl5yEDQiDT/pMPZRjGC6cT+QPtkQGhXDQERqKiMDZ33dyVYRjPiY7kD7grkmNeTgAlYgTk3Nvkd8MwjtOZ/Gm+FMCLjAHKqHyV7jWduMswjJdBd9YfmpUCGJI8rbqweJKU2UXuLdTZMIx6dCh/oBnvy1q80/PjAMUxxQEZdyZ+hmHUpVP5A831tpzvOZLp6VPhxElCgg+k3Nlrr2EY9elY/gC0R58cCEgkqS+B4suIBAfkDPXOHB6GYZzCm64vAECHMiYmBhxOZkyYHLLkJCDELYsmjS3I+WUgPgEBkJFZixrNcxXyB5rTlzExEeATE0vOhJwUFhNlJKBIYB+ulUtK6VlHuVbEw19/jIlPvs9Gl4iYGRNSwGckHmPL5GI0y5XIH4DO6MmQkJCARSXXGKR684z0sI1odE5AIjNScsAjwOO2arNynnZvTe7GMmAkocVwGk3SQcqDGhfl43B7a4KkpEzM5rt+yonuC9JqMSvFb7g9UVFGRGTYmO5VI14xXHG4lept1cHVX6P8rV2ew1uO8c2YXd8XaOxHHCNSfGC2P/msjIjIeb/dsuIxh11ZNIxLceXyZzxnxBHrkfnX4vMIjLVX8VmCqxJGw7gMVxD4YrxqikCnaoHLYM36N4wLY/JndMuTpjsaxlO4Is+v8TKRwpM/21Pw3FxYRmeY9Wc0iS8j0D5DAh4r6zsXUZ3VOX+K7S24yWgIkz+jSXL6OgHNtUdGsiuAOiOFPeN7ATA2x4fRFOb5NRpE/FV8poQ8kO56gsvowJ3SVBIwxUpWGQ1i1p/RIBvSlQFuN7OjpkygIsg9xEpWGY1i1p/RGqJUFjsUj0dmujUhTh6BW3v1NZrDrD+jISSQx4pKLhWjfJrTJ9i0C8Xh0zPxM5rkhcifDPbXCxEn4SnHMi5EiE+8+rNsoS0/bpHlW8ekW6+/IePCTrTWM5riRcifjJjttxM0xZ2fSt94AhnDtb+qw1j80uobspno1hX7SmCzPoymaDzsWRweObOqIWwJ8Pd9dsIZBuSHM8NpT6Yy2x1zMhplgreRrsABw53H1AzHGDRdf1EWf5nwNMTa7aqQoDrN3OHeLMnBg3aV2EwbXIiYMmBAgpLgb3wWkDDCEZIwwjv7HI7H3b3xCLbONj//HLac2TYjoo0WmFa0VICSkJDwuGozHI8kJExRa7frWfAZoBXra/TmYl+UeLnGwxEzR3Ed3U+Dh44ZLf8foczXft4+87Wv4YHp2Wd5XHWxtbXJdiMxWl2NLe0seDwwwuGImPOwp1us/rvsBLjluseu78KWskUSpiTorvzV7c1lq25JHR5zwo7uqrED+5s/XB5QkuVfyfqn+CiDs84SV3UPPHS7CfDRTfvTljYWHAMGDDatcVue24JfyBZaIX81e3O1/CnE5/X+C9xVYwce8Lh+U4QoWnQCfHTTFuPxvKc8j6unzta5dr5Qpmb/2WLL0xZ0572qdm/eK39BV/LXpOfXJ14rW1kMiBZevJDtDG8z/DOq/Ab4lQPjRbWwbSZYCIVhXJon92bNuvLuNyd/GZDvSWcUHF4rXs0vLySv9EI5qJDFjLrHNQyjLsEJazeQwbI/dlTTrzH50wnv9d2aE7yI7irEajdEOVutlYgBTuar7CDiy2Nl5F6waeNJICoqSgDMRWW+cUUpYPJnGJflYG+ux746ME3T4MvvVvyPA9LSVqvO8BsASIDTnvbLQpcFIX7l1+k25U8zFRXugaGKir7b2n5muYUN48Ic6M2HkIDOJyO0lO1ZAiJyFkGwh0QopgdSVPpdEFDxMiv7jlI98gcwO+2ZZBjGUU41KQaSA/41mCJtJbsfkHN3vCi5eKA5xXDqSvBc5RhfUUBxl+qRv9VnhmF0R19TEI+QUdeX0or8yYCgjvgBlBZiuJrIJgEe+8YGduRPPIK91YAtd5xhXAWaM5bOZ3O3kPJAIqIt8du1zTwgA811Vga0rATPcUq9h0O2n2EYl2Zvbz5K5+nMmk95EBHXsPw2xwE2X30rR/5Kdsfy9o/8WVFFw2iDuv1s3LUANmz9SUDI7UL8xMmh2l3rY33rrvBy5G/H1TGjyr+0Zv1VOEesaphhXJZjvXkvOus6nW2j8icBg41UNgvHw4TtJ4TP+te4Fs8nAV75VW5lDq5MobU28idux7Hudf20MYwXx7HefMU0+PIrHiOGBLJaFRb53zST2brdJj7+VkHD1f9DYAZSJV3Zjpm9/qIc0dv5dIhhGBekRm++WhqTP/FICHjYWLmy13okEi2TlK7HBAJMFl9nmes3A+IK72+2E8iy/NIlZrLZBHJoVNAwjKMUBQvEbaUOPtybV3hr/14HjWWGGFSsTNY+j4pMfXgM1hNdlhkgHnkoUiUpPPBAVJUTgpCdJFaMmOIY7GYBJMZSZ9piy1kLAQnz5Z9zkvUedqg3l1us760kXeV42Vw6LHQpHhEeMKtKVS8B3iJxtgR41anqZU5/e28J8Koi/+SBXHsYhnFxDvfma+WZ1/mVAW67PuyeLT3mVTVmDcN4rTx3+fN45L6OqMmAQO+6vl7DMK6HZy5/IDHuuKyJT8Ld0yrKGYbxsnj28gfyQKbDo9ukz2lMwjCM5nkJZc57hIcnT0t8rBKwYRivjxcgf5pzRyR7o4nE4ZnH1zCMbV7Ay69hGMY5vADrzzAM4xxM/gzDeKWY/BmG8Uox+TMM45Vi8mcYxivF5M8wjFeKyZ9hGK8Ukz/DMF4p/w++lRy/BnAIygAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wOC0wOFQxMjo0NzowNiswMDowMHUO8vkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDgtMDhUMTI6NDc6MDYrMDA6MDAEU0pFAAAAFHRFWHRwZGY6VmVyc2lvbgBQREYtMS41IAVcCzkAAAAASUVORK5CYII=\n" }, "metadata": { "image/png": { "width": 400 } }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import logspace, linspace\n", "from lcapy import Vstep, R, C, L\n", "\n", "n = Vstep(20) + R(5) + C(10)\n", "n.draw()\n", "\n", "vf = linspace(0, 1, 4000)\n", "n.Isc.frequency_response().plot(vf, log_scale=True);" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "63daff1b972d4307a8f42d0c6556eafd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipywidgets import interact\n", "\n", "@interact(R1=(0.1, 10),L1=(0.01, 1),C1=(0.01,0.5))\n", "def damping(R1=0.1,L1=0.2,C1=0.4):\n", " underDampedRLC = Vstep(10) + R(R1) + L(L1)+ C(C1)\n", " underDampedRLC.draw();\n", "\n", " t = linspace(0, 10, 1000)\n", "\n", " underDampedRLC.Isc.transient_response().plot(t);" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\mathrm{R}(R_1) | \\mathrm{R}(R_2)$" ], "text/plain": [ "R(R_1) | R(R_2)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "R_1 =R('R_1')\n", "Rtot = R_1 | R('R_2')\n", "Rtot" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUQAAADICAQAAAA65lBaAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAMgAAADIAGP6560AAAAHdElNRQfiCAgMLwvuSGuGAAAORklEQVR42u2dP4wjVx3HPy8kEMjlz1yDAhSRkwKaayZNCgTFXBNCQEJepbjiKh8NilJEXgmKFClsmgCp1g2RiCh2FVEkERJ2cYIUkbJzBZFQKHavAHJEQmuQgOQUsj+KGXvH88d+79a373nn9/kVux77zfvN+Ovf+z/PCG3H9IlIZc8hRYceMJJDhzQ9OhzKyPfVBou03EgQhCMihzQ7CMLAIUXEEYLQ8X29odo9vn8I3ukDENGzTWBmn+2ZyCGXqJCbUqHlQjQJSf6vtRDnYoocZDU7e9dBvK3CtLuOaA7oMGXIFvCqvGaRIuK33Mct4FGO5LJVLlf5EfAHvgm8KS/5vuog8V038Gn0EIRBXoPbd0jTm/21SnOAcJT/PfB91WGadwe8XvwBeTOFAYKQWKY5mDc/LMSbN4cGJyL2fd0hmncHPF56Hg8FgQ6CsLsyTbeQxlK8jBGEaC5ejYl1d8m3A94uPBfFrNsm75JZ0b3CmHlXTy7e8YoUMYKwk7+yjrxtM+8OeLvwTBLzYnJRMA1pksXP2Ih38TNECCvF20bz7oCny64pJE+K0MZUJeHlMXGJeKtFfn6O2PcdCM28O+DpskvxUCg2KhrS1MhulXirRfFq8bbTvDvg5aI79S3eWTdLQ6qa+t1y8eZxt1QQs4ugg33le+XbAS8XnRWPlSbDsu6VelEJ7NM4Uk2/7nyrIm87bUNGVsxgjSd7mO8D78mzNflc58H68RLzEt8FXpHXS8ev8AINozJmzEVuyTOV4/vETHlcppV3rhBze623blNm/Pj+JdhYHqnWay/W5pQVv92adxpHRZreyb3uO71zc+3X+Y/NaBh5d8DKycFZdXg0FsBXSUm5UpumT0rK1crxN0i53lBov0Vak0tCSsrLa/6CN6LX0rsDVk6emRCb6o9La4L1TZLlzZj62uNdaMawIUJs+TSwGoYAdIuHTEIMjKp1OgCZMgISkywcziZ+NdXPRkwruXTo4jjv+/ygQiwhh4yAnukUDmbzDpsr/dk7BVmtElWteFflcq5RIVbJVq/MJ8qaDglLI1WNeFeLalTKJaILTCT1ffme8F03sKrnnGEdUVic2mA5orwwCm03olwahW5sr5/yWrSOuMHsMV8IkK/YmyyvucmECScLAbJ4OFyRy6jw2Sw2HrqsJTxfqBBrkBGHzOp8WeG5SlSZrCL688VVhzJZkUvKhHwJlukRWeVyfvEdkq2KlzMumgsLAlwWEczmblvPwy7M3V46yn2qK9GieaPZYwr06BJh25IdAh3To4/lwJpMOAR6JqFjncs5ZSPGms2A2G693Brz7LMFfMp9daPFDWmu8yCCAXbFqpjNR6ov8hhwsb6f8pTXIVxeVUkIgXt9OxAse8wmWtjX3N7Nmx5T2+gmr5tf5EvvR3dDhpuDFs0N5H2DMHUQ4uyTew6iGpXSthQVYjOZNBwilcwioYuohkyBvXYO7J2gRXMjcohxTnONa44pplz0faUhoBFRCQIVohIEKkQlCFSIShCoEJUgUCEqQaBCVIJAhagEgQpRCQIVohIEKkQlCHSs2QETU/cMntRt3yqlDhWiA5JyOX+E0lC2s2MmpsuumbDV7vmEp0WF6E4MzOc8S0pqoM+YJ307tsloHdGR7NkMpcn3EyAuPXJEcUKF6EpCIR4u0HE7kVJEhehKDKQ1x5rkqVihQnSlLiI6796slFEhOlFXQzQ7dBiJ4xIBZREVohuleGgSMybhmsrwtGj3jRsxzB8tHxNzyFA7s9eBCtGNBBjOimaTsEvPTMpd2SZiwHTW5a3YoEWzA+UaokwYkiwO+5mB2WVw8gBOxQ4VogvVFnNK6UnYsi1bWmN0R4XoQrUPUUdT1oQK0YVqRKzr3lbuABWiNbWjzAmgs27WgArRnko8NNnQXj6istb9AluHCtGeLqViuLgVhek6nk1ZQIVogRmYfSN0gL45MOPCW9eAGExCT/sNT4N2aFvQLDEZmZSuGTA960crnzdUiKdEUm01rwMtmpUg0Ii4ZsyAmAjomRjYbu3eeo6oENeMNlnuDC2alSBQISpBoEJUgkCFqASBClEJAhWiEgQqRCUIciGajklM5NuZRp7i675d2EzMJeBbvr1o9K6oOoH4kT9n24g/8Esi3zuZV3Zgf5NjBOGYD3z7slnGJT7J//2U53x7U/Eu/tKH2b8PvUIkQIx0ZFfG0pdHPrvwJ98Oltz9YOHlR7792RzjEsf5T1gQjsOSIjES56pDoncFLrzTkSPJGAtC37eTpZu5eOjHvn3aFOOvCy+P+cS3R0X7clpWnUF2Cotwt/jdh//6le+6w5wf8ETpyN/ka76d2gzMcWmTX+Gnvn2a8zA/LKruMu9P7l18rF+Hz32Fvm8/lTVgKq+D+l4XVff+xXu+8J+TR7dM2eP2a2JCMX5S8f8vvm/gxnC79Fp8f5tFu/+/J6vQpkz4+PcwQAYiInIkPUGIfdcfFmo6/1uoJR5zybdHm2LslA4E1efw0CvITq66riDECPf/BoklkUgQer5dLN3O5xZaftpUcbl3HxVeBNffcOGdTHWPfPbFj+kJRgDTfeDpC5c+GrMX4nxi8wGPcw+3eFr+6NuXzcLs8B2+yr/5dYhP4zG9B576/Dem17Nn7Rrx7Y+NywNiXSV3ZxjhsmzA0711rFkJAhWiEgQqRCUIVIhKEKgQlSBQISpBoEJUgkCFqASBClEJAhWiEgQqRCUIVIhKEKgQlSBQISpBoEJUgkCFqASBClEJAhWiEgQqRCUIVIhKEKgQlSBQISpBoEJUgkCFqASBClEJAhWiEgQqRCUIVIhKEKgQlSBQISpBoEJUgkCFqASBClEJAhWiEgQqRCUIVIhKEKgQlSBQISpBoEJUgkCFqASBClEJAhWiEgT3+nbAP6ZPRCp7Dik69CDbQ846TY8OhzLyfbWh0nohmoQBMDUTmVon6ufbr29b5xIxIAIzcRFvm9CiOdvXPcqlZYGZfbZnIodcokJuSoWWC9F0SfJ/rYU4F1PkIKvZ2bsO4m0VLRdiViyzzQ3+aa7aJDAR3+YGb/M2N4jtMjFXuckNfs4NbvK870sOFN87mVvtxT5gfFfO20MQBkQcIew7pOnN/lqlOUA4Ovl7pvdOSHx/f5Z+hm93TYgHCEdEAgPE7ivjAOFAsBcvXQRhcCLiM/6CN0KILS6aTZ8OMJIpkHWrrKwnmi4dYA9kygiITbIqDT1gyhBkxBRtsNTj+5dg9au+CxExj2gH89c7CEJnRaoxeQwViBBklWfECMLO/ErkbGPU2eZ259beiJh1qAznr0f50SWYhATYy3oc85iYmM7SfLIoO8tnuDqXluL7l2D1q157RCzHQyGPdpJFu4ZUpahJB2Ee7WpTZJ/YrZwjPrN7pxExaMrxEFZGq+rAnhwyAXpLYmIWD4sDe8PCceUE378Eq1/1miNiHqcq5zxpRTd4IeX4QoIgDBpSZHG3lA+7CCtro2u7Vo2IAZNFvWHl+BCI6NYlyQf2JjIpHpUJKc2DfT0ioDydwrKF3i42ZdLDE2awtnM9zLP8nfcWJQUgI/Msj9Klbo7M89zkJq9Wjv+MF4Dv8VpNmoQb3CrPuJGJSYnpmWF1moW5Qsztu30zg8R3SHYoStdrL9bmlBW/3Zp38o5s+3fy7uu+0zs3136d6bLmVzjm3YGwrL5WJ3CVlJQrtWn6pKRcrRx/g5Tr9TLgLdKaXBJSUl72fRe83HnfDoRmefdKqYK/rBnT0CRZ3ozpI1QG+862GROWeXcgNKvrG1wuqob2dNYr2SCqupHq1b2S59m8OxCeVQf7VnV113Rbr+7qroj3rLu6wzLvDoRn5fhnE6kqYy4rR67L4m2qnbbFvDsQohWnNthNhyhNbbCbDrFw3ub2ejvMuwMh2mzCrNA8ClNJU5yXYzXHpiTeyth3u8y7A2HaSd+g7cStwvTXyFZUJ3VPH1NmwzLvDoRp8wUBLosIZgsCrEV1Uhv1sYggLPPuQJg2i2pOK1Nm4m0cg6lJk/VPzqNpe82I7zHGQDF9toBPuY9b8oxlmus8iGCAXRlapbjCC8BFHmPK4w5L/M8fvn8JoVre8hUcIlVen1wylawmzVH+T0s7smfWzmlgFuQLAfJlT5bMPrnnENtGpbRtxfcvIVzLO26cam52S7AWUmS10V2XXM6jaR1RCQItmpUgUCEqQaBCVIJAhagEgQpRCQIVohIEKkQlCFSIShCoEJUgUCEqQaBCVIJgU559EwQmpu4JPKnbvlVKLb5nXWyesU9xsWnMAGG8GU+YCdc0IroTA/MniUlKaqDPmCd9O7bJaB3RkWwXgdIj7SbY7S+gNKJCdCWhEA8X6LidSCmiQnQlBtKaY03yVKxQIbpSFxGdd29WyqgQnairIZodOozkmm/fNhsVohuleGgSMybhmsrwtGj3jRsxQP5g+ZiYQ4bamb0OdBWfE0aAy7Oi2STskrJVXMVsIgZERERMGLb62Q1u+O5R3yTLHpq0cKTPwjMaiBhnq5rpcMC+jrfYmtYRXai2mFNY2CCoz2HWepZDtqkfm1ZqUCG6UO1DTCqf6M1GWGQP7eS2RhsrLlQjYlmaQ9LZ64Zt0ZRaVIjW1I4yJ0ChQSKTglC7VMdglAa0aLanEg9NNrSXj6gs7hZoIgZMZNu305uCCtGeSoSTwiuzsKepiRgzYcu3yxuE72b7JhgD9ucvDoo7DNBDGAskC0cj9tv9IGJ30w7tU2JiusD05FHFJmKXvWxzXJOIzsmxQoW4ZkzELtuzQtuM5bJvjzYDbTWvFRMxJmJgspeRzlG0RYW4XnaIKXZjj+78VO1Ci2YlCLT7RgkCFaISBCpEJQhUiEoQqBCVIFAhKkGgQlSCQIWoBMH/AWQEe0Q6ENv8AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE4LTA4LTA4VDEyOjQ3OjExKzAwOjAwfAPM6QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOC0wOC0wOFQxMjo0NzoxMSswMDowMA1edFUAAAAUdEVYdHBkZjpWZXJzaW9uAFBERi0xLjUgBVwLOQAAAABJRU5ErkJggg==\n" }, "metadata": { "image/png": { "height": 80, "width": 200 } }, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\frac{R_{1} R_{2}}{R_{1} + R_{2}}$" ], "text/plain": [ " R₁⋅R₂ \n", "───────\n", "R₁ + R₂" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import display, Latex\n", "\n", "parallelR = R('R_1') | R('R_2')\n", "parallelR.draw()\n", "\n", "parallelR.simplify().R" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n" }, "metadata": { "image/png": { "height": 80, "width": 200 } }, "output_type": "display_data" }, { "data": { "text/latex": [ "$C_{1} + C_{2}$" ], "text/plain": [ "C₁ + C₂" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parallelC = C('C_1') | C('C_2')\n", "parallelC.draw()\n", "\n", "parallelC.simplify().C" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$20 \\sin{\\left (\\omega t \\right )}$" ], "text/plain": [ "20⋅sin(ω⋅t)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from lcapy import Vac, t, s, pi\n", "#Representation of AC voltage source in time domain\n", "#Vac(amplitude, phase)\n", "Vac(20, pi/2).Voc(t)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\frac{20 s}{\\omega^{2} + s^{2}}$" ], "text/plain": [ " 20⋅s \n", "───────\n", " 2 2\n", "ω + s " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Representation of AC voltage source in s domain\n", "Vac(20).Voc(s)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "The overall resistance value simplifies to$\\frac{R_{1} R_{2}}{R_{1} + R_{2}}$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display( Latex('The overall resistance value simplifies to'+parallelR.simplify().R._repr_latex_()))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1/s\n", "1/(C_1*R_1*(s**2 + s/(C_1*R_1)))\n" ] } ], "source": [ "#Transfer function\n", "cct = Circuit()\n", "cct.add('V1 1 0 {1}')\n", "cct.add('R1 1 2')\n", "cct.add('C1 2 0 C1 0')\n", "\n", "print(cct[0].V.s)\n", "print(cct[1].V.s)\n", "print(cct[2].V.s)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#pole-zero plot\n", "from lcapy import s, j, Hs\n", "from matplotlib.pyplot import savefig, show\n", "\n", "H = Hs((s - 2) * (s + 3) / (s * (s - 2 * j) * (s + 2 * j)))\n", "H.plot();" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(s - 2)*(s + 3)/(s*(s - 2*j)*(s + 2*j))\n" ] }, { "data": { "text/latex": [ "$\\frac{\\left(s - 2\\right) \\left(s + 3\\right)}{s \\left(s - 2 j\\right) \\left(s + 2 j\\right)}$" ], "text/plain": [ " (s - 2)⋅(s + 3) \n", "─────────────────────\n", "s⋅(s - 2⋅j)⋅(s + 2⋅j)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print( str(H) )\n", "H" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#bode - just does the amplitude response?\n", "from lcapy import s, j, pi, f, Hs\n", "from numpy import logspace\n", "import matplotlib.pyplot as plt\n", "\n", "H = Hs((s - 2) * (s + 3) / (s * (s - 2 * j) * (s + 2 * j)))\n", "\n", "A = H(j * 2 * pi * f)\n", "\n", "fv = logspace(-1, 4, 400)\n", "A.plot(fv, log_scale=True)\n", "A.phase_degrees.plot(fv,log_scale=True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `control`\n", "\n", "Pyhton [control systems library](https://python-control.readthedocs.io/en/0.8.0/index.html).\n", "\n", "Can be used for a wide range of control applications and chart generation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A = [[ 1. -2.]\n", " [ 3. -4.]]\n", "\n", "B = [[5.]\n", " [7.]]\n", "\n", "C = [[6. 8.]]\n", "\n", "D = [[9.]]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import control\n", "#State space system definition\n", "sys=control.ss(\"1. -2; 3. -4\", \"5.; 7\", \"6. 8\", \"9.\")\n", "\n", "#It would be nice if we could print the sys diagram as LaTeX styled matrices?\n", "sys" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "matrix([[ 1., -2.],\n", " [ 3., -4.]])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.A" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\n", " 1. & -2.\\\\\n", " 3. & -4.\\\\\n", "\\end{bmatrix}" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "\\begin{bmatrix}\n", " 5.\\\\\n", " 7.\\\\\n", "\\end{bmatrix}" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "\\begin{bmatrix}\n", " 6. & 8.\\\\\n", "\\end{bmatrix}" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "\\begin{bmatrix}\n", " 9.\\\\\n", "\\end{bmatrix}" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#https://stackoverflow.com/a/17131750/454773\n", "\n", "#Note that https://pypi.org/project/PyLaTeX/ may also be generally handy???\n", "import numpy as np\n", "\n", "def bmatrix(a):\n", " \"\"\"Returns a LaTeX bmatrix\n", "\n", " :a: numpy array\n", " :returns: LaTeX bmatrix as a string\n", " \"\"\"\n", " if len(a.shape) > 2:\n", " raise ValueError('bmatrix can at most display two dimensions')\n", " lines = str(a).replace('[', '').replace(']', '').splitlines()\n", " rv = [r'\\begin{bmatrix}']\n", " rv += [' ' + ' & '.join(l.split()) + r'\\\\' for l in lines]\n", " rv += [r'\\end{bmatrix}']\n", " return '\\n'.join(rv)\n", "\n", "from IPython.display import display,Latex\n", "display(Latex(bmatrix(sys.A)))\n", "display(Latex(bmatrix(sys.B)))\n", "display(Latex(bmatrix(sys.C)))\n", "display(Latex(bmatrix(sys.D)))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "In the `control` diagrams below, `**kwargs` can be passed in to style the matplotlib figure further. It would be handy if could get access the the figure object too? The plotting routines themselves are in [`control/freqplot.py`](https://github.com/python-control/python-control/blob/master/control/freqplot.py)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Nyquist diagrams" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "real, imag, freq = control.nyquist_plot(sys, omega=None, Plot=True, color='b', labelFreq=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bode plots" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#sys = ss(\"1. -2; 3. -4\", \"5.; 7\", \"6. 8\", \"9.\")\n", "mag, phase, omega = control.bode(sys)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## *Circuit Sandbox*\n", "\n", "The [Circuit Sandbox](https://github.com/willymcallister/circuit-sandbox) is a simple, standalone Javascript circuit simulator that we can embed in a notebook or [run in its own browser tab](js/circuit-sandbox-master/index.html).\n", "\n", "The *Circuit Sandbox* can save and load simple netlists (*I don't know if these can then be used by other packages?*)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import IFrame\n", "IFrame('js/circuit-sandbox-master/index-mobile.html', width=1000,height=600)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Digital Circuit Simulator\n", "\n", "`simcirjs` [[docs](https://github.com/kazuhikoarase/simcirjs)) is a syandalone Javascript digital circuit simulator that we can embed in a notebook or [run in its own browser tab](js/simcirjs-master/sample.html)." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#!ls js/simcirjs-master/\n", "from IPython.display import IFrame\n", "IFrame('js/simcirjs-master/blank.html', width=600,height=300)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `ahkab`\n", "\n", "[`ahkab`](https://ahkab.readthedocs.io/en/latest/index.html) is an open-source SPICE-like interactive circuit simulator.\n", "\n", "*Unfortunately, it doesn't render the schematic diagram from the circuit description. It would be useful if we `ahkab` could work with something like `schemdraw` to support such a dual behaviour from the same circuit descrpition.*\n", "\n", "The examples below are based on the original documentation." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import ahkab" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OP simulation results for 'Simple Example Circuit'.\n", "Run on 2017-12-08 22:28:25, data file /tmp/tmp_k1yz97v.op.\n", "Variable Units Value Error %\n", "---------- ------- --------- ------------ ---\n", "VN1 V -3.86364 3.86358e-12 0\n", "VN2 V 4.13636 -4.13591e-12 0\n", "VN3 V 8.13636 -8.13602e-12 0\n", "VN4 V 10 -1.00027e-11 0\n", "I(V1) A -0.772727 0 0\n", "I(V2) A -0.170455 0 0\n", "I(V3) A -3.32955 0 0\n" ] } ], "source": [ "cct = ahkab.Circuit('Simple Example Circuit')\n", "\n", "cct.add_resistor('R1', 'n1', cct.gnd, value=5)\n", "cct.add_vsource('V1', 'n2', 'n1', dc_value=8)\n", "cct.add_resistor('R2', 'n2', cct.gnd, value=2)\n", "cct.add_vsource('V2', 'n3', 'n2', dc_value=4)\n", "cct.add_resistor('R3', 'n3', cct.gnd, value=4)\n", "cct.add_resistor('R4', 'n3', 'n4', value=1)\n", "cct.add_vsource('V3', 'n4', cct.gnd, dc_value=10)\n", "cct.add_resistor('R5', 'n2', 'n4', value=4)\n", "\n", "opa = ahkab.new_op()\n", "r = ahkab.run(cct, opa)['op']\n", "print(r)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Boolean Algebra - `PyEDA`\n", "\n", "`PyEDA` is a [Python package for exploring Boolean algebra](http://pyeda.readthedocs.io/en/latest/boolalg.html)." ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pyeda.inter import *\n", "\n", "A = exprvar('A')\n", "B = exprvar('B')\n", "C = exprvar('C')" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "And(A, B)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A & B" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "And(A, ~B)" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A & ~B" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "And(Or(A, B), C)" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(A | B) & C" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Xor(A, B)" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A ^ B" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "B A\n", "0 0 : 0\n", "0 1 : 1\n", "1 0 : 0\n", "1 1 : 0" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expr2truthtable(A & ~B)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "C B A\n", "0 0 0 : 0\n", "0 0 1 : 0\n", "0 1 0 : 0\n", "0 1 1 : 1\n", "1 0 0 : 0\n", "1 0 1 : 1\n", "1 1 0 : 0\n", "1 1 1 : 1" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expr2truthtable( Or(And(A, B), And(A, C)) )" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Y X\n", "0 0 : 0\n", "0 1 : 0\n", "1 0 : 0\n", "1 1 : 1" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expr2truthtable( And('X', 'Y') )" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A B C\n", "0 0 0 : 0\n", "0 0 1 : 0\n", "0 1 0 : 0\n", "0 1 1 : 1\n", "1 0 0 : 0\n", "1 0 1 : 1\n", "1 1 0 : 1\n", "1 1 1 : 1" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tt = truthtable(reversed([A,B,C]), \"00010111\")\n", "tt" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Or(And(~A, B, C), And(A, ~B, C), And(A, B, ~C), And(A, B, C))" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "truthtable2expr( tt ) " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }