math gun part 1
All checks were successful
Build / Build-Docker-Image (push) Successful in 42s

This commit is contained in:
2025-05-07 13:25:22 -04:00
parent 2e9fe9f666
commit bf278a61cf
4 changed files with 446 additions and 0 deletions

88
site/posts/math-gun.html Normal file
View File

@@ -0,0 +1,88 @@
[!]
[=post-]
[#config.stx]
<p>
Hello once more, gentle readers! I hope everyone's having a decent break and won't be suffering from boredom this summer. Today we're covering
a much-awaited topic: railguns! When I first learned about magnetism in physics, the very first thing I thought was - "wait, I can make a math gun".
Railguns have always fascinated me, and now that I actually understand the fundamental principles behind them, naturally I want to build one.
</p>
<p>
I'm gonna do this in three sections. The first one (this one) will cover building the initial mathematical model: an equation relating all the properties
of a <i>parametric math gun</i> (is that an official term? no. no it is not), including properties of the circuit (like the capacitor grid).
The second section will cover building a computational model to visualize (and verify) the results - and the last section will involve actually
building the railgun with the kind folks over at
<a href="https://scrappysgarage.org/">Scrappy's Garage</a>, who unlike me have the equipment to manufacture a railgun.
</p>
<p>
<img style="float: right; height: 300px;" src="[^baseurl]/posts/res/railgun-concept.png" /> The basic design of a railgun relies on a property of circuits and magnetics: `F = IL times B` - the force on a current segment is equal to the
length of the segment, times the magnitude of the current, times the direction of the current, cross with the magnetic field around it.
Railguns, then, work by running a current in the `hat x` direction through a conductive object, and using permanent magnets to produce a sustained
magnetic field across that object in the `hat z` direction. This leads to a net force in the `hat x times hat z = hat y` direction. The easiest way
to generate that current is with a pair of powered rails.
<br><br>
The attractive thing about railguns is that they can produce a powerful shot, even in a fairly low-power system. A small drone battery might produce a 5A max current,
and you can pretty easily get magnets that will produce a field in the ballpark of 1T. Because the directions are all perpendicular, we can multiply the magnitudes directly
on the cross product; a fairly small (5cm) rail weighing 10 grams in that field under these conditions will experience several gravities of acceleration (25 meters per second squared).
Consider the highly idealized case of an object experiencing this acceleration across a 50cm rail: `frac 25 2 t^2 = 0.5 -> t = sqrt(frac 1 25)`, working out to an exit velocity of
`v = 25t = frac 25 5 = 5` meters per second. That's pretty fast for a launch from a fairly small, weak assembly! However, this is an oversimplified model. To get anything
like accuracy, we need to consider air friction, mechanical friction, and self-induction. Let's do air friction first.
</p>
<p>
The general formula for drag is `F_d = frac 1 2 v^2 p C_d A`: the drag force is one half of the velocity squared, times the density of the fluid, times the drag coefficient,
times the cross sectional area. This obviously isn't a perfect model, but I don't want to build a CFD simulation, so it'll have to work. If we assume the object we're launching
is a 1cm diameter ball bearing (weighing ~4 grams - it's shockingly hard to find this size, but McMaster comes in clutch as always), we're looking at a circular cross-section
of `pi 0.005^2` regardless of orientation. The drag coefficient of a sphere is `0.47`, and the density of atmosphere at sea level is `1.225` kilograms per meter cubed, so we're
looking at a drag force of `F_d = frac {0.47 * 1.225} 2 pi 0.005^2 v^2`, or `~9*10^{-5} v^2`. This means the formal equation for force on our marble (normalized to the y direction only) is now
`F = 0.01IB - 9*10^{-5} v^2`. Acceleration is simply that divided by mass. Because velocity is the integral of acceleration, and we're starting from 0, we have this little
formula: `v = frac 1 0.004 int_0^t 0.01IB - 9*10^{-5} v^2 dt`. This is a very difficult integral to calculate; let's table it for now. Until we reach fairly high velocities, we don't have
to worry much about this.
</p>
<p>
Let's now worry about induction. As the marble moves through the magnetic field, it induces a current in the rails opposing the one running through it - this is Faraday's and Lenz' law.
This induced electromotive force is equal to `- frac {d phi} {dt}`, where `phi` is the <i>magnetic flux</i> through a given loop. Magnetic flux is simply the surface integral of magnetic field
over the inside of the loop - in this case with uniform `B`, it's just the magnetic field times the area. Taking `L` to be the distance between wires, flux is thus
`B L y`, where `y` is the height of the loop. We don't have to know `y` rigorously; we just need to know the change in `y`, which is `frac {dy} {dt} = v`. Because the other
terms are constant, this means `- frac {d phi} {dt} = -BLv`. That's the induced voltage! This means our voltage at any given time is `V = Emf - BLv`. That's very easy to plug
into our above formula: Ohm's law gives us `I = frac V R`, so the full equation is now `v = frac 1 0.004 int_0^t 0.01B frac {Emf - BLv} {R} - 9*10^{-5} v^2 dt`.
</p>
<p>
This is an extremely hard integral to find - even Wolfram|Alpha has no idea. We'll have to build a computational model.
</p>
<p>
<img style="float: right; height: 200px;" src="[^baseurl]/posts/res/capacitor-grid-charging.png" /> There's one more thing to do before wrapping this up: we need to consider capacitors. For those not in the know, a capacitor is essentially a short-term battery
that charges and discharges comparatively quickly. The attractive thing about capacitors in this situation is that they can be used to turn a battery's continuous
low voltage into a brief push of very high voltage.
</p>
<p>
You can see in the graphic to the right an example of a voltage source charging a bunch of capacitors in series: I won't go into the nitty-gritty details of how this works
on a micro level (although it <i>is</i> quite fascinating). This will take a long time: note that it is in parallel, so the voltage across each capacitor
will be charged up to `Emf`. When discharging, the capacitors are switched into series: remember the Loop Rule of a circuit - the voltages will add, meaning the
total voltage through the bulb is `5 Emf`. The tradeoff is that, of course, we won't get a <i>sustained</i> voltage this way: we'll have to spend 5x as much time
charging as discharging. For a system like a railgun, this is quite ideal: we have a capacitor grid that charges from a battery until we fire a shot, then discharges
into the rails until the shot finishes (this would have to be managed by a microcontroller switching solid state relays - we'd use a hall effect sensor to determine
when no current is running through the rails, meaning the marble has left the track). We can tune the duration of capacitor discharge with a resistor.
</p>
<p>
Tuning properties of the capacitor grid and resistor(s?) will likely require brute-force sampling with a computational model; to do that we'll need to have some formulas
to compute. Given that the base resistance of the railgun is `R`, and the added resistor is in series with the railgun, our total resistance is `R + R_"add"`.
Let's also assume we're using `N` capacitors with capacitance `C`, so our final series voltage is `V = N "Emf"`. Capacitors charge by an exponential function `Q = C"Emf"(1 - e^{- frac t {RC}})`,
and `V = frac Q C`, so our capacitor voltage in terms of time is `V(t) = "Emf"(1 - e^{- frac t {RC}})`. This will clearly never reach `"Emf"`, but will quickly <i>approach</i> it -
if we want to know the time `t` at which we'll have reached a voltage `V_"targ"`, we solve `V_"targ" = "Emf"(1 - e^{- frac t {RC}})` to get
`t = -RC ln(1 - frac {V_"targ"} {"Emf"})`. `1 - frac {V_"targ"} {"Emf"}` is very convenient for our purposes: for instance, if we want to get within 20%, it's just
`ln(0.2)`. Assuming we're using larger capacitors on the order of millifarads, and the charging circuit has in the ballpark of 0.01 ohms of initial resistance (this is reasonable,
although maybe a bit conservative
based on copper wire numbers), then `RC` is on the order of `0.00001`. This gives us 16 <i>micro</i>seconds to an 80% charge, 23 micros to 90%, and about 30 microseconds to
95%. Note that this is true for <i>any</i> voltages - a dinky 3.3v battery array and a chonky 120v wall socket supply will both charge our lil' 1mf capacitor to 95% in 30 microseconds
(although the wall socket is significantly more likely to blow it up - don't try this at home). Because we're charging in parallel, we logically just multiply by `N` to get
the total time to charge the entire grid.
</p>
<p>
There is a lot more complexity with capacitors (and price... jeez, $50 for a single capacitor), but it's not useful to theorize about the capacitor grid much more
without some concrete simulation and bench test results. See you next time with a computational model!
</p>
[/]
[=author "Tyler Clarke"]
[=date "2025-5-2"]
[=subject "Physics"]
[=title "Math Gun pt. 1"]
[#post.html]

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,358 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="85.935646mm"
height="162.59895mm"
viewBox="0 0 85.935646 162.59895"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="railgun-concept.svg"
inkscape:export-filename="railgun-concept.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.763461"
inkscape:cx="109.37035"
inkscape:cy="307.15387"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:export-bgcolor="#ffffffff" />
<defs
id="defs1">
<inkscape:path-effect
effect="bspline"
id="path-effect5"
is_visible="true"
lpeversion="1.3"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false"
uniform="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect3"
is_visible="true"
lpeversion="1.3"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false"
uniform="false" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-29.664019,-65.328031)">
<g
id="g29"
transform="translate(1.5875)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#00ff00;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="rect17"
width="84.906647"
height="11.436406"
x="28.591019"
y="167.38739"
rx="1.110223e-15"
ry="11.436406" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.40745px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
x="70.621674"
y="175.32097"
id="text17"><tspan
sodipodi:role="line"
id="tspan17"
style="stroke-width:1.029"
x="70.621674"
y="175.32097">bar magnet</tspan></text>
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="path17"
cx="104.39272"
cy="172.02742"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 106.42218,174.22257 -4.18316,-4.18317"
id="path18" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 102.11477,173.97406 4.10033,-4.10033"
id="path19" />
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="circle19"
cx="40.433792"
cy="173.25269"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 42.463254,175.44784 -4.18316,-4.18317"
id="path20" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 38.155844,175.19933 4.10033,-4.10033"
id="path21" />
</g>
<g
id="g36"
transform="translate(1.5875,-26.458334)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#00ff00;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="rect32"
width="84.906647"
height="11.436406"
x="28.591019"
y="167.38739"
rx="1.110223e-15"
ry="11.436406" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.40745px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
x="70.621674"
y="175.32097"
id="text32"><tspan
sodipodi:role="line"
id="tspan32"
style="stroke-width:1.029"
x="70.621674"
y="175.32097">bar magnet</tspan></text>
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="circle32"
cx="104.39272"
cy="172.02742"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 106.42218,174.22257 -4.18316,-4.18317"
id="path33" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 102.11477,173.97406 4.10033,-4.10033"
id="path34" />
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="circle34"
cx="40.433792"
cy="173.25269"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 42.463254,175.44784 -4.18316,-4.18317"
id="path35" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 38.155844,175.19933 4.10033,-4.10033"
id="path36" />
</g>
<g
id="g44"
transform="translate(1.5875,-52.916669)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#00ff00;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="rect40"
width="84.906647"
height="11.436406"
x="28.591019"
y="167.38739"
rx="1.110223e-15"
ry="11.436406" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.40745px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
x="70.621674"
y="175.32097"
id="text40"><tspan
sodipodi:role="line"
id="tspan40"
style="stroke-width:1.029"
x="70.621674"
y="175.32097">bar magnet</tspan></text>
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="circle40"
cx="104.39272"
cy="172.02742"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 106.42218,174.22257 -4.18316,-4.18317"
id="path41" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 102.11477,173.97406 4.10033,-4.10033"
id="path42" />
<circle
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="circle42"
cx="40.433792"
cy="173.25269"
r="2.9406397" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 42.463254,175.44784 -4.18316,-4.18317"
id="path43" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 38.155844,175.19933 4.10033,-4.10033"
id="path44" />
</g>
<path
style="fill:#1a1a1a;stroke:#000000;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
d="M 48.518085,204.12252 V 66.192531"
id="path1" />
<path
style="fill:#1a1a1a;stroke:#000000;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
d="M 95.613924,204.12252 V 66.192531"
id="path2" />
<text
xml:space="preserve"
style="font-weight:600;font-size:9.87778px;font-family:'URW Gothic';-inkscape-font-specification:'URW Gothic Semi-Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#1a1a1a;stroke:#000000;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
x="72.378319"
y="227.92699"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.87778px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.729"
x="72.378319"
y="227.92699">Emf</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
d="m 78.668609,220.75729 c 7.97083,-1.61727 15.941659,-3.23454 18.078728,-5.71824 2.137069,-2.48369 -1.559477,-5.83369 -3.465543,-8.2596 -1.906067,-2.42592 -2.021584,-3.92764 -2.137105,-5.4294"
id="path3"
inkscape:path-effect="#path-effect3"
inkscape:original-d="m 78.668609,220.75729 c 7.97083,-1.61727 15.941659,-3.23454 23.912481,-4.85181 -3.696685,-3.35012 -7.393226,-6.70012 -11.089841,-10.05017 -0.115523,-1.50178 -0.23104,-3.0035 -0.34656,-4.50526"
transform="translate(4.5174469,3.5816401)" />
<path
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
d="m 78.668609,220.75729 c 7.97083,-1.61727 15.941659,-3.23454 18.078728,-5.71824 2.137069,-2.48369 -1.559477,-5.83369 -3.465543,-8.2596 -1.906067,-2.42592 -2.021584,-3.92764 -2.137105,-5.4294"
id="path4"
inkscape:path-effect="#path-effect5"
inkscape:original-d="m 78.668609,220.75729 c 7.97083,-1.61727 15.941659,-3.23454 23.912481,-4.85181 -3.696685,-3.35012 -7.393226,-6.70012 -11.089841,-10.05017 -0.115523,-1.50178 -0.23104,-3.0035 -0.34656,-4.50526"
transform="matrix(-1,0,0,1,139.66718,3.5510067)" />
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 49.19142,194.07308 2.915822,-3.11632 2.726482,2.91396"
id="path5" />
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 52.220845,191.07817 v 8.41813"
id="path6" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.87777px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
x="44.833759"
y="199.28506"
id="text6"><tspan
sodipodi:role="line"
id="tspan6"
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729"
x="44.833759"
y="199.28506">I</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 96.731773,196.95938 2.91582,3.11632 2.726487,-2.91396"
id="path7" />
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 99.761203,199.95429 v -8.41813"
id="path8" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.87777px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
x="92.374107"
y="-191.74739"
id="text8"
transform="scale(1,-1)"><tspan
sodipodi:role="line"
id="tspan8"
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729"
x="92.374107"
y="-191.74739">I</tspan></text>
<rect
style="fill:#552200;fill-opacity:1;stroke:none;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
id="rect8"
width="64.203972"
height="21.074587"
x="41.515522"
y="95.224243"
rx="1.110223e-15"
ry="11.599999" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.71186px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
x="73.025894"
y="111.02876"
id="text9"><tspan
sodipodi:role="line"
id="tspan9"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;stroke-width:1.029"
x="73.025894"
y="111.02876">big conductive thing</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 75.250565,97.666083 3.25411,2.761207 -2.778256,2.86463"
id="path53" />
<path
style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 78.388919,100.54665 -8.40822,0.40839"
id="path54" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.87777px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
x="67.175652"
y="104.01878"
id="text54"><tspan
sodipodi:role="line"
id="tspan54"
style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1.729"
x="67.175652"
y="104.01878">I</tspan></text>
<path
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 72.226434,86.98477 2.915822,-3.11632 2.726482,2.91396"
id="path55" />
<path
style="fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:1.029;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="m 75.255859,83.98986 v 8.41813"
id="path56" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:9.87777px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1.729;stroke-linecap:square;stroke-opacity:1"
x="67.868774"
y="92.196754"
id="text56"><tspan
sodipodi:role="line"
id="tspan56"
style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1.729"
x="67.868774"
y="92.196754">F</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB