The purpose of this post is to announce that I will be suspending any further development of the 3DLP Host software and accompanying firmware until further notice. 3DLP Host has always been a project that I've been developing in my spare time (mostly) for free. Right now I am chest-deep in the chaos of moving and changing jobs, and things are far too hectic to be able to work on the software for a while. Rather than make promises that I cannot keep, it makes the most sense for me to officially hold further progress until things settle down again. I intend to resume giving to the open source community once I am able; in the meantime the 3DLP Google Code site will remain up and the source code that I have released thus far will remain free and open source. Please feel free to email me with any specific questions you may have regarding development of the software.
I know it's been quite a while since I've updated the site, but it's finally time for me to share some amazing news: I've been working for over seven months on 3DLP Host v2.0, and I'm finally in the home stretch! Check out a preview screenshot below:
I've really put an insane amount of effort into making this version of 3DLP Host into a rock-solid, feature-jammed piece of software that will be able to grow and evolve alongside the 3D printing community as new technologies are developed and existing ones are pushed to the edge. The number of new features is too great to list out right now, but v2.0's release will correlate with a complete update and full software documentation. I'm extremely excited to be pushing down the home stretch and I hope to be able to begin releasing Alpha test versions to my supporters very soon to begin gathering feedback in preparation for a worldwide release. In the meantime, happy printing!
FireHero 3 is finally here! Originally built for a music festival, FireHero 3 was designed from the ground up to focus on putting on an incredible live show. Read on to see more pictures and details of the system!
Well, it's been a while - I haven't updated the 3DLP Host Software since I came out with the first Alpha version back in May. This past weekend I started working on a complete revamp of the software - and when I say revamp, I mean that by the time I'm done, nearly every line will be replaced with better, more robust code. Planned features for the next release of the software include: 3D STL importer/viewer, 3D realtime slicer, re-written Arduino firmware, a new, cleaner GUI, slice previewing, and a manual printer control dialog. I'm also working on an efficient automatic support generation algorithm that I plan on implementing in later releases.
Here's a preview of the new 3D interface:
Here I've imported an STL model into the 3D viewer, oriented it in 3D space, and sliced the model at a Z height of 0.5. The red lines indicate the contours of the layer created by the intersections of the model and the defined slicing plane.
Here I've loaded an extremely complex (very high poly count) STL model of a human skull complete with all the internal passages and cavities.
Here I'm slicing the skull with a plane in the Z axis - red indicates the intersection of the solid bodies and the slicing plane in 3D space.
Today I made a quick testing rig for the new type of plasma-ignition flame effect I'm developing for FireHero 3. This test rig is lightweight and can be set up in a matter of seconds, and will allow me to test different electrodes, spacing, nozzles, and pressures until I get things exactly right. Once I've nailed down a solid platform on this rig, it's a simple matter to expand to the 12 effects of FireHero 3. Read on to see some pictures of the rig!
Lately I've been expanding my knowledge in control theory in preparation for a complex automated process control system that I'm designing. This is the first installation in a series of articles detailing my "Adventures in Control Theory" as I progress through different types of control systems and take them from theory to practical use. Of course, I'm uploading all of this in the hopes that it will be useful to somebody else trying to learn how to use these theories properly.
Mathematically, the control function for an ideal PID control can be written as shown below:
The above equation describes a PID control loop in the continuous-time domain. In order to translate the above equation into code, we'll need to create a form in the discrete-time domain, like below:
I've implemented this discrete equation into a Python class, as seen below:
import time class PID: def __init__(self): self.Kp = 0 self.Kd = 0 self.Ki = 0 self.initialize() def SetKp(self, Kp): self.Kp = Kp def SetKi(self, Ki): self.Ki = Ki def SetKd(self, Kd): self.Kd = Kd def SetPrevErr(self, preverr): self.prev_err = preverr def initialize(self): self.currtm = time.time() self.prevtm = self.currtm self.prev_err = 0 self.Cp = 0 self.Ci = 0 self.Cd = 0 def GenOut(self, error): """ Performs a PID computation and returns a control value based on the elapased time (dt) and the error signal from a summing junction. """ self.currtm = time.time() #get t dt = self.currtm - self.prevtm #get delta t de = error - self.prev_err #get delta error self.Cp = self.Kp * error #proportional term self.Ci += error * dt #integral term self.Cd = 0 if dt > 0: #no div by zero self.Cd = de/dt #derivative term self.prevtm = self.currtm #save t for next pass self.prev_err = error #save t-1 error return self.Cp + (self.Ki * self.Ci) + (self.Kd * self.Cd)
Read on to see how I create a simulation using Python to demonstrate the effects of the three tuning constants on the control response of the algorithm!
I haven't updated this site in around four months, so I figured it was about time to write about the latest things going on in my life. I largely took the summer off from any real progress on projects due to personal reasons, but I'm happy to report that I'm back into the full swing of things like never before!
FireHero Guitar MIDI interface:
One of my largest goals with the FireHero system is to be able to interface it to live instruments. In theory, it's relatively straightforward. But in reality, acquiring an accurate data stream that represents the guitarist's playing and processing it to provide visually pleasing results is quite a challenge. I'm happy to announce that after a couple months of pulling my hair out during late-night coding/guitar-playing sessions, the guitar interface has reached a point where I'm sufficiently pleased with the results for me to call it an "Alpha" version.
I use a Roland GK-3 hexaphonic pickup, which is mounted to the guitar with double-sided tape and connected to a GI-20 pitch-to-MIDI converter. The MIDI output of the GI-20 is fed into custom Python software which analyzes the data stream and ultimately sends the output over Ethernet protocol to the FireHero-side computers, which output the patterns specified by the software. The Python host software is made up of a series of algorithms designed to perform intelligent chord-detection, as well as detect single notes and place them appropriately. The software memorizes all the chord progressions of a particular song as the guitarist plays in order to ensure consistent output for each chord. I hope to be filming a demo of this system, which is intended for live performances, very soon - stay tuned!
Over the past three weeks I've performed a $5,000 revamp of FireHero to the latest version - FireHero 3! The upgrades includes a completely-revamped fuel system capable of delivering almost 10 times the propane output of the previous versions, a high-voltage plasma ignition system, a custom-designed control system complete with an operator's panel, status displays, custom data exchange protocols, and solid-state switching of the solenoid valves. Also new in this version is the increase of the normal five effects to six (to accommodate the guitar interface) and the addition of four 40-foot flame effects to the frame. I'm also working on developing two 120-foot flame cannons. Stay tuned for an upcoming article dedicated to FireHero 3.
I've been very involved in creating a desktop plastic extrusion machine since the end of May. Here's a photo of an early (failed) prototype:
I was originally inspired by the Desktop Factory Competition, and at this point my design has evolved enough that I'm in the process of developing a company around the concept. The machines will be completely Open Source once released, and are designed with the goal of being as affordable as possible to allow all sorts of individuals, schools, and other organizations the ability to save huge amounts of money on plastic costs for FDM (Fused Deposition Modeling) prototyping. There are several open-source extrusion machines being developed right now, but my design takes a different approach and borrows techniques from the 80-year-old plastics extrusion industry to provide a higher-quality product at a greater speed. Here's a screenshot of an early rendering:
I'm also planning on re-building my blast furnace and re-starting my work in metalcasting soon, so I've started collecting WVO. After gathering several hundred pounds of oil, I realized that I needed a more efficient way of storing it. I found an old 100# propane tank lying in the woods by my house, so I turned it into an oil storage tank. I welded fittings onto the tank, so now I can cart it around to dispense of oil wherever I need it!
Alright, I'm finally getting the time to document all of this. I've completely rebuilt and revamped my printer with a new tilt axis, and I was ready to give it another go - read on to see what happened.
Tonight I spent several hours playing around with the Kinect OpenNI library and Processing - and boy oh boy did I work on some cool stuff!! Above is a 3D point cloud of me standing in my room, created from data extrapolated from the Kinect's depth image.
I can't even contain the amount of incredible ideas that are racing through my head on how I can apply this to real-world applications. I feel that I've reached a point in my learning and personal development where the complexity and scope of my projects is going to literally explode. Two months ago, I wouldn't have ever imagined that I'd be working as the lead developer on an open-source 3D DLP printing software project or doing contract pyrotechnics work. Ever since I left school back in January, I've been doing nothing but pursuing my passion, and ever since then things have been falling into place for me and I've gotten to follow it even further (Yes, I believe in the Law of Attraction). I'm willing to bet that a year from now, I'll be working on things that I couldn't even imagine doing now. Check back often, because I have a ton of awesome things in the works!
I'm restarting my past effort to get a single-cylinder engine to run purely on Hydrogen fuel. I'm starting from scratch with an old 6.75HP lawnmower engine (the engine runs beautifully). I'll be building a testing rig around the engine, modifying the engine to run stand-alone (removing the rotational inertia of the mower blades causes the engine to run differently), ripping out the old ignition system and replacing it with a brand-new microprocessor-controlled electronic ignition system, adding fuel injection for the Hydrogen, and ultimately using the engine as a test bed for collecting data and a proof-of-concept for future projects.
Here I've ripped the cover and pull-start off of the engine.
This is the magneto-driven ignition system that is currently on the engine. To adjust the ignition timing, I could try and re-position the pickup coil perfectly in the new position, but that would be way more trouble than it's worth. It's far easier in this case to add an electronic system, which will allow me to adjust the timing on the fly, extrapolate data about the current RPM of the engine, power curves, etc.
Here you can see I removed the engine from the lawnmower. The carburetor will eventually be completely replaced by a gas-metering system to precisely inject Hydrogen gas into the system.