From ee6d79c58f579dc4e8390964b78ed9b6b538b673 Mon Sep 17 00:00:00 2001 From: Markus Rosenstihl Date: Thu, 4 Jul 2024 22:09:20 +0200 Subject: [PATCH] inital commit --- Probe.ipynb | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 Probe.ipynb diff --git a/Probe.ipynb b/Probe.ipynb new file mode 100644 index 0000000..2c7f3f3 --- /dev/null +++ b/Probe.ipynb @@ -0,0 +1,260 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "731fc261", + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import *" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "fb15ea05", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "e0 = 8.8541878188e-12" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "ec2633de", + "metadata": {}, + "outputs": [], + "source": [ + "def capacitor(ri, ra, l, er=9):\n", + " C = 2*pi*er*e0*l/log(ra/ri)*1e12\n", + " #print(f\"{C:.2f}pF\")\n", + " return C*1e-12" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "5193496d", + "metadata": {}, + "outputs": [], + "source": [ + "def capacitor_query(ri, ra, l, er=9):\n", + " C_min = capacitor(ri,ra,l,er=1)\n", + " C_mid = capacitor(ri,ra,l/2,er=1) + capacitor(ri,ra,l/2,er=er)\n", + " C_max = capacitor(ri,ra,l,er=er)\n", + " print(\"----Params----\")\n", + " print(f\"ri = {ri*1e3:.2f}mm\\nra = {ra*1e3:.2f}mm\\nl = {l*1e3:.2f}mm\\ner = {er:.1f}\")\n", + " print(\"----Result----\")\n", + " print(f\"C_min = {C_min*1e12:.2f}pF\")\n", + " print(f\"C_max = {C_max*1e12:.2f}pF\")\n", + " print(f\"C_mid = {C_mid*1e12:.2f}pF\")" + ] + }, + { + "cell_type": "markdown", + "id": "1517377f", + "metadata": {}, + "source": [ + "Capacitor\n", + "========\n", + "First we need to know the capacitor and the range we have available,\n", + "we need the inner and outer diameter $r_i$, $r_a$, length $l$, and $\\epsilon_r$" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "e68edb6a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----Params----\n", + "ri = 4.00mm\n", + "ra = 8.00mm\n", + "l = 100.00mm\n", + "er = 2.0\n", + "----Result----\n", + "C_min = 8.03pF\n", + "C_max = 16.05pF\n", + "C_mid = 12.04pF\n" + ] + } + ], + "source": [ + "capacitor_query(4e-3,8e-3,10e-2,2)" + ] + }, + { + "cell_type": "markdown", + "id": "1188809f", + "metadata": {}, + "source": [ + "Resonance frequency of an LC circuit:\n", + "$f_0 = \\frac{1}{2\\pi\\sqrt{LC}}$\n", + "\n", + "Solve for L:\n", + "\n", + "$L_{RF}= \\frac{1}{(2\\pi f_0)^2C}$" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "5ceee5f8", + "metadata": {}, + "outputs": [], + "source": [ + "def probe_design(f0, C_mid=12e-12):\n", + " L_RF = 1e6/((2*pi*f0)**2*C_mid)\n", + " print(f\"L_RF={L_RF:.2f}µH\") \n", + " L_duplex = 50/(2*pi*f0)*1e6\n", + " print(f\"L_duplex={L_duplex:.2f}µH\") \n", + " C_duplex = 1/(2*pi*f0*50)*1e12\n", + " print(f\"C_duplex={C_duplex:.2f}pF\") \n", + " \n", + " return L_RF*1e6\n", + "\n", + "def probe_range(L_RF, C_min, C_max):\n", + " f_min = 1/(2*pi * sqrt(C_max*L_RF))\n", + " f_max = 1/(2*pi * sqrt(C_min*L_RF))\n", + " print(f\"f_min = {f_min:.1f}MHz\\nf_max = {f_max:.1f}MHz\")" + ] + }, + { + "cell_type": "markdown", + "id": "92577356", + "metadata": {}, + "source": [ + "Now we can calculate the needed coil inductance for the resonance circuit. Here, we also calculate the $\\Pi$-circuit C and L paramters for the duplexer (the \"$\\lambda/4$\" lumped circuit)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "44c4a308", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L_RF=3.37µH\n", + "L_duplex=0.32µH\n", + "C_duplex=127.32pF\n" + ] + } + ], + "source": [ + "L_RF = probe_design(25e6, C_mid=12.04e-12)" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "181a4255", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f_min = 21.7MHz\n", + "f_max = 30.6MHz\n" + ] + } + ], + "source": [ + "probe_range(L_RF, 8e-12, 16e-12)" + ] + }, + { + "cell_type": "markdown", + "id": "cdecc4f3", + "metadata": {}, + "source": [ + "Coil64\n", + "=====\n", + "Calculate the coil windings:\n", + "\n", + "Give the wire diameter, incl. isolation thickness, former diameter (5mm)\n", + "\n", + "Coil64 v2.2.32 - One layer close-winding coil\n", + "\n", + "Input:\n", + "=====\n", + " Inductance L: 3.38 microH\n", + " Frequency f: 25 MHz\n", + " Former diameter D: 5 mm\n", + " Wire diameter d: 0.3 mm\n", + " Wire diameter with insulation k: 0.436 mm\n", + " Wire material Mt: Copper\n", + "\n", + "Result:\n", + "======\n", + "\n", + " Number of turns of the coil N = 56.719 \n", + " Length of wire without leads lw = 96.894 cm\n", + " Length of winding l = 25.165 mm\n", + " Weight of wire m = 0.614 g\n", + " DC resistance of the coil Rdc = 0.236 Ohm\n", + " Reactance of the coil X = 530.929 Ohm\n", + "\n", + " Self capacitance Cs = 0.356 pF\n", + " Coil self-resonance frequency Fsr = 218.021 MHz\n", + " Coil constructive Q-factor Q = 171 \n", + " Loss resistance ESR = 2.67 Ohm\n", + "\n", + " Additional results for parallel LC circuit at the working frequency:\n", + " => Circuit capacitance: Ck = 11.635 pF\n", + " => Characteristic impedance: ρ = 531 Ohm\n", + " => Equivalent resistance: Re = 77.531 kOhm\n", + " => Bandwidth: 3dBΔf = 171.199 kHz\n", + "\n", + " Input data for LTSpice:\n", + " Inductance: 3.380μ\n", + " Series resistance: 236.334m\n", + " Parallel resistance: 78.065k\n", + " Parallel capacitance: 0.356p\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff03bfb4", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}