A scanner grayly
werner at openmoko.org
Mon Jul 26 14:20:42 EDT 2010
I made a few more scans and changed the rendering of the screenshots
of new ones:
- the keyboard top series ben-kbd-top-*, up to 100 um.
There are some artefacts, caused by the softness of the rubber sheet
under the keyboard. The rubber is soft enough that the scanner can
sometimes push it away. When that happens, it will sample the
position at which it finally notices the rubber. This yields a
ragged edge, mainly on the left side. (The scanner scans along the
x axis from left to right.)
Elastic materials can confuse the scanner even more. E.g., I once
caught it completely blocked for a hour at the FPC when processing
the display (see below), because it had pushed the cable so far that
it no move would relieve the pressure below the detection threshold.
This kind of effect may be at play with the disappearance of part of
the metal bridge leading to the power button, and also the overly
large power LED hole in the whole device scans (ben-bottom-*)
I will later do a scan in a different direction.
- the LCD module with PCB assembly ben-lcm-asmbly-*, up to 100 um.
After the above mishap I taped the FPC down, and out of harm's way.
Things went smoothly after that.
- the outside of the battery cover ben-batcvr-outside-*, up to 500 um,
with 100 um to follow in a few hours.
Instead of the closed source Windows/Wine-only Dr.PICZA3, I used
HeeksCAD for the screenshots. The battery cover doesn't have a lot
of details, so the screenshots don't look overly interesting, but I
found HeeksCAD's rendering to look clearer than Dr.PICZA's when
viewing more complex parts.
I may later also give MeshLab a try, which is written specifically
for turning 3D scans into something more useful:
Here is an example of a complex part, at 500 um:
The red lines show the bottom surface of the counterweight. I
generated them with the following Python script:
When the script is run from the HeeksPython console inside HeeksCAD,
it generates the lines (function rect_cad). It also calculates the
mass and torque of the counterweight.
When run from a shell, the script outputs coordinates suitable for
viewing with gnuplot's plot and splot commands. It's quite nice to
be able to combine three types of output (CAD model, quick and dirty
plot, and calculation of complex properties) in a single script.
Note that HeeksPython is quite ugly and only supports a few of
HeeksCAD's operations - that's why I haven't added the top surface
of the counterweight and then made a 3D solid, but it's a very
promising basis for more powerful scripting.
I added the scanned surface to the lines simply by importing the STL
file. (My counterweight model was based on the same scan, so the
coordinates are the same. Note that the scan's X/Y plane is slightly
tilted while the model's isn't. This is why some lines in the front
disappear into the bottom shell.)
More information about the discussion