summaryrefslogtreecommitdiff
path: root/blog/thors-hammer/index.html
diff options
context:
space:
mode:
authorjaseg <git@jaseg.de>2023-03-19 15:29:32 +0100
committerjaseg <git@jaseg.de>2023-03-19 15:29:32 +0100
commit3f1760b0a11bbb4ff425b9298a2a94a2fce44aae (patch)
tree9cbbb03d96f556d8601f9319032785ddbf24defc /blog/thors-hammer/index.html
parent77469be23fe1777d776c0b0abd4c77f6e4080196 (diff)
parent490ca12809a2625549aae16311affdd546e9c201 (diff)
downloadblog-3f1760b0a11bbb4ff425b9298a2a94a2fce44aae.tar.gz
blog-3f1760b0a11bbb4ff425b9298a2a94a2fce44aae.tar.bz2
blog-3f1760b0a11bbb4ff425b9298a2a94a2fce44aae.zip
deploy.py auto-commit
Diffstat (limited to 'blog/thors-hammer/index.html')
-rw-r--r--blog/thors-hammer/index.html77
1 files changed, 77 insertions, 0 deletions
diff --git a/blog/thors-hammer/index.html b/blog/thors-hammer/index.html
new file mode 100644
index 0000000..38894eb
--- /dev/null
+++ b/blog/thors-hammer/index.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html><head>
+ <meta charset="utf-8">
+ <title>Thor&#39;s Hammer | Home</title>
+ <meta name="description" content="">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="mobile-web-app-capable" content="yes">
+ <meta name="color-scheme" content="dark light">
+ <link rel="stylesheet" href="/style.css">
+</head>
+<body><nav>
+
+ <a href="/" title="Home">Home</a>
+ <a href="/blog/" title="Blog">Blog</a>
+ <a href="/projects/" title="Projects">Projects</a>
+ <a href="/about/" title="About">About</a>
+ <span class="spacer"></span>
+ <a href="https://git.jaseg.de/" title="cgit">cgit</a>
+ <a href="https://github.com/jaseg" title="Github">Github</a>
+ <a href="https://gitlab.com/neinseg" title="Gitlab">Gitlab</a>
+ <a href="https://chaos.social/jaseg" title="Mastodon">Mastodon</a>
+</nav>
+
+ <header>
+ <h1>Thor&#39;s Hammer</h1>
+<ul class="breadcrumbs">
+ <li><a href="/">jaseg.de</a></li>
+ <li><a href="/blog/">Blog</a></li><li><a href="/blog/thors-hammer/">Thor&#39;s Hammer</a></li>
+</ul>
+ <strong>2018-05-03</strong>
+ </header>
+ <main>
+ <div class="document">
+
+
+<p>In case you were having an inferiority complex because your friends' IBM Model M keyboards are so much louder than the
+shitty rubber dome freebie you got with your pc... Here's the solution: Thor's Hammer, a simple typing cadence enhancer
+for <a class="reference external" href="https://en.wikipedia.org/wiki/PS/2_port">PS/2</a> keyboards.</p>
+<figure>
+ <video controls loop>
+ <source src="video/thors_hammer.mov" type="video/h264">
+ <source src="video/thors_hammer.webm" type="video/webm">
+ Your browser does not support the HTML5 video tag.
+ </video>
+ <figcaption>A demonstration of the completed project.
+
+ <a href="video/thors_hammer.mov">h264 download</a> /
+ <a href="video/thors_hammer.webm">webm download</a>
+ </figcaption>
+</figure><p>The connects to the keyboard's PS/2 clock line and briefly actuates a large solenoid on each key press. An interesting
+fact about PS/2 is that the clock line is only active as long as either the host computer or the input device actually
+want to send data. In case of a keyboard that's the case when a key is pressed or when the host changes the keyboard's
+LED state, otherwise the clock line is silent. We ignore the LED activity for now as it's generally coupled to key
+presses. By just triggering an NE555 configured as astable flipflop we can stretch each train of clock pulses to a
+pulse a few tens of milliseconds long that is enough to actuate the solenoid.</p>
+<figure>
+ <img src="images/thors_hammer_schematic.jpg" alt="The schematic of the PS2 driver">
+ <figcaption>The schematic of the driver stretching the PS/2 clock pulses to drive the solenoid.</figcaption>
+</figure><p>Since PS/2 sends each key press and key release separately this circuit will pulse twice per keystroke. It would be
+possible to ignore one of them but I figure the added noise just adds to the experience.</p>
+<p>Built on a breadboard, the circuit looks like this.</p>
+<figure>
+ <img src="images/thors_hammer_breadboard.jpg" alt="The circuit built on a breadboard">
+ <figcaption>The completed circuit built up on a breadboard and attached to a keyboard.</figcaption>
+</figure><p>Since my solenoid did not have a tensioning spring I used a rubber band and some vinyl tape to make an adjustable
+tensioner. The small orange USB hub serves as an end-stop because I had nothing else of the right shape. The sound and
+resonance of the thing can be adjusted to taste by moving the end stop, adjusting the tensioning rubber and tuning the
+excitation duration using the potentiometer. My particular solenoid was a bit slow so I added some pieces of circuit
+board as shims between the plunger and the case to limit the plunger's travel inside the solenoid core.</p>
+</div>
+ </main><footer>
+ Copyright © 2023 Jan Sebastian Götte
+ / <a href="http://jaseg.de/about/">About</a>
+ / <a href="http://jaseg.de/imprint/">Imprint</a>
+</footer>
+</body>
+</html>