Building the C-Bot 3D printer: Part 25 : Catastrophic failure

Jump to C-Bot blog index to see all the posts.


I figured at some point something would go wrong:  It finally did.

I’d noticed the stepper for the Bowden extruder had been running really hot.  Hot to the touch, and way hotter than the other steppers.  I had started by setting it’s reference voltage to .6v (like all the others), but it didn’t have enough ‘oomph’ to drive the filament through the extruder.  So I increased the voltage until it started behaving, which ended up being around 1.2v (2x as much as recommended…).  I’m sure this contributed to the over-heating.  But I wasn’t sure what else to do:  Any lower voltage wouldn’t extrude properly.

I’d been pointing a small fan at the stepper, and this seemed to keep it’s temp at a reasonable (but still hot) temp.  And since things had been going so well I decided to do my first “big print”:  Fired it off, and for the first 20 minutes all was well.  I decided to take a walk.  When I returned an hour later, to my surprise it was air-printing:  I found this really surprising with a Bowden (heat-creep on my Replicator 1’s direct-drive can cause this more easily).  The Bowden stepper was still turning, so I figured some how it had notched the filament.  But there was no notch, it just wasn’t extruding.  That’s when I noticed this:

melty_bend2

Top view, looking ‘down’.

 

When I went to touch the stepper, it was burning hot:  I had forgot to turn on my cooling fan, and the stepper had gotten so hot it melted the printed Bowden mechanism :(

The great thing about having two printers is you’re always able to print, even if one breaks:  I re-printed the melted bits and after two hours bolted them back on.  But I obviously still needed to do something about the heat.  I was perplexed why this one stepper needed 2x the voltage of the others.  So using the techniques mentioned before, I reset the reference voltage on the DRV8825 back to .6v, and tried extruding:  I worked fine.  Huh?

I’ve noticed while building this bot that stuff like this often happens:  I’ll set some value that doesn’t seem right, but works.  A day later, I’ll reset it to the ‘correct’ value, and then it works as expected.  I don’t know how to explain this, but it’s not the first time it’s happened.

But it’s printing great now:  I’m an hour back into the ‘big print’, extrusion is good, stepper is ‘normal temp’.

Live and learn!


 

Jump to C-Bot blog index to see all the posts.

Building the C-Bot 3D printer: Part 24 : Tuning print settings for the Volcano

Jump to C-Bot blog index to see all the posts.


(Note:  Since I authored this, I have updated  Volcano print settings blogged about here)

Now that the cooling fans are installed and I can start tuning my print settings.  I’ve been using a .4mm nozzle on my Replicator 1 for the past 3 1/4 years:  The nozzle I have installed on my E3d V6 Volcano is 1mm (currently:  I have other nozzle sizes from .6mm -> 1.2mm).  And getting this thing to print right has been… much different than I’m used to.  Mainly first layer adhesion.

I spent the bulk of this 4th of July printing off a variety of 1 and 2 cm calibration cubes getting things tuned in.  Below are my current findings on what makes the Volcano happy using my slicing software, Simplify 3D.  Note, I’ve been searching all over the web for ‘volcano print settings’, and really haven’t found anything.

  • Print surface:  Removable glass plate on heated bed.  I mix 1 part wood glue with 1 part water, use a paper towel to slather the glass.  After that dries, do it again.  PLA loves to stick to it.  I’ve gotten far better results with this than blue painters tape.
  • Filament:  “Natural” PLA, 1.75 mm, manufactured by Esun.
  • I also use a ‘filament-cleaner’:  Sponge soaked in some vegetable oil the pre-extruded filament is pulled through before it hits the Bowden drive.  I’ve had good results on my Replicator 1 using these.  Note:  Do not over-soak!  I ended up with a pool of oil on my build platform nothing would stick to :(
  • Notable Slicer Settings:
    • Layer height:  500 micron/.5mm : Half the width of the 1mm nozzle.
    • Print speed:  30mm/sec.  Just a starting point.  I’ve gotten good results with up to 45mm/sec, but around 60mm/sec (based on the below settings) print quality starts to suffer.  This sounds terribly slow considering I can get good results out of my Replicator 1 at 120mm/sec, but it’s weird to think this thing still prints faster:  A solid 1cm calibration cube takes 2 minutes.  A solid 2cm cube takes 8 minutes.
    • Extrusion Multipler : Set to .9:  Normally on my Rep1 with a .4mm nozzle I leave this at 1.0 for PLA.  But it seems the bigger the nozzle the more it wants to over-extrude, and I’ve found success with this value.
    • Extrusion Width : 1.0, the same as the nozzle width.
    • Retraction:  Had a lot of issues with the nozzle drooling all over the place, but based on these settings it’s behaving much better:
      • Retract distance: 10mm
      • Retract vertical lift : 0 : I had set this to .25, but the constant lowering/raising of the bed caused too much commotion for my taste
      • Retraction speed : 45mm/sec
      • Coast at end:  Off.  I had set this to .5mm, which worked good on calibration cubes, but on larger prints with a single shell, slight gaps started to show up.
      • Wipe Nozzle : Off.
    • Ooze Control Behavior:
      • Only retract when crossing open spaces:  True
      • Force Retraction Between Layers : True : This is important, without it, blobs would show up on the perimeter.
      • Only wipe extruder for outer-most perimeters : True : Only matters if you’re doing ‘wipe’ (which I currently have disabled).
    • First Layer Settings : These were really important to get right:
      • First Layer Height : 75% : Anything less than this would squish the filament too much, and cause it to overlap/delaminate corresponding extrusions.
      • First Layer Width : 90% : Larger values contributed to the above issue.
      • First Layer Speed: 50%
    • Temperature:
      • Extruder: 200 deg
      • Heated Bed : 60 deg : Event though this is PLA, heating up the bed really helped the first layer stick better.  Without heating the bed, the extruded filament would just sort of ‘bounce’ off the platform, curling up into the air.
    • Cooling : Turing on the filament cooling fans starting at layer 2.  Note, so much filament is coming out, I think I need more powerful fans… even with two I think it could be cooled down faster.

Based on those settings I was getting calibration cubes printed within five-hundreths of a mm tolerance, not too bad IMO.  I was also able to successfully knock out single and dual-shell cube prints with a variety of infill that feel strong enough to drive a car over.  Really looking to printing something ‘big’!

But in the meantime, the 2cm calibration cube’s aren’t looking so bad either:

calibration cube2

2cm cube, 500 micron, courtesy of the Volcano


Jump to C-Bot blog index to see all the posts.

Building the C-Bot 3D printer: Part 23 : Filament Cooling Fans

Jump to C-Bot blog index to see all the posts.


(Note:  Since I posted this, I upgraded the fans to more powerful models.  See that here.)

Total time:  About 2 hours.

Based on previously printed calibration cubes, I knew I couldn’t do any serious printing until I got my filament coolers installed:  I printed out the pair of them, bolted some 12v 40mm fans to them, ran the wires, and quickly realized I didn’t know how to tell Marlin & the Rumba board they existed.

Long story short, this is how I wired all the fans on the board:

  • The extruder cooler fan is plugged into the Rumba’s ‘Extruder2’ / pin 6 (I hijacked it, since I don’t have multiple extruders).
  • The filament cooler fans (one on each side of the hot-end, that this post is about) are plugged into the Rumba’s ‘Fan0’ / pin 7.
  • The two case fans (that cool the stepper drivers) are plugged into the Rumba’s ‘Fan1’ / pin 8.

Then in Marlin:

Configuration_adv.h : 
#define CONTROLLERFAN_PIN 8 // Rumba Fan1:  Case stepper driver cooling fan
#define EXTRUDER_0_AUTO_FAN_PIN 6 // Rumba Extruder2 : Extruder cooling fan

pins_RUMBA.h:
#define FAN_PIN 7 // Rumba Fan0 : Filament cooling fan
Once that was uploaded, the filament coolers got to work immediately:
filamentCooler2
My only concern is they don’t feel like they have enough ‘oomph’:  They’re 12v, .1A, if I buy any more in the future I think I’ll look for something with a higher CFM rating.  But for the time being, they work!  And as you see, some real printing is starting to happen…

Jump to C-Bot blog index to see all the posts.

Building the C-Bot 3D printer: Part 22 : Final wiring, near final bot

Jump to C-Bot blog index to see all the posts.


Over Fri, Sat & Sun I probably spent close to 14 hours doing the final wiring:  So much measuring, cutting, splicing, heat-shrinking, wire-routing, etc.  But man it’s pretty thing when complete.  And it even turned on when I plugged it in :)

Below are a few pics:  I still need to make a tray for the power supply, print a case for the LCD, and finish up the dual filament coolers (when the fans show up), but for the most part it’s complete, and ready for tuning!


Jump to C-Bot blog index to see all the posts.

Building the C-Bot 3D printer: Part 21 : Software Day 4: PID Autotune & start/end G-Code

Jump to C-Bot blog index to see all the posts.


Total time : 2.5 hours

Even though I need to really un-spaghetti the machine and do the final wiring, I can’t help but want to print more, especially since I installed & tuned the DRV8825 stepper drivers:  I want to make sure they actually work!

Start & End G-Code

At the same time, I wanted to create better start & end G-Code for the bot:  I slice & print using Simplify 3D (S3D):  When you create a new custom printer profile, for the start G-Code, all it does is a G28:  Auto-home.  It seems to take care of the extruder and bed heating for you.

In addition, even though I’d previously figured out how in S3D you can set ‘global G-Code offsets’ in its G-Code tab, which lets you define the offset between home and the build platform, I thought it’d be better to set it in the start G-Code instead. I don’t know why, but it feels safer in there…

I’ve never done any start\end G-Code ‘programming’ before. The start/end G-Code for my Replicator1 was already setup.  So heading off to the ‘G-Code in Marlin‘ page, I researched what I wanted it to do on start:

  • Lower the bed a bit just in-case it hadn’t before
  • Home all axes
  • Warm up the extruder (and eventually heated bed)
  • Purge the nozzle
  • Move nozzle to edge of the bed and zero it (per the above paragraph).
  • Start print

And on end:

  • Turn off extruder and bed heating
  • Lower the z-platform slightly
  • Home XY
  • Disable motors

Another great resource is S3D itself:  Once you’ve connected to your machine, and are in the Machine Control Panel, any commands you issue show up in the Communication log:  So I set about doing each step manually, then creating the G-Code script for them.

What I came up with is currently below.  I’m sure this will change in the future.  But just in case my computer explodes I’ll have a backup here.  Note that [stuff in brackets] is S3D’s own internal syntax for embedding variables to help make the gcode more temperature agnostic.  Pretty nice.

Start G-Code:

G92 Z0 ; Set current z position to zero.
G1 Z20 ; Lower Z to be safe 20mm.
G28 ; Safe Homing of All Axes
M104 [extruder0_temperature] T0 ; Set extruder targe temp
M109 S[extruder0_temperature] T0 ; Wait for extruder current temp to reach target temp.
G1 E50.0 F600 ; Purge nozzle 50mm at 10mm/sec
G92 E0 ; zero extruder
G1 X2 Y26 ; Move nozzle to left front corner of build platform.
G92 X0 Y0 ; Zero X & Y here to start the build.

End G-Code:

M104 S0 ; turn off extruder
M140 S0 ; turn off bed
G92 Z0 ; Set current z position to zero.
G1 Z10 ; Lower Z to be safe 10mm.
G28 X0 Y0 ; Home XY
M84 ; disable motors

So I fired off my first print over USB, and ran into all sorts of weird problems over the next hour.  Long story short:

Gotchas:

  • Every time I change a setting in S3D and want to re-print, I need to turn my printer off and on.  I don’t know if this is a S3D bug, a Rumba bug, a Marlin bug, or what.  But if I don’t do this, the start G-Code won’t properly execute.  Side effects include it not heating and immediately starting a print, or heating up but then never beginning the print after it.
  • Once that was resolved, for the longest time I couldn’t get the filament to stick to the bed:  it would just curl up around the extruder.  I finally realized that a new profile I’d setup had my layer height set to 200 micron… printing with a 1mm wide Volcano nozzle:  Once I set that back to 500 micron the printing had no problems.
  • I really need to get a print-cooler fan installed:  I built a custom one for my Replicator 1 which has really helped.  When I finally got my printing working, and was working on a 2cm test cube, the sides looked pretty good for effectively my second print:
    • not too bad
  • But when it got to the top, the whole print was so hot that the extruded top layer filaments literally started grabbing & collapsing the side-walls.  Plus when I went to remove it when the print was done, it was soft like warm gummy bear:
    • aaaugh
  • Top priority: Get print cooler fan installed.  Or maybe a jet of liquid nitrogen…. :)

PID Autotune:


Update:  Since authoring this post I have switched my electronics to RADDS, and my firmware to Repetier.  See the “Part 31 post” for the latest on it.


 

While my extruder has been heating up fine, I noticed that as it approaches the target temp (say, 200c) it really slows down for the last few degrees, and takes a long time getting to the final temp.  I remember that when I switched my Replicator 2x to Sailfish firmware, the extruders stopped heating up correctly, and talking on the forums they told me I needed to update my PID settings.

PID stands for “proportional-integral-derivative“, something I did not learn about in math class.  But in a nutshell it’s a way via the maths to reach a target value smoothly and quickly, without banging/oscillating all over the place.  And luckily, Marlin comes with a PID autotune feature you can run as G-Code directly from S3D (or any software that can issue G-Code):

M303 E0 S200 C8

Fire that off when you extruder is cold, and a few minutes later it’ll spit out something that looks like this:

Recv:  bias: 213 d: 41 min: 199.38 max: 200.71
Recv:  Ku: 77.96 Tu: 13.40
Recv:  Classic PID
Recv:  Kp: 46.77
Recv:  Ki: 6.98
Recv:  Kd: 78.32
Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from above into Configuration.h

And those values you then enter back into Marlin’s Configuration.h file.

These were my original values when I authored this blog post:

#define DEFAULT_Kp 46.15
#define DEFAULT_Ki 5.10
#define DEFAULT_Kd 104.32

UPDATE (2016-01-13) :  But I found when my powerful 24cmf cooling fan would kick on to cool the Volcano nozzle, the temp would drop, and it would take a loooong time trying to catch back up.  So instead, I cranked my fan to 100% (255) and re-running the auto-pid gave me the values in the code snatch two paragraphs up.

I never timed the nozzle warmup before, my E3d-V6 Volcano now heats up from cold to 200c in 2min 10 seconds:  Not too bad.

I’ve still not got my heated bed soldered up yet (waiting on 10-gauge wire in the mail), but I’ll run this again on the bed when it’s ready.


Jump to C-Bot blog index to see all the posts.