summaryrefslogtreecommitdiff
path: root/posts/thors-hammer/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'posts/thors-hammer/index.html')
-rw-r--r--posts/thors-hammer/index.html126
1 files changed, 0 insertions, 126 deletions
diff --git a/posts/thors-hammer/index.html b/posts/thors-hammer/index.html
deleted file mode 100644
index 58e10ee..0000000
--- a/posts/thors-hammer/index.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-us">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Thor&#39;s Hammer | blog.jaseg.de</title>
- <link rel="stylesheet" href="/css/style.css" />
- <link rel="stylesheet" href="/css/fonts.css" />
-
- <header>
- <nav>
- <ul>
-
-
- <li class="pull-left ">
- <a href="https://blog.jaseg.de/">/home/blog.jaseg.de</a>
- </li>
-
-
-
-
- </ul>
- </nav>
-</header>
-
- </head>
-
- <body>
- <br/>
-
-<div class="article-meta">
-<h1><span class="title">Thor&#39;s Hammer</span></h1>
-
-<h2 class="date">2018/05/03</h2>
-<p class="terms">
-
-
-
-
-
-</p>
-</div>
-
-
-
-<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>
-
-<script>
-(function() {
- function center_el(tagName) {
- var tags = document.getElementsByTagName(tagName), i, tag;
- for (i = 0; i < tags.length; i++) {
- tag = tags[i];
- var parent = tag.parentElement;
-
- if (parent.childNodes.length === 1) {
-
- if (parent.nodeName === 'A') {
- parent = parent.parentElement;
- if (parent.childNodes.length != 1) continue;
- }
- if (parent.nodeName === 'P') parent.style.textAlign = 'center';
- }
- }
- }
- var tagNames = ['img', 'embed', 'object'];
- for (var i = 0; i < tagNames.length; i++) {
- center_el(tagNames[i]);
- }
-})();
-</script>
-
-
- <div id="license-info">
- &#169;2020 by Jan Götte. This work is licensed under
- <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC-BY-NC-SA 4.0</a>.
- </div>
- <div id="imprint-info">
- <a href="/imprint">Impressum und Haftungsausschluss und Datenschutzerklärung</a>.<br/>
- <a href="/about">About this blog</a>.
- </div>
- </footer>
- </body>
-</html>
-