Tag Archives: laser

Episode 2 : Form1 calibration strikes back

[March 11th edit : these calibrations issues were enough to convince me to sell my Form1 printer, for details see this post]

In a previous post I was showing my Form1 was not really well calibrated and circles were turned into ellipses. After filling a bug report to Formlabs, their answer was on the line of “thanks for your concern we are working on it…”

I’m confident they will find a solution, but I started to wonder how a user could calibrate his printer himself. This is important as the warranty on the printer is only valid for 3 months and as any mechanical machine, I’m expecting the printer will require some calibration from time to time. Last but not least, this will be only possible if Formalbs is actually giving us access to more parameters than the currently closed/dumb down version of PreForm we have (Hint! Hint!).

Laser+Galvo based printer calibration challenge

A normal user has limited resources and not access to complex measure instrument, so the procedure should match these requirements:

  • Simple steps: if possible it should be as simple as print test objects, measure them, compute the corrective factors (Excel Spreadsheet/integrated to PreForm), enter the new parameters and re-print the test objects to validate the calibration.
  • Not too long and costly: printed test object should be small, we don’t want to waste time and resin
  • No expensive measure instruments: I’ll be only using a digital caliper available for less than $50 on Ebay/Amazon

My main assumption for this exercise is that the calibration required is only affecting linear parameters. I will not go into galvanometer fine tuning. We will see at the end of the article that unfortunately non-linearity are present and will limit your end result quality.

The main challenge with laser base printer is that it’s difficult to measure precisely the position of a moving dot at the bottom of the vat (absolute measurements). So one solution is to do relative measurements of printed object features. We will use a digital caliper to get a good number of data points to build a robust average estimation of the calibration.

In the graph under, you can see that the laser spot is covering each each slices of the object using two kind of paths. The perimeter/skin-paths are tracing the outline of the object, they will be responsible for the smooth finish. The In-fill paths are straight and parallel paths to cure the inside of each slice. Using simple shapes like circles and square will let us measure independently the performances of both X and Y axis galvanometers.

calibrationExplained1

The final dimension of the Slice is affected by both the axis amplification (deflection angle range) and the size/shape of the laser spot. When tracing the measures VS the theory graphs, the amplification correction is measured by the slope of the curve, while the shape of the laser spot is creating a constant offset.

calibrationExplained2

As PreForm software is not open source, I cannot be sure how to use these correction factors. For the amplification, it will probably mean the angles transmitted to the printer will need to be multiplied by the correction alpha found (different on each axis) . The offset is a consequence of the spot size mismatch. PreForm must use a boundary offset to draw the perimeter/skin paths. A positive offset means that the diameter of the spot need to be reduced by half of the value. Also if the laser spot is not exactly round it might be trickier to program…

Calibration object and Procedure proposal

The shape I used for my calibration is a simple series of square and circle extrusions of various small size and one large for the base. Each instance of the object provides 20 points of measures:
– Circles: [1, 2, 3, 4, 23] mm diameters, X and Y axis
– Square: [3, 4, 5, 6, 25] mm side length, X and Y axis

Cylinder_dimensions

To know where each object was printed on the platform, I’ve added a number engraved. That could be useful later if we are tracking non linearity issue depending on the location of the objects.

[STL & Inventor files for all squareCylinders Test] [5x .form file] [9x .form file]

I’ve used the 5 duplications file as it’s already providing 100 measure points. The base of the object is 3mm thick as I was hoping I could print it without supports to save time and resin. It turn out the Form1 is curing multiple times the slices in the first 2mm for the base. It creates an adhesion issue for the next layers, and I ended up with unusable objects with holes so I’m now generating support structures.

x5Cylinder_platformPosition

Here are my measures, with the 5x file, transparent 100micron material profile and default supports configuration. My first prints were done with the 0.8.1 software but reading that the 0.8.2 is supposed to have an improved laser tracking I decided to reprint everything. (Un?)fortunately the measures are consistent and the 0.8.2 didn’t improve the calibration…

Measure_x5Cylinder_0-8-2

The full spreadsheets with regression formulas are here [0.8.1] and [0.8.2].

x5Cylinder_calibration_results

From the regressions results we can see that the calibration required is consistent in both PreForm version. My printer has a 1.4% error in X axis and 0.35% error in Y. The laser spot diameter is also off by 0.2 mm.

For some reason the PreForm 0.8.2 is less consistent than the 0.8.1, the calibration is only reducing the overall error by a factor of 4 while it was reduced by 5 in the previous version…

Ain’t you doing anything about outliers?

When doing a root cause analysis on anything, you have to solve the first order issues that are dominating your calibration errors before looking at the rest. My Form1 is displaying non linearity on the X axis on geometries close to the back of the platform (2 = back-right and 5 = back-left).

cylinderX5_nonLinearity

When you look at the measures table, both objects are very different from the rest. I have no explanation yet for that phenomenon, but I hope that once I will be able to correct the offset and scale in PreForm I can build a new test to tackle this issue.

Until then, if you have a Form1 I would be glad to ear if your printer has the same calibration issue as mine. More reports will help Formlabs building a great printer!

[<<Prev. – Extract STL from PreForm Files]    [3D Printer articles]   [Preform & JewelCAD – Next>>]

The Form 1 might need calibration after all…

July 12th edit : I have now a Form1 Calibration procedure.

These past few days some very nice Form 1 tests have been publish by TJ and Gregg. These tests have been concentrating on the shape and small features. I’ve not yet seen a test on accuracy / linearity.

The Form1 is supposed to have a 300 microns (0.3mm) diameter laser spot which limits the size of individual features but the galvanometers (galvos) can be oriented very precisely. I think I recall reading that someone in Formlabs was talking about a few micron of positioning accuracy (position of the center of the spot on the bottom of the vat). The galvos are a dynamic system using PID controllers and tuning them to get a perfect positioning takes time (see my post on the ILD test cases).

Recently I had to print a mechanical assembly for someone and even with the 300 microns tolerance, it was difficult to slide the cylinder into the tube. So I decided to investigate a bit more: I was also wondering if the peeling was not introducing some deformation in the piece.

Simple Linearity Test

The test I designed is simple: It’s a series of 20mm cylinders that are horizontal/vertical and with a 45 degrees angle. The piece is placed perpendicular to the platform to measure independently the X and Y galvo. As any mechanical system, the mirrors are not jumping from one location to the next instantly. So even if the calibration is perfect in static condition (after some resting time), the dynamic properties (damping and oscillations) might be off. These configurations are also axis dependent as the mirrors might have a different shape/mass and each axis has his own amplifier. In the ILDA test, this dynamic behavior is checked with the circle inside the square.
Male_torture_test

And the results are not as expected… As you can see the cylinders are not really round! So either the preform sampling space is too large (not enough points on the path / movement too fast) or my ‘peel’ axis amplifier board needs some adjustment.

Linearity_measure_XY

My caliper measurements are:

Horizontal cylinder:
Peel axis = 19.52 mm
Orthogonal axis = 19.99 mm

Vertical cylinder:
Peel axis = 19.5 mm
Orthogonal axis = 19.87 mm
Vertical axis = 19.96 and 19.92 mm

45 degrees cylinder:
Peel axis = 19.51 and 19.71 mm
Orthogonal axis = 19.91 and 19.75 mm

So conclusion while the Z (thickness) and Y (orthogonal to peel) axis seems to be close, my printer seems to have an issue on the third dimension. I hope Formlabs will have a calibration procedure to correct this issue.

Location Influence on the Print Quality

The other main issue I’ve encountered while printing technical piece was reliability of the print quality. In some occasions the peel process is making loud “clacks” noise when the surface to remove is large. As the tilt is starting from one side, the strength created on the prints is different depending where the geometry is placed  on the base.

The picture under is showing two pieces that I had to reprint twice to get an acceptable result. The peel strength issue triggers supports break and non printed/delaninated walls.

Location_print_error

The only difference between the two prints is the location on the platform. I didn’t had to regenerate the supports nor changed the material setting (grey resin 50 microns). On my first print (left side), only the C part came out well. So for the second try I removed the C part and moved back A and B as far away from the peel side as possible. Note that I had to print the pieces horizontal as it’s not possible to generate internal supports yet and any other orientation would have resulted in non supported features…

Prefom_locations

I’m not sure what to think about this issue, maybe reducing the peel speed when there is a large area to remove could help? If this issue is proven, that will mean the silicon layer will get damaged faster on one side triggering a replacement more often due to fogging…

Anyway I’ll keep on exploring the Form1, if you have any question please ask I’ll make more tests. Cheers!

[<<Prev. – Preforn 0.8.1 Evaluation]    [3D Printer articles]   [Extract STL data – Next>>]

Evaluation of Preform 0.8.1

As I was explaining in my previous post, the form1 printer software is still a work in progress. Some bugs have been squashed with the 0.8.1, but some remains and I’d like to go though the some of the current challenges that a fellow formers might encounter. The first ones are the most critical in my opinions…

Object skin is not always sticking to the filling

[I’ve submitted this bug #1123 to the community board]

I’ve chosen the impossible heart brain teaser available in Thingiverse to see how very simple and smooth pieces would print… First it was not a brilliant idea to print it without supports. I had to use a clamp to pry apart the pieces from the platform and in the process damaged a bit the puzzle surface.

impossibleHeart_plateAndAssembly

But the real issue was, as some of the Reuleaux spheres in my previous post, the perimeters on some of the pieces didn’t stuck and I ended-up with a ugly result. What you see behind are the back and forth inside filling profiles. My hunch is, depending on the pealing direction, the perimeters might not be completely merged with the filling leaving a weak spot in the structure…

impossibleHeart_peallingPerimeters

If I was Formlabs, I would try to extend the filling paths so that it overlap at least the last perimeter to make sure everything is correctly glued together.

impossibleHeart_extendedFilling

[.form file]

25 microns prints non sticking to the platform…

This point a a bit a hit or miss. I’ve followed the advice in the community forum that using the “grey 25 microns” material profile was increasing the chance of sticking and so far I had 2 out of 3 prints working. The sticking might be affected by the location of the print on the plate and the orientation of the base platform. If you have a long platform, turn it so that the peeling starts on a small side.

To solve this it would be great to have more control on the laser, like being able to set the speed of the scan, the number of repetitions, the number of perimeters. That would open quite a few possibilities and for the most advanced users it could be a great way to experiment.

Overlapping supports are creating pockets of uncured resin

[I’ve submitted this bug #448 to the community board, and it’s marked as closed]

That one is strange but apparently it’s already fixed for the next revision. The problem arise when the software decides to place 2 supports so close that they are overlapping. In this case the internal filling back and forth of the laser is missing at the intersection. That will create a hole of uncured resin and I it’s safe to assume the support strength is gone…
[.form file to test]

supportsHoles

Peripheral loops are overlapping on very thin walls

[I’ve submitted this bug #1124 to the community board]

Preform is drawing 3 loops around perimeters. These loops are continuous and when the geometry has a very thin wall, these perimeters will get inverted and even create filling outside of the geometry… (Yes I know it’s not clear, just look a the picture to understand the issue…)
[.form file to test]

outsideFilling

That’s all for today 🙂 If you have any comment or extra bug to report on this release please comment I’ll investigate them!

[<<Prev. – First steps with Form1]    [3D Printer articles]   [Form1 Needs Calibration – Next>>]

It’s alive! And first blood…

A few days ago I received the galvo kit and tonight the laser arrived with a USB sound card and my new soldering iron. So I’ve decided to give a try and check if I could make the thing move.

With a signal generator I tried to draw lines as I could only drive one channel at a time. The lasers worked between 3 to 5V as advertised and the luminosity is somehow decreasing until 2.5V. It will probably be relatively easy to do a blanking mechanism, but controlling the power might be tricky. Also the first lesson was theses beasts are very sensitive, as I fried one without any real obvious mistakes… First conclusion: I will order some cheap heads to tune everything before switching to the small spot laser.

Here are some boring single axis tests, changing the frequency makes the spot appears as a continuous line or a moving dot.Drive_frequency_tests

Also I’ve tried to see how fine the beam could be focused at a 50cm distance. I’m quite satisfied to see that if everything goes right, the line could be around 1/2 mm wide. This picture was taken with a flash, so most of the speckle is gone. The apparent width of the beam with naked eye is much larger. That probably mean I will have to find a filter to put in from of the webcam.

beam_width Anyway I think the next step for this weekend is to build a Sound-card to galvo driver adapter to be able to draw some figures!

[<<Prev. – First steps]    [3D Scanner articles]   [TBD – Next>>]

First steps of the scanner building

After looking at what it would take to build a 3D scanner,  the most complex HW element is probably the galvanometer scanner. Nicely there are kits sold on Ebay that includes power supply, galvo mount, 2 * (PID driver, galvo) and cables for less than $120. It seems a safe bet to have a working system faster.

galvo

The kit is a based on a close loop PID controllers/galvo that apparently allow a 20k points performances at an opening of 20degrees. I’m not sure about the real perfomances of these cheap parts, but as I won’t be trying to get a very fast and complex animation they should do the job.

The manual is not very detailed on the tuning of the system, but once again with some search, the online community is very helpful. There are multiple tutorials (A or B) on the principles and what all each element of the ILDA test vector is testing.

For the laser, I have no experience on what would work better so, I found that Quarton offers relatively cheap modules with a specified divergence (Most of the no-name have no datasheet available). I’ve selected 2 modules to start:

  • A small dot module (VLM-650-11 LPA) with a 2.5mm dot at 5m and a 0.25mRad of divergence which should give me a ~1mm dot at 50cm
  • A adjustable focus module (VLM-650-02 LPA) to see if I can get a better dot size for the laser

The module here is very convenient to compute the diameter size.

In a future post I will explore the driving signal generation for the galvos and the laser command.

[<<Prev. – ILD file format]    [3D Scanner articles]   [TBD – Next>>]

Scanner 3D Architecture

Let go over the scanner architecture in more details and try to lay a framework for the task.

Note that I have never built anything like this and all these notes are preliminary. I’m sure many challenges will show up and I may change completely my plans mid-way. But that’s the nature of the beast with technical projects. If anyone would like to share the adventure with me and try to build the scanner and solve the challenges please comment!

The principle is to use two galvanometers (galvos) to control a laser spot position and project lines on the object being scanned. The lines will follow the shapes of the object and their deformations are recorded by a camera. Once acquired an algorithm process the images to extract the lines and reconstruct the object geometry.

The diagram under shows the relation between all the pieces.scanner_architecture

I’ve not yet talked about this Fesnel lens in the middle. The role of the lens is to project parallel laser rays on the object. I actually don’t know yet if the lens is required to ease the reconstruction task, maybe the software could compensate for the divergence? Fresnel lens can be cheap even for a large diameter, but they may introduce too much artifacts on the line projections to be usable. We will see at the build…

Also the object could be placed on a motorized rotary table (not in the schematics) to scan multiple angles automatically.

Now let’s see what pattern we could use with the scanner. One great challenge is how we can keep the scanning time low. So we can try to use the video capability of the camera to acquire as many frames/line position per second. The idea I have is described under. The duration for one line position is timed to last ~2 frames (1000 * 2 / 24 = 83ms). During the time the same path can be repeated multiple time depending on the speed of the galvos. Also multiple horizontal and vertical lines could be projected at the same time to reduce the total scan time. The last element is a ‘code-bar’ that can be decoded by the software to mark the line position. Think of it as a counter to uniquely tag the frame. To avoid confusion of the software, the laser should be blanked during the transitions.scan_frame_structure

The reason this frame code is interesting is that it allows a complete resynchronization of the laser movement and the camera video. So the scan sequence after calibration could go like:

  1. Build the glavo movement and blanking sequence
  2. Launch recoding of the camera
  3. Play the laser movement file
  4. Stop camera recoring
  5. Go though the video and using the frame codes to resynchonize and modelize the object (could be done in parallel of 3 if processing power requirement is not too large)
  6. Rotate the table and restart at 2 for the new angle

During a frame scan, the horizontal lines and vertical line will sweep across the field area to cover the whole object:

sweep_scan

One parameter difficult to judge before hand is how many line the galvos will be able to display correctly. As it’s a mechanical device with inertia, the maximum speed while keeping strait lines is limited. So it might be needed to make a tradeoff between accuracy and total scan speed.

Scan_Speed_change

From this architecture we can already see challenges an maybe start mitigation actions:

  1. Overall scanner principal is wrong/not working [low risk]: there is quite a lot of literature on the subject that describes exactly this methodology.
  2. Galvos cannot draw the lines properly [low risk]: one again, the online laser show community is a great source of information. The patterns are not too complexes and should be achievable.
  3. Reconstruction is difficult : see point 1, as we are not using exactly the same setup details may vary like ray divergence, camera lens correction…
  4. Cost too high : at this point I have no idea what will be the final BOM cost of the scanner, but if we can keep away from complex optics we should be good. The goal shoud be well under $1k.
  5. Poor accuracy : I’ve not talked about the performances of the scanner, but as it’s oriented toward the scan of small objects, the reconstruction has to be quite accurate to be useful (mm range?). Things like the laser speckle (size of the dot) will limit the scale of the details the system can capture. I’m not sure if the laser will require focalization or the use of special filter in front of the camera to reduce the visible speckle.
  6. Schedule slip [no risks!]: yeaah for once there is no project leader and gantt diagram so this project will go at its own pace!

That’s all for now, if you have any remark, comments or question ask away!

[<<Prev. – Introduction]    [3D Scanner articles]   [ILD File reader – Next>>]

Introduction to 3D scanners

Our brain is able to reconstruct volumes and perceive the shape of an object by relying on multiple sets of clues:

  1. Motion parallax  and perspective give a relative sense of the position of objects in the scene
  2. Focus and field of view
  3. Stereoscopic effect (slight view difference between two eyes)
  4. Experience and familiarity with the object fills the remaining gaps (by recognizing an object we expect it to have a given shape)

[Click on the image to see the animation]
narita13
This couple of stereo-images gives enough information for the brain to reconstruct the depth of the scene. (source: http://www.stereomaker.net/sample/ani/ani_e.htm)

As a side note, the fact that all these simultaneous information are used by the brain means that, beside holography, there is no possibility to display great 3D information without causing motion sickness or nausea to some people.

A 3D scanner using all these passive clues would be complex to build and probably not very accurate. So most of the current scanner rely on active methods.

Active scanners can use laser for direct distance measurements:

  1. Time of flight: these videos shows how to use laser to scan the Sphinx or drive autonomous cars in the DARPA challenge
  2. Or displacement in the case of some industrial sensors. These sensors can achieve amazing accuracy in micro-meters over a range of a few centimeters

sensor_configuration(source http://www.measurecentral.com/technology/semiconductor.php)

These sensors are unfortunately very expensive and not accessible to the hobbyist, so, to build a home scanner we have to rely on triangulation. The principle is to send a coherent pattern on a object to extract its shape from the deformation of the shadow. A great introductory course is available here.

shadow-2
(Source http://mesh.brown.edu/byo3d/source.html)

After examining all the 3D scanner option I’ve chosen to use a laser to project a line and cameras will capture the line deformation. The line sweep will be performed using two galvanometers used in the laser show business. This is the perfect occasion to go and explore the world of laserists…

galvanometer
Two galvos are used to deflect the laser beam on the X and Y axis
(Source: http://www.zamisel.com/SSpostavka2.html)

[3D Scanner articles]  [3D scanner webReview – Next>>]