<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daniel+Benamy</id>
	<title>Open Source Ecology - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opensourceecology.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Daniel+Benamy"/>
	<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/wiki/Special:Contributions/Daniel_Benamy"/>
	<updated>2026-05-05T21:10:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=James_Slade_Log&amp;diff=119549</id>
		<title>James Slade Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=James_Slade_Log&amp;diff=119549"/>
		<updated>2014-05-15T15:02:17Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Tuesday Aug 27, 2013 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- STATIC HEADER --&amp;gt;&lt;br /&gt;
{{TOC left}}&lt;br /&gt;
[[Image:James_Slade.jpg|500px|thumb|James &amp;quot;Bunny&amp;quot; Slade]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&amp;lt;!-- EDITS GO BELOW THIS LINE --&amp;gt;&lt;br /&gt;
=Saturday Sept 7, 2013=&lt;br /&gt;
Much left to do and not enough time to do it all. &lt;br /&gt;
&lt;br /&gt;
CEB 2 is done and moved to the shed. Had a few issues, ranging from a stuttering cylinder to the drawer being welded in wrong. Videos here:&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/Fw6xWZQKZpg Stuttering cylinder] This Issue was resolved by adding in a bypass hose for the shaker solenoid.&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/YUX82fpBr5s Watching the system work]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/Dwu2PjK328o The drawer not retracting far enough]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/NTP0DUlfn-I Final walk through for this trip]&lt;br /&gt;
&lt;br /&gt;
Also updated the code a bit and got it working perfectly for CEB 2 and 3. &lt;br /&gt;
&lt;br /&gt;
I&#039;ll continue working on this project, just having to get back to my normal life for a little while. o/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Friday Sept 6, 2013=&lt;br /&gt;
I leave here on Sunday and there&#039;s so much left to do. These controllers take me about 2 days to do from parts to full assembly. I am currently working on the button panel and will have it done today. Will then head to the shop and test the controllers on CEB 2. Should have CEB 2 done and moved by tonight. That leaves tomorrow to build CEB 3...&lt;br /&gt;
&lt;br /&gt;
=Thursday Sept 5, 2013=&lt;br /&gt;
Spent today making some corrections to the controller doc I linked yesterday and made some changes to the button panel. Moved some colored wires around to make it easier to understand the document&#039;s pictures. Worked on CEB 3&#039;s controller the rest of the day. Still a little bit more to do on the button panel.&lt;br /&gt;
&lt;br /&gt;
=Wednesday Sept 4, 2013=&lt;br /&gt;
Went to Sweiger today to get some materials for the CEB&#039;s. A new 2 3/4&amp;quot; DOM for the press foot on CEB 3. Then used previously was a little big and let the foot move around too much. Finished up the controller for CEB 2 today. Marcin and I documented its assemble as seen here:&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1AxeT5boHsEPlywFx8O94khOHOpDnSFwuXK3kAgsHP1c/edit CEB Controller assembly]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tuesday Sept 3, 2013=&lt;br /&gt;
Spent today working on the controllers and a little bit of shop time. Nothing to major to report other than that.&lt;br /&gt;
&lt;br /&gt;
=Friday Aug 30, 2013 thru Monday Sept 2, 2013=&lt;br /&gt;
&lt;br /&gt;
Apologies, but this weekend was sort of a blur. Lots happened. From moving the CEB to the field, setting up up and running it. We pressed blocks and made some changes to the CEB drawer assembly. The drawer was able to shift and tore out the bearing. So we added in constraints to keep it centered. Video: [ http://youtu.be/VXkzoED9-rw CEB 3] This seems to be working quite well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;//www.youtube.com/embed/VXkzoED9-rw&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEB 2 now has its drawer working. Marcin and I spent most of Sunday working on it and seems like we have a good solution. The bearing mounts weren&#039;t done correctly but they still work. Will be adding in addition cylinder supports, like CEB 3. &lt;br /&gt;
&lt;br /&gt;
Also currently working on the controllers for the remaining CEB&#039;s and documenting their assembly.&lt;br /&gt;
&lt;br /&gt;
=Thursday Aug 29, 2013=&lt;br /&gt;
[http://www.youtube.com/watch?v=y918BFjbqEQ&amp;amp;feature=youtu.be The LifeTrac 4 hauling off CEB 3 to the field.]&lt;br /&gt;
&lt;br /&gt;
Knocked out quite a bit of the punch list from yesterday. CEB 2 is close to done. Adding in the cam rollers tomorrow, manifold and the hopper assembly. Will test it and go from there.&lt;br /&gt;
&lt;br /&gt;
=Wednesday Aug 28, 2013=&lt;br /&gt;
Have a punch list of things to get done:&lt;br /&gt;
*Add auxiliary spool to LifeTrac 4 to handle the 2nd power cube to drive the pulverizer.&lt;br /&gt;
*weld splines on pulverizer, repair 2 broken splines.&lt;br /&gt;
*Add motor plate to second pulverizer and hoses to get it operational.&lt;br /&gt;
*Update and test code on CEB 3&lt;br /&gt;
*relocate CEB 3 to the dirt mound for block press testing&lt;br /&gt;
&lt;br /&gt;
CEB 2:&lt;br /&gt;
*Drill holes for cams and weld cam assembly together&lt;br /&gt;
*add cam assembly to machine and test drawer&lt;br /&gt;
*Center support arms and drill new holes or find other solution&lt;br /&gt;
*Test main cylinder&lt;br /&gt;
*check over all function with both cylinders active&lt;br /&gt;
*attach hopper and shaker, test shaker&lt;br /&gt;
*attach hydraulic manifold and verify they are assembled correctly&lt;br /&gt;
*run permanent hydraulic lines&lt;br /&gt;
&lt;br /&gt;
CEB 1:&lt;br /&gt;
*Drill pin hole in main cylinder&lt;br /&gt;
*drill bolt holes in press foot&lt;br /&gt;
*remove welds from press foot&lt;br /&gt;
*Drill hole in press foot DOM to match main cylinder&lt;br /&gt;
*weld DOM to lower press foot&lt;br /&gt;
*bolts upper and lower press foot together and then attach to main cylinder via pin&lt;br /&gt;
*add welds to frame, lots needed&lt;br /&gt;
*reassemble frame and square it&lt;br /&gt;
*check over all support arms and frame&lt;br /&gt;
*attach cylinder to drawer&lt;br /&gt;
*assemble cams&lt;br /&gt;
*attach cams for drawer and test&lt;br /&gt;
*test main cylinder&lt;br /&gt;
*check over all function with both cylinders active&lt;br /&gt;
*attach hopper. Shy one shaker assembly. Can grab of CEB 2 to test.&lt;br /&gt;
*attach hydraulic manifold and verify they are assembled correctly&lt;br /&gt;
*run permanent hydraulic lines&lt;br /&gt;
&lt;br /&gt;
Manifolds:&lt;br /&gt;
*verify proper assembly of solenoids to manifold&lt;br /&gt;
*install quick attaches &lt;br /&gt;
*install bypass assembly&lt;br /&gt;
*install pressure sensor&lt;br /&gt;
*install wiring&lt;br /&gt;
*make mounting plate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Controllers:&lt;br /&gt;
*fab and assemble remaining controllers- 2 days to do this&lt;br /&gt;
*build out button boxes with power and battery connections.&lt;br /&gt;
*upload code and test&lt;br /&gt;
*Attach to machines and test&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tuesday Aug 27, 2013=&lt;br /&gt;
Zach updated the controller code to add in the shaker again, address the main cylinder bottoming out due to different stroke (8&amp;quot; versus 12&amp;quot;) and switched the over extend from timed to percent. Going from default 100 to .05.&lt;br /&gt;
&lt;br /&gt;
New code is here: https://github.com/OSE/ceb-controller/&lt;br /&gt;
&lt;br /&gt;
*Added another power cube to the LifeTrac 4. &lt;br /&gt;
*Got 2 more power cubes working. &lt;br /&gt;
*Cleaned up the shop a bit.&lt;br /&gt;
*Worked on CEB 2, removed the hopper plate and tried adjusting the support arms in.&lt;br /&gt;
*Made some adjustments to CEB 3 pertaining to the PSI, adjusted it from 2000 to 2500.&lt;br /&gt;
*Had a meeting with Marcin and Katie. I&#039;ll be staying another week to keep going on the CEB machines.&lt;br /&gt;
*Discussed everything needed to run the brick presses by this weekend.&lt;br /&gt;
&lt;br /&gt;
=Monday Aug 26, 2013=&lt;br /&gt;
Finally some celebrating today. It works.&lt;br /&gt;
&lt;br /&gt;
Got new code to handle the additional knob for the drawer. Had some issues with the main cylinder running backwards, out of sync. Corrected that with a simple rewire of the solenoid. Got the pressure sensor adjusted to 2000 PSI and the bypass valve set to slightly higher. Had collisions with the drawer and main cylinder, which I expected. Was able to adjust that out with the code. Currently CEB 3 has the line of code &amp;quot;overextend_delay = 100&amp;quot; set to 210. This backed the main cylinder off enough for the drawer to slide through. The shaker still doesn&#039;t fire off as the code appears disabled for it. Zach said he&#039;d have that correct tonight or tomorrow. I need to adjust some of the retract distance out of the main cylinder as its trying to pull down too far. Should be able to do this with the main cylinder knob. The CEB 3 is ready to handle some dirt now, so we can see how it compresses and ejects a real block.&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/Pdk061qEKqQ Video of the CEB3 now]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;420&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;//www.youtube.com/embed/Pdk061qEKqQ&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still have 2 machines to get done, but am currently focusing on getting a pulverizer running before this weekend. That will most likely be the focus of work this evening.&lt;br /&gt;
&lt;br /&gt;
=Sunday Aug 25, 2013=&lt;br /&gt;
Things can&#039;t happen fast enough at this point...&lt;br /&gt;
&lt;br /&gt;
Today I got the new power converter hooked up, new code verified, controller hooked up and fired the system up. Nothing worked again. After some serious reworking of the hydraulic manifold, turns out whomever assembled it originally had the shaker solenoid on backwards, which blocked all the flow through the manifold. This had caused many issues with the powercube I was using, some of the lines etc. So much wasted time due to that. Finally got that system properly setup, hooked up the controller again and this time, I got some action. However, the action I got was everything trying to work all at the same time. I shot a video of what was going on here:&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/eYK24RqZaGY Controller issues]&lt;br /&gt;
&lt;br /&gt;
Currently waiting on a response from Zach to get his opinion of what may be happening.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Saturday Aug 24, 2013=&lt;br /&gt;
First thing that happened today when hooking up the controller was that nothing worked. After a bit of testing it was obvious I was missing something. Upon further inspection and talking with Zach it came to light I was missing several connections. The 5v from the Arduino to the relay board, all the ground connections from the relay board and was on the wrong pins of the relay board. Go all this corrected, some new code to handle the extra pot knob and went back to the shop. After getting it all hooked back up, nothing happened again. This time it turns out the 12v to 5v converter was no longer working. Got a new one setup for trials again tomorrow. &lt;br /&gt;
&lt;br /&gt;
=Friday Aug 23, 2013=&lt;br /&gt;
&lt;br /&gt;
I have everything setup to run on CEB 3. Right now I&#039;m going to upload the code to the controller and see how it works before hooking it back up to the CEB. &lt;br /&gt;
&lt;br /&gt;
[[File:James.7z|This is the 3d printer file for making the scaffolds]]&lt;br /&gt;
&lt;br /&gt;
[[File:CEB_code.rar|This is a rar of the arduino code used currently to test the CEB]]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/eaCwHmgKhE4 Video of the CEB setup with controller]&lt;br /&gt;
&lt;br /&gt;
=Thursday Aug 22, 2013=&lt;br /&gt;
Today I made major headway on the controller box. It took longer than I thought, but I have a working box. &lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=NJU0cOOeAOY Here&#039;s the controller laid in the box]&lt;br /&gt;
&lt;br /&gt;
I will be attaching this to a machine tomorrow and testing it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Wednesday Aug 21, 2013=&lt;br /&gt;
CEB 3 is going to visit the mill to have a hole bored through the main piston. Then I&#039;ll be adding in the press foot properly. Haven&#039;t done it yet, and instead focused on the electronics today.&lt;br /&gt;
&lt;br /&gt;
[[File:Boxcon.jpg|400px|thumb|center|The controller box]]&lt;br /&gt;
Focused heavy on placement and had two scaffolds built on the 3d printer to hold the parts up. Have to go on a fastener run in the morning so I can attach everything. Will be getting parts enough for 3 controllers.&lt;br /&gt;
&lt;br /&gt;
[ http://youtu.be/8idmx0u-2pQ Today&#039;s coverage of CEB 2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Outside of that I took Gary to the airport today.&lt;br /&gt;
&lt;br /&gt;
=Tuesday Aug 20, 2013=&lt;br /&gt;
Made a bit more progression on the CEB&#039;s. Managed to put parts from a couple non working mag drills together and make one work. Was able to drill most of the holes needed on CEB 2 with it and now have the frame standing up. The holes that were all torched previously don&#039;t line up with the attaching components. As an example, the support rails have pre drilled holes, but the holes on the frame were torched, and they don&#039;t line up at all. Basically all the torched holes were done on the frame and done very badly. Since they don&#039;t line up, I have to make all new holes once I get the machine square. Which wasn&#039;t done previously. Since so much material was torched out that leaves structural issues with drilling new holes. At this point I don&#039;t have that much faith that CEB 2 will function very well. It has a gap at the drawer level, which can lead to blocks with mushroom tops as the material can squeeze out when compressed. The blocks may not be totally square. We&#039;ll just have to see what comes out. I&#039;ll try and get some video of the specific issues for my next log update.&lt;br /&gt;
&lt;br /&gt;
Spent most of my day on the above issue.&lt;br /&gt;
&lt;br /&gt;
[ http://youtu.be/L5yD-t7GbeI Status update today]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Monday Aug 19, 2013=&lt;br /&gt;
Trying to get a new mag drill, at a stand still on CEB 2 without. Going to focus on making every other part that I can today and get CEB 3 fully assembled.&lt;br /&gt;
&lt;br /&gt;
John and Jonathan came to the shop today to learn welding and cutting. Both did very well so I put them to work a bit. :) Between the two they made 2 feet for one of the CEB&#039;s that was missing a pair. Also, tearing down 4 rail guides that had the wrong size holes drilled for the bearings.Drilling new holes and welding them back again. Finally they helped make some holes in one of the shaker units so it&#039;ll fit on multiple CEB&#039;s. &lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/I82SY0fqS6E Monday Update showing CEB 3 together and parts being reworked.]&lt;br /&gt;
&lt;br /&gt;
[[File:JonathanJohn.jpeg|640px|thumb|center|Cutting holes]]&lt;br /&gt;
&lt;br /&gt;
=Sunday Aug 18, 2013=&lt;br /&gt;
Didn&#039;t get much done in the shop, need a mag drill as all the ones here no longer work. Critical piece needs to be drilled out on CEB 2. Not something that can be placed on a drill press or just bored out. I imaging it could be just drilled or torched, but I like precision and don&#039;t want room for the frame to be able to shift under pressure.&lt;br /&gt;
&lt;br /&gt;
Did work on the electronics layout a bit. Still in discussion with Zach Dwiel on the components needed as the press feet on these machine sits higher than the deck and the code doesn&#039;t account for that. He&#039;s going to write up some test code to see if we can get around it reworking the frame of the machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Saturday Aug 17, 2013=&lt;br /&gt;
Updating spreadsheets, financial logs and getting the build plans for the CEB&#039;s from last November. The holes for the drawer rollers are too big at 3/4&amp;quot; they should be only 1/2&amp;quot; so will rework those. The top of one CEB so far has the removable crossbeams welded to the inner chamber which also has to be corrected. The drawers on all three are firmly stuck in the machines, so will be hooking up a power cube today to try and move the hydraulics to free these things up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Today&#039;s videos thus far:&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/9JIg0aGDJ_I CEB 1 press foot coming up too high]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/iiAs_1xTZL0 CEB 1 press foot has broke welds]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/YLa2RM_PnaY CEB 1 The bottom pin sits too high and is also barely attached for the weight it has to withstand]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/T_XEgQBBA6c CEB 2 the press foot is coming up really shy. Bad assembly]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/XXcp9g2LYn8 CEB 2 cut away of the action. You can see its just built incorrectly]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/lojKGoVc6jw CEB 2 press foot solution]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/6uHnMo6ieHM Printing a scaffold for the controller box]&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/3mRzhBTbNIM CEB 3 status]&lt;br /&gt;
&lt;br /&gt;
=Friday Aug 16, 2013=&lt;br /&gt;
Bought a box from the local hardware to use as a switch house for the CEB control toggles. Doesn&#039;t look like its going to work very well, will know after some further inspection and layout. Also got some rubberized spray to coat the plugs with for weather protection.&lt;br /&gt;
&lt;br /&gt;
Will continue with the CEB move today and get the remaining parts in the shop and start setting the machines up. Will then inspect them.&lt;br /&gt;
&lt;br /&gt;
[http://youtu.be/Tiaq-LKJBJI CEB initial inspection]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Got all the CEB&#039;s moved into the shop, setup most of one and ran into an issue with some bad welds. Will correct those and continue the assembly tomorrow.&lt;br /&gt;
&lt;br /&gt;
=Thursday Aug 15, 2013=&lt;br /&gt;
Taking an inventory of electronics for the controls, calculating current expenses, look at the CEB&#039;s and determine a work area.&lt;br /&gt;
&lt;br /&gt;
Laying out controller box. Using a Pelican 1060 box with a clear lid so we can see the LED&#039;s on the boards. This isn&#039;t a finished design, merely for observation while tweaking the over all design. Will also see if we can have a 3D printed scaffold of sorts for the components to screw into as space is very limited and I must suspend the components.&lt;br /&gt;
&lt;br /&gt;
Moved the majority of the CEB&#039;s from the shed into the shop. Setup work space.&lt;br /&gt;
&lt;br /&gt;
=Wednesday Aug 14, 2013=&lt;br /&gt;
Drove from Austin to Factor e Farm, 12+ hour journey.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Tuesday Aug 13, 2013=&lt;br /&gt;
Went to Fry&#039;s Electronics in Austin to acquire parts for the controller. Picked up a crimp tool for the Molex connectors, some 2, and 6 pin Molex connectors, 3-1k ohm linear potentiometers, a rubber boot for a toggle switch and some extra screw down terminals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Friday Aug 10, 2013=&lt;br /&gt;
Ordering parts and finding alternative sites. Working with Katie on this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Thu Aug 8, 2013=&lt;br /&gt;
Work log at bottom of page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalizing parts needed for initial controller build.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=100% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0ArpE5Y9PpJCXdG40QjhpSEE0ZkhmYVhnMFREQktBZFE&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/opensourceecology.org/spreadsheet/ccc?key=0ArpE5Y9PpJCXdG40QjhpSEE0ZkhmYVhnMFREQktBZFE#gid=0 edit]&lt;br /&gt;
&lt;br /&gt;
=Wed August 7 2013=&lt;br /&gt;
*[[Upverter]] - Google Doc for circuit design - free for open source project - [https://upverter.com/eda/#designId=2d958299ddd5a35c,tool=schematic Link to Schematic]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe src=&amp;quot;https://upverter.com/zdwiel/2d958299ddd5a35c/Sumbandila-III/ &amp;quot; width=100% height=500&amp;gt; &amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Conference call with Zach.&lt;br /&gt;
*worked out a BOM for the controller&lt;br /&gt;
*have a schematic drawn for the circuit&lt;br /&gt;
*will compile the BOM tomorrow to get parts ordered.&lt;br /&gt;
&lt;br /&gt;
*[[CEB_Hydraulic_Pressure_Switch]]&lt;br /&gt;
&lt;br /&gt;
*[http://amzn.com/w/2QEXKOXRKA18V Amazon BOM]&lt;br /&gt;
*Future pressure sensor - continuous vs on/off - [http://www.digikey.ca/product-detail/en/M7139-05KPN-500000/223-1138-ND/3945787]&lt;br /&gt;
&lt;br /&gt;
=Tue Aug 6 2013= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/d/1CRQYpuz20SKIikbOwQ791Eetug49pvSpkcwL_16zYtQ/pub?w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/opensourceecology.org/drawings/d/1CRQYpuz20SKIikbOwQ791Eetug49pvSpkcwL_16zYtQ/edit edit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PCB Design==&lt;br /&gt;
*See [[CEB_Press/Manufacturing_Instructions/Detroit_Fab_Lab_Solenoid_Driver_v4]]&lt;br /&gt;
*See code - [https://github.com/OSE/ceb-controller/tree/master/dwielcode/CEBManual] - updated July 2013&lt;br /&gt;
*Design software runs in Wine on Ubuntu - [http://www.expresspcb.com/ExpressPCBHtm/Download.htm]&lt;br /&gt;
*Arduino - [http://www.amazon.com/computers-accessories/dp/B006H06TVG]&lt;br /&gt;
*Cable - [http://www.amazon.com/gp/product/B00A6SOGC4/ref=oh_details_o06_s00_i01?ie=UTF8&amp;amp;psc=1]&lt;br /&gt;
*Relay - [http://www.amazon.com/SainSmart-8-Channel-Relay-Module-Arduino/dp/B0057OC5WK/ref=sr_1_1?ie=UTF8&amp;amp;qid=1375287813&amp;amp;sr=8-1&amp;amp;keywords=relay+boards]&lt;br /&gt;
*12V to 5V supply -  [http://www.amazon.com/HOSSEN%C2%AE-Converter-Power-Supply-Module/dp/B00A71CMDU/ref=sr_1_2?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1375834507&amp;amp;sr=1-2&amp;amp;keywords=12v+to+5v+power+supply]&lt;br /&gt;
*Buttons - [http://www.grainger.com/Grainger/pushbutton-complete-units/push-buttons/electrical/ecatalog/N-8e3]&lt;br /&gt;
*Code for Diecimila to Teensy - [https://github.com/OSE/ceb-controller/blob/master/dwielcode/CEBManual/CEBManual.h] - convert Diecimila to Teensy&lt;br /&gt;
*Real Terminals - [http://www.amazon.com/Screw-Connector-Electric-Barrier-Terminal/dp/B005EPE9ZS/ref=sr_1_10?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1375835128&amp;amp;sr=1-10&amp;amp;keywords=screw+terminal+block]&lt;br /&gt;
*Or Yoonseo Terminal - [http://opensourceecology.org/wiki/CEB_Press/Pictures_of_Newest_Controller]&lt;br /&gt;
&lt;br /&gt;
Design Rationale for Zach&#039;s CEB Controller -&lt;br /&gt;
*Switch from automatic to manual mode - toggle&lt;br /&gt;
*For drawer -  you calibrate it and move it a certain percentage.&lt;br /&gt;
*For drawer - end positions via pressure sensor&lt;br /&gt;
*Replace pause with auto/manual switch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PCB of Board - [https://github.com/OSE/ceb-controller/blob/master/dwielcode/board/cebpress-controller-schematic-v4.png]&lt;br /&gt;
*Design Have plugin into main board&lt;br /&gt;
*Uses [[Arduino Teensy]]&lt;br /&gt;
*6 buttons - forward back up down pause shaker; timing knobs - 1 for main cylinder - to select brick thickness based on a given power source; 1 for drawer cylinder&lt;br /&gt;
*http://www.ladyada.net/library/pcb/manufacturers.html&lt;br /&gt;
&lt;br /&gt;
=Sunday  August 4 2013= &lt;br /&gt;
=PCB designs=&lt;br /&gt;
Sitting down and looking into PCB design for the CEB&#039;s. These will be professionally made to save time and also designed to be robust enough for outdoor, all weather use.&lt;br /&gt;
&lt;br /&gt;
2 hours&lt;br /&gt;
&lt;br /&gt;
=Saturday August 3 2013= &lt;br /&gt;
=Log Start=&lt;br /&gt;
*Evaluate current requests from FeF and determine cost, time, and workflow&lt;br /&gt;
*Setup Log&lt;br /&gt;
&lt;br /&gt;
Had a late day getting started as there were unexpected issues here in moving my truck from Creation Flame to a shop in town. This will become 1983 Chevy Blazer 6.2 diesel mobile 4x4 power cube with a turbo. :)&lt;br /&gt;
&lt;br /&gt;
=Time Log=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0AhoET3RVh7_YdDZIQ3hzeHg4b3cyQnEtQTh4R2N0eHc#gid=0 Time Sheet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&#039;500&#039; height=&#039;300&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0AhoET3RVh7_YdDZIQ3hzeHg4b3cyQnEtQTh4R2N0eHc&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Personal Logs]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Dorkmo_Log&amp;diff=119548</id>
		<title>Dorkmo Log</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Dorkmo_Log&amp;diff=119548"/>
		<updated>2014-05-15T15:01:57Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* april 13, 2014 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RightTOC}}&lt;br /&gt;
im going to try to maintain an torrent rss feed of my files if anyone wants to subscribe to my latest and greatest. im new so it might not work. http://dorkmo.net/osefeeddorkmo.xml &lt;br /&gt;
&lt;br /&gt;
also going to start a bittorrent snyc file folder. going to try to make torrent rss feed just clean polished stuff. and sync folder will just be lots or random stuff in process. heres the read only link BAW3VSPFCZ325PSPYQYGUMEWNZLNC2BJV  [http://www.bittorrent.com/sync software] *not open source&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;JAMES - Try Coggle for cloud mindmaps -MJ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&#039;853&#039; height=&#039;480&#039; src=&#039;https://embed.coggle.it/diagram/523c844ad82cbea971004e94/a45f88079c65c5df50eb798159b1d4d8b9ab12685caec974a66d79157fa8676f&#039; frameborder=&#039;0&#039; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://coggle.it/diagram/523c844ad82cbea971004e94 edit]&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=april 14, 2014=&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.dozuki.com/c/Controller&lt;br /&gt;
&lt;br /&gt;
http://blog.protoneer.co.nz/wp-content/uploads/2012/10/Arduino-Uno-Mega-Dimensions.png&lt;br /&gt;
&lt;br /&gt;
=april 13, 2014=&lt;br /&gt;
&lt;br /&gt;
trying out the [http://fritzing.org/home/ fritzing] program for a new ceb controller board project. [https://docs.google.com/document/d/11deHuTHwnXVGwOAiGU-PDnJxmzbjP9ZpLYPTA-D4dCo/edit?pli=1 Andrew&#039;s notes for reqs]&lt;br /&gt;
&lt;br /&gt;
[[File:Controllerbridge1.fzz]]&lt;br /&gt;
&lt;br /&gt;
finding a couple things for board [[Talk:CEB Press 6 - Controller Module - Bill of Materials]]&lt;br /&gt;
&lt;br /&gt;
expiramting with an idea for printable rocker switches that will allow for rubber outer seal and can activate buttons mounted on a pcb. would eliminate wiring board to buttons.&lt;br /&gt;
&lt;br /&gt;
[[File:Rockersmdbutton.skp]]&lt;br /&gt;
&lt;br /&gt;
also have been looking over bunny&#039;s log for help [[James Slade Log]]&lt;br /&gt;
&lt;br /&gt;
[https://upverter.com/eda/#tool=schematic,designId=2d958299ddd5a35c wiring schematic]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1AxeT5boHsEPlywFx8O94khOHOpDnSFwuXK3kAgsHP1c/edit?pli=1 pictures of assembled board and wiriing]&lt;br /&gt;
&lt;br /&gt;
[http://opensourceecology.org/wiki/James_Slade_Log#Thu_Aug_8.2C_2013 bunny&#039;s bom]&lt;br /&gt;
&lt;br /&gt;
https://github.com/OSE/ceb-controller/&lt;br /&gt;
&lt;br /&gt;
=april 7, 2014=&lt;br /&gt;
&lt;br /&gt;
[[User:Dorkmo/Ideas/Forklift]]&lt;br /&gt;
&lt;br /&gt;
sketched an idea for a more tradition forklift attachment.&lt;br /&gt;
&lt;br /&gt;
[[Image:Forklift-idea-dorkmo1.png|400px]]&lt;br /&gt;
&lt;br /&gt;
=feb 21, 2014=&lt;br /&gt;
&lt;br /&gt;
[[Image:DorkmoEarthlodge1.png|100px]]&lt;br /&gt;
&lt;br /&gt;
general idea for a small earth house&lt;br /&gt;
&lt;br /&gt;
[[User:Dorkmo/Ideas/Microhouse_Earth_Lodge]]&lt;br /&gt;
&lt;br /&gt;
=dec 11, 2013=&lt;br /&gt;
&lt;br /&gt;
sketched- added square tube across top of main lifetrac arms to mount 2 cylinders on [https://drive.google.com/file/d/0BwxMMqGvwTM-cno3TXU0RktuZm8/edit?usp=sharing doc]&lt;br /&gt;
&lt;br /&gt;
=dec 9, 2013=&lt;br /&gt;
&lt;br /&gt;
sketched- added the new cyclinders and sketch new mount for lifetrac arms [https://drive.google.com/file/d/0BwxMMqGvwTM-UWlWQlFzRDFPMDg/edit?usp=sharing google doc]&lt;br /&gt;
&lt;br /&gt;
=dec 3, 2013=&lt;br /&gt;
&lt;br /&gt;
did a little idea for mounting trencher on lifetrac [[Media:Trencheridea20131203.torrent]]&lt;br /&gt;
&lt;br /&gt;
started an idea for the [[MicroHouse Collaboration 2014]]. half circle ceb design. roof will slant to center of flat wall.  [https://drive.google.com/file/d/0BwxMMqGvwTM-aVZsV1VycnRDdkE/edit?usp=sharing google doc skp - work in progress]&lt;br /&gt;
&lt;br /&gt;
=nov 5, 2013=&lt;br /&gt;
&lt;br /&gt;
machine screw idea for trencher&lt;br /&gt;
1-1/2 long. 1/2&amp;quot; nuts are a little less than 1/2 tall, wich will be shorter than the 1/2 thick tooth plate.&lt;br /&gt;
&lt;br /&gt;
[[http://www.fastenal.com/web/products/details/0147968?searchMode=productSearch&amp;amp;zipcode=&amp;amp;filterByStore=&amp;amp;filterByVendingMachine=&amp;amp;productSearchQueryString=term%3D%26termca%3D%26termpx%3D%26sortby%3Dwebrank%26sortdir%3Ddescending%26searchmode%3DproductSearch%26zipcode%3D%26filterByStore%3D%26filterByVendingMachine%3D%26r%3D~|categoryl1%3A%2522600000%2520Fasteners%2522|~%2520~|categoryl2%3A%2522600072%2520Nuts%2522|~%2520~|categoryl3%3A%2522608621%2520Hex%2520Nuts%2522|~%2520~|attrdiameter%3A630|~%2520~|ismadeinusa%3AYes|~ nut]]&lt;br /&gt;
[[http://www.fastenal.com/web/products/details/0146829?searchMode=productSearch&amp;amp;zipcode=&amp;amp;filterByStore=&amp;amp;filterByVendingMachine=&amp;amp;productSearchQueryString=term%3D%26termca%3D%26termpx%3D%26sortby%3Dwebrank%26sortdir%3Ddescending%26searchmode%3DproductSearch%26zipcode%3D%26filterByStore%3D%26filterByVendingMachine%3D%26r%3D~|categoryl1%3A%2522600000%2520Fasteners%2522|~%2520~|categoryl2%3A%2522600051%2520Screws%2522|~%2520~|categoryl3%3A%2522600059%2520Machine%2520Screws%2522|~%2520~|sattr02%3A^Flat%24|~%2520~|ismadeinusa%3AYes|~%2520~|attrlength%3A1410|~ bolt]]&lt;br /&gt;
&lt;br /&gt;
could use 3/4&amp;quot; plate for teeth in order to use 3/4&amp;quot; bolts&lt;br /&gt;
&lt;br /&gt;
[[http://www.fastenal.com/web/products/details/0147910?searchMode=productSearch&amp;amp;zipcode=&amp;amp;filterByStore=&amp;amp;filterByVendingMachine=&amp;amp;productSearchQueryString=term%3D%26termca%3D%26termpx%3D%26sortby%3Dwebrank%26sortdir%3Ddescending%26searchmode%3DproductSearch%26zipcode%3D%26filterByStore%3D%26filterByVendingMachine%3D%26r%3D~|categoryl1%3A%2522600000%2520Fasteners%2522|~%2520~|categoryl2%3A%2522600072%2520Nuts%2522|~%2520~|categoryl3%3A%2522608621%2520Hex%2520Nuts%2522|~%2520~|attrdiameter%3A950|~%2520~|ismadeinusa%3AYes|~ nut]]&lt;br /&gt;
[[http://www.fastenal.com/web/products/details/28182?searchMode=productSearch&amp;amp;zipcode=&amp;amp;filterByStore=&amp;amp;filterByVendingMachine=&amp;amp;productSearchQueryString=term%3D%26termca%3D%26termpx%3D%26sortby%3Dwebrank%26sortdir%3Ddescending%26searchmode%3DproductSearch%26zipcode%3D%26filterByStore%3D%26filterByVendingMachine%3D%26r%3D~|categoryl1%3A%2522600000%2520Fasteners%2522|~%2520~|categoryl2%3A%2522600051%2520Screws%2522|~%2520~|categoryl3%3A%2522600059%2520Machine%2520Screws%2522|~%2520~|sattr02%3A^Flat%24|~%2520~|attrdiameter%3A950|~%2520~|attrlength%3A1490|~ bolt]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Trenchermachinescrews20131105.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Media:Trenchermachinescrews20131105.skp]]&lt;br /&gt;
&lt;br /&gt;
=oct 8, 2013=&lt;br /&gt;
&lt;br /&gt;
backhoe side to side pivot with scissor [[File:Backhoe_sidebyside8.skp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Pivotscissor.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=oct 6, 2013=&lt;br /&gt;
&lt;br /&gt;
did backhoe sketch [[File:Backhoe_sidebyside2.skp]]&lt;br /&gt;
&lt;br /&gt;
=Thu Sep 18, 2013=&lt;br /&gt;
&lt;br /&gt;
==Design Proposals==&lt;br /&gt;
&lt;br /&gt;
===Cab===&lt;br /&gt;
&lt;br /&gt;
Arm mounting shaft split.&lt;br /&gt;
&lt;br /&gt;
[[File:Ltr7-dp-splitarms.skp]]&lt;br /&gt;
&lt;br /&gt;
[[File:Ltr7-dp-splitarms.png|400px]]&lt;br /&gt;
=sep 16, 2013=&lt;br /&gt;
&lt;br /&gt;
finished cutting tubing&lt;br /&gt;
&lt;br /&gt;
cleaned up some pivot plates with chisel and file&lt;br /&gt;
&lt;br /&gt;
=sep 15, 2013=&lt;br /&gt;
&lt;br /&gt;
finished 4x4s&lt;br /&gt;
&lt;br /&gt;
cut DOM tubing for pivot plates&lt;br /&gt;
&lt;br /&gt;
tools used:&lt;br /&gt;
*band saw&lt;br /&gt;
*speed square&lt;br /&gt;
*C clamps&lt;br /&gt;
*angle iron&lt;br /&gt;
*calipers&lt;br /&gt;
*steel shims&lt;br /&gt;
&lt;br /&gt;
process description:&lt;br /&gt;
*set up an end stop on the band saw&lt;br /&gt;
**clamped small piece of angle iron 1/2&amp;quot; away from blade&lt;br /&gt;
**used speed square to keep perpindicular&lt;br /&gt;
*placed some shims to keep area infront of angle iron level with band saw base&lt;br /&gt;
*used some extra tubing with same O.D. to maintain distance of the swivel clamp by placing on opposite side of clamp&lt;br /&gt;
*placed tubing to be cut in clamp&lt;br /&gt;
*lowered blade to just above tube&lt;br /&gt;
*using calipers checked distance&lt;br /&gt;
*tightened clamp&lt;br /&gt;
*cut&lt;br /&gt;
**maintained about 2-3.5 on the hydraulic lowering setting for the kalamazoo brand band saw&lt;br /&gt;
*after cut checked width for accuracy&lt;br /&gt;
*continued next cut&lt;br /&gt;
*durring cutting used file to clean up edges of previously cut tube ring&lt;br /&gt;
*set aside for next process&lt;br /&gt;
&lt;br /&gt;
=sep 14, 2013=&lt;br /&gt;
&lt;br /&gt;
cut day 4x4s&lt;br /&gt;
&lt;br /&gt;
tools used:&lt;br /&gt;
*speed square&lt;br /&gt;
*tape measure&lt;br /&gt;
*ruler&lt;br /&gt;
*soap stone&lt;br /&gt;
*abrasive saw&lt;br /&gt;
*big table&lt;br /&gt;
*scrap metal for leveling&lt;br /&gt;
*power cord&lt;br /&gt;
&lt;br /&gt;
process desription:&lt;br /&gt;
*set up cutting area for 10&#039; sections&lt;br /&gt;
*marked general location of cut on 4x4&lt;br /&gt;
*using ruler found center between holes&lt;br /&gt;
*marked center&lt;br /&gt;
*used speed square to draw line along center&lt;br /&gt;
*checked line with ruler again&lt;br /&gt;
*aligned in saw&lt;br /&gt;
*tightened into saw&lt;br /&gt;
*algined again&lt;br /&gt;
*final tighten&lt;br /&gt;
*cut&lt;br /&gt;
*when abrasive wheel became smaller would rotate 4x4 so that saw would continue previous cut&lt;br /&gt;
*marked feet and inches on 4x4&lt;br /&gt;
*placed in pile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=sep 13, 2013=&lt;br /&gt;
&lt;br /&gt;
pivot plate&lt;br /&gt;
&lt;br /&gt;
[[File:Pivotplatewide.skp]]&lt;br /&gt;
&lt;br /&gt;
seat&lt;br /&gt;
&lt;br /&gt;
[[File:Seat3550.skp]]&lt;br /&gt;
&lt;br /&gt;
=sep 12, 2013=&lt;br /&gt;
&lt;br /&gt;
cleaned up the workshop a little bit&lt;br /&gt;
&lt;br /&gt;
tweaked a few things on the vw sled&lt;br /&gt;
*the lever for the clutch will interfere with current design, need to change something&lt;br /&gt;
&lt;br /&gt;
[[File:Pc50hp33.skp]]&lt;br /&gt;
&lt;br /&gt;
sketched a pivot for the lifetrac6 to be mounted above the top pivot point&lt;br /&gt;
&lt;br /&gt;
[[File:Pivotmount20130912.skp]]&lt;br /&gt;
&lt;br /&gt;
=sep 11, 2013=&lt;br /&gt;
&lt;br /&gt;
*shifted in back instead of lowering it down&lt;br /&gt;
*added tanks above pump&lt;br /&gt;
&lt;br /&gt;
[[File:Pc50hp30.skp]]&lt;br /&gt;
&lt;br /&gt;
*flipped around&lt;br /&gt;
&lt;br /&gt;
[[File:Pc50hp31.skp]]&lt;br /&gt;
&lt;br /&gt;
possible double pump [http://www.surpluscenter.com/item.asp?item=9-5012-B&amp;amp;catname=hydraulic]&lt;br /&gt;
&lt;br /&gt;
[http://www.surpluscenter.com/item.asp?item=9-1901-A&amp;amp;catname=hydraulic paired pump]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*picture of holes on engine http://www.huelsmann.us/bugman/FilterTech.html&lt;br /&gt;
**looks like should be able to tap and use two side holes as mounts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*vw sled utilizing holes on either side of oil pump plate&lt;br /&gt;
**moved tanks around&lt;br /&gt;
**added radiator&lt;br /&gt;
&lt;br /&gt;
[[File:Pc50hp32.skp]]&lt;br /&gt;
&lt;br /&gt;
=sep 10, 2013=&lt;br /&gt;
&lt;br /&gt;
*new sled idea for vw&lt;br /&gt;
**angle iron base with vibration mounts front and back&lt;br /&gt;
**slides into tractor frame, bolts in 4 corners&lt;br /&gt;
**accommodates current exhaust system&lt;br /&gt;
**double pump possible&lt;br /&gt;
*known issues:&lt;br /&gt;
**sticks out the back&lt;br /&gt;
**still need to do tanks, should fit above bell and pump&lt;br /&gt;
&lt;br /&gt;
[[File:Pc50hp29.skp]]&lt;br /&gt;
&lt;br /&gt;
=sep 9, 2013=&lt;br /&gt;
&lt;br /&gt;
*gary suggested making a angle iron frame that slides into the 4x4 frame&lt;br /&gt;
*seems doable, started doing a little brain storming. no model yet.&lt;br /&gt;
*swapped some ideas with marcin and lucas about changing a few of the mounting layouts for the arms and pivots&lt;br /&gt;
&lt;br /&gt;
*[[File:LifeTrac6dorkmo20130909.skp]]&lt;br /&gt;
*[[File:LifeTrac6dorkmo20130909-3.skp]]&lt;br /&gt;
&lt;br /&gt;
=sep 7, 2013=&lt;br /&gt;
&lt;br /&gt;
*measured and drew bell housing holes&lt;br /&gt;
*used angle iron to attach to bell mount plate&lt;br /&gt;
*got rid of extra bell mount plate material.&lt;br /&gt;
*realigned pump and 4x4 mount&lt;br /&gt;
&lt;br /&gt;
[[File:Osepcvw24.torrent]]&lt;br /&gt;
&lt;br /&gt;
=sep 6, 2013=&lt;br /&gt;
&lt;br /&gt;
cleaned up a few things. no changes.&lt;br /&gt;
*https://docs.google.com/file/d/0BwxMMqGvwTM-UGdtYTVlbE4tNVk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=sep 5, 2013=&lt;br /&gt;
&lt;br /&gt;
did a pc ws version coupled instead of chained n sprocketed. used a 4x4 tube as pump mount.&lt;br /&gt;
*https://docs.google.com/file/d/0BwxMMqGvwTM-ZGFaUUJvaVFIZVE/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=sep 4, 2013=&lt;br /&gt;
&lt;br /&gt;
proposal for tractor frame change to mount 4x4 frame on back end.&lt;br /&gt;
*https://docs.google.com/file/d/0BwxMMqGvwTM-S09RTVdSTHE1Mms/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=aug 29, 2013=&lt;br /&gt;
&lt;br /&gt;
video of vw mount http://www.youtube.com/watch?v=Pr0UhhC7XpQ&lt;br /&gt;
&lt;br /&gt;
added two angle irons for support on opposite side. may be welded or bolted together.&lt;br /&gt;
*https://docs.google.com/file/d/0BwxMMqGvwTM-WllaMV9XeFR5cEE/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=aug 16, 2013=&lt;br /&gt;
going out of town. my sketchup work will be on pause.&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/file/d/0BwxMMqGvwTM-VUJ1azU1aXEzRlU/edit?usp=sharing&lt;br /&gt;
*started hose routing&lt;br /&gt;
**1-1/2&amp;quot; suction hose has 5&amp;quot; bend radius&lt;br /&gt;
**will need to use pressure line with a 45 degree elbow connecting to pump. straight out wont work.&lt;br /&gt;
*added rough position of cooler and filter&lt;br /&gt;
*bolt conflict with the horizontal and vertical pivot mounts located on the lower front 4x4&lt;br /&gt;
**can see a little here [https://www.youtube.com/watch?v=1saG0hIY4bE&amp;amp;feature=youtube_gdata_player video]&lt;br /&gt;
*cleaned up [[OSE Torrent Files]] page a little&lt;br /&gt;
&lt;br /&gt;
=aug 15, 2013=&lt;br /&gt;
https://docs.google.com/file/d/0BwxMMqGvwTM-RWo5MDhoMVZJSVk/edit?usp=sharing&lt;br /&gt;
*added some pipe fittings&lt;br /&gt;
**had to trim motor mount&lt;br /&gt;
*rough idea for hub to mount motorcycle sproket&lt;br /&gt;
*sourced and sketched some Vibration Isolation Mounts Cylindrical Type&lt;br /&gt;
**need to move a few things around slightly&lt;br /&gt;
**not sure how to get nut on within 4x4&lt;br /&gt;
*still need cooler and filter etc&lt;br /&gt;
&lt;br /&gt;
=aug 14, 2013=&lt;br /&gt;
[[File:Pc50hp7.skp]]&lt;br /&gt;
*added chain and sprocket idea&lt;br /&gt;
*added hydraulic pump model&lt;br /&gt;
*need to get bolt pattern measurements of bell housing&lt;br /&gt;
*need to add hose and cooler models&lt;br /&gt;
&lt;br /&gt;
=aug 13, 2013=&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/File:LifeTrac6_(dave)(dorkmo)4.skp.torrent&lt;br /&gt;
&lt;br /&gt;
4x4 XYZ frame for mounting VW engine. &lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Power_Cube_WS#WS.2B&lt;br /&gt;
&lt;br /&gt;
=july 30, 2013=&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/File:Geardownaxel5.skp.torrent&lt;br /&gt;
&lt;br /&gt;
utilizing steering pivot allows for front and rear drive axles. this theoretically simplifies a geardown. could also allow for simple gear changing by moving motors and other adjustments.&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Bulldozer_Geardown&lt;br /&gt;
&lt;br /&gt;
=jun 24, 2013=&lt;br /&gt;
&lt;br /&gt;
[[File:6SPOOLMOUNT.skp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:6spoolmount.png|300px]]&lt;br /&gt;
&lt;br /&gt;
=Sun Jun 23, 2013=&lt;br /&gt;
&#039;&#039;&#039;The Control Cab Control Panel needs accommodation of:&#039;&#039;&#039;&lt;br /&gt;
*Power connection to Power Cube (3/4&amp;quot;) - up to 4 Power Cubeconnections - let&#039;s do this.&lt;br /&gt;
*Case drain to Power Cube (1/4&amp;quot;) - need to do 4 pairs if using 4 Power Cubes independently.&lt;br /&gt;
*6-spool backhoe valve - 1/2&amp;quot; &lt;br /&gt;
*2-spool motor valve - 3/4&amp;quot;&lt;br /&gt;
*2-spool foot pedals - 3/4&amp;quot;&lt;br /&gt;
*Totals&lt;br /&gt;
**[8] pairs of 3/4&amp;quot;&lt;br /&gt;
**[6] pairs of 1/2&amp;quot;&lt;br /&gt;
**[4] singles of 1/4&amp;quot; (just return)&lt;br /&gt;
&lt;br /&gt;
[[Image:hydcontrolpanel.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:HydraulicQAcabmanifold10intermediateuntitled.dxf]]&lt;br /&gt;
&lt;br /&gt;
=Sat Jun 22, 2013=&lt;br /&gt;
&#039;&#039;&#039;Control panel for hydraulics:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
working with chris on hose routing for trac&lt;br /&gt;
*8 – ¾&lt;br /&gt;
*20 – ½&lt;br /&gt;
*1 male twords power cube&lt;br /&gt;
*valve bolt mounts to 4x4&lt;br /&gt;
*[[File:HydraulicQAcabmanifold6intermediate2B.dxf]]&lt;br /&gt;
*[[File:HydraulicQAcabmanifold6intermediate2A.dxf]]&lt;br /&gt;
&lt;br /&gt;
=Friday 21, 2013=&lt;br /&gt;
==Sprocket Design==&lt;br /&gt;
How to design a sprocket - [[Image:chaindrawing.jpg|150px]] &lt;br /&gt;
&lt;br /&gt;
[[File:chain.xcf|100px]] - source in GIMP&lt;br /&gt;
&lt;br /&gt;
See also [[Chain Length Calculator]].&lt;br /&gt;
&lt;br /&gt;
==Resulting Sprockets==&lt;br /&gt;
[[File:45T325bore.dxf]]&lt;br /&gt;
&lt;br /&gt;
[[Image:sprocket45.png|200px]]&lt;br /&gt;
&lt;br /&gt;
Sprocket with hub:&lt;br /&gt;
&lt;br /&gt;
[[File:45T325bore1by8.dxf]]&lt;br /&gt;
&lt;br /&gt;
[[Image:sprocketwhub.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
Use this for cutting. This is just the hub backing plate:&lt;br /&gt;
&lt;br /&gt;
[[File:3hubplate.dxf]]&lt;br /&gt;
&lt;br /&gt;
[[Image:3hubplate.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
Now the actual sprocket for cutting:&lt;br /&gt;
&lt;br /&gt;
[[File:45T325bore1by8cut.dxf]]&lt;br /&gt;
&lt;br /&gt;
[[Image:sprocketwhubcut.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
==Lathe Work==&lt;br /&gt;
possible motor for lathe [http://www.surpluscenter.com/item.asp?item=9-7467&amp;amp;catname=hydraulic surplus center]&lt;br /&gt;
&lt;br /&gt;
doing a draft with motor mount and threaded rods that tighten to base with some pieces that can c-clamp to base.&lt;br /&gt;
&lt;br /&gt;
[[File:Lathe2.skp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lathe5.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=Thursday 20, 2013=&lt;br /&gt;
&lt;br /&gt;
drew a rough sketchup of the lathe. going to redo motor mount.&lt;br /&gt;
[[File:Lathe1.skp]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lathe1pic.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
found this sprocket openscad thing on thingiverse&lt;br /&gt;
http://www.thingiverse.com/thing:7918&lt;br /&gt;
&lt;br /&gt;
=Tue Jun 18, 2013=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Download DXFs of the 6 parts here - these are 6.26 bolt spacing for these bearings - and DXFs have been corrected for 3/4&amp;quot; bolt holes, meaning 3/4&amp;quot; + 1/16&amp;quot; for CNC torch allowance. [[File:geardownDXF.zip]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:geardownview.jpg|300px]]&lt;br /&gt;
*went back to the basics and cut out intermedate shaft and using a quick attach module style mount. &lt;br /&gt;
**requires very large sprocket to achieve desired ratio&lt;br /&gt;
&lt;br /&gt;
*need to change chain cover to accomidate flange bearing bolts sticking through.&lt;br /&gt;
&lt;br /&gt;
[[Image:Geardownpic20130618.jpg|400px]]&lt;br /&gt;
[[Image:5xgear.jpg|400px]]&lt;br /&gt;
[[Image:Geardownpic20130618-2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
==DXF Files of Component Plates for Simple Geardown==&lt;br /&gt;
[https://drive.google.com/folderview?id=0BwxMMqGvwTM-N0hmeC1TV3FiZWs&amp;amp;usp=sharing Download DXFs]&lt;br /&gt;
&lt;br /&gt;
=Sat Jun 15, 2013=&lt;br /&gt;
&#039;&#039;&#039;See also [[Geardown]] Concept.&#039;&#039;&#039; Download folder of Sketchup files- [https://drive.google.com/folderview?id=0BwxMMqGvwTM-N092MnBGLU9CdU0&amp;amp;usp=sharing]&lt;br /&gt;
&lt;br /&gt;
[[Image:geardown.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Image:geardownsprocket.png|400px]]&lt;br /&gt;
&lt;br /&gt;
added some detail&lt;br /&gt;
*bolts for flange bearings&lt;br /&gt;
**had to shift some things around to account for tighter space&lt;br /&gt;
*added QD bushing for 1-7/8&lt;br /&gt;
*changed a couple mounting bolts to frame&lt;br /&gt;
&lt;br /&gt;
=June 8, 2013=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Needs discussion of how size can be made more compact&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/file/d/0BwxMMqGvwTM-RjJxVGNUVm90aVU/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
added to the model a mount style with QA facing opposite direction from before&lt;br /&gt;
*shortened distance the 2-15/16 bearing hangs out&lt;br /&gt;
&lt;br /&gt;
cleaned up some of the mounting and case holes&lt;br /&gt;
*not sure about where the best places are to have mount holes&lt;br /&gt;
&lt;br /&gt;
=June 7, 2013=&lt;br /&gt;
&lt;br /&gt;
https://docs.google.com/file/d/0BwxMMqGvwTM-N1piZlVIaGtqUXc/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
started modeling the chain and sprockets.&lt;br /&gt;
*looking for collisions&lt;br /&gt;
*taking up as much slack of chain in design as possible&lt;br /&gt;
&lt;br /&gt;
=June 1, 2013=&lt;br /&gt;
&lt;br /&gt;
Design Sprint - Dozer Geardown&lt;br /&gt;
&lt;br /&gt;
[[Category:Personal Logs]]&lt;br /&gt;
[[Category:CAD team]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CEB_Press_Control_Code_Flowchart&amp;diff=119547</id>
		<title>CEB Press Control Code Flowchart</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CEB_Press_Control_Code_Flowchart&amp;diff=119547"/>
		<updated>2014-05-15T15:01:16Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code Flowchart=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/d/1POxAtm-XeJK92Vebt9KDyJSC1HON4AoGOCaTgV2YY7A/pub?w=700&amp;amp;amp;h=500&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/a/opensourceecology.org/drawings/d/1POxAtm-XeJK92Vebt9KDyJSC1HON4AoGOCaTgV2YY7A/edit edit]&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[[CEB Press Controller Schematic]]&lt;br /&gt;
*Credits - James Slade (controller build), Zach Dwiel (code). [[Slade Log]]. [[Zach Dwiel Log]].&lt;br /&gt;
*Download - https://github.com/OSE/ceb-controller/archive/master.zip&lt;br /&gt;
*[[Zach&#039;s CEB Press Controller Schematic]]&lt;br /&gt;
*Control logic animation ==Design Description==&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;400&amp;quot; height=&amp;quot;233&amp;quot; src=&amp;quot;https://www.youtube.com/embed//0-BRCh19b1Q&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
*Hydraulic Functional Diagram - [[File:CEBfunctionaldiagram.jpg|200px]]&lt;br /&gt;
*Control logic - but from Prototype I - [[CEB_Press_Control_Logic#Control_Logic]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=File:CEB_code.rar&amp;diff=119546</id>
		<title>File:CEB code.rar</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=File:CEB_code.rar&amp;diff=119546"/>
		<updated>2014-05-15T15:00:14Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
==The latest code is at https://github.com/OSE/ceb-controller==&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=File:CEB_code.rar&amp;diff=119545</id>
		<title>File:CEB code.rar</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=File:CEB_code.rar&amp;diff=119545"/>
		<updated>2014-05-15T14:58:17Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=DO NOT USE THIS FILE=&lt;br /&gt;
&lt;br /&gt;
==The latest code is at https://github.com/OSE/ceb-controller==&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=117591</id>
		<title>How to Structure the Wiki for GVCS Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=117591"/>
		<updated>2014-03-25T01:03:54Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Version R&amp;amp;D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
&lt;br /&gt;
Historically the wiki has been a mess. Different machines set up in different ways, info that&#039;s hard to find, etc.&lt;br /&gt;
&lt;br /&gt;
In Oct, 2013, we established a template for how to organize the wiki pages for each machine. This template was developed to meet the following requirements:&lt;br /&gt;
* One central &amp;quot;home page&amp;quot; for each machine.&lt;br /&gt;
* Multiple versions of machines.&lt;br /&gt;
* Working on a new version of a machine shouldn&#039;t interfere with people wanting to use docs for previous version(s).&lt;br /&gt;
* Parallel development of machine modules.&lt;br /&gt;
* Parallel building of machine modules.&lt;br /&gt;
&lt;br /&gt;
Many old machines are still a mish mash. When we start new versions of them, please take a few minutes to split the general info from the version-specific info and restructure them like shown here.&lt;br /&gt;
&lt;br /&gt;
This page should probably be better integrated with [[Documentation Standards]], but the author of this page, Dan Benamy, doesn&#039;t understand that one and is afraid to mess up what Marcin&#039;s trying to do with it.&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
&lt;br /&gt;
The overall structure for accessing GVCS machines from the wiki is to start at the GVCS Index, [[GVCS]], which lists and links to all the machines.&lt;br /&gt;
&lt;br /&gt;
Each of those links goes to the &#039;&#039;overall machine&#039;&#039; page which has general info about the machine and links to all versions of the machine. Eg: [[Ironworker]]&lt;br /&gt;
&lt;br /&gt;
Each version of the machine has a main page with the status, development resources, build instructions, and user manuals for that version. Eg: [[Ironworker_3]]. Anything having to do with a version should be on a page &amp;quot;within&amp;quot; the version using a slash. This makes certain automatic wiki links work properly.&lt;br /&gt;
&lt;br /&gt;
* GOOD: Ironworker_3/Research_Development&lt;br /&gt;
* BAD: Ironworker_Research_Development_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Page Templates=&lt;br /&gt;
&lt;br /&gt;
When you create a new page, copy and paste the relevant template from here to the new page and replace the &amp;quot;TODO&amp;quot;s with the info specific to that page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overall Machine== &lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(don&#039;t put the GVCS header on this page)&lt;br /&gt;
&lt;br /&gt;
[[Image:TODO Some Machine.jpg|thumb|360px|A nice caption.]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
==Version 3==&lt;br /&gt;
TODO [[Some Machine 3]].&lt;br /&gt;
&lt;br /&gt;
==Version 2==&lt;br /&gt;
TODO [[Some Machine 2]].&lt;br /&gt;
&lt;br /&gt;
==Version 1==&lt;br /&gt;
TODO [[Some Machine 1]].&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
=Product Ecology=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GVCS Footer}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Main Page==&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3 (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
The is the main page for version TODO of the [[TODO Some Machine]]. See that page for general info and how it fits into the GVCS.&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
TODO The first line of the status should be one of the following things:&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;This is the development version.&#039;&#039;&#039; If you&#039;re helping with development, or would like to, this is the version you want. See the &amp;quot;Research and Development&amp;quot; link above for details.&lt;br /&gt;
2. &#039;&#039;&#039;This is the stable version.&#039;&#039;&#039; If you want to build a SOME MACHINE that works, you should use this version.&lt;br /&gt;
3. &#039;&#039;&#039;This is an old version.&#039;&#039;&#039; There are newer and improved version of the [[Some Machine]].&lt;br /&gt;
4. &#039;&#039;&#039;This is a placeholder for a future version&#039;&#039;&#039; so we can start collecting notes about it.&lt;br /&gt;
&lt;br /&gt;
TODO Then there can be more detail. Eg: Version 3 was started in early 2013 and then put on hold. It&#039;s being revived in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
(don&#039;t put a GVCS footer on this page)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version R&amp;amp;D==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Research_Development (or whatever version):&lt;br /&gt;
&lt;br /&gt;
There&#039;s some disagreement on how to do development boards. Marcin wants a separate board for each module. Dan Benamy and other&#039;s argue that this doesn&#039;t make sense. You make have to adjust this page depending on how it&#039;s done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Development Board=&lt;br /&gt;
TODO Update the embed and edit links:&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=YOUR_GOOGLE_SPREADSHEET&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=YOUR_GOOGLE_SPREADSHEET#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
(You can use the above code for the embed and edit link by going to the development board, copying the &amp;quot;key&amp;quot; part of the url, and pasting it in the above urls.)&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version Bill of Materials==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Bill_of_Materials (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
TODO Generated BOM goes here.&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Manufacturing Instructions==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Manufacturing_Instructions (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
==TODO Some Module==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO go to the guide on dozuki, get the embed link, remove the &amp;quot;&amp;lt;a href...&amp;gt;&amp;lt;/a&amp;gt;&amp;quot; and put the embed code instead of this:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&lt;br /&gt;
          data-dozuki-embed=&#039;3&#039;&lt;br /&gt;
          src=&amp;quot;http://d1luk0418egahw.cloudfront.net/static/embed/ifixit-embed.3.js#id=83&amp;amp;site=opensourceecology.dozuki.com&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO Replace this link with the regular link to the dozuki guide:&lt;br /&gt;
[http://opensourceecology.dozuki.com/Guide/Ironworker+Frame/83/2 Open Full Screen]&lt;br /&gt;
&lt;br /&gt;
==TODO Another Module==&lt;br /&gt;
&lt;br /&gt;
==TODO A Third Module==&lt;br /&gt;
&lt;br /&gt;
==Overall Assembly==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Manufacturing_Instructions&amp;diff=113613</id>
		<title>Ironworker 3/Manufacturing Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Manufacturing_Instructions&amp;diff=113613"/>
		<updated>2014-01-16T18:15:10Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
The dozuki guides are under active development in Oct 2013. Anything elsewhere should be put into dozuki or archived.&lt;br /&gt;
&lt;br /&gt;
The assembly is broken into modules to facilitate parallel construction. Every module until the last one can be done in parallel if there&#039;s enough manpower. Then the final guide shows how to put all the pieces together. Pretty cool, huh? :-)&lt;br /&gt;
&lt;br /&gt;
==Bottom Frame==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+bottom+frame+of+the+Ironworker+%28in+progress%29/85&lt;br /&gt;
&lt;br /&gt;
==Top Frame==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+Ironworker+-+Top+Frame+module+%28in+progress%29/86&lt;br /&gt;
&lt;br /&gt;
==Hydraulics==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Shear==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+the+shears/88&lt;br /&gt;
&lt;br /&gt;
==Shear Table==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+the+shear+table+of+the+Ironworker+%28in+progress%29/87&lt;br /&gt;
&lt;br /&gt;
==Assembling the Pieces==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+Ironworker+Machine+-+Overall+Machine+%28in+progress%29/84&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113538</id>
		<title>How to Structure the Wiki for GVCS Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113538"/>
		<updated>2014-01-14T12:17:16Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
&lt;br /&gt;
Historically the wiki has been a mess. Different machines set up in different ways, info that&#039;s hard to find, etc.&lt;br /&gt;
&lt;br /&gt;
In Oct, 2013, we established a template for how to organize the wiki pages for each machine. This template was developed to meet the following requirements:&lt;br /&gt;
* One central &amp;quot;home page&amp;quot; for each machine.&lt;br /&gt;
* Multiple versions of machines.&lt;br /&gt;
* Working on a new version of a machine shouldn&#039;t interfere with people wanting to use docs for previous version(s).&lt;br /&gt;
* Parallel development of machine modules.&lt;br /&gt;
* Parallel building of machine modules.&lt;br /&gt;
&lt;br /&gt;
Many old machines are still a mish mash. When we start new versions of them, please take a few minutes to split the general info from the version-specific info and restructure them like shown here.&lt;br /&gt;
&lt;br /&gt;
This page should probably be better integrated with [[Documentation Standards]], but the author of this page, Dan Benamy, doesn&#039;t understand that one and is afraid to mess up what Marcin&#039;s trying to do with it.&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
&lt;br /&gt;
The overall structure for accessing GVCS machines from the wiki is to start at the GVCS Index, [[GVCS]], which lists and links to all the machines.&lt;br /&gt;
&lt;br /&gt;
Each of those links goes to the &#039;&#039;overall machine&#039;&#039; page which has general info about the machine and links to all versions of the machine. Eg: [[Ironworker]]&lt;br /&gt;
&lt;br /&gt;
Each version of the machine has a main page with the status, development resources, build instructions, and user manuals for that version. Eg: [[Ironworker_3]]. Anything having to do with a version should be on a page &amp;quot;within&amp;quot; the version using a slash. This makes certain automatic wiki links work properly.&lt;br /&gt;
&lt;br /&gt;
* GOOD: Ironworker_3/Research_Development&lt;br /&gt;
* BAD: Ironworker_Research_Development_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Page Templates=&lt;br /&gt;
&lt;br /&gt;
When you create a new page, copy and paste the relevant template from here to the new page and replace the &amp;quot;TODO&amp;quot;s with the info specific to that page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overall Machine== &lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(don&#039;t put the GVCS header on this page)&lt;br /&gt;
&lt;br /&gt;
[[Image:TODO Some Machine.jpg|thumb|360px|A nice caption.]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
==Version 3==&lt;br /&gt;
TODO [[Some Machine 3]].&lt;br /&gt;
&lt;br /&gt;
==Version 2==&lt;br /&gt;
TODO [[Some Machine 2]].&lt;br /&gt;
&lt;br /&gt;
==Version 1==&lt;br /&gt;
TODO [[Some Machine 1]].&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
=Product Ecology=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GVCS Footer}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Main Page==&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3 (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
The is the main page for version TODO of the [[TODO Some Machine]]. See that page for general info and how it fits into the GVCS.&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
TODO The first line of the status should be one of the following things:&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;This is the development version.&#039;&#039;&#039; If you&#039;re helping with development, or would like to, this is the version you want. See the &amp;quot;Research and Development&amp;quot; link above for details.&lt;br /&gt;
2. &#039;&#039;&#039;This is the stable version.&#039;&#039;&#039; If you want to build a SOME MACHINE that works, you should use this version.&lt;br /&gt;
3. &#039;&#039;&#039;This is an old version.&#039;&#039;&#039; There are newer and improved version of the [[Some Machine]].&lt;br /&gt;
4. &#039;&#039;&#039;This is a placeholder for a future version&#039;&#039;&#039; so we can start collecting notes about it.&lt;br /&gt;
&lt;br /&gt;
TODO Then there can be more detail. Eg: Version 3 was started in early 2013 and then put on hold. It&#039;s being revived in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
(don&#039;t put a GVCS footer on this page)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version R&amp;amp;D==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Research Development (or whatever version):&lt;br /&gt;
&lt;br /&gt;
There&#039;s some disagreement on how to do development boards. Marcin wants a separate board for each module. Dan Benamy and other&#039;s argue that this doesn&#039;t make sense. You make have to adjust this page depending on how it&#039;s done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Development Board=&lt;br /&gt;
TODO Update the embed and edit links:&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=YOUR_GOOGLE_SPREADSHEET&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=YOUR_GOOGLE_SPREADSHEET#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
(You can use the above code for the embed and edit link by going to the development board, copying the &amp;quot;key&amp;quot; part of the url, and pasting it in the above urls.)&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Bill of Materials==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Bill_of_Materials (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
TODO Generated BOM goes here.&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Manufacturing Instructions==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Manufacturing_Instructions (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
==TODO Some Module==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO go to the guide on dozuki, get the embed link, remove the &amp;quot;&amp;lt;a href...&amp;gt;&amp;lt;/a&amp;gt;&amp;quot; and put the embed code instead of this:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&lt;br /&gt;
          data-dozuki-embed=&#039;3&#039;&lt;br /&gt;
          src=&amp;quot;http://d1luk0418egahw.cloudfront.net/static/embed/ifixit-embed.3.js#id=83&amp;amp;site=opensourceecology.dozuki.com&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO Replace this link with the regular link to the dozuki guide:&lt;br /&gt;
[http://opensourceecology.dozuki.com/Guide/Ironworker+Frame/83/2 Open Full Screen]&lt;br /&gt;
&lt;br /&gt;
==TODO Another Module==&lt;br /&gt;
&lt;br /&gt;
==TODO A Third Module==&lt;br /&gt;
&lt;br /&gt;
==Overall Assembly==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113537</id>
		<title>How to Structure the Wiki for GVCS Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113537"/>
		<updated>2014-01-14T12:15:59Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
&lt;br /&gt;
Historically the wiki has been a mess. Different machines set up in different ways, info that&#039;s hard to find, etc.&lt;br /&gt;
&lt;br /&gt;
In Oct, 2013, we established a template for how to organize the wiki pages for each machine. This template was developed to meet the following requirements:&lt;br /&gt;
* One central &amp;quot;home page&amp;quot; for each machine.&lt;br /&gt;
* Multiple versions of machines.&lt;br /&gt;
* Working on a new version of a machine shouldn&#039;t interfere with people wanting to use docs for previous version(s).&lt;br /&gt;
* Parallel development of machine modules.&lt;br /&gt;
* Parallel building of machine modules.&lt;br /&gt;
&lt;br /&gt;
Many old machines are still a mish mash. When we start new versions of them, take a moment to split about the general and version-specific info and restructure them like shown here.&lt;br /&gt;
&lt;br /&gt;
This page should probably be better integrated with [[Documentation Standards]], but the author of this page, Dan Benamy, doesn&#039;t understand that one and is afraid to mess up what Marcin&#039;s trying to do with it.&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
&lt;br /&gt;
The overall structure for accessing GVCS machines from the wiki is to start at the GVCS Index, [[GVCS]], which lists and links to all the machines.&lt;br /&gt;
&lt;br /&gt;
Each of those links goes to the &#039;&#039;overall machine&#039;&#039; page which has general info about the machine and links to all versions of the machine. Eg: [[Ironworker]]&lt;br /&gt;
&lt;br /&gt;
Each version of the machine has a main page with the status, development resources, build instructions, and user manuals for that version. Eg: [[Ironworker_3]]. Anything having to do with a version should be on a page &amp;quot;within&amp;quot; the version using a slash. This makes certain automatic wiki links work properly.&lt;br /&gt;
&lt;br /&gt;
* GOOD: Ironworker_3/Research_Development&lt;br /&gt;
* BAD: Ironworker_Research_Development_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Page Templates=&lt;br /&gt;
&lt;br /&gt;
When you create a new page, copy and paste the relevant template from here to the new page and replace the &amp;quot;TODO&amp;quot;s with the info specific to that page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overall Machine== &lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(don&#039;t put the GVCS header on this page)&lt;br /&gt;
&lt;br /&gt;
[[Image:TODO Some Machine.jpg|thumb|360px|A nice caption.]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
==Version 3==&lt;br /&gt;
TODO [[Some Machine 3]].&lt;br /&gt;
&lt;br /&gt;
==Version 2==&lt;br /&gt;
TODO [[Some Machine 2]].&lt;br /&gt;
&lt;br /&gt;
==Version 1==&lt;br /&gt;
TODO [[Some Machine 1]].&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
=Product Ecology=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GVCS Footer}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Main Page==&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3 (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
The is the main page for version TODO of the [[TODO Some Machine]]. See that page for general info and how it fits into the GVCS.&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
TODO The first line of the status should be one of the following things:&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;This is the development version.&#039;&#039;&#039; If you&#039;re helping with development, or would like to, this is the version you want. See the &amp;quot;Research and Development&amp;quot; link above for details.&lt;br /&gt;
2. &#039;&#039;&#039;This is the stable version.&#039;&#039;&#039; If you want to build a SOME MACHINE that works, you should use this version.&lt;br /&gt;
3. &#039;&#039;&#039;This is an old version.&#039;&#039;&#039; There are newer and improved version of the [[Some Machine]].&lt;br /&gt;
4. &#039;&#039;&#039;This is a placeholder for a future version&#039;&#039;&#039; so we can start collecting notes about it.&lt;br /&gt;
&lt;br /&gt;
TODO Then there can be more detail. Eg: Version 3 was started in early 2013 and then put on hold. It&#039;s being revived in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
(don&#039;t put a GVCS footer on this page)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version R&amp;amp;D==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Research Development (or whatever version):&lt;br /&gt;
&lt;br /&gt;
There&#039;s some disagreement on how to do development boards. Marcin wants a separate board for each module. Dan Benamy and other&#039;s argue that this doesn&#039;t make sense. You make have to adjust this page depending on how it&#039;s done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Development Board=&lt;br /&gt;
TODO Update the embed and edit links:&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=YOUR_GOOGLE_SPREADSHEET&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=YOUR_GOOGLE_SPREADSHEET#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
(You can use the above code for the embed and edit link by going to the development board, copying the &amp;quot;key&amp;quot; part of the url, and pasting it in the above urls.)&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Bill of Materials==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Bill_of_Materials (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
TODO Generated BOM goes here.&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Manufacturing Instructions==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Manufacturing_Instructions (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
==TODO Some Module==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO go to the guide on dozuki, get the embed link, remove the &amp;quot;&amp;lt;a href...&amp;gt;&amp;lt;/a&amp;gt;&amp;quot; and put the embed code instead of this:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&lt;br /&gt;
          data-dozuki-embed=&#039;3&#039;&lt;br /&gt;
          src=&amp;quot;http://d1luk0418egahw.cloudfront.net/static/embed/ifixit-embed.3.js#id=83&amp;amp;site=opensourceecology.dozuki.com&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO Replace this link with the regular link to the dozuki guide:&lt;br /&gt;
[http://opensourceecology.dozuki.com/Guide/Ironworker+Frame/83/2 Open Full Screen]&lt;br /&gt;
&lt;br /&gt;
==TODO Another Module==&lt;br /&gt;
&lt;br /&gt;
==TODO A Third Module==&lt;br /&gt;
&lt;br /&gt;
==Overall Assembly==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113536</id>
		<title>How to Structure the Wiki for GVCS Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=How_to_Structure_the_Wiki_for_GVCS_Machines&amp;diff=113536"/>
		<updated>2014-01-14T12:15:02Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: Created page with &amp;quot;=Intro=  Historically the wiki has been a mess. Different machines set up in different ways, info that&amp;#039;s hard to find, etc.  In Oct, 2013, we established a template for how to...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
&lt;br /&gt;
Historically the wiki has been a mess. Different machines set up in different ways, info that&#039;s hard to find, etc.&lt;br /&gt;
&lt;br /&gt;
In Oct, 2013, we established a template for how to organize the wiki pages for each machine. This template was developed to meet the following requirements:&lt;br /&gt;
* One central &amp;quot;home page&amp;quot; for each machine.&lt;br /&gt;
* Multiple versions of machines.&lt;br /&gt;
* Working on a new version of a machine shouldn&#039;t interfere with people wanting to use docs for previous version(s).&lt;br /&gt;
* Parallel development of machine modules.&lt;br /&gt;
* Parallel building of machine modules.&lt;br /&gt;
&lt;br /&gt;
This page should probably be better integrated with [[Documentation Standards]], but the author of this page, Dan Benamy, doesn&#039;t understand that one and is afraid to mess up what Marcin&#039;s trying to do with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Structure=&lt;br /&gt;
&lt;br /&gt;
The overall structure for accessing GVCS machines from the wiki is to start at the GVCS Index, [[GVCS]], which lists and links to all the machines.&lt;br /&gt;
&lt;br /&gt;
Each of those links goes to the &#039;&#039;overall machine&#039;&#039; page which has general info about the machine and links to all versions of the machine. Eg: [[Ironworker]]&lt;br /&gt;
&lt;br /&gt;
Each version of the machine has a main page with the status, development resources, build instructions, and user manuals for that version. Eg: [[Ironworker_3]]. Anything having to do with a version should be on a page &amp;quot;within&amp;quot; the version using a slash. This makes certain automatic wiki links work properly.&lt;br /&gt;
&lt;br /&gt;
* GOOD: Ironworker_3/Research_Development&lt;br /&gt;
* BAD: Ironworker_Research_Development_3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Page Templates=&lt;br /&gt;
&lt;br /&gt;
When you create a new page, copy and paste the relevant template from here to the new page and replace the &amp;quot;TODO&amp;quot;s with the info specific to that page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overall Machine== &lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(don&#039;t put the GVCS header on this page)&lt;br /&gt;
&lt;br /&gt;
[[Image:TODO Some Machine.jpg|thumb|360px|A nice caption.]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=Versions=&lt;br /&gt;
==Version 3==&lt;br /&gt;
TODO [[Some Machine 3]].&lt;br /&gt;
&lt;br /&gt;
==Version 2==&lt;br /&gt;
TODO [[Some Machine 2]].&lt;br /&gt;
&lt;br /&gt;
==Version 1==&lt;br /&gt;
TODO [[Some Machine 1]].&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
=Product Ecology=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{GVCS Footer}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Main Page==&lt;br /&gt;
&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3 (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
The is the main page for version TODO of the [[TODO Some Machine]]. See that page for general info and how it fits into the GVCS.&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
TODO The first line of the status should be one of the following things:&lt;br /&gt;
&lt;br /&gt;
1. &#039;&#039;&#039;This is the development version.&#039;&#039;&#039; If you&#039;re helping with development, or would like to, this is the version you want. See the &amp;quot;Research and Development&amp;quot; link above for details.&lt;br /&gt;
2. &#039;&#039;&#039;This is the stable version.&#039;&#039;&#039; If you want to build a SOME MACHINE that works, you should use this version.&lt;br /&gt;
3. &#039;&#039;&#039;This is an old version.&#039;&#039;&#039; There are newer and improved version of the [[Some Machine]].&lt;br /&gt;
4. &#039;&#039;&#039;This is a placeholder for a future version&#039;&#039;&#039; so we can start collecting notes about it.&lt;br /&gt;
&lt;br /&gt;
TODO Then there can be more detail. Eg: Version 3 was started in early 2013 and then put on hold. It&#039;s being revived in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
(don&#039;t put a GVCS footer on this page)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version R&amp;amp;D==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Research Development (or whatever version):&lt;br /&gt;
&lt;br /&gt;
There&#039;s some disagreement on how to do development boards. Marcin wants a separate board for each module. Dan Benamy and other&#039;s argue that this doesn&#039;t make sense. You make have to adjust this page depending on how it&#039;s done.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Development Board=&lt;br /&gt;
TODO Update the embed and edit links:&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=YOUR_GOOGLE_SPREADSHEET&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=YOUR_GOOGLE_SPREADSHEET#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
(You can use the above code for the embed and edit link by going to the development board, copying the &amp;quot;key&amp;quot; part of the url, and pasting it in the above urls.)&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Bill of Materials==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Bill_of_Materials (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
TODO Generated BOM goes here.&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Manufacturing Instructions==&lt;br /&gt;
http://opensourceecology.org/wiki/Some_Machine_3/Manufacturing_Instructions (or whatever version):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
==TODO Some Module==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO go to the guide on dozuki, get the embed link, remove the &amp;quot;&amp;lt;a href...&amp;gt;&amp;lt;/a&amp;gt;&amp;quot; and put the embed code instead of this:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&lt;br /&gt;
          data-dozuki-embed=&#039;3&#039;&lt;br /&gt;
          src=&amp;quot;http://d1luk0418egahw.cloudfront.net/static/embed/ifixit-embed.3.js#id=83&amp;amp;site=opensourceecology.dozuki.com&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO Replace this link with the regular link to the dozuki guide:&lt;br /&gt;
[http://opensourceecology.dozuki.com/Guide/Ironworker+Frame/83/2 Open Full Screen]&lt;br /&gt;
&lt;br /&gt;
==TODO Another Module==&lt;br /&gt;
&lt;br /&gt;
==TODO A Third Module==&lt;br /&gt;
&lt;br /&gt;
==Overall Assembly==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
(no GVCS footer)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Bill_of_Materials&amp;diff=113535</id>
		<title>Ironworker 3/Bill of Materials</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Bill_of_Materials&amp;diff=113535"/>
		<updated>2014-01-14T12:08:58Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--START OF GENERATED BOM. Copy from here until the end into the wiki.--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This BOM was generated from the dozuki guides on 2013-11-16 17:25:37.081000&lt;br /&gt;
&lt;br /&gt;
WARNING: If you hand-edit this list, your changes will be lost when the BOM is regenerated. If anything is wrong, you should update the parts entries in dozuki, fix bom_generator.py, or make a note in a section other than the generated list.&lt;br /&gt;
&lt;br /&gt;
Count	 Part&lt;br /&gt;
-----	 ----&lt;br /&gt;
    2	 1&amp;quot; x 2&amp;quot; bolts&lt;br /&gt;
    2	 1&amp;quot; x 6&amp;quot; bolts&lt;br /&gt;
   10	 1&amp;quot; x 7&amp;quot; bolts&lt;br /&gt;
   14	 1&amp;quot; x 8&amp;quot; bolts&lt;br /&gt;
    2	 10&amp;quot; x 1&amp;quot; hardened bolts&lt;br /&gt;
   20	 7&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    6	 8&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    4	 pivot plates without bushings&lt;br /&gt;
  4.5	 ounces of grease&lt;br /&gt;
    1	 oz grease&lt;br /&gt;
  107	 1&amp;quot; nuts&lt;br /&gt;
    6	 1 hole x 5 hole plates&lt;br /&gt;
    1	 1&amp;quot; x 8&amp;quot; x 16&amp;quot; plate&lt;br /&gt;
    4	 2 hole x 2 hole plates&lt;br /&gt;
    6	 2 hole x 3 hole plates&lt;br /&gt;
   16	 2 hole x 4 hole plates&lt;br /&gt;
    8	 pivot plates&lt;br /&gt;
    2	 1&amp;quot; x TODO&amp;quot; threaded robs&lt;br /&gt;
    2	 1&amp;quot; x 15&amp;quot; threaded rods&lt;br /&gt;
    5	 1&amp;quot; x 16&amp;quot; threaded rods&lt;br /&gt;
    4	 13&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    4	 14&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    3	 15&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    1	 16.5&amp;quot; x 1&amp;quot; threaded rod&lt;br /&gt;
    2	 26&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    1	 3&amp;quot; x 8&amp;quot; solid shaft&lt;br /&gt;
    2	 1&amp;quot; springs&lt;br /&gt;
    2	 1 hole 0.5&amp;quot; tubes&lt;br /&gt;
    2	 1 hole 1/2&amp;quot; tubes&lt;br /&gt;
    1	 1/2&amp;quot; 12 hole tube&lt;br /&gt;
    2	 12 hole 1/2&amp;quot; tubes&lt;br /&gt;
    1	 14 hole 1/2&amp;quot; tube&lt;br /&gt;
    1	 17 hole 1/2&amp;quot; tube&lt;br /&gt;
    5	 19 hole 1/2&amp;quot; tubes&lt;br /&gt;
    4	 2 hole long 1/4&amp;quot; tubes&lt;br /&gt;
    1	 4 hole, 0.25&amp;quot; tube&lt;br /&gt;
    2	 6 hole, 0.25&amp;quot; tubes&lt;br /&gt;
   59	 1&amp;quot; washers&lt;br /&gt;
&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 2&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 14&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 6&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 10, Part: 1&amp;quot; x 7&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 18&lt;br /&gt;
Count: 14, Part: 1&amp;quot; x 8&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 2, Part: 10&amp;quot; x 1&amp;quot; hardened bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
Count: 20, Part: 7&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 20&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 6, Part: 8&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
Count: 4, Part: pivot plates without bushings&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 4.5, Part: ounces of grease&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 12&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 25&lt;br /&gt;
Count: 1, Part: oz grease&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 9&lt;br /&gt;
Count: 107, Part: 1&amp;quot; nuts&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 10&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 8&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 18&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 22&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 24&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 6, Part: 1 hole x 5 hole plates&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 16&lt;br /&gt;
Count: 1, Part: 1&amp;quot; x 8&amp;quot; x 16&amp;quot; plate&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 12&lt;br /&gt;
Count: 4, Part: 2 hole x 2 hole plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 5&lt;br /&gt;
Count: 6, Part: 2 hole x 3 hole plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 16, Part: 2 hole x 4 hole plates&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 8, Part: pivot plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x TODO&amp;quot; threaded robs&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 15&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 5, Part: 1&amp;quot; x 16&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
Count: 4, Part: 13&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 4, Part: 14&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 3&lt;br /&gt;
Count: 3, Part: 15&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
Count: 1, Part: 16.5&amp;quot; x 1&amp;quot; threaded rod&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
Count: 2, Part: 26&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 1, Part: 3&amp;quot; x 8&amp;quot; solid shaft&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 2, Part: 1&amp;quot; springs&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 2, Part: 1 hole 0.5&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 2, Part: 1 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 1, Part: 1/2&amp;quot; 12 hole tube&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 27&lt;br /&gt;
Count: 2, Part: 12 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
Count: 1, Part: 14 hole 1/2&amp;quot; tube&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 1, Part: 17 hole 1/2&amp;quot; tube&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 5, Part: 19 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 1&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 4, Part: 2 hole long 1/4&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
Count: 1, Part: 4 hole, 0.25&amp;quot; tube&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 2, Part: 6 hole, 0.25&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 5&lt;br /&gt;
Count: 59, Part: 1&amp;quot; washers&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 24&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 20&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 22&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 18&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 14&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--END OF GENERATED BOM.--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Documentation_Standards&amp;diff=113534</id>
		<title>Documentation Standards</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Documentation_Standards&amp;diff=113534"/>
		<updated>2014-01-14T11:54:51Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
In Dan Benamy&#039;s opinion, this page is confusing and needs some cleanup, focusing, clarifying, and/or splitting up. Normally he do that work but it looks like Marcin set up this page and he doesn&#039;t want to get in Marcin&#039;s way. Dan will just add a link here to [[How to Structure the Wiki for GVCS Machines]] which he&#039;d normally integrate into the page if he understood it :-)&lt;br /&gt;
&lt;br /&gt;
As OSE moves towards viral replicability, it is important to create effective documentation standards. This applies to the work of OSE and also towards creating a broader platform for open source product development. To this end, we are studying existing open source industry standards - to pick out existing best practice and to integrate these into a larger platform. The strategy is to remix as many existing tools as possible - while inspiring the related players to contribute to a greater platform.&lt;br /&gt;
&lt;br /&gt;
The scope of Open Source Ecology involves machine and organization level items leading to the Open Source Economy. In Phase I (January, 2013), we are defining the standards for the 50 [[GVCS]] machines, which is intended to be a beta test for a larger platform that scales to any number of items - encyclopedic scope. Organizational aspects for creating the open source economy will be developed in Phase II (February, 2013).&lt;br /&gt;
&lt;br /&gt;
The current priority is to standardize a format for documentation on the OSE Wiki.&lt;br /&gt;
&lt;br /&gt;
=Strategy=&lt;br /&gt;
*Define problem statements and solutions - [https://docs.google.com/document/d/1K8sx7cYpgwy42m2oK_-HpOSU0fME9AiexZT_CfZ-hzk/edit]&lt;br /&gt;
&lt;br /&gt;
*Seed the process, find Product Owners&lt;br /&gt;
*Invite Key Players for review to generate buy-in&lt;br /&gt;
*Host a Hackathon to deploy a minimum viable product based on community buy-in&lt;br /&gt;
*Keep developing platform&lt;br /&gt;
*Monetize platform for self-sustainability of effort&lt;br /&gt;
&lt;br /&gt;
=General Approach=&lt;br /&gt;
&lt;br /&gt;
We would like to develop a platform for uniform acccess to all open hardware, by virtue of defining a content taxonomy. This includes tagging to make Open Source Hardware (OSH) universally findable - so that it can be searched and results displayed. This includes defining uniform content taxonomy and standards (such as CAD, BOM, fabrication drawings, etc.). Define genearally-accepted best practice taxonomy for delivery of content and standards (such as Sketchup model, YouTube video, LibreCAD dxf file, etc). Open Source Warehouse would be a platform where content would be submitted and viewed via an easy-to-use platform.&lt;br /&gt;
&lt;br /&gt;
=User Stories=&lt;br /&gt;
&lt;br /&gt;
We will deploy a community version of the Documentation Platform in April. In February, we will deploy an OSE internal version which can be upgraded by others, with basic functionality that allows us to organize content from the entire wiki. The goal is to index and link to a large quantity of modular content. This modular content can subsequently be displayed in any viewing/structuring platform. &lt;br /&gt;
&lt;br /&gt;
==Replicator==&lt;br /&gt;
*As a builder, I want to access the build instructions, videos, and BOMs for a successful build.&lt;br /&gt;
*As a replicator, I want to assess the state of completion of the product. I also want to disambiguate between product that does not exist vs. documentation that does not exist. Ie, some Product might be built, but documentation may not exist - so absence of documentation does not necessarily mean absence of product.&lt;br /&gt;
*As an open source economist, I need to see the economic analysis to see scaling potential of a manufacturing enterprise for a machine.&lt;br /&gt;
&lt;br /&gt;
==Developer==&lt;br /&gt;
*As a developer, I need a place to upload content, and I need a clear structure so that I know where to upload it.&lt;br /&gt;
*As a developer working on a further iteration, I need a place to update the documentation without messing up the structure and integrity of prior documenation, because some changes of content also affects other parts of the documentation.&lt;br /&gt;
*As a minor developer who made only a small improvement, I need to make sure that my work is documented.&lt;br /&gt;
*As a reviewer, I want to see a history of how the machine versions have evolved over time, and I want to see performance calculations to verify them.&lt;br /&gt;
*As an information architect, I need to know how the documentation modules fit together.&lt;br /&gt;
*As a database designer, I need access to a taxonomy of all the content, and I need a sample of all the modules to test my display methods.&lt;br /&gt;
==Publisher==&lt;br /&gt;
*As a publisher, I want to publish a machine manual readily.&lt;br /&gt;
&lt;br /&gt;
==Video Editor==&lt;br /&gt;
&lt;br /&gt;
*As a video editor making instructionals, I need access to videos of various builds the results, and issues encountered during builds.&lt;br /&gt;
*As an eye-candy video editor, I need footage of sparks flying during production, as well as other flashy footage.&lt;br /&gt;
*As an animator, I need to understand the operating principles so I can make an explanatory rendering. I also need access to the 3D objects so I can use them in my animations.&lt;br /&gt;
&lt;br /&gt;
=Basic Wiki Version=&lt;br /&gt;
Non-Structured OSHW Documentation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/d/1wp2VnMd-JYoVDWeiMz-eXDrT-1p7kZUW0eq8BupIYZw/pub?w=543&amp;amp;amp;h=362&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1wp2VnMd-JYoVDWeiMz-eXDrT-1p7kZUW0eq8BupIYZw/edit edit]&lt;br /&gt;
&lt;br /&gt;
=Sample Implementation=&lt;br /&gt;
*See http://openmaterials.org/CEBPress&lt;br /&gt;
=Available Documentation Tools=&lt;br /&gt;
*[https://cubehero.com/physibles/iamwil/robokitty/history/0cecb53528a7be6eb6236e01f36b7e37dbb260c8/robokitty.stl Visual 3D diffs]&lt;br /&gt;
&lt;br /&gt;
==Working Document==&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe src=&amp;quot;https://docs.google.com/document/pub?id=16Ke8VFmWfh7Q-8BncWqINgyjWSqxuLopT54gdqeQrlU&amp;amp;amp;embedded=true&amp;quot; width=100% height=&amp;quot;300&amp;quot; &amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/16Ke8VFmWfh7Q-8BncWqINgyjWSqxuLopT54gdqeQrlU/edit edit]&lt;br /&gt;
&lt;br /&gt;
=Open Hardware Documentation Outline=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1HJa6yWnQvXVHd72nemBcIkB67-w5RZBMJQlIeyc87M4&amp;amp;amp;w=1200&amp;amp;amp;h=700&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1HJa6yWnQvXVHd72nemBcIkB67-w5RZBMJQlIeyc87M4/edit edit]&lt;br /&gt;
&lt;br /&gt;
=Documentation Taxonomy=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=100% height=&amp;quot;300&amp;quot; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0AkNG-lv1ELQvdHViNEdtVHp4dHRWOU8tcDNSbXROY3c&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0AkNG-lv1ELQvdHViNEdtVHp4dHRWOU8tcDNSbXROY3c#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
==Samples==&lt;br /&gt;
*[[CEB Press Test]] in Mediawiki&lt;br /&gt;
*[http://www.openmaterials.org/CEBpress/ CEB Press example in Wordpress]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe src=&amp;quot;http://www.openmaterials.org/CEBpress/&amp;quot; width=100% height=&amp;quot;300&amp;quot;&amp;gt; &amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Information Architecture=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/d/1MUl31a7eFGNMFVP90Gq_mXiJ4d0U3Jgdw776z5qG1kE/pub?w=1124&amp;amp;amp;h=3081&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1MUl31a7eFGNMFVP90Gq_mXiJ4d0U3Jgdw776z5qG1kE/edit edit&lt;br /&gt;
&lt;br /&gt;
=Documentation Platform - Entity Relationship Diagram=&lt;br /&gt;
Architecture for programming the user platform:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/d/1ZNT1_rhLgRAqDk_8qyQ3eRGgANCs7-HV5oA37o10M44/pub?w=1796&amp;amp;amp;h=870&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1ZNT1_rhLgRAqDk_8qyQ3eRGgANCs7-HV5oA37o10M44/edit edit]&lt;br /&gt;
&lt;br /&gt;
=Documentation Workshop Organization=&lt;br /&gt;
*[[OSHW Documentation Hackathon]]&lt;br /&gt;
*Workshop planning - [https://docs.google.com/document/d/1z0sFINK3R9m-0nyKqczuTvB_GpafzLzxdb0SVexPe8s/edit]&lt;br /&gt;
*Chat with [[Joe Justice]] - [https://docs.google.com/document/d/1f176sOOQuCcZu9wx9KnSJexLyXg27_7708oqnougNL8/edit]&lt;br /&gt;
*OSHWA consultation - [https://docs.google.com/document/d/1EKHo-Y-etpVO3x13mJo0JXuNmD_CErqhjx6JYiM8tEU/edit]&lt;br /&gt;
&lt;br /&gt;
=OSHW Documentation Handbook=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe src=&amp;quot;https://docs.google.com/document/d/1VeUbM1rLz_E9cQwIDfWvVJvCKwo3pktdVdREAZpy6Dc/pub?embedded=true&amp;quot; width=100% height=&amp;quot;300&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt; &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1VeUbM1rLz_E9cQwIDfWvVJvCKwo3pktdVdREAZpy6Dc/edit#heading=h.91ba5gj5ki8u edit]&lt;br /&gt;
&lt;br /&gt;
=Documentation Platform Principles or Specification=&lt;br /&gt;
*Language agnostic platform&lt;br /&gt;
*Readily publishable in part or in full in hard copy or digital copy&lt;br /&gt;
*Promotes the open source economy and distributive enterprise&lt;br /&gt;
*Clear contributor agreements and user license&lt;br /&gt;
*Work Product is a Protocol, not Platform. Distinction is Protocol can be implemented on any platform.&lt;br /&gt;
*Platform, hardware, and software agnostic. Uses open software formats; accepts proprietary formats so they can be translated.&lt;br /&gt;
*Contains a commit and quality assurance mechanism&lt;br /&gt;
*Upvotability and quality upgrade mechanism, versioning&lt;br /&gt;
*Modular design of documentation, clear modularity standards for how documentation components fit together, and easy interfaceability between modules&lt;br /&gt;
*Resource Description Format markup for semantic web compatibility. Tagging and markup for mashup and remix purposes. API for interoperability with other platforms.&lt;br /&gt;
*Breadcrumbs - location guide or secondary navigation scheme&lt;br /&gt;
*Well-defined tagging standards.&lt;br /&gt;
*Entry-level access for contributors (not a geek protocol)&lt;br /&gt;
*Entry-level access for developers &lt;br /&gt;
*Incentivizes participation with other open source and closed source platforms.&lt;br /&gt;
*Glossary is incuded, platform is self-explanatory.&lt;br /&gt;
*Meritocratic governance&lt;br /&gt;
*Provides an assessment mechanism for &#039;state of open-sourceness&#039; of projects&lt;br /&gt;
*Facilitates quantitative assessment or statistics about open hardware projects in general&lt;br /&gt;
*Encourages DIY projects to join open source economic framework, and invites uninitiated DIY projects to add value to their work and to the world by making their work more visible&lt;br /&gt;
*Fosters Technical Literacy&lt;br /&gt;
*Ready verifiability of results&lt;br /&gt;
*Backup strategy well-defined&lt;br /&gt;
*Contributor rights clearly defined and designed as a Badge or Distinction. Crowd sourced contributions from users and developers; careful log of contributors&lt;br /&gt;
&lt;br /&gt;
==Work Product==&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1khu6oUh-gWeN3UUc3k_lMM3lxmNt3vPJPuir6bxg9fE&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/drawings/d/1khu6oUh-gWeN3UUc3k_lMM3lxmNt3vPJPuir6bxg9fE/edit edit]&lt;br /&gt;
&lt;br /&gt;
==Value Proposition==&lt;br /&gt;
The value that we propose to add to defining documentation standards is:&lt;br /&gt;
*Basing platform on existing tools - building on open source industry standards and using non-open source tools only if necessary until they can be substituted.&lt;br /&gt;
*Developing interfaces between existing tools, not developing new tools (remixing and mashup)&lt;br /&gt;
*Documenting that interface with Brick Press as our test case&lt;br /&gt;
*Defining a protocol for documentation based on existing tools&lt;br /&gt;
*Getting feedback from the greater community, and defining a role for a Documentation Director for Scalable Open Source Product Distributive Enterprise Development Projects.&lt;br /&gt;
&lt;br /&gt;
=Documentation Design Rationale=&lt;br /&gt;
The scope of effective documentation standards for OSE includes Machine, Organizational, and Wiki level areas of documentation.&lt;br /&gt;
==Organizatinal Level==&lt;br /&gt;
*The organizational level involves documentation related to running a GVCS-based development, production, or other applied project. &lt;br /&gt;
*Enterprise development documentation.&lt;br /&gt;
&lt;br /&gt;
==Machine Level==&lt;br /&gt;
*Understanding the standards makes it possible to navigate both graphically and via the address bar on the OSE wiki - to access any piece of documentation for any machine.&lt;br /&gt;
*Machine naming is standard. Currently, the names used on the main site at opensourceecology.org are used.&lt;br /&gt;
*Each machine has a Core and Supporting documentation set. The Core set includes those pieces of documentation that are indispensible for the safe and effective building and usage of GVCS tools by inexperienced builders/users. Supporting documentation is that which allows for the modification, remixing of modules, and other hacks on the machines. It also includes that information which makes replication easier, but which is not critical to such replication - by a novice builder.&lt;br /&gt;
*Each Machine has a finite, well-defined set of Core Documentation and Supporting Documentation.&lt;br /&gt;
*Supporting Documentation consists of Wiki-level (such as Links section or Index) and Machine-level items (such as CAE analysis - noncritical but desirable for replication)&lt;br /&gt;
*Standards are consistent with [[Open Source Hardware Association Open Source Hardware Definition]].&lt;br /&gt;
&lt;br /&gt;
==Wiki Level==&lt;br /&gt;
*Each machine has a particular set of wiki-level Supporting Documenation items - such as Links (example below). Standards are defined for each of these Supporting Documentation item&lt;br /&gt;
&lt;br /&gt;
=Specific Wiki Page Structure=&lt;br /&gt;
Current work on [[Frame_DXF_Files]] indicates that a rigorous structure of documentation needs to occur for completeness. This structure should be represented as an infographic with design rationale (for documentation steps) captured.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
==Past Work of OSE==&lt;br /&gt;
*See video in [[Shuttleworth Fellowship 2013 Submission]] - overview of prototyping and documentation goals. Read entire application.&lt;br /&gt;
*[[OSE Specifications]] - value proposition of Open Source Ecology&lt;br /&gt;
*[[Open Source Hardware Modularity Pattern Language]] - technology primitives, GVCS-centric&lt;br /&gt;
*[[Open Source Technology Pattern Language]] - technology primitives, GVCS-centric &lt;br /&gt;
*Kickstarter shows a good overview of what proper documentation includes - see minute 1:22 at [http://www.kickstarter.com/projects/622508883/global-village-construction-set Kickstarter campaign of 2011].&lt;br /&gt;
*[[Communications Strategy]]&lt;br /&gt;
*[[GVCS Interface Design Standards]]&lt;br /&gt;
*See also [[Documentation_Standards_Development]]&lt;br /&gt;
*See also [[Process Documentation Standards]] and [[Process Documentation Standards Abstract]]&lt;br /&gt;
*[[Documentation Standards]] - beginning on documentation&lt;br /&gt;
*[[Flashy XM]] is an experimental platform in progress, but it does not make the critical distinction between Documentation and Development.&lt;br /&gt;
*GVCS tool template from 2011 - [[Template:ToolTemplate]] - an actual template in Media Wiki&lt;br /&gt;
*More detailed template for each page - see [[Template:CEB Press Manufacturing Instructions Navbox]] and [http://opensourceecology.org/wiki/Ceb_drawer this example of Brick Press Drawer].&lt;br /&gt;
*See [[Documentation Standards Old]]&lt;br /&gt;
*[[GVCS Interface Design Standards]]&lt;br /&gt;
*[[OSE Machine Development Process]]&lt;br /&gt;
*[[OSE Machine Documentation Process]]&lt;br /&gt;
*[[Fabrication Diagram]]&lt;br /&gt;
*[[Development Work Template]]&lt;br /&gt;
&lt;br /&gt;
==Related Work==&lt;br /&gt;
&lt;br /&gt;
*[[Open Hardware Repository]]&lt;br /&gt;
*http://www.ohanda.org/&lt;br /&gt;
*http://oshwa.org&lt;br /&gt;
*Make Projects - http://makeprojects.com/&lt;br /&gt;
*OKFN [http://design.okfn.org/about/ Open Design Definition]&lt;br /&gt;
*[[IKEA Furniture Documentation Standards]]&lt;br /&gt;
*Check out Army Manuals standards for documentation. What other best practice manuals are there? Check the [[Noun Project]].&lt;br /&gt;
*Open H20 standards development - [http://www.flickr.com/photos/worldworldworld/8244521061/in/photostream/lightbox/]&lt;br /&gt;
*[[Documentation Standards Development]]&lt;br /&gt;
*OS Hardware for Humanitarian Aid - [https://docs.google.com/document/d/1nBWYX7G3UFdcoiRZotQVvH0jRc7ljNuwxSpUcuKWz6c/edit]&lt;br /&gt;
*[http://www.ladyada.net/library/openhardware/whatisit.html LadyAda&#039;s Layers of Licensing]&lt;br /&gt;
*[http://www.oshwa.org/faq/ OSHWA&#039;s FAQ - What files do I need to share?]&lt;br /&gt;
*[http://www.oshwa.org/sharing-best-practices/ OSHWA&#039;s Sharing Best Practices]&lt;br /&gt;
*Open Source Hardware group on Google&lt;br /&gt;
*[[Vinay Gupta]]&lt;br /&gt;
*[[Extreme Modularity Resource Map]]&lt;br /&gt;
*[[WikiHouse]]&lt;br /&gt;
*[[SKDB]] - great theory, limited execution&lt;br /&gt;
&lt;br /&gt;
==Meta==&lt;br /&gt;
*Resource Description Framework (RDF) - [http://www.w3.org/TR/2004/REC-rdf-primer-20040210/]. From Wikipedia article - Creative Commons - Uses RDF to embed license information in web pages and mp3 files.&lt;br /&gt;
*Semantic Media Wiki extension - SMW adds semantic annotations that allow a wiki to function as a collaborative database - [http://semantic-mediawiki.org/wiki/Help:Introduction_to_Semantic_MediaWiki]&lt;br /&gt;
*[http://challenge.semanticweb.org/ Semantic Web Challenge]&lt;br /&gt;
*[http://semantic-mediawiki.org/wiki/Project_Halo Project Halo] - &#039;&#039;The appendix to Paul Allen&#039;s new book, Idea Man, describes several challenges in artificial intelligence for which Project Halo is actively seeking solutions. We are actively seeking people and organizations with serious and well-grounded technical ideas that can result in significant progress against these challenges. Please use the Idea Submission Form to contact us with a sketch of your idea, along with any supporting evidence that it will be successful. &#039;&#039;&#039;Please do not send confidential or proprietary information to Project Halo using this site or through any other means.&#039;&#039;&#039;&#039;&#039; - see http://www.projecthalo.com/&lt;br /&gt;
&lt;br /&gt;
==Literature==&lt;br /&gt;
*Open Source Product Development - Springer Gabler - 2011 - [http://www.springer.com/springer+gabler/management/book/978-3-8349-3153-5]. [http://download.springer.com/static/pdf/378/bfm%253A978-3-8349-6949-1%252F1.pdf?auth66=1361290845_6147f8cd8157909dc0dc00ece9e00b0f&amp;amp;ext=.pdf Table of Contents]&lt;br /&gt;
&lt;br /&gt;
==Open Source Hardware Project Listings==&lt;br /&gt;
*[[Open Source Hardware Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Standards]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Tracks&amp;diff=113533</id>
		<title>Tracks</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Tracks&amp;diff=113533"/>
		<updated>2014-01-14T10:25:52Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: At least some of this way out of date or duplicate. Replaced with redirect to Get involved.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Get involved]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Get_involved&amp;diff=113532</id>
		<title>Get involved</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Get_involved&amp;diff=113532"/>
		<updated>2014-01-14T10:21:44Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Take a look at http://opensourceecology.org/join.php&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Get_involved&amp;diff=113531</id>
		<title>Get involved</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Get_involved&amp;diff=113531"/>
		<updated>2014-01-14T10:20:05Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: Moved to Creating Writing a Get Involved Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [http://opensourceecology.org/join.php]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Writing_a_Get_Involved_Page&amp;diff=113530</id>
		<title>Writing a Get Involved Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Writing_a_Get_Involved_Page&amp;diff=113530"/>
		<updated>2014-01-14T10:17:06Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: Moved from Get involved&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Karien Bezuidenhout: http://www.greenpeace.org/international/en/getinvolved/&lt;br /&gt;
&lt;br /&gt;
[11:59:02] Karien Bezuidenhout: http://www.charitywater.org/getinvolved/&lt;br /&gt;
&lt;br /&gt;
[11:59:16] Karien Bezuidenhout: http://www.ready.gov/get-involved&lt;br /&gt;
&lt;br /&gt;
[11:59:35] Karien Bezuidenhout: http://www.cancer.org/involved/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[12:01:26] Karien Bezuidenhout: above = get involved&lt;br /&gt;
&lt;br /&gt;
[12:01:32] Karien Bezuidenhout: below = call to action&lt;br /&gt;
&lt;br /&gt;
[12:01:40] Karien Bezuidenhout: http://blog.crazyegg.com/2013/07/24/call-to-action-examples/&lt;br /&gt;
&lt;br /&gt;
[12:01:52] Karien Bezuidenhout: http://smallbusiness.yahoo.com/advisor/7-effective-call-action-examples-why-133741481.html&lt;br /&gt;
&lt;br /&gt;
[12:02:02] Karien Bezuidenhout: http://www.smartbugmedia.com/blog/bid/164393/Get-Clicked-14-Examples-of-Amazing-Calls-to-Action&lt;br /&gt;
&lt;br /&gt;
[12:02:16] Karien Bezuidenhout: http://www.seocopywriting.com/content-marketing/tips-and-strategy/7-call-action-techniques-work/&lt;br /&gt;
&lt;br /&gt;
[12:04:10] Call from Karien Bezuidenhout, duration 43:37.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Manufacturing_Instructions&amp;diff=113527</id>
		<title>Ironworker 3/Manufacturing Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Manufacturing_Instructions&amp;diff=113527"/>
		<updated>2014-01-14T05:43:38Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Guides on Dozuki=&lt;br /&gt;
&lt;br /&gt;
The dozuki guides are under active development in Oct 2013. Anything elsewhere should be put into dozuki or archived.&lt;br /&gt;
&lt;br /&gt;
The assembly is broken into modules to facilitate parallel construction. Every module until the last one can be done in parallel if there&#039;s enough manpower. Then the final guide shows how to put all the pieces together. Pretty cool, huh? :-)&lt;br /&gt;
&lt;br /&gt;
==Bottom Frame==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+bottom+frame+of+the+Ironworker+%28in+progress%29/85&lt;br /&gt;
&lt;br /&gt;
==Top Frame==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+Ironworker+-+Top+Frame+module+%28in+progress%29/86&lt;br /&gt;
&lt;br /&gt;
==Hydraulics==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Shear==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+the+shears/88&lt;br /&gt;
&lt;br /&gt;
==Shear Table==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+assemble+the+shear+table+of+the+Ironworker+%28in+progress%29/87&lt;br /&gt;
&lt;br /&gt;
==Assembling the Pieces==&lt;br /&gt;
http://opensourceecology.dozuki.com/Guide/How+to+Ironworker+Machine+-+Overall+Machine+%28in+progress%29/84&lt;br /&gt;
&lt;br /&gt;
=Archive=&lt;br /&gt;
&lt;br /&gt;
Various ironworker videos on youtube, some from older designs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot; src=&amp;quot;//www.youtube.com/embed/mIYBpLzQWns?list=PL6Jpysxw3Ty9MoPMozOaTrMGGbiNo0HZO&amp;quot; frameborder=&amp;quot;0&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110603</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110603"/>
		<updated>2013-11-01T15:34:10Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.9304,142.5,200.0*8/3,760*1.1}  // nov 1 2013- x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan can&#039;t find host software (gcode sending) that works with marlin. He tried about 8 different programs. For now the process is to use Printrun/Pronterface and copy/paste 3 or so gcodes at a time into there, wait for them to execute, and run the next batch. Pasting them all at once fails (machine does the wrong thing) probably because the instruction buffer in marlin isn&#039;t big enough.&lt;br /&gt;
&lt;br /&gt;
See [[GcodeCommunications]] for a list of programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a test gcode file which Dan Benamy hand wrote. It works on marlin and draws a 2 hole by 1 hole plate- https://github.com/OSE/CNC-Torch-Table-OSE/issues/20&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
This whole section hasn&#039;t been updated for the Oct 2013 work using RAMPS. See https://github.com/OSE/CNC-Torch-Table-OSE/issues/11 for some of this with RAMPS setup.&lt;br /&gt;
&lt;br /&gt;
Also note that docs from before Oct 2013 refer to the long axis as X but with RAMPS and marlin we had to make the long axis Y.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110602</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110602"/>
		<updated>2013-11-01T15:26:59Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.9304,142.5,200.0*8/3,760*1.1}  // nov 1 2013- x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan can&#039;t find host software (gcode sending) that works with marlin. He tried about 8 different programs. For now the process is to use Printrun/Pronterface and copy/paste 3 or so gcodes at a time into there, wait for them to execute, and run the next batch. Pasting them all at once fails (machine does the wrong thing) probably because the instruction buffer in marlin isn&#039;t big enough.&lt;br /&gt;
&lt;br /&gt;
See [[GcodeCommunications]] for a list of programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a test gcode file which Dan Benamy hand wrote. It works on marlin and draws a 2 hole by 1 hole plate- https://github.com/OSE/CNC-Torch-Table-OSE/issues/20#issuecomment-27547764&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
This whole section hasn&#039;t been updated for the Oct 2013 work using RAMPS. See https://github.com/OSE/CNC-Torch-Table-OSE/issues/11 for some of this with RAMPS setup.&lt;br /&gt;
&lt;br /&gt;
Also note that docs from before Oct 2013 refer to the long axis as X but with RAMPS and marlin we had to make the long axis Y.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110591</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110591"/>
		<updated>2013-11-01T07:38:13Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Repetier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
To get going, change baud rate to 250000 and click connect.&lt;br /&gt;
&lt;br /&gt;
== ReplicatorG ==&lt;br /&gt;
http://replicat.org/&lt;br /&gt;
&lt;br /&gt;
Seems not to have support for marlin.&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, versions for windows, linux, and mac. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, build of master on osx failed.&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110590</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110590"/>
		<updated>2013-11-01T05:51:47Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work) and so FeF never got a table we could use for fabrication.&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, better sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, the strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. If something doesn&#039;t work out. it&#039;s easy to revert to the previously working state.&lt;br /&gt;
&lt;br /&gt;
Dan is focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. Dan&#039;s trading off robustness, reproducibility, and user friendly docs for getting it working. Dan&#039;s doing this for two reasons: being able to cut [[Warehouse]] parts will save lots of time and money on all other development, and it will be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, Dan (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Concrete tasks that need doing are in github. Go to https://github.com/OSE/CNC-Torch-Table-OSE/issues?state=open and select a milestone on the left, with the little gear icon. Milestone 1 is to be able to cut [[Warehouse]] plates. Milestone 2 is to be able to cut tubes.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110589</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110589"/>
		<updated>2013-11-01T05:50:10Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work) and so FeF never got a table we could use for fabrication.&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, better sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, the strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. Dan is focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. Dan&#039;s trading off robustness, reproducibility, and user friendly docs for getting it working. Dan&#039;s doing this for two reasons: being able to cut [[Warehouse]] parts will save lots of time and money on all other development, and it will be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, Dan (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff.&lt;br /&gt;
&lt;br /&gt;
Next steps in github. Go to https://github.com/OSE/CNC-Torch-Table-OSE/issues?state=open and select a milestone on the left, with the little gear icon.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110588</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110588"/>
		<updated>2013-11-01T05:47:49Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff.&lt;br /&gt;
&lt;br /&gt;
Next steps in github. Go to https://github.com/OSE/CNC-Torch-Table-OSE/issues?state=open and select a milestone on the left, with the little gear icon.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110587</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110587"/>
		<updated>2013-11-01T05:47:00Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* RepSnapper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
To get going, change baud rate to 250000 and click connect.&lt;br /&gt;
&lt;br /&gt;
== ReplicatorG ==&lt;br /&gt;
http://replicat.org/&lt;br /&gt;
&lt;br /&gt;
Seems not to have support for marlin.&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, build of master on osx failed.&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110586</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110586"/>
		<updated>2013-11-01T05:46:42Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* ReplicatorG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
To get going, change baud rate to 250000 and click connect.&lt;br /&gt;
&lt;br /&gt;
== ReplicatorG ==&lt;br /&gt;
http://replicat.org/&lt;br /&gt;
&lt;br /&gt;
Seems not to have support for marlin.&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110585</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110585"/>
		<updated>2013-11-01T05:44:46Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Printrun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
To get going, change baud rate to 250000 and click connect.&lt;br /&gt;
&lt;br /&gt;
== ReplicatorG ==&lt;br /&gt;
http://replicat.org/&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110584</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110584"/>
		<updated>2013-11-01T05:44:17Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Sending G Code to Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan can&#039;t find host software (gcode sending) that works with marlin. He tried about 8 different programs. For now the process is to use Printrun/Pronterface and copy/paste 3 or so gcodes at a time into there, wait for them to execute, and run the next batch. Pasting them all at once fails (machine does the wrong thing) probably because the instruction buffer in marlin isn&#039;t big enough.&lt;br /&gt;
&lt;br /&gt;
See [[GcodeCommunications]] for a list of programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a test gcode file which Dan Benamy hand wrote. It works on marlin and draws a 2 hole by 1 hole plate- https://github.com/OSE/CNC-Torch-Table-OSE/issues/20#issuecomment-27547764&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
This whole section hasn&#039;t been updated for the Oct 2013 work using RAMPS. See https://github.com/OSE/CNC-Torch-Table-OSE/issues/11 for some of this with RAMPS setup.&lt;br /&gt;
&lt;br /&gt;
Also note that docs from before Oct 2013 refer to the long axis as X but with RAMPS and marlin we had to make the long axis Y.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110583</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110583"/>
		<updated>2013-11-01T05:40:09Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
== ReplicatorG ==&lt;br /&gt;
http://replicat.org/&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110582</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110582"/>
		<updated>2013-11-01T05:23:19Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== RepSnapper ==&lt;br /&gt;
https://github.com/timschmidt/repsnapper&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110581</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110581"/>
		<updated>2013-11-01T05:18:31Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Repetier ==&lt;br /&gt;
&lt;br /&gt;
Beautiful, open source, for macs. Very easy to configure.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan couldn&#039;t get it to run gcode files although it&#039;s got some nice manual control features.&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110580</id>
		<title>GcodeCommunications</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=GcodeCommunications&amp;diff=110580"/>
		<updated>2013-11-01T05:10:53Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Printrun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
When using a [[CNC]] machine, there needs to be a program which sends the gcode created on a computer, to the motor controller which executes the gcode by moving around the motors.&lt;br /&gt;
&lt;br /&gt;
== Gctrl ==&lt;br /&gt;
[[Gctrl]](cross-platform)&lt;br /&gt;
&lt;br /&gt;
== Gcodesender ==&lt;br /&gt;
[http://www.shapeoko.com/wiki/index.php/Assembly_step_15 gcodesender](Windows). &lt;br /&gt;
&lt;br /&gt;
==Printrun==&lt;br /&gt;
[http://reprap.org/wiki/Printrun Printrun] is a gcode sender that&#039;s supposed to have good support for RAMPS.&lt;br /&gt;
&lt;br /&gt;
In Oct 2013, Dan used it for manual control and entering gcodes, but couldn&#039;t get it to send a file.&lt;br /&gt;
&lt;br /&gt;
== Universal G-code Sender ==&lt;br /&gt;
[https://github.com/winder/Universal-G-Code-Sender Universal G-Code Sender].&lt;br /&gt;
&lt;br /&gt;
This is recommended for grbl. As of Oct 2013, it&#039;s supposed to have imperfect support for Marlin.&lt;br /&gt;
&lt;br /&gt;
=== Universal G-code Sender on Raspberry Pi ===&lt;br /&gt;
[[File:GCodeOnRPi.png|thumb|300px|Raspberry Pi with grbl and steppernug]]&lt;br /&gt;
&lt;br /&gt;
[[RaspberryPi]] is a very small, low-cost, single-board open-source computer. Although Universal G-code Sender is distributed as a self-contained &amp;quot;One-jar&amp;quot; package that handles its own dependencies, it needs a little help on the arm-linux platform. I believe it misidentifies arm-linux as intel-linux and tries to use an x86 communications driver. Therefore we need to provide our own version of the communications library and manually unpack Universal G-code Sender.&lt;br /&gt;
&lt;br /&gt;
These instructions were developed on a Raspbian Wheezy installation downloaded from [http://www.raspberrypi.org/downloads]. Here is the OS identification:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ uname -a&lt;br /&gt;
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install java and comms driver prerequisites&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install openjdk-7-jre&lt;br /&gt;
sudo apt-get install librxtx-java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039; I installed openjdk-7-jdk, but I don&#039;t think it&#039;s necessary; the jre should be adequate.&lt;br /&gt;
&lt;br /&gt;
download UniversalGcodeSender-v1.0.5-all32.zip from https://github.com/winder/Universal-G-Code-Sender/tree/master/releases &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip UniversalGcodeSender-v1.0.5-all32.zip&lt;br /&gt;
jar -xf UniversalGcodeSender-all32.jar&lt;br /&gt;
cd lib&lt;br /&gt;
jar -xf swing-layout-1.0.4.jar&lt;br /&gt;
cd ../main&lt;br /&gt;
export CLASSPATH=$CLASSPATH:.:/usr/share/java/RXTXcomm.jar:../lib&lt;br /&gt;
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jni&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To make the Arduino Uno comm port (ttyACM0) visible, you need to start the application with a command-line parameter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
java -Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyUSB0:/dev/ttyAMA0 com.willwinder.universalgcodesender.MainWindow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be patient, it takes about 20 seconds to start the application.&lt;br /&gt;
&lt;br /&gt;
[[File:UniversalGcodeSender.png|500px|border]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For minimum-cost implementation of CNC, it would be nice if the g-code sender interface could run from the composite TV-out of the Raspberry Pi (assuming an old TV may be cheaper than an HDMI/DVI monitor). Unfortunately, however, the UI doesn&#039;t fit:&lt;br /&gt;
&lt;br /&gt;
[[File:GCodeSender tvres.png]]&lt;br /&gt;
&lt;br /&gt;
== grbl-controller ==&lt;br /&gt;
&lt;br /&gt;
http://zapmaker.org/projects/grbl-controller-3-0/&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
Other options for gcode streaming [https://github.com/grbl/grbl/wiki/Using-Grbl here].&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110579</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110579"/>
		<updated>2013-11-01T05:02:57Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Limits and Homing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a test gcode file which Dan Benamy hand wrote. It works on marlin and draws a 2 hole by 1 hole plate- https://github.com/OSE/CNC-Torch-Table-OSE/issues/20#issuecomment-27547764&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
This whole section hasn&#039;t been updated for the Oct 2013 work using RAMPS. See https://github.com/OSE/CNC-Torch-Table-OSE/issues/11 for some of this with RAMPS setup.&lt;br /&gt;
&lt;br /&gt;
Also note that docs from before Oct 2013 refer to the long axis as X but with RAMPS and marlin we had to make the long axis Y.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110578</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110578"/>
		<updated>2013-11-01T04:59:28Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a test gcode file which Dan Benamy hand wrote. It works on marlin and draws a 2 hole by 1 hole plate- https://github.com/OSE/CNC-Torch-Table-OSE/issues/20#issuecomment-27547764&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110574</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110574"/>
		<updated>2013-11-01T00:53:31Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box. Marlin also has pretty much out of the box support for 2 drivers feeding 2 motors on Y which we use for out long axis because it has 2 motors.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our endstops by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate boolean.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. I set x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, we&#039;ll make these much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table with the tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110573</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110573"/>
		<updated>2013-11-01T00:41:27Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our buttons by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate bool in marlin.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, there will be made much bigger.&lt;br /&gt;
* I made home = 0,0,0 = the corner of the torch table near the ping pong table &amp;amp; tool head fully down. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation. And when looking at it from the side, positive z is up.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110565</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110565"/>
		<updated>2013-10-31T22:49:45Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
** I set the &amp;quot;*ENDSTOP_INVERTING&amp;quot; consts as appropriate for our buttons by running gcode M119, seeing if an endstop was triggered, pushing the button, and running M119 again. If the logic was backwards, I flipped the appropriate bool in marlin.&lt;br /&gt;
** I set the travel limits. There are 6 starting with &amp;quot;X_MAX_POS&amp;quot;. I set the mins to 0. x and y max to 300 and z max to 150 for testing. Once we&#039;re calibrated and the table is fixed, there will be made much bigger.&lt;br /&gt;
* To make things a little easier to think about I made home = 0,0,0 = the corner of the torch table near the ping pong table &amp;amp; tool head fully up. Then I can stand at one end of the table and look down at it and it the standard x is right, y is up orientation.&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110543</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110543"/>
		<updated>2013-10-31T17:42:17Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff.&lt;br /&gt;
&lt;br /&gt;
Next steps in github. Go to https://github.com/OSE/CNC-Torch-Table-OSE/issues?state=open and select a milestone on the left, with the little gear icon.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110542</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110542"/>
		<updated>2013-10-31T17:37:45Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff.&lt;br /&gt;
&lt;br /&gt;
Tasks in github (link below). Sort by milestone.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Bill_of_Materials&amp;diff=110529</id>
		<title>Ironworker 3/Bill of Materials</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=Ironworker_3/Bill_of_Materials&amp;diff=110529"/>
		<updated>2013-10-31T15:01:59Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
Dan started developing a [https://github.com/OSE/documentation/blob/master/bom_generator.py program] which generates the BOM based on the dozuki assembly guides. The program is still rough and the guides need some more work but here&#039;s what the output looks like so far:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--START OF GENERATED BOM. Copy from here until the end into the wiki.--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
This BOM was generated from the dozuki guides on 2013-10-28 03:28:48.874711&lt;br /&gt;
&lt;br /&gt;
WARNING: If you hand-edit this list, your changes will be lost when the BOM is regenerated. If anything is wrong, you should update the parts entries in dozuki, fix bom_generator.py, or make a note in a section other than the generated list.&lt;br /&gt;
&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 2&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 14&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 6&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 6, Part: 1&amp;quot; x 7&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
Count: 14, Part: 1&amp;quot; x 8&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 2, Part: 10&amp;quot; x 1&amp;quot; hardened bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
Count: 24, Part: 7&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 20&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 17&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 6, Part: 8&amp;quot; x 1&amp;quot; bolts&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
Count: 4, Part: pivot plates without bushings&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 4.5, Part: ounces of greases&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 12&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 25&lt;br /&gt;
Count: 1, Part: oz greases&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 9&lt;br /&gt;
Count: 107, Part: 1&amp;quot; nuts&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 10&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 8&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 18&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 22&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 24&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 4, Part: 1 hole x 5 hole plates&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 16&lt;br /&gt;
Count: 1, Part: 1&amp;quot; x 8&amp;quot; x 16&amp;quot; plates&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 12&lt;br /&gt;
Count: 4, Part: 2 hole x 2 hole plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 5&lt;br /&gt;
Count: 6, Part: 2 hole x 3 hole plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 7&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 16, Part: 2 hole x 4 hole plates&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 8, Part: pivot plates&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x TODO&amp;quot; threaded robs&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 2, Part: 1&amp;quot; x 15&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 5, Part: 1&amp;quot; x 16&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
Count: 2, Part: 11&amp;quot;x1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 29&lt;br /&gt;
Count: 4, Part: 13&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 4, Part: 14&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 3&lt;br /&gt;
Count: 3, Part: 15&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
Count: 1, Part: 16.5&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
Count: 2, Part: 26&amp;quot; x 1&amp;quot; threaded rods&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 1, Part: 3&amp;quot; x 8&amp;quot; solid shafts&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 8&lt;br /&gt;
Count: 2, Part: 1&amp;quot; springs&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
Count: 2, Part: 1 hole 0.5&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 2, Part: 1 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 10&lt;br /&gt;
Count: 1, Part: 1/2&amp;quot; 12 hole tubes&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 27&lt;br /&gt;
Count: 2, Part: 12 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
Count: 1, Part: 14 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 1, Part: 17 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 5, Part: 19 hole 1/2&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 1&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 1&lt;br /&gt;
Count: 4, Part: 2 hole long 1/4&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
Count: 1, Part: 4 hole, 0.25&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
Count: 2, Part: 6 hole, 0.25&amp;quot; tubes&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 5&lt;br /&gt;
Count: 59, Part: 1&amp;quot; washers&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 3&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 2&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble the shear table of the Ironworker (in progress), step 6&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 24&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 5&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 4&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 20&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 28&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 22&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 19&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 18&lt;br /&gt;
    Used by: How to assemble the bottom frame of the Ironworker (in progress), step 9&lt;br /&gt;
    Used by: How to assemble the top frame of the Ironworker (in progress), step 10&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 14&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 17&lt;br /&gt;
    Used by: How to assemble all the pieces of the Ironworker (in progress), step 26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;!--END OF GENERATED BOM.--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110521</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110521"/>
		<updated>2013-10-31T05:18:44Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
* Draw a rectangle in librecad, run it through [[DXF to G-code Conversion Tutorial | dxf2gcode]] and use [http://reprap.org/wiki/Pronterface Printrun] to stream it to the arduino. Get the table to draw the rectangle.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff.&lt;br /&gt;
&lt;br /&gt;
Tasks in github (link below). Sort by milestone.&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110520</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110520"/>
		<updated>2013-10-31T04:24:38Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define DEFAULT_AXIS_STEPS_PER_UNIT   {128.0537,144.2128,200.0*8/3,760*1.1}  // x and y are the right ballpark for the ose torch table at fef, see https://github.com/OSE/CNC-Torch-Table-OSE/issues/4#issuecomment-27460371 for where these numbers came from&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (E1, http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110519</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110519"/>
		<updated>2013-10-31T02:47:01Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
* Draw a rectangle in librecad, run it through [[DXF to G-code Conversion Tutorial | dxf2gcode]] and use [http://reprap.org/wiki/Pronterface Printrun] to stream it to the arduino. Get the table to draw the rectangle.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff. Steps until we could use the table to actually make parts for fabricating other machines:&lt;br /&gt;
* Add a circle to the dxf that&#039;s not touching the rectangle. Re-run and make sure the head lifts up between the shapes.&lt;br /&gt;
* Add [[DXF_to_G-code_Conversion_Tutorial#Piercing | gcode postprocessing]] if still needed for piercing and torch width. The &amp;quot;torch&amp;quot; should move back and forth while making an initial &amp;quot;pierce&amp;quot;. For the circle, I think it should make the pieces inside the circle. I&#039;m not sure if it should pierce the rectangle inside or on one edge. We want it to make the pierce in a part of the metal we won&#039;t use. I wonder how the piercing code knows what that is... There&#039;s a conversation [https://groups.google.com/forum/#!msg/dxf2gcode-dev/6ZnNcX3O5i4/d-3NeBfHpbUJ here] about integrating this functionality into dxf2gcode which would be great for ease of use and gives us a gui where maybe we could click where we want the pierce to be.&lt;br /&gt;
* Try it with the real torch!!! For future steps, I&#039;d switch back to the sharpie for testing and only use the torch once things look good.&lt;br /&gt;
&lt;br /&gt;
If we&#039;re lucky, this gets us to milestone 1 - can cut useful warehouse plates.&lt;br /&gt;
&lt;br /&gt;
Tasks for milestone 2 and beyond are in github (link below).&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110518</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110518"/>
		<updated>2013-10-31T02:46:49Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/635&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110517</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110517"/>
		<updated>2013-10-31T02:39:57Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        36&amp;quot;, &amp;quot;#define Y2_DIR_PIN         34&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      30&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/634&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110512</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110512"/>
		<updated>2013-10-31T01:10:13Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Edited pins.h&lt;br /&gt;
** In the section for motherboards 33, 34 35, added &amp;quot;#define Y2_STEP_PIN        26&amp;quot;, &amp;quot;#define Y2_DIR_PIN         28&amp;quot;, and &amp;quot;#define Y2_ENABLE_PIN      24&amp;quot;. This is a Marlin bug and I&#039;ve submitted a fix upstream- https://github.com/ErikZalm/Marlin/pull/634&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduino.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110511</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110511"/>
		<updated>2013-10-31T00:48:58Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde in the arduino ide and clicked to compile and load it to the arduio.&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110510</id>
		<title>CNC Torch Table 2/Control Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Control_Overview&amp;diff=110510"/>
		<updated>2013-10-31T00:48:13Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Marlin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Category=Torch Table}}&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;img src=&amp;quot;https://docs.google.com/drawings/pub?id=1SKGaBa6N21DPzXm9ILuqwPubc6nnRSBAARbkKaEU9hw&amp;amp;amp;w=480&amp;amp;amp;h=360&amp;quot;&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Motor controller and drivers=&lt;br /&gt;
&lt;br /&gt;
==RAMPS==&lt;br /&gt;
Dan&#039;s using [[RAMPS]] in Oct 2013 to get the table up and running ASAP. The plan is then to replace it with something beefier so we can go faster.&lt;br /&gt;
&lt;br /&gt;
==Alternatives==&lt;br /&gt;
See [[Stepper Motor Controller]] and [[Stepper Motor Driver]].&lt;br /&gt;
&lt;br /&gt;
=Software=&lt;br /&gt;
&lt;br /&gt;
==G-code Prep==&lt;br /&gt;
[[File:Toolchain.svg|thumb|toolchain pathways]]&lt;br /&gt;
[[ImplicitCAD]] (see also [[Parametric_Design_Pilot_Project]])&lt;br /&gt;
&lt;br /&gt;
[[Gcodetools]]&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial]]&lt;br /&gt;
&lt;br /&gt;
[[Computer_to_Microcontroller]]&lt;br /&gt;
&lt;br /&gt;
Nesting software would be useful. Example commercial product [http://www.mynesting.com/ here]. Anything open source?&lt;br /&gt;
&lt;br /&gt;
[[DXF_to_G-code_Conversion_Tutorial#Piercing|Gcode preheat]]&lt;br /&gt;
&lt;br /&gt;
Correction for torch cut kerf width (&amp;quot;cutter compensation&amp;quot; in CNC lingo) needed. G40/G41 but grbl does not interpret these.&lt;br /&gt;
&lt;br /&gt;
==G Code Runner==&lt;br /&gt;
aka firmware aka motor controller (distinct from motor driver)&lt;br /&gt;
&lt;br /&gt;
This is the firmware running on Arduino which converts a series of G-code commands to step/direction pulses for the drivers.&lt;br /&gt;
&lt;br /&gt;
===Marlin===&lt;br /&gt;
When Dan Benamy was getting things going again in Oct 2013, he was using Marlin because grbl doesn&#039;t work with RAMPS out of the box.&lt;br /&gt;
&lt;br /&gt;
Marlin will need some modifications if we want our 2 long axis motors to be on separate drivers rather than in parallel on one driver. See http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 for someone doing this.&lt;br /&gt;
&lt;br /&gt;
* I cloned marlin from github and checked out the Marlin_v1 tag.&lt;br /&gt;
* Opened Marlin/Marlin/Marlin.pde&lt;br /&gt;
* Edited Configuration.h&lt;br /&gt;
** #define MOTHERBOARD 35 - not sure if this is what we want&lt;br /&gt;
** #define DISABLE_E true // For all extruders&lt;br /&gt;
** #define TEMP_SENSOR_0 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
** #define TEMP_SENSOR_1 0 // Since we don&#039;t have temp sensors&lt;br /&gt;
* Edited Configuration_adv.h&lt;br /&gt;
** Uncommented &amp;quot;#define Y_DUAL_STEPPER_DRIVERS&amp;quot;. I used Y because Marlin doesn&#039;t support dual drivers on X. We&#039;ll use Y as the long axis, X as the short axis, and Z as height. The 2nd Y will be output on the 2nd extruder port (http://reprap.org/wiki/RAMPS_1.4#Wiring)&lt;br /&gt;
&lt;br /&gt;
=== grbl ===&lt;br /&gt;
When someone (Chuck?) was working on using the steppernug, they were running a modified grbl fork https://github.com/chuck-h/grbl/tree/edge. Changes from standard grbl [https://github.com/grbl/grbl]:&lt;br /&gt;
* Hardware I/O reassignment for steppernug interface&lt;br /&gt;
** different pin assignments on Arduino&lt;br /&gt;
** I2C extender&lt;br /&gt;
* substantially revised [[CNC_Torch_Table_Control_Overview#Limits_and_Homing|homing code]]&lt;br /&gt;
** dual X axis&lt;br /&gt;
** deep changes to stepper drive algorithm (implementing independent-axis trapezoidal move control during homing, as opposed to standard coordinated-axis move control for cutting) which should improve performance on long, limited-aceleration axes like torch table X and Y.&lt;br /&gt;
&lt;br /&gt;
==Sending G Code to Firmware==&lt;br /&gt;
&lt;br /&gt;
===Printrun===&lt;br /&gt;
This is what Dan&#039;s using in Oct 2013.&lt;br /&gt;
&lt;br /&gt;
There&#039;s good installation instructions at https://github.com/kliment/Printrun. He wanted to do a source install but gave up when it wasn&#039;t easy with pip because it needs to use system wide python for access to the display.&lt;br /&gt;
&lt;br /&gt;
* Change baud rate to 250000.&lt;br /&gt;
* Click connect.&lt;br /&gt;
&lt;br /&gt;
===Other Software===&lt;br /&gt;
[[GcodeCommunications]]: other programs to send the g-code file from a host computer to a controller.&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
Talk to Arduino with USB, or for longer distance RS422 e.g. [http://www.mouser.com/ProductDetail/Maxim-Integrated-Products/MAX3488ECSA+/?qs=sGAEpiMZZMvbyeSUH4qH%2fEqdkzg%252bEBoj MAX3488E]&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
[[Stepper_Testing|Testing]]&lt;br /&gt;
&lt;br /&gt;
=Limits and Homing=&lt;br /&gt;
&lt;br /&gt;
==Dual-motor homing==&lt;br /&gt;
The x axis (long axis) has 2 stepper motors. In the steppernug system, these have separate driver modules which receive identical step, direction, and enable signals.&lt;br /&gt;
&lt;br /&gt;
For zeroing, the x axis needs to decouple - so if we get the x axis out of parallel, we can jog the x axes back into parallel by hitting their home switches independently. Steppernug supports this by allowing the Arduino to control a gate which blocks step pulses to the second driver module; in this condition the second motor will freeze and only the first motor will move. There is no provision for moving the second motor without moving the first, but that function is not required for the homing algorithm.&lt;br /&gt;
&lt;br /&gt;
==Axis sequence==&lt;br /&gt;
# We will home the Z axis to its upper position first, just in case there are obstructions to clear during the X and Y axis homing.&lt;br /&gt;
# X and Y axes will do their initial fast moves to find home simultaneously (overlapped homing) to save time.&lt;br /&gt;
# The Y precision home movement will be performed.&lt;br /&gt;
# The dual-X-axis precision home maneuver will be performed.&lt;br /&gt;
&lt;br /&gt;
==Limit and home switch configuration==&lt;br /&gt;
&lt;br /&gt;
[[File:HomeLimit.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(TODO: add illustration showing distance coded reference mark options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Unconfirmed proposal at this time)&#039;&#039; [[User:ChuckH|ChuckH]] 23:42, 20 October 2012 (CEST)&lt;br /&gt;
&lt;br /&gt;
Each axis has two switches: a &#039;&#039;&#039;limit switch&#039;&#039;&#039; and a &#039;&#039;&#039;home switch&#039;&#039;&#039;.&lt;br /&gt;
* The &#039;&#039;&#039;limit switch&#039;&#039;&#039; is activated at *either* end of travel. Its function is to protect against machine damage.&lt;br /&gt;
** Attempting to move further into the limit when the limit switch is active will cause all axis movement to stop, the torch to be shut off, and any other &amp;quot;safe shutdown&amp;quot; operation to be performed.&lt;br /&gt;
** The limit switch could be hit if the program erroneously commands the tool to move beyond the edge of the table&lt;br /&gt;
** The limit switch could also be hit if the torch table loses step (e.g. by hitting an obstruction) and subsequently performs a movement which takes it to the edge of the table&lt;br /&gt;
** The limit switch &#039;&#039;may&#039;&#039; be implemented as two physical switches wired in parallel, or the machine construction may permit a single switch to be used.&lt;br /&gt;
** Repeatable precision of actuation point is not very critical.&lt;br /&gt;
** This function is especially important if the table is expected to do automated cutting without constant human supervision.&lt;br /&gt;
* The &#039;&#039;&#039;home switch&#039;&#039;&#039; transitions between inactive and active at a point partway through the legal travel of the machine.&lt;br /&gt;
** For example, it might be active at the negative end of travel, and go inactive after 6 inches of movement.&lt;br /&gt;
** The home switch is used only for locating a repeatable zero position when the machine is powered on (or when recovering from lost steps)&lt;br /&gt;
*** Note that the logical &amp;quot;machine zero&amp;quot; coordinate may be placed at any programmed position relative to the physical home switch.&lt;br /&gt;
** Repeatable precision may be important&lt;br /&gt;
*** For the dual-motor axis, to establish accurate squareness&lt;br /&gt;
*** For all axes, to pick up in the middle of an interrupted job&lt;br /&gt;
*** If fixturing is used for repeat &amp;quot;production style&amp;quot; operations&lt;br /&gt;
** (&#039;&#039;update, 14-July-2103:&#039;&#039;) Instead of responding to a single flag location, the home switch could be actuated many times by multiple flags along the travel, with carefully designed nonuniform spacing between flags&lt;br /&gt;
*** This implements &amp;quot;distance coded reference marks&amp;quot; (DCRM), e.g. [[http://www.rls.si/en/dcrm-distance-coded-reference-mark-system--15934]], [[http://www.heidenhain.de/presentation/posa/en/index/N10584/N108A7/N10926.html]], [[http://www.newall.com/upload/content/file/SHG-TC%20-%20Distance-Coded%20Protocol%20-%20USA%20Ver%2004-07-05.pdf]]&lt;br /&gt;
*** DCRM is often applied to incremental linear encoder systems; the same principle is effective here using motor step count as the &amp;quot;incremental scale&amp;quot;.&lt;br /&gt;
*** Using DCRM, the axis only needs to traverse two flag transitions after startup in order to unambiguously determine absolute position.&lt;br /&gt;
** By construction, the home switch is active at one end of travel and inactive at the other&lt;br /&gt;
*** This allows the machine to know which end of travel it is at in the event the limit switch is activated&lt;br /&gt;
*** This, in turn, allows the machine to permit recovery movement from the limit condition back into legal travel, while ignoring a command to go further into the limit zone.&lt;br /&gt;
&lt;br /&gt;
There is an alternative switch configuration which places individual limit switches at the positive and negative limits of legal travel. However the configuration above is preferred because it supports faster homing and simpler control logic. Specifically:&lt;br /&gt;
# The substantial distance between the end of travel and the home switch location gives the machine overtravel room to do a controlled stop from high speed: maximum slewing speed can be used during initial homing without risk of slamming into the physical end-of-travel.&lt;br /&gt;
# Home switch placement can minimize the typical startup time.&lt;br /&gt;
#* If an axis is usually parked near one end of travel, the home switch can be placed there&lt;br /&gt;
#* If the axis position on startup is random, placing the home switch in the center of travel will minimize the average seek time.&lt;br /&gt;
#* DCRM can be implemented to obtain short startup/home times no matter what the starting position.&lt;br /&gt;
# The &amp;quot;safety shutdown&amp;quot; limit-switch function can be always active, and is independent of homing&lt;br /&gt;
#* The alternative approach requires logically repurposing a limit switch as home switch during home operations&lt;br /&gt;
&lt;br /&gt;
==Switch Types==&lt;br /&gt;
&lt;br /&gt;
The steppernug interface provides 5V power to sensor switches so either electronic or mechanical switches are easily accommodated.&lt;br /&gt;
* Mechanical microswitches are simple and effective.&lt;br /&gt;
* A Hall switch (e.g. [[Hall_Effect_Sensor_Module|this]]) is rugged but its position precision is probably only suitable for limits, not home switches.&lt;br /&gt;
* An optical interrupter (e.g. [http://www.mouser.com/ProductDetail/Sharp-Microelectronics/GP1A75EJ000F/?qs=%2fha2pyFaduhmXejJv184BikaBEqZykWweNnmsglkeuWVbMieAKIiNg%3d%3d Sharp GP1A75EJ000F]) can give precisely repeatable homing.&lt;br /&gt;
&lt;br /&gt;
== Switch response time ==&lt;br /&gt;
&lt;br /&gt;
The home switch should respond within one motor step time at the &amp;quot;creep speed&amp;quot; used for final approach. This speed might be ~100 steps/sec which gives us ~10ms.&lt;br /&gt;
&lt;br /&gt;
The limit switch should respond quickly enough so that an emergency stop initiated by the switch will stop the machine motion before it hits a mechanical stop. This time is dependent on a lot of different design parameters, but is probably at least 10ms.&lt;br /&gt;
&lt;br /&gt;
The limited response speed required allows us some latitude for noise suppression.&lt;br /&gt;
&lt;br /&gt;
Since all switch signals pass through the I2C expander for I/O, there is about 150 usec (0.15ms) added, see [[Stepper_Testing#timing|here]].&lt;br /&gt;
&lt;br /&gt;
=Torch control=&lt;br /&gt;
&lt;br /&gt;
Software can use an M code to start the cut (e.g. open cutting-oxygen valve, strike plasma arc).&lt;br /&gt;
&lt;br /&gt;
A second M code could shut down the entire torch (e.g. at the end of an unsupervised cutting session).&lt;br /&gt;
&lt;br /&gt;
See also [[CNC_Torch_Table/Research_Development#Cutting_Torch]]&lt;br /&gt;
&lt;br /&gt;
==Plasma Torch==&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Design#Plasma_Cutter_PC_Interface]]&lt;br /&gt;
&lt;br /&gt;
[http://www.metalwebnews.com/howto/plasma/presentation.pdf This presentation] on plasma-cutting accurate holes also suggests that ramping down plasma current while torch is still moving is good practice. (It makes the electrodes last longer.)&lt;br /&gt;
&lt;br /&gt;
[[Sensing_Distance_from_Work_Piece|Z-axis arc voltage height control]]. Needs design work.&lt;br /&gt;
&lt;br /&gt;
[[Plasma_Cutter_Cut_Speed_as_a_Function_of_Metal_Thickness|Cutting speed]]&lt;br /&gt;
&lt;br /&gt;
Hypertherm:&lt;br /&gt;
&lt;br /&gt;
[[File:PlasmaSpeed.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Oxyfuel (oxyacetylene, oxypropane, etc) cutting torch==&lt;br /&gt;
&lt;br /&gt;
During cutting, an oxyfuel cutting torch is literally burning the steel with a blast of oxygen; most of the heat comes from oxidizing the iron. However to start a new cut (&amp;quot;piercing&amp;quot;) you must preheat the steel, relying on the acetylene or LPG for heat. After the steel is red hot you boost the oxygen flow and make the cut. We will want an oxygen-rated valve controlled by the microprocessor. &amp;quot;Oxygen-rated&amp;quot; mostly means the valve is thoroughly cleaned of all oil or flammable solvents that tend to explode on contact with pure oxygen; good practical reference [http://www.gmcscuba.com/pdf/CONVERTING%20DIVE%20TANKS%20FOR%20OXYGEN%20SERVICE.pdf here]. A solenoid valve like [http://www.lesman.com/acatalog/ASCO_8210_Oxygen-Service_Valves.html this] in combination with an ordinary regulator would give basic on/off control, but see better suggestions below.&lt;br /&gt;
&lt;br /&gt;
Fairly technical application note about how to do good oxyfuel machine cutting from ESAB: [http://www.esabna.com/literature/Gas%20Apparatus/Miscellaneous/Oxy-Fuel_Cutting_Quality_0558006464.pdf]&lt;br /&gt;
&lt;br /&gt;
[http://www.cnczone.com/forums/cnc_plasma_waterjet_machines/98346-cnc_oxy_fuel_discussion-25.html#post778595 This] &#039;&#039;long&#039;&#039; forum thread contains a lot of information about implementing small-shop CNC oxyfuel with programmed preheat, pierce, and cutting gas controls, auto ignition, etc. Based partly on this information, here are some control design suggestions for an Arduino-based CNC like [[CoolRAMPS]] or [[CNC_Torch_Table_Control_Overview#Steppernug_Driver_and_Interface_.28alternative_to_CoolRamps.29|Steppernug/grbl]]:&lt;br /&gt;
* use dome loaded regulators (e.g. Victor DL700 [http://www.amazon.com/Victor-0780-1188-DL700-500-Dome-Regulator/dp/B0047684PG] [http://victortechnologies.com/IM_Uploads/doclib_8016_DocLib_2331_56-0679%20%20DL%20700%20External%20Dome-Loaded%20Regulator%20Part%20Bulletin.pdf]) driven by regulated shop air [[File:DL700.png|thumb]] [[File:VTS250.png|thumb]]&lt;br /&gt;
** general description of spring- and dome-loaded regulators [http://www.documentation.emersonprocess.com/groups/public/documents/bulletins/debul2008x012.pdf here]&lt;br /&gt;
** It appears that almost any standard screw-handle regulator can be converted to &amp;quot;dome loaded&amp;quot; by sealing up the housing cap and replacing the screw/spring with an air pressure fitting. See video below. A classic dual-stage like the [http://victortechnologies.com/IM_Uploads/doclib_8039_DocLib_2310_56-0623%20VTS%20250%20Series%20Regulators.pdf VTS250] should work very nicely for conversion&lt;br /&gt;
** As with manual regulators, if oxy- or fuel-tank pressure exceeds inlet rating of dome-loaded regulator, a first-stage tank regulator will be required.&lt;br /&gt;
** With the dome-loaded regulators, gas on/off as well as pressure setting can be obtained with low-cost shop air components and small valves (e.g [http://www.ebay.com/itm/4V130C-06-DC24V-Solenoid-Air-Valve-5-port-3-position-/290652595990 4V130C],[http://www.automationdirect.com/adc/Shopping/Catalog/Pneumatic_Components/Pneumatic_Valves_-a-_Accessories/Solenoid_Air_Valves_-a-_Accessories/5-port_(4-way),_3-pos.,_Body_Ported_-z-_Manifold_(AVS-5,AM_Series)/AVS-523C1-24D AVS-523C1])&lt;br /&gt;
** Using a [http://www.digikey.com/product-detail/en/MPXHZ6400AC6T1/MPXHZ6400AC6T1CT-ND/2057456 solid-state pressure sensor] for feedback, the Arduino can set the regulated pressures to programmed levels by actuating the pneumatic valves (increase/decrease loading pressure until feedback is correct). See video below and code on [http://github.com/chuck-h/ose-gaspressurecontrol github].&lt;br /&gt;
* use an electric igniter ([http://www.rvpartwholesaler.com/servlet/the-31/Dometic-2931132019-Refrigerator-Reignitor/Detail RV fridge igniter], [http://www.amazon.com/GrillPro-20620-Electric-Button-Igniter/dp/B000FJVKNM BBQ igniter], [https://www.sparkfun.com/products/11218 spark coil]).&lt;br /&gt;
* follow the sequencing of x,y,z motions, pressure changes, on/off, and ignition described by the folks on the forum thread above.&lt;br /&gt;
** Develop a library of pressure/time/positioning parameters for different material thicknesses and tip sizes that can be applied automatically by the G-code programming; this should minimize setup time and tweaking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=H3Z3EHqTn44&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=WcUnHnZJ8xU&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s3.www.universalsubtitles.org/embed.js&amp;quot;&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
  {&amp;quot;video_url&amp;quot;: &amp;quot;http://www.youtube.com/watch/?v=uwCbohxajOY&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing a [http://www.clippard.com/part/MNV-1K needle valve] at the solenoid air valve improved control smoothness a bit compared to video above.&lt;br /&gt;
&lt;br /&gt;
[[Image:ClippardNeedle.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== oxygen ===&lt;br /&gt;
&lt;br /&gt;
The cutting oxygen for the torch must be high purity (according to the ESAB note above less than 95% purity simply will not cut steel, and &amp;gt;99.5% is required for best quality). Until recently, this meant cryogenically separated oxygen, depending on a large capital plant, and thus the user must rely on commercially provided tank oxygen. For some 30 years, [http://en.wikipedia.org/wiki/Pressure_swing_adsorption pressure-swing-adsorption (PSA) separators] have been available, but standard designs do not remove argon and therefore result in about 95%-oxygen, 5%-argon output gas. PSA construction is low-tech and works very nicely at small scale, e.g. portable breathing-oxygen units, and would be quite suitable for OSE. 95% purity is probably adequate for the preheat flame (ChuckH conjecture). For higher-purity cutting oxygen, PSA can be extended with additional zeolite materials [http://www.ou.edu/class/che-design/a-design/projects-2007/Oxygen%20Generator-Presentation.pdf] or activated carbon [http://www.airsepcpd.com/airsepcpd/pdfs/12779.pdf]; despite [http://cr4.globalspec.com/blogentry/20384/To-Build-an-Oxygen-Concentrator-or-Not this discussion] there is no clear record of small-scale DIY implementation of 99% oxygen PSA.&lt;br /&gt;
&lt;br /&gt;
=== oxyacetylene ===&lt;br /&gt;
&lt;br /&gt;
Recommendations from Victor:&lt;br /&gt;
&lt;br /&gt;
[[File:Victor_Oxy_Acetylene.jpg]]&lt;br /&gt;
&lt;br /&gt;
Commercial oxy-fuel machine cutting heads&lt;br /&gt;
* [http://www.pierce.cz/production/components-for-building-and-retrofiting-cutting-machines/autogenni-motorizovana-rezaci-hlava.htm?lang=en Czech] one with capacitive height sensor feature&lt;br /&gt;
&lt;br /&gt;
Components offered by JB: [[CNC_Torch_Table_Log#Oct._21.2C_2012]]&lt;br /&gt;
&lt;br /&gt;
== Oxy-propane, -natural gas, etc ==&lt;br /&gt;
[http://www.cousesteel.com/AndysPlace/PropaneAcetylene.html Propane] instead of acetylene. Note the large preheat oxygen flow (not in a consistent stoichiometric ratio to fuel) in this chart. Odd.&lt;br /&gt;
&lt;br /&gt;
[[File:VictorLPGcutting.png]]&lt;br /&gt;
&lt;br /&gt;
Would [[Gasifier|gasifier-gas]] or [[biogas]] &amp;amp; oxygen work? Probably, as natural gas is primarily methane and is a commercially successful cutting-torch fuel.&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
[[Distributed_CNC_Motion_Control]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:CNC Torch Table Prototype II]]&lt;br /&gt;
[[Category:Vann]]&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110509</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110509"/>
		<updated>2013-10-31T00:36:34Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Fix stiff long axis motor.&lt;br /&gt;
* The standard RAMPS setup for 2 motors on one axis is to run them in parallel off one driver. Since our motors draw a fair amount of current, try to use a separate driver for each motor and [http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 modify marlin] to drive those two drivers identically.&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
* Draw a rectangle in librecad, run it through [[DXF to G-code Conversion Tutorial | dxf2gcode]] and use [http://reprap.org/wiki/Pronterface Printrun] to stream it to the arduino. Get the table to draw the rectangle.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff. Steps until we could use the table to actually make parts for fabricating other machines:&lt;br /&gt;
* Add a circle to the dxf that&#039;s not touching the rectangle. Re-run and make sure the head lifts up between the shapes.&lt;br /&gt;
* Add [[DXF_to_G-code_Conversion_Tutorial#Piercing | gcode postprocessing]] if still needed for piercing and torch width. The &amp;quot;torch&amp;quot; should move back and forth while making an initial &amp;quot;pierce&amp;quot;. For the circle, I think it should make the pieces inside the circle. I&#039;m not sure if it should pierce the rectangle inside or on one edge. We want it to make the pierce in a part of the metal we won&#039;t use. I wonder how the piercing code knows what that is... There&#039;s a conversation [https://groups.google.com/forum/#!msg/dxf2gcode-dev/6ZnNcX3O5i4/d-3NeBfHpbUJ here] about integrating this functionality into dxf2gcode which would be great for ease of use and gives us a gui where maybe we could click where we want the pierce to be.&lt;br /&gt;
* Try it with the real torch!!! For future steps, I&#039;d switch back to the sharpie for testing and only use the torch once things look good.&lt;br /&gt;
&lt;br /&gt;
If we&#039;re lucky, this gets us to milestone 1 - can cut useful warehouse plates.&lt;br /&gt;
&lt;br /&gt;
Tasks for milestone 2 and beyond are in github (link below).&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;400&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110508</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110508"/>
		<updated>2013-10-31T00:30:07Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Fix stiff long axis motor.&lt;br /&gt;
* The standard RAMPS setup for 2 motors on one axis is to run them in parallel off one driver. Since our motors draw a fair amount of current, try to use a separate driver for each motor and [http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 modify marlin] to drive those two drivers identically.&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
* Draw a rectangle in librecad, run it through [[DXF to G-code Conversion Tutorial | dxf2gcode]] and use [http://reprap.org/wiki/Pronterface Printrun] to stream it to the arduino. Get the table to draw the rectangle.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff. Steps until we could use the table to actually make parts for fabricating other machines:&lt;br /&gt;
* Add a circle to the dxf that&#039;s not touching the rectangle. Re-run and make sure the head lifts up between the shapes.&lt;br /&gt;
* Add [[DXF_to_G-code_Conversion_Tutorial#Piercing | gcode postprocessing]] if still needed for piercing and torch width. The &amp;quot;torch&amp;quot; should move back and forth while making an initial &amp;quot;pierce&amp;quot;. For the circle, I think it should make the pieces inside the circle. I&#039;m not sure if it should pierce the rectangle inside or on one edge. We want it to make the pierce in a part of the metal we won&#039;t use. I wonder how the piercing code knows what that is... There&#039;s a conversation [https://groups.google.com/forum/#!msg/dxf2gcode-dev/6ZnNcX3O5i4/d-3NeBfHpbUJ here] about integrating this functionality into dxf2gcode which would be great for ease of use and gives us a gui where maybe we could click where we want the pierce to be.&lt;br /&gt;
* Try it with the real torch!!! For future steps, I&#039;d switch back to the sharpie for testing and only use the torch once things look good.&lt;br /&gt;
&lt;br /&gt;
If we&#039;re lucky, this gets us to milestone 1 - can cut useful warehouse plates.&lt;br /&gt;
&lt;br /&gt;
Tasks for milestone 2 and beyond are in github (link below).&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
	<entry>
		<id>https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110507</id>
		<title>CNC Torch Table 2/Research Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.org/index.php?title=CNC_Torch_Table_2/Research_Development&amp;diff=110507"/>
		<updated>2013-10-31T00:27:09Z</updated>

		<summary type="html">&lt;p&gt;Daniel Benamy: /* Next Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{GVCS Header}}&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is Dan Benamy&#039;s understanding as of Oct 2013:&lt;br /&gt;
&lt;br /&gt;
There have been various ambitious projects over the past few years to do amazing things with the torch table. Unfortunately none of them seem to have reached the finish line (including integration with all the other work).&lt;br /&gt;
&lt;br /&gt;
For the short term Dan plans to get the version 2 table up and running ASAP with the [[RAMPS]] system so we can get something working and build momentum. Then we can quickly iterate to incorporate better modules such as the [[Steppernug]], [[CoolDRV]], or [[CoolRAMPS]] which will allow us to cut faster, sensors for more reliable operation, fuel control for more efficient fuel usage, etc.&lt;br /&gt;
&lt;br /&gt;
Generally, Dan&#039;s strategy is to &#039;&#039;&#039;make lots of quick iterations with self-contained improvements&#039;&#039;&#039; so we almost always have a working table and project handoff is simpler. I&#039;m also focusing on &#039;&#039;&#039;getting something working&#039;&#039;&#039; at FeF that we can use to cut parts we need for other machines, &#039;&#039;&#039;rather than something that&#039;s easily reproducible or perfectly documented&#039;&#039;&#039;. I&#039;m trading off reproducibility and user friendly docs for getting it working for two reasons: 1- being able to cut [[Warehouse]] parts will save lots of time and money on all other development. 2- it will also be a waste of effort to carefully document stuff that turns out not to work well. Once we get to the point where we can cut useful stuff, I (or you!) will need to make any changes needed for ease of reproduction, and create awesome manufacturing guides so others can copy it.&lt;br /&gt;
&lt;br /&gt;
Lots of info on the control systems at [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
=Next Steps=&lt;br /&gt;
&lt;br /&gt;
* Fix stiff long axis motor.&lt;br /&gt;
* The standard RAMPS setup for 2 motors on one axis is to run them in parallel off one driver. Since our motors draw a fair amount of current, try to use a separate driver for each motor and [http://shapeoko.com/forum/viewtopic.php?f=4&amp;amp;t=1095 modify marlin] to drive those two drivers identically.&lt;br /&gt;
* Run a simple test gcode program- https://github.com/grbl/grbl/wiki/G-Code-Examples.&lt;br /&gt;
* Draw a rectangle in librecad, run it through [[DXF to G-code Conversion Tutorial | dxf2gcode]] and use [http://reprap.org/wiki/Pronterface Printrun] to stream it to the arduino. Get the table to draw the rectangle.&lt;br /&gt;
&lt;br /&gt;
Then I&#039;d do incremental improvements, keeping the table working after each step so if I had to leave or something didn&#039;t work, it&#039;d be easy to revert to the most recent working stuff. Steps until we could use the table to actually make parts for fabricating other machines:&lt;br /&gt;
* Add a circle to the dxf that&#039;s not touching the rectangle. Re-run and make sure the head lifts up between the shapes.&lt;br /&gt;
* Add [[DXF_to_G-code_Conversion_Tutorial#Piercing | gcode postprocessing]] if still needed for piercing and torch width. The &amp;quot;torch&amp;quot; should move back and forth while making an initial &amp;quot;pierce&amp;quot;. For the circle, I think it should make the pieces inside the circle. I&#039;m not sure if it should pierce the rectangle inside or on one edge. We want it to make the pierce in a part of the metal we won&#039;t use. I wonder how the piercing code knows what that is... There&#039;s a conversation [https://groups.google.com/forum/#!msg/dxf2gcode-dev/6ZnNcX3O5i4/d-3NeBfHpbUJ here] about integrating this functionality into dxf2gcode which would be great for ease of use and gives us a gui where maybe we could click where we want the pierce to be.&lt;br /&gt;
* Try it with the real torch!!! For future steps, I&#039;d switch back to the sharpie for testing and only use the torch once things look good.&lt;br /&gt;
&lt;br /&gt;
More in github (see below).&lt;br /&gt;
&lt;br /&gt;
=Developement Board=&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=80% height=&#039;500&#039; frameborder=&#039;0&#039; src=&#039;https://docs.google.com/spreadsheet/pub?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc&amp;amp;output=html&amp;amp;widget=true&#039;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheet/ccc?key=0Av4ZjQn4DHJHdDBNVmlFTmZ5S3YxckY3ZkxZc01ISHc#gid=2 edit]&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
[[Image:Table_Frame.JPG|none|360px|Torch Table Prototype II Design.]]&lt;br /&gt;
&lt;br /&gt;
Lots of information about the control system in [[CNC Torch Table 2/Control Overview]].&lt;br /&gt;
&lt;br /&gt;
Additional discussion at [[TorchTableModularTooling]]&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* Issue Tracker- https://github.com/OSE/CNC-Torch-Table-OSE/issues&lt;br /&gt;
* 3d models&lt;br /&gt;
** Github (solidworks 3d models and issues) - https://github.com/OSE/CNC-Torch-Table-OSE. &#039;&#039;&#039;Use this for new development&#039;&#039;&#039;&lt;br /&gt;
** This was originally developed at an [https://github.com/Fractal618/CNC-Torch-Table-OSE old repo] and we forked it into the OSE org. &#039;&#039;&#039;Do not use the old repo.&#039;&#039;&#039;&lt;br /&gt;
** [http://opensourceecology.org/w/images/7/79/CNC_Torch_Table_-_Sketchup_Model.zip] - Sketchup files - I don&#039;t know if there are conversions of the solidworks files in github or something else.&lt;br /&gt;
* 2d drawings- [http://opensourceecology.org/w/images/d/d1/Creation_Flame_CNC_Torch_Table_Drawings.zip] - DXFs of motor mounts&lt;br /&gt;
&lt;br /&gt;
=Additional Notes=&lt;br /&gt;
*As a large x-y-z coordinate table, the Torch Table has potential applications with other tooling besides a cutting torch. One limitation is that the drive system is not powerful enough or stiff enough to support heavy cutting-tool forces.&lt;/div&gt;</summary>
		<author><name>Daniel Benamy</name></author>
	</entry>
</feed>