<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
>

<channel>
	<title>KwartzLab Makerspace &#187; Projects</title>
	<atom:link href="http://www.kwartzlab.ca/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kwartzlab.ca</link>
	<description>Home of Kwartzlab Makerspace in Kitchener/Waterloo, Ontario</description>
	<lastBuildDate>Sun, 19 May 2013 23:30:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<!-- podcast_generator="Blubrry PowerPress/4.0.7" -->
	<itunes:summary>Regular discussions with hackers, makers and artists at the Kwartzlab Makerspace. We talk about what projects people are working on, what events are coming up and how you can get involved.</itunes:summary>
	<itunes:author>kwartzlab</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.kwartzlab.ca/wp-content/uploads/powerpress/light_box_logo.jpg" />
	<itunes:owner>
		<itunes:name>kwartzlab</itunes:name>
		<itunes:email>podcast@kwartzlab.ca</itunes:email>
	</itunes:owner>
	<managingEditor>podcast@kwartzlab.ca (kwartzlab)</managingEditor>
	<itunes:subtitle>A hackerspace radio show</itunes:subtitle>
	<itunes:keywords>kwartzlab, hackerspace, makerspace, diy, hardware, software, maker, hacker, artist, roundtable</itunes:keywords>
	<image>
		<title>KwartzLab Makerspace &#187; Projects</title>
		<url>http://www.kwartzlab.ca/wp-content/uploads/powerpress/light_box_logo.jpg</url>
		<link>http://www.kwartzlab.ca/category/projects/</link>
	</image>
	<itunes:category text="Technology" />
	<itunes:category text="Arts" />
	<itunes:category text="Games &amp; Hobbies">
		<itunes:category text="Hobbies" />
	</itunes:category>
		<rawvoice:location>Kitchener, ON</rawvoice:location>
		<item>
		<title>Update on the LPKF board mill</title>
		<link>http://www.kwartzlab.ca/2012/10/update-lpkf-board-mill/</link>
		<comments>http://www.kwartzlab.ca/2012/10/update-lpkf-board-mill/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 13:39:31 +0000</pubDate>
		<dc:creator>kpmartin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[The Heavy Lab]]></category>
		<category><![CDATA[TON in Pictures]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2910</guid>
		<description><![CDATA[Over the past few months, Richard and myself have been trying to get the LPKF PC board mill working. The past few weeks we have been joined by Tennessee, who has been invaluable in homing in on the problems. We&#8217;ve been doing this on a weekly basis at pretty much every TON since the start [...]]]></description>
				<content:encoded><![CDATA[<p>Over the past few months, Richard and myself have been trying to get the LPKF PC board mill working. The past few weeks we have been joined by Tennessee, who has been invaluable in homing in on the problems. We&#8217;ve been doing this on a weekly basis at pretty much every TON since the start of the summer.</p>
<p>At last report we had the main board in the mill working properly, allowing XY motion, head lift/lower, and chuck open/close. Getting the mill to this stage required replacing a shorted capacitor in the 5-volt power supply.</p>
<p>However, the so-called HF board which controls the spindle drive and tool crib is still non-responsive. It was not clear originally if this board was defective or whether a problem in the main board was impeding communications between the boards.</p>
<p>In August, Chris Ware from LPKF came to have a look, and determined that the problem was in the HF board, and later provided a price quote in the order of $650 for a board (with trade-in), shipping and taxes extra. Not having that kind of pocket change we persevered in diagnosing the problem.</p>
<p>One week we convinced ourselves that the communications were fine (both ends of the board-to-board connection use RS232 driver chips, which are pretty resilient).</p>
<p>Another week we determined that the &#8220;overload&#8221; light on the HF board was due to a power-up transient not being reset by the firmware, which in turn implied something else was getting the firmware upset.</p>
<p>Another week we determined that the processor was not even running (or, at least, not doing any program ROM accesses).</p>
<p>Another week we determined that the processor <span style="text-decoration: overline">RESET</span> line was being held low; it should normally hold low for 10-20ms on power up, then go high allowing the processor to run.</p>
<p>The next week a closer examination revealed that the <span style="text-decoration: overline">RESET</span> pin was not making contact in the IC socket anyway. Somehow the pin in the socket had been pushed back and was not springing out to contact the terminal on the IC. However, inserting a small wire to make full contact made no difference.</p>
<p>The <span style="text-decoration: overline">RESET</span> pin is driven by a very simple circuit: It is grounded through a capacitor, so on power-up the pin starts off at ground. The processor chip has an internal pull-up current source on the pin which charges the capacitor towards +5V. Once the capacitor is charged enough, the Schmidt-trigger input tied to the pin senses the end of the Reset state and starts the processor running. At least, that&#8217;s how it is supposed to work. In our case, the pin was being held stubbornly at about 35mV (when a wire was used to make the socket pin contact the IC pin). Using an external resistor to +5V to try to pull it up only raised the voltage by a few mV, which implied that there was (somewhere) about 20Ω to ground on the pin. On the other hand the external capacitor checked out fine.</p>
<p>This week, given that the socket was clearly defective and the processor condition was unknown, we pulled the processor from its socket and removed the socket from the board. The board (a fibreglass one) suffered some delamination in the process but all the vias are still fine. Cleaning up the solder holes in the board was a bit comical: we had Tennessee with the soldering iron, Richard holding the board, and me holding a vacuum cleaner nozzle to the back of the board, to suck all the holes clear of solder to allow a new socket to be inserted. It worked like a charm (and the vacuum nozzle was grounded metal so no worries about static discharge damaging the board).</p>
<div id="attachment_2935" class="wp-caption alignleft" style="width: 624px"><img class=" wp-image-2935 " src="http://www.kwartzlab.ca/wp-content/uploads/2012/10/Desoldering-1024x914.jpg" alt="three people, a vacuum cleaner, and a soldering iron to clean holes on a PCB" width="614" height="548" /><p class="wp-caption-text">Richard is holding the edge of the board (and the camera), I&#8217;ve got the vacuum cleaner hose under the board, and Tennessee is holding the corner of the board and wielding the soldering iron. It looks really awkward but was very effective at clearing out the solder from the holes in the PCB.</p></div>
<p>For next week I will have a new socket so we can see if this magically fixes the problem; if not we will have to try replacing the processor. Fortunately they are still available as NOS from Hong Kong, and they contain no ROM so we don&#8217;t have to worry about programming them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/10/update-lpkf-board-mill/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Raspberry Pi Jam and Laser Cut Case</title>
		<link>http://www.kwartzlab.ca/2012/09/raspberry-pi-jam-and-laser-cut-case/</link>
		<comments>http://www.kwartzlab.ca/2012/09/raspberry-pi-jam-and-laser-cut-case/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 05:08:55 +0000</pubDate>
		<dc:creator>karlw</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2868</guid>
		<description><![CDATA[Come out to the Raspberry Pi Jam on Saturday Sept. 15, 2012 at 4pm and laser cut a case.  Show off what your Raspberry Pi can do. Make a case with our laser cutter. Learn how to write code for it and much more! Open to all.]]></description>
				<content:encoded><![CDATA[<p>Come out to the Raspberry Pi Jam on Saturday Sept. 15, 2012 at 4pm and laser cut a case.  Show off what your Raspberry Pi can do. Make a case with our laser cutter. Learn how to write code for it and much more! Open to all.</p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2012/09/Raspberry_pi_case2.jpg"><img class="alignnone size-full wp-image-2867" src="http://www.kwartzlab.ca/wp-content/uploads/2012/09/Raspberry_pi_case2.jpg" alt="" width="504" height="342" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/09/raspberry-pi-jam-and-laser-cut-case/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Arduino Car</title>
		<link>http://www.kwartzlab.ca/2012/06/arduino-car/</link>
		<comments>http://www.kwartzlab.ca/2012/06/arduino-car/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 20:30:17 +0000</pubDate>
		<dc:creator>Chris Bruner</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2617</guid>
		<description><![CDATA[My goal in this is to learn about motor drivers, distance sensors, and have a platform that I can use for experimentation. To that end, I preformed a frontal lobotomy on a remote control hummer. The car was originally around $20, so even if it went up in flames I wouldn&#8217;t be out that much [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.kwartzlab.ca/wp-content/uploads/2012/06/ArduinoCar1.jpg" alt="Hacked RC Car" /></p>
<p>My goal in this is to learn about motor drivers, distance sensors, and have a platform that I can use for experimentation.</p>
<p>To that end, I preformed a frontal lobotomy on a remote control hummer. The car was originally around $20, so even if it went up in flames I wouldn&#8217;t be out that much (initialy).</p>
<p>The first step was to take the outer body off. Then snip snip the brains are out.  The mechanics of the car seem to be really well designed, the electronics not so much.<br />
Next is upgrading the battery to a lithium-ion battery instead of the double A&#8217;s.  I&#8217;ve done this with other projects. I use the VPX&#8217;s which are a 7 volt battery used in home power tools.  They are no longer in production, so I snarfed up the last available from Home Depot. They are great because I&#8217;ve got a charger made for them, they are relativily small, and they don&#8217;t put out enough voltage to make me want to wear rubber gloves. </p>
<p>The next step was put in a <a href="http://www.solarbotics.com/product/k_cmd/" title="motor controller" target="_blank">motor controller</a>, as well as an <a href="http://www.solarbotics.com/product/50450/" title="arduino" target="_blank">arduino</a>. Both were bought from solarbotics. The motor contoller (a fun little project in itself) is mounted above the battery, and the arduino above that. The motor controller has LEDs that show the direction of the motor and when the motor is turning, and the motor controller can control two motors, so 4 lights in total. These got attached to the outer body.</p>
<p>The next thing added is a distance sensor. This is the first sensor added and where the software starts. My first project with my new platform was to make it stay a certain distance from whatever is in front of it.  Through experimentation, I&#8217;ve found that I need to have a delay in the loop, otherwise the poor thing just sits there nervously shaking, decisions happening faster then it can react.  I then tried from memory adding PID code, which gave it a rather agressive stance. It would run at an object, slow down, then back away from the object,  over and over.   I believe that I&#8217;m getting closer. wikipedia has some psudocode for <a href="http://en.wikipedia.org/wiki/PID_controller" title="PID controller" target="_blank">PID controller</a></p>
<pre>
previous_error = setpoint - process_feedback
integral = 0
start:
  wait(dt)
  error = setpoint - process_feedback
  integral = integral + (error*dt)
  derivative = (error - previous_error)/dt
  output = (Kp*error) + (Ki*integral) + (Kd*derivative)
  previous_error = error
  goto start
</pre>
<p>That i&#8217;m going to try soon. </p>
<p>One problem that I noticed was that the usb connected to the Arduino was affecting the readings, so I could get things nicely tuned on a stand with the Arduino attached, but as soon as I disconnected the PC and ran strictly off battery power, the settings changed. </p>
<p>To that end I&#8217;ve added a bluetooth addapter. I&#8217;m excited about this, because I realized that I can do some major cpu programming on my laptop and the little Arduino only has to handle the I/O. I&#8217;d like the whole thing to be autonomous, but for now this is good.  Maybe my next one will lug around a laptop.</p>
<p>The blue tooth adapter works fine on the Arduino, but getting the laptop to talk to it ended up being rather difficult. Finally got a device to work at /dev/rfcomm0 and if I cat&#8217;d that device I&#8217;d get all the data that the Arduino was spewing out. (Distance measurments and so on).  </p>
<p>A trick I discovered the hard way is programming the Arduino can&#8217;t be done while the Bluetooth is online. Another switch to come for easy Bluetooth disconnect.</p>
<p>At this point, the RC Car has:</p>
<li>a front motor removed, (it was 4 wheel drive) because the motor was too flaky. </li>
<li>1 distance sensors</li>
<li>2 light sensors on the bottom, (line following fun to come)</li>
<li>1 motor controller (for 2 motors)</li>
<li>1 arduino</li>
<li>1 bluetooth RC module</li>
<p>I&#8217;ll do more updates as I progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/06/arduino-car/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Project: Wooden Table</title>
		<link>http://www.kwartzlab.ca/2012/05/project-wooden-table/</link>
		<comments>http://www.kwartzlab.ca/2012/05/project-wooden-table/#comments</comments>
		<pubDate>Sun, 27 May 2012 17:28:27 +0000</pubDate>
		<dc:creator>amackie</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[The Heavy Lab]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2524</guid>
		<description><![CDATA[I managed to complete a table I&#8217;ve been working on for a number of months, and has been in and out of the Heavy Lab. I found an Ikea Molger frame in the As-Is section (my favourite haunt!), and thought it would make a good base for a table.  So, I procured two planks of [...]]]></description>
				<content:encoded><![CDATA[<p>I managed to complete a table I&#8217;ve been working on for a number of months, and has been in and out of the Heavy Lab.</p>
<p>I found an Ikea Molger frame in the As-Is section (my favourite haunt!), and thought it would make a good base for a table.  So, I procured two planks of wood (walnut I think?) from the annual <a title="Woodworking Show" href="http://www.woodshows.com/index.php?categoryid=35">Woodworking Show at Bingeman&#8217;s</a>.  I think glued them together, added dowelled wooden gussets underneath to ensure a strong bond, then planed down the top until it was smooth.  Planing was the most repetitive step, and it was fortunate that the &#8216;Lab had enough space to hold the tabletop until it was completely levelled.  I connected the tabletop to the frame with dowels running through the four posts, then varnished the top.</p>
<p>After all was said and done, it was still rather wobbly.  To strengthen it up, I got eight shiny turnbuckles, and attached them domed screws and nuts to both sides of every post.  The great thing with turnbuckles is that you can control the tension that they have on the legs by just turning them, so I tightened them until I had a much more rigid frame.</p>
<p>I&#8217;m not sure quite what to do with the table yet, but it&#8217;s doing a great job holding mail in our front room right now&#8230;</p>
<p>&nbsp;</p>

<a href='http://www.kwartzlab.ca/2012/05/project-wooden-table/awesometable/' title='Awesometable'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/05/Awesometable-150x150.jpg" class="attachment-thumbnail" alt="Awesometable" /></a>
<a href='http://www.kwartzlab.ca/2012/05/project-wooden-table/awesometable2/' title='Awesometable2'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/05/Awesometable2-150x150.jpg" class="attachment-thumbnail" alt="Awesometable2" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/05/project-wooden-table/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Laser cut Police Box (aka TARDIS)</title>
		<link>http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/</link>
		<comments>http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 17:42:27 +0000</pubDate>
		<dc:creator>markp</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[doctor who]]></category>
		<category><![CDATA[laser cutter]]></category>
		<category><![CDATA[pictures]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[toy]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2298</guid>
		<description><![CDATA[Working on a 1/12 scale Police Box for my kids since they started playing Doctor Who (no really, honest.) Based on pictures of the 50&#8242;s era Police Box, but lots of liberties taken to make it easy to laser cut. First version was 1/8 scale to make it easier to figure out the cuts. Laser [...]]]></description>
				<content:encoded><![CDATA[<p>Working on a 1/12 scale Police Box for my kids since they started playing Doctor Who (no really, honest.) </p>
<p>Based on pictures of the 50&#8242;s era Police Box, but lots of liberties taken to make it easy to laser cut. First version was 1/8 scale to make it easier to figure out the cuts.</p>
<p>Laser cut from 3mm hardboard and assembled with a bit of glue, but mostly it press-fits together.</p>

<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2194-large/' title='MAP_2194 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2194-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2194 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2184-large/' title='MAP_2184 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2184-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2184 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2193-large/' title='MAP_2193 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2193-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2193 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2188-large/' title='MAP_2188 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2188-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2188 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2178-large/' title='MAP_2178 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2178-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2178 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2191-large/' title='MAP_2191 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2191-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2191 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2190-large/' title='MAP_2190 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2190-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2190 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2168-large/' title='MAP_2168 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2168-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2168 (Large)" /></a>
<a href='http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/map_2187-large/' title='MAP_2187 (Large)'><img width="150" height="150" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/MAP_2187-Large-150x150.jpg" class="attachment-thumbnail" alt="MAP_2187 (Large)" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/03/laser-cut-police-box-aka-tardis/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hacky Hallowe&#8217;en!</title>
		<link>http://www.kwartzlab.ca/2011/09/hacky-halloween/</link>
		<comments>http://www.kwartzlab.ca/2011/09/hacky-halloween/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 05:16:18 +0000</pubDate>
		<dc:creator>Darcy Casselman</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1896</guid>
		<description><![CDATA[Tonight we landed a $1000 grant from the appropriately-named KW Awesome Foundation to launch an event we&#8217;re calling &#8220;Hacky Hallowe&#8217;en&#8221;*. The plan is to teach two fundamental and essential skills that are sadly neglected in our education system. Pumpkin carving Soldering Did you know that many children reach adulthood today without ever having learned how [...]]]></description>
				<content:encoded><![CDATA[<p>Tonight we landed a $1000 grant from the appropriately-named <a href="http://kwawesome.com/">KW Awesome Foundation</a> to launch an event we&#8217;re calling &#8220;Hacky Hallowe&#8217;en&#8221;*.</p>
<p>The plan is to teach two fundamental and essential skills that are sadly neglected in our education system.</p>
<ol>
<li>Pumpkin carving</li>
<li>Soldering</li>
</ol>
<p>Did you know that many children reach adulthood today without ever having learned how to carve a pumpkin?  We&#8217;ll provide a safe, supervised environment in which children 8 and over can learn this crucial skill, under the guidance of expert pumpkin carver and friend of the Lab, <a href="http://www.instructables.com/id/jeff-os-2008-pumpkins/">Jeff Schmidt</a>.</p>
<p>Rather than simply outfitting the carved pumpkin with an old fashioned, dangerous and&#8211;dare I say&#8211;obsolete candle, Hacky Hallowe&#8217;en&#8217;s participants will then move onto building an electronic device that will flicker with beautiful LED light.</p>
<p>Soldering, of course, is foundational to Kwartzlab&#8217;s DNA.  We&#8217;ve held several Learn to Solder workshops in the past and have been itching to do it again.  This way, we can take out skills out to the community and instruct many more people than we can accommodate in the Lab.</p>
<p><a href="http://www.flickr.com/photos/flyingsquirrel/6149262544/" title="Hacky Prototype by flying squirrel, on Flickr"><img src="http://farm7.static.flickr.com/6189/6149262544_bf5d4c4937_m.jpg" width="180" height="240" alt="Hacky Prototype"></a> <a href="http://www.flickr.com/photos/flyingsquirrel/6148764271/" title="Hacky Prototype all lit up by flying squirrel, on Flickr"><img src="http://farm7.static.flickr.com/6081/6148764271_d6ae10cd45_m.jpg" width="180" height="240" alt="Hacky Prototype all lit up"></a></p>
<p><span id="more-1896"></span></p>
<p><a href="http://www.kwartzlab.ca/author/jb/">James Bastow</a>, circuit maestro, has designed the simple yet powerful device that anyone can learn to assemble.  He&#8217;ll be building the circuit board that we&#8217;ll be using for Hacky Hallowe&#8217;en.  The prototype above is something he whipped together in an afternoon to show what can be done.  The kit that we&#8217;ll offer will have four orange LEDs, rather than a paltry pair of red ones.</p>
<p>We live in a world of electronics.  Learning a simple skill like soldering and seeing a bunch of parts turn into a working device is the first step to realizing that all those gadgets that everyone uses every day are <i>made</i>.  They&#8217;re made by ordinary people.  You can make them too.  It gives you the courage to take things apart and see if you can put them back together again, or re-purpose them after they stop being useful.  It opens up a door to understand the world around you a little bit better.</p>
<p><a href="http://www.flickr.com/photos/maltman23/4992219347/" title="Toronto, HacklabTO, Site3, Kwartzlab, think-haus, Aug-10 by maltman23, on Flickr"><img src="http://farm5.static.flickr.com/4092/4992219347_1637455fed_z.jpg" width="640" height="425" alt="Toronto, HacklabTO, Site3, Kwartzlab, think-haus, Aug-10"></a></p>
<p>What&#8217;s more, each of the Hacky Hallowe&#8217;en LED flicker devices is powered by a similar microcontroller as the Arduino.  They can be programmed.  After Hallowe&#8217;en is over, participants can bring their board into Kwartzlab and we will teach them how they can make the lights flicker in different ways, or add motors and make them work, or LED arrays that can display messages, or switches or sensors.  </p>
<p>Once you know how the basics of these electronic devices work, you can start to build robots or home security systems or cat food dispensers or anything else you want!  It all starts with a few blinking lights.</p>
<p><a href="http://www.flickr.com/photos/flyingsquirrel/6149382704/" title="Jeff-o's awesome pumpkins by flying squirrel, on Flickr"><img src="http://farm7.static.flickr.com/6177/6149382704_d36f70262c_z.jpg" width="640" height="426" alt="Jeff-o's awesome pumpkins"></a></p>
<p>Below are the slides we didn&#8217;t get to show to the KW Awesome Foundation trustees, here for posterity.  Many thanks to <a href="http://www.kwartzlab.ca/author/egerlach/">Eric Gerlach</a> for putting the presentation together and making an awesome pitch.</p>
<div style="width:425px" id="__ss_9262334"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/dscassel/hacky-halloween" title="Hacky Hallowe&#39;en">Hacky Hallowe&#39;en</a></strong><object id="__sse9262334" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=untitled0-110914225109-phpapp02&#038;stripped_title=hacky-halloween&#038;userName=dscassel" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse9262334" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=untitled0-110914225109-phpapp02&#038;stripped_title=hacky-halloween&#038;userName=dscassel" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p><i>* For the record, I wanted to call it &#8220;Carve-Free Sunday&#8221;, but that idea was quickly shot down for what are perhaps obvious reasons.</i></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/09/hacky-halloween/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating 3 dimensional objects on a Taig mill with a Rotary Axis</title>
		<link>http://www.kwartzlab.ca/2011/08/creating-3-dimensional-objects-taig-mill-rotary-axis/</link>
		<comments>http://www.kwartzlab.ca/2011/08/creating-3-dimensional-objects-taig-mill-rotary-axis/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 03:47:04 +0000</pubDate>
		<dc:creator>karlw</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[3d milling]]></category>
		<category><![CDATA[diy cnc]]></category>
		<category><![CDATA[rapid prototyping]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[taig cnc mill]]></category>
		<category><![CDATA[taig rotary axis]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1720</guid>
		<description><![CDATA[In my last blog I detailed the conversion of a manual rotary axis into a CNC rotary axis. I finally got some time to mount the rotary axis on the mill, configure the stepper in Mach3 and run it through some tests. The parameter for the g-code command to position the rotary axis is a positive or [...]]]></description>
				<content:encoded><![CDATA[<p>In my last blog I detailed the conversion of a manual rotary axis into a CNC rotary axis. I finally got some time to mount the rotary axis on the mill, configure the stepper in Mach3 and run it through some tests. The parameter for the g-code command to position the rotary axis is a positive or negative number ranging from 0 to 360 degrees. Positive numbers rotate clockwise and negative numbers rotate counter clockwise.<br />
I started by creating a 3 dimensional object using Solidworks and designed a projectile that will eventually be milled in metal for a coil gun project that I&#8217;m working on. I decided to do the cut in wood since this was the first project using the rotary axis and I wasn&#8217;t sure how it would work out.</p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary1.jpg"><img class="alignnone size-full wp-image-1714" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary1.jpg" alt="" width="468" height="393" /></a></p>
<p><span id="more-1720"></span>The next step was to export the solidworks object as a sterolithography file (STL). The STL file was imported into MeshCam, choosing the 4-axis option with 8 index positions. <a href="http://www.grzsoftware.com/">MeshCAM</a> lets you create toolpaths from your 3D files quickly and easily. Meshcam generated G-code that would instruct the CNC machine to cut the entire object by indexing the rotary axis and using the regular X,Y and Z axis&#8217; to position the endmill attached to the spindle. For my next experiment I&#8217;m going to try increasing the number of index positions by a much larger number.</p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-sw1.jpg"><img class="alignnone size-full wp-image-1712" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-sw1.jpg" alt="" width="468" height="300" /></a></p>
<p>Three Dimensional projectile created in Solidworks. Its size is .50 caliber and 1.5 inches in length.</p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-mc.jpg"><img class="alignnone size-full wp-image-1711" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-mc.jpg" alt="" width="468" height="303" /></a></p>
<p>In this MeshCam screenshot, the yellow lines indicate the 8 rotary axis positions between which the material is removed to create the object.</p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary2.jpg"><img class="alignnone size-full wp-image-1715" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary2.jpg" alt="" width="468" height="311" /></a></p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary3.jpg"><img class="alignnone size-full wp-image-1716" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary3.jpg" alt="" width="468" height="311" /></a></p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary4.jpg"><img class="alignnone size-full wp-image-1717" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary4.jpg" alt="" width="468" height="311" /></a></p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary6.jpg"><img class="alignnone size-full wp-image-1718" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/rotary6.jpg" alt="" width="468" height="311" /></a></p>
<p><a href="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-finished.jpg"><img class="alignnone size-full wp-image-1710" src="http://www.kwartzlab.ca/wp-content/uploads/2011/08/projectile-finished.jpg" alt="" width="432" height="316" /></a></p>
<p>For my next rotary axis experiment I will try to optimize the cutting path by selecting a much larger number of indexes and cutting an object in aluminum.</p>
<p>Karl P. Williams</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/08/creating-3-dimensional-objects-taig-mill-rotary-axis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino-Compatible Multi-Threading Library v0.5 Released</title>
		<link>http://www.kwartzlab.ca/2011/06/arduino-compatible-multi-threading-library-v0-5-released/</link>
		<comments>http://www.kwartzlab.ca/2011/06/arduino-compatible-multi-threading-library-v0-5-released/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 20:20:28 +0000</pubDate>
		<dc:creator>Jonathan Lamothe</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[microcontroller]]></category>
		<category><![CDATA[multi-threading]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1441</guid>
		<description><![CDATA[It&#8217;s been a while since I&#8217;ve touched this project, but I&#8217;ve decided to re-visit the multi-threading library I wrote for the Arduino (largely because of the amount of consistent traffic those particular blog posts have generated&#8230; it&#8217;s satisfying to know that someone other than me seems to appreciate my work). Although, I&#8217;ve made some minor [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a while since I&#8217;ve touched this project, but I&#8217;ve decided to re-visit the multi-threading library I wrote for the <a href="http://arduino.cc">Arduino</a> (largely because of the amount of consistent traffic those particular blog posts have generated&#8230; it&#8217;s satisfying to know that someone other than me seems to appreciate my work).  Although, I&#8217;ve made some minor edits to the internals of the <a href="http://www.jlamothe.net/projects/mthread/v0.5/classThread.html"><code>Thread</code></a> class, the most important update has been the addition of the <a href="http://www.jlamothe.net/projects/mthread/v0.5/classEventHandler.html"><code>EventHandler</code></a> class.  As it&#8217;s name would suggest, it provides the framework for basic event-handling.</p>
<p><span id="more-1441"></span></p>
<p>Those who&#8217;ve been following the evolution of this library, will probably be familiar with the <a href="http://www.jlamothe.net/projects/mthread/v0.5/classSwitchInput.html"><code>SwitchInput</code></a> class.  It was intended (among other things) to provide functions that would only be called when a physical switch was closed or opened.  The <code>EventHandler</code> class is similar, except that the conditions upon which the event is triggered are configurable and the function isn&#8217;t limited to running a single loop when the event occurs.  I actually considered re-writing the <code>SwitchInput</code> class to be more like this, but given that it might break programs that people had written with it, I opted not to.  Perhaps I&#8217;ll create a replacement in the future.  Like <code>SwitchInput</code>, <code>EventHandler</code> is drived from the <code>Thread</code> class, with the <code>loop()</code> function overwritten.  In its place are two protected virtual functions: <a href="http://www.jlamothe.net/projects/mthread/v0.5/classEventHandler.html#a413d8613b761d5709a28cf488850d41f"><code>condition()</code></a> and <a href="http://www.jlamothe.net/projects/mthread/v0.5/classEventHandler.html#a1f1b4ac0929b4dc6db3bdc76300dc19f"><code>on_event()</code></a>.</p>
<h1>The <code>condition()</code> Function:</h1>
<p>This is the function that is used to determine when the event is to be triggered.  Basically, while the <code>EventHandler</code> object is idle, this function will be called every time the object is invoked by a <a href="http://www.jlamothe.net/projects/mthread/v0.5/classThreadList.html"><code>ThreadList</code></a> object.  If it returns <code>true</code>, the event will be triggered, but if it returns <code>false</code>, the handler will remain in an idle state (this is one of those cases where I wish C++ supported lambdas (but that may be the LISP programming I&#8217;ve been doing talking (it&#8217;s hard to tell, really))).</p>
<h1>The <code>on_event()</code> Function:</h1>
<p>Once the event has been triggered, instead of calling the <code>condition()</code> function, the <code>on_event()</code> function will be called in its place.  This can be thought of as a conditional <code>loop()</code> function.  The difference being that when it returns <code>false</code> the handler will return to an idle state and wait for the <code>condition()</code> function to return <code>true</code> again rather than destroying itself.</p>
<h1>A Note about <code>kill_flag</code>:</h1>
<p>With a regular <code>Thread</code> object, the <code>loop()</code> function is expected to watch the <a href="http://www.jlamothe.net/projects/mthread/v0.5/classThread.html#a82e88eebd44957e65bb075103fb6ca1b"><code>kill_flag</code></a> value.  When it is set to <code>true</code>, the <code>loop()</code> function is is expected to terminate gracefully.  As a help, this functionality is already built into the <code>EventHandler::loop()</code> function.  If the handler is in an idle state, it will automatically terminate itself on its next call, however it may be advisable to have the <code>on_event()</code> function watch for this value so that it can facilitate a graceful termination (although, this is not strictly required as the handler will be terminated when the function returns false).</p>
<p>While I don&#8217;t feel I&#8217;ve done anything particularly ground-breaking with this new release, I hope I&#8217;ve created an adequate framework for other Arduino developers who don&#8217;t want to re-invent the wheel.  As usual, I&#8217;ve made all the <a href="https://github.com/jlamothe/mthread/tree/v0.5">code</a> and <a href="http://www.jlamothe.net/projects/mthread/v0.5/">documentation</a> available for this version.</p>
<p>Happy Hacking!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/06/arduino-compatible-multi-threading-library-v0-5-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Etching PCBs without Ferric Chloride</title>
		<link>http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/</link>
		<comments>http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 04:31:13 +0000</pubDate>
		<dc:creator>Jonathan Lamothe</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[etching]]></category>
		<category><![CDATA[ferric chloride]]></category>
		<category><![CDATA[hydrogen peroxide]]></category>
		<category><![CDATA[muriatic acid]]></category>
		<category><![CDATA[pcb]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1293</guid>
		<description><![CDATA[I came across this tutorial a while ago detailing how to etch PCBs using common household chemicals instead of ferric chloride. Being a lazy person who doesn&#8217;t want to drive out to Sayal (in Cambridge) to get ferric chloride, I decided to give it a shot and take pictures documenting the attempt. Here&#8217;s the result: [...]]]></description>
				<content:encoded><![CDATA[<p>I came across <a href="http://www.instructables.com/id/Stop-using-Ferric-Chloride-etchant!--A-better-etc/">this tutorial</a> a while ago detailing how to etch PCBs using common household chemicals instead of ferric chloride.  Being a lazy person who doesn&#8217;t want to drive out to Sayal (in Cambridge) to get ferric chloride, I decided to give it a shot and take pictures documenting the attempt.  Here&#8217;s the result:<br />
<span id="more-1293"></span><br />
<div id="attachment_1281" class="wp-caption alignnone" style="width: 310px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329111823-01/" rel="attachment wp-att-1281"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329111823-01-e1303531510913-300x400.jpg" alt="" width="300" height="400" class="size-medium wp-image-1281" /></a><p class="wp-caption-text">Pouring muriatic acid into the etchant (add the peroxide first)</p></div></p>
<div id="attachment_1284" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329111932-00/" rel="attachment wp-att-1284"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329111932-00-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1284" /></a><p class="wp-caption-text">The design printed onto magazine paper (for toner transfer)</p></div>
<div id="attachment_1282" class="wp-caption alignnone" style="width: 310px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329111859-00/" rel="attachment wp-att-1282"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329111859-00-e1303531494730-300x400.jpg" alt="" width="300" height="400" class="size-medium wp-image-1282" /></a><p class="wp-caption-text">Loaded into the heat press</p></div>
<div id="attachment_1283" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329111903-00/" rel="attachment wp-att-1283"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329111903-00-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1283" /></a><p class="wp-caption-text">Using the press to transfer the toner onto the board</p></div>
<div id="attachment_1285" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329111948-00/" rel="attachment wp-att-1285"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329111948-00-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1285" /></a><p class="wp-caption-text">Cooling the board down before removing the paper</p></div>
<div id="attachment_1286" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112005-00/" rel="attachment wp-att-1286"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112005-00-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1286" /></a><p class="wp-caption-text">Paper carefully removed from the board to keep the toner intact</p></div>
<div id="attachment_1287" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112005-01/" rel="attachment wp-att-1287"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112005-01-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1287" /></a><p class="wp-caption-text">The other side</p></div>
<div id="attachment_1288" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112012-01/" rel="attachment wp-att-1288"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112012-01-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1288" /></a><p class="wp-caption-text">Freshly made etchant starts to turn green as it absorbs copper from the board</p></div>
<div id="attachment_1289" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112021-01/" rel="attachment wp-att-1289"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112021-01-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1289" /></a><p class="wp-caption-text">Starting to etch the copper off the board</p></div>
<div id="attachment_1292" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112058-01/" rel="attachment wp-att-1292"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112058-01-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1292" /></a><p class="wp-caption-text">The front of the (almost) finished board</p></div>
<div id="attachment_1291" class="wp-caption alignnone" style="width: 410px"><a href="http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/0329112058-00/" rel="attachment wp-att-1291"><img src="http://www.kwartzlab.ca/wp-content/uploads/2011/04/0329112058-00-400x300.jpg" alt="" width="400" height="300" class="size-medium wp-image-1291" /></a><p class="wp-caption-text">The reverse side of the (almost) finished board</p></div>
<p>As can be seen from the last picture, I left the board in the etchant a little too long (it was more active than I expected).  Apparently, after a few uses it becomes a little slower acting, although I&#8217;ve considered using this effect to somehow watermark my boards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/04/etching-pcbs-without-ferric-chloride/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Homebrew Arduino 0-10v Shield</title>
		<link>http://www.kwartzlab.ca/2011/03/homebrew-arduino-0-10v-shield/</link>
		<comments>http://www.kwartzlab.ca/2011/03/homebrew-arduino-0-10v-shield/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 00:06:58 +0000</pubDate>
		<dc:creator>Jonathan Lamothe</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1032</guid>
		<description><![CDATA[One of the things I&#8217;ve wanted to learn to do since joining the lab has been designing my own printed circuit boards. Also, having worked with the Arduino for a little while, one of the things I&#8217;ve found it lacks is support for 0-10v analog outputs. In fact, it really lacks any analog outputs at [...]]]></description>
				<content:encoded><![CDATA[<p>One of the things I&#8217;ve wanted to learn to do since joining the lab has been designing my own printed circuit boards.  Also, having worked with the <a href="http://arduino.cc" title="Arduino Homepage">Arduino</a> for a little while, one of the things I&#8217;ve found it lacks is support for 0-10v analog outputs.  In fact, it really lacks any analog outputs at all; the closest it has are six 5v pulse width modulation outputs, which I find less useful than a proper analog output.  The logical solution to both of these dilemas was to design my own shield which would allow the PWM outputs to be converted to 0-10v.</p>
<p><span id="more-1032"></span></p>
<p>The first decision that had to be made was what PCB layout software to use.  Eagle seems to be a rather popular package for PCB layout (for both hobbyists and professionals) and I&#8217;ve used it at work, but it&#8217;s proprietary.  As a <a href="http://www.gnu.org/philosophy/free-sw.html" title="Free Software Definition">free software</a> developer, I&#8217;d much rather use a free (as in speech) tool if at all possible, so I set out to find one.  Enter <a href="http://gpleda.org" title="gEDA Homepage">gEDA</a>.  gEDA is a <a href="http://www.gnu.org/licenses/licenses.html#GPL" title="GPL License">GPL-licensed</a> suite of PCB design tools.</p>
<p>One of the things that I&#8217;ve heard people complaining about when designing Arduino shields is the non-standard pin spacing.  I didn&#8217;t really get what they were complaining about until I set out to make one of my own.  There are four headers (two with six pins and two with eight) on the board, and for the most part they&#8217;re pretty standard: 100mil spacing between pins on each header and a 200mil spacing between pins on the gap between the bottom two connectors, but a 160mil gap between the two headers on the top.  In the PCB editor, you could just use a 100mil grid if it weren&#8217;t for that one header.  It really was a bit of a headache to get the pads in the right places.</p>
<p>Not wanting to have to do the work of getting the pins set up properly twice, I decided to make a custom symbol and footprint for an <a href="http://arduino.cc/en/Main/ArduinoBoardUno" title="Arduino Uno Specs">Arduino Uno</a> board.  That way, on future Arduino shields, I could simply drop a block representing the Arduino into the schematic and it would automatically place all the pins on the PCB where they&#8217;ll fit the board.  If I drag one header around, the othes will follow to maintain proper spacing.  Quite handy.</p>
<p>Being a suite of programs rather than a single monolithic program, creating PCBs with gEDA is a little more involved than it is with Eagle, but it&#8217;s still pretty straight-forward.  You start by creating one or more schematics (one per page) with gschem.  The schematic files are in a well-documented plain-text format, so you could make them with a simple text editor, but that&#8217;s way too hardcore for even me.  With gschem, it&#8217;s all drag and drop.</p>
<p>The next step is to use the gsch2pcb program to convert your schematics into a pcb file and a netlist (it also creates a .cmd file, but I don&#8217;t know what that&#8217;s for).  From there, you open the pcb file with their pcb layout editor (creatively named pcb) place the components, import the netlist, and then you can use the auto-routing feature to draw all the traces on the board.  I had to play with trace and via sizing so that I could get all the traces to fit into two layers.  <a href="http://www.kwartzlab.ca/author/Don-Leibold/" title="Don Leibold">Don</a> showed me a way to manufacture PCBs, but it only works for two-layer boards.</p>
<p>Unfortunately, there are now a number of vias on the board that have a hole size of 20mil&#8230; that&#8217;s going to require a steady hand to drill.  Perhaps in a later version, I&#8217;ll use SMT components to free up some space on the board so I can use larger vias.</p>
<p>That&#8217;s about it for my progress so far.  I&#8217;ll be sure to blog some more as I actually attempt to manufacture these boards.  They&#8217;re going to be a little more complex than I&#8217;d like for a first attempt at using this manufacturing process, but I&#8217;m always up for a challenge.</p>
<p>Happy Hacking.</p>
<p><b>EDIT 5 Mar 2011:</b><br />
I almost forgot to post links to the actual project.</p>
<ul>
<li>Here&#8217;s my list of <a href="http://github.com/jlamothe/symbols">custom symbols</a>.</li>
<li>Here&#8217;s my list of <a href="http://github.com/jlamothe/footprints">custom footprints</a>.</li>
<li>And last but not least, here&#8217;s the <a href="http://github.com/jlamothe/arduino-0-10v-shield">actual shield</a>.</li>
</ul>
<p>Also, there&#8217;s a more descriptive <a href="http://geda.seul.org/wiki/geda:gsch2pcb_tutorial" title="gEDA Tutorial">tutorial</a> on how to use gEDA on their website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/03/homebrew-arduino-0-10v-shield/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
