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.

Friday, October 6, 2017

NanoDlp and the topic of Masks - Part 1 - Introduction

3D Printers that use a non coherent light source (e.g. DUP and DLP) will have an imperfect distribution of light at the printing interface.  Printers like the Wanhao D7, with a single UV LED light source will be particularly bad with a significant difference in light intensity between the center and edges of the build plate.
NanoDlp can compensate for the above "unevenness" by applying a "mask" that adjusts the exposure during the slicing process.  The mask is a grayscale image that is darkest where the light source is the brightest and clear where it is the dimmest.  During the slicing process NanoDlp marries the mask with the layer being sliced from the model "subtracting" light based on the contents of the mask.

It is important to note that every printer is going to have a slightly different light pattern . With some printers this may not matter and with others it will matter more.  You can get improved results running with a generic mask but you really do need one for your printer that matches your light distribution!

WARNINGS!  1. TAKE YOUR VAT OFF THE PRINTER BEFORE USING THIS FORM!  2. GET SOME UV PROTECTION GLASSES!  WARNING!

NanoDlp provides a method for creating a mask.  Under "Projector Calibration" there is a button for "Mask Calibration" that takes you to the following form.  The dimensions at the top that I am using are 5, 10, and 200.  Darkness of each cell of the mask can be specified or the entire table loaded via a CSV import (which is a feature added at my request).

When you press the "Update Mask" the actual image used for the mask is updated from the values collected either by manipulating the individual cells or by importing from a CSV paste.  Note that the created file is available on the Raspberry Pi in the printer/public/plates and is named mask.png.  If pulled from the RPi it should, in theory, be useable with CW.

The other thing to note is that when you press the "Preview" button a grid of squares will be projected on the printer as shown below.  BTW, the squares are 200mm in size by virtue of the change I make from the default of 100mm at the top of the form.

More about all of this in Part 2 of this article but it is well worth noting (again) that before you mess about with this particular form you should have taken your vat off of the printer!


Thursday, October 5, 2017

DxP Mask Meter (DxPMM) - The Meter

Following is an overview of the major components that comprise the DxP Mask Meter.
Early Prototype in Case
Test Platform for Componen

The meter is based on an Arduino Nano that can be connected to three sensors, a VEML6070 UV Sensor, a GL5288 Photo Resistor, and an optional thermistor for measuring heat at the GL5288.  The user interface is via an OLED display and two LEDs with a single push button for user input.  Readings can be transcribed manually from the OLED, collected via the Arduino IDE with the meter connected to a PC, or through a bluetooth terminal session (more on the terminal options below).

The meter can be connected to one of two probes, one for the VEML6070 and one for the GL5288 with the optional thermistor.  It will recognize which is attached and read from the appropriate sensor.  Readings are taken every 50 milliseconds and averaged on a rolling basis over a second.  A deviation is calculated that results in a quality metric from zero to greater than ten.  Greater than ten will not be recorded.  The deviation metric is transmitted via bluetooth and can be used to screen for data quality.  The temperature reading is not used at this time.

Initial Screen
Sent Measurement Screen
















There are three jumpers on the bottom of the meter that can be used to configure its operation as below:

        000 - UV - Dumb 
       001 - UV - Auto 
       010 - UV - Manual  
       011 - Photo - Dumb
       100 - Photo - Auto
       101 - Photo - Manual
       110 - Not used
       111 - Config via Menu

The configuration menu, activated when all jumpers are on, presents options that are selected by pressing the button on startup (since there is only one button)!  

Wednesday, October 4, 2017

DxP Mask Meter (DxPMM) - Overview

Catchy new name for the UV Meter to help identify it a little more closely to its intended purpose.  It is, after all, not really a pure UV meter.  Part of its functionality does not even read UV but uses the incidental visible light emitted by the UV LED Array as a proxy for the UV light distribution (which seems to work just fine). 

My hope with this project is to have a relatively easy-to-use tool that simplifies the process of creating a mask for the Wanhao D7 as well as other DUP or DLP printers that are driven by NanoDlp.  Note that the meter can be used in two different ways when working with NanoDlp.  In its 'Dumb' meter mode you can use it as the designers of NanoDlp would have expected.  Namely by displaying a mask preview within the Mask Generation Wizard of NanoDlp and then using the meter to adjust cells.

Here is what one version of the process flow might look like:
  1. Connect the meter to a USB power supply using a mini connector.
  2. Use bluetooth on your computer to connect to the meter and start a capture to file session.
  3. Place the measurement grid on top of the LCD of your printer and secure it (you can use other guide methods).
  4. Display the full white calibration screen from NanoDLP.
  5. Position the Photoresistor meter probe to the first cell on the grid (bottom right) and press the button briefly.
  6. When a good reading has been obtained both LEDs will be lit and the screen will tell you to move to the next cell.  Move up one cell.
  7. When you are ready to move to the bottom of the next column to the right press and hold the button for a second.  This will send a line end.
  8. Repeat the above two steps until you have measured all cells.  Do this quickly or in a couple of sessions as readings from the photo resistor will change as it heats up!
  9. Turn off the full white display and close the terminal capture session.
  10. The output captured from the terminal session should be a comma separated stream of numbers of ten rows and ten columns.  Copy these to the clipboard.
  11. Open your copy of my NanoDlp UV Mask Calculator spreadsheet and paste the above values into the sheet named "Paste Here" in the space provided and follow the instructions at the bottom of that page.
  12. On the first sheet of the workbook you can now find the input that NanoDlp needs for a mask to be generated.  Copy it and then paste it into NanoDlp.
There is a lot more that can be done to refine the mask generated above but this is a broad overview of one version of the process.  You will need to do some tuning of the mask with the meter in the "Dumb" mode so you can measure and adjust cells within the NanoDlp Mask Generation Wizard.  Finally, you will want to print some calibration objects!

Tuesday, September 19, 2017

Mask Impact on Dimensional Accuracy

A number of things are going on in parallel on this project.  I have the PCB coming from China, a case in draft on the printer now, the software now being rewritten as a new version with some learnings from V1, some testing of various sensors, and some comparisons of the mask in operation.

Here are the results of one of those tests.  There is clearly an improvement in dimensional accuracy between the No Mask and the Mask versions of these objects from the center, edges, and corners of the build plate.  I would caveat this with two observations.  First that my 16quid caliper, combined with my coordination, is incapable of getting consistent readings at this resolution.  Second that I am hoping to further improve the accuracy of the base data read by my UV meter to improve these results.

The Test Results

The Calibration Objects!


Friday, September 15, 2017

The NanoDLP Mask Wizard and the Wanhao D7

The layout and orientation of the build plate as displayed by NanoDlp versus what is actually displayed by my printers confuses me every time I look at it.  It may not be confusing for most people ... but I confess that it is to me!  This has been particularly true when it comes to the NanoDlp Mask Generation Wizard.

By default NanoDlp presents a 10 by 5 cell matrix for entry of a mask.

When translated to the Wanhao D7 this is what we see.
When the entries are reversed for a 5 by 10 cell matrix...

...we get the result we need.  It is also important to note that entry of data to NanoDlp, if doing so in the normal mode of top left to bottom right, means doing your UV readings from the bottom right corner and then up on the D7.

Sunday, September 10, 2017

UV Meter - Prototype

Have been making some progress on a prototype for my DUP 3D Printer Calibration UV Meter.  Maybe just DUPUVM for short?

A breadboard prototype has been assembled and code written to drive it.
The case design has been evolved a little to match the PCB.
An initial PCB has been ordered from Seeed Studios in China.  

Further progress on the case will wait for the PCB.  Software has a ways to go yet but is far enough along that I felt comfortable ordering the PCB.  The first batch of PCBs will still be prototypes which explains some of the extra contact point you can see above.

The meter will function as follows:

  1. Readings can be recorded from the built in LCD display or they can be captured either via a Bluetooth terminal session or by connecting the device to the Arduino development environment and using the terminal there.
  2. Two LCDs display the status of data capture with solid green indicating a good solid reading, flashing green and red indicating a fluctuating reading, and solid red indicating that the reading is not stable enough to record.
  3. When a stable reading can be taken a single press of the button will display the current light intensity on the LCD, broadcast it out the serial port, and the two LEDs will both illuminate.
  4. A second press of the button will send a delimiter and will start the next reading cycle.   Note that holding the button down at this point, for more than a second, will send a line delimiter.
  5. If you are taking the data capture route the above process will result in you having a comma separated file for import into the spreadsheet that calculates parameters for generating the mask in NanoDlp.























xx

Thursday, September 7, 2017

UV Meter - Concept

In my previous article I discussed building a mask for NanoDLP using a UV meter that was somewhat cobbled together from stuff that I had laying around.  Here I present a slightly more grown up version of said meter!



This would be a fairly small package enclosing an Arduino Nano, connected to a USB power source, a 128x64 LCD display, two push buttons, one LED, a photo resistor, a 10k resistor, and a bluetooth adapter.

The LED (green) will flash when a stable reading is being obtained.

Pressing either button when a stable reading is present will cause a reading to be taken and displayed on the LCD.

The above reading will also be output to the serial port and and broadcast by the bluetooth adapter.  The value output will be terminated with a comma.

Pressing both buttons will output a newline to the serial port to be broadcast by the bluetooth adapter.  In this manner a CSV (comma separated values) buffer can be built for capture on the PC connected to the meter.

The photoresistor mounted on the bottom of the meter will fit into the grid designed and printed for the purpose of measuring UV output of the 3D Printer.

In operation the meter could be used either disconnected, and taking a single reading at a time transcribed from the LCD display, or connected to a computer where the entire stream of readings is buffered and captured.