Tuesday, May 31, 2011

EEVblog #175 - Project Sagan

Now, I follow this electronics vlog because it's quite interesting and sometimes entertaining too. And really, the only good one out there about electronics?.. The guy also works on this full time, and quit his regular job to do it, and that is quite respectful. Anyway, the latest was pretty funny and unexpected.

Monday, May 30, 2011

3D Printing Meetup

In case you missed it, there was a meetup about 3D Printing about a month ago... Quite interesting...
More about it here: http://www.publicknowledge.org/blog/3ddc-video

Fast access to videos:

3D/DC Highlights:

3D/DC Panel One: Meet the Makers

3D/DC Panel Two: How a Promising Technology Might Get Shelved

Thursday, May 26, 2011

More Advanced 3D Print Succeeded (And Steps Per Unit)

I corrected a few parameters in the MakerGear's Arduino firmware so X and Y would match what was designed. Even the extruder configuration was updated. This information is something I wished existed, but as I couldn't find any, I asked around and collected this to let it make sense for me and other people. This is how it was calculated:

float x_steps_per_unit = 160; // (360 / 0.9) * 16 * (5 * 8)

Values explained:
  • 360 - This is how many degrees there is in a circle to make a loop (full rotation).
  • 0.9 - This is the motor's Step Angle.
  • 16 - Microsteps (1/16).
  • 5 - Length/Pitch between cogs (mm).
  • 8 - Amount of cogs in the pulley.

float y_steps_per_unit = 160; // Same as x.

float z_steps_per_unit = 2560; // ((360 / 1.8) * 16 ) / 1.25

Values explained:
  • 360 - This is how many degrees there is in a circle to make a loop (full rotation).
  • 1.8 - This is the motor's Step Angle.
  • 16 - Microsteps (1/16).
  • 1.25 - The thread pitch of the z-threaded rod.

For e, the extruder, I had 1479.31034482758620689655, which was basically calculated like this:
  • Mark up 100mm on the filament from the extruder.
  • Set a suitable speed in repsnapper, so the filament doesn't slip.
  • Set 100mm in length to extrude.
  • Press "Extrude" and let it do it's work.
  • Calculate new value by using the value set and divide with, as exact as possible, how much filament actually was pulled in and multiply that with 100.
This should give you a value closer to the truth. I did this a few times, and ended up with that value, 1479.31...

However, after a recent chat in the support channel this is what I use instead:

(360 / 1.8) * 16 * (13.6 / 31) = 1403.9
float e_steps_per_unit = 1403.9;

Values explained:
  • 360 - This is how many degrees there is in a circle to make a loop (full rotation).
  • 1.8 - This is the motor's Step Angle.
  • 13.6 - Gear Ratio (13.6:1)
  • 31 - Circumference in mm.

This value is probably pretty much spot on. The following is printed using these values:

And ended up like this:

It's not totally perfect, as you can find a few filament loops here and there. They are there mostly because it can't print in the air... Still, this can probably be tweaked some more... but, not bad. Not bad at all.

There have been issues with the filament not sticking and clogging up to the nozzle, ruin the print when the nozzle came back for round two - the next Z layer. I tried to heat the bed higher than 100C, but it doesn't seem to go much higher than that. Or, it will take crazy longer time. Either way, I used Acetone on the board and I believe this actually is the main reason the filament stuck straight away for this print. Well, basically there are 3 parameters that needs to be great.

  • Height from the nozzle to the heatbed.
    This is around 2mm...
  • Temperature of the filament. I used 220C this time. Didn't seem to "drop" out as much when the extruder was idling.
  • Heatbed hot enough (May not be needed for PLA plastic). I had close to 100C. 95C+. Seems hot enough. At least for this ABS print. It didn't want to stick before even if the heatbed was around this temperature, but I'm guessing this is because of all the in-purities from fingers and such.

Again, I'm guessing the Acetone helped a lot by cleaning away all finger fat on the bed, and this time around I also heated the bed way before the extruder. The bed takes longer to reach the higher temperatures anyway, but it's probably a good idea to heat that up well enough before starting the extruder.

I will probably do a post later on with files and parameters collected, for newcomers to start easier. I wanted this information about the "steps per unit" out already though as it's quite impossible to find using your favorite search engine...

Tuesday, May 17, 2011

First Acceptable 3D Print!

Look at that people!

After A LOT of tweaking and testing, this is what I ended up with. Naturally, I'm not done yet, but I seem to have the basics down now!

This camera I used is better too apparently...

What you see there is a test rectangle made in OpenSCAD using this:

difference() {

cube([100,100,10], center = true);

cube([99, 99, 20], center = true);


.. and this is printed with 230C extruder, and heatbed at 80C. Red ABS plastic. The scaling for X and Y isn't proper yet, so that is next on the ToDo list... Z seems pretty correct. Measured 10.04mm on this one. X and Y here is 38mm... should have been around 100mm...

A BIG thanks goes to Rick, OhmEye, tommyc, Kliment, ScribbleJ, prusajr and everybody else in #makergearv2 and #reprap channel at FreeNode! Been hugely helpful and patient! I'm not done yet, but this sure is a great milestone!

Sunday, May 15, 2011

3D Printing Software Is Currently A Mess

So, I had a few setbacks. Two MOSFETs burned up, and somewhat damaged the PCB board. A black gooey substance leaked out... not a good sign. I'm still not sure what is the cause of this as this is something that shouldn't happen. Actually, the PCB board have three places you can hook up to 12V. I currently only need 2. So, I basically switched from "D8" to "D10", and the MOSFET there didn't burn up. It's hot, but still seems to manage it. D8, D9 and D10 on the PCB board are used for getting 12V to something. Obviously, the extruder needs power, and then the heatbed. Then you can add a fan or something if you want to. So, not sure what happened at "D8", as it obviously works at "D10" which I currently use for the heatbed.

I also had some odd issue where the platform wasn't moving in X when printing... It moved in Z and Y, and I could move the platform quite easily both by hand and using the "Interactive" tab in repsnapper.. but after heating up extruder and the bed, and pressing "Print", it got stuck and wouldn't move in X, even though it seemed the motor tried to move the platform. Maybe it had too little power (amps) when everything was on.. could be wrong firmware, or the generated gcode was bad... not sure. Since I did it all in repsnapper (even generating the gcode), I'm quite sure the main problem was that this version of repsnapper couldn't print!

There were a lot of filament waste too, as I really though it was a problem when the filament curled up and got stuck on the side of the nozzle. I though it was supposed to come straight down. Particularly ABS plastic. But, apparently this is rather normal, and really, the distance to the surface will be so short, that it won't be able to curl up like it did. So, time wasted unmounting the extruder a few times, and seeing that it looked fine. No leakage in the heated barrel either. Also, you need to tweak the spring mechanism that holds the filament in the extruder. Too loose, and there isn't enough force to hold it. Too tight, and the filament will slip... or, well this is more a problem if the extruder moves too fast...

There are many different firmwares and different versions of the software used to print and slice (break down an object into layers). I liked "repsnapper" as it was more intuitive, but.. well, if you go to: http://reprap.org/wiki/RepSnapper_Manual:Introduction and use https://github.com/timschmidt/repsnapper which is supposed to be the one you should use (as it's the one currently being updated), you are surprised by print not working. Even when trying to build the other (http://svn.kulitorum.com/RepSnapper), you get a message to use the https://github.com/timschmidt/repsnapper one). I checked out the "master" and then went back a few months (git hash: 83d3017625f5e65116da80f8fcc7df7f36737b3f), to get a working version. However, I noticed that that version isn't totally correct either as under the "Print" tab there was supposed to be a slider for changing the speed of the extruder. And, in that version I had checked out, no slider can be found. Confusing. Especially for me as a Linux (Ubuntu) user. Windows users have a prebuild one already...

So, for repsnapper, I now use http://svn.kulitorum.com/RepSnapper, ignoring the message of it being deprecated. And, voilĂ ! Now I seem to use what everybody else are assuming you are using... If you use the Windows version, you are using this version too. So, to sum that up:

USE: http://svn.kulitorum.com/RepSnapper until https://github.com/timschmidt/repsnapper is better!

And then we have skeinforge... The UI isn't particularly beautiful, and it's rather confusing and not as intuitive as repsnapper. However, one can see it being useful, as there are many more options there, so you really have control over many things. Besides, it's supposedly generates better gcode than repsnapper as well. And, skeinforge is only for generating gcode, and nothing else, which is good, as it concentrates on being good at that.

I was using version 039, and apparently that doesn't generate "E" for extrusion per default (for the G1 command). So, it would basically just move the extruder around, not really extrude anything. Now, I've updated to 040 (or 041, not sure which one to use as with 041 the pane was empty under the "Profile" tab...).

Thankfully, the community is really helpful, and everybody agrees all this being bad and I'm guessing all this will be better over time. But as for now, one have to see the software being in alpha stage, although skeinforge feels quite matured (once you get used to it).

Anyway, I'm currently using this to testprint with:

I use skeinforge to generate the gcode. Then I use http://svn.kulitorum.com/RepSnapper to print with by just loading the generated gcode in there. I can also see what's going in real-time with the temperature, and, there is a handy log and "Interactive" buttons. Funny enough, it's not showing the bed's temperature, only the extruder's. The other repsnapper I used (the one with hash mentioned) had both extruder and bed temperature showing). It's really starting to take shape now though. Motors seem to behave as they should.

So, currently, I'm tweaking settings in skeinforge, trying to end up having a nice print following this handy guide: http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&t=256...

Don't get me wrong, I appreciate all the work people have put into repsnapper and skeinforge! I just wished it was easier to get started. I will probably do a post later with everything summed up nicely so newcomers to the 3D printing community have an easier start.

Friday, May 13, 2011

Google I/O 2011

As I though this is somewhat related to what I do, I though I post about it here... I'm not sure what to think about it though... Wouldn't you want the game to show up in the bigger display on the bikescreen? (position is set in the video, so you don't start at the beginning)

This is also interesting (position is set in the video, so you don't start at the beginning):

Wednesday, May 4, 2011

High Resolution 3D Printing

Well, I came a cross this interesting project just now... http://3dhomemade.blogspot.com/

Possible my next step, hehe... Seems it won't really be available until late this year... or something.. worth keeping an eye on though! Seems the guy wants it for the 3D printing community... not sure if that means everything will be open though...

Sunday, May 1, 2011

Prusa Mendel Almost Assembled

Man, this is fun! Sure, it takes time, but you are also building a cool machine from scratch! I take it easy, and think through every step as much as I can in my head, before actually doing it. You can come up with a few tweaks here and there, and really, you don't have to do exactly what documentation says. I mean, as long as you know what you are doing, you can do things differently.
These differences may even be for the better... For now though, I will just build this to make it work printing. Then I will probably optimize some. Like rerouting wires in the base and just basically clean it up so it looks nice too. And maybe also add a fan and end-stops for Max values (currently you use for Min values, which means motors will stop at basically point 0,0,0 (Home position). You may also want this "Max value" so you for instance can let the Z motor go all the way to the top when a print is done for example). I just love the flexibility you have with this open source/hardware 3D printer!

There have been a few bumps, and redoing during this time, but it's really stimulating to have eureka moments every now and then when you reach certain milestones. I had one when the motors worked, and the first time you move the platform back and forth, you do it for like 10 minutes because it's exhilarating that it works. And just now I used repsnapper to turn the heat on in the nozzle (extruder, hot-end), and checking the temperature. And I was happy to see it worked! It's important to test these things, especially the nozzle because if it gets too hot, that ain't good. I was afraid the thermistor (the component that reads temperature) wasn't properly installed with the crimps. But thankfully it works as it should! Would have been a lot of extra work to expose that part again, as it's in there, in that black thing you see in the picture...

There is a function in repsnapper to set the heat to a certain value, and I was amazed how well it worked. I read the thermistor value periodically, and could see the temperature increase to the set value (in this case 100 degrees Celsius). Then, it went little over (to 110C), and then went down to the set value (100C) and stayed around there. Turning the heat off, and I could also see the temperature drop... I also tested just unplugging the USB to the Arduino, and was glad to see that it means power off to the nozzle as well. That is good news as that means the heat won't continue to increase if you just unplugged.

I was also glad to see end-stops are working. These are important so the motors will stop and also, so it can "go home" and the printer knows where it is, and can use that as a reference for printing.

You communicate over serial with the Arduino 2560, and here are some useful starter commands for reference:

M998 - Turn on pull-up resistors. (Needed for M999)
M999 - Get X and Y endstop values. (1 means not triggered, 0 means triggered)

M105 - Read thermistor temperatures

And here is a list of many more: http://reprap.org/wiki/GCodes

More images and updates to come.... I basically only have to connect the heatbed (the big red thing you see in the picture), and then I'm off to actually try to print something...