More 3D Printing

I’m reflecting on the 3D printer and how it’s been working for me, and overall I’m very happy. For something I build from plans but with a lot of my own design, it’s working very well.

Some notes so far:

  • I used a caliper to measure my cubes. They are, in fact, exactly 20mm on every face. They did not shrink. That’s great news.
  • slic3r is a great program. In addition to letting you preview layers, it has scaling features. Using those I scaled the 20mm cube by 200% today and thus printed a perfect 40mm cube (confirmed by the calipers).
  • The blue tape is an excellent bed for PLA prints
  • There are a lot of available things to print on the internet, but now it’s time to learn blender and make some of my own. There are things I want to print that no-one else has designed yet, so now it’s my turn. 🙂

Today I’m printing a lens gear for the Canon DLSR. I doubt it will fit in the underwater housing (or interlock with the control wheel if it does, but it’s a start and I can then work with designs to create my own focus and/or zoom gears down the road.

More 3D Printing Fun

Today I was able to get back to the 3D printer after several days dealing with a major server crash.

After talking to my AU collaborator, I wanted to try extruding at the recommended temperature of 185C instead of 210C that I’d been using. One problem with hotter extruding is that the tip tends to ‘leak’ filament at idle.

My friend also recommended a colder bed, saying he used 30C instead of 60C.

I also configured an old APC UPS due to a power outage yesterday due to wind so that the printer wouldn’t die during a print if the power went out again. Although we have a generator, it takes 1 min to detect and respond to an outage, and a UPS saves the day during this interval.

I powered up the printer and used pronterface on my PC to set the extruder temperature to 185C. Once at temp I test extruded several cm of thread and it worked perfectly.

The last modification I made to the printer was to replace the tape on the aluminum bed with blue painter’s tape I bought earlier in the week. I figured this tape had a nicer pattern which might give better grip to the print.

I started the latest version of slic3r on my PC and set the new extruder and bed temperature as defaults, then loaded the 20mm cube and exported new gcode. I copied the gcode to the printer SD card, then inserted it into the printer and started the print. It was fast!!! The cube printed in 15 min, which is about twice as fast as the first time. I used a honeycomb fill pattern, which contributed to the speed, but it was still very fast. The new cube was identical to the first cube except for the fill pattern.

Finally, I found a model of a moai (Easter Island statue) on the web, and loaded into slic3r. It was a bit big, so I scaled it down by 50%, created the gcode file and copied that to the printer SD card.

It printed in just over 2 hours, and although there were issues with the filament not coming off the spool smoothly, there were no problems with the print. It’s awesome! The blue tape worked perfectly; I needed to really tug to remove the finished print.

I’ve attached photos of the moai printing as well as the final print. I also added some photos of the filament on the reel showing how it seems to be poorly wound at the factory. I’m not sure what I’ll do about that. Probably I’ll just live with it for this spool and buy a different brand from now on.

 

Moai printing   

 

Finished moai

. 

 

Filament problems   

3D Printer Build (Prussia I3) – Jan 2016 to July 2017

I can’t believe that is’ been May since I last posted, but worse – I cannot believe I never posted anything about my 3D printer build. That’s terrible!

Well, to correct the omission, onward.

In January 2016 I started building a 3d printer with the encouragement from a colleague at Athabasca University. He had built one and thought I’d love doing it as well. He was an immense help, first giving me a detailed list of what to purchase from which ebay vendor, then actually printing the key plastic parts on his printer and sending them to me.

The idea was to custom build a Prussia I3 printer rather than buy a kit. Kits were/are costly, and don’t always use the best parts. By purchasing exactly what you want, you can customize the build as well as optimize the quality. In the end I bought about $350 worth of stuff from ebay, including rods, bearings, heated bed, stepper motors, extruder and all the electronics. A note about the electronics – the Prussia I3 can use many boards, but we used the RAMPS 1.4 which includes the arduino mega and an LCD control panel. The RAMPS has controllers for all the stepper motors as well as the extruder and heated bed. It runs off a slightly modified ATX power supply as it needs 12V at 25A.

I also bought  other parts locally, such as threaded rod, nuts and washers, as well as some aluminum plate for the frame and beds. Here I ended up spending about $225, so my total build cost was $575 (Canadian funds) including shipping and taxes.

The hard part initially was waiting. Buying this stuff off Ebay means Hong Kong, which in turn means 2 weeks to 1+ months delivery wait times. It gets pretty difficult to keep enthused while you check the post each day.

Finally in Feb or so most of the parts were in, and I could start. There are a lot of really good build videos and instructions on the internet, so I started with those.

By March I had the basic Y axis and X asis frames build, and there I stalled. My colleague used wood for his base and support structures, but I didn’t have the right wood and just could not get enthused about wood for this build. So I put it all away in a box for safekeeping, and  there it sat until late May of 2017.

Then I had an epiphany. I would build the frame from aluminum plate, as it’s easy to work with, relatively inexpensive and easy to get and have cut. I checked the built y axis against a large sheet of cut aluminum plate, and it fit perfectly. From there it began anew.

First I made sure the Y axis was true, then glued the feet to the aluminum plate with epoxy. Once that had cured, I started to design the vertical support system for the X and Z axes. Gradually it came together. Of course, the design/test/correct process means most of the holes become slots, but that’s not a big problem.

Once I got going, things really progressed quickly. The biggest problem became a lack of M3 bolts in various sizes. I’d originally bought a few specific sizes from an Ontario mail order outfit, but they were pricey and selection poor. Finally in June 2017 I bit the bullet and ordered a 440 variety pack from Hong Kong, figuring a month wait. To my surprise, it came in a week and I was back in business with even more renewed vigor.

By the fist week in July I had the printer complete, and started testing. There I hit some major snags. All the build instructions said “the kit comes with firmware loaded”. Well, I didn’t use a kit, so there was no firmware. Worse, my colleague from AU no longer worked there, and it took some time to reconnect. Finally I did, and with a few tips from him I was able to find the arduino software that compiles to the firmware that drives the printer.

This highlighted a further problem: the firmware has about a zillion parameters that must be set for your particular printer. Some aren’t critical, but others (like stepper motor settings) are essential. Fortunately the default parameters are pretty close for most things, and there are ample comments and options to get things up and running without too much bother.

Then there’s the ancillary software. To build a model, the printer needs instructions. The process is simple in theory. You take a 3d model and load it into a ‘slicer’ program which creates the actual instructions to drive the printer. It’s all very cool and open source, with the ‘gcode’ file being completely human readable. You can even manually tweak the file if you want. The problem yet again is the slicer program has   dozens of options, most of them critical for a good print.

Ultimately I got most things running by July 10, with the exception of the extruder. No matter what, it just created puddles of goo that it would then plow through while trying to print. After much internet searching, I found one document that discussed “extruder calibration”. Now I’d already calibrated the X, Y and Z stepper movement, which turned out to be perfectly aligned with the firmware default stepper rates. Of course I figured the supplied default would be correct for the extruder as well. However, puddles of goo said otherwise, so I calibrated the extruder. You simply make a mark on the filament, extrude a set amount and see if the actual movement matches the desired movement. To my surprise, I was running 5x what I wanted. Fortunately, with all those parameters in the firmware source, it was quick work to enter a corrected extruder parameter, and another test showed that I was now spot on.

With that, I printed my first 3d object on July 10, 2017 – a 20mm cube using PLA filament. When cooled, it was 19mm on every side, straight and true, so I am very happy with the operation of my 3d printer.

Later that night I printed a 1inch ball mount for my underwater video light, and it’s also turned out perfect.

Here’s a link to a video of the printer creating the cube: https://youtu.be/h1DfgUolt5A

Cranky tools make for cranky developers

I’ve been compiling and testing the Open Porous Media (OPM) reservoir simulators for over a week now, and have discovered one very annoying ‘feature’ of the Ubuntu package tool.

I have had great success compiling OPM under Ubuntu 14.04, which is the ‘official’ version for OPM at this time.

I have had less than great success compiling OPM under Ubuntu 16.04 for the past week. Once I did a lot of manual tweaking and got it to compile, but every time since I’ve had the build fail. It isn’t easy to diagnose as the log files run to thousand of lines.

Tonight I figured out the problem.,, and it’s made me a bit cranky.

The issue is that there are package differences between Ubuntu 14 and 16, but I already knew that. It’s what the package manager does with some differences that’s annoying.

The command to install a package in Ubuntu is ‘apt-get install’, followed by one or more packages. So far, so good. But here’s the problem… if you specify multiple packages in the list, and any one of them no longer exists, the ENTIRE INSTALL fails. Worse, there’s no real error message. You only figure it out by the lack of messages about the packages that didn’t get installed.

For example, say you run ‘sudo apt-get install packa packb packd1.02 packe

If packd1.02 existed in U14 but now it’s packd1.11 (for example), you do get a message in the log telling you that packd1.02 cannot be found and thus cannot be installed. What you don’t get is any message telling you that it’s aborted the entire install and so packa, packb and packe are also NOT installed.

It took a few days to track down (why was BOOST missing all the time???) but finally I cracked the code, and it looks like the big compile is proceeding as expected.

Reservoir Simulation Revisited

Back in the early 1980’s, I worked for some years in Calgary writing reservoir simulators in FORTRAN for one company, and a few more years serving as technical support for another company. I really enjoyed the work and the intellectual stimulation of doing reservoir simulation.

Then my career moved to more traditional IT consulting work before I ended up working in education. I started teaching programming as a continuing education instructor, then became a daytime contract instructor before working full-time as an instructor with Athabasca University.

Over the years I’ve played around with modern reservoir simulators, even going as far to obtain an academic license for a commercial simulator from a company run by the son of one of the senior simulation researchers I had worked with years before.

When I started playing with FORTRAN again on my PiDP8 replica, I started to get interested my old Engineering work, going as far as to convert, compile and run all my old Engineering graduate studies programs.

But I wanted to play with reservoir simulation again.

So I started looking for open source reservoir simulators, and I found an excellent one in the Open Porous Media (OPM) project. They offer reservoir simulators and ancillary programs, all under the open license. Best of all, if you dig around a bit on the OPM website, you discover that it’s possible to compile everything from  source.

I have now obtained, built and installed the entire suite of simulation programs that OPM currently has, including FLOW (the main reservoir simulator) and ResInsight (a data visualizer). I have created repeatable scripts and documentation that allows me to build everything on a VirtualBox machine running Ubuntu 14.04, all running on my Windows7 PC. Ubuntu 14.04 is not the latest (that’s 16.04 currently), but that’s the version they recommend in the OPM wiki files.

It executes the sample simulations quite quckly, which is nice. They also have as examples some of the old  SPE Comparative Solution Project test cases that I used to run in the 1980s. It’s turning out to be really great fun.

My next steps are to expand the simulations I run beyond the simple test cases, and then explore some of the source code. Perhaps I can even contribute something to the project in time.