Sunday, June 12, 2011

Baby steps

I have started the modifications to turn my CNC router into a test bed for my 3d printer design.


I added a platform to the Z axis that will hold the build platform. The resin tray will hang off the edge of the table so I can have the projection from below. For now I just have a piece of Plexiglas as a placeholder for the tray.


Watch the video to see it in action!


video

What you see is Mach3 running a macro. The macro opens a PowerPoint slide show. Then lowers the z axis quickly to the top of the tray then slowly to the bottom so it doesn't splash down into the resin. The macro then shows a slide for the set exposure time alternating with a blank(black) slide while the z axis repositions itself for the next layer. Then the next slide is shown . Lather, rinse, repeat.... When the last slide is done the z axis is raised to its full height so the build tray can be slid out of the holder. The images you see on the screen will be projected up from below the Plexiglas. Of course all the timings will need to be adjusted once I start testing with actual resin.


Next up... I'll add the projector. I just need to get a VGA splitter and a front surface mirror.

Sunday, June 5, 2011

Details, Details

I've been doing a lot of brainstorming with a kindred spirit (Jon) I met over at the Chemshapes.com forum (formerly Snygro).

My ultimate goal here is to come up with a 3d printer that can be built cheaply from easily obtainable materials without access to a full machine shop. That being said, I need a practical test bed to try some ideas. To that end I am going to make modifications to my diy cnc router and add 3d printing capability to it. The router already has a functional z axis and all the electronics. This way I can work out the design details and transfer that to my dedicated desktop printer design.

On the software, I had planned on using MS PowerPoint to create a slide show of my layer slices but was having a very difficult time figuring out how to time each slide with a blank(black) transition that was long enough. It could be done with custom animations but not to all the slides simultaneously. If there were hundreds or thousands of slides that would really suck! I couldn't find a slide show program that would let me set the dark time between slides so I was trying to learn Visual Basic so I could write one for myself. The problem is I was having trouble wrapping my brain around it and was getting frustrated when I couldn't get it to do what I wanted.

In rides Jon Watson to the rescue.
He solved two problems in one stroke.

1. I needed to create a slide show with the appropriate timings and 2. then coordinate that show with the motion control of the printer. At first I was thinking of having some sensor on the printer that "looked" for when a blank slide was displayed so it knew when to make its moves.

Jon came up with a macro to apply the animations to all the slides automatically and then use Mach3 to call up the slides and coordinate them with the motion control software. Anyone with a background in CNC knows about Mach3 but for the rest of you, It's a program that uses something called g-code to control a CNC machine. I own a copy but wasn't planning on using it for this project because it is a significant investment (for a hobbyist) and I wanted to keep the final build cost as low as possible. The really cool thing about Jon's solution is that he uses Mach3's scripting ability (something I hadn't even looked at) to do all the work. That means that the trial version which has a limit of 500 lines of code will work because the script doesn't actually need to run any g-code. Mach uses Cypress Enable a much more (I think) intuitive scripting. After studying Jon's script and going over the Cypress manual I was able to make a few tweaks and removed the need (I hope) for the custom animations in PowerPoint. Now you just place a blank slide as slide #1 and Mach3 will alternate the blank slide with the slice slides. Of course I still need to set the exposure and delay times. That can only be determined once the test bed is up and running and I have some resin to test.

I'll post all the code when I'm sure it isn't buggy.