<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Giacomo&#039;s Blog</title>
	<atom:link href="http://giferrari.net/blog/?feed=rss2&#038;p=76" rel="self" type="application/rss+xml" />
	<link>http://giferrari.net/blog</link>
	<description>Ambitious, but rubbish.</description>
	<lastBuildDate>Tue, 09 Oct 2012 21:03:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Stupid simple interrupt-driver IR remote decoder for ATtiny/ATmega</title>
		<link>http://giferrari.net/blog/?p=173</link>
		<comments>http://giferrari.net/blog/?p=173#comments</comments>
		<pubDate>Sat, 22 Sep 2012 08:09:46 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Small Hacks]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=173</guid>
		<description><![CDATA[Quick one. For a project, I needed a really simple IR decoder program for an ATtiny85 that (a) Used interrupts for pulse processing, but (b) didn't use a timer interrupt, and (c) worked with an apple remote I had laying around. None of the libraries I found did this (mostly b, plus none really had [...]]]></description>
			<content:encoded><![CDATA[<p>Quick one. For a project, I needed a really simple IR decoder program for an ATtiny85 that (a) Used interrupts for pulse processing, but (b) didn't use a timer interrupt, and (c) worked with an apple remote I had laying around. None of the libraries I found did this (mostly b, plus none really had the 85 in mind), so I whipped up my own. It's stupid. It's simple. It works well enough for me. Just whack your IR decoder's output to the 85's physical pin 3, hook a 9600,8,n,1 uart input to physical pin 2, press buttons on your remote, and marvel at the numbers and stuff appearing on your screen. Enough blab, here's the goods. This should work fine with pretty much any AVR, as long as you fix up the interrupt configuration in setup() for your particular chip.</p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.</p>
<pre>
<span style="color: #7E7E7E;">/*&nbsp;SuperSimpleIR&nbsp;-</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;Bare-minimum&nbsp;no-frills&nbsp;code&nbsp;to&nbsp;interpret&nbsp;input&nbsp;from&nbsp;an&nbsp;IR&nbsp;decoder,&nbsp;using&nbsp;pin&nbsp;change&nbsp;interrupts.</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;Does&nbsp;no&nbsp;fancy&nbsp;decoding&nbsp;-&nbsp;it's&nbsp;up&nbsp;to&nbsp;you&nbsp;to&nbsp;figure&nbsp;out&nbsp;which&nbsp;button&nbsp;corresponds&nbsp;with&nbsp;the</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;output&nbsp;from&nbsp;this&nbsp;snippet.&nbsp;The&nbsp;provided&nbsp;message&nbsp;codes&nbsp;work&nbsp;with&nbsp;an&nbsp;Apple&nbsp;remote,&nbsp;but&nbsp;this&nbsp;is&nbsp;by</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;no&nbsp;means&nbsp;limited&nbsp;to&nbsp;such&nbsp;remotes&nbsp;(for&nbsp;instance,&nbsp;my&nbsp;Yamaha&nbsp;receiver's&nbsp;remote&nbsp;works&nbsp;fine&nbsp;with&nbsp;this).</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;Possible&nbsp;improvements:</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;-&nbsp;Use&nbsp;a&nbsp;timer&nbsp;interrupt&nbsp;instead&nbsp;of&nbsp;timeToCommitMessage.&nbsp;I&nbsp;didn't&nbsp;bother</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;&nbsp;&nbsp;implementing&nbsp;this&nbsp;as&nbsp;the&nbsp;project&nbsp;I&nbsp;developed&nbsp;this&nbsp;for&nbsp;will&nbsp;need&nbsp;the&nbsp;timer&nbsp;for&nbsp;other&nbsp;tasks.</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;-&nbsp;The&nbsp;message&nbsp;commit&nbsp;code&nbsp;is&nbsp;(barely)&nbsp;vulnerable&nbsp;to&nbsp;concurrency&nbsp;issues&nbsp;if&nbsp;a&nbsp;pulse&nbsp;comes&nbsp;in&nbsp;while</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;&nbsp;&nbsp;we&nbsp;try&nbsp;to&nbsp;commit&nbsp;a&nbsp;message.&nbsp;In&nbsp;practice&nbsp;I&nbsp;don't&nbsp;think&nbsp;this&nbsp;matters.</span>
<span style="color: #7E7E7E;">&nbsp;*&nbsp;-&nbsp;It&nbsp;gets&nbsp;confused&nbsp;easily&nbsp;if&nbsp;the&nbsp;signal&nbsp;gets&nbsp;weak&nbsp;and&nbsp;corrupted.</span>
<span style="color: #7E7E7E;">&nbsp;*/</span>

<span style="color: #7E7E7E;">//&nbsp;From&nbsp;the&nbsp;Tiny&nbsp;core.</span>
#include&nbsp;&lt;TinyDebugSerial.h&gt;

TinyDebugSerial&nbsp;mySerial;

<span style="color: #7E7E7E;">//&nbsp;Pin&nbsp;defs.</span>
#define&nbsp;IN_IR&nbsp;4&nbsp;<span style="color: #7E7E7E;">// If this is changed, change the code that enables interrupts.</span>

#define&nbsp;IR_MSG_PLUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011287570
#define&nbsp;IR_MSG_MINUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011279378
#define&nbsp;IR_MSG_REW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011238418
#define&nbsp;IR_MSG_FFWD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011291666
#define&nbsp;IR_MSG_PLAYPAUSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011242514
#define&nbsp;IR_MSG_MENU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011250706
#define&nbsp;IR_MSG_REPEAT_LAST_BUTTON&nbsp;0

<span style="color: #7E7E7E;">//&nbsp;After&nbsp;this&nbsp;much&nbsp;time&nbsp;has&nbsp;elapsed&nbsp;after&nbsp;the&nbsp;last&nbsp;transition,&nbsp;consider&nbsp;the</span>
<span style="color: #7E7E7E;">//&nbsp;message&nbsp;complete.</span>
#define&nbsp;MSG_COMMIT_TIME_MICROSEC&nbsp;30000

enum&nbsp;IRProtocolState&nbsp;{&nbsp;Idle,&nbsp;Building&nbsp;};

<span style="color: #CC6600;">unsigned</span> <span style="color: #CC6600;">long</span> timeOfLastIRPinChange;  <span style="color: #7E7E7E;">// Time when the last pin change happened on the IR decoder.</span>
<span style="color: #CC6600;">unsigned</span> <span style="color: #CC6600;">long</span> timeToCommitMessage;    <span style="color: #7E7E7E;">// Time after which we should consider the message complete.</span>
<span style="color: #CC6600;">unsigned</span> <span style="color: #CC6600;">long</span> message;                <span style="color: #7E7E7E;">// Workspace where the message is built up.</span>
IRProtocolState&nbsp;irProtocolState;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// What our protocol decoder is doing.</span>

<span style="color: #CC6600;">void</span> processIRMessage(<span style="color: #CC6600;">long</span> message);

ISR(PCINT0_vect)&nbsp;{
&nbsp;&nbsp;<span style="color: #CC6600;">boolean</span> isPinHigh = <span style="color: #CC6600;">digitalRead</span>(IN_IR);
&nbsp;&nbsp;<span style="color: #CC6600;">long</span> currentTime = <span style="color: #CC6600;">micros</span>();
&nbsp;&nbsp;<span style="color: #CC6600;">long</span> microsSinceLastChange = (currentTime - timeOfLastIRPinChange);
&nbsp;&nbsp;timeOfLastIRPinChange&nbsp;=&nbsp;currentTime;
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #7E7E7E;">// Bump up the commit time, since we got a level change.</span>
&nbsp;&nbsp;timeToCommitMessage&nbsp;=&nbsp;MSG_COMMIT_TIME_MICROSEC&nbsp;+&nbsp;timeOfLastIRPinChange;
&nbsp;&nbsp;
&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (!isPinHigh)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// Going low.</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (microsSinceLastChange &lt; 700)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// Space</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;message&nbsp;&lt;&lt;&nbsp;1;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">else</span> <span style="color: #CC6600;">if</span> (microsSinceLastChange &lt; 2000)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// Mark.</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;message&nbsp;&lt;&lt;&nbsp;1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;|=&nbsp;1;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">else</span> <span style="color: #CC6600;">if</span> (microsSinceLastChange &lt; 20000)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// First LOW.</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;irProtocolState&nbsp;=&nbsp;Building;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span>()
{&nbsp;
&nbsp;&nbsp;mySerial.<span style="color: #CC6600;">begin</span>(9600);
&nbsp;&nbsp;mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"IR test up."</span>);

&nbsp;&nbsp;timeOfLastIRPinChange&nbsp;=&nbsp;<span style="color: #CC6600;">micros</span>();
&nbsp;&nbsp;timeToCommitMessage&nbsp;=&nbsp;-1;
&nbsp;&nbsp;irProtocolState&nbsp;=&nbsp;Idle;
&nbsp;&nbsp;
&nbsp;&nbsp;GIMSK&nbsp;=&nbsp;_BV(PCIE);&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #7E7E7E;">// Enable pin change interrupt</span>
&nbsp;&nbsp;PCMSK&nbsp;=&nbsp;_BV(PCINT4);&nbsp;&nbsp;<span style="color: #7E7E7E;">// Enable the interrupt for only pin 4.</span>
}

<span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span>() {
&nbsp;&nbsp;<span style="color: #7E7E7E;">// Check to see if we can commit a message. If so, process it.</span>
&nbsp;&nbsp;<span style="color: #CC6600;">if</span> (<span style="color: #CC6600;">micros</span>() &gt;= timeToCommitMessage &amp;&amp; irProtocolState == Building)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">long</span> localMessage = message;
&nbsp;&nbsp;&nbsp;&nbsp;message&nbsp;=&nbsp;0;
&nbsp;&nbsp;&nbsp;&nbsp;irProtocolState&nbsp;=&nbsp;Idle;
&nbsp;&nbsp;&nbsp;&nbsp;processIRMessage(localMessage);
&nbsp;&nbsp;}
}

<span style="color: #CC6600;">void</span> processIRMessage(<span style="color: #CC6600;">long</span> message)
{
&nbsp;&nbsp;<span style="color: #CC6600;">switch</span> (message)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_PLUS: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"Plus"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_MINUS: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"Minus"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_REW: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"REW"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_FFWD: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"FFWD"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_PLAYPAUSE: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"Play/Pause"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_MENU: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"Menu"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">case</span> IR_MSG_REPEAT_LAST_BUTTON: mySerial.<span style="color: #CC6600;">println</span>(<span style="color: #006699;">"(repeat last)"</span>); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #CC6600;">default</span>: mySerial.<span style="color: #CC6600;">print</span>(<span style="color: #006699;">"Unknown code: "</span>); mySerial.<span style="color: #CC6600;">println</span>(message); <span style="color: #CC6600;">break</span>;
&nbsp;&nbsp;&nbsp;&nbsp;}
}

</pre>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classic Mac -&gt; PS2 mouse adapter</title>
		<link>http://giferrari.net/blog/?p=159</link>
		<comments>http://giferrari.net/blog/?p=159#comments</comments>
		<pubDate>Sat, 25 Aug 2012 08:40:35 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Small Hacks]]></category>
		<category><![CDATA[Vintage Computing]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=159</guid>
		<description><![CDATA[So I made a little adapter so I can connect PS/2 mice to the pre-ADB Classic Macs (128k, 512k, 512ke, probably Lisa). They use a really simple scheme: two pairs of quadrature inputs (one for X, one for Y), and one input for the single button. 5v is provided for the mouse. Perfect for a [...]]]></description>
			<content:encoded><![CDATA[<p>So I made a little adapter so I can connect PS/2 mice to the pre-ADB Classic Macs (128k, 512k, 512ke, probably Lisa). They use a really simple scheme: two pairs of quadrature inputs (one for X, one for Y), and one input for the single button. 5v is provided for the mouse. Perfect for a little microcontroller like the ATtiny to interface to (which is funny, because the ATtiny is capable of a far faster clock speed than the Macs...). Anyways here is the adapter, whipped up across a couple evenings:<br />
<a href="http://giferrari.net/blog/wp-content/uploads/2012/08/P1130559.jpg"><img src="http://giferrari.net/blog/wp-content/uploads/2012/08/P1130559-1024x768.jpg" alt="" title="Mac to PS2 Adapter 1" width="550" height="412" class="alignnone size-large wp-image-160" /></a></p>
<p>There isn't much to it, just an ATtiny84 and a couple connectors. The software is actually compatible with most AVRs, so you can use whatever AVR you have handy if you're willing to rework the PCB (they just need enough pins: 7 at bare minimum if you get rid of the status LED). You'll notice a USB plug in there. This thing does not speak USB, only mouse PS2. Thing is, most USB mice can act as PS2 devices (those little PS2->USB adapters are just wires). So instead of fiddling with adapters, I opted to directly use a USB plug. Beware though that some really modern mice don't speak PS2. If your mouse is worth less than $5, you're set <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Here's a view from the other side:<br />
<a href="http://giferrari.net/blog/wp-content/uploads/2012/08/P1130560.jpg"><img src="http://giferrari.net/blog/wp-content/uploads/2012/08/P1130560-300x225.jpg" alt="" title="Mac to PS2 Adapter 2" width="300" height="225" class="alignnone size-medium wp-image-162" /></a></p>
<p>Youtube goodness:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/Qszv5GzYDNc" frameborder="0" allowfullscreen></iframe><br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/KVvPGAEj-Zw" frameborder="0" allowfullscreen></iframe></p>
<p>I've made all the code/schematics/PCB layouts available as open-source hardware (TAPR Open Hardware License, www.tapr.org/OHL), so grab your copy here:<br />
<b><a href='http://giferrari.net/blog/wp-content/uploads/2012/08/Mac2PS2.zip'>Mac2PS2.zip</a></b></p>
<p>Note! If you'd be interested in buying a kit or fully assembled product from me, drop me a line (YouTube comment would be best). If there's at least a little bit of demand, I'll set something up. It'll be cheap; I don't plan on making money from this <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=159</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WS2801 LED Driver breakout</title>
		<link>http://giferrari.net/blog/?p=143</link>
		<comments>http://giferrari.net/blog/?p=143#comments</comments>
		<pubDate>Fri, 29 Jun 2012 09:05:46 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Small Hacks]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=143</guid>
		<description><![CDATA[Just a quickie, companion to my bedroom lighting project video here: http://youtu.be/QDfqHmQUCMA Here is the breakout board I made for this project (with the addition of a spot for a larger bypass cap, which I found necessary). Download: WS2801_Breakout WS2801 Breakount by Giacomo Ferrari is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Based on [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quickie, companion to my bedroom lighting project video here: <a href="http://youtu.be/QDfqHmQUCMA">http://youtu.be/QDfqHmQUCMA</a></p>
<p>Here is the breakout board I made for this project (with the addition of a spot for a larger bypass cap, which I found necessary). <div id="attachment_144" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/ws2801_breakout.png"><img src="http://giferrari.net/blog/wp-content/uploads/2012/06/ws2801_breakout.png" alt="" title="WS2801 Breakout 3d view" width="300" class="size-full wp-image-144" /></a><p class="wp-caption-text">WS2801 Breakout 3d view</p></div></p>
<p><strong>Download:</strong> <a href='http://giferrari.net/blog/wp-content/uploads/2012/06/WS2801_Breakout.zip'>WS2801_Breakout</a></p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">WS2801 Breakount</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://gferrari.net/blog" property="cc:attributionName" rel="cc:attributionURL">Giacomo Ferrari</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="http://giferrari.net/blog/?p=143" rel="dct:source">giferrari.net</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=143</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange Mac 512k RAM expansion by Calmos</title>
		<link>http://giferrari.net/blog/?p=115</link>
		<comments>http://giferrari.net/blog/?p=115#comments</comments>
		<pubDate>Thu, 07 Jun 2012 20:59:01 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Teardowns]]></category>
		<category><![CDATA[Vintage Computing]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=115</guid>
		<description><![CDATA[So I picked up an old Mac 512k "fat mac" the other day. I was tearing it down for some maintenance, but encountered problems because a logic board was interfering with parts of the case. Turns out it was not a stock board - it was a 3d-party RAM expansion board: You can watch my [...]]]></description>
			<content:encoded><![CDATA[<p>So I picked up an old Mac 512k "fat mac" the other day. I was tearing it down for some maintenance, but encountered problems because a logic board was interfering with parts of the case. Turns out it was not a stock board - it was a 3d-party RAM expansion board:<br />
<a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120793.jpg"><img class="alignnone size-medium wp-image-129" title="512k Calmos 68k overview" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120793-300x225.jpg" alt="512k Calmos 68k overview" width="300" height="225" /></a><br />
You can watch my teardown here: <a href="http://www.youtube.com/watch?v=mu5GSrzfKcE">Mac 512k restoration and bizarre 3d party hack </a><br />
I can't find any info at all about it, other than the model (CD101D1-3). Even the manufacturer (Calmos) is a mystery. Is it GLaDOS' more mellow sister? Who knows. Edit: Jeff points out in the comments that Calmos was a chip manufacturer. The chip itself is a SCSI controller. Regardless, this thing is fascinating in its hackishness, so I'm writing up this post to share the strangeness and to see if anyone knows anything about this. Now, think "expansion card installation" for a moment. Thinking of card edge connectors? SIL headers, perhaps? Ribbon cables? All normal. Well, this thing is a bit more... hardcore. To install, you take some SIL pin headers, <em>solder them directly onto the existing CPU's pins</em> then press the expansion card onto those headers.</p>
<div id="attachment_117" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P11208071.jpg"><img class="size-medium wp-image-117" title="512k Calmos pin header" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P11208071-300x225.jpg" alt="Soldered SIL header" width="300" height="225" /></a><p class="wp-caption-text">yep, seriously</p></div>
<div id="attachment_120" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120805.jpg"><img class="size-medium wp-image-120" title="512k Calmos header socket" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120805-300x225.jpg" alt="512k Calmos header socket" width="300" height="225" /></a><p class="wp-caption-text">The bottom of the expansion board.</p></div>
<p>Here is the top of the board.</p>
<div id="attachment_121" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120795.jpg"><img class="size-medium wp-image-121" title="512k Calmos front" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120795-300x225.jpg" alt="512k Calmos front" width="300" height="225" /></a><p class="wp-caption-text">Front view.</p></div>
<p>Normal stuff. Some SIMMs, some glue logic... and... WAIT.</p>
<div id="attachment_122" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120798.jpg"><img class="size-medium wp-image-122" title="512k Calmos 68k" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120798-300x225.jpg" alt="512k Calmos 68k" width="300" height="225" /></a><p class="wp-caption-text">Nope, this isn't the Mac's mainboard!</p></div>
<p>Yes, this Frankenstein has its own 68k. Could it be disabling the Mac's 68k to replace it with this monstrosity? Who knows. There's also this extra 2x13 header on the board that goes out to an extra DB-25 on the back of the Mac (you can see it just to the right of the expansion board's 68k on the below picture).<del> Absolutely no idea what that does.</del> Edit: It's a SCSI port.<br />
Anyway, here's some pics of the thing installed on the Mac's mainboard.</p>
<div id="attachment_123" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120817.jpg"><img class="size-medium wp-image-123" title="512k Calmos 68k installed 1" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120817-300x225.jpg" alt="512k Calmos 68k installed 1" width="300" height="225" /></a><p class="wp-caption-text">Installed front view</p></div>
<div id="attachment_124" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120816.jpg"><img class="size-medium wp-image-124" title="512k Calmos 68k installed 2" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120816-300x225.jpg" alt="512k Calmos 68k installed 2" width="300" height="225" /></a><p class="wp-caption-text">Installed side view.</p></div>
<p>More glamour shots of various parts:</p>
<div id="attachment_131" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120797.jpg"><img class="size-medium wp-image-131" title="512k Calmos 68k texts" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120797-300x225.jpg" alt="512k Calmos 68k texts" width="300" height="225" /></a><p class="wp-caption-text">Some extra info.</p></div>
<div id="attachment_132" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120801.jpg"><img class="size-medium wp-image-132" title="512k Calmos 68k SIMMs" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120801-300x225.jpg" alt="512k Calmos 68k SIMMs" width="300" height="225" /></a><p class="wp-caption-text">SIMMs.</p></div>
<div id="attachment_133" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120799.jpg"><img class="size-medium wp-image-133" title="512k Calmos 68k glue logic" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120799-300x225.jpg" alt="512k Calmos 68k glue logic" width="300" height="225" /></a><p class="wp-caption-text">Glue logic. Can't find info on those 2 AMD devices.</p></div>
<div id="attachment_134" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120803.jpg"><img class="size-medium wp-image-134" title="512k Calmos 68k custom ASIC" src="http://giferrari.net/blog/wp-content/uploads/2012/06/P1120803-300x225.jpg" alt="512k Calmos 68k custom ASIC" width="300" height="225" /></a><p class="wp-caption-text">Some custom Calmos ASIC.</p></div>
<p>So, has anyone seen this thing before? Were they popular? It does seem to work - my 512k is reporting 2 megs of ram.</p>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=115</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SOHA: Complete</title>
		<link>http://giferrari.net/blog/?p=109</link>
		<comments>http://giferrari.net/blog/?p=109#comments</comments>
		<pubDate>Wed, 02 May 2012 04:27:23 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Steampunk SOHA tube amp]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=109</guid>
		<description><![CDATA[So as it happens with these personal projects, I've finished the project but haven't finished updating the build log (yet). However I've uploaded a video to my YouTube channel that shows the final result. I'll post more as I get inspired http://www.youtube.com/watch?v=5Eyk8veiGB4]]></description>
			<content:encoded><![CDATA[<p>So as it happens with these personal projects, I've finished the project but haven't finished updating the build log (yet). However I've uploaded a video to my YouTube channel that shows the final result. I'll post more as I get inspired <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/5Eyk8veiGB4" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://www.youtube.com/watch?v=5Eyk8veiGB4">http://www.youtube.com/watch?v=5Eyk8veiGB4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=109</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Altec &#8220;Show n Go&#8221; Retractible license plate holder</title>
		<link>http://giferrari.net/blog/?p=92</link>
		<comments>http://giferrari.net/blog/?p=92#comments</comments>
		<pubDate>Sat, 18 Jun 2011 06:49:55 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Small Hacks]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=92</guid>
		<description><![CDATA[So my Altec Show'n'Go motorized plate holder broke. Brought it inside and searched a while for pictures of the underside of the device so I could see what was wrong. I found this thread. Look at the second pic in that post - see the pulley at the top of the device (covered by that [...]]]></description>
			<content:encoded><![CDATA[<p>So my Altec Show'n'Go motorized plate holder broke. Brought it inside and searched a while for pictures of the underside of the device so I could see what was wrong. I found <a href="http://www.s197.co.uk/s197/forum/phpBB3/viewtopic.php?f=14&amp;t=2070">this</a> thread. Look at the second pic in that post - see the pulley at the top of the device (covered by that square bit of metal)? Mine fell off. So I dug out a junk pulley and attached it using a screw instead of a pressed-in fastener. This means there's now a screw and a nut sticking out of the device, but that doesn't matter in my application because I mounted the holder so it juts out a bit from the bumper. I used a zip-tie to replace the square bit of metal I mentioned (presumably it's a guard to prevent the cable from falling off the pulley). Works well - the stiffness of the tie keeps it raised at just about the height of the pulley's groove. Adjust the cable tension using the nuts and enjoy. Hope this helps someone - I sure missed being 007 for a while <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div id="attachment_93" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100731-a.jpg"><img class="size-medium wp-image-93" title="Plate-borked" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100731-a-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">B0rked.</p></div>
<div id="attachment_94" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100732-a.jpg"><img class="size-medium wp-image-94" title="plate-missing" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100732-a-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Pulley goes where?</p></div>
<div id="attachment_95" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100744-a.jpg"><img class="size-medium wp-image-95" title="plate-under" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100744-a-300x234.jpg" alt="" width="300" height="234" /></a><p class="wp-caption-text">Underside.</p></div>
<div id="attachment_96" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100743-a.jpg"><img class="size-medium wp-image-96" title="plate-top" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100743-a-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Top side. Bits barely clear the lip of my bumper.</p></div>
<div id="attachment_103" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100886-a.jpg"><img class="size-medium wp-image-103" title="license - routing" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100886-a-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Color coded routing of cables (click for full size).</p></div>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=92</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Flash Arduino sketches on the move via Zipit Z2</title>
		<link>http://giferrari.net/blog/?p=76</link>
		<comments>http://giferrari.net/blog/?p=76#comments</comments>
		<pubDate>Sun, 12 Jun 2011 02:30:32 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Small Hacks]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=76</guid>
		<description><![CDATA[One thing I've found annoying with Arduinos is the relative lack of options when flashing sketches. A PC is pretty much required. Flashing in the field requires lugging around a laptop. I came up with a solution using the Zipit Z2 instant messenger client. It's a tiny device similar in form and size to one [...]]]></description>
			<content:encoded><![CDATA[<p>One thing I've found annoying with Arduinos is the relative lack of options when flashing sketches. A PC is pretty much required. Flashing in the field requires lugging around a laptop. I came up with a solution using the Zipit Z2 instant messenger client. It's a tiny device similar in form and size to one of those newer foldable GameBoy Advance handlelds. It's an interesting platform because of ability (Can run Debian Linux, has built-in WiFi), cost ($30), and battery life (around 5 hours). Unfortunately, it has no external serial port. Fortunately, it's easy to add. Just see this blog post by Geordy Rostad: <a href="http://www.notanon.com/zipit/adding-a-serial-port-to-the-zipit-z2-with-an-internal-serial-level-shifter/2010/06/24/">Adding a Serial Port to the Zipit Z2.</a> I did exactly what he did, except I omitted the level converter, connecting the serial lines directly to the new connector (such a converter would be superfluous when interfacing with an Arduino). Now, my Arduinos are generally at 5V, but the Zipit works with 3.3V. This isn't a problem with data going from the Z2 to the Arduino - 3.3V is plenty to drive the inputs of a 5V device. The other way around requires a voltage divider so we don't harm the Z2. Here's a quick schematic of my converter built into the cable:</p>
<div id="attachment_77" class="wp-caption alignnone" style="width: 411px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/cable.png"><img class="size-full wp-image-77" title="Z2-&gt;Arduino cable" src="http://giferrari.net/blog/wp-content/uploads/2011/06/cable.png" alt="" width="401" height="111" /></a><p class="wp-caption-text">Z2-&gt;Arduino cable</p></div>
<p>As for the OS I used on the Zipit: <a href="http://www.mozzwald.com/z2sid">z2sid</a>. It's my distro of choice because it's Debian (meaning apt-get works!) and gcc works. To get avrdude (the flashing program), I just did apt-get install avrdude. I whipped up this little script so I don't have to type out the rather long avrdude commands:</p>
<p style="padding: 2px 6px 4px 6px; color: #555555; background-color: #eeeeee; border: #dddddd 2px solid;"><code>avrdude -v -patmega328p -cstk500v1 -P/dev/ttyS2 -b57600 -D -Uflash:w:$1:i</code></p>
<p>Save that as flash.sh, chmod it +x, and use (./flash.sh my-sketch.hex). You might want to change the -patmega328p to whatever is appropriate for you. Note that the Z2 doesn't have a DTR line, meaning auto-reset won't work. You'll have to reset the Arduino manually, then run avrdude. Timing takes a bit of practice.</p>
<div id="attachment_78" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100702.jpg"><img class="size-medium wp-image-78" title="Z2 cable" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100702-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">The product.</p></div>
<p><object width="550" height="438"><param name="movie" value="http://www.youtube.com/v/vQoZqqiEE6o?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/vQoZqqiEE6o?version=3" type="application/x-shockwave-flash" width="550" height="438" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=76</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SOHA: Main board &amp; test</title>
		<link>http://giferrari.net/blog/?p=52</link>
		<comments>http://giferrari.net/blog/?p=52#comments</comments>
		<pubDate>Thu, 02 Jun 2011 07:18:20 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Steampunk SOHA tube amp]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=52</guid>
		<description><![CDATA[Etched and populated the main amplifier board last night. Powered it on for the first time and... buzzzzzzzzz. Still sounded rather good with music in it. After a few hours of fussing around, I discovered it was my poor-quality temporary wiring input-side. Strange feedback loops and stuff. I'll be honest, analog circuits are still a [...]]]></description>
			<content:encoded><![CDATA[<p>Etched and populated the main amplifier board last night. Powered it on for the first time and... buzzzzzzzzz. Still sounded rather good with music in it. After a few hours of fussing around, I discovered it was my poor-quality temporary wiring input-side. Strange feedback loops and stuff. I'll be honest, analog circuits are still a dark art to me. Hopefully this project has helped dispel that <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Anyways, now it's using shielded wire and... oh man. Let's just say this thing has broadened my musical horizons. I'll now listen to things on my playlist that I'd usually skip over - it's just such a pleasure to listen to this thing. Still some small noise when the music is stopped. I think that will go away once I finish up the wiring (still a bunch of unshielded sections). Even if it doesn't though, I'll be totally happy!</p>
<p>As for the design itself, I've got a bit more than a classic SOHA amp here (the VU meter stuff I talked about in my previous post). Unfortunately, I still haven't received all the parts for that (they're from Soviet Russia. Seriously.). So I'll hold off on posting the CAD designs and parts list until I know it all works. Here's some pics from the build, though.</p>
<div id="attachment_53" class="wp-caption alignnone" style="width: 291px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100534.jpg"><img class="size-medium wp-image-53" title="SOHA-main-front" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100534-281x300.jpg" alt="Front of main SOHA pcb." width="281" height="300" /></a><p class="wp-caption-text">Front resist. Turned out pretty well.</p></div>
<div id="attachment_54" class="wp-caption alignnone" style="width: 280px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100536.jpg"><img class="size-medium wp-image-54" title="SOHA-main-back" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100536-270x300.jpg" alt="Back resist." width="270" height="300" /></a><p class="wp-caption-text">Back resist. Not bad, but some pinholing. It&#39;s a ground plane though - not the end of the world.</p></div>
<div id="attachment_55" class="wp-caption alignnone" style="width: 297px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100539.jpg"><img class="size-medium wp-image-55" title="SOHA-main-silkscreen" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100539-287x300.jpg" alt="" width="287" height="300" /></a><p class="wp-caption-text">Front with silkscreen. It actually stuck this time <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<div id="attachment_56" class="wp-caption alignnone" style="width: 294px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100541.jpg"><img class="size-medium wp-image-56" title="SOHA-main-back-etched" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100541-284x300.jpg" alt="" width="284" height="300" /></a><p class="wp-caption-text">Back. Yup, pinholes. Blast.</p></div>
<div id="attachment_57" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100553.jpg"><img class="size-medium wp-image-57" title="SOHA-main-front-populated" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100553-300x273.jpg" alt="" width="300" height="273" /></a><p class="wp-caption-text">Front populated. Tube section on the left; solid state on right.</p></div>
<div id="attachment_58" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100559.jpg"><img class="size-medium wp-image-58" title="SOHA-main-tube" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100559-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Looks much cooler with the tube <img src='http://giferrari.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<div id="attachment_59" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100571.jpg"><img class="size-medium wp-image-59" title="SOHA-main-glowing" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100571-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Obligatory long-exposure night shot.</p></div>
<div id="attachment_60" class="wp-caption alignnone" style="width: 235px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100582.jpg"><img class="size-medium wp-image-60" title="SOHA-main-guts-done" src="http://giferrari.net/blog/wp-content/uploads/2011/06/P1100582-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Test setup. Not pictured: me rocking out (thankfully).</p></div>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=52</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOHA: Power supply</title>
		<link>http://giferrari.net/blog/?p=22</link>
		<comments>http://giferrari.net/blog/?p=22#comments</comments>
		<pubDate>Sun, 29 May 2011 10:34:06 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Steampunk SOHA tube amp]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=22</guid>
		<description><![CDATA[The SOHA's power supply is quite simple. It's quite clever how it obtains the ~40 volt B+ for the tube - it basically stacks two full-bridge rectifiers, decoupling them with big caps. To make case layout and circuit debugging easier, I decided to put the power supply on its own board and use various salvaged [...]]]></description>
			<content:encoded><![CDATA[<p>The SOHA's power supply is quite simple. It's quite clever how it obtains the ~40 volt B+ for the tube - it basically stacks two full-bridge rectifiers, decoupling them with big caps. To make case layout and circuit debugging easier, I decided to put the power supply on its own board and use various salvaged connectors to hook up to the main amp board. The only mod I made to the original SOHA circuit was use a bigger transformer (1000 mA) to power some eye candy (and put a bigger heatsink on VR3 to handle the extra power). Oh, I also removed the power LED (I've got other plans). I much prefer surface-mount assembly to through-hole (no drilling a thousand little frickin' holes), so I found equivalent SMT parts to the recommended through-hole parts. Here are the part numbers I used for the power supply (refer to figure 4 on the HeadWize page <a href="http://gilmore2.chem.northwestern.edu/projects/cavalli2_prj.php">here</a>). Note the connectors are absent from this list - I have no idea what I used. A few years back, some jerk broke our dorm TV. Silver lining: it contained lots of sweet surface mount connectors!</p>
<table border="1">
<tbody><!-- Results table headers --></p>
<tr>
<th>Reference</th>
<th>Description</th>
<th>Mouser Part</th>
</tr>
<tr>
<td>R9</td>
<td>2k2 1/8W</td>
<td>71-SMM02040C2201FB30</td>
</tr>
<tr>
<td>R10</td>
<td>1k3 1/8W</td>
<td>71-SMM02040C2000FB30</td>
</tr>
<tr>
<td>R11</td>
<td>11k 1/8W</td>
<td>71-SMM02040C1801FB30</td>
</tr>
<tr>
<td>C3-C6</td>
<td>100u 100V</td>
<td>5985-AFK100V100-F</td>
</tr>
<tr>
<td>C7, C8, C11</td>
<td>47u 16V</td>
<td>667-EEE-HDV470XAP</td>
</tr>
<tr>
<td>C9, C10, C12</td>
<td>470u 35V</td>
<td>667-EEE-TKV471UAQ</td>
</tr>
<tr>
<td>BR1, BR2</td>
<td>100V 1A Bridge Rect.</td>
<td>625-DF02S-E3</td>
</tr>
<tr>
<td>VR1</td>
<td>12V 0.1A Positive</td>
<td>511-L78L12ACU</td>
</tr>
<tr>
<td>VR2</td>
<td>12V 0.1A Negative</td>
<td>511-L79L12ACU-TR</td>
</tr>
<tr>
<td>VR3</td>
<td>1.5A Neg Adj Vol Reg</td>
<td>512-LM337T</td>
</tr>
<tr>
<td>D3, D4</td>
<td>1N4002 1A 100V GP</td>
<td>583-FM4002</td>
</tr>
<tr>
<td>T1</td>
<td>30.0V CT @ 0.83A</td>
<td>553-VPT30-830</td>
</tr>
</tbody>
</table>
<p>Laying this thing out was a bit of a pain due to those large caps. Also, the <a href="http://www.kicadlib.org/">kicad library archive</a> didn't have modules for most of these parts. Oh well. Here's what I came up with:</p>
<div id="attachment_23" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/psu-layout.png"><img class="size-medium wp-image-23" title="SOHA power supply board" src="http://giferrari.net/blog/wp-content/uploads/2011/05/psu-layout-300x175.png" alt="" width="300" height="175" /></a><p class="wp-caption-text">SOHA power supply board. About 3.5&quot; by 2&quot;.</p></div>
<p>Here are some pics from the build:</p>
<div id="attachment_26" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100504.jpg"><img class="size-medium wp-image-26" title="Soha: Salvaging connectors" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100504-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Some boards with juicy connectors. Salvage time.</p></div>
<div id="attachment_27" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100505.jpg"><img class="size-medium wp-image-27" title="Salvaged connectors." src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100505-300x290.jpg" alt="" width="300" height="290" /></a><p class="wp-caption-text">Whoo, free (to me) connectors!</p></div>
<div id="attachment_29" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100511.jpg"><img title="Soha psu parts test fit" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100511-300x210.jpg" alt="" width="300" height="210" /></a><p class="wp-caption-text">Always, ALWAYS make sure your parts fit your layout!</p></div>
<div id="attachment_30" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100522.jpg"><img class="size-medium wp-image-30" title="Soha psu - laminating" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100522-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Toner transfer via laminator.</p></div>
<div id="attachment_31" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100525.jpg"><img class="size-medium wp-image-31" title="Soha PSU - etched" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100525-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">All etched.</p></div>
<div id="attachment_32" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100530.jpg"><img class="size-medium wp-image-32" title="Soha PSU - populated" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100530-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">All populated and working!</p></div>
<p>&nbsp;</p>
<p>I've uploaded a KiCad project containing a schematic and the board layout.</p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" alt="Creative Commons License" /></a><br />
<span>SOHA power supply board layout</span> by <a rel="cc:attributionURL" href="http://giferrari.net/blog">Giacomo Ferrari</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</a>.</p>
<p><strong><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/SOHA_psu_board.zip">Download</a>.</strong></p>
<div id="_mcePaste" class="mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">frickin frickin</div>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=22</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOHA: PARTS!!</title>
		<link>http://giferrari.net/blog/?p=14</link>
		<comments>http://giferrari.net/blog/?p=14#comments</comments>
		<pubDate>Sun, 29 May 2011 09:26:13 +0000</pubDate>
		<dc:creator>Giacomo</dc:creator>
				<category><![CDATA[Project Logs]]></category>
		<category><![CDATA[Steampunk SOHA tube amp]]></category>

		<guid isPermaLink="false">http://giferrari.net/blog/?p=14</guid>
		<description><![CDATA[Parts! I love parts. I got a bunch of 'em in the mail for the headphone amp: Transformers! The left one is for a VU meter I'm thinking of building (I'll write about it if it works), the right one is a 30VCT, 1000mA toroid for the SOHA itself (bigger than the classic SOHA's 400mA, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100492.jpg"><img class="alignnone size-medium wp-image-15" title="Parts." src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100492-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Parts! I love parts. I got a bunch of 'em in the mail for the headphone amp:</p>
<p><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P11004991.jpg"><img class="alignnone size-medium wp-image-18" title="SOHA part pile" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P11004991-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Transformers! The left one is for a VU meter I'm thinking of building (I'll write about it if it works), the right one is a 30VCT, 1000mA toroid for the SOHA itself (bigger than the classic SOHA's 400mA, since I'm adding some accessories that need power).</p>
<div id="attachment_19" class="wp-caption alignnone" style="width: 310px"><a href="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100498.jpg"><img class="size-medium wp-image-19" title="SOHA transformers" src="http://giferrari.net/blog/wp-content/uploads/2011/05/P1100498-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Autobots, move out!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://giferrari.net/blog/?feed=rss2&#038;p=14</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
