Tuesday, February 17, 2015

The RepRap Ecksbot 3D printer - first print and lessons learnt

I've completed quite a few prints since setting up my printer with the required software and completing all the hardware checks that I described in my previous post, so it's probably a good idea to write down some thoughts before they disappear into the cold and dark recesses of my brain.

 Some good reads before you hook up and start printing:

My first roll of filament was red PLA, so many of the pictures and videos to come will be filled with that colour. PLA is a very standard filament type to start with, as it has a low printing temperature and generally does not require the printbed to be heated. All in all it is less finicky than other filaments, or at least it's like that if you are a beginner, so I'd recommend starting with PLA. I know I concentrated on "final" checks in my previous post, but there definitely are some final final checks worth looking into before pressing the "print" button:

  • Cover your aluminium printing surface (the one already covered in the yellow Kapton tape) with blue masking tape (Sellotape brand). I don't know why this type specifically, but it was recommended to me and it works extremely well with PLA, so I'll stick with it (I bet you didn't see that one coming...). For ABS, the experts suggest using ABS juice (a mixture of one part ABS filament and one part acetone spread over your printing bed). I haven't printed with ABS yet and haven't had a chance to try out the juice, but I'll post about it when I do.
Blue masking tape (Sellotape brand)
  • It might seem obvious, but don't forget to use the provided paper clips to keep the aluminium printing surface fixed to the heated bed. They are not just there for in case, they are definitely needed to keep your printing surface stationary relative to the Y-axis and through that to ensure a good printing quality. (I forgot the clips more than once and had the same amount of screwed up prints).

For my first print I used this calibration cube design available on Thingiverse. I sliced it with Slic3r using these settings available from the OpenHardware github repository (I should start using github more, I'm realising more and more how extremely useful it is) and printed with red PLA (go figure) at 190°C hotend temperature and the heatedbed at room temperature. For small to medium prints it should be fine if the heatbed is switched off, but for bigger prints having the heatbed at about 50 or 60°C is recommended (for PLA).

So without further ado, here is a video excerpt from my first print and a photo of the printed cube (whoop whoop!):

The printed calibration cube (my first print)

The jet engine you hear in the background (or foreground, more likely) is the sub-standard hotend cooling fan I had on initially. After the first print I replaced it with a slightly more expensive one and the improvement was immediate and effective - no more runway sound-effects.

I was pretty happy with my first print as it had quite good quality and no specific issues presented themselves during the print. Not that one should expect printing issues to be all gentlemanly and present themselves during a small print like this, they will much rather sneak up on you silently and stab you several times in that soft part of your kidney where you can hardly feel a thing but which can be quite detrimental to your health.

So, armed with the happy feeling finally having created something with my 3D printer, I ventured into the untraveled realm of printing random stuff. I started off with the cliché iPhone case (link):

I printed some hearts for my wife (I made some jewellery with these, I'll probably still do a writeup of this):

And then started with the Standard Raptor hand from e-NABLE, my first assembly. I plan on writing a lot more about the e-NABLE designs and my experience in printing them, but I wanted to keep true to my promise of posting many more awesome photos and videos, so here they are:

And a video of how it functions:

For now I have only posted the nice pictures of successful prints and have left out the failed ones. But it wouldn't be an honest account of what actually happened if I just ignore those prints or the lessons I learnt from them. So in conclusion (and an extended one at that) here are some very important lessons I learnt during the process of printing all of the above:
  1. Make sure the hotend fan is always on: when I started tuning my stepper motors with Pronterface and started using the extruder for the first time, I didn't make sure of this. The result was a bad case of temperature creep. The fan doesn't cool the heat exchanger fins of the hotend, causing heat to creep up from the hotend nozzle (where it should have stayed) and through the whole hotend towards the extruder. Then the properties of the filament are not linear anymore so the extruder keeps extruding filament but all of it doesn't exit through the nozzle. I made the error of turning the printer off to investigate why my extruder motor was sounding like it was skipping steps constantly, which caused the filament to cool down and the whole hotend to clog up. This led to weeks of ignorant frustration, until I followed a fellow maker's advice to put the hotend on a hot plate, which solved my problem instantly. Since then, I make sure every time.
  2. Don't over-tighten your brackets and fittings: I did this with the coupling brackets that hold the Z-motor shafts and the threaded Z-axis shafts together. During one of the initial prints, I started hearing a slowly compounding crack that I couldn't place at first. When I realised where it was, the crack was almost halfway through the part. I fixed it mid-print with some Pratley Quickset (white) glue, which worked wonders and has been holding the part together ever since. My first print after that was the broken part.
  3. Check the power and/or screensaver settings on your PC or Mac: these settings can (and most likely will) influence your USB communication to the printer. You don't want the printer to lose communication in the middle of a 5 hour print just because the screensaver went on or because your laptop went into sleep mode. On a Mac, my printer always stops after a while if I navigate away from the screen running PrintRun (Pronterface) for too long. Usually it starts again when you navigate back. If it doesn't, the hack I use is to pause the print in Pronterface (while the printer is still stationary) and then to continue the print again after a second or so. This usually works to get the printer moving again.
  4. Invest in the highest quality grub screws and Allen keys you can find: I stopped counting the amount of Allen keys and grub screws that I have stripped trying to tighten the belt sprockets to the stepper motor shafts. It is highly important that these are as tight as possible as they keep your X- and Y-axis accuracy in check. I had weeks of problems with failed prints due to mid-print Y-axis drift, which is very irritating.
  5. Wait till Slic3r is finished exporting gcode: this process my take a very long time in some cases where big print files are created. Some people have suggested using other slicers like Cura, which apparently speeds up the process greatly. In the case of Slic3r, wait till the export is finished before loading the gcode into Pronterface, otherwise you will have a failed print. Pronterface indicates the dimensions of the print in X, Y and Z once the gcode is loaded - compare this with the stl file's dimensions to check if all is good.
That is all for now. I might still edit this list of lessons, as I wrote down a bunch of important stuff somewhere but I can't for the life of me find that "somewhere" anywhere. Thanks for reading.


Thursday, February 5, 2015

The RepRap Ecksbot 3D printer - final hardware checks and setting up firmware and software

With my 3D printer assembled and most of the electronics sorted (see my previous post), it was only a matter of moments before I could reach my long awaited goal of actually implementing the device. Or so I thought. Turns out I actually had loads of checks to do, installs to complete, settings to figure out and set and many important lessons to learn. I'll try and cover most of the important aspects below and I'll no doubt forget some important pointers in doing so, but please feel free to post a comment if you have any questions.

Step 1: Pre-anything mechanical checks
  1. Make sure that everything you put together in the mechanical assembly is securely fastened and levelled in the correct place.
  2. Check that your heated printbed is mounted securely and levelled on the aluminium Y-carriage, using the 4 bolts, 4 nuts and 4 springs.
  3. Check that the belt sprockets are very securely fastened to the X- and Y-motors (this is something I cannot stress enough - if the grub screws loosen mid-print it will seriously damage your print) and that the belts are tight enough but not too tight. Test the tightness with your finger, it shouldn't deflect more than about 5mm when pressing down on it with light force. (This value was heuristically chosen but should give you an adequate idea).
  4. Test the quality of movement of all axes by moving the carriages from end to end. Adjust axis alignment, oil bearings, fasten nuts and do anything else to get a smooth, unhindered movement in all axes. To get movement in the Z-direction, just turn both threaded shafts connected to the Z-motors in the same direction.
  5. Do bed-levelling by positioning the hotend nozzle a few millimeters above the printbed and adjusting all relevant axes in order the move the nozzle over the entire area of the printbed. Adjust the bed-level by fastening or loosening the bolts at its four corners.
  6. Make sure the extruder hole aligns perfectly where it meets up with the hole in the top of the hotend so that filament can fit nicely through from top to bottom. Test this by pushing a piece of filament in from the top (pushing down on the extruder spring clamp to allow the filament to go through) and letting it go almost to the bottom of the hotend where the nozzle starts getting narrow.

Step 2: Pre-anything electronic checks
  1. Check that your wiring is clean, neat and out of the way of any moving parts. I've done this with my wiring on the printer itself (small cable ties are awesome for this job), but the wires lying next to my printer (those connected to the controller board) are a totally different case. I'm still planning on printing an enclosure for the excess wires and the controller board.
  2. Make sure that the stepper motor wire connectors are securely connected to the motor ports.
  3. Make sure that the two Z-motors are wired in parallel. The separate groups of wire coming from both motor connectors should be joined so that a single group goes to the controller side where a single stepper motor driver controls both motors. This should be more evident once I supply a wiring diagram (or if I do?).
  4. Be sure that every important electrical component on the printer is connected to the relevant ports on the Gen 7 control board: the 5 stepper motors to the 4 stepper motor driver connectors, the heated printbed and its thermistor to their ports, the hotend and its thermistor to their ports, the three limit switches to their ports, and the 12V and GND connections from the power supply to the power input ports. The 12V hotend fan can also be wired directly to these power input ports as it should always be on during all prints in order to help dissipate heat from the hotend.
  5. Turn the pots on your stepper motor drivers all the way down. On my Gen 7 board I have four Polulu A4988 drivers and on them "all the way down" means all the way counter clockwise.
  6. Do not connect your USB cable yet, and also don't switch on the power supply yet.

Step 3: Software

The basic set of software installs you'll need in order to have everything up and running is as follows:
  • The MCP2200 USB to Serial driver to let your PC communicate with the Gen 7 controller board (on Mac OS X Yosemite this is capability is pre-existing and no drivers are needed; I am unsure if this is true for other Mac software versions, though).
  • Slic3r, which converts STL files into gcode which the printer can interpret.
  • Printrun/Pronterface (on Mac it is called Printrun-Mac) to enable communication between your PC/Mac and the printer.
Downloads for these software packages are provided at this OpenHardware link.

Step 4: Hooking up your printer and making stuff move

Once the necessary software is installed, it is time for the long awaited initial unveiling. At this point it's probably a very good idea not to let your excitement get the better of your logical thinking, as this might lead to some random failures and disappointment.

  1. Connect the Gen 7 printer controller board to USB port on your PC/Mac. A red LED on the Gen 7 board should start flashing.
  2. Open Printrun/Pronterface, making sure that the correct COM port is selected for the printer and that the baud rate is set at 115200.
  3. Turn on the printer's power supply. Remember, your stepper motor motor drivers are turned all the way down, so nothing should make loud noises or anything (if they do, it's probably a good idea to leave everything and run). I suggest double checking the stepper motors one by one before switching everything on at once - just plug in the stepper motor you are testing, apply power and see what happens.
  4. Connect to the printer from Pronterface. If everything functions as it should, you will hear a fairly load clicking sound coming from the stepper motors.
  5. Tune your stepper motor drivers, using Pronterface, to allow the motors to receive the appropriate amount of current for printing purposes. Use this post as a guideline for tuning the drivers.
  6. A very important step: calibrate your extruder! These posts give ample information about how to go about this. RichRap's blog is a vast treasure of valuable 3D printing information, I recommend reading everything he has ever written:
  7. Remember to check that your hotend fan starts blowing immediately when the printer is switched on. This way, when the hotend temperature is set from Pronterface, your hotend heat exchanger will stay cooled and the temperature won't creep up your filament and cause problems during extrusion (this happened to me and I had to learn the hard way).
So that's about it in terms of pre-print checks (well, that and all the millions of other things I forgot to mention). At this stage we are ready for the first print, which is what my next blog post will cover. I'm sorry that I didn't post any pretty pictures or videos and that it's all just a bunch of words. I promise to correct that with my next post. For now, here is a potato.

Source: http://www.moffatcan.org/shop/?product=potatoes-2


Thursday, January 29, 2015

Assembling the Ecksbot 3D printer: Part 2

And I'm back. This post, continuing on Part 1 of this series, details the rest of my Ecksbot's assembly process. I ended off last time with the printer only partly assembled, so the first entry for this post shows me assembling the rest of the mechanical parts. I'll then dive into some soldering and wiring and in the end the assembled printer will resemble an awesome mixture of mechatronic majesty (or madness?)

Step 5: Assembling the Z-axis

This is quite an important step where a fair amount of delicacy is needed, as the Z-axis accuracy influences the resolution (a.k.a. step size, a.k.a. layer thickness) at which your printer will eventually print. Be sure to align everything thoroughly (use your calliper and ruler with abundance) and also be sure not to over-tension the Z-axis coupler pieces when fixing the Z-motors to the threaded Z-axis rods (this led to a nail-biting experience that I'll expand on later). See the Z-axis assembly video below:

Step 6: Solder some stuff (a lot of stuff actually)

This is one of the important aspects to consider before getting yourself into the whirlpool of building a 3D printer (a nice whirlpool, though, not the ones you drown and die in): do you have the necessary electronics skills or the preferred amount of professional curiosity to be able to navigate the non-mechanical side of things? Personally, I don't really think something is interesting enough if you can't induce a potential difference across it's boundaries in order to make some electrons move, so this was my kind of thing. But if it isn't, know that you will have to do some reading and exercise some dedication. The mechanical printer assembly was quite straightforward with enough support and instructions to guide a standard hobbyist through the process, but the electronics part wasn't really an exercise in spoon feeding. See the two videos (Electronics Part 1 and Part 2) below, which is followed by a summary of the videos' content.

With the hotend construction I used a thick wire gauge for the thermistor, which wasn't necessary as the thermistor doesn't really draw a worthy amount of current. (And yes, I used my wife's hair drier in the absence of a heat gun). The thick wire does come in handy with the heatbed soldering though, as this part will draw strong current when it's heated during printing (above 100°C when printing with ABS). The hotend comes with pre-drilled holes in which to mount the resistor element and the thermistor, although I had to drill the thermistor hole a bit bigger so that the glass encapsulated thermistor could fit snugly. The end-stops are wired normally open (NO) and the soldering of the stepper motor drivers is pretty straightforward.

The second video picks up where the first one left off by showing how I finished the heatbed soldering. The thermistor fits into the hole in the centre of the heatbed and I used Kapton tape to stick the wires to the bottom of the heatbed. When modifying the standard ATX power supply it is important that you wire as many yellow wires (+12V) and as many black wires (GND) together as you can (respectively, that is). This will supply current to the whole printer and therefore you need a thick gauge. Also don't forget to solder the green wire to a black one, this is used by the ATX power supply as a kind of soft switch internally. If the green wire isn't grounded, the power supply won't switch on. The hotend cooling fan bracket (supplied with the printer kit) does have 4 holes for screws to fasten the fan, but I was a bit lazy so I just used superglue.

Step 7: The final assembly

The rest of the assembly entailed fitting all of the electronic parts to the already assembled mechanical printer, most of which is shown in the video below. The printbed is mounted, the whole extruder setup is assembled and mounted, and the three limit switches are mounted at the correct spots.

The trickiest part of this step was getting the extruder mounted rigidly and accurately. Assembling the extruder and stepper motor combination wasn't too bad, but using the supplied brackets to connect it to the hotend and fixing this whole sub-assembly to the X-carriage took quite a while. Not all of the holes aligned as they should have and the fan and its bracket seemed to press hard against the bottom of the X-carriage, causing the hotend to lean slightly off-centre and not perpendicular to the printbed. Through trying to make everything fit (read forcing it to fit) I cracked off a piece of the fan bracket and I ended up using a cable tie to keep it fixed to the hotend. The trick is to realise that this whole process is DIY, so if something doesn't make sense and you can use your common sense and some form of expertise to figure out another way to do it, why not try it? If you totally screw it up you'll know that you were wrong :) that's how we learn. Luckily I didn't screw it up totally, the printer has been printing nicely ever since - cable tie and all.

What is not shown in the video above is me wiring all the stepper motors and connecting the other ends of all the wires to the control board. My footage for this part was just not nice enough and I thought I could better explain it with the use of diagrams, something that I lacked when I was building the printer. It might be that there are so many custom versions of RepRap printers out there that it gets hard to standardise on specific wiring diagrams, or it may be that someone just hasn't had the time to sit down and draw a diagram specific to the Ecksbot-ZA. Whatever the case, I am still planning to draw an all-encompassing wiring diagram that I unfortunately I haven't gotten to yet. I'll probably do it sometime before I die, so keep watching this space.

So there you have it, people: an assembled Ecksbot-ZA v4.0. Be on the look out for my next blog post about setting up the printer's firmware and software and doing the first print!


Wednesday, January 21, 2015

Assembling the Ecksbot 3D printer: Part 1

Hi everyone.

I'm a bit angry with myself for having let two months go by before writing this post (as opposed to the two weeks I promised in my previous post), but hey, it's not like I have kept the world waiting. I have had all of 130 blog views since I started the blog, of which about a hundred would be me excitedly reading my first post over and over again. So let's get this thing trending by posting some more awesome technical content for engineers...(ok, that sounded better in my head).

The last couple of months I have been scraping off a few hours here and there, taking the time to assemble a very interesting piece of equipment that has brought me everything from immense joy to a "hit-the-wall-with-my-face" type of frustration. Through this process I have learnt a great many things and I would like to share this with those of you who care for the ways of the 3D printer.

The Ecksbot-ZA v4.0 RepRap 3D printer is a South African flavour (with a lot of handy improvements) of the RepRap Ecksbot, which according to RepRapWiki is a "sturdier and sleeker derivative of the Prusa 2". It has a 180mm x 180mm heated bed build plate and an all-metal hotend (with PTFE liner) which takes 1.75mm diameter filament from the extruder side and melts it down to the 0.4mm diameter of the hotend nozzle. The kit came with everything necessary to assemble the printer according to the assembly instructions available at the OpenHardware Wiki page. Some insights were also derived from the Eckertech site, while the OpenHardware forum helped immensely.

When I started off with this project I decided to document my ventures as much as possible and to this end I recorded the whole assembly process, also taking a fair amount of photos at critical points. The assembly process is divided up into different sections (based on the instructions for the different subsections of the printer) and I have created some videos demonstrating these sections below. The videos do not have the greatest of quality, I apologise for that, but the photos are pretty cool. View them in this folder for a more detailed "assembly guide in colour".

Step 1: Assembling the vertices

I really hadn't ever heard the word "vertex" used in the context of a 3D printer, so this started off in an interesting way. The vertices are the triangular supports with the four feet upon which the whole 3D printer rests and which gives it its sturdiness. Here it was important to ensure (to as high an accuracy as one can manage with these human hands) that both vertices are equilateral triangles, so the ruler and callipers came in handy. The vertex assembly is shown in the video below.

Step 2: Assembling the frame

The next step was to assemble the main printer frame using the vertices from the previous step. Again, for printer stability and sturdiness, it was essential to have equal measurements on corresponding parts on opposite sides of the printer - this can be seen as a requirement for every step of this whole assembly process. The video below shows the printer frame assembly.

Step 3: Assembling the X-axis

This axis is responsible for the left/right movement of the hotend/extruder combo (if you look at the printer from the point of view that the photo shows at the end of the video above). It is driven by a single stepper motor and belt system and it carries the hotend to where it should be in the X-plane. Of importance here is to align the pulleys (for the Z-axis movement guide) as carefully as possible, which looks inherently improbable due to the fact that cable ties are used. But it actually works quite well. Also, don't make the belt too stiff or give it too much slack, as both can cause printing problems. The belts are strengthened with stainless steel wires internally, so they shouldn't really stretch. See the video of this section below.

Step 4: Assembling the Y-axis

The Y-axis carries the aluminium frame, the headed bed, the aluminium printing surface and the eventual 3D printed object in the front-to-back plane (as viewed according to the convention explained above). Like the X-axis, it is also driven by a stepper motor and pulley system. The stiffness of the belt is not extremely important from the start here, as the Y-motor is mounted on a bracket that one can adjust to change the belt stiffness (kudos to whoever made this adjustment to the design). In the case of the Ecksbot-ZA v4.0, the Y-motor mounting bracket is an aluminium part, as opposed to the older versions where it was a 3D printed part. This was to increase stability, or so I assume (it might have been for the fun of it, really, who am I to judge?). See the assembly video below.

Step 5: to be continued

You will have to wait a bit for this one. It might be because I think the post is getting too long, or it might be because I haven't edited the rest of the videos yet. Whatever the reason, you'll at least have something to look forward to soon. And when I say soon, I mean soon as in not two months. More like two... ok let's not make promises.


Wednesday, November 12, 2014

Getting started

Hi all.

I've been meaning to get this blog going for quite a while and have now finally taken the time to write the first post. Why? Because I have gained a great deal of knowledge by following the global open source community and I think it's time for me to pay it forward. This will also be a good platform to create awareness about open source projects, hacking and the variety of facets to playing around with, breaking and then (hopefully) fixing stuff. 

My name is Stephan and I am ... (not an alcoholic, although I am in the best place to be one due to my proximity to the world renowned Stellenbosch Winelands) ... an engineer. I studied biomedical engineering in Stellenbosch, South Africa, did some R&D project work for the university, worked in the industrial control environment and am now heading into the mobile app development arena. But most of all I like new technologies and how one can utilise (yes, I spell it with an 's', blame colonisation) the vast amount of online tools available today to create awesome stuff.

My goal with this blog is to shed some light on the projects that I have done before and those that I am currently working on. And where possible to help, share and collaborate through this process. It will initially take the form of three main ideas: 3D printing, the e-NABLE project and Arduino-related projects. I will elaborate a bit:

3D printing: a friend and I recently acquired an open source RepRap printer DIY kit from OpenHardware.co.za in KZN, South Africa. They are the leading local RepRap developers and manage a well-kept support forum with a wide range of discussion topics. I did an informal review of the available 3D printer options, with price, support and local availability being the important discerning factors (price on top), and then decided on the Ecksbot-ZA 4.0 DIY RepRap kit (picture below). It is now almost functional with just a few kinks to sort out. I want to share my experience in building this printer and working with 3D printing in general, which will be the topic for my next main post.

My Ecksbot-ZA 4.0 in its current state - 12/11/2014

e-NABLE: one of my main reasons for acquiring a personal desktop 3D printer (apart from it just being awesome) was to use it in support of the e-NABLE G+ community. Also known as Enabling the Future, e-NABLE is a "community seeking to develop a distributed pay-it-forward network for design, customization and fabrication of 3D-printed prosthetics." Pictured below you can see one of the community's standard devices (the Raptor) fully assembled from 3D printed plastic parts and a few everyday materials and components.

The Raptor hand (source: http://enablingthefuture.org/)

e-NABLE is one of the coolest initiatives ever as it combines several of my hobbies with the ability to help many people worldwide. Over the past few months I have learnt much from the growing number of volunteers in the community and I am now striving to contribute to e-NABLE on a daily basis. If you have some (or lots or any) skills that you want to add to the pool of volunteers, feel free to join the community through links on the G+ page or website or send me a mail at enablematcher.euroafrica@gmail.com. Throughout the coming months I hope to become more involved in mobilising a local chapter of e-NABLE, the process of which I will document on this blog.

Arduino-related projects: my enthusiasm for everything open source actually started when I was introduced to the Arduino platform and my first Arduino Mega (picture below) a few years ago. I have done a variety of hobbyist-type projects, from creating an infrared remote to interfacing with Android devices to the control of a six axis robot arm, with the Mega and other Arduino development boards and I hope to be able to share much more of these projects with you.

The Arduino Mega 2560 R3 (source: http://arduino.cc/)

So these three topics will definitely feature a lot in my upcoming posts. I can't really say for sure when my next post will be released, time being what it is and all. But I'm aiming for about two weeks so let's see how that goes. Some other points to note:

  • My blog's name coincides with the open source vibe, or at least that is my intention. Treat it like an open house, walk in, have a look around, ask questions, join the discussion. Importantly, though, respect other people's opinions. If it is based on facts, that is. If not, respectfully disagree. I don't want this blog to host a gladiator event.
  • I don't claim to be the authority on all facts, so please help me create an awesome blog by pointing out any errors that I might have made. If I then turn out to have been right all along, the joke will be on you :)
  • Feel free to post comments or contact me if you need more information than what is or will be provided in my blog posts.
Thanks for reading. I hope to be of more value shortly.