Evolution of a Blog

This blog has evolved as I have as a maker. It starts at the beginning of my journey where I began to re-tread my tires in the useful lore of micro electronics and the open-source software that can drive them. While building solutions around micro-electronics are still an occasional topic my more recent focus has been on the 3D Printing side of making.

Saturday, May 20, 2017

WIth a Good Hammer It All Looks Like a Nail

I have been down this road before.  I consider the Arduino microprocessor to be a nice hammer and I often find places to use it to solve problems that may or may not exist.  I have also been known to over engineer some of my solutions.  The  Wanhao D7 is giving me the chance to do both!

In a previous post, "Instrumenting a 3D Printer for Heat Testing", I introduced an Arduino based solution to monitor temperatures inside a printer.  I was able to demonstrate that the new 1.3 cooling solution is indeed effective at keeping operating temperatures within a healthy range for the UV LED array.

Since then I went a step further and tied two LED's to the Arduino, a green one, and a red one:
  • Solid green - Fans are on and temperature of the UV LED array is optimal
  • Flashing green - Temperature has risen above 50c
  • Flashing red - Temperature is approaching critical of 60c
  • Solid red - Temperature is above 60c
I have now taken my solution one more step and tied the Arduino to a relay that will power down the UV LED if the temperature rises above 65c immediately or after a solid minute above 60c.

Obviously this is pretty drastic but a) I do not see it happening unless something has gone badly wrong, b) RPis do occasionally burp and that burp could be after turning on the UV LED array and before turning it off again, and c) if something has gone badly wrong while a printer is running for a long period of time... I would rather lose a print than have expensive consumable items like my LCD and UV LED array burn out!

Naturally if I am going to these lengths then I am going to have a PCB fabbed!  Here is an image of version 1 which is being produced in China as this is being written:
Note that there are pins on the Arduino that are not being used and are easily accessible for jumpers. NanoDLP has some cool functionality that allows it to react to the state of pins on the RPi GPIO.  An example would be to insert a delay after a layer is cured to allow for cooling when temperatures exceed a certain threshold.  I don't see needing to do that but it is cool!

Thursday, May 18, 2017

Speedy Slicing with NanoDlp


This was a crap idea.  The time to unzip files on the RPi is way longer than I anticipated!  I could probably transfer them faster uncompressed but have not gotten around to testing that theory!  Oh well.


I really like the configuration that I have with two Raspberry Pi's running NanoDlp to drive my two printers.  It allows me to not have to dedicate my desktop (and laptop since I have two printers) from having to drive those printers.  One thing the Raspberry Pi's don't do, however, is slice fast!  But a Windows or Linux machine hosted on a much more powerful workstation can run NanoDlp and slice in a big hurry!  I looked around for a solution where someone else was already doing this and did not see one so decided to roll my own.


There are really only two directories to worry about.  There is the Db directory that contains all the various settings including resin profiles and the index to your plates.  Then there is the plates directory with a subdirectory for each plate you have created.

Enter a somewhat crude, but workable, Python script to synchronize my "master" with my "clients".   In this script I look at the contents of the Db directory on the master to see what the latest datetime stamp is on any of the configuration files.  Then I check the designated target client to see if the datetime stamp file we left there during the last update is older than what we just came up with on the master.

If an update is needed the contents of the Db directory are copied to the client.   Then the plates directories are compared and where needed a new one will be created and filled, or an existing one will be cleaned out and refilled.  The transfer is done after compressing the directory into a zip file.  A CRC check is done on the transferred file prior to decompression.

Obviously an assumption is made that ALL changes will be done on the master and propagated to the client(s).  In addition, the way that I currently have this configured precludes having the two printers setup differently.  This, however, can be accommodated by excluding some of the entries in the Db directory.  It may not be the height of coding excellence but it seems to work.

Command Line Options

Notes and Caveats

  • The script described above is still under development but is available here for brave souls.
  • The script is provided as-is and I will take no responsibility for its operation!
  • A knowledge of Python is required!
  • You may need to copy the directory on the RPi where NanoDlp is installed so that rights work with SFTP.
  • Once the above script is run the instance of NanoDlp needs to be restarted for changes to be visible
  • You need to make sure your RPi and your host computer are in the same time zone and running synchronized times!

Down to Fine Tuning

I am starting to see the potential of these little printers.  I still do not really have a use for them...but I can see the potential!  I am at the point where I get 100% adhesion to the build plate and I am comfortable that when I lift the lid I will find something printed!

That is...depending on the resin.  Fun To Do Snow White is incredible.  The sample that came with my second printer is pretty good.  The two liters of grey that I bought of Monocure is problematic!  Currently struggling to get a good print with this resin.  I am doing calibration prints measuring the expected size of an object against the cured size and am up to 35 seconds for a 60 micron layer,  At 20 seconds I was getting layer separation.

But the Fun to Do Snow White is amazing and the stuff that came with the printer is not bad at all.
Test and calibration pieces on the build plate (FTD SW).

Above off the build plate.

Collection of calibration and test prints.

White is under cured FTD SW, Clear to the right is the over cured Wanhao Sample and the Monocure Clear with a missing corner is on top.

Close up of the Eiffel Tower.  Note the result of what I assume was under extrusion in the middle of the photo.

The whole tower.

Monday, May 15, 2017

Major Surgery on a Build Plate

Update of 8-July-2017

Sanding your build plate is a lot of work.  There is a leveling technique that you should try with yours before deciding to pursue the atomic solution described here.  This technique has been described by Aaron Widmer on the Facebook group for the D7 printer and it follows here:

Take a piece of plain copy paper and lay it over your LCD screen (VAT removed) and push the screw posts through it so the paper lays flat on the screen. Loosen the 4 screws on the plate bracket so it is free to move (Do not install build plate assembly yet!). Home Z axis. When Z is finished homing, move the build plate to its highest adjustment position and attach build plate assembly and tighten to arm (While holding the plate so it does not lower and crash into LCD!). Gently lower the plate against the paper and apply slight pressure to make sure it is snug against paper and then tighten while applying the pressure. Move z axis up so you can install vat and start your first print.

If the above works for you then great!  If it does not and you still want to sand your build plate then read on.  If you do sand your build plate you will not need to follow the above procedure and can, in fact, level your build plate following the process that Wanhao advocates in their documentation for the printer.  Your build plate will also look a lot like the one used on a Form 2.  Maybe the Wanhao R&D team has one over on Formlabs ... but I kinda doubt it.

Original Post Follows

The good news is that Wanhao has made some great strides in reacting to feedback on the version 1.1 and 1.2 printers. Cooling and packaging in particular but a host of other things as well. The bad news is that they seem to be sending at least some customers build plates that are concave and painted with something slippery.
This is when I knew that I had a problem. Build plate should have had stuff on it! 100% casualty rate.

So I did a little bit of sanding. Clearly something is wrong here as only the corners and edges are being touched.

So I did a lot of sanding...by hand...with 80 grit paper. This is where I realized that getting rid of my 240 to 120 volt power supply and my yankee sander was going to be an issue. So I ordered a Black & Decker Mouse Sander.

See anything funny about this print? Since I had some down time I printed a build plate just to see if it would work. Extrusion lines!

Mine was printed using PET and it actually worked pretty well. Prints stayed on until I wanted to take them off.

Finally got the sander and a pack of papers from 60 grit to 800 grit and I walked through each one, a couple in come cases.

After hand sanding with wet emery paper from 1000 to 7000 we had 100% stickage. There is a problem on the left side but not a build plate issue.

Update of August 2017 - I did a second plate and stopped sanding at 800.  This last bit is overkill!

Tuesday, May 9, 2017

Instrumenting a 3D Printer for Heat Testing

My DLP printer experiment is as much of tinkerers panacea as it is anything.  And I am ok with that as I expected as much.  I have version 1.2 of the printer and version 1.3 has just been released.  The difference between the two is all a matter of cooling.  Which is to say that version 1.2 ran hot!  With that knowledge in hand I designed a new case for the printer with cutouts for some new fans. But will both fans be needed and if so what way should airflow run?  These are the questions that I would like to answer!

To be able to answer these questions I needed a quick and dirty way to measure temperatures within the printer.  It would also be helpful to know when the UV array is lit and how much light it is producing.  I decided to use one of my many Arduino' for this task connected to three thermistors and a photo resistor.  Initially I will use a bluetooth adapter to talk back to my PC.  I also want to source power from the printer so I need to convert 12v to 5v to operate the Arduino.

Here is a picture of what I built followed by a brief description of the various components.

  1. Arduino Nano - Cheap as dirt on eBay but a capable little chip.
  2. Expansion board for the Arduino Nano. Breaks out every pin on the board adjacent to power for whatever you want to connect.
  3. Power converter to take the 12v from the printer supply down to 5v for these electronics.
  4. Bluetooth adapter for transmission of data back to my desktop.
  5. Thermistor (more below).
  6. Photo resistor (more below).
  7. Temporary 5v power supply.
The thermistors and photoresistor all operate in a similar manner.  Temperature or light change their resistance.  I create a voltage divider with the variable sensor as one of the two resistors.  By measuring the resultant voltage I calculate a heat reading for the thermistors.  The photo resistor reading is not translated but just used raw.  Here is the Arduino Sketch that runs on this device.

The output of the above sketch is a simple CSV stream of values that I capture on my Mac and then feed to a spreadsheet.  A sample of the CSV and a copy of the end chart are shown below.