Archive for the ‘ Electronics ’ Category

New 3D Print : Eiffel Tower

I’d found a great model if the Eiffel Tower on Thingiverse:  I’d wanted to print it on my C-Bot for some time (since it seemed like a great way to maximize its build volume), but I knew with all the required retractions, the Bowden extruder would never handle it.  After recently switching to a direct-drive extruder, it seemed approachable again.  And with the recent attacks in Paris, I felt a desire to somehow pay my respects to that beautiful city, and landmark.

eiffel_tower

It didn’t go entirely smoothly though:  The extruder jammed when it hit first landing… I think all the super small handrails caused possible retraction issues, and the filament notched.  But I was able to reslice/reprint it right at that point, and glue the top on.  You’ll see this failure in the above movie… which was my first time making a timelapse in Octoprint, so the quality is a bit low as I figure out the settings.

The print looks fantastic, especially in the sun or with a light shining on it at night.  Really happy with the results.

Print stats:

  • Model height:  20″
  • Print time: 69 hours (yes, 69 hours)
  • 150 micron layer height
  • 6mm E3D-v6 Volcano nozzle
  • Sliced in Simplify3D
  • Just over a pound of material
  • Printed at 60mm/sec
  • Makergeeks white PLA, extruded at 230 degrees (per their recommendation)

Building the C-Bot 3D printer: Part 31 : Setting up Octoprint

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


My previous post talks about the specifics of getting Octoprint setup, in general.  Here, I’ll talk about actually integrating it with my C-Bot 3D printer.

Up to this point I had a Raspberry Pi (upgraded to a v2 at this point) connected to my router via a USB wifi dongle, with a RaspberryPi Camera hooked to it, connected via a 3′ ribbon cable.  This was all sitting like a pile of spaghetti on my table.  I needed a way to get all this strapped to the C-Bot itself, which is what this post mainly talks about.  I should comment that during this process I gave up on the USB wifi dongle and switched to direct ethernet:  Just too many problems getting the wifi to stream the picam correctly.

Before we get into it, the end result:

3D Printed Items:

I needed a way to mount both the RPi2 to the frame of the C-Bot, and have some sort of adjustable mount for the camera.  Both of the below items were printed on my Makerbot Replicator 1.

RPi2 case:  After searching Thingiverse, I found this great looking “Raspberry Pi 2/B+ case with VESA mounts and more” file:  It both looks slick, has a slot for the RPiCam ribbon cable, and had holes to bolt it directly into the OpenBuilds V-Slot.  I should note the holes provided were too small for the V-Slot bolts:  I had to drill them out slightly, but once that was done it was easily mounted (see above pic, it sits on the right-front vertical arm).

PiCam Mount:  After more Thingiverse searching, I tracked down “B+ PiCam Ultimaker 2 timelapse harness” : This is both an adjustable arm to hold the cam, and a separate bracket for the cam:  I printed out all the files needed for the cam, and realized that it didn’t fit the 20×40 V-Slot: The ‘hook front’ piece was too wide to clamp properly.  I’d figured this would be the case, and created a modified version in Maya to narrow it, which is currently installed on the bot.  But if you don’t want to have to deal with this, I realized you can get a pack of small sticky-notes, and just tear-off the appropriate amount to create an easy-sized shim.  You can download my modified version on Thingiverse here.

Assembly:

  • I bolted the RPi2 case to the right-front 20×40 V-Slot extrusion.
  • I attached the PiCam mount on the right side of the top-front x-extrusion.  Zip-tied it down for safety.
  • My Rumba’s USB now runs directly into the Raspberry Pi 2.

Issues:

  • RPiCam ribbon:  Not easy to route, easy to catch things on.
  • Power to the RPi, the way I mounted it sticks out the side of the bot.  Easy to catch things on.

Final thoughts:  I’ve literally just started printing with it:  I usually print from either the C-Bot’s LCD, or from Simplify3D : So this is a whole new interface to learn (although, obviously similar to what I’m used to).  But I’m excited to start nocking out some timelapse movies :)

Setting up OctoPrint

OctoPiThis post will be a continual scratchpad of info as I use Octoprint…

I’ve toyed around with OctoPrint in the past:  Before I built the C-Bot I was seriously considering buying a Type A Machines Series 1 printer:  They use OctoPrint, so I’d installed it on a spare Raspberry Pi and played around with it and my Replicator 1.

With the C-Bot, based on its large build size, I want a way to be able to remotely track & control my prints:  If I’m not around I can check up on them, pause\stop them if needed in case of failure.  OctoPrint is perfect for this.  So I decided to finally get it installed and configured on my Raspberry Pi.

Below are the rough steps I went though to make this happen.  It’s still not quite ready yet for primetime:  I need a way to get the Raspberry Pi & it’s camera to correctly point at the build plate, and a slick case\mount to stick the RPi to the printer (see the next post).  But technically I have everything up and running now.

Update:  Note that all the trouble I had at any step with the install stemmed in some way from trying to configure wifi successfully:  I later switched over to ethernet, and all my problems went away.

My Tech Specs:

Setup Process:

  • Install OctoPi disk image.
    • GitHub : Download & install docs I followed.  See “Problems Encountered” below….
  • If you plan on accessing OctoPrint via the web, make sure that “Access Control” is on (which it is by default with any modern install of OctoPi), and you have a valid login.  See here.  First line of defense keeping people from taking control of your printer remotely.
  • In your router, give the RPi a static IP.  This allows you to log in consistently (locally or remotely), without worrying that your router can dynamically change the IP at some point.
    • While it was connected to my router (provided via Comcast), via the router’s control panel, I found and stored it’s MAC address.
    • Next I had to make my router “forget” the RPi:  For me, I had to first turn off the RPi, then in the router “block” it, then “delete it”.
    • With the RPi unconnected, using its MAC address I was able to add it it with a staticIP (My static range was 10.0.0.253+), rather than DHCP.
  • To allow for remote (web-based) control, in the router control panel, setup port forwarding based on that static IP, for port 80.
  • To view OctoPrint locally, I can browse directly to the static IP I assigned.  Note I was never able to go to hoctopi.local/ either over ethernet of wifi:  I get a constant “webpage not available”.
  • To view Octoprint over the web, I use a search like “what’s my ipv4” to find my homes IPv4 address.  Plugging that back into the browser takes me directly to the Octoprint control panel (presuming it’s on).
  • I have yet to setup a Dynamic DNS service for my IP.
  • Yet to mess with any of the Haproxy stuff.

Configuring the PiCam:

The defaults for the RaspberyPi Cam appear to be 640×480, I’m not sure of the framerate.  That’s a good base starting point, but it can be better.

  • I edited/boot/octopi.txt to set the res to 1280×720 (720p) at 30fps:  The camera tech-specs claim it can do this at 60fps, but I think that’s unnecessary for 3d printing.
  • In Octoprint, in Settings, under Webcam:
    • Set the ‘Timelapse bitrate’ to 10000k, to improve the timelapse movie quality after conversion.
    • Set ‘FFMPEG threads’ to 4 (since I have a RPi 2B, that is quad-core) : This will make the timelapse movie creation faster.
  • Next, I need to get a pair of +2 reading glasses to help bring the focal distance in.  Right now it seems to focus best at the rear of my printbed.

Problems Encountered:

  • I had decided to update my OctoPi image to current since the last install I had done was a good ten months ago:
    • After following all the install instructions, I was unable to get wifi working.
    • Based on the install instructions (here, under “How To Use It”), they have you modifying the octopi-network.txt file on the SD card:  I’m on a Mac, and used TextEdit to do this.
    • After three hours of being unable to connect over wifi, I finally dug out my spare monitor and keyboard, so I could log into the RPi directly.
    • I used nano to edit octopi-network.txt:  To my surprise, the password and ssid values, that should have been surrounded in quotes “”, were instead surrounded by solid white squares:  Some weird special character:  Changing these to “real quote characters” and rebooting fixed the connection issues.  Thanks a lot Apple…
  • I get terrible camera refresh when connected over wifi:  Maybe 1 new frame every… 30 seconds?  Unusable.  I pay for a smoking hot internet connection, so something is amiss.  My google ping is around 900 ms.  If I switch over to ethernet the cam us up to 1-5fps (just guessing) and my google ping is 10-20ms:  Actually usable.  In either case however, the machine control panel is responsive:  I’m able to remote control it without much lag.  At any rate, I ordered a new wifi adaptor (the one listed above), and I immediately got acceptable refresh:  A 1-2 second lag with 5-10fps.  Which wifi dongle you get really matters…
    • Update:  After two days, my new wifi dongle started behaving the exact same:  Super slow refresh.  I had to drop my capture rate to 3fps, at 640×480 for it to behave.  Any faster capture rate would cause increasingly bad lag in the view.  So I went out, got a 50′ cat5 cable, switched to ethernet, and problem solved.  Super speedy camera refresh.  Ethernet FTW.
  • On a number of occasions the PiCam wouldn’t turn on.  Long story short:  The 3d printed bracket it fits into was causing the small connector on the front of the cam to actually disconnect from the cam’s PCB.
  • For the longest time I couldn’t get OctoPrint to shutdown via its ‘System’ menu.  All the other buttons worked except those.  Long story short:  It appaered that having Chrome auto-log me in was causing this:  Logging out & logging back in (without ‘remember me’ checked) seems to have fixed it.

Links:

FAQ Topics:

Building the C-Bot 3D printer: Part 30 : Switching from Bowden to Direct Drive

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


The original design for the C-Bot by Carl Feniak had the printer setup with a Bowden extruder: The stepper pushing the filament to the hotend sat off to the side of the printer, thus removing mass from the XY/hotend gantry:  The idea is that if there is less moving mass, you can print faster with fewer artifacts (like “ringing” or “ghosting”).  For comparison, my Makerbot Replicator1 (or say, an Ultimaker) is ‘direct-drive’: Its extruder sits directly on the XY gantry pulling filament into the hotend.  This is what I had experience with when I started building the C-Bot, but the idea of learning something new (the Bowden setup) was interesting to me, so I went with it.

Fast-forward to now:  Not a fan of the Bowden setup, at least when used within the specs of my printer design:  I have a E3D-v6 Volcano nozzle (I’ve used .6mm & 1.0mm nozzles) on my bot, and that coupled with the Bowden design have had some quality issues I’ve been unable to overcome despite hours (days…) of test printing.  Specifically “blobs\zits” & stringing.  My guess is, simply too much pressure builds up in the (long) Bowden tube during an extrude move, so when the print goes to do a retraction, a blob still shoots out and gums-up the print, or strings out during movement.  Have not been happy with this behavior, and have been unable to remove it entirely.  Have greatly reduced it, but it’s always there… lurking…

And during this tuning process I came to the realization that a Bowden doesn’t really help things when you’re using a Volcano nozzle:  The benefit of the Bowden, again, is that it removes moving mass from the hotend, allowing you to print at faster speeds.  But with a Volcano, you actually end up printing at much lower speeds, just a greatly increased volume\flowrate.  Here’s some maths:

  • My Replicator1, with a .4mm nozzle, printing at 200 microns (‘medium res’ for that nozzle), at 120mm/sec, has a flowrate of 9.6 mm3/sec (mm cubed/sec).
  • The C-Bot, with a 1mm Volcano nozzle, printing at 500 microns (‘medium res’ for that nozzle) at 45mm/sec has a flowrate of 22.5 mm3/sec.

The C-bot printing at a little over 1/3 the speed of the Rep1, but over 2x faster print times overall (based on the flowrate).  And when you’re printing that slow, I personally don’t feel the moving mass has such a big effect.

On the flipside, if you’re building one of these bots and running a .4mm nozzle, the Bowden is probably ok:  Smaller nozzle, less pressure, less blobs & stringing.  But since I’ve never actually used one on my bot, this is only a guess.

Time goes by…

After some discussion on the Forms (starting on this page, where you can also find the files for download, and my detailed comments on its design), Carl created a new “beta” direct-drive system.  Which is just amazing of him to do, so again, many thanks Carl!  I printed them out on my rep1, spent an afternoon installing them, and what a difference!

The firs pic shows off the new direct-drive design, and a calibration print of two cylinders:  Zero stringing between them.  With the Bowden, it would look like a spider could live in there.

The 2nd print is of a 3dBenchy, with no cleanup: Almost no stringing or blobs.  Both prints used the .6mm Volcano nozzle.

For both of these, I’m using the same Simplify3D profiles as before, I just dropped the retraction from the 5ish-mm to 1mm.  So much more accurate!  Currently in the process of tuning them even more.

I also modified the rear-plate to accept the 40mm fan mount & duct as designed by trublu832 on OpenBuilds, and you can find his files here on Thingiverse:  No more dual fans, just one ducted one.

As of this post, Carl has released a new version of the parts I have yet to print, but I plan to soon.

But overall, if you plan to build one of these printers and use an Volcano nozzle, I’d highly recommend using this new hotend design.


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

Building the C-Bot 3D printer: Part 28 : Lighting, Ringing, Breaking

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


This update is a combo post on several subjects at once:

Adding Lighting

Up until now, the C-Bot has been a dark printer:  No internal lighting whatsoever.  My Replicator1 is like a little supernova next to it when the room is dark.  But no longer:  Over the weekend I added both an 12v LED strip to the top-front X-beam (pointing directly at the print-bed) and a superbright LED directly on the print-head itself:

While my buddy Mason did a slick job of wiring his LED strip directly into the Rumba board on his C-Bot, so he can adjust the lighting based on the print settings, I did not:  I ran a extra 12v lead out of my power-supply, and connected both the LED Strip, and the superbright LED (with inline resistor) directly to it:  Turn C-Bot on, lights turn on.  Nuff’said / good enough.

Breaking

After I installed the lighting and turned the bot back on, the Bowden extruder suddenly started jittering:  It would no longer extrude filament.

I started by swapping a DRV8825 stepper driver from the z-steppers to the extruder stepper slot:  Try extruding, and it works.  Ok, it must be a bad DRV8825, and I have no spares.  But I do have a bunch of extra A4988‘s:  I’ll just put one in there, and updated my firmware to use it instead.  It doesn’t work:  Jittering starts again.  So I revert the firmware change, and put a ‘good’ DRV8825 back in:  Jittering.  What is going on?

Soon, any DRV8825 I put in that slot causes jittering, but they all work when plugged back into their original slot.  Drivers are good,… is my board bad?  At this point I disconnect the 4-prong JST connector running from the board to the stepper, and notice that one side is slightly melted: I remove the wires from the connector, and connect them on-by-one to the pins on the board:  Everything starts working again.

Canibalizing a connector from some other wires, I reinsert the leads, plug it into the board, and back in action.

Seriously?!?

Improving Ringing / Ghosting

I had recently printed out a “Sledgehammer Games Recognition Coin Holder” for someone at work (I modeled it in Maya / Tinkercad):  We can give out cool coins to fellow employees for doing good work, and I designed this coin holder so people can show them off (there’s four slots in the top to hold the coins).

I’d printed many on my Replicator 1 in the past, and printed this one on the C-Bot for the first time.  And what I noticed was, there was a terrible amount of ghosting / ringing happening:

shg_recognition

Click to see the full-size that really shows the problem off.

This was printed with the .6mm E3D-Volcano nozzle, 300 micron layer heights at 60mm/sec, in MakerGeeks Royal Purple PLA.

The issue was, the prints done on my Replicator 1 had less ringing than the C-Bot, and this didn’t make sense to me:  The C-Bot has a Bowden extruder, thus removing a bunch of moving mass from the toolhead, not to mention it uses Core-XY mechanics, that is supposed to help out as well.  Why are things worse?

Posting this question to the 3D Printing Google Group, I got a bunch of good answers.  Specifically, my firmware acceleration may be too high, and the size of the printer itself could be causing too much shake, do to the lack of additional cross-members for stability.  Right now I have no surplus extrusions to stiffen it up, and my ultimate goal is to bolt the printer directly to the wall, thus really locking down any shaking.  But in the meantime, I can adjust the acceleration in the firmware.

I made a ringing/ghosting test model in Maya that would show off the issue on X, Y, and XY all at the same time.  I printed it with my default settings (3000 mm/sec), then dropped it waaay down to 800 mm/sec.  The results were pretty obvious:

ringing_comparison

Click for bigger pic

On the left of each image, is the ‘800 mm/sec acceleration’ print, and on the right is the ‘3000 mm/sec acceleration’ print.  These changes were made in Marlin’s Configuration.h:

#define DEFAULT_ACCELERATION 800
#define DEFAULT_RETRACT_ACCELERATION 800
#define DEFAULT_TRAVEL_ACCELERATION 800

I just set everything that looked applicable to 800.

So, an noticeable improvement.  But once I get the printer “bolted down”, I hope to be able to print even faster, with better results.


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